From e4ed319bcc37cf2d55aa4cba793d104e20882d37 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?F=C3=A9lix=20Su=C3=A1rez?= <felix.suarez@pandorafms.com>
Date: Sun, 4 Jun 2023 09:04:50 -0600
Subject: [PATCH 001/231] Correct comments in Tentacle Server Conf.

---
 pandora_server/conf/tentacle_server.conf.new | 24 ++++++++++----------
 1 file changed, 12 insertions(+), 12 deletions(-)

diff --git a/pandora_server/conf/tentacle_server.conf.new b/pandora_server/conf/tentacle_server.conf.new
index 1acf082ca2..4fa307e0e8 100644
--- a/pandora_server/conf/tentacle_server.conf.new
+++ b/pandora_server/conf/tentacle_server.conf.new
@@ -5,10 +5,10 @@
 # Tentacle have IANA assigned port tpc/41121 as official port.
 ##########################################################################
 
-# [-a] IPv4 address to listen on. Several IPs cam be selected separating if by comma.
+# [-a] IPv4 address to listen on. Several IP adresses can be selected separated by commas.
 addresses 0.0.0.0
 
-# [-p] Port to listen on
+# [-p] Port number to listen on.
 port 41121
 
 # [-c] Maximum number of simultaneous connections
@@ -17,19 +17,19 @@ port 41121
 # [-d] Run as daemon. 1 true, 0 false
 daemon 1
 
-# [-i] Enable insecure mode
-# insecure 0
+# [-I] Enable insecure mode. 1 true, 0 false.
+#insecure 0
 
-# Filters (regexp:dir;regexp:dir...)
-filters .*\.conf:conf;.*\.md5:md5;.*\.zip:collections;.*\.lock:trans;.*\.rcmd:commands
+# [-i] Filters (regexp:dir;regexp:dir...).
+filters ..conf:conf;..md5:md5;.*\.zip:collections;.*\.lock:trans;.*\.rcmd:commands
 
 # [-m] Maximum file size allowed by the server in bytes
-#max_size 2000000
+# max_size 2000000
 
-# [-o] Accept files with a repeated name
+# [-o] Accept files with a repeated name. 1 true, 0 false.
 # overwrite 0
 
-# [-q] Do not output error messages.
+# [-q] No output error messages. 1 true, 0 false.
 # quiet 0
 
 # [-r] Number of retries for socket read/write operations
@@ -38,10 +38,10 @@ filters .*\.conf:conf;.*\.md5:md5;.*\.zip:collections;.*\.lock:trans;.*\.rcmd:co
 # [-s] Storage directory
 directory /var/spool/pandora/data_in
 
-# [-b] Address to proxy client requests to
+# [-b] IP address proxy client requests to.
 # proxy_ip 127.0.0.1
 
-# [-g] Port to proxy client requests to
+# [-g] Port number proxy client requests to.
 # proxy_port 41121
 
 # [-t] Timeout for socket read/write operations in seconds
@@ -71,5 +71,5 @@ log_file /dev/null
 # [-w] SSL password. Set to 1 to ask for password by command line
 # ssl_password 0
 
-# [-T] Use libwrap library (Authen::Libwrap perl module)
+# [-T] Use libwrap library (Authen::Libwrap perl module). 1 true, 0 false.
 # use_libwrap 0
\ No newline at end of file

From 936d9cac4c93b7af022bd4c829d0e74bc0ff5027 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?F=C3=A9lix=20Su=C3=A1rez?= <felix.suarez@pandorafms.com>
Date: Mon, 5 Jun 2023 08:48:15 -0600
Subject: [PATCH 002/231] Set the filter as it was originally

---
 pandora_server/conf/tentacle_server.conf.new | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pandora_server/conf/tentacle_server.conf.new b/pandora_server/conf/tentacle_server.conf.new
index 4fa307e0e8..a7cec8fd2c 100644
--- a/pandora_server/conf/tentacle_server.conf.new
+++ b/pandora_server/conf/tentacle_server.conf.new
@@ -21,7 +21,7 @@ daemon 1
 #insecure 0
 
 # [-i] Filters (regexp:dir;regexp:dir...).
-filters ..conf:conf;..md5:md5;.*\.zip:collections;.*\.lock:trans;.*\.rcmd:commands
+filters .*\.conf:conf;.*\.md5:md5;.*\.zip:collections;.*\.lock:trans;.*\.rcmd:commands
 
 # [-m] Maximum file size allowed by the server in bytes
 # max_size 2000000

From 3ecf171fdbbe9e1473c431f1feb8c400f71f8ec5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?F=C3=A9lix=20Su=C3=A1rez?= <felix.suarez@pandorafms.com>
Date: Tue, 1 Aug 2023 18:14:11 -0600
Subject: [PATCH 003/231] Ignore disabled nodes

---
 pandora_server/util/pandora_ha.pl | 45 +++++++++++++++++++++++++++++--
 1 file changed, 43 insertions(+), 2 deletions(-)

diff --git a/pandora_server/util/pandora_ha.pl b/pandora_server/util/pandora_ha.pl
index 941b6dc854..be54f8d0ca 100755
--- a/pandora_server/util/pandora_ha.pl
+++ b/pandora_server/util/pandora_ha.pl
@@ -361,7 +361,7 @@ sub ha_load_databases($) {
     return unless defined($conf->{'ha_hosts'});
 
     @HA_DB_Hosts = grep { !/^#/ } map { s/^\s+|\s+$//g; $_; } split(/,/, $conf->{'ha_hosts'});
-    log_message($conf, 'DEBUG', "Loaded databases from disk (@HA_DB_Hosts)");
+    log_message($conf, 'DEBUG', "Loaded databases from disk (@HA_DB_Hosts)");  
 }
 
 ###############################################################################
@@ -388,9 +388,20 @@ sub ha_database_connect_pandora($) {
 
 	# Load the list of HA databases.
 	ha_load_databases($conf);
-
+  
 	# Select a new master database.
 	my ($dbh, $utimestamp, $max_utimestamp) = (undef, undef, -1);
+
+  my @disabled_nodes = get_disabled_nodes($conf);
+
+  # If there are disabled nodes ignore them from the HA_DB_Hosts.
+  if(scalar @disabled_nodes ne 0){
+    @HA_DB_Hosts = grep { my $item = $_; !grep { $_ eq $item } @disabled_nodes } @HA_DB_Hosts;
+
+    my $data = join(",", @disabled_nodes);
+    log_message($conf, 'LOG', "Ignoring disabled hosts: " . $data);
+  }
+
 	foreach my $ha_dbhost (@HA_DB_Hosts) {
 
 		# Retry each database ha_connect_retries times.
@@ -481,6 +492,36 @@ sub ha_restart_pandora($) {
     `$config->{'pandora_service_cmd'} $control_command 2>/dev/null`;
 }
 
+###############################################################################
+# Get ip of the disabled nodes.
+###############################################################################
+sub get_disabled_nodes($) {
+  my ($conf) = @_;
+  
+  my $dbh = db_connect('mysql',
+						  $conf->{'dbname'},
+						  $conf->{'dbhost'},
+						  $conf->{'dbport'},
+						  $conf->{'ha_dbuser'},
+						  $conf->{'ha_dbpass'});
+
+  my $disabled_nodes = get_db_value($dbh, "SELECT value FROM tconfig WHERE token = 'ha_disabled_nodes'");
+  
+  if(!defined($disabled_nodes) || $disabled_nodes eq ""){
+    $disabled_nodes = ',';
+  }
+
+  my @disabled_nodes = split(',', $disabled_nodes);
+
+  if(scalar @disabled_nodes ne 0){
+    $disabled_nodes = join(",", @disabled_nodes);
+    @disabled_nodes = get_db_rows($dbh, "SELECT host FROM tdatabase WHERE id IN ($disabled_nodes)");
+    @disabled_nodes = map { $_->{host} } @disabled_nodes;
+  }
+
+  return @disabled_nodes;
+}
+
 ###############################################################################
 # Main (Pacemaker)
 ###############################################################################

From 9c9467c2da9961f32606cabe098839eb437caa94 Mon Sep 17 00:00:00 2001
From: alejandro <alejandro.sanchez@pandorafms.com>
Date: Mon, 14 Aug 2023 13:57:14 +0200
Subject: [PATCH 004/231] fix in plugin output

---
 pandora_server/util/plugin/wizard_wmi_module.pl | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/pandora_server/util/plugin/wizard_wmi_module.pl b/pandora_server/util/plugin/wizard_wmi_module.pl
index 23e49a7f83..d9c1b3d1aa 100755
--- a/pandora_server/util/plugin/wizard_wmi_module.pl
+++ b/pandora_server/util/plugin/wizard_wmi_module.pl
@@ -172,5 +172,6 @@ foreach my $k (keys %{$fields_values}){
 # Get operation result
 my $result = eval $operation;
 if (defined($result)){
-	print $result . "\n";
+	
+	print $result, "\n"; 
 }

From 682494f51fa15479cdefacbf6347838e3423fa19 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Alejandro=20S=C3=A1nchez?=
 <alejandro.sanchez@pandorafms.com>
Date: Mon, 14 Aug 2023 11:59:41 +0000
Subject: [PATCH 005/231] remove clear line

---
 pandora_server/util/plugin/wizard_wmi_module.pl | 1 -
 1 file changed, 1 deletion(-)

diff --git a/pandora_server/util/plugin/wizard_wmi_module.pl b/pandora_server/util/plugin/wizard_wmi_module.pl
index d9c1b3d1aa..fa25c26d0b 100755
--- a/pandora_server/util/plugin/wizard_wmi_module.pl
+++ b/pandora_server/util/plugin/wizard_wmi_module.pl
@@ -172,6 +172,5 @@ foreach my $k (keys %{$fields_values}){
 # Get operation result
 my $result = eval $operation;
 if (defined($result)){
-	
 	print $result, "\n"; 
 }

From 64d2d78137ef966d4f27d47c374a16e863bf6d1b Mon Sep 17 00:00:00 2001
From: Jorge Rincon <jorge.rincon@pandorafms.com>
Date: Wed, 6 Sep 2023 13:59:12 +0200
Subject: [PATCH 006/231] #11014 fixed responsive user QR code

---
 pandora_console/include/styles/pandora.css | 28 ++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/pandora_console/include/styles/pandora.css b/pandora_console/include/styles/pandora.css
index d87d959ac5..a1821011d7 100644
--- a/pandora_console/include/styles/pandora.css
+++ b/pandora_console/include/styles/pandora.css
@@ -12566,3 +12566,31 @@ tr[id^="network_component-plugin-snmp-fields-dynamicMacroRow-"] input {
 .ui-date-range-in > a {
   background-color: #81b92e3b !important;
 }
+
+@media screen and (min-width: 1190px) and (max-width: 1290px) {
+  #api_qrcode_display {
+    left: 580px;
+  }
+}
+
+@media screen and (min-width: 1143px) and (max-width: 1189px) {
+  #api_qrcode_display {
+    left: 528px;
+  }
+}
+
+@media screen and (min-width: 860px) and (max-width: 1142px) {
+  #api_qrcode_display {
+    left: 356px;
+    top: 120px;
+  }
+
+  .font-title-font {
+    line-height: 0;
+  }
+
+  #qr_code_agent_view > img {
+    width: 250px;
+    height: 250px;
+  }
+}

From 5d41cf7d04e95c59ee6bab6e1143c964e8d87e05 Mon Sep 17 00:00:00 2001
From: miguel angel rasteu <miguelangel.rasteu@pandorafms.com>
Date: Wed, 27 Sep 2023 15:47:44 +0200
Subject: [PATCH 007/231] #12139 Fix new_agent api request

---
 pandora_console/include/functions_api.php | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/pandora_console/include/functions_api.php b/pandora_console/include/functions_api.php
index 7e22befbee..068c5409f6 100644
--- a/pandora_console/include/functions_api.php
+++ b/pandora_console/include/functions_api.php
@@ -2014,7 +2014,7 @@ function api_set_new_agent($id_node, $thrash2, $other, $trhash3, $return=false,
                 }
 
                 returnError('No agent alias specified');
-            } else if (agents_get_agent_id($nombre_agente)) {
+            } else if (agents_get_agent_id($agent->nombre())) {
                 if ($message === true) {
                     return 'The agent name already exists in DB.';
                 }
@@ -2062,7 +2062,7 @@ function api_set_new_agent($id_node, $thrash2, $other, $trhash3, $return=false,
             }
         }
 
-        if ($return === false) {
+        if ($return !== true) {
             returnData(
                 'string',
                 [

From 9a57cc550ec99fbe9b063124dbecdc46e7ec1233 Mon Sep 17 00:00:00 2001
From: miguel angel rasteu <miguelangel.rasteu@pandorafms.com>
Date: Wed, 11 Oct 2023 16:31:48 +0200
Subject: [PATCH 008/231] #12192 Fix pandora itsm url

---
 pandora_console/godmode/setup/setup_ITSM.php | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/pandora_console/godmode/setup/setup_ITSM.php b/pandora_console/godmode/setup/setup_ITSM.php
index 3196ef677c..50aee8631e 100644
--- a/pandora_console/godmode/setup/setup_ITSM.php
+++ b/pandora_console/godmode/setup/setup_ITSM.php
@@ -558,7 +558,7 @@ $table_cr_settings->data[4][0] = html_print_label_input_block(
 
 // Print.
 echo '<div class="center pdd_b_10px mrgn_btn_20px white_box max_floating_element_size">';
-echo '<a target="_blank" rel="noopener noreferrer" href="https://pandorafms.com/es/itsm/">';
+echo '<a target="_blank" rel="noopener noreferrer" href="https://pandorafms.com/itsm/">';
 html_print_image(
     'images/pandoraITSM_logo.png',
     false,
@@ -569,8 +569,8 @@ echo '<br />';
 echo '<div class="ITSM_title">';
 echo __('Pandora ITSM');
 echo '</div>';
-echo '<a target="_blank" rel="noopener noreferrer" href="https://pandorafms.com/es/itsm/">';
-echo 'https://pandorafms.com/es/itsm/';
+echo '<a target="_blank" rel="noopener noreferrer" href="https://pandorafms.com/itsm/">';
+echo 'https://pandorafms.com/itsm/';
 echo '</a>';
 echo '</div>';
 

From d389f9c3d19c688f1ada55714891717db5498fb0 Mon Sep 17 00:00:00 2001
From: Jorge Rincon <jorge.rincon@pandorafms.com>
Date: Thu, 16 Nov 2023 11:15:01 +0100
Subject: [PATCH 009/231] #12439 Added Quiet icon to agent finder

---
 .../operation/search_agents.getdata.php        | 18 ++++++++++++++++--
 1 file changed, 16 insertions(+), 2 deletions(-)

diff --git a/pandora_console/operation/search_agents.getdata.php b/pandora_console/operation/search_agents.getdata.php
index bdeea391a1..f4c1fe0d76 100644
--- a/pandora_console/operation/search_agents.getdata.php
+++ b/pandora_console/operation/search_agents.getdata.php
@@ -169,12 +169,26 @@ if ($searchAgents) {
     }
 
     foreach ($agents as $key => $agent) {
+        $agent_quiet = '';
+        if ((bool) $agent['quiet'] === true) {
+            $agent_quiet = html_print_image(
+                'images/dot_blue.png',
+                true,
+                [
+                    'border' => '0',
+                    'title'  => __('Quiet'),
+                    'alt'    => '',
+                    'class'  => 'mrgn_lft_5px',
+                ]
+            );
+        }
+
         if ($agent['disabled']) {
             $agents[$key]['agent'] = '<em><a style href=index.php?sec=estado&sec2=operation/agentes/ver_agente&id_agente='.$agent['id_agente'].'
-            title="'.$agent['id_agente'].'"><b><span style>'.ucfirst(strtolower($agent['alias'])).'</span></b></a>'.ui_print_help_tip(__('Disabled'), true).'</em>';
+            title="'.$agent['id_agente'].'"><b><span style>'.ucfirst(strtolower($agent['alias'])).'</span></b></a>'.ui_print_help_tip(__('Disabled'), true).'</em>'.$agent_quiet;
         } else {
             $agents[$key]['agent'] = '<a style href=index.php?sec=estado&sec2=operation/agentes/ver_agente&id_agente='.$agent['id_agente'].'
-            title='.$agent['nombre'].'><b><span style>'.ucfirst(strtolower($agent['alias'])).'</span></b></a>';
+            title='.$agent['nombre'].'><b><span style>'.ucfirst(strtolower($agent['alias'])).'</span></b></a>'.$agent_quiet;
         }
 
         $agents[$key]['os'] = ui_print_os_icon($agent['id_os'], false, true);

From b6582b7f7ea10588862856e007b63d81d5373cf2 Mon Sep 17 00:00:00 2001
From: Jorge Rincon <jorge.rincon@pandorafms.com>
Date: Wed, 22 Nov 2023 13:30:44 +0100
Subject: [PATCH 010/231] #12202 added Asteroids game

---
 pandora_console/include/ajax/events.php       |  13 +
 pandora_console/include/asteroids/LICENSE.txt |  25 +
 pandora_console/include/asteroids/README.rst  |  46 +
 .../include/asteroids/asteroids.js            | 840 ++++++++++++++++++
 pandora_console/include/asteroids/index.html  |  14 +
 pandora_console/include/asteroids/style.css   |  46 +
 .../include/javascript/pandora_events.js      |  45 +
 pandora_console/include/styles/asteroids.css  |  65 ++
 pandora_console/operation/menu.php            |   1 +
 9 files changed, 1095 insertions(+)
 create mode 100644 pandora_console/include/asteroids/LICENSE.txt
 create mode 100644 pandora_console/include/asteroids/README.rst
 create mode 100644 pandora_console/include/asteroids/asteroids.js
 create mode 100644 pandora_console/include/asteroids/index.html
 create mode 100644 pandora_console/include/asteroids/style.css
 create mode 100644 pandora_console/include/styles/asteroids.css

diff --git a/pandora_console/include/ajax/events.php b/pandora_console/include/ajax/events.php
index 7e8341c4a1..88e063b581 100644
--- a/pandora_console/include/ajax/events.php
+++ b/pandora_console/include/ajax/events.php
@@ -95,6 +95,8 @@ $parameters_modal = get_parameter('parameters', 0);
 // User private filter.
 $current_filter = get_parameter('current_filter', 0);
 $private_filter_event = get_parameter('private_filter_event', 0);
+// Asteroids.
+$playAsteroids = (bool) get_parameter('playAsteroids', false);
 
 if ($get_comments === true) {
     global $config;
@@ -2751,3 +2753,14 @@ if ($draw_row_response_info === true) {
     echo $output;
     return;
 }
+
+// Asteroids.
+if ($playAsteroids === true) {
+    echo ui_require_css_file('asteroids', 'include/styles/', true);
+    echo ui_require_javascript_file('asteroids', 'include/asteroids/', true);
+
+    $output = '<div id="asteroids">Asteroids game goes here!</div>';
+
+    echo $output;
+    return;
+}
diff --git a/pandora_console/include/asteroids/LICENSE.txt b/pandora_console/include/asteroids/LICENSE.txt
new file mode 100644
index 0000000000..0dc661d166
--- /dev/null
+++ b/pandora_console/include/asteroids/LICENSE.txt
@@ -0,0 +1,25 @@
+Copyright (c) 2023, James Socol <me@jamessocol.com>
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+    1. Redistributions of source code must retain the above copyright notice,
+       this list of conditions and the following disclaimer.
+
+    2. Redistributions in binary form must reproduce the above copyright
+       notice, this list of conditions and the following disclaimer in the
+       documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
diff --git a/pandora_console/include/asteroids/README.rst b/pandora_console/include/asteroids/README.rst
new file mode 100644
index 0000000000..c7465358c2
--- /dev/null
+++ b/pandora_console/include/asteroids/README.rst
@@ -0,0 +1,46 @@
+=========
+ASTEROIDS
+=========
+
+Last week, at work, we joked about creating an Asteroids clone where every
+asteroid had a bug number in it, as a bit of a joke. (Ha ha, every bug you
+kill spawns two more!)
+
+I was bored this afternoon, so here's a port of Asteroids to JS/Canvas.
+
+Now all I need to do is hook in the bug numbers.
+
+
+Gameplay
+========
+
+You're the triangle in the middle. You want to destroy the circles. You have
+a gun (spacebar), some thrusters to turn (left and right arrow keys) and an
+engine (up arrow key).
+
+Remember, it's kill or be killed out there.
+
+
+Rights
+======
+
+The name *Asteroids* is, as far as I know, still property of Atari. I mean no
+ill-will towards Atari by releasing this code. Frankly, it's a poor 
+substitute for anything resembling a real game. I just wanted to see if I
+could do it.
+
+If anyone from Atari asks, I will gladly rename and/or remove this code. But
+since there are so many *Asteroids* clones as it is, and the original was
+released in 1979, and it was kind of a copy of *Spacewar!*, I doubt they'll
+mind too much.
+
+
+Strikes me as funny...
+======================
+
+The original *Spacewar!*, one of the earliest (if not the original) computer
+games, took `200 hours to code <http://en.wikipedia.org/wiki/Spacewar!>`_.
+
+This probably took me 6.
+
+I am so glad we've moved past the PDP-1.
diff --git a/pandora_console/include/asteroids/asteroids.js b/pandora_console/include/asteroids/asteroids.js
new file mode 100644
index 0000000000..d6e9a460f4
--- /dev/null
+++ b/pandora_console/include/asteroids/asteroids.js
@@ -0,0 +1,840 @@
+// Asteroids.js
+// Copyright (c) 2010–2023 James Socol <me@jamessocol.com>
+// See LICENSE.txt for license terms.
+
+// Game settings
+GAME_HEIGHT = 480;
+GAME_WIDTH = 640;
+FRAME_PERIOD = 60; // 1 frame / x frames/sec
+LEVEL_TIMEOUT = 2000; // How long to wait after clearing a level.
+
+// Player settings
+ROTATE_SPEED = Math.PI / 10; // How fast do players turn?  (radians)
+MAX_SPEED = 15; // Maximum player speed
+THRUST_ACCEL = 1;
+DEATH_TIMEOUT = 2000; // milliseconds
+INVINCIBLE_TIMEOUT = 1500; // How long to stay invincible after resurrecting?
+PLAYER_LIVES = 3;
+POINTS_PER_SHOT = 1; // How many points does a shot cost? (Should be >= 0.)
+POINTS_TO_EXTRA_LIFE = 1000; // How many points to get a 1-up?
+
+// Bullet settings
+BULLET_SPEED = 20;
+MAX_BULLETS = 3;
+MAX_BULLET_AGE = 25;
+
+// Asteroid settings
+ASTEROID_COUNT = 2; // This + current level = number of asteroids.
+ASTEROID_GENERATIONS = 3; // How many times to they split before dying?
+ASTEROID_CHILDREN = 2; // How many does each death create?
+ASTEROID_SPEED = 3;
+ASTEROID_SCORE = 10; // How many points is each one worth?
+
+var Asteroids = function(home) {
+  // Constructor
+  // Order matters.
+
+  // Set up logging.
+  this.log_level = Asteroids.LOG_DEBUG;
+  this.log = Asteroids.logger(this);
+
+  // Create the info pane, player, and playfield.
+  home.innerHTML = "";
+  this.info = Asteroids.infoPane(this, home);
+  this.playfield = Asteroids.playfield(this, home);
+  this.player = Asteroids.player(this);
+
+  // Set up the event listeners.
+  this.keyState = Asteroids.keyState(this);
+  this.listen = Asteroids.listen(this);
+
+  // Useful functions.
+  this.asteroids = Asteroids.asteroids(this);
+  this.overlays = Asteroids.overlays(this);
+  this.highScores = Asteroids.highScores(this);
+  this.level = Asteroids.level(this);
+  this.gameOver = Asteroids.gameOver(this);
+
+  // Play the game.
+  Asteroids.play(this);
+  return this;
+};
+
+Asteroids.infoPane = function(game, home) {
+  var pane = document.createElement("div");
+  pane.innerHTML = "ASTEROIDS";
+
+  var lives = document.createElement("span");
+  lives.className = "lives";
+  lives.innerHTML = "LIVES: " + PLAYER_LIVES;
+
+  var score = document.createElement("span");
+  score.className = "score";
+  score.innerHTML = "SCORE: 0";
+
+  var level = document.createElement("span");
+  level.className = "level";
+  level.innerHTML = "LEVEL: 1";
+
+  pane.appendChild(lives);
+  pane.appendChild(score);
+  pane.appendChild(level);
+  home.appendChild(pane);
+
+  return {
+    setLives: function(game, l) {
+      lives.innerHTML = "LIVES: " + l;
+    },
+    setScore: function(game, s) {
+      score.innerHTML = "SCORE: " + s;
+    },
+    setLevel: function(game, _level) {
+      level.innerHTML = "LEVEL: " + _level;
+    },
+    getPane: function() {
+      return pane;
+    }
+  };
+};
+
+Asteroids.playfield = function(game, home) {
+  var canvas = document.createElement("canvas");
+  canvas.width = GAME_WIDTH;
+  canvas.height = GAME_HEIGHT;
+  home.appendChild(canvas);
+  return canvas;
+};
+
+Asteroids.logger = function(game) {
+  if (typeof console != "undefined" && typeof console.log != "undefined") {
+    return {
+      info: function(msg) {
+        if (game.log_level <= Asteroids.LOG_INFO) console.log(msg);
+      },
+      debug: function(msg) {
+        if (game.log_level <= Asteroids.LOG_DEBUG) console.log(msg);
+      },
+      warning: function(msg) {
+        if (game.log_level <= Asteroids.LOG_WARNING) console.log(msg);
+      },
+      error: function(msg) {
+        if (game.log_level <= Asteroids.LOG_ERROR) console.log(msg);
+      },
+      critical: function(msg) {
+        if (game.log_level <= Asteroids.LOG_CRITICAL) console.log(msg);
+      }
+    };
+  } else {
+    return {
+      info: function(msg) {},
+      debug: function(msg) {},
+      warning: function(msg) {},
+      error: function(msg) {},
+      critical: function(msg) {}
+    };
+  }
+};
+
+Asteroids.asteroids = function(game) {
+  var asteroids = [];
+
+  return {
+    push: function(obj) {
+      return asteroids.push(obj);
+    },
+    pop: function() {
+      return asteroids.pop();
+    },
+    splice: function(i, j) {
+      return asteroids.splice(i, j);
+    },
+    get length() {
+      return asteroids.length;
+    },
+    getIterator: function() {
+      return asteroids;
+    },
+    generationCount: function(_gen) {
+      var total = 0;
+      for (var i = 0; i < asteroids.length; i++) {
+        if (asteroids[i].getGeneration() == _gen) total++;
+      }
+      game.log.debug("Found " + total + " asteroids in generation " + _gen);
+      return total;
+    }
+  };
+};
+
+/**
+ * Creates an overlays controller.
+ */
+Asteroids.overlays = function(game) {
+  var overlays = [];
+
+  return {
+    draw: function(ctx) {
+      for (var i = 0; i < overlays.length; i++) {
+        overlays[i].draw(ctx);
+      }
+    },
+    add: function(obj) {
+      if (-1 == overlays.indexOf(obj) && typeof obj.draw != "undefined") {
+        overlays.push(obj);
+        return true;
+      }
+      return false;
+    },
+    remove: function(obj) {
+      var i = overlays.indexOf(obj);
+      if (-1 != i) {
+        overlays.splice(i, 1);
+        return true;
+      }
+      return false;
+    }
+  };
+};
+
+/**
+ * Creates a player object.
+ */
+Asteroids.player = function(game) {
+  // implements IScreenObject
+  var position = [GAME_WIDTH / 2, GAME_HEIGHT / 2],
+    velocity = [0, 0],
+    direction = -Math.PI / 2,
+    dead = false,
+    invincible = false,
+    lastRez = null,
+    lives = PLAYER_LIVES,
+    score = 0,
+    radius = 3,
+    path = [
+      [10, 0],
+      [-5, 5],
+      [-5, -5],
+      [10, 0]
+    ];
+
+  return {
+    getPosition: function() {
+      return position;
+    },
+    getVelocity: function() {
+      return velocity;
+    },
+    getSpeed: function() {
+      return Math.sqrt(Math.pow(velocity[0], 2) + Math.pow(velocity[1], 2));
+    },
+    getDirection: function() {
+      return direction;
+    },
+    getRadius: function() {
+      return radius;
+    },
+    getScore: function() {
+      return score;
+    },
+    addScore: function(pts) {
+      score += pts;
+    },
+    lowerScore: function(pts) {
+      score -= pts;
+      if (score < 0) {
+        score = 0;
+      }
+    },
+    getLives: function() {
+      return lives;
+    },
+    rotate: function(rad) {
+      if (!dead) {
+        direction += rad;
+        game.log.info(direction);
+      }
+    },
+    thrust: function(force) {
+      if (!dead) {
+        velocity[0] += force * Math.cos(direction);
+        velocity[1] += force * Math.sin(direction);
+
+        if (this.getSpeed() > MAX_SPEED) {
+          velocity[0] = MAX_SPEED * Math.cos(direction);
+          velocity[1] = MAX_SPEED * Math.sin(direction);
+        }
+
+        game.log.info(velocity);
+      }
+    },
+    move: function() {
+      Asteroids.move(position, velocity);
+    },
+    draw: function(ctx) {
+      let color = "#fff";
+      if (invincible) {
+        const dt = (new Date() - lastRez) / 200;
+        const c = Math.floor(Math.cos(dt) * 16).toString(16);
+        color = `#${c}${c}${c}`;
+      }
+      Asteroids.drawPath(ctx, position, direction, 1, path, color);
+    },
+    isDead: function() {
+      return dead;
+    },
+    isInvincible: function() {
+      return invincible;
+    },
+    extraLife: function(game) {
+      game.log.debug("Woo, extra life!");
+      lives++;
+    },
+    die: function(game) {
+      if (!dead) {
+        game.log.info("You died!");
+        dead = true;
+        invincible = true;
+        lives--;
+        position = [GAME_WIDTH / 2, GAME_HEIGHT / 2];
+        velocity = [0, 0];
+        direction = -Math.PI / 2;
+        if (lives > 0) {
+          setTimeout(
+            (function(player, _game) {
+              return function() {
+                player.resurrect(_game);
+              };
+            })(this, game),
+            DEATH_TIMEOUT
+          );
+        } else {
+          game.gameOver();
+        }
+      }
+    },
+    resurrect: function(game) {
+      if (dead) {
+        dead = false;
+        invincible = true;
+        lastRez = new Date();
+        setTimeout(function() {
+          invincible = false;
+          game.log.debug("No longer invincible!");
+        }, INVINCIBLE_TIMEOUT);
+        game.log.debug("You ressurrected!");
+      }
+    },
+    fire: function(game) {
+      if (!dead) {
+        game.log.debug("You fired!");
+        var _pos = [position[0], position[1]],
+          _dir = direction;
+
+        this.lowerScore(POINTS_PER_SHOT);
+
+        return Asteroids.bullet(game, _pos, _dir);
+      }
+    }
+  };
+};
+
+Asteroids.bullet = function(game, _pos, _dir) {
+  // implements IScreenObject
+  var position = [_pos[0], _pos[1]],
+    velocity = [0, 0],
+    direction = _dir,
+    age = 0,
+    radius = 1,
+    path = [
+      [0, 0],
+      [-4, 0]
+    ];
+
+  velocity[0] = BULLET_SPEED * Math.cos(_dir);
+  velocity[1] = BULLET_SPEED * Math.sin(_dir);
+
+  return {
+    getPosition: function() {
+      return position;
+    },
+    getVelocity: function() {
+      return velocity;
+    },
+    getSpeed: function() {
+      return Math.sqrt(Math.pow(velocity[0], 2) + Math.pow(velocity[1], 2));
+    },
+    getRadius: function() {
+      return radius;
+    },
+    getAge: function() {
+      return age;
+    },
+    birthday: function() {
+      age++;
+    },
+    move: function() {
+      Asteroids.move(position, velocity);
+    },
+    draw: function(ctx) {
+      Asteroids.drawPath(ctx, position, direction, 1, path);
+    }
+  };
+};
+
+Asteroids.keyState = function(_) {
+  var state = {
+    [Asteroids.LEFT]: false,
+    [Asteroids.UP]: false,
+    [Asteroids.RIGHT]: false,
+    [Asteroids.DOWN]: false,
+    [Asteroids.FIRE]: false
+  };
+
+  return {
+    on: function(key) {
+      state[key] = true;
+    },
+    off: function(key) {
+      state[key] = false;
+    },
+    getState: function(key) {
+      if (typeof state[key] != "undefined") return state[key];
+      return false;
+    }
+  };
+};
+
+Asteroids.listen = function(game) {
+  const keyMap = {
+    ArrowLeft: Asteroids.LEFT,
+    KeyA: Asteroids.LEFT,
+    ArrowRight: Asteroids.RIGHT,
+    KeyD: Asteroids.RIGHT,
+    ArrowUp: Asteroids.UP,
+    KeyW: Asteroids.UP,
+    Space: Asteroids.FIRE
+  };
+
+  window.addEventListener(
+    "keydown",
+    function(e) {
+      const state = keyMap[e.code];
+      if (state) {
+        e.preventDefault();
+        e.stopPropagation();
+        game.keyState.on(state);
+        return false;
+      }
+      return true;
+    },
+    true
+  );
+
+  window.addEventListener(
+    "keyup",
+    function(e) {
+      const state = keyMap[e.code];
+      if (state) {
+        e.preventDefault();
+        e.stopPropagation();
+        game.keyState.off(state);
+        return false;
+      }
+      return true;
+    },
+    true
+  );
+};
+
+Asteroids.asteroid = function(game, _gen) {
+  // implements IScreenObject
+  var position = [0, 0],
+    velocity = [0, 0],
+    direction = 0,
+    generation = _gen,
+    radius = 7,
+    path = [
+      [1, 7],
+      [5, 5],
+      [7, 1],
+      [5, -3],
+      [7, -7],
+      [3, -9],
+      [-1, -5],
+      [-4, -2],
+      [-8, -1],
+      [-9, 3],
+      [-5, 5],
+      [-1, 3],
+      [1, 7]
+    ];
+
+  return {
+    getPosition: function() {
+      return position;
+    },
+    setPosition: function(pos) {
+      position = pos;
+    },
+    getVelocity: function() {
+      return velocity;
+    },
+    setVelocity: function(vel) {
+      velocity = vel;
+      direction = Math.atan2(vel[1], vel[0]);
+    },
+    getSpeed: function() {
+      return Math.sqrt(Math.pow(velocity[0], 2) + Math.pow(velocity[1], 2));
+    },
+    getRadius: function() {
+      return radius * generation;
+    },
+    getGeneration: function() {
+      return generation;
+    },
+    move: function() {
+      Asteroids.move(position, velocity);
+    },
+    draw: function(ctx) {
+      Asteroids.drawPath(ctx, position, direction, generation, path);
+      // ctx.setTransform(1, 0, 0, 1, position[0], position[1]);
+      // ctx.beginPath();
+      // ctx.arc(0, 0, radius*generation, 0, Math.PI*2, false);
+      // ctx.stroke();
+      // ctx.closePath();
+    }
+  };
+};
+
+Asteroids.collision = function(a, b) {
+  // if a.getPosition() inside b.getBounds?
+  var a_pos = a.getPosition(),
+    b_pos = b.getPosition();
+
+  function sq(x) {
+    return Math.pow(x, 2);
+  }
+
+  var distance = Math.sqrt(sq(a_pos[0] - b_pos[0]) + sq(a_pos[1] - b_pos[1]));
+
+  if (distance <= a.getRadius() + b.getRadius()) return true;
+  return false;
+};
+
+Asteroids.level = function(game) {
+  var level = 0,
+    speed = ASTEROID_SPEED,
+    hspeed = ASTEROID_SPEED / 2;
+
+  return {
+    getLevel: function() {
+      return level;
+    },
+    levelUp: function(game) {
+      level++;
+      game.log.debug("Congrats! On to level " + level);
+      while (
+        game.asteroids.generationCount(ASTEROID_GENERATIONS) <
+        level + ASTEROID_COUNT
+      ) {
+        var a = Asteroids.asteroid(game, ASTEROID_GENERATIONS);
+        a.setPosition([
+          Math.random() * GAME_WIDTH,
+          Math.random() * GAME_HEIGHT
+        ]);
+        a.setVelocity([
+          Math.random() * speed - hspeed,
+          Math.random() * speed - hspeed
+        ]);
+        game.asteroids.push(a);
+      }
+    }
+  };
+};
+
+Asteroids.gameOver = function(game) {
+  return function() {
+    game.log.debug("Game over!");
+
+    if (game.player.getScore() > 0) {
+      game.highScores.addScore("Player", game.player.getScore());
+    }
+
+    game.overlays.add({
+      // implements IOverlay
+      draw: function(ctx) {
+        ctx.font = "30px System, monospace";
+        ctx.textAlign = "center";
+        ctx.textBaseline = "middle";
+        ctx.setTransform(1, 0, 0, 1, 0, 0);
+        ctx.fillText("GAME OVER", GAME_WIDTH / 2, GAME_HEIGHT / 2);
+
+        var scores = game.highScores.getScores();
+        ctx.font = "12px System, monospace";
+        for (var i = 0; i < scores.length; i++) {
+          ctx.fillText(
+            scores[i].name + "   " + scores[i].score,
+            GAME_WIDTH / 2,
+            GAME_HEIGHT / 2 + 20 + 14 * i
+          );
+        }
+      }
+    });
+  };
+};
+
+Asteroids.highScores = function(game) {
+  var scores = [];
+
+  if ((t = localStorage.getItem("high-scores"))) {
+    scores = JSON.parse(t);
+  }
+
+  return {
+    getScores: function() {
+      return scores;
+    },
+    addScore: function(_name, _score) {
+      scores.push({ name: _name, score: _score });
+      scores.sort(function(a, b) {
+        return b.score - a.score;
+      });
+      if (scores.length > 10) {
+        scores.length = 10;
+      }
+      game.log.debug("Saving high scores.");
+      var str = JSON.stringify(scores);
+      localStorage.setItem("high-scores", str);
+    }
+  };
+};
+
+Asteroids.drawPath = function(ctx, position, direction, scale, path, color) {
+  if (!color) {
+    color = "#fff";
+  }
+  ctx.strokeStyle = color;
+  ctx.setTransform(
+    Math.cos(direction) * scale,
+    Math.sin(direction) * scale,
+    -Math.sin(direction) * scale,
+    Math.cos(direction) * scale,
+    position[0],
+    position[1]
+  );
+
+  ctx.beginPath();
+  ctx.moveTo(path[0][0], path[0][1]);
+  for (i = 1; i < path.length; i++) {
+    ctx.lineTo(path[i][0], path[i][1]);
+  }
+  ctx.stroke();
+  ctx.closePath();
+  ctx.strokeStyle = "#fff";
+};
+
+Asteroids.move = function(position, velocity) {
+  position[0] += velocity[0];
+  if (position[0] < 0) position[0] = GAME_WIDTH + position[0];
+  else if (position[0] > GAME_WIDTH) position[0] -= GAME_WIDTH;
+
+  position[1] += velocity[1];
+  if (position[1] < 0) position[1] = GAME_HEIGHT + position[1];
+  else if (position[1] > GAME_HEIGHT) position[1] -= GAME_HEIGHT;
+};
+
+Asteroids.stars = function() {
+  var stars = [];
+  for (var i = 0; i < 50; i++) {
+    stars.push([Math.random() * GAME_WIDTH, Math.random() * GAME_HEIGHT]);
+  }
+
+  return {
+    draw: function(ctx) {
+      var ii = stars.length;
+      for (var i = 0; i < ii; i++) {
+        ctx.fillRect(stars[i][0], stars[i][1], 1, 1);
+      }
+    }
+  };
+};
+
+Asteroids.play = function(game) {
+  var ctx = game.playfield.getContext("2d");
+  ctx.fillStyle = "white";
+  ctx.strokeStyle = "white";
+
+  var speed = ASTEROID_SPEED,
+    hspeed = ASTEROID_SPEED / 2;
+
+  game.level.levelUp(game);
+
+  var bullets = [],
+    last_fire_state = false,
+    last_asteroid_count = 0;
+
+  var extra_lives = 0;
+
+  // Add a star field.
+  game.overlays.add(Asteroids.stars());
+
+  game.pulse = setInterval(function() {
+    var kill_asteroids = [],
+      new_asteroids = [],
+      kill_bullets = [];
+
+    ctx.save();
+    ctx.clearRect(0, 0, GAME_WIDTH, GAME_HEIGHT);
+
+    // Be nice and award extra lives first.
+    var t_extra_lives = game.player.getScore() / POINTS_TO_EXTRA_LIFE;
+    t_extra_lives = Math.floor(t_extra_lives);
+    if (t_extra_lives > extra_lives) {
+      game.player.extraLife(game);
+    }
+    extra_lives = t_extra_lives;
+
+    if (game.keyState.getState(Asteroids.UP)) {
+      game.player.thrust(THRUST_ACCEL);
+    }
+
+    if (game.keyState.getState(Asteroids.LEFT)) {
+      game.player.rotate(-ROTATE_SPEED);
+    }
+
+    if (game.keyState.getState(Asteroids.RIGHT)) {
+      game.player.rotate(ROTATE_SPEED);
+    }
+
+    var fire_state = game.keyState.getState(Asteroids.FIRE);
+    if (
+      fire_state &&
+      fire_state != last_fire_state &&
+      bullets.length < MAX_BULLETS
+    ) {
+      var b = game.player.fire(game);
+      bullets.push(b);
+    }
+    last_fire_state = fire_state;
+
+    if (!game.player.isDead()) {
+      game.player.move();
+      game.player.draw(ctx);
+    }
+
+    for (var k = 0; k < bullets.length; k++) {
+      if (!bullets[k]) continue;
+
+      if (bullets[k].getAge() > MAX_BULLET_AGE) {
+        kill_bullets.push(k);
+        continue;
+      }
+      bullets[k].birthday();
+      bullets[k].move();
+      bullets[k].draw(ctx);
+    }
+
+    for (var r = kill_bullets.length - 1; r >= 0; r--) {
+      bullets.splice(r, 1);
+    }
+
+    var asteroids = game.asteroids.getIterator();
+    for (var i = 0; i < game.asteroids.length; i++) {
+      var killit = false;
+      asteroids[i].move();
+      asteroids[i].draw(ctx);
+
+      // Destroy the asteroid
+      for (var j = 0; j < bullets.length; j++) {
+        if (!bullets[j]) continue;
+        if (Asteroids.collision(bullets[j], asteroids[i])) {
+          game.log.debug("You shot an asteroid!");
+          // Destroy the bullet.
+          bullets.splice(j, 1);
+          killit = true; // JS doesn't have "continue 2;"
+          continue;
+        }
+      }
+
+      // Kill the asteroid?
+      if (killit) {
+        var _gen = asteroids[i].getGeneration() - 1;
+        if (_gen > 0) {
+          // Create children ;)
+          for (var n = 0; n < ASTEROID_CHILDREN; n++) {
+            var a = Asteroids.asteroid(game, _gen);
+            var _pos = [
+              asteroids[i].getPosition()[0],
+              asteroids[i].getPosition()[1]
+            ];
+            a.setPosition(_pos);
+            a.setVelocity([
+              Math.random() * speed - hspeed,
+              Math.random() * speed - hspeed
+            ]);
+            new_asteroids.push(a);
+          }
+        }
+        game.player.addScore(ASTEROID_SCORE);
+        kill_asteroids.push(i);
+        continue;
+      }
+
+      // Kill the player?
+      if (
+        !game.player.isDead() &&
+        !game.player.isInvincible() &&
+        Asteroids.collision(game.player, asteroids[i])
+      ) {
+        game.player.die(game);
+      }
+    }
+
+    kill_asteroids.sort(function(a, b) {
+      return a - b;
+    });
+    for (var m = kill_asteroids.length - 1; m >= 0; m--) {
+      game.asteroids.splice(kill_asteroids[m], 1);
+    }
+
+    for (var o = 0; o < new_asteroids.length; o++) {
+      game.asteroids.push(new_asteroids[o]);
+    }
+
+    ctx.restore();
+
+    // Do we need to level up?
+    if (0 == game.asteroids.length && last_asteroid_count != 0) {
+      setTimeout(function() {
+        game.level.levelUp(game);
+      }, LEVEL_TIMEOUT);
+    }
+
+    last_asteroid_count = game.asteroids.length;
+
+    // Draw overlays.
+    game.overlays.draw(ctx);
+
+    // Update the info pane.
+    game.info.setLives(game, game.player.getLives());
+    game.info.setScore(game, game.player.getScore());
+    game.info.setLevel(game, game.level.getLevel());
+  }, FRAME_PERIOD);
+};
+
+// Some boring constants.
+Asteroids.LOG_ALL = 0;
+Asteroids.LOG_INFO = 1;
+Asteroids.LOG_DEBUG = 2;
+Asteroids.LOG_WARNING = 3;
+Asteroids.LOG_ERROR = 4;
+Asteroids.LOG_CRITICAL = 5;
+Asteroids.LOG_NONE = 6;
+
+Asteroids.LEFT = 37;
+Asteroids.UP = 38;
+Asteroids.RIGHT = 39;
+Asteroids.DOWN = 40;
+Asteroids.FIRE = 32;
+
+// Load it up!
+window.onload = Asteroids(document.getElementById("asteroids"));
diff --git a/pandora_console/include/asteroids/index.html b/pandora_console/include/asteroids/index.html
new file mode 100644
index 0000000000..3c1dfbd690
--- /dev/null
+++ b/pandora_console/include/asteroids/index.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<html lang="en" dir="ltr">
+  <head>
+    <meta http-equiv="Content-type" content="text/html;charset=utf-8" />
+    <title>Asteroids</title>
+    <link rel="stylesheet" href="style.css" type="text/css" />
+  </head>
+
+  <body>
+    <div id="asteroids">Asteroids game goes here!</div>
+
+    <script src="asteroids.js" type="text/ecmascript"></script>
+  </body>
+</html>
diff --git a/pandora_console/include/asteroids/style.css b/pandora_console/include/asteroids/style.css
new file mode 100644
index 0000000000..ab877caa06
--- /dev/null
+++ b/pandora_console/include/asteroids/style.css
@@ -0,0 +1,46 @@
+/* Style for Asteroids.js
+ * Copyright (c) 2010 James Socol <me@jamessocol.com>
+ * See LICENSE.txt for license.
+ */
+
+body {
+  background-color: #000;
+  color: #fff;
+  font-family: "Calibri", "System", monospace;
+  font-size: 14px;
+}
+
+div#asteroids {
+  margin: 50px auto;
+  width: 640px;
+  border: 1px solid #fff;
+  padding: 5px;
+}
+
+div#asteroids > * {
+  color: #fff;
+}
+
+div#asteroids > div {
+  font-family: "System", monospace;
+  font-size: 11px;
+  padding-bottom: 5px;
+}
+
+div#asteroids > div > span {
+  float: right;
+  padding-left: 20px;
+}
+
+div#instructions {
+  width: 640px;
+  margin: 20px auto;
+}
+
+h1 {
+  font-size: 18px;
+}
+
+h2 {
+  font-size: 16px;
+}
diff --git a/pandora_console/include/javascript/pandora_events.js b/pandora_console/include/javascript/pandora_events.js
index 86b84376c5..f1453ce493 100644
--- a/pandora_console/include/javascript/pandora_events.js
+++ b/pandora_console/include/javascript/pandora_events.js
@@ -1739,3 +1739,48 @@ function loadModal() {
   }
 }
 window.onload = loadModal;
+
+// Load Asteroids game.
+$(window).on("load", function() {
+  let counter = 0;
+  $("#button-sound_events_button")
+    .off("click")
+    .on("click", function(e) {
+      counter++;
+      if (counter == 12) {
+        $("#modal-asteroids")
+          .dialog({
+            title: "Asteroids",
+            resizable: true,
+            modal: true,
+            width: 900,
+            height: 700,
+            open: function() {
+              $.ajax({
+                method: "post",
+                url: getUrlAjax(),
+                data: {
+                  page: "include/ajax/events",
+                  playAsteroids: 1
+                },
+                dataType: "html",
+                success: function(data) {
+                  $("#modal-asteroids").html(data);
+                  $(".ui-widget-content").css("background", "#222");
+                  $(".ui-dialog-title").css("color", "#fff");
+                },
+                error: function(error) {
+                  console.error(error);
+                }
+              });
+            },
+            close: function() {
+              counter = 0;
+              $(".ui-widget-content").css("background", "#fff");
+              $(".ui-dialog-title").css("color", "rgb(51, 51, 51)");
+            }
+          })
+          .show();
+      }
+    });
+});
diff --git a/pandora_console/include/styles/asteroids.css b/pandora_console/include/styles/asteroids.css
new file mode 100644
index 0000000000..8b434b59ba
--- /dev/null
+++ b/pandora_console/include/styles/asteroids.css
@@ -0,0 +1,65 @@
+/**
+ *
+ * Name: Default theme
+ * Pandora Stylesheet
+ *
+ * @category   Stylesheet
+ * @package    Pandora FMS
+ * @subpackage Community
+ * @version    1.0.0
+ * @license    See below
+ *
+ *    ______                 ___                    _______ _______ ________
+ *   |   __ \.-----.--.--.--|  |.-----.----.-----. |    ___|   |   |     __|
+ *  |    __/|  _  |     |  _  ||  _  |   _|  _  | |    ___|       |__     |
+ * |___|   |___._|__|__|_____||_____|__| |___._| |___|   |__|_|__|_______|
+ *
+ * ============================================================================
+ * Copyright (c) 2005-2023 Pandora FMS
+ * Please see https://pandorafms.com for full contribution list
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation for version 2.
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * ============================================================================
+ */
+
+div#asteroids {
+  background-color: #000;
+  color: #fff;
+  margin: 50px auto;
+  width: 640px;
+  border: 1px solid #fff;
+  padding: 5px;
+}
+
+div#asteroids > * {
+  color: #fff;
+}
+
+div#asteroids > div {
+  font-family: "System", monospace;
+  font-size: 11px;
+  padding-bottom: 5px;
+}
+
+div#asteroids > div > span {
+  float: right;
+  padding-left: 20px;
+}
+
+div#instructions {
+  width: 640px;
+  margin: 20px auto;
+}
+
+h1 {
+  font-size: 18px;
+}
+
+h2 {
+  font-size: 16px;
+}
diff --git a/pandora_console/operation/menu.php b/pandora_console/operation/menu.php
index 3794a30ae3..2ec659f51a 100644
--- a/pandora_console/operation/menu.php
+++ b/pandora_console/operation/menu.php
@@ -603,6 +603,7 @@ if ($access_console_node === true) {
         $sub[$javascript]['type'] = 'direct';
 
         echo '<div id="modal-sound" style="display:none;"></div>';
+        echo '<div id="modal-asteroids" style="display:none;"></div>';
 
         ui_require_javascript_file('pandora_events');
 

From 4ed724edccfbbca7216fdb6748fdac17b8fc0a3f Mon Sep 17 00:00:00 2001
From: "felix.suarez" <felix.suarez@pandorafms.com>
Date: Thu, 23 Nov 2023 12:15:55 -0600
Subject: [PATCH 011/231] Add SSL valitations for Cipher and Version

---
 tentacle/conf/tentacle_server.conf.new |  8 ++++-
 tentacle/tentacle_server               | 47 ++++++++++++++++++++++++--
 2 files changed, 51 insertions(+), 4 deletions(-)

diff --git a/tentacle/conf/tentacle_server.conf.new b/tentacle/conf/tentacle_server.conf.new
index 1acf082ca2..390369995f 100644
--- a/tentacle/conf/tentacle_server.conf.new
+++ b/tentacle/conf/tentacle_server.conf.new
@@ -72,4 +72,10 @@ log_file /dev/null
 # ssl_password 0
 
 # [-T] Use libwrap library (Authen::Libwrap perl module)
-# use_libwrap 0
\ No newline at end of file
+# use_libwrap 0
+
+# [-z] Restrict to a specific ssl version
+# ssl_version TLSv1_3
+
+# [-u] Restrict to a specific ssl cipher
+# ssl_cipher AES256-SHA
diff --git a/tentacle/tentacle_server b/tentacle/tentacle_server
index 6d503e0053..cf9b521cdd 100755
--- a/tentacle/tentacle_server
+++ b/tentacle/tentacle_server
@@ -187,6 +187,12 @@ my $t_proxy_ip = undef;
 # Port to proxy client requests to
 my $t_proxy_port = 41121;
 
+# Allowed SSL Cipher 
+my $t_ssl_cipher= '';
+
+# Allowed SSL Version 
+my $t_ssl_version= '';
+
 # Proxy socket
 my $t_proxy_socket;
 
@@ -230,7 +236,7 @@ sub print_help {
 	print ("\t-p port\t\tPort to listen on (default $t_port).\n");
 	print ("\t-q\t\tQuiet. Do now print error messages.\n");
 	print ("\t-r number\tNumber of retries for network opertions (default $t_retries).\n");
-	print ("\t-S (install|uninstall|run) Manage the win32 service.\n");
+	print ("\t-S \t\t(install|uninstall|run) Manage the win32 service.\n");
 	print ("\t-t time\t\tTime-out for network operations in seconds (default ${t_timeout}s).\n");
 	print ("\t-v\t\tBe verbose (display errors).\n");
 	print ("\t-V\t\tBe verbose on hard way (display errors and other info).\n");
@@ -239,7 +245,9 @@ sub print_help {
 	print ("\t-b ip_address\tProxy requests to the given address.\n");
 	print ("\t-g port\t\tProxy requests to the given port.\n");
 	print ("\t-T\t\tEnable tcpwrappers support.\n");
-	print ("\t  \t\t(To use this option, 'Authen::Libwrap' should be installed.)\n\n");
+	print ("\t  \t\t(To use this option, 'Authen::Libwrap' should be installed.)\n");
+	print ("\t-z\t\tRestrict to a specific SSL Version.\n");
+	print ("\t-u\t\tRestrict to a specific SSL Cipher.\n\n");
 }
 
 ################################################################################
@@ -287,7 +295,7 @@ sub parse_options {
 	my @t_addresses_tmp;
 
 	# Get options
-	if (getopts ('a:b:c:de:f:F:g:hIi:k:l:m:op:qr:s:S:t:TvVwx:', \%opts) == 0 || defined ($opts{'h'})) {
+	if (getopts ('a:b:c:de:f:F:g:hIi:k:l:m:op:qr:s:S:t:TvVwx:zu:', \%opts) == 0 || defined ($opts{'h'})) {
 		print_help ();
 		exit 1;
 	}
@@ -547,6 +555,18 @@ sub parse_options {
 		}
 	}
 
+	# Specific SSL Version
+	$token_value = get_config_value($opts{'z'}, $CONF->{'ssl_version'});
+	if (defined ($token_value)) {
+		$t_ssl_version = $token_value;
+	}	
+
+	# Specific SSL Cipher
+	$token_value = get_config_value($opts{'u'}, $CONF->{'ssl_cipher'});
+	if (defined ($token_value)) {
+		$t_ssl_cipher = $token_value;
+	}
+
 	# Win32 service management
 	if (defined ($opts{'S'})) {
 		my $service_action = $opts{'S'};
@@ -817,9 +837,30 @@ sub start_ssl {
 		error ($err);
 	}
 
+	validate_ssl();
+
 	print_log ("SSL started for " . $t_client_socket->sockhost ());
 }
 
+################################################################################
+## SUB validate_ssl
+## Validate that a socket has a defined ssl version and cipher.
+################################################################################
+sub validate_ssl{
+	my $ssl_version = $t_client_socket->get_ssl_version();
+	my $ssl_cipher = $t_client_socket->get_cipher();
+
+	if($t_ssl_version && $ssl_version ne $t_ssl_version){
+		$t_client_socket->close();
+		error ("Invalid SSL Version " . $ssl_version . ", expected version is " . $t_ssl_version . ".");
+	}
+
+	if($t_ssl_cipher && $ssl_cipher ne $t_ssl_cipher){
+		$t_client_socket->close();
+		error ("Invalid SSL Cipher " . $ssl_cipher . ", expected cipher is " . $t_ssl_cipher . ".");
+	}
+}
+
 ################################################################################
 ## SUB accept_connections
 ## Manage incoming connections.

From 51a152d86d50886b090d1908cf7a41cb1bbc32f6 Mon Sep 17 00:00:00 2001
From: Jorge Rincon <jorge.rincon@pandorafms.com>
Date: Fri, 24 Nov 2023 13:25:42 +0100
Subject: [PATCH 012/231] #12202 Added setup flag for easter egg

---
 pandora_console/include/javascript/pandora_events.js | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/pandora_console/include/javascript/pandora_events.js b/pandora_console/include/javascript/pandora_events.js
index f1453ce493..a95ce68899 100644
--- a/pandora_console/include/javascript/pandora_events.js
+++ b/pandora_console/include/javascript/pandora_events.js
@@ -1747,7 +1747,8 @@ $(window).on("load", function() {
     .off("click")
     .on("click", function(e) {
       counter++;
-      if (counter == 12) {
+      let flagEasternEgg = $("#flagEasternEgg").val();
+      if (counter == 12 && flagEasternEgg == true) {
         $("#modal-asteroids")
           .dialog({
             title: "Asteroids",

From 245154ce21e8ae1cdba4daf1f436dd737d576a58 Mon Sep 17 00:00:00 2001
From: "felix.suarez" <felix.suarez@pandorafms.com>
Date: Fri, 24 Nov 2023 09:37:20 -0600
Subject: [PATCH 013/231] Pass version and cipher as args instead of validating
 afterwards.

---
 tentacle/tentacle_server | 41 ++++++++++++----------------------------
 1 file changed, 12 insertions(+), 29 deletions(-)

diff --git a/tentacle/tentacle_server b/tentacle/tentacle_server
index cf9b521cdd..b6d6ae7b08 100755
--- a/tentacle/tentacle_server
+++ b/tentacle/tentacle_server
@@ -295,7 +295,7 @@ sub parse_options {
 	my @t_addresses_tmp;
 
 	# Get options
-	if (getopts ('a:b:c:de:f:F:g:hIi:k:l:m:op:qr:s:S:t:TvVwx:zu:', \%opts) == 0 || defined ($opts{'h'})) {
+	if (getopts ('a:b:c:de:f:F:g:hIi:k:l:m:op:qr:s:S:t:TvVwx:z:u:', \%opts) == 0 || defined ($opts{'h'})) {
 		print_help ();
 		exit 1;
 	}
@@ -808,13 +808,19 @@ sub stop_server {
 sub start_ssl {
 	my $err;
 
+	my %ssl_args = (
+		SSL_cert_file => $t_ssl_cert,
+		SSL_key_file => $t_ssl_key,
+		SSL_passwd_cb => sub {return $t_ssl_pwd},
+		SSL_server => 1,
+		SSL_cipher_list => $t_ssl_cipher // '',
+		SSL_version     => $t_ssl_version // '',
+	);
+
 	if ($t_ssl_ca eq '') {
 		IO::Socket::SSL->start_SSL (
 			$t_client_socket,
-			SSL_cert_file => $t_ssl_cert,
-			SSL_key_file => $t_ssl_key,
-			SSL_passwd_cb => sub {return $t_ssl_pwd},
-			SSL_server => 1,
+			%ssl_args,
 			# Verify peer
 			SSL_verify_mode => 0x01,
 		);
@@ -822,11 +828,8 @@ sub start_ssl {
 	else {
 		IO::Socket::SSL->start_SSL (
 			$t_client_socket,
+			%ssl_args,
 			SSL_ca_file => $t_ssl_ca,
-			SSL_cert_file => $t_ssl_cert,
-			SSL_key_file => $t_ssl_key,
-			SSL_passwd_cb => sub {return $t_ssl_pwd},
-			SSL_server => 1,
 			# Fail verification if no peer certificate exists
 			SSL_verify_mode => 0x03,
 		);
@@ -837,29 +840,9 @@ sub start_ssl {
 		error ($err);
 	}
 
-	validate_ssl();
-
 	print_log ("SSL started for " . $t_client_socket->sockhost ());
 }
 
-################################################################################
-## SUB validate_ssl
-## Validate that a socket has a defined ssl version and cipher.
-################################################################################
-sub validate_ssl{
-	my $ssl_version = $t_client_socket->get_ssl_version();
-	my $ssl_cipher = $t_client_socket->get_cipher();
-
-	if($t_ssl_version && $ssl_version ne $t_ssl_version){
-		$t_client_socket->close();
-		error ("Invalid SSL Version " . $ssl_version . ", expected version is " . $t_ssl_version . ".");
-	}
-
-	if($t_ssl_cipher && $ssl_cipher ne $t_ssl_cipher){
-		$t_client_socket->close();
-		error ("Invalid SSL Cipher " . $ssl_cipher . ", expected cipher is " . $t_ssl_cipher . ".");
-	}
-}
 
 ################################################################################
 ## SUB accept_connections

From 28820f4471f1812f6d8ff06d5b2c59f29bc5ef4e Mon Sep 17 00:00:00 2001
From: Daniel Cebrian <daniel.cebrian@pandorafms.com>
Date: Wed, 29 Nov 2023 11:04:48 +0100
Subject: [PATCH 014/231] #12543 fixed pagination metaconsole

---
 pandora_console/include/functions_events.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pandora_console/include/functions_events.php b/pandora_console/include/functions_events.php
index 2a91641315..7a106ead7f 100644
--- a/pandora_console/include/functions_events.php
+++ b/pandora_console/include/functions_events.php
@@ -1907,7 +1907,7 @@ function events_get_all(
                 // -1 For pagination 'All'.
                 ((int) $limit === -1)
                     ? $end = count($data)
-                    : $end = ((int) $offset !== 0) ? ($offset + $limit) : $limit;
+                    : $end = $limit;
                 $finally = array_slice($data, $offset, $end, true);
                 $return = [
                     'buffers' => $buffers,

From 0d285802b17e0024f1b52cf63c43c2a59cc8e414 Mon Sep 17 00:00:00 2001
From: Daniel Maya <daniel.maya@pandorafms.com>
Date: Wed, 29 Nov 2023 15:32:46 +0100
Subject: [PATCH 015/231] #12520 Fixed form

---
 pandora_console/include/javascript/pandora_dashboards.js | 6 +++---
 pandora_console/include/styles/form.css                  | 2 +-
 pandora_console/views/dashboard/formDashboard.php        | 2 +-
 3 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/pandora_console/include/javascript/pandora_dashboards.js b/pandora_console/include/javascript/pandora_dashboards.js
index 283acf8005..c6620f18bf 100644
--- a/pandora_console/include/javascript/pandora_dashboards.js
+++ b/pandora_console/include/javascript/pandora_dashboards.js
@@ -43,14 +43,14 @@ function update_dashboard(data) {
  */
 // eslint-disable-next-line no-unused-vars
 function showGroup() {
-  $("#li-group").removeClass("hidden");
+  $("#li-group_form").removeClass("hidden");
   var private = $("#private").prop("checked");
   if (private) {
     $("#id_group").removeAttr("required");
-    $("#li-group").hide();
+    $("#li-group_form").hide();
   } else {
     $("#id_group").attr("required", true);
-    $("#li-group").show();
+    $("#li-group_form").show();
   }
 }
 
diff --git a/pandora_console/include/styles/form.css b/pandora_console/include/styles/form.css
index c212d459f6..aebc10b821 100644
--- a/pandora_console/include/styles/form.css
+++ b/pandora_console/include/styles/form.css
@@ -255,7 +255,7 @@ ul.wizard li > textarea {
 }
 
 .hidden {
-  display: none;
+  display: none !important;
 }
 
 form.modal-dashboard ul.wizard li.hidden,
diff --git a/pandora_console/views/dashboard/formDashboard.php b/pandora_console/views/dashboard/formDashboard.php
index c36df6cf06..18068ae729 100644
--- a/pandora_console/views/dashboard/formDashboard.php
+++ b/pandora_console/views/dashboard/formDashboard.php
@@ -84,7 +84,7 @@ $inputs = [
         ],
     ],
     [
-        'block_id'      => 'group',
+        'block_id'      => 'group_form',
         'direct'        => 1,
         'hidden'        => $private,
         'block_content' => [

From b6722214de2aa5cc3124d21f69ebef1e9bdfed90 Mon Sep 17 00:00:00 2001
From: Daniel Cebrian <daniel.cebrian@pandorafms.com>
Date: Wed, 29 Nov 2023 15:43:38 +0100
Subject: [PATCH 016/231] #12541 changes in graph analytics

---
 .../include/javascript/graph_analytics.js     | 183 +++++++++++++++---
 .../operation/reporting/graph_analytics.php   |  99 ++++++++--
 2 files changed, 240 insertions(+), 42 deletions(-)

diff --git a/pandora_console/include/javascript/graph_analytics.js b/pandora_console/include/javascript/graph_analytics.js
index 6c14f3f8c8..742e43201e 100644
--- a/pandora_console/include/javascript/graph_analytics.js
+++ b/pandora_console/include/javascript/graph_analytics.js
@@ -1,3 +1,4 @@
+/* global $ */
 // Droppable options.
 var droppableOptions = {
   accept: ".draggable",
@@ -422,12 +423,38 @@ $("[data-button=new]").click(function(e) {
   });
 });
 
+function updateSelect(element, fields, selected) {
+  if (typeof fields === "object") {
+    $(element)
+      .find("select option[value!=0]")
+      .remove();
+    $(element)
+      .find(".select2-container .select2-selection__rendered")
+      .empty();
+    Object.keys(fields).forEach(function(key) {
+      if (key === selected) {
+        $(element)
+          .find(".select2-container .select2-selection__rendered")
+          .append(`${fields[key]}`);
+        $(element)
+          .find("select")
+          .append(`<option value="${key}" selected>${fields[key]}</option>`);
+      } else {
+        $(element)
+          .find("select")
+          .append(`<option value="${key}">${fields[key]}</option>`);
+      }
+    });
+  }
+}
+
 // Save graps modal.
 $("[data-button=save]").click(function(e) {
   // Filter save mode selector
   $("#save_filter_row1").show();
   $("#save_filter_row2").show();
   $("#update_filter_row1").hide();
+  $("#delete_filter_row2").hide();
   $("#radiobtn0002").prop("checked", false);
   $("#radiobtn0001").prop("checked", true);
   $("#text-id_name").val("");
@@ -438,20 +465,43 @@ $("[data-button=save]").click(function(e) {
       $("#save_filter_row2").show();
       $("#submit-save_filter").show();
       $("#update_filter_row1").hide();
-    } else {
+      $("#delete_filter_row2").hide();
+    } else if ($(this).val() == "update") {
       $("#save_filter_row1").hide();
       $("#save_filter_row2").hide();
       $("#update_filter_row1").show();
       $("#submit-save_filter").hide();
+      $("#delete_filter_row2").hide();
+    } else {
+      $("#save_filter_row1").hide();
+      $("#save_filter_row2").hide();
+      $("#update_filter_row1").hide();
+      $("#submit-save_filter").hide();
+      $("#delete_filter_row2").show();
     }
   });
 
-  $("#save-filter-select").dialog({
-    resizable: true,
-    draggable: true,
-    modal: false,
-    closeOnEscape: true,
-    width: 350
+  $.ajax({
+    method: "POST",
+    url: "ajax.php",
+    dataType: "json",
+    data: {
+      page: "operation/reporting/graph_analytics",
+      load_list_filters: 1
+    },
+    success: function(data) {
+      if (data) {
+        updateSelect("#save_filter_form", data, 0);
+        $("#save-filter-select").dialog({
+          resizable: true,
+          draggable: true,
+          modal: false,
+          closeOnEscape: true,
+          width: 350,
+          title: titleModalActions
+        });
+      }
+    }
   });
 });
 
@@ -535,14 +585,67 @@ function save_update_filter() {
   });
 }
 
+// Delete filter.
+function delete_filter() {
+  confirmDialog({
+    title: titleDelete,
+    message: messageDelete,
+    onAccept: function() {
+      $.ajax({
+        method: "POST",
+        url: "ajax.php",
+        dataType: "html",
+        data: {
+          page: "operation/reporting/graph_analytics",
+          delete_filter: $("#delete_filter").val()
+        },
+        success: function(data) {
+          if (data == "deleted") {
+            confirmDialog({
+              title: titleDeleteConfirm,
+              message: messageDeleteConfirm,
+              hideCancelButton: true,
+              onAccept: function() {
+                $(
+                  "button.ui-button.ui-corner-all.ui-widget.ui-button-icon-only.ui-dialog-titlebar-close"
+                ).click();
+              }
+            });
+          } else {
+            confirmDialog({
+              title: titleDeleteError,
+              message: messageDeleteError,
+              hideCancelButton: true
+            });
+          }
+        }
+      });
+    }
+  });
+}
+
 // Load graps modal.
 $("[data-button=load]").click(function(e) {
-  $("#load-filter-select").dialog({
-    resizable: true,
-    draggable: true,
-    modal: false,
-    closeOnEscape: true,
-    width: "auto"
+  $.ajax({
+    method: "POST",
+    url: "ajax.php",
+    dataType: "json",
+    data: {
+      page: "operation/reporting/graph_analytics",
+      load_list_filters: 1
+    },
+    success: function(data) {
+      if (data) {
+        updateSelect("#load_filter_form", data, 0);
+        $("#load-filter-select").dialog({
+          resizable: true,
+          draggable: true,
+          modal: false,
+          closeOnEscape: true,
+          width: "auto"
+        });
+      }
+    }
   });
 });
 
@@ -618,12 +721,26 @@ function loadFilter(url, filterId, homeurl, id) {
 
 // Share button.
 $("[data-button=share]").click(function(e) {
-  $("#share-select").dialog({
-    resizable: true,
-    draggable: true,
-    modal: false,
-    closeOnEscape: true,
-    width: "auto"
+  $.ajax({
+    method: "POST",
+    url: "ajax.php",
+    dataType: "json",
+    data: {
+      page: "operation/reporting/graph_analytics",
+      load_list_filters: 1
+    },
+    success: function(data) {
+      if (data) {
+        updateSelect("#share_form-0-0", data, 0);
+        $("#share-select").dialog({
+          resizable: true,
+          draggable: true,
+          modal: false,
+          closeOnEscape: true,
+          width: "auto"
+        });
+      }
+    }
   });
 });
 
@@ -643,13 +760,27 @@ $("#button-share-modal").click(function(e) {
 
 // Export button.
 $("[data-button=export]").click(function(e) {
-  $("#export-select").dialog({
-    resizable: true,
-    draggable: true,
-    modal: false,
-    closeOnEscape: true,
-    width: "auto",
-    title: titleExport
+  $.ajax({
+    method: "POST",
+    url: "ajax.php",
+    dataType: "json",
+    data: {
+      page: "operation/reporting/graph_analytics",
+      load_list_filters: 1
+    },
+    success: function(data) {
+      if (data) {
+        updateSelect("#export_form-0-0", data, 0);
+        $("#export-select").dialog({
+          resizable: true,
+          draggable: true,
+          modal: false,
+          closeOnEscape: true,
+          width: "auto",
+          title: titleExport
+        });
+      }
+    }
   });
 });
 
diff --git a/pandora_console/operation/reporting/graph_analytics.php b/pandora_console/operation/reporting/graph_analytics.php
index 8797376070..b85a0cb84d 100644
--- a/pandora_console/operation/reporting/graph_analytics.php
+++ b/pandora_console/operation/reporting/graph_analytics.php
@@ -45,8 +45,10 @@ if (is_ajax()) {
     $save_filter = get_parameter('save_filter');
     $load_filter = get_parameter('load_filter');
     $update_filter = get_parameter('update_filter');
+    $delete_filter = get_parameter('delete_filter');
     $get_new_values = get_parameter('get_new_values');
     $export_filter = get_parameter('export_filter');
+    $load_list_filters = get_parameter('load_list_filters');
 
     if (empty($search_left) === false) {
         $output = [];
@@ -289,6 +291,11 @@ if (is_ajax()) {
         return;
     }
 
+    if (empty($delete_filter) === false) {
+        $result = db_process_sql_delete('tgraph_analytics_filter', ['id' => $delete_filter]);
+        echo ((bool) $result === true) ? 'deleted' : '';
+    }
+
     // Get new values.
     if (empty($get_new_values) === false) {
         $data = [];
@@ -322,19 +329,19 @@ if (is_ajax()) {
         $graphs = json_decode(db_get_value('graph_modules', 'tgraph_analytics_filter', 'id', $filter));
         $interval = db_get_value('tgraph_analytics_filter.interval', 'tgraph_analytics_filter', 'id', $filter);
 
-        foreach ($graphs as $graph) {
-            $id_graph = db_process_sql_insert(
-                'tgraph',
-                [
-                    'id_user'     => $config['id_user'],
-                    'id_group'    => $group,
-                    'name'        => $filter_name.' ('.__('Graph').' '.($counter + 1).')',
-                    'description' => __('Created from Graph analytics. Filter:').' '.$filter_name.'. '.__('Graph').' '.($counter + 1),
-                    'period'      => $interval,
-                    'stacked'     => 2,
-                ]
-            );
+        $id_graph = db_process_sql_insert(
+            'tgraph',
+            [
+                'id_user'     => $config['id_user'],
+                'id_group'    => $group,
+                'name'        => $filter_name.' ('.__('Graph').') ',
+                'description' => __('Created from Graph analytics. Filter:').' '.$filter_name.'. '.__('Graph'),
+                'period'      => $interval,
+                'stacked'     => 2,
+            ]
+        );
 
+        foreach ($graphs as $graph) {
             if ($id_graph > 0) {
                 $counter++;
                 $field_order = 1;
@@ -360,6 +367,11 @@ if (is_ajax()) {
         echo $counter;
     }
 
+    if (empty($load_list_filters) === false) {
+        $filters = graph_analytics_filter_select();
+        echo json_encode($filters);
+    }
+
     return;
 }
 
@@ -384,7 +396,7 @@ if (check_acl($config['id_user'], 0, 'RW') === 1 || check_acl($config['id_user']
             'content' => html_print_radio_button(
                 'filter_mode',
                 'new',
-                __('New filter'),
+                __('Create'),
                 true,
                 true
             ),
@@ -398,7 +410,21 @@ if (check_acl($config['id_user'], 0, 'RW') === 1 || check_acl($config['id_user']
             'content' => html_print_radio_button(
                 'filter_mode',
                 'update',
-                __('Update filter'),
+                __('Update'),
+                false,
+                true
+            ),
+        ],
+        true
+    );
+
+    $data[2] = html_print_div(
+        [
+            'style'   => 'display: flex;',
+            'content' => html_print_radio_button(
+                'filter_mode',
+                'delete',
+                __('Delete'),
                 false,
                 true
             ),
@@ -466,7 +492,37 @@ if (check_acl($config['id_user'], 0, 'RW') === 1 || check_acl($config['id_user']
     );
 
     $table->data[] = $data;
-    $table->rowclass[] = '';
+    $table->rowclass[] = 'display-grid';
+
+    $data = [];
+    $table->rowid[4] = 'delete_filter_row2';
+    $data[0] = __('Delete filter');
+
+    $select_filters_delete = graph_analytics_filter_select();
+
+    $data[0] .= html_print_select(
+        $select_filters_delete,
+        'delete_filter',
+        '',
+        '',
+        '',
+        0,
+        true
+    );
+    $data[1] = html_print_submit_button(
+        __('Delete filter'),
+        'delete_filter',
+        false,
+        [
+            'class'   => 'mini ',
+            'icon'    => 'delete',
+            'style'   => 'margin-left: 155px; width: 145px;',
+            'onclick' => 'delete_filter();',
+        ],
+        true
+    );
+
+    $table->data[] = $data;
 
     html_print_table($table);
 } else {
@@ -583,7 +639,7 @@ echo '</div>';
 echo '<div id="export-select" class="load-filter-modal invisible">';
 
 $table = new StdClass;
-$table->id = 'share_form';
+$table->id = 'export_form';
 $table->width = '100%';
 $table->cellspacing = 4;
 $table->cellpadding = 4;
@@ -920,6 +976,15 @@ const titleError = "<?php echo __('Error'); ?>";
 const titleUpdate = "<?php echo __('Override filter?'); ?>";
 const messageUpdate = "<?php echo __('Do you want to overwrite the filter?'); ?>";
 
+const titleDelete = "<?php echo __('Delete filter?'); ?>";
+const messageDelete = "<?php echo __('Do you want to delete the filter?'); ?>";
+
+const titleDeleteConfirm = "<?php echo __('Deleted successfully'); ?>";
+const messageDeleteConfirm = "<?php echo __('The filter has been deleted successfully'); ?>";
+
+const titleDeleteError = "<?php echo __('Error'); ?>";
+const messageDeleteError = "<?php echo __('It is not possible delete the filter'); ?>";
+
 const titleUpdateConfirm = "<?php echo __('Updated successfully'); ?>";
 const messageUpdateConfirm = "<?php echo __('The filter has been updated successfully'); ?>";
 
@@ -943,4 +1008,6 @@ const messageExportError = "<?php echo __('Filter cannot be None'); ?>";
 const titleRemoveConfirm = "<?php echo __('Delete graph'); ?>";
 const messageRemoveConfirm = "<?php echo __('Do you want to delete the graph? Remember to save the changes.'); ?>";
 
+const titleModalActions = "<?php echo __('Filter actions'); ?>"
+
 </script>
\ No newline at end of file

From f1a8c4b31de5c05c0bd3f7603a920efcc74c2e29 Mon Sep 17 00:00:00 2001
From: Daniel Cebrian <daniel.cebrian@pandorafms.com>
Date: Wed, 29 Nov 2023 16:12:12 +0100
Subject: [PATCH 017/231] #12541 change message export graph

---
 .../include/javascript/graph_analytics.js     |  4 +-
 .../operation/reporting/graph_analytics.php   | 52 +++++++++++--------
 2 files changed, 31 insertions(+), 25 deletions(-)

diff --git a/pandora_console/include/javascript/graph_analytics.js b/pandora_console/include/javascript/graph_analytics.js
index 742e43201e..475a310ebc 100644
--- a/pandora_console/include/javascript/graph_analytics.js
+++ b/pandora_console/include/javascript/graph_analytics.js
@@ -800,10 +800,10 @@ function exportCustomGraph() {
         group
       },
       success: function(data) {
-        if (data) {
+        if (data === "created") {
           confirmDialog({
             title: titleExportConfirm,
-            message: data + " " + messageExportConfirm,
+            message: messageExportConfirm,
             hideCancelButton: true,
             onAccept: function() {
               $(
diff --git a/pandora_console/operation/reporting/graph_analytics.php b/pandora_console/operation/reporting/graph_analytics.php
index b85a0cb84d..ff6272bdd6 100644
--- a/pandora_console/operation/reporting/graph_analytics.php
+++ b/pandora_console/operation/reporting/graph_analytics.php
@@ -364,7 +364,11 @@ if (is_ajax()) {
             }
         }
 
-        echo $counter;
+        if ($id_graph > 0) {
+            echo 'created';
+        } else {
+            echo '';
+        }
     }
 
     if (empty($load_list_filters) === false) {
@@ -827,30 +831,31 @@ $left_content .= '
     </div>
     <div class="filters-div-submain">
         <div class="filter-div filters-left-div">
+            <span><b>'.__('Agents').'</b></span>
             <input id="search-left" name="search-left" placeholder="Enter keywords to search" type="search" class="search-graph-analytics">
             <br>
 '.ui_toggle(
-    '',
-    __('Agents'),
-    'agents-toggle',
-    'agents-toggle',
-    true,
-    true,
-    '',
-    'white-box-content',
-    'box-flat white_table_graph',
-    'images/arrow@svg.svg',
-    'images/arrow@svg.svg',
-    false,
-    false,
-    false,
-    '',
-    '',
-    null,
-    null,
-    false,
-    false,
-    'static'
+                '',
+                __('Agents'),
+                'agents-toggle',
+                'agents-toggle',
+                true,
+                true,
+                '',
+                'white-box-content',
+                'box-flat white_table_graph',
+                'images/arrow@svg.svg',
+                'images/arrow@svg.svg',
+                false,
+                false,
+                false,
+                '',
+                '',
+                null,
+                null,
+                false,
+                false,
+                'static'
 ).ui_toggle(
     '',
     __('Groups'),
@@ -898,6 +903,7 @@ $left_content .= '
 ).'
         </div>
         <div class="filter-div filters-right-div ">
+            <span><b>'.__('Modules').'</b></span>
             <input id="search-right" placeholder="Enter keywords to search" type="search" class="search-graph-analytics">
             <input id="search-agent" type="hidden" value="">
             <input id="search-group" type="hidden" value="">
@@ -1000,7 +1006,7 @@ const messageLoadConfirm = "<?php echo __('Error loading filter'); ?>";
 const titleExport = "<?php echo __('Export to custom graph'); ?>";
 
 const titleExportConfirm = "<?php echo __('Exported successfully'); ?>";
-const messageExportConfirm = "<?php echo __('graphs have been created in Custom graphs'); ?>";
+const messageExportConfirm = "<?php echo __('Graph have been created in Custom graphs'); ?>";
 
 const titleExportError = "<?php echo __('Error to export'); ?>";
 const messageExportError = "<?php echo __('Filter cannot be None'); ?>";

From d5c24609d61f7cc38f2b5a8b28db8580a918e4c6 Mon Sep 17 00:00:00 2001
From: daniel <daniel.barbero@artica.es>
Date: Thu, 30 Nov 2023 11:21:54 +0100
Subject: [PATCH 018/231] add tables merge process pandora_enterprise#12352

---
 pandora_console/extras/mr/68.sql | 40 +++++++++++++++++++++++++++++
 pandora_console/pandoradb.sql    | 43 ++++++++++++++++++++++++++++++++
 2 files changed, 83 insertions(+)
 create mode 100644 pandora_console/extras/mr/68.sql

diff --git a/pandora_console/extras/mr/68.sql b/pandora_console/extras/mr/68.sql
new file mode 100644
index 0000000000..999d8e6c3c
--- /dev/null
+++ b/pandora_console/extras/mr/68.sql
@@ -0,0 +1,40 @@
+START TRANSACTION;
+
+DROP TABLE IF EXISTS `tmerge_error`;
+CREATE TABLE IF NOT EXISTS `tmerge_error` (
+    `id` int(10) NOT NULL auto_increment,
+    `id_node` int(10) default 0,
+    `phase` int(10) default 0,
+    `step` int(10) default 0,
+    `msg` LONGTEXT default "",
+    `action` text default "",
+    `utimestamp` int(20) unsigned NOT NULL default 0,
+    PRIMARY KEY  (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4;
+
+DROP TABLE IF EXISTS `tmerge_steps`;
+CREATE TABLE IF NOT EXISTS `tmerge_steps` (
+    `id` int(10) NOT NULL auto_increment,
+    `id_node` int(10) default 0,
+    `phase` int(10) default 0,
+    `total` int(10) default 0,
+    `step` int(10) default 0,
+    `debug` varchar(1024) default "",
+    `action` varchar(100) default "",
+    `affected` varchar(100) default "",
+    `query` mediumtext default "",
+    `utimestamp` int(20) unsigned NOT NULL default 0,
+    PRIMARY KEY  (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4;
+
+DROP TABLE IF EXISTS `tmerge_queries`;
+CREATE TABLE IF NOT EXISTS `tmerge_queries` (
+    `steps` int(10) NOT NULL auto_increment,
+    `action` varchar(100) default "",
+    `affected` varchar(100) default "",
+    `utimestamp` int(20) unsigned NOT NULL default 0,
+    `query` LONGTEXT NOT NULL default "",
+    PRIMARY KEY  (`steps`)
+) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4;
+
+COMMIT;
diff --git a/pandora_console/pandoradb.sql b/pandora_console/pandoradb.sql
index b98f706667..78a7833861 100644
--- a/pandora_console/pandoradb.sql
+++ b/pandora_console/pandoradb.sql
@@ -4534,4 +4534,47 @@ CREATE TABLE IF NOT EXISTS `tpandora_cve` (
     `cvss_score` DOUBLE DEFAULT NULL,
     `cvss_vector` VARCHAR(255) DEFAULT NULL,
 PRIMARY KEY (`cve_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4;
+
+-- ---------------------------------------------------------------------
+-- Table `tmerge_error`
+-- ---------------------------------------------------------------------
+CREATE TABLE IF NOT EXISTS `tmerge_error` (
+    `id` int(10) NOT NULL auto_increment,
+    `id_node` int(10) default 0,
+    `phase` int(10) default 0,
+    `step` int(10) default 0,
+    `msg` LONGTEXT default "",
+    `action` text default "",
+    `utimestamp` int(20) unsigned NOT NULL default 0,
+    PRIMARY KEY  (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4;
+
+-- ---------------------------------------------------------------------
+-- Table `tmerge_steps`
+-- ---------------------------------------------------------------------
+CREATE TABLE IF NOT EXISTS `tmerge_steps` (
+    `id` int(10) NOT NULL auto_increment,
+    `id_node` int(10) default 0,
+    `phase` int(10) default 0,
+    `total` int(10) default 0,
+    `step` int(10) default 0,
+    `debug` varchar(1024) default "",
+    `action` varchar(100) default "",
+    `affected` varchar(100) default "",
+    `query` mediumtext default "",
+    `utimestamp` int(20) unsigned NOT NULL default 0,
+    PRIMARY KEY  (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4;
+
+-- ---------------------------------------------------------------------
+-- Table `tmerge_queries`
+-- ---------------------------------------------------------------------
+CREATE TABLE IF NOT EXISTS `tmerge_queries` (
+    `steps` int(10) NOT NULL auto_increment,
+    `action` varchar(100) default "",
+    `affected` varchar(100) default "",
+    `utimestamp` int(20) unsigned NOT NULL default 0,
+    `query` LONGTEXT NOT NULL default "",
+    PRIMARY KEY  (`steps`)
 ) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4;
\ No newline at end of file

From 6154ce725bbe25a4487a8182183b944c0ed357cd Mon Sep 17 00:00:00 2001
From: Daniel Maya <daniel.maya@pandorafms.com>
Date: Thu, 30 Nov 2023 13:18:44 +0100
Subject: [PATCH 019/231] #12501 Fixed password field

---
 pandora_console/godmode/agentes/agent_manager.php   | 11 +++--------
 pandora_console/godmode/agentes/configure_field.php |  6 ++++++
 pandora_console/include/styles/pandora.css          |  2 +-
 3 files changed, 10 insertions(+), 9 deletions(-)

diff --git a/pandora_console/godmode/agentes/agent_manager.php b/pandora_console/godmode/agentes/agent_manager.php
index 557b855e09..e469c3f155 100644
--- a/pandora_console/godmode/agentes/agent_manager.php
+++ b/pandora_console/godmode/agentes/agent_manager.php
@@ -986,17 +986,12 @@ foreach ($fields as $field) {
     }
 
     if ((bool) $field['is_password_type'] === true) {
-        $customContent = html_print_input_text_extended(
+        $customContent = html_print_input_password(
             'customvalue_'.$field['id_field'],
             $custom_value,
-            'customvalue_'.$field['id_field'],
             '',
-            30,
-            100,
-            $view_mode,
-            '',
-            '',
-            true,
+            45,
+            255,
             true
         );
     } else if ($field['is_link_enabled']) {
diff --git a/pandora_console/godmode/agentes/configure_field.php b/pandora_console/godmode/agentes/configure_field.php
index 839040cb00..904b807bbd 100755
--- a/pandora_console/godmode/agentes/configure_field.php
+++ b/pandora_console/godmode/agentes/configure_field.php
@@ -275,21 +275,27 @@ $(document).ready (function () {
           $('#configure_field-3').show();
           dialog_message("#message_no_set_password");
           $('#configure_field-1').hide();
+          $('#configure_field-2-0').hide();
         }
         else{
           $('#configure_field-3').hide();
           $('#configure_field-1').show();
+          $('#configure_field-2-0').show();
         }
     });
     $('input[type=checkbox][name=is_password_type]').change(function () {
         if( $('input[type=checkbox][name=is_password_type]').prop('checked')){
+            $('#configure_field-1').hide();
             dialog_message("#message_no_set_combo");
             $('#configure_field-3').hide();
+            $('#configure_field-2-1').hide();
         }
         else{
             if($('input[type=checkbox][name=is_combo_enable]').prop('checked') === true) {
                 $('#configure_field-3').show();
             }
+            $('#configure_field-1').show();
+            $('#configure_field-2-1').show();
         }
     });
 });
diff --git a/pandora_console/include/styles/pandora.css b/pandora_console/include/styles/pandora.css
index 384048fa00..75dbb9a6ae 100644
--- a/pandora_console/include/styles/pandora.css
+++ b/pandora_console/include/styles/pandora.css
@@ -11810,7 +11810,7 @@ p.trademark-copyright {
 }
 
 .show-hide-pass {
-  position: fixed;
+  position: absolute;
   border: 0;
   outline: none;
   margin-left: -50px;

From 24c8e606f48751d24ff8832d7ec16eb9bd232cbd Mon Sep 17 00:00:00 2001
From: Daniel Cebrian <daniel.cebrian@pandorafms.com>
Date: Thu, 30 Nov 2023 16:29:18 +0100
Subject: [PATCH 020/231] #12569 fixed button credential boxes

---
 pandora_console/godmode/servers/modificar_server.php | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/pandora_console/godmode/servers/modificar_server.php b/pandora_console/godmode/servers/modificar_server.php
index c51c0476d3..03863fb4f5 100644
--- a/pandora_console/godmode/servers/modificar_server.php
+++ b/pandora_console/godmode/servers/modificar_server.php
@@ -521,7 +521,7 @@ $(document).ready (function () {
             function (data) {
                 $(".white-box-content").html(data);
 
-                $("#submit-add").click(function (e) {
+                $("#button-add").click(function (e) {
                     add_credential_boxes();
                 });
 
@@ -550,7 +550,7 @@ $(document).ready (function () {
                 $(".white-box-content").html(data2);
 
                 // Insert credential
-                $("#submit-add").click(function (e) {
+                $("#button-add").click(function (e) {
                     save_credential_boxes();
                 })
             },

From 9da2ad8682b69f929e97dfdb27ce2017d79ff25c Mon Sep 17 00:00:00 2001
From: daniel <daniel.barbero@artica.es>
Date: Fri, 1 Dec 2023 09:26:48 +0100
Subject: [PATCH 021/231] add tables merge process pandora_enterprise#12352

---
 pandora_console/extras/mr/68.sql | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/pandora_console/extras/mr/68.sql b/pandora_console/extras/mr/68.sql
index 999d8e6c3c..c0e5788091 100644
--- a/pandora_console/extras/mr/68.sql
+++ b/pandora_console/extras/mr/68.sql
@@ -1,6 +1,5 @@
 START TRANSACTION;
 
-DROP TABLE IF EXISTS `tmerge_error`;
 CREATE TABLE IF NOT EXISTS `tmerge_error` (
     `id` int(10) NOT NULL auto_increment,
     `id_node` int(10) default 0,
@@ -12,7 +11,8 @@ CREATE TABLE IF NOT EXISTS `tmerge_error` (
     PRIMARY KEY  (`id`)
 ) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4;
 
-DROP TABLE IF EXISTS `tmerge_steps`;
+ALTER TABLE `tmerge_error` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;
+
 CREATE TABLE IF NOT EXISTS `tmerge_steps` (
     `id` int(10) NOT NULL auto_increment,
     `id_node` int(10) default 0,
@@ -27,7 +27,8 @@ CREATE TABLE IF NOT EXISTS `tmerge_steps` (
     PRIMARY KEY  (`id`)
 ) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4;
 
-DROP TABLE IF EXISTS `tmerge_queries`;
+ALTER TABLE `tmerge_steps` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;
+
 CREATE TABLE IF NOT EXISTS `tmerge_queries` (
     `steps` int(10) NOT NULL auto_increment,
     `action` varchar(100) default "",
@@ -37,4 +38,6 @@ CREATE TABLE IF NOT EXISTS `tmerge_queries` (
     PRIMARY KEY  (`steps`)
 ) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4;
 
+ALTER TABLE `tmerge_queries` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;
+
 COMMIT;

From 87f4a6e15fc66c6840afc1d1867f27df6e1158e7 Mon Sep 17 00:00:00 2001
From: Daniel Maya <daniel.maya@pandorafms.com>
Date: Fri, 1 Dec 2023 10:08:25 +0100
Subject: [PATCH 022/231] #12384 Fixed acl

---
 .../javascript/functions_pandora_networkmap.js       | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/pandora_console/include/javascript/functions_pandora_networkmap.js b/pandora_console/include/javascript/functions_pandora_networkmap.js
index c31216a2fc..44e3ba196c 100644
--- a/pandora_console/include/javascript/functions_pandora_networkmap.js
+++ b/pandora_console/include/javascript/functions_pandora_networkmap.js
@@ -806,6 +806,10 @@ function edit_node(data_node, dblClick) {
   var flag_edit_node = true;
   var edit_node = null;
 
+  if (networkmap_write === 0) {
+    return false;
+  }
+
   //Only select one node
   var selection = d3_nm.selectAll(".node_selected");
   var id;
@@ -1950,6 +1954,10 @@ function init_minimap() {
 // Context menu
 ////////////////////////////////////////////////////////////////////////
 function show_menu(item, data) {
+  if (networkmap_write === 0) {
+    return false;
+  }
+
   mouse = [];
   mouse[0] = d3_nm.event.pageX;
   mouse[1] = d3_nm.event.pageY;
@@ -2819,6 +2827,10 @@ function cancel_set_parent() {
 // OWN CODE FOR TO DRAG
 ////////////////////////////////////////////////////////////////////////
 function init_drag_and_drop() {
+  if (networkmap_write === 0) {
+    return false;
+  }
+
   window.dragables = svg.selectAll(".dragable_node");
 
   window.drag_start = [0, 0];

From 5191739658e4dd3849d8090524a10697263f798a Mon Sep 17 00:00:00 2001
From: Jorge Rincon <jorge.rincon@pandorafms.com>
Date: Fri, 1 Dec 2023 12:05:42 +0100
Subject: [PATCH 023/231] #12542 fixed local component module group

---
 pandora_console/include/javascript/pandora_modules.js | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/pandora_console/include/javascript/pandora_modules.js b/pandora_console/include/javascript/pandora_modules.js
index 4e2f73db28..a126bc36f5 100644
--- a/pandora_console/include/javascript/pandora_modules.js
+++ b/pandora_console/include/javascript/pandora_modules.js
@@ -159,7 +159,9 @@ function configure_modules_form() {
           period_select_update("module_interval", data["module_interval"]);
         }
 
-        $("#id_module_group").val(data["id_module_group"]);
+        $("#id_module_group")
+          .val(data["id_module_group"])
+          .trigger("change");
 
         if (data["history_data"]) $("#checkbox-history_data").check();
         else $("#checkbox-history_data").uncheck();

From cc1c138552271abbcf2804f6bce13e46dc19df73 Mon Sep 17 00:00:00 2001
From: Jorge Rincon <jorge.rincon@pandorafms.com>
Date: Mon, 4 Dec 2023 11:23:43 +0100
Subject: [PATCH 024/231] #12518 Fixed up custom field type link

---
 pandora_console/operation/agentes/estado_generalagente.php | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/pandora_console/operation/agentes/estado_generalagente.php b/pandora_console/operation/agentes/estado_generalagente.php
index dd4effe693..6e6615df51 100755
--- a/pandora_console/operation/agentes/estado_generalagente.php
+++ b/pandora_console/operation/agentes/estado_generalagente.php
@@ -298,8 +298,9 @@ foreach ($fields as $field) {
         if ($custom_value[0]['is_password_type']) {
                 $data[1] = '&bull;&bull;&bull;&bull;&bull;&bull;&bull;&bull;';
         } else if ($field['is_link_enabled'] === '1') {
-            list($link_text, $link_url) = json_decode($custom_value[0]['description'], true);
-
+            $custom_link_type = io_safe_output($custom_value[0]['description']);
+            $custom_link_type = json_decode($custom_link_type);
+            list($link_text, $link_url) = $custom_link_type;
             if (json_last_error() !== JSON_ERROR_NONE) {
                 $link_text = '';
                 $link_url = '';
@@ -309,7 +310,7 @@ foreach ($fields as $field) {
                 $link_text = $link_url;
             }
 
-            $data[1] = '<a href="'.$link_url.'">'.$link_text.'</a>';
+            $data[1] = '<a target="_blank" href="'.$link_url.'">'.$link_text.'</a>';
         } else {
             $custom_value[0]['description'] = ui_bbcode_to_html($custom_value[0]['description']);
             $data[1] = $custom_value[0]['description'];

From 8a92b39eee596013fc4b95eedd425e5fe599999e Mon Sep 17 00:00:00 2001
From: daniel <daniel.barbero@artica.es>
Date: Mon, 4 Dec 2023 11:59:31 +0100
Subject: [PATCH 025/231] add new filters widget modules status
 pandora_enterprise#12267

---
 pandora_console/include/ajax/module.php       |  33 +++
 .../lib/Dashboard/Widgets/ModulesByStatus.php | 278 +++++++-----------
 2 files changed, 145 insertions(+), 166 deletions(-)

diff --git a/pandora_console/include/ajax/module.php b/pandora_console/include/ajax/module.php
index e4eba79858..c3e099f0cb 100755
--- a/pandora_console/include/ajax/module.php
+++ b/pandora_console/include/ajax/module.php
@@ -1851,6 +1851,8 @@ if (check_login()) {
 
         $table_id = get_parameter('table_id', '');
         $search = get_parameter('search', '');
+        $search_agent = get_parameter('search_agent', '');
+        $groupId = (int) get_parameter('groupId', 0);
         $module_name = get_parameter('module_name', '');
         $status = get_parameter('status', '');
         $start = get_parameter('start', 0);
@@ -1862,13 +1864,36 @@ if (check_login()) {
         $nodes = get_parameter('nodes', 0);
         $disabled_modules = (bool) get_parameter('disabled_modules', false);
 
+        $groups_array = [];
+        if ($groupId === 0) {
+            if (users_can_manage_group_all('AR') === false) {
+                $groups_array = users_get_groups(false, 'AR', false);
+            }
+        } else {
+            $groups_array = [$groupId];
+        }
+
         $where = '1=1';
         $recordsTotal = 0;
 
+        if (empty($groups_array) === false) {
+            $where .= sprintf(
+                ' AND (tagente.id_grupo IN (%s)
+                    OR tagent_secondary_group.id_group IN(%s))',
+                implode(',', $groups_array),
+                implode(',', $groups_array)
+            );
+        }
+
+
         if (empty($search) === false) {
             $where .= ' AND tagente_modulo.nombre LIKE "%%'.$search.'%%"';
         }
 
+        if (empty($search_agent) === false) {
+            $where .= ' AND tagente.alias LIKE "%%'.$search_agent.'%%"';
+        }
+
         if (str_contains($status, '6') === true) {
             $expl = explode(',', $status);
             $exist = array_search('6', $expl);
@@ -1943,6 +1968,8 @@ if (check_login()) {
                     ON tagente_modulo.id_agente = tagente.id_agente 
                 INNER JOIN tagente_estado
                     ON tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo
+                LEFT JOIN tagent_secondary_group
+					ON tagente.id_agente = tagent_secondary_group.id_agent
                 WHERE %s
                 ORDER BY %s
                 LIMIT %d, %d',
@@ -1960,6 +1987,8 @@ if (check_login()) {
                     ON tagente_modulo.id_agente = tagente.id_agente 
                 INNER JOIN tagente_estado
                     ON tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo
+                LEFT JOIN tagent_secondary_group
+					ON tagente.id_agente = tagent_secondary_group.id_agent
                 WHERE %s',
                 $where
             );
@@ -1987,6 +2016,8 @@ if (check_login()) {
                             ON tagente_modulo.id_agente = tagente.id_agente 
                         INNER JOIN tagente_estado
                             ON tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo
+                        LEFT JOIN tagent_secondary_group
+					        ON tagente.id_agente = tagent_secondary_group.id_agent
                         WHERE %s',
                         $where
                     );
@@ -2019,6 +2050,8 @@ if (check_login()) {
                         ON tagente_modulo.id_agente = tagente.id_agente 
                     INNER JOIN tagente_estado
                         ON tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo
+                    LEFT JOIN tagent_secondary_group
+					    ON tagente.id_agente = tagent_secondary_group.id_agent
                     WHERE %s',
                     $where
                 );
diff --git a/pandora_console/include/lib/Dashboard/Widgets/ModulesByStatus.php b/pandora_console/include/lib/Dashboard/Widgets/ModulesByStatus.php
index e490135734..86a6cde7ed 100644
--- a/pandora_console/include/lib/Dashboard/Widgets/ModulesByStatus.php
+++ b/pandora_console/include/lib/Dashboard/Widgets/ModulesByStatus.php
@@ -200,6 +200,14 @@ class ModulesByStatus extends Widget
         // Retrieve global - common inputs.
         $values = parent::decoders($decoder);
 
+        if (isset($decoder['groupId']) === true) {
+            $values['groupId'] = $decoder['groupId'];
+        }
+
+        if (isset($decoder['search_agent']) === true) {
+            $values['search_agent'] = $decoder['search_agent'];
+        }
+
         if (isset($decoder['search']) === true) {
             $values['search'] = $decoder['search'];
         }
@@ -240,9 +248,39 @@ class ModulesByStatus extends Widget
         // Retrieve global - common inputs.
         $inputs = parent::getFormInputs();
 
+        $return_all_group = false;
+        if (users_can_manage_group_all('RM') || $values['groupId'] == 0) {
+            $return_all_group = true;
+        }
+
+        // Groups.
+        $inputs[] = [
+            'label'     => __('Group'),
+            'arguments' => [
+                'type'           => 'select_groups',
+                'name'           => 'groupId',
+                'returnAllGroup' => $return_all_group,
+                'privilege'      => 'AR',
+                'selected'       => $values['groupId'],
+                'return'         => true,
+            ],
+        ];
+
+        // Search Agent.
+        $inputs[] = [
+            'label'     => __('Search agent').ui_print_help_tip(__('Search filter by Agent name field content'), true),
+            'arguments' => [
+                'name'   => 'search_agent',
+                'type'   => 'text',
+                'value'  => $values['search_agent'],
+                'return' => true,
+                'size'   => 0,
+            ],
+        ];
+
         // Search.
         $inputs[] = [
-            'label'     => __('Free search').ui_print_help_tip(__('Search filter by Module name field content'), true),
+            'label'     => __('Search module').ui_print_help_tip(__('Search filter by Module name field content'), true),
             'arguments' => [
                 'name'   => 'search',
                 'type'   => 'text',
@@ -373,7 +411,9 @@ class ModulesByStatus extends Widget
         // Retrieve global - common inputs.
         $values = parent::getPost();
 
+        $values['groupId'] = \get_parameter('groupId', 0);
         $values['search'] = \get_parameter('search', '');
+        $values['search_agent'] = \get_parameter('search_agent', '');
         $values['status'] = \get_parameter('status', '');
         $values['limit'] = \get_parameter('limit', '');
         $values['nodes'] = \get_parameter('nodes', '');
@@ -386,173 +426,73 @@ class ModulesByStatus extends Widget
     /**
      * Draw widget.
      *
-     * @return string;
+     * @return void Html output;
      */
     public function load()
     {
-        $this->size = parent::getSize();
+        // Datatables list.
+        try {
+            $info_columns = $this->columns();
+            $column_names = $info_columns['column_names'];
+            $columns = $info_columns['columns'];
+            $hash = get_parameter('auth_hash', '');
+            $id_user = get_parameter('id_user', '');
 
-        global $config;
-
-        $output = '';
-
-        if (is_metaconsole() === true) {
-            $modules = [];
-
-            $servers_ids = array_column(metaconsole_get_servers(), 'id');
-
-            foreach ($servers_ids as $server_id) {
-                try {
-                    $node = new Node((int) $server_id);
-
-                    $node->connect();
-                    $modules_tmp = $this->getInfoModules(
-                        $this->values['search'],
-                        $this->values['status'],
-                        $this->values['nodes']
-                    );
-                    $modules[$node->id()] = $modules_tmp[0];
-                    $node->disconnect();
-                } catch (\Exception $e) {
-                    // Unexistent modules.
-                    $node->disconnect();
-                }
-            }
-        } else {
-            $modules = $this->getInfoModules(
-                $this->values['search'],
-                $this->values['status']
+            $tableId = 'ModuleByStatus_'.$this->dashboardId.'_'.$this->cellId;
+            // Load datatables user interface.
+            ui_print_datatable(
+                [
+                    'id'                 => $tableId,
+                    'class'              => 'info_table align-left-important',
+                    'style'              => 'width: 100%',
+                    'columns'            => $columns,
+                    'column_names'       => $column_names,
+                    'ajax_url'           => 'include/ajax/module',
+                    'ajax_data'          => [
+                        'get_data_ModulesByStatus' => 1,
+                        'table_id'                 => $tableId,
+                        'search_agent'             => $this->values['search_agent'],
+                        'search'                   => $this->values['search'],
+                        'groupId'                  => $this->values['groupId'],
+                        'status'                   => $this->values['status'],
+                        'nodes'                    => $this->values['nodes'],
+                        'disabled_modules'         => $this->values['disabled_modules'],
+                        'auth_hash'                => $hash,
+                        'auth_class'               => 'PandoraFMS\Dashboard\Manager',
+                        'id_user'                  => $id_user,
+                    ],
+                    'default_pagination' => $this->values['limit'],
+                    'order'              => [
+                        'field'     => 'last_status_change',
+                        'direction' => 'desc',
+                    ],
+                    'csv'                => 0,
+                    'pagination_options' => [
+                        [
+                            5,
+                            10,
+                            25,
+                            100,
+                            200,
+                            500,
+                            1000,
+                        ],
+                        [
+                            5,
+                            10,
+                            25,
+                            100,
+                            200,
+                            500,
+                            1000,
+                        ],
+                    ],
+                    'dom_elements'       => 'frtilp',
+                ]
             );
+        } catch (\Exception $e) {
+            echo $e->getMessage();
         }
-
-        if ($modules !== false && empty($modules) === false) {
-            // Datatables list.
-            try {
-                $info_columns = $this->columns();
-                $column_names = $info_columns['column_names'];
-                $columns = $info_columns['columns'];
-                $hash = get_parameter('auth_hash', '');
-                $id_user = get_parameter('id_user', '');
-
-                $tableId = 'ModuleByStatus_'.$this->dashboardId.'_'.$this->cellId;
-                // Load datatables user interface.
-                ui_print_datatable(
-                    [
-                        'id'                 => $tableId,
-                        'class'              => 'info_table align-left-important',
-                        'style'              => 'width: 100%',
-                        'columns'            => $columns,
-                        'column_names'       => $column_names,
-                        'ajax_url'           => 'include/ajax/module',
-                        'ajax_data'          => [
-                            'get_data_ModulesByStatus' => 1,
-                            'table_id'                 => $tableId,
-                            'search'                   => $this->values['search'],
-                            'status'                   => $this->values['status'],
-                            'nodes'                    => $this->values['nodes'],
-                            'disabled_modules'         => $this->values['disabled_modules'],
-                            'auth_hash'                => $hash,
-                            'auth_class'               => 'PandoraFMS\Dashboard\Manager',
-                            'id_user'                  => $id_user,
-                        ],
-                        'default_pagination' => $this->values['limit'],
-                        'order'              => [
-                            'field'     => 'last_status_change',
-                            'direction' => 'desc',
-                        ],
-                        'csv'                => 0,
-                        'pagination_options' => [
-                            [
-                                5,
-                                10,
-                                25,
-                                100,
-                                200,
-                                500,
-                                1000,
-                            ],
-                            [
-                                5,
-                                10,
-                                25,
-                                100,
-                                200,
-                                500,
-                                1000,
-                            ],
-                        ],
-                        'dom_elements'       => 'frtilp',
-                    ]
-                );
-            } catch (\Exception $e) {
-                echo $e->getMessage();
-            }
-        } else {
-            $output = '';
-            $output .= '<div class="container-center">';
-            $output .= \ui_print_info_message(
-                __('Not found modules'),
-                '',
-                true
-            );
-            $output .= '</div>';
-
-            return $output;
-        }
-    }
-
-
-    /**
-     * Get info modules.
-     *
-     * @param string $search Free search.
-     * @param string $status Modules status.
-     *
-     * @return array Data.
-     */
-    private function getInfoModules(string $search, string $status): array
-    {
-        if (empty($search) === false) {
-            $where = 'tagente_modulo.nombre LIKE "%%'.$search.'%%" AND ';
-        }
-
-        if (str_contains($status, '6') === true) {
-            $expl = explode(',', $status);
-            $exist = array_search('6', $expl);
-            if (isset($exist) === true) {
-                unset($expl[$exist]);
-            }
-
-            array_push($expl, '1', '2');
-
-            $status = implode(',', $expl);
-        }
-
-        $where .= sprintf(
-            'tagente_estado.estado IN (%s)
-            AND tagente_modulo.delete_pending = 0',
-            $status
-        );
-
-        $sql = sprintf(
-            'SELECT
-            COUNT(*) AS "modules"
-            FROM tagente_modulo
-            INNER JOIN tagente
-                ON tagente_modulo.id_agente = tagente.id_agente 
-            INNER JOIN tagente_estado
-                ON tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo
-            WHERE %s',
-            $where
-        );
-
-        $modules = db_get_all_rows_sql($sql);
-
-        if ($modules === false) {
-            $modules = [];
-        }
-
-        return $modules;
     }
 
 
@@ -579,7 +519,10 @@ class ModulesByStatus extends Widget
                 'nombre',
                 'alias',
                 'server_name',
-                'last_status_change',
+                [
+                    'text'  => 'last_status_change',
+                    'class' => 'flex-column',
+                ],
                 'estado',
             ];
         } else {
@@ -593,7 +536,10 @@ class ModulesByStatus extends Widget
             $columns = [
                 'nombre',
                 'alias',
-                'last_status_change',
+                [
+                    'text'  => 'last_status_change',
+                    'class' => 'flex-column',
+                ],
                 'estado',
             ];
         }
@@ -642,12 +588,12 @@ class ModulesByStatus extends Widget
             $height_counter = (((int) count($nodes_fields)) * 20);
 
             $size = [
-                'width'  => 450,
+                'width'  => 470,
                 'height' => (520 + $height_counter),
             ];
         } else {
             $size = [
-                'width'  => 450,
+                'width'  => 470,
                 'height' => 480,
             ];
         }

From 706540f94733999a3aeb6a0feacf9189aa6000d6 Mon Sep 17 00:00:00 2001
From: Jorge Rincon <jorge.rincon@pandorafms.com>
Date: Mon, 4 Dec 2023 15:12:33 +0100
Subject: [PATCH 026/231] #12598 Fixed event filter deleted and assigned as
 favorite

---
 pandora_console/godmode/events/event_filter.php | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/pandora_console/godmode/events/event_filter.php b/pandora_console/godmode/events/event_filter.php
index c4f1860e6f..fce8163ad0 100644
--- a/pandora_console/godmode/events/event_filter.php
+++ b/pandora_console/godmode/events/event_filter.php
@@ -88,7 +88,17 @@ if ($multiple_delete) {
             ['id_filter' => $id]
         );
 
-        if ($result === false) {
+        if ($result !== false) {
+            db_process_sql_delete(
+                'tfavmenu_user',
+                [
+                    'id_element' => $id,
+                    'section'    => 'Events',
+                    'id_user'    => $config['id_user'],
+                ]
+            );
+            $result = true;
+        } else {
             break;
         }
     }

From 6e68e04027e999cbd052e90e9d1349ba09b74b74 Mon Sep 17 00:00:00 2001
From: daniel <daniel.barbero@artica.es>
Date: Mon, 4 Dec 2023 16:34:03 +0100
Subject: [PATCH 027/231] quit pagebreak pandora_enterprise#11605

---
 pandora_console/include/functions_reporting.php | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/pandora_console/include/functions_reporting.php b/pandora_console/include/functions_reporting.php
index dce7dd9efc..72c6fbd642 100755
--- a/pandora_console/include/functions_reporting.php
+++ b/pandora_console/include/functions_reporting.php
@@ -15847,8 +15847,8 @@ function reporting_translate_sla_status_for_graph($status)
  */
 function reporting_header_table_for_pdf($title='', $description='')
 {
-    $result_pdf = '<pagebreak>';
-    $result_pdf .= '<table class="header_table databox">';
+    // $result_pdf = '<pagebreak>';
+    $result_pdf = '<table class="header_table databox">';
     $result_pdf .= '<thead class="header_tr"><tr>';
     $result_pdf .= '<th class="th_first" colspan="2">';
     $result_pdf .= $title;

From c22525febc900abd3bc54ed291b03ebf6e735a19 Mon Sep 17 00:00:00 2001
From: Daniel Cebrian <daniel.cebrian@pandorafms.com>
Date: Mon, 4 Dec 2023 16:54:14 +0100
Subject: [PATCH 028/231] #12569 fixed actions credential boxes

---
 pandora_console/godmode/servers/modificar_server.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pandora_console/godmode/servers/modificar_server.php b/pandora_console/godmode/servers/modificar_server.php
index 03863fb4f5..8a78de9592 100644
--- a/pandora_console/godmode/servers/modificar_server.php
+++ b/pandora_console/godmode/servers/modificar_server.php
@@ -609,7 +609,7 @@ $(document).ready (function () {
             function (data) {
                 $(".white-box-content").html(data);
 
-                $("#submit-update").click(function (e) {
+                $("#button-update").click(function (e) {
                     update_credential_boxes(datas);
                 });
             },

From abfa08b6e0d7b6e699154f994bfd9b526f58b746 Mon Sep 17 00:00:00 2001
From: Jorge Rincon <jorge.rincon@pandorafms.com>
Date: Thu, 7 Dec 2023 10:25:11 +0100
Subject: [PATCH 029/231] #12577 fixed visual error of the dynamic threshold ff
 threshold and cron from module containers

---
 .../agentes/module_manager_editor_common.php        | 13 +++++++++----
 pandora_console/include/styles/pandora.css          |  8 ++++++++
 2 files changed, 17 insertions(+), 4 deletions(-)

diff --git a/pandora_console/godmode/agentes/module_manager_editor_common.php b/pandora_console/godmode/agentes/module_manager_editor_common.php
index c396634f67..2cf295aabf 100644
--- a/pandora_console/godmode/agentes/module_manager_editor_common.php
+++ b/pandora_console/godmode/agentes/module_manager_editor_common.php
@@ -1122,13 +1122,13 @@ if (isset($id_agente) === true && (int) $moduletype === MODULE_DATA) {
     $tableCron->data['cron_to_select'][0] = html_print_extended_select_for_cron($hour_to, $minute_to, $mday_to, $month_to, $wday_to, true, $disabledBecauseInPolicy, true);
 }
 
-$table_advanced->rowclass['cron_section'] = 'table_section full_section';
+$table_advanced->rowclass['cron_section'] = 'table_section full_section mrgn_top_mod_0px';
 $table_advanced->data['cron_section'] = html_print_table($tableCron, true);
 
 $table_advanced->data['title_3'] = html_print_subtitle_table(__('Thresholds and state changes'));
 
 $table_advanced->rowclass['caption_min_max_values'] = 'w50p pdd_t_10px';
-$table_advanced->rowclass['min_max_values'] = 'w50p';
+$table_advanced->rowclass['min_max_values'] = 'w50p pdd_b_10px';
 $table_advanced->data['caption_min_max_values'][0] = __('Min. Value');
 $table_advanced->data['caption_min_max_values'][1] = __('Max. Value');
 
@@ -1205,7 +1205,7 @@ $tableDynamicThreshold->data['adv_dynamic_threshold_twotailed'][0] = html_print_
     $disabledBecauseInPolicy
 );
 
-$table_advanced->rowclass['dynamic_threshold_table'] = 'table_section full_section';
+$table_advanced->rowclass['dynamic_threshold_table'] = 'table_section full_section mrgn_top_mod_0px';
 $table_advanced->data['dynamic_threshold_table'] = html_print_table($tableDynamicThreshold, true);
 
 $tableFFThreshold = new stdClass();
@@ -1295,10 +1295,15 @@ $tableFFThreshold->data['ff_thresholds_each'][2] = html_print_input_text(
     $classdisabledBecauseInPolicy
 );
 
+$table_advanced->rowclass['gap_flipflop'] = 'mrgn_top_btn_10px_imp';
+$table_advanced->data['gap_flipflop'] = html_print_input_hidden('gap_flipflop', 0);
 
-$table_advanced->rowclass['flipflop_thresholds_table'] = 'table_section full_section';
+$table_advanced->rowclass['flipflop_thresholds_table'] = 'table_section full_section mrgn_top_mod_0px';
 $table_advanced->data['flipflop_thresholds_table'] = html_print_table($tableFFThreshold, true);
 
+$table_advanced->rowclass['gap_ff'] = 'mrgn_top_btn_10px_imp';
+$table_advanced->data['gap_ff'] = html_print_input_hidden('gap_ff', 0);
+
 $table_advanced->rowclass['caption_ff_interval_timeout'] = 'w50p';
 $table_advanced->rowclass['ff_interval_timeout'] = 'w50p';
 $table_advanced->cellclass['caption_ff_interval_timeout'][0] = 'w50p';
diff --git a/pandora_console/include/styles/pandora.css b/pandora_console/include/styles/pandora.css
index d8f7dd9416..3215aefabf 100644
--- a/pandora_console/include/styles/pandora.css
+++ b/pandora_console/include/styles/pandora.css
@@ -7056,6 +7056,10 @@ div.graph div.legend table {
   margin: 0 1em 0 2em;
 }
 
+.mrgn_top_btn_10px_imp {
+  margin: 10px 0 10px 0 !important;
+}
+
 /*
 * MARGIN LEFT
 */
@@ -7217,6 +7221,10 @@ div.graph div.legend table {
   margin-top: 0px;
 }
 
+.mrgn_top_mod_0px {
+  margin-top: 0px !important;
+}
+
 .mrgn_top_5px {
   margin-top: 5px;
 }

From 3d635449398886bf4392cdd6ead6422744211480 Mon Sep 17 00:00:00 2001
From: "alejandro.campos@artica.es" <alejandro.campos@artica.es>
Date: Thu, 7 Dec 2023 14:14:12 +0100
Subject: [PATCH 030/231] get data in file count from module

---
 .../include/class/ConsoleSupervisor.php       | 20 ++++++++++++++-----
 1 file changed, 15 insertions(+), 5 deletions(-)

diff --git a/pandora_console/include/class/ConsoleSupervisor.php b/pandora_console/include/class/ConsoleSupervisor.php
index 83208256fb..e34740711e 100644
--- a/pandora_console/include/class/ConsoleSupervisor.php
+++ b/pandora_console/include/class/ConsoleSupervisor.php
@@ -27,6 +27,7 @@
  */
 
 use PandoraFMS\Tools\Files;
+use PandoraFMS\Agent;
 
 global $config;
 
@@ -1162,11 +1163,20 @@ class ConsoleSupervisor
             $this->cleanNotifications('NOTIF.WRITABLE.ATTACHMENT');
         }
 
-        $filecount = $this->countFiles(
-            $config['attachment_store'],
-            '',
-            $config['num_files_attachment']
-        );
+        $agentId = db_get_value('id_agente', 'tagente', 'nombre', 'pandora.internals');
+        if ($agentId !== false) {
+            $agent = new Agent($agentId);
+
+            $moduleId = $agent->searchModules(
+                ['nombre' => 'Data_in_files'],
+                1
+            )->toArray()['id_agente_modulo'];
+
+            if ($moduleId > 0) {
+                $filecount = (int) modules_get_last_value($moduleId);
+            }
+        }
+
         if ($filecount > $config['num_files_attachment']) {
             $this->notify(
                 [

From 2eae64407d4645cd8bc4eeb73a14005c4aac62fe Mon Sep 17 00:00:00 2001
From: "alejandro.campos@artica.es" <alejandro.campos@artica.es>
Date: Thu, 7 Dec 2023 14:17:42 +0100
Subject: [PATCH 031/231] get data in file count from module

---
 pandora_console/include/class/ConsoleSupervisor.php | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/pandora_console/include/class/ConsoleSupervisor.php b/pandora_console/include/class/ConsoleSupervisor.php
index e34740711e..a7676d4b40 100644
--- a/pandora_console/include/class/ConsoleSupervisor.php
+++ b/pandora_console/include/class/ConsoleSupervisor.php
@@ -1163,6 +1163,8 @@ class ConsoleSupervisor
             $this->cleanNotifications('NOTIF.WRITABLE.ATTACHMENT');
         }
 
+        $filecount = 0;
+
         $agentId = db_get_value('id_agente', 'tagente', 'nombre', 'pandora.internals');
         if ($agentId !== false) {
             $agent = new Agent($agentId);

From 8d4e3e78a30369be7b834a5ac8f0934e4a720eb1 Mon Sep 17 00:00:00 2001
From: Jorge Rincon <jorge.rincon@pandorafms.com>
Date: Thu, 7 Dec 2023 16:00:42 +0100
Subject: [PATCH 032/231] #12579 fixed icons as buttons in action on satellite
 server agents

---
 .../include/class/SatelliteAgent.class.php    | 40 ++++++++++++-------
 1 file changed, 26 insertions(+), 14 deletions(-)

diff --git a/pandora_console/include/class/SatelliteAgent.class.php b/pandora_console/include/class/SatelliteAgent.class.php
index 29fa2e3b77..09b023958d 100644
--- a/pandora_console/include/class/SatelliteAgent.class.php
+++ b/pandora_console/include/class/SatelliteAgent.class.php
@@ -388,26 +388,38 @@ class SatelliteAgent extends HTML
                         $tmp->actions = '';
 
                         if ($delete === false) {
-                            $tmp->actions .= html_print_image(
-                                ($disable === true) ? 'images/lightbulb_off.png' : 'images/lightbulb.png',
-                                true,
+                            $tmp->actions .= html_print_anchor(
                                 [
-                                    'border'  => '0',
-                                    'class'   => 'main_menu_icon mrgn_lft_05em invert_filter',
-                                    'onclick' => 'disable_agent(\''.$tmp->address.'\',\''.strip_tags($tmp->name).'\',\''.(int) $disable.'\',\''.$id_agente.'\')',
-                                ]
+                                    'href'    => '#',
+                                    'content' => html_print_image(
+                                        ($disable === true) ? 'images/lightbulb_off.png' : 'images/lightbulb.png',
+                                        true,
+                                        [
+                                            'border'  => '0',
+                                            'class'   => 'main_menu_icon mrgn_lft_05em invert_filter',
+                                            'onclick' => 'disable_agent(\''.$tmp->address.'\',\''.strip_tags($tmp->name).'\',\''.(int) $disable.'\',\''.$id_agente.'\')',
+                                        ]
+                                    ),
+                                ],
+                                true
                             );
                         }
 
                         if ($disable === false) {
-                            $tmp->actions .= html_print_image(
-                                ($delete === true) ? 'images/add.png' : 'images/delete.svg',
-                                true,
+                            $tmp->actions .= html_print_anchor(
                                 [
-                                    'border'  => '0',
-                                    'class'   => 'main_menu_icon mrgn_lft_05em invert_filter',
-                                    'onclick' => 'delete_agent(\''.$tmp->address.'\',\''.strip_tags($tmp->name).'\',\''.(int) $delete.'\',\''.$id_agente.'\')',
-                                ]
+                                    'href'    => '#',
+                                    'content' => html_print_image(
+                                        ($delete === true) ? 'images/add.png' : 'images/delete.svg',
+                                        true,
+                                        [
+                                            'border'  => '0',
+                                            'class'   => 'main_menu_icon mrgn_lft_05em invert_filter',
+                                            'onclick' => 'delete_agent(\''.$tmp->address.'\',\''.strip_tags($tmp->name).'\',\''.(int) $delete.'\',\''.$id_agente.'\')',
+                                        ]
+                                    ),
+                                ],
+                                true
                             );
                         }
 

From 7258188491d814791015a663c1396e7353d88417 Mon Sep 17 00:00:00 2001
From: daniel <daniel.barbero@artica.es>
Date: Mon, 11 Dec 2023 11:01:53 +0100
Subject: [PATCH 033/231] remove agents bulk operation pandora_enterprise#12299

---
 .../godmode/massive/massive_delete_agents.php    | 16 ++++++++++------
 pandora_console/include/functions_api.php        | 10 +++++++++-
 2 files changed, 19 insertions(+), 7 deletions(-)

diff --git a/pandora_console/godmode/massive/massive_delete_agents.php b/pandora_console/godmode/massive/massive_delete_agents.php
index 1dc6397cc6..88d7e54ccb 100755
--- a/pandora_console/godmode/massive/massive_delete_agents.php
+++ b/pandora_console/godmode/massive/massive_delete_agents.php
@@ -46,6 +46,7 @@ require_once $config['homedir'].'/include/functions_alerts.php';
 require_once $config['homedir'].'/include/functions_modules.php';
 require_once $config['homedir'].'/include/functions_users.php';
 require_once $config['homedir'].'/include/functions_massive_operations.php';
+enterprise_include_once('include/functions_agents.php');
 
 
 /**
@@ -71,12 +72,15 @@ function process_manage_delete($id_agents)
             $array_id = explode('|', $id_agent);
             try {
                 $node = new Node((int) $array_id[0]);
-                $node->connect();
-
-                $agent = new Agent((int) $array_id[1]);
-                $success = $agent->delete();
-
-                $node->disconnect();
+                $api_call_delete = $node->callApi(
+                    'delete_agent',
+                    'set',
+                    (int) $array_id[1],
+                    null,
+                    ['2'],
+                    null,
+                    true
+                );
 
                 $success = agent_delete_from_metaconsole(
                     $array_id[1],
diff --git a/pandora_console/include/functions_api.php b/pandora_console/include/functions_api.php
index 8f5fb66f54..7a06156fb4 100644
--- a/pandora_console/include/functions_api.php
+++ b/pandora_console/include/functions_api.php
@@ -2266,9 +2266,12 @@ function api_set_delete_agent($id, $thrash1, $other, $returnType)
     }
 
     $agent_by_alias = false;
+    $agent_by_id = false;
 
     if ($other['data'][0] === '1') {
         $agent_by_alias = true;
+    } else if ($other['data'][0] === '2') {
+        $agent_by_id = true;
     }
 
     if (is_metaconsole()) {
@@ -2331,7 +2334,12 @@ function api_set_delete_agent($id, $thrash1, $other, $returnType)
                 }
             }
         } else {
-            $idAgent = agents_get_agent_id($id, false);
+            if ($agent_by_id === true) {
+                $idAgent = $id;
+            } else {
+                $idAgent = agents_get_agent_id($id, false);
+            }
+
             if (!util_api_check_agent_and_print_error($idAgent, 'string', 'AD')) {
                 return;
             }

From 812e47603e5e08c492ed9b43c1af0150d2b07d4a Mon Sep 17 00:00:00 2001
From: "alejandro.campos@artica.es" <alejandro.campos@artica.es>
Date: Mon, 11 Dec 2023 18:05:58 +0100
Subject: [PATCH 034/231] some changes in audit view

---
 pandora_console/include/class/AuditLog.class.php | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/pandora_console/include/class/AuditLog.class.php b/pandora_console/include/class/AuditLog.class.php
index 261ffac531..ceb98875a1 100644
--- a/pandora_console/include/class/AuditLog.class.php
+++ b/pandora_console/include/class/AuditLog.class.php
@@ -123,7 +123,7 @@ class AuditLog extends HTML
                     ],
                     [
                         'text'  => 'action',
-                        'class' => 'w80px table_action_buttons show_extended_info',
+                        'class' => 'w80px show_extended_info',
                     ]
                 );
 
@@ -187,7 +187,7 @@ class AuditLog extends HTML
                     'no_sortable_columns' => [-1],
                     'order'               => [
                         'field'     => 'date',
-                        'direction' => 'asc',
+                        'direction' => 'desc',
                     ],
                     'search_button_class' => 'sub filter float-right',
                     'form'                => [
@@ -441,7 +441,7 @@ class AuditLog extends HTML
 
             $(document).ready(function() {
                 // Add event listener for opening and closing details
-                $('#audit_logs tbody').on('click', 'td.show_extended_info', function() {
+                $(document).on('click', '#audit_logs tbody tr:has(td.show_extended_info)', function() {
                     var tr = $(this).closest('tr');
                     var table = $("#<?php echo $this->tableId; ?>").DataTable();
                     var row = table.row(tr);

From 276cf73e49a113fbd3a80c5591c929c96f5695be Mon Sep 17 00:00:00 2001
From: Daniel Cebrian <daniel.cebrian@pandorafms.com>
Date: Tue, 12 Dec 2023 10:23:47 +0100
Subject: [PATCH 035/231] #12575 fixed order columns in dashboard

---
 pandora_console/include/ajax/dashboard.ajax.php | 17 +++++++++++++++--
 pandora_console/views/dashboard/list.php        |  6 +++++-
 2 files changed, 20 insertions(+), 3 deletions(-)

diff --git a/pandora_console/include/ajax/dashboard.ajax.php b/pandora_console/include/ajax/dashboard.ajax.php
index 50a0e0b7a1..40497a2ebc 100644
--- a/pandora_console/include/ajax/dashboard.ajax.php
+++ b/pandora_console/include/ajax/dashboard.ajax.php
@@ -41,7 +41,20 @@ if ($method === 'draw') {
     $length = get_parameter('length', $config['block_size']);
     $orderBy = get_datatable_order(true);
 
-    $sort_field = $orderBy['field'];
+    switch ($orderBy['field']) {
+        case 'groups':
+            $sort_field = 'nombre';
+        break;
+
+        case 'favorite':
+            $sort_field = 'active';
+        break;
+
+        default:
+            $sort_field = $orderBy['field'];
+        break;
+    }
+
     $order = $orderBy['direction'];
 
     $pagination = '';
@@ -121,7 +134,7 @@ if ($method === 'draw') {
             );
         }
 
-        $sql = 'SELECT * FROM tdashboard '.$where.' ORDER BY id '.$pagination;
+        $sql = 'SELECT * FROM tdashboard LEFT JOIN tgrupo ON tgrupo.id_grupo = tdashboard.id_group '.$where.' ORDER BY '.$sort_field.' '.$order.$pagination;
         $dashboards = db_get_all_rows_sql($sql);
         $count = db_get_value_sql('SELECT COUNT(*) FROM tdashboard '.$where);
         foreach ($dashboards as $dashboard) {
diff --git a/pandora_console/views/dashboard/list.php b/pandora_console/views/dashboard/list.php
index aae6778f6d..aaf675e64a 100644
--- a/pandora_console/views/dashboard/list.php
+++ b/pandora_console/views/dashboard/list.php
@@ -112,7 +112,11 @@ if (empty($dashboards) === true) {
                 'manageDashboards' => $manageDashboards,
             ],
             'default_pagination'  => $config['block_size'],
-            'no_sortable_columns' => [],
+            'no_sortable_columns' => [
+                4,
+                5,
+                6,
+            ],
             'order'               => [
                 'field'     => 'name',
                 'direction' => 'desc',

From e3fc6c13f5c143111aad2239caf94ebab69c2d6b Mon Sep 17 00:00:00 2001
From: "felix.suarez" <felix.suarez@pandorafms.com>
Date: Tue, 12 Dec 2023 22:29:47 -0600
Subject: [PATCH 036/231] Change api_call to manage_api_call

---
 pandora_server/util/pandora_manage.pl | 56 +++++++++++++--------------
 1 file changed, 28 insertions(+), 28 deletions(-)

diff --git a/pandora_server/util/pandora_manage.pl b/pandora_server/util/pandora_manage.pl
index afcf8b9199..997e254737 100755
--- a/pandora_server/util/pandora_manage.pl
+++ b/pandora_server/util/pandora_manage.pl
@@ -264,7 +264,7 @@ sub help_screen{
 ########################################################################
 # 
 ########################################################################
-sub api_call($$$;$$$$) {
+sub manage_api_call($$$;$$$$) {
 	my ($pa_config, $op, $op2, $id, $id2, $other, $return_type) = @_;
 	my $content = undef;
 
@@ -400,7 +400,7 @@ sub pandora_disable_group ($$$) {
 
 					foreach my $id_agent (@agents_bd) {
 							# Call the API.
-							$result += api_call(
+							$result += manage_api_call(
 								$conf, 'set', 'disabled_and_standby', $id_agent->{'id_agente'}, $server, '1|1' 
 							);
 					}
@@ -2253,7 +2253,7 @@ sub cli_module_group_synch() {
 	if ($return_type eq '') {
 		$return_type = 'csv';
 	}
-	my $result = api_call(\%conf,'set', 'module_group_synch', undef, undef, "$other", $return_type);
+	my $result = manage_api_call(\%conf,'set', 'module_group_synch', undef, undef, "$other", $return_type);
 	print "$result \n\n ";
 }
 
@@ -2321,7 +2321,7 @@ sub cli_create_network_component() {
 	my $other2 = join('|', @todo2);
 
 	# Call the API.
-	my $result = api_call( $conf, 'set', 'new_network_component', $c_name, undef, "$c_type|$other|$c_group|$other2");
+	my $result = manage_api_call( $conf, 'set', 'new_network_component', $c_name, undef, "$c_type|$other|$c_group|$other2");
 	
 	print "$result \n\n ";
 }
@@ -4322,7 +4322,7 @@ sub cli_get_alert_actions() {
 	if ($return_type eq '') {
 		$return_type = 'csv';
 	}
-	my $result = api_call(\%conf,'get', 'alert_actions', undef, undef, "$action_name|$separator",$return_type);
+	my $result = manage_api_call(\%conf,'get', 'alert_actions', undef, undef, "$action_name|$separator",$return_type);
 	print "$result \n\n ";
 }
 
@@ -4337,7 +4337,7 @@ sub cli_get_alert_actions_meta() {
 		$return_type = 'csv';
 	}
 
-	my $result = api_call(\%conf,'get', 'alert_actions_meta', undef, undef, "$server_name|$action_name|$separator",$return_type);
+	my $result = manage_api_call(\%conf,'get', 'alert_actions_meta', undef, undef, "$server_name|$action_name|$separator",$return_type);
 	print "$result \n\n ";
 }
 
@@ -4557,7 +4557,7 @@ sub cli_create_event() {
 
 sub cli_update_event_custom_id() {
 	my ($id_event, $event_custom_id) = @ARGV[2..3];
-	my $result = api_call(\%conf, 'set', 'event_custom_id', $id_event, $event_custom_id);
+	my $result = manage_api_call(\%conf, 'set', 'event_custom_id', $id_event, $event_custom_id);
 	print "\n$result\n";
 }
 
@@ -4849,7 +4849,7 @@ sub cli_apply_policy() {
 	my ($id_policy, $id_agent, $name, $id_server) = @ARGV[2..5];
 
 	# Call the API.
-	my $result = api_call(\%conf, 'set', 'apply_policy', $id_policy, $id_agent, "$name|$id_server");
+	my $result = manage_api_call(\%conf, 'set', 'apply_policy', $id_policy, $id_agent, "$name|$id_server");
 	print "\n$result\n";
 }
 
@@ -6022,7 +6022,7 @@ sub cli_policy_add_agent() {
 sub cli_policy_delete_agent() {
 	my ($policy_id, $agent_id) = @ARGV[2..3];
 	
-	my $result = api_call(\%conf,'set', 'remove_agent_from_policy', $policy_id, $agent_id);
+	my $result = manage_api_call(\%conf,'set', 'remove_agent_from_policy', $policy_id, $agent_id);
 	print "$result \n\n ";
 
 }
@@ -6032,7 +6032,7 @@ sub cli_create_planned_downtime() {
 	my @todo = @ARGV[3..21];
 	my $other = join('|', @todo);
 	
-	my $result = api_call(\%conf,'set', 'planned_downtimes_created', $name, undef, "$other");
+	my $result = manage_api_call(\%conf,'set', 'planned_downtimes_created', $name, undef, "$other");
 	print "$result \n\n ";
 }
 
@@ -6046,7 +6046,7 @@ sub cli_add_item_planned_downtime() {
 	my $other_modules = join(';', @modules);
 	my $other = $other_agents . "|" . $other_modules;
 	
-	my $result = api_call(\%conf,'set', 'planned_downtimes_additem', $id, undef, "$other");
+	my $result = manage_api_call(\%conf,'set', 'planned_downtimes_additem', $id, undef, "$other");
 	print_log "$result \n\n";
 }
 
@@ -8645,7 +8645,7 @@ sub cli_create_tag() {
 	my ($tag_name, $tag_description, $tag_url, $tag_email) = @ARGV[2..5];
 
 	# Call the API.
-	my $result = api_call(\%conf, 'set', 'create_tag', undef, undef, "$tag_name|$tag_description|$tag_url|$tag_email");
+	my $result = manage_api_call(\%conf, 'set', 'create_tag', undef, undef, "$tag_name|$tag_description|$tag_url|$tag_email");
 	print "\n$result\n";
 }
 
@@ -8682,7 +8682,7 @@ sub cli_add_tag_to_user_profile() {
 	exist_check($user_profile_id, 'given profile and group combination for user', $user_id);
 
 	# Call the API.
-	my $result = api_call(\%conf, 'set', 'tag_user_profile', $user_id, $tag_id, "$group_id|$profile_id");
+	my $result = manage_api_call(\%conf, 'set', 'tag_user_profile', $user_id, $tag_id, "$group_id|$profile_id");
 	print "\n$result\n";
 }
 
@@ -8706,7 +8706,7 @@ sub cli_add_tag_to_module() {
 	exist_check($module_id, 'module name', $module_name);
 
 	# Call the API.
-	my $result = api_call(\%conf, 'set', 'add_tag_module', $module_id, $tag_id);
+	my $result = manage_api_call(\%conf, 'set', 'add_tag_module', $module_id, $tag_id);
 	print "\n$result\n";
 }
 
@@ -8725,7 +8725,7 @@ sub cli_migration_agent_queue() {
 	}
 
 	# Call the API.
-	my $result = api_call( $conf, 'set', 'migrate_agent', $id_agent, 0, "$source_name|$target_name|$only_db" );
+	my $result = manage_api_call( $conf, 'set', 'migrate_agent', $id_agent, 0, "$source_name|$target_name|$only_db" );
 	print "\n$result\n";
 }
 
@@ -8740,7 +8740,7 @@ sub cli_migration_agent() {
 	}
 
 	# Call the API.
-	my $result = api_call( $conf, 'get', 'migrate_agent', $id_agent);
+	my $result = manage_api_call( $conf, 'get', 'migrate_agent', $id_agent);
 
 	if( defined($result) && "$result" ne "" ){
 		print "\n1\n";
@@ -8849,7 +8849,7 @@ sub cli_new_cluster() {
 	my ($cluster_name,$cluster_type,$description,$group_id) = @ARGV[2..5];
 	
 	# Call the API.
-	my $result = api_call( $conf, 'set', 'new_cluster', undef, undef, "$cluster_name|$cluster_type|$description|$group_id");
+	my $result = manage_api_call( $conf, 'set', 'new_cluster', undef, undef, "$cluster_name|$cluster_type|$description|$group_id");
 	
 	if( defined($result) && "$result" ne "" ){
 		print "\n1\n";
@@ -8867,7 +8867,7 @@ sub cli_add_cluster_agent() {
 	my ($other) = @ARGV[2..2];
 	
 	# Call the API.
-	my $result = api_call( $conf, 'set', 'add_cluster_agent', undef, undef, $other);
+	my $result = manage_api_call( $conf, 'set', 'add_cluster_agent', undef, undef, $other);
 	
 	if( defined($result) && "$result" ne "" ){
 		print "\n1\n";
@@ -8885,7 +8885,7 @@ sub cli_add_cluster_item() {
 	my ($other) = @ARGV[2..2];
 	
 	# Call the API.
-	my $result = api_call( $conf, 'set', 'add_cluster_item', undef, undef, $other);
+	my $result = manage_api_call( $conf, 'set', 'add_cluster_item', undef, undef, $other);
 	
 	if( defined($result) && "$result" ne "" ){
 		print "\n1\n";
@@ -8903,7 +8903,7 @@ sub cli_delete_cluster() {
 	my ($id) = @ARGV[2..2];
 	
 	# Call the API.
-	my $result = api_call( $conf, 'set', 'delete_cluster', $id);
+	my $result = manage_api_call( $conf, 'set', 'delete_cluster', $id);
 	
 	if( defined($result) && "$result" ne "" ){
 		print "\n1\n";
@@ -8921,7 +8921,7 @@ sub cli_delete_cluster_agent() {
 	my ($id_agent,$id_cluster) = @ARGV[2..3];
 	
 	# Call the API.
-	my $result = api_call( $conf, 'set', 'delete_cluster_agent', undef, undef, "$id_agent|$id_cluster");
+	my $result = manage_api_call( $conf, 'set', 'delete_cluster_agent', undef, undef, "$id_agent|$id_cluster");
 	
 	if( defined($result) && "$result" ne "" ){
 		print "\n1\n";
@@ -8939,7 +8939,7 @@ sub cli_delete_cluster_item() {
 	my ($id) = @ARGV[2..2];
 	
 	# Call the API.
-	my $result = api_call( $conf, 'set', 'delete_cluster_item', $id);
+	my $result = manage_api_call( $conf, 'set', 'delete_cluster_item', $id);
 	
 	if( defined($result) && "$result" ne "" ){
 		print "\n1\n";
@@ -8958,7 +8958,7 @@ sub cli_get_cluster_status() {
 	my ($id) = @ARGV[2..2];
 	
 	# Call the API.
-	my $result = api_call( $conf, 'get', 'cluster_status', $id);
+	my $result = manage_api_call( $conf, 'get', 'cluster_status', $id);
 	
 	if( defined($result) && "$result" ne "" ){
 		print "\n1\n";
@@ -8979,7 +8979,7 @@ sub cli_set_disabled_and_standby() {
 	$value = 1 unless defined($value); #Set to disabled by default
 
 	# Call the API.
-	my $result = api_call(
+	my $result = manage_api_call(
 		$conf, 'set', 'disabled_and_standby', $id, $id_node, $value
 	);
 
@@ -8995,7 +8995,7 @@ sub cli_set_disabled_and_standby() {
 sub cli_reset_agent_counts() {
 	my $agent_id = @ARGV[2];
 
-	my $result = api_call(\%conf,'set', 'reset_agent_counts', $agent_id);
+	my $result = manage_api_call(\%conf,'set', 'reset_agent_counts', $agent_id);
 	print "$result \n\n ";
 
 }
@@ -9010,7 +9010,7 @@ sub cli_event_in_progress() {
 	my $event_id = @ARGV[2];
 
 	# Call the API.
-	my $result = api_call(
+	my $result = manage_api_call(
 		$conf, 'set', 'event_in_progress', $event_id
 	);
 
@@ -9080,7 +9080,7 @@ sub cli_get_gis_agent(){
 
 	my $agent_id = @ARGV[2];
 
-	my $result = api_call(\%conf,'get', 'gis_agent', $agent_id);
+	my $result = manage_api_call(\%conf,'get', 'gis_agent', $agent_id);
 	print "$result \n\n ";
 
 }
@@ -9096,7 +9096,7 @@ sub cli_insert_gis_data(){
 	my @position = @ARGV[3..5];
 	my $other = join('|', @position);
 
-	my $result = api_call(\%conf,'set', 'gis_agent_only_position', $agent_id, undef, "$other");
+	my $result = manage_api_call(\%conf,'set', 'gis_agent_only_position', $agent_id, undef, "$other");
 	print "$result \n\n ";
 
 }

From 160514cfbe5acd41941de26f0ca5e31d2fa10a09 Mon Sep 17 00:00:00 2001
From: "alejandro.campos@artica.es" <alejandro.campos@artica.es>
Date: Wed, 13 Dec 2023 10:08:13 +0100
Subject: [PATCH 037/231] fix filter bug

---
 pandora_console/include/functions_events.php | 7 ++++++-
 pandora_console/operation/events/events.php  | 2 +-
 2 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/pandora_console/include/functions_events.php b/pandora_console/include/functions_events.php
index 747e5154ce..852d00f270 100644
--- a/pandora_console/include/functions_events.php
+++ b/pandora_console/include/functions_events.php
@@ -6472,7 +6472,12 @@ function event_print_graph(
             $color[] = '#82b92f';
         }
     } else {
-        $interval_length = (int) ($period / $num_intervals);
+        $interval_length = 0;
+
+        if ($num_intervals > 0) {
+            $interval_length = (int) ($period / $num_intervals);
+        }
+
         $intervals = [];
         $intervals[0] = $start_utimestamp;
         for ($i = 0; $i < $num_intervals; $i++) {
diff --git a/pandora_console/operation/events/events.php b/pandora_console/operation/events/events.php
index be5f6047e3..f47fc71f55 100644
--- a/pandora_console/operation/events/events.php
+++ b/pandora_console/operation/events/events.php
@@ -1234,7 +1234,7 @@ if (is_ajax() === true) {
 
             $data = array_values(
                 array_filter(
-                    $data,
+                    ($data ?? []),
                     function ($item) {
                         return (bool) (array) $item;
                     }

From 7b6c14974d1bfee2a230b729f92998b1861a3147 Mon Sep 17 00:00:00 2001
From: Daniel Cebrian <daniel.cebrian@pandorafms.com>
Date: Wed, 13 Dec 2023 10:34:46 +0100
Subject: [PATCH 038/231] #12573 fixed number of cells in list dashboard

---
 pandora_console/include/lib/Dashboard/Manager.php | 9 +++++++++
 pandora_console/pandoradb_data.sql                | 4 ++--
 2 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/pandora_console/include/lib/Dashboard/Manager.php b/pandora_console/include/lib/Dashboard/Manager.php
index 4430bfa253..bee64b7ba1 100644
--- a/pandora_console/include/lib/Dashboard/Manager.php
+++ b/pandora_console/include/lib/Dashboard/Manager.php
@@ -1056,6 +1056,7 @@ class Manager implements PublicLogin
             'name'            => $name,
             'id_user'         => $id_user,
             'id_group'        => $id_group,
+            'cells'           => 1,
             'cells_slideshow' => $slideshow,
             'active'          => $favourite,
             'date_range'      => $dateRange,
@@ -1367,6 +1368,7 @@ class Manager implements PublicLogin
         global $config;
 
         $items = \get_parameter('items', []);
+        $totalCells = 0;
 
         // Class Dashboard.
         if (empty($items) === false) {
@@ -1398,8 +1400,15 @@ class Manager implements PublicLogin
                     return false;
                 }
             }
+
+            if (is_array($items) === true) {
+                $totalCells = count($items);
+            }
         }
 
+        $values = ['cells' => $totalCells];
+        $this->put($values);
+
         echo json_encode($result);
     }
 
diff --git a/pandora_console/pandoradb_data.sql b/pandora_console/pandoradb_data.sql
index 70f9451932..a3f28d816a 100644
--- a/pandora_console/pandoradb_data.sql
+++ b/pandora_console/pandoradb_data.sql
@@ -2704,8 +2704,8 @@ INSERT INTO `treport_content` (`id_rc`,`id_report`,`id_gs`,`id_agent_module`,`ty
   (2,1,0,0,'top_n',28800,0,2,'Top&#x20;CPU&#x20;per&#x20;agent','',0,'&lt;p&gt;This&#x20;type&#x20;of&#x20;report&#x20;implies&#x20;loading&#x20;a&#x20;lot&#x20;of&#x20;data.&#x20;Therefore&#x20;it&#x20;is&#x20;recommended&#x20;for&#x20;scheduled&#x20;reports,&#x20;not&#x20;real-time&#x20;view.&lt;/p&gt;',NULL,0,'','','','00:00:00','00:00:00',1,1,1,1,1,1,1,0,3,10,0,10,0,1,1,0,'{&quot;show_in_same_row&quot;:0,&quot;hide_notinit_agents&quot;:0,&quot;priority_mode&quot;:&quot;1&quot;,&quot;dyn_height&quot;:&quot;250&quot;,&quot;text_agent&quot;:&quot;Lio=&quot;,&quot;text_agent_module&quot;:&quot;Y3B1Lio=&quot;}',0,0,'',0,0,300,0,0,NULL,NULL,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,NULL,NULL,1,0,0,NULL),
   (3,1,0,0,'event_report_group',21600,0,3,'General&#x20;event&#x20;report','This&#x20;is&#x20;a&#x20;sample&#x20;of&#x20;not&#x20;normal&#x20;events&#x20;for&#x20;any&#x20;agent&#x20;available&#x20;in&#x20;the&#x20;last&#x20;6&#x20;hours',0,'&lt;p&gt;This&#x20;type&#x20;of&#x20;report&#x20;implies&#x20;loading&#x20;a&#x20;lot&#x20;of&#x20;data.&#x20;Therefore&#x20;it&#x20;is&#x20;recommended&#x20;for&#x20;scheduled&#x20;reports,&#x20;not&#x20;real-time&#x20;view.&lt;/p&gt;',NULL,0,'','','','00:00:00','00:00:00',1,1,1,1,1,1,1,0,0,10,0,10,0,0,0,0,'{&quot;show_in_same_row&quot;:0,&quot;hide_notinit_agents&quot;:0,&quot;priority_mode&quot;:&quot;1&quot;,&quot;dyn_height&quot;:&quot;250&quot;,&quot;server_multiple&quot;:&quot;&#92;&quot;&#92;&quot;&quot;,&quot;show_summary_group&quot;:0,&quot;filter_event_severity&quot;:&quot;[&#92;&quot;20&#92;&quot;]&quot;,&quot;filter_event_type&quot;:&quot;[&#92;&quot;all&#92;&quot;]&quot;,&quot;filter_event_status&quot;:&quot;[&#92;&quot;-1&#92;&quot;]&quot;,&quot;event_graph_by_agent&quot;:&quot;1&quot;,&quot;event_graph_by_user_validator&quot;:&quot;1&quot;,&quot;event_graph_by_criticity&quot;:&quot;1&quot;,&quot;event_graph_validated_vs_unvalidated&quot;:0,&quot;event_filter_search&quot;:&quot;&quot;,&quot;event_filter_exclude&quot;:&quot;&quot;,&quot;custom_data_events&quot;:&quot;1&quot;,&quot;label&quot;:&quot;&quot;}',0,0,'',0,0,300,0,0,NULL,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,NULL,NULL,1,0,0,NULL);
 INSERT INTO `tdashboard` (`id`,`name`,`id_user`,`id_group`,`active`,`cells`,`cells_slideshow`) VALUES
-  (1,'Sample&#x20;Dashboard&#x20;#1','',0,0,0,0),
-  (2,'Sample&#x20;Dashboard&#x20;#2','',0,0,0,0);
+  (1,'Sample&#x20;Dashboard&#x20;#1','',0,0,7,0),
+  (2,'Sample&#x20;Dashboard&#x20;#2','',0,0,10,0);
 INSERT INTO `twidget_dashboard` (`id`,`position`,`options`,`order`,`id_dashboard`,`id_widget`,`prop_width`,`prop_height`) VALUES 
   (1,'{\"x\":\"0\",\"y\":\"0\",\"width\":\"4\",\"height\":\"4\"}','{\"title\":\"Agents&#x20;hive\",\"background\":\"#ffffff\",\"groups\":[\"12,8,4,9,2,10,13,11\"]}',0,1,1,0.32,0.32),
   (2,'{\"x\":\"4\",\"y\":\"0\",\"width\":\"3\",\"height\":\"4\"}','{\"title\":\"Clock\",\"background\":\"#ffffff\",\"clockType\":\"analogic\"}',1,1,12,0.32,0.32),

From 6e246d5d2980dd83c5f300ae0ebc0892d0c449bf Mon Sep 17 00:00:00 2001
From: Daniel Cebrian <daniel.cebrian@pandorafms.com>
Date: Wed, 13 Dec 2023 12:04:00 +0100
Subject: [PATCH 039/231] #12509 fixed status agents disabled

---
 pandora_console/include/functions_graph.php   |  12 +-
 pandora_console/include/functions_groups.php  |   3 +-
 .../lib/TacticalView/elements/Agents.php      |  17 +-
 .../lib/TacticalView/elements/Groups.php      | 204 +++++++++---------
 4 files changed, 124 insertions(+), 112 deletions(-)

diff --git a/pandora_console/include/functions_graph.php b/pandora_console/include/functions_graph.php
index 58ed138259..de60bd8f7b 100644
--- a/pandora_console/include/functions_graph.php
+++ b/pandora_console/include/functions_graph.php
@@ -5115,7 +5115,8 @@ function graph_so_by_group($id_group, $width=300, $height=200, $recursive=true,
         FROM tagente a
         LEFT JOIN tagent_secondary_group g ON g.id_agent = a.id_agente
         LEFT JOIN tconfig_os os ON a.id_os = os.id_os
-        WHERE a.id_grupo IN (%s) OR g.id_group IN (%s)
+        WHERE (a.id_grupo IN (%s) OR g.id_group IN (%s))
+        AND a.disabled = 0
         GROUP BY os.id_os',
         implode(',', $id_groups),
         implode(',', $id_groups)
@@ -5205,13 +5206,14 @@ function graph_events_agent_by_group($id_group, $width=300, $height=200, $noWate
     // with it and then the number of times it occured. GROUP BY statement
     // is required if both DISTINCT() and COUNT() are in the statement.
     $sql = sprintf(
-        'SELECT DISTINCT(id_agente) AS id_agente,
-                COUNT(id_agente) AS count
+        'SELECT DISTINCT(te.id_agente) AS id_agente,
+                COUNT(te.id_agente) AS count
             FROM tevento te
+            LEFT JOIN tagente a ON a.id_agente = te.id_agente
             LEFT JOIN tagent_secondary_group g ON g.id_agent = te.id_agente
             WHERE 1=1 AND estado = 0
-            %s %s
-            GROUP BY id_agente
+            %s %s AND a.disabled = 0
+            GROUP BY te.id_agente
             ORDER BY count DESC LIMIT 8',
         $tags_condition,
         $filter_groups
diff --git a/pandora_console/include/functions_groups.php b/pandora_console/include/functions_groups.php
index 78b0804c30..a09baf5d9f 100644
--- a/pandora_console/include/functions_groups.php
+++ b/pandora_console/include/functions_groups.php
@@ -2503,7 +2503,8 @@ function groups_get_heat_map_agents(array $id_group, float $width=0, float $heig
 
     $sql = 'SELECT * FROM tagente a
             LEFT JOIN tagent_secondary_group g ON g.id_agent = a.id_agente
-            WHERE a.id_grupo IN ('.implode(',', $id_group).') OR g.id_group IN ('.implode(',', $id_group).')';
+            WHERE (a.id_grupo IN ('.implode(',', $id_group).') OR g.id_group IN ('.implode(',', $id_group).'))
+            AND a.disabled = 0';
 
     $all_agents = db_get_all_rows_sql($sql);
     if (empty($all_agents)) {
diff --git a/pandora_console/include/lib/TacticalView/elements/Agents.php b/pandora_console/include/lib/TacticalView/elements/Agents.php
index a0e14313e0..d0349f26d3 100644
--- a/pandora_console/include/lib/TacticalView/elements/Agents.php
+++ b/pandora_console/include/lib/TacticalView/elements/Agents.php
@@ -352,6 +352,7 @@ class Agents extends Element
      */
     public function getStatusGraph():string
     {
+        $data = [];
         $agents = agents_get_agents(
             false,
             [
@@ -435,13 +436,17 @@ class Agents extends Element
         // To avoid that if a value is too small it is not seen.
         $percentages = [];
         $total = array_sum($data);
-        foreach ($data as $key => $value) {
-            $percentage = (($value / $total) * 100);
-            if ($percentage < 1 && $percentage > 0) {
-                $percentage = 1;
-            }
+        if ($total > 0) {
+            foreach ($data as $key => $value) {
+                $percentage = (($value / $total) * 100);
+                if ($percentage < 1 && $percentage > 0) {
+                    $percentage = 1;
+                }
 
-            $percentages[$key] = format_numeric($percentage, 0);
+                $percentages[$key] = format_numeric($percentage, 0);
+            }
+        } else {
+            $percentages = [];
         }
 
         $data = $percentages;
diff --git a/pandora_console/include/lib/TacticalView/elements/Groups.php b/pandora_console/include/lib/TacticalView/elements/Groups.php
index 4fe07b743a..a86b8465a4 100644
--- a/pandora_console/include/lib/TacticalView/elements/Groups.php
+++ b/pandora_console/include/lib/TacticalView/elements/Groups.php
@@ -113,116 +113,119 @@ class Groups extends Element
         $id_groups = implode(',', $id_groups);
 
         $modules = modules_get_modules_in_group($id_groups);
-        $total_groups = count($modules);
-        if ($total_groups === 0) {
-            return graph_nodata_image(['width' => '400']);
-        }
-
-        // Best square.
-        $high = (float) max($width, $height);
-        $low = 0.0;
-
-        while (abs($high - $low) > 0.000001) {
-            $mid = (($high + $low) / 2.0);
-            $midval = (floor($width / $mid) * floor($height / $mid));
-            if ($midval >= $total_groups) {
-                $low = $mid;
-            } else {
-                $high = $mid;
-            }
-        }
-
-        $square_length = min(($width / floor($width / $low)), ($height / floor($height / $low)));
-        // Print starmap.
-        $heatmap = sprintf(
-            '<svg id="svg" style="width: %spx; height: %spx;">',
-            $width,
-            $height
-        );
-
-        $heatmap .= '<g>';
-        $row = 0;
-        $column = 0;
-        $x = 0;
-        $y = 0;
-        $cont = 1;
-        foreach ($modules as $key => $value) {
-            $module_id = $value['id_agente_modulo'];
-            $module_status = db_get_row(
-                'tagente_estado',
-                'id_agente_modulo',
-                $module_id,
-            );
-
-            $module_value = modules_get_last_value($module_id);
-            $status = '';
-            $title = '';
-            modules_get_status($module_id, $module_status['estado'], $module_value, $status, $title);
-            switch ($status) {
-                case STATUS_MODULE_NO_DATA:
-                    // Not init status.
-                    $status = 'notinit';
-                break;
-
-                case STATUS_MODULE_CRITICAL:
-                    // Critical status.
-                    $status = 'critical';
-                break;
-
-                case STATUS_MODULE_WARNING:
-                    // Warning status.
-                    $status = 'warning';
-                break;
-
-                case STATUS_MODULE_OK:
-                    // Normal status.
-                    $status = 'normal';
-                break;
-
-                case 3:
-                case -1:
-                default:
-                    // Unknown status.
-                    $status = 'unknown';
-                break;
+        $heatmap = '';
+        if (is_array($modules) === true) {
+            $total_groups = count($modules);
+            if ($total_groups === 0) {
+                return graph_nodata_image(['width' => '400']);
             }
 
-            $redirect = '';
-            if (check_acl($config['id_user'], 0, 'AW')) {
-                $redirect = 'onclick="redirectHeatmap(\'module\', '.$module_id.', '.$value['id_agente'].')"';
+            // Best square.
+            $high = (float) max($width, $height);
+            $low = 0.0;
+
+            while (abs($high - $low) > 0.000001) {
+                $mid = (($high + $low) / 2.0);
+                $midval = (floor($width / $mid) * floor($height / $mid));
+                if ($midval >= $total_groups) {
+                    $low = $mid;
+                } else {
+                    $high = $mid;
+                }
             }
 
+            $square_length = min(($width / floor($width / $low)), ($height / floor($height / $low)));
+            // Print starmap.
             $heatmap .= sprintf(
-                '<rect id="%s" x="%s" onmousemove="showLabel(this, event, \'%s\')" onmouseleave="hideLabel()" '.$redirect.' style="stroke-width:1;stroke:#ffffff" y="%s" row="%s" rx="3" ry="3" col="%s" width="%s" height="%s" class="scuare-status %s_%s"></rect>',
-                'rect_'.$cont,
-                $x,
-                $value['nombre'],
-                $y,
-                $row,
-                $column,
-                $square_length,
-                $square_length,
-                $status,
-                random_int(1, 10)
+                '<svg id="svg" style="width: %spx; height: %spx;">',
+                $width,
+                $height
             );
 
-            $y += $square_length;
-            $row++;
-            if ((int) ($y + $square_length) > (int) $height) {
-                $y = 0;
-                $x += $square_length;
-                $row = 0;
-                $column++;
-            }
+            $heatmap .= '<g>';
+            $row = 0;
+            $column = 0;
+            $x = 0;
+            $y = 0;
+            $cont = 1;
+            foreach ($modules as $key => $value) {
+                $module_id = $value['id_agente_modulo'];
+                $module_status = db_get_row(
+                    'tagente_estado',
+                    'id_agente_modulo',
+                    $module_id,
+                );
+
+                $module_value = modules_get_last_value($module_id);
+                $status = '';
+                $title = '';
+                modules_get_status($module_id, $module_status['estado'], $module_value, $status, $title);
+                switch ($status) {
+                    case STATUS_MODULE_NO_DATA:
+                        // Not init status.
+                        $status = 'notinit';
+                    break;
+
+                    case STATUS_MODULE_CRITICAL:
+                        // Critical status.
+                        $status = 'critical';
+                    break;
+
+                    case STATUS_MODULE_WARNING:
+                        // Warning status.
+                        $status = 'warning';
+                    break;
+
+                    case STATUS_MODULE_OK:
+                        // Normal status.
+                        $status = 'normal';
+                    break;
+
+                    case 3:
+                    case -1:
+                    default:
+                        // Unknown status.
+                        $status = 'unknown';
+                    break;
+                }
+
+                $redirect = '';
+                if (check_acl($config['id_user'], 0, 'AW')) {
+                    $redirect = 'onclick="redirectHeatmap(\'module\', '.$module_id.', '.$value['id_agente'].')"';
+                }
+
+                $heatmap .= sprintf(
+                    '<rect id="%s" x="%s" onmousemove="showLabel(this, event, \'%s\')" onmouseleave="hideLabel()" '.$redirect.' style="stroke-width:1;stroke:#ffffff" y="%s" row="%s" rx="3" ry="3" col="%s" width="%s" height="%s" class="scuare-status %s_%s"></rect>',
+                    'rect_'.$cont,
+                    $x,
+                    $value['nombre'],
+                    $y,
+                    $row,
+                    $column,
+                    $square_length,
+                    $square_length,
+                    $status,
+                    random_int(1, 10)
+                );
 
-            if ((int) ($x + $square_length) > (int) $width) {
-                $x = 0;
                 $y += $square_length;
-                $column = 0;
                 $row++;
-            }
+                if ((int) ($y + $square_length) > (int) $height) {
+                    $y = 0;
+                    $x += $square_length;
+                    $row = 0;
+                    $column++;
+                }
 
-            $cont++;
+                if ((int) ($x + $square_length) > (int) $width) {
+                    $x = 0;
+                    $y += $square_length;
+                    $column = 0;
+                    $row++;
+                }
+
+                $cont++;
+            }
         }
 
         $heatmap .= '<script type="text/javascript">
@@ -289,7 +292,8 @@ class Groups extends Element
 
         $sql = 'SELECT * FROM tagente a
         LEFT JOIN tagent_secondary_group g ON g.id_agent = a.id_agente
-        WHERE g.id_group IN ('.$id_groups.') OR a.id_grupo IN ('.$id_groups.')';
+        WHERE (g.id_group IN ('.$id_groups.') OR a.id_grupo IN ('.$id_groups.'))
+        AND a.disabled = 0';
         $all_agents = db_get_all_rows_sql($sql);
         if (empty($all_agents)) {
             return null;

From 88784de3ef390d0805bdbb5beed1e01393e533fa Mon Sep 17 00:00:00 2001
From: Jonathan <jonathan.leon@pandorafms.com>
Date: Wed, 13 Dec 2023 13:03:08 +0100
Subject: [PATCH 040/231] #12143 fix datepicker dashboard widget hardening

---
 .../include/javascript/pandora_dashboards.js        | 13 ++++++++++++-
 pandora_console/include/javascript/pandora_ui.js    |  9 +++++++++
 .../lib/Dashboard/Widgets/security_hardening.php    |  4 ++--
 pandora_console/include/styles/pandora.css          |  4 ++++
 4 files changed, 27 insertions(+), 3 deletions(-)

diff --git a/pandora_console/include/javascript/pandora_dashboards.js b/pandora_console/include/javascript/pandora_dashboards.js
index 283acf8005..da969814cc 100644
--- a/pandora_console/include/javascript/pandora_dashboards.js
+++ b/pandora_console/include/javascript/pandora_dashboards.js
@@ -22,6 +22,9 @@ function show_option_dialog(settings) {
       method: "updateDashboard",
       dataType: "json"
     },
+    oncancel: {
+      reload: true
+    },
     ajax_callback: update_dashboard
   });
 }
@@ -458,6 +461,10 @@ function initialiceLayout(data) {
   }*/
 
   function configurationWidget(cellId, widgetId, size) {
+    var reload = 0;
+    if (widgetId == 46) {
+      reload = 1;
+    }
     load_modal({
       target: $("#modal-config-widget"),
       form: "form-config-widget",
@@ -483,8 +490,12 @@ function initialiceLayout(data) {
         method: "saveWidgetIntoCell",
         dataType: "json"
       },
+      oncancel: {
+        reload: reload
+      },
       ajax_callback: update_widget_to_cell,
-      onsubmitClose: 1
+      onsubmitClose: 1,
+      onsubmitReload: reload
     });
   }
 
diff --git a/pandora_console/include/javascript/pandora_ui.js b/pandora_console/include/javascript/pandora_ui.js
index 45ca47e92b..de17eae3ea 100644
--- a/pandora_console/include/javascript/pandora_ui.js
+++ b/pandora_console/include/javascript/pandora_ui.js
@@ -168,6 +168,8 @@ function load_modal(settings) {
           if (typeof settings.oncancel.confirm == "function") {
             //receive function
             settings.oncancel.confirm(cancelModal);
+          } else if (settings.oncancel.reload == true) {
+            location.reload();
           } else if (settings.oncancel != undefined) {
             cancelModal();
           }
@@ -347,6 +349,13 @@ function load_modal(settings) {
               AJAX_RUNNING = 0;
             }
           });
+
+          if (
+            settings.onsubmitReload != undefined &&
+            settings.onsubmitReload == true
+          ) {
+            location.reload();
+          }
         } else {
           AJAX_RUNNING = 0;
         }
diff --git a/pandora_console/include/lib/Dashboard/Widgets/security_hardening.php b/pandora_console/include/lib/Dashboard/Widgets/security_hardening.php
index b3c124f039..0e9612cd29 100644
--- a/pandora_console/include/lib/Dashboard/Widgets/security_hardening.php
+++ b/pandora_console/include/lib/Dashboard/Widgets/security_hardening.php
@@ -274,9 +274,9 @@ class SecurityHardening extends Widget
                 'name'      => 'range',
                 'type'      => 'date_range',
                 'selected'  => 'chose_range',
-                'date_init' => date('Y-m-d', $values['date_init']),
+                'date_init' => date('Y/m/d', $values['date_init']),
                 'time_init' => date('H:i:s', $values['date_init']),
-                'date_end'  => date('Y-m-d', $values['date_end']),
+                'date_end'  => date('Y/m/d', $values['date_end']),
                 'time_end'  => date('H:i:s', $values['date_end']),
                 'return'    => true,
             ],
diff --git a/pandora_console/include/styles/pandora.css b/pandora_console/include/styles/pandora.css
index 8f8226320e..2e6cd36149 100644
--- a/pandora_console/include/styles/pandora.css
+++ b/pandora_console/include/styles/pandora.css
@@ -12048,6 +12048,10 @@ div.relative > div > div#ui-datepicker-div {
   left: 5px !important;
 }
 
+#ui-datepicker-div .ui-datepicker-header {
+  background-color: white;
+}
+
 .ui-widget-overlay {
   background: #aaa;
   opacity: 0.3 !important;

From 29260473fce207f10c842c99ce89c83fa9a5d8f2 Mon Sep 17 00:00:00 2001
From: "alejandro.campos@artica.es" <alejandro.campos@artica.es>
Date: Wed, 13 Dec 2023 13:29:48 +0100
Subject: [PATCH 041/231] fix missing fields

---
 .../godmode/events/event_responses.editor.php | 20 +++++++++----------
 pandora_console/include/styles/events.css     |  4 ++--
 2 files changed, 12 insertions(+), 12 deletions(-)

diff --git a/pandora_console/godmode/events/event_responses.editor.php b/pandora_console/godmode/events/event_responses.editor.php
index ae31e10ad1..477aa70e85 100644
--- a/pandora_console/godmode/events/event_responses.editor.php
+++ b/pandora_console/godmode/events/event_responses.editor.php
@@ -285,7 +285,7 @@ if (enterprise_installed()) {
 $data = [];
 $data[0] = html_print_label_input_block(
     '<div id="server_to_exec_label" class="labels invisible">'.__('Server to execute command').'</div>',
-    '<div id="server_to_exec_value" class="invisible" >'.html_print_select(
+    '<div id="server_to_exec_value" class="w100p margin-top-10 invisible" >'.html_print_select(
         $servers_to_exec,
         'server_to_exec',
         $event_response['server_to_exec'],
@@ -298,7 +298,7 @@ $data[0] = html_print_label_input_block(
 
 $data[1] = html_print_label_input_block(
     '<div id="command_timeout_label" class="labels invisible">'.__('Command timeout (s)'),
-    '<div id="command_timeout_value" class="invisible">'.html_print_input_text(
+    '<div id="command_timeout_value" class=" w100p margin-top-10 invisible">'.html_print_input_text(
         'command_timeout',
         $event_response['command_timeout'],
         '',
@@ -358,18 +358,18 @@ $('#type').change(function() {
             $('#new_window option[value="0"]')
                 .prop('selected', true);
             $('#new_window').attr('disabled','disabled');
-            $('#server_to_exec_label').css('display','');
-            $('#server_to_exec_value').css('display','');
-            $('#command_timeout_label').css('display','');
-            $('#command_timeout_value').css('display','');
+            $('#server_to_exec_label').show();
+            $('#server_to_exec_value').show();
+            $('#command_timeout_label').show();
+            $('#command_timeout_value').show();
 
             break;
         case 'url':
             $('#new_window').removeAttr('disabled');
-            $('#server_to_exec_label').css('display','none');
-            $('#server_to_exec_value').css('display','none');
-            $('#command_timeout_label').css('display','none');
-            $('#command_timeout_value').css('display','none');
+            $('#server_to_exec_label').hide();
+            $('#server_to_exec_value').hide();
+            $('#command_timeout_label').hide();
+            $('#command_timeout_value').hide();
 
             break;
     }
diff --git a/pandora_console/include/styles/events.css b/pandora_console/include/styles/events.css
index 1a66ba7174..2c1bc0d180 100644
--- a/pandora_console/include/styles/events.css
+++ b/pandora_console/include/styles/events.css
@@ -478,10 +478,10 @@ div.multi-response-buttons {
   justify-content: flex-start;
 }
 
-td:has(div#server_to_exec_label),
+/*td:has(div#server_to_exec_label),
 td:has(div#server_to_exec_value) {
   padding: 0px;
-}
+}*/
 
 table#save_filter_form,
 table#load_filter_form {

From fe9b35ed77b4c6058961fd5a946535b5817b5c80 Mon Sep 17 00:00:00 2001
From: Jonathan <jonathan.leon@pandorafms.com>
Date: Wed, 13 Dec 2023 16:51:14 +0100
Subject: [PATCH 042/231] #12622 help only when feedback enable

---
 pandora_console/general/header.php | 32 ++++++++++++++++--------------
 1 file changed, 17 insertions(+), 15 deletions(-)

diff --git a/pandora_console/general/header.php b/pandora_console/general/header.php
index 102d8e3136..d092722cee 100644
--- a/pandora_console/general/header.php
+++ b/pandora_console/general/header.php
@@ -397,21 +397,23 @@ echo sprintf('<div id="header_table" class="header_table_%s">', $menuTypeClass);
         $modal_box .= '<a href="https://discord.com/invite/xVt2ruSxmr" target="_blank">'.__('Join discord community').'</a>';
         $modal_box .= '</div>';
 
-        $modal_help = html_print_div(
-            [
-                'id'      => 'modal-help-content',
-                'content' => html_print_image(
-                    'images/help@header.svg',
-                    true,
-                    [
-                        'title' => __('Help'),
-                        'class' => 'main_menu_icon bot invert_filter',
-                        'alt'   => 'user',
-                    ]
-                ).$modal_box,
-            ],
-            true,
-        );
+        if ($config['activate_feedback'] === '1') {
+            $modal_help = html_print_div(
+                [
+                    'id'      => 'modal-help-content',
+                    'content' => html_print_image(
+                        'images/help@header.svg',
+                        true,
+                        [
+                            'title' => __('Help'),
+                            'class' => 'main_menu_icon bot invert_filter',
+                            'alt'   => 'user',
+                        ]
+                    ).$modal_box,
+                ],
+                true,
+            );
+        }
 
 
         // User.

From f5b4cf235968b32b2821f469fbc7c24caefcbe20 Mon Sep 17 00:00:00 2001
From: "felix.suarez" <felix.suarez@pandorafms.com>
Date: Wed, 13 Dec 2023 10:45:48 -0600
Subject: [PATCH 043/231] CLI allow create events with event_custom_id

---
 pandora_server/lib/PandoraFMS/Core.pm |  8 +++++---
 pandora_server/util/pandora_manage.pl | 13 +++++++------
 2 files changed, 12 insertions(+), 9 deletions(-)

diff --git a/pandora_server/lib/PandoraFMS/Core.pm b/pandora_server/lib/PandoraFMS/Core.pm
index 84d3d51bd2..bcb492fa1e 100644
--- a/pandora_server/lib/PandoraFMS/Core.pm
+++ b/pandora_server/lib/PandoraFMS/Core.pm
@@ -4273,13 +4273,15 @@ Generate an event.
 
 =cut
 ##########################################################################
-#sub pandora_event ($$$$$$$$$$;$$$$$$$$$$$$) {
+#sub pandora_event ($$$$$$$$$$;$$$$$$$$$$$$$) {
 sub pandora_event {
 	my ($pa_config, $evento, $id_grupo, $id_agente, $severity,
 		$id_alert_am, $id_agentmodule, $event_type, $event_status, $dbh,
 		$source, $user_name, $comment, $id_extra, $tags,
 		$critical_instructions, $warning_instructions, $unknown_instructions, $custom_data,
-		$module_data, $module_status, $server_id) = @_;
+		$module_data, $module_status, $server_id, $event_custom_id) = @_;
+
+	$event_custom_id //= "";
 
 	my $agent = undef;
 	if (defined($id_agente) && $id_agente != 0) {
@@ -4332,7 +4334,7 @@ sub pandora_event {
 	
 	my $utimestamp = time ();
 	my $timestamp = strftime ("%Y-%m-%d %H:%M:%S", localtime ($utimestamp));
-	my $event_custom_id = undef;
+
 	$id_agentmodule = 0 unless defined ($id_agentmodule);
 	
 	# Validate events with the same event id
diff --git a/pandora_server/util/pandora_manage.pl b/pandora_server/util/pandora_manage.pl
index afcf8b9199..f953baa24e 100755
--- a/pandora_server/util/pandora_manage.pl
+++ b/pandora_server/util/pandora_manage.pl
@@ -200,7 +200,7 @@ sub help_screen{
 	help_screen_line('--enable_eacl', '', 'Enable enterprise ACL system');
 	help_screen_line('--disable_double_auth', '<user_name>', 'Disable the double authentication for the specified user');
 	print "\nEVENTS:\n\n" unless $param ne '';
-	help_screen_line('--create_event', "<event> <event_type> <group_name> [<agent_name> <module_name>\n\t   <event_status> <severity> <template_name> <user_name> <comment> \n\t  <source> <id_extra> <tags> <custom_data_json> <force_create_agent>  \n\t <critical_instructions> <warning_instructions> <unknown_instructions> <use_alias>]", 'Add event');
+	help_screen_line('--create_event', "<event> <event_type> <group_name> [<agent_name> <module_name>\n\t   <event_status> <severity> <template_name> <user_name> <comment> <source> \n\t <id_extra> <tags> <custom_data_json> <force_create_agent> <critical_instructions> \n\t <warning_instructions> <unknown_instructions> <use_alias> <event_custom_id>]", 'Add event');
 	help_screen_line('--update_event_custom_id', "<event> <event_custom_id>", 'Update Event Custom ID');
   	help_screen_line('--validate_event', "<agent_name> <module_name> <datetime_min> <datetime_max>\n\t   <user_name> <criticity> <template_name> [<use_alias>]", 'Validate events');
  	help_screen_line('--validate_event_id', '<event_id>', 'Validate event given a event id');
@@ -4439,7 +4439,7 @@ sub cli_delete_profile() {
 ##############################################################################
 
 sub cli_create_event() {
-	my ($event,$event_type,$group_name,$agent_name,$module_name,$event_status,$severity,$template_name, $user_name, $comment, $source, $id_extra, $tags, $custom_data,$force_create_agent,$c_instructions,$w_instructions,$u_instructions,$use_alias,$server_id) = @ARGV[2..21];
+	my ($event,$event_type,$group_name,$agent_name,$module_name,$event_status,$severity,$template_name, $user_name, $comment, $source, $id_extra, $tags, $custom_data,$force_create_agent,$c_instructions,$w_instructions,$u_instructions,$use_alias,$server_id,$event_custom_id) = @ARGV[2..22];
 
 	$event_status = 0 unless defined($event_status);
 	$severity = 0 unless defined($severity);
@@ -4498,7 +4498,7 @@ sub cli_create_event() {
 			print_log "[INFO] Adding event '$event' for agent '$agent_name' \n\n";
 
 			pandora_event ($conf, $event, $id_group, $id_agent, $severity,
-				$id_alert_agent_module, $id_agentmodule, $event_type, $event_status, $dbh, safe_input($source), $user_name, safe_input($comment), safe_input($id_extra), safe_input($tags), safe_input($c_instructions), safe_input($w_instructions), safe_input($u_instructions), $custom_data, undef, undef, $server_id);
+				$id_alert_agent_module, $id_agentmodule, $event_type, $event_status, $dbh, safe_input($source), $user_name, safe_input($comment), safe_input($id_extra), safe_input($tags), safe_input($c_instructions), safe_input($w_instructions), safe_input($u_instructions), $custom_data, undef, undef, $server_id, safe_input($event_custom_id));
 		}
 	} else {
 		if (! $agent_name) {
@@ -4545,7 +4545,7 @@ sub cli_create_event() {
 		print_log "[INFO] Adding event '$event' for agent '$agent_name' \n\n";
 
 		pandora_event ($conf, $event, $id_group, $id_agent, $severity,
-			$id_alert_agent_module, $id_agentmodule, $event_type, $event_status, $dbh, safe_input($source), $user_name, $comment, safe_input($id_extra), safe_input($tags), safe_input($c_instructions), safe_input($w_instructions), safe_input($u_instructions), $custom_data, undef, undef, $server_id);
+			$id_alert_agent_module, $id_agentmodule, $event_type, $event_status, $dbh, safe_input($source), $user_name, $comment, safe_input($id_extra), safe_input($tags), safe_input($c_instructions), safe_input($w_instructions), safe_input($u_instructions), $custom_data, undef, undef, $server_id, safe_input($event_custom_id));
 
 	}
 }
@@ -7926,10 +7926,11 @@ sub pandora_manage_main ($$$) {
 				{'name' => 'warning_instructions'},
 				{'name' => 'unknown_instructions'},
 				{'name' => 'use_alias'},
-				{'name' => 'metaconsole'}
+				{'name' => 'metaconsole'},
+				{'name' => 'event_custom_id'}
 			);
 
-			param_check($ltotal, 20, 17);
+			param_check($ltotal, 21, 18);
 
 			check_values(\@fields);
 

From ea935d3a9219305ce1d37ec61ed2c208c2cc10a9 Mon Sep 17 00:00:00 2001
From: "felix.suarez" <felix.suarez@pandorafms.com>
Date: Wed, 13 Dec 2023 12:42:17 -0600
Subject: [PATCH 044/231] API allow create events with event_custom_id

---
 pandora_console/include/functions_api.php | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/pandora_console/include/functions_api.php b/pandora_console/include/functions_api.php
index bf1c1b3004..f6f522e6f1 100644
--- a/pandora_console/include/functions_api.php
+++ b/pandora_console/include/functions_api.php
@@ -13156,6 +13156,12 @@ function api_set_create_event($id, $trash1, $other, $returnType)
             $values['id_extra'] = '';
         }
 
+        if ($other['data'][21] != '') {
+            $values['event_custom_id'] = $other['data'][21];
+        }else{
+            $values['event_custom_id'] = '';
+        }
+
         $custom_data = base64_decode($values['custom_data']);
         $custom_data = mysql_escape_string_sql($custom_data);
 
@@ -13178,7 +13184,7 @@ function api_set_create_event($id, $trash1, $other, $returnType)
             $values['server_id'],
             $values['id_extra'],
             $ack_utimestamp,
-            $values['event_custom_id'] ?? null
+            $values['event_custom_id']
         );
 
         if ($other['data'][12] != '') {

From 6e150c1bc2ab65dd2cba29aaa5f2919a206b8ad4 Mon Sep 17 00:00:00 2001
From: Jonathan <jonathan.leon@pandorafms.com>
Date: Thu, 14 Dec 2023 08:59:13 +0100
Subject: [PATCH 045/231] #12560 alert update manager

---
 pandora_console/include/class/ConsoleSupervisor.php | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/pandora_console/include/class/ConsoleSupervisor.php b/pandora_console/include/class/ConsoleSupervisor.php
index 83208256fb..ae12f37772 100644
--- a/pandora_console/include/class/ConsoleSupervisor.php
+++ b/pandora_console/include/class/ConsoleSupervisor.php
@@ -928,7 +928,9 @@ class ConsoleSupervisor
             false
         );
 
-        if ($prev !== false
+        if ($data['type'] === 'NOTIF.UPDATEMANAGER.REGISTRATION' && $prev !== false) {
+            return;
+        } else if ($prev !== false
             && (time() - $prev['timestamp']) > $max_age
         ) {
             // Clean previous notification.

From 065b096f14515ebee793f85f097bcf02de63663c Mon Sep 17 00:00:00 2001
From: Jonathan <jonathan.leon@pandorafms.com>
Date: Thu, 14 Dec 2023 10:03:58 +0100
Subject: [PATCH 046/231] #12366 user list 5 users bug styles

---
 pandora_console/godmode/users/user_list.php | 65 +++++++--------------
 pandora_console/include/styles/pandora.css  | 11 ++++
 2 files changed, 31 insertions(+), 45 deletions(-)

diff --git a/pandora_console/godmode/users/user_list.php b/pandora_console/godmode/users/user_list.php
index d488b4faad..89607ced69 100644
--- a/pandora_console/godmode/users/user_list.php
+++ b/pandora_console/godmode/users/user_list.php
@@ -689,7 +689,7 @@ foreach ($info as $user_id => $user_info) {
     // User profiles.
     if ($user_is_admin || $user_id == $config['id_user'] || isset($group_um[0])) {
         $user_profiles = db_get_all_rows_sql(
-            'SELECT * FROM tusuario_perfil where id_usuario LIKE "'.$user_id.'" LIMIT 5'
+            'SELECT * FROM tusuario_perfil where id_usuario LIKE "'.$user_id.'"'
         );
     } else {
         $user_profiles_aux = users_get_user_profile($user_id, 'LIMIT 5');
@@ -778,17 +778,24 @@ foreach ($info as $user_id => $user_info) {
     if ($user_profiles !== false) {
         $total_profile = 0;
 
-        $data[4] .= '<div class="text_end">';
+        $data[4] .= '<div class="flex-column-start">';
         foreach ($user_profiles as $row) {
+            if ($total_profile > 5) {
+                $data[4] .= "<div class='invisible checkhide_".$row['id_usuario']."'>";
+            }
+
             $data[4] .= "<div class='float-left'>";
             $data[4] .= profile_get_name($row['id_perfil']);
-            $data[4] .= ' / </div>';
-            $data[4] .= "<div class='float-left pdd_l_5px'>";
+            $data[4] .= ' / ';
             $data[4] .= groups_get_name($row['id_grupo'], true);
             $data[4] .= '</div>';
 
-            if ($total_profile == 0 && count($user_profiles) >= 5) {
-                $data[4] .= '<span onclick="showGroups(`'.$row['id_usuario'].'`)">'.html_print_image(
+            if ($total_profile > 5) {
+                $data[4] .= '</div>';
+            }
+
+            if ($total_profile == 0 && count($user_profiles) > 5) {
+                $data[4] .= '<span class="show-profiles" onclick="showGroups(`'.$row['id_usuario'].'`)">'.html_print_image(
                     'images/zoom.png',
                     true,
                     [
@@ -804,8 +811,6 @@ foreach ($info as $user_id => $user_info) {
                 );
             }
 
-            $data[4] .= '<br/>';
-
             $total_profile++;
         }
 
@@ -1052,43 +1057,13 @@ if ($is_management_allowed === true) {
 ?>
 <script type="text/javascript">
     function showGroups(id_user) {
-        if ($(`#hidden-show_groups_${id_user}`).val() === '-1') {
-            var request = $.ajax({
-                url: "<?php echo ui_get_full_url('ajax.php', false, false, false); ?>",
-                type: 'GET',
-                dataType: 'json',
-                data: {
-                    page: 'godmode/users/user_list',
-                    get_user_profile_group: 1,
-                    id_user: id_user
-                },
-                success: function (data, textStatus, xhr) {
-                    let count = 1;
-                    data.forEach( function(valor, indice, array) {
-                        if (count >= 6) {
-                            let main_div = $(`#profiles_${id_user}`);
-                            main_div.append(
-                                `<div id="left_${id_user}_${count}" class='float-left'>${valor.id_perfil} / </div>`,
-                                `<div id="right_${id_user}_${count}" class='float-left pdd_l_5px'>${valor.id_grupo}</div>`,
-                                `<br/><br/>`
-                            );
-                        }
-                        count ++;
-                    });
-                },
-                error: function (e, textStatus) {
-                    console.error(textStatus);
-                }
-            });
-            $(`#hidden-show_groups_${id_user}`).val('1');
-            $(`#profiles_${id_user}`).show();
-        } else if ($(`#hidden-show_groups_${id_user}`).val() === '1') {
-            $(`#hidden-show_groups_${id_user}`).val('0');
-            $(`#profiles_${id_user}`).hide();
-        } else {
-            $(`#hidden-show_groups_${id_user}`).val('1');
-            $(`#profiles_${id_user}`).show();
-        }
+        $('.checkhide_'+id_user).each(function(){
+            if ($(this).hasClass('invisible') === true) {
+                $(this).removeClass('invisible');
+            } else {
+                $(this).addClass('invisible');
+            }
+        });
     }
 
 </script>
diff --git a/pandora_console/include/styles/pandora.css b/pandora_console/include/styles/pandora.css
index 53d559b1d0..65212bed73 100644
--- a/pandora_console/include/styles/pandora.css
+++ b/pandora_console/include/styles/pandora.css
@@ -985,6 +985,12 @@ select:-internal-list-box {
   justify-content: flex-start !important;
 }
 
+.flex-column-start {
+  display: flex;
+  flex-direction: column;
+  align-items: flex-start;
+}
+
 .padding-2 {
   padding: 2em;
 }
@@ -5530,6 +5536,11 @@ input:checked + .p-slider:before {
   color: #4d4d4d;
 }
 
+.show-profiles {
+  position: absolute;
+  margin-left: 15%;
+}
+
 /* Tables to upload files */
 #table_filemanager tr:first-child th span {
   font-weight: bold;

From 9258de7edc976f940ce4383803f23077b51404a6 Mon Sep 17 00:00:00 2001
From: "alejandro.campos@artica.es" <alejandro.campos@artica.es>
Date: Thu, 14 Dec 2023 12:25:21 +0100
Subject: [PATCH 047/231] fix multiple selector

---
 pandora_console/godmode/modules/manage_nc_groups.php | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/pandora_console/godmode/modules/manage_nc_groups.php b/pandora_console/godmode/modules/manage_nc_groups.php
index d5540d2472..423008db82 100644
--- a/pandora_console/godmode/modules/manage_nc_groups.php
+++ b/pandora_console/godmode/modules/manage_nc_groups.php
@@ -63,7 +63,7 @@ if (is_metaconsole() === true) {
             ],
             [
                 'link'  => '',
-                'label' => __('Component groups'),
+                'label' => __('Component groups1221'),
             ],
         ]
     );
@@ -394,11 +394,11 @@ html_print_action_buttons(
         $('[id^=checkbox-all_delete]').change(function(){
             if ($("#checkbox-all_delete").prop("checked")) {
                 $('[id^=checkbox-delete_multiple]').parent().parent().addClass('checkselected');
-                $(".check_delete").prop("checked", true);
+                $(".custom_checkbox_input").prop("checked", true);
             }
             else{
                 $('[id^=checkbox-delete_multiple]').parent().parent().removeClass('checkselected');
-                $(".check_delete").prop("checked", false);
+                $(".custom_checkbox_input").prop("checked", false);
             }
         });
     });

From 7398982912fac42ac2130ca9fae7bb9a8f4b607a Mon Sep 17 00:00:00 2001
From: "alejandro.campos@artica.es" <alejandro.campos@artica.es>
Date: Thu, 14 Dec 2023 12:27:00 +0100
Subject: [PATCH 048/231] fix multiple selector

---
 pandora_console/godmode/modules/manage_nc_groups.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pandora_console/godmode/modules/manage_nc_groups.php b/pandora_console/godmode/modules/manage_nc_groups.php
index 423008db82..e7ceff1f01 100644
--- a/pandora_console/godmode/modules/manage_nc_groups.php
+++ b/pandora_console/godmode/modules/manage_nc_groups.php
@@ -63,7 +63,7 @@ if (is_metaconsole() === true) {
             ],
             [
                 'link'  => '',
-                'label' => __('Component groups1221'),
+                'label' => __('Component groups'),
             ],
         ]
     );

From c6d29ea60ed57927d7ce3afbaeba80be084704a9 Mon Sep 17 00:00:00 2001
From: Jonathan <jonathan.leon@pandorafms.com>
Date: Thu, 14 Dec 2023 16:59:39 +0100
Subject: [PATCH 049/231] #12435 external link users fix

---
 pandora_console/extras/mr/68.sql                  | 2 ++
 pandora_console/godmode/users/configure_user.php  | 4 ++--
 pandora_console/godmode/users/user_management.php | 2 +-
 pandora_console/pandoradb.sql                     | 2 +-
 4 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/pandora_console/extras/mr/68.sql b/pandora_console/extras/mr/68.sql
index 3095941187..e988817a54 100644
--- a/pandora_console/extras/mr/68.sql
+++ b/pandora_console/extras/mr/68.sql
@@ -1,5 +1,7 @@
 START TRANSACTION;
 
+ALTER TABLE `tusuario` CHANGE COLUMN `metaconsole_data_section` `metaconsole_data_section` TEXT NOT NULL DEFAULT '' ;
+
 DELETE FROM `twelcome_tip` WHERE `title` = 'Automatic&#x20;agent&#x20;provision&#x20;system';
 
 INSERT INTO `twelcome_tip` (`id_lang`,`id_profile`,`title`,`text`,`url`,`enable`) VALUES ('en_GB',0,'Automatic&#x20;agent&#x20;provision&#x20;system','The&#x20;agent&#x20;self-provisioning&#x20;system&#x20;allows&#x20;an&#x20;agent&#x20;recently&#x20;entered&#x20;into&#x20;the&#x20;system&#x20;to&#x20;automatically&#x20;apply&#x20;changes&#x20;to&#x20;their&#x20;configuration&#x20;&#40;such&#x20;as&#x20;moving&#x20;them&#x20;from&#x20;group,&#x20;assigning&#x20;them&#x20;certain&#x20;values&#x20;in&#x20;custom&#x20;fields&#41;&#x20;and&#x20;of&#x20;course&#x20;applying&#x20;certain&#x20;monitoring&#x20;policies.&#x20;It&#x20;is&#x20;one&#x20;of&#x20;the&#x20;most&#x20;powerful&#x20;functionalities,&#x20;aimed&#x20;at&#x20;managing&#x20;very&#x20;large&#x20;system&#x20;parks.','https://pandorafms.com/manual/start?id=en/documentation/02_installation/05_configuration_agents#conf',1);
diff --git a/pandora_console/godmode/users/configure_user.php b/pandora_console/godmode/users/configure_user.php
index 83e54f24c5..dbca522db4 100644
--- a/pandora_console/godmode/users/configure_user.php
+++ b/pandora_console/godmode/users/configure_user.php
@@ -427,7 +427,7 @@ if ($create_user === true) {
     } else if ($values['section'] === HOME_SCREEN_OTHER) {
         $values['data_section'] = get_parameter('data_section_other');
     } else if (io_safe_output($values['section']) === HOME_SCREEN_EXTERNAL_LINK) {
-        $values['data_section'] = get_parameter('data_section_external');
+        $values['data_section'] = get_parameter('data_section');
     }
 
     // $values['section'] = $homeScreenValues[$values['section']];
@@ -727,7 +727,7 @@ if ($update_user) {
     } else if ($values['section'] === HOME_SCREEN_OTHER) {
         $values['data_section'] = get_parameter('data_section_other');
     } else if (io_safe_output($values['section']) === HOME_SCREEN_EXTERNAL_LINK) {
-        $values['data_section'] = get_parameter('data_section_external');
+        $values['data_section'] = get_parameter('data_section');
     }
 
     // $values['section'] = $homeScreenValues[$values['section']];
diff --git a/pandora_console/godmode/users/user_management.php b/pandora_console/godmode/users/user_management.php
index b1212c11ec..2f8aecd47e 100644
--- a/pandora_console/godmode/users/user_management.php
+++ b/pandora_console/godmode/users/user_management.php
@@ -118,7 +118,7 @@ $customHomeScreenAddition[HOME_SCREEN_EXTERNAL_LINK] = html_print_input_text(
     $user_info['data_section'],
     '',
     60,
-    255,
+    999,
     true
 );
 $customHomeScreenDataField = '';
diff --git a/pandora_console/pandoradb.sql b/pandora_console/pandoradb.sql
index 56e49ad467..a4df08742c 100644
--- a/pandora_console/pandoradb.sql
+++ b/pandora_console/pandoradb.sql
@@ -1292,7 +1292,7 @@ CREATE TABLE IF NOT EXISTS `tusuario` (
   `section` TEXT,
   `data_section` TEXT,
   `metaconsole_section` VARCHAR(255) NOT NULL DEFAULT 'Default',
-  `metaconsole_data_section` VARCHAR(255) NOT NULL DEFAULT '',
+  `metaconsole_data_section` TEXT,
   `force_change_pass` TINYINT UNSIGNED NOT NULL DEFAULT 0,
   `last_pass_change` DATETIME,
   `last_failed_login` DATETIME,

From a008c7486c4b543d1802d0813ba42bcbe86f90d8 Mon Sep 17 00:00:00 2001
From: Daniel Maya <daniel.maya@pandorafms.com>
Date: Thu, 14 Dec 2023 17:28:34 +0100
Subject: [PATCH 050/231] #12026 Fixed widget

---
 .../lib/Dashboard/Widgets/inventory.php       | 36 ++++++-------------
 1 file changed, 10 insertions(+), 26 deletions(-)

diff --git a/pandora_console/include/lib/Dashboard/Widgets/inventory.php b/pandora_console/include/lib/Dashboard/Widgets/inventory.php
index a8fc01ee1c..8424d6cfbf 100644
--- a/pandora_console/include/lib/Dashboard/Widgets/inventory.php
+++ b/pandora_console/include/lib/Dashboard/Widgets/inventory.php
@@ -177,6 +177,12 @@ class InventoryWidget extends Widget
 
         // Must be configured before using.
         $this->configurationRequired = false;
+        if (isset($this->values['inventoryModuleId'])
+            && $this->values['inventoryModuleId'] === 'basic'
+            && $this->values['agentId'] === 0
+        ) {
+            $this->configurationRequired = true;
+        }
     }
 
 
@@ -296,9 +302,12 @@ class InventoryWidget extends Widget
         ];
 
         $fields = [];
-
         array_unshift($fields, __('All'));
 
+        if (isset($values['inventoryModuleId']) === false) {
+            $values['inventoryModuleId'] = 0;
+        }
+
         $inputs[] = [
             'label'     => __('Module'),
             'arguments' => [
@@ -316,31 +325,6 @@ class InventoryWidget extends Widget
             ],
         ];
 
-        // Agent select.
-        if ($is_metaconsole === false) {
-            $agents = [];
-            $sql = 'SELECT id_agente, nombre FROM tagente';
-            if ($inventory_id_group > 0) {
-                $sql .= ' WHERE id_grupo = '.$inventory_id_group;
-            } else {
-                $user_groups = implode(',', array_keys(users_get_groups($config['id_user'])));
-
-                // Avoid errors if there are no groups.
-                if (empty($user_groups) === true) {
-                    $user_groups = '"0"';
-                }
-
-                $sql .= ' WHERE id_grupo IN ('.$user_groups.')';
-            }
-
-            $result = db_get_all_rows_sql($sql);
-            if ($result) {
-                foreach ($result as $row) {
-                    $agents[$row['id_agente']] = $row['nombre'];
-                }
-            }
-        }
-
         // Date filter.
         if (is_metaconsole() === false) {
             $inputs[] = [

From d6c47ca069d296197140f95d23f79e1230d2d296 Mon Sep 17 00:00:00 2001
From: "felix.suarez" <felix.suarez@pandorafms.com>
Date: Thu, 14 Dec 2023 16:21:22 -0600
Subject: [PATCH 051/231] Disable PrintError on DB

---
 pandora_server/lib/PandoraFMS/DB.pm | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/pandora_server/lib/PandoraFMS/DB.pm b/pandora_server/lib/PandoraFMS/DB.pm
index c0ee332f64..9ee699a08c 100644
--- a/pandora_server/lib/PandoraFMS/DB.pm
+++ b/pandora_server/lib/PandoraFMS/DB.pm
@@ -1263,6 +1263,7 @@ sub db_delete_limit ($$$$;@) {
 sub db_insert ($$$;@) {
 	my ($dbh, $index, $query, @values) = @_;
 	my $insert_id = undef;
+	$dbh->{PrintError} = 0;
 
 	eval {	
 		$dbh->do($query, undef, @values);
@@ -1288,6 +1289,7 @@ sub db_insert ($$$;@) {
 sub db_update ($$;@) {
 	my ($dbh, $query, @values) = @_;
 	my $rows;
+	$dbh->{PrintError} = 0;
 
 	eval {
 		$rows = $dbh->do($query, undef, @values);
@@ -1533,7 +1535,8 @@ sub get_agent_addr_id ($$$) {
 ########################################################################
 sub db_do ($$;@) {
 	my ($dbh, $query, @values) = @_;
-	
+	$dbh->{PrintError} = 0;
+
 	#DBI->trace( 3, '/tmp/dbitrace.log' );
 	eval {
 		$dbh->do($query, undef, @values);

From 8df792f11b401ba84d851b73d9b8b03b4d1b3ae2 Mon Sep 17 00:00:00 2001
From: Daniel Cebrian <daniel.cebrian@pandorafms.com>
Date: Fri, 15 Dec 2023 10:41:21 +0100
Subject: [PATCH 052/231] #12571 custom graphs refactored

---
 .../reporting/graph_builder.graph_editor.php  | 246 +++++++-----------
 .../godmode/reporting/graph_builder.php       |   2 +-
 pandora_console/include/ajax/graph.ajax.php   | 103 ++++++++
 pandora_console/include/functions_html.php    |  25 +-
 .../include/styles/custom_graph.css           |  16 ++
 5 files changed, 235 insertions(+), 157 deletions(-)
 create mode 100644 pandora_console/include/styles/custom_graph.css

diff --git a/pandora_console/godmode/reporting/graph_builder.graph_editor.php b/pandora_console/godmode/reporting/graph_builder.graph_editor.php
index 0256c28f92..c4da379ebd 100644
--- a/pandora_console/godmode/reporting/graph_builder.graph_editor.php
+++ b/pandora_console/godmode/reporting/graph_builder.graph_editor.php
@@ -30,7 +30,7 @@ if (!$report_w && !$report_m) {
 require_once $config['homedir'].'/include/functions_agents.php';
 require_once $config['homedir'].'/include/functions_modules.php';
 require_once $config['homedir'].'/include/functions_groups.php';
-
+ui_require_css_file('custom_graph');
 $editGraph = (bool) get_parameter('edit_graph', 0);
 $action = get_parameter('action', '');
 
@@ -41,113 +41,6 @@ if (isset($_GET['get_agent'])) {
     }
 }
 
-switch ($action) {
-    case 'sort_items':
-                $resultOperationDB = null;
-                $position_to_sort = (int) get_parameter('position_to_sort', 1);
-                $ids_serialize = (string) get_parameter('ids_items_to_sort', '');
-                $move_to = (string) get_parameter('move_to', 'after');
-
-                $countItems = db_get_sql(
-                    '
-					SELECT COUNT(id_gs)
-					FROM tgraph_source
-					WHERE id_graph = '.$id_graph
-                );
-
-        if (($countItems < $position_to_sort) || ($position_to_sort < 1)) {
-            $resultOperationDB = false;
-        } else if (!empty($ids_serialize)) {
-            $ids = explode('|', $ids_serialize);
-                $items = db_get_all_rows_sql(
-                    'SELECT id_gs, `field_order`
-					 FROM tgraph_source
-					 WHERE id_graph = '.$id_graph.'
-					 ORDER BY `field_order`'
-                );
-
-            if ($items === false) {
-                $items = [];
-            }
-
-
-            // Clean the repeated order values.
-            $order_temp = 1;
-            foreach ($items as $item) {
-                db_process_sql_update(
-                    'tgraph_source',
-                    ['`field_order`' => $order_temp],
-                    ['id_gs' => $item['id_rc']]
-                );
-
-                $order_temp++;
-            }
-
-                $items = db_get_all_rows_sql(
-                    'SELECT id_gs, `field_order`
-					 FROM tgraph_source
-					 WHERE id_graph = '.$id_graph.'
-					 ORDER BY `field_order`'
-                );
-
-            if ($items === false) {
-                $items = [];
-            }
-
-
-
-            $temp = [];
-
-            $temp = [];
-            foreach ($items as $item) {
-                // Remove the contents from the block to sort.
-                if (array_search($item['id_gs'], $ids) === false) {
-                    $temp[$item['field_order']] = $item['id_gs'];
-                }
-            }
-
-            $items = $temp;
-
-
-
-            $sorted_items = [];
-            foreach ($items as $pos => $id_unsort) {
-                if ($pos == $position_to_sort) {
-                    if ($move_to == 'after') {
-                        $sorted_items[] = $id_unsort;
-                    }
-
-                    foreach ($ids as $id) {
-                        $sorted_items[] = $id;
-                    }
-
-                    if ($move_to != 'after') {
-                        $sorted_items[] = $id_unsort;
-                    }
-                } else {
-                    $sorted_items[] = $id_unsort;
-                }
-            }
-
-            $items = $sorted_items;
-
-
-
-            foreach ($items as $order => $id) {
-                db_process_sql_update(
-                    'tgraph_source',
-                    ['`field_order`' => ($order + 1)],
-                    ['id_gs' => $id]
-                );
-            }
-
-            $resultOperationDB = true;
-        } else {
-            $resultOperationDB = false;
-        }
-    break;
-}
-
 if ($editGraph) {
     $graphRows = db_get_all_rows_sql(
         'SELECT t1.*,
@@ -257,41 +150,6 @@ $table->data[0][1] = html_print_label_input_block(
 );
 
 
-$SortItems = "<form action='index.php?sec=reporting&sec2=godmode/reporting/graph_builder&tab=graph_editor&edit_graph=1&id=".$id_graph."' method='post' onsubmit='return added_ids_sorted_items_to_hidden_input();'>";
-$SortItems .= html_print_table($table, true);
-$SortItems .= html_print_input_hidden('action', 'sort_items', true);
-$SortItems .= html_print_div(
-    [
-        'class'   => 'action-buttons',
-        'content' => html_print_submit_button(
-            __('Sort'),
-            'srcbutton',
-            false,
-            [
-                'class' => 'mini',
-                'icon'  => 'search',
-                'mode'  => 'secondary',
-            ],
-            true
-        ),
-    ],
-    true
-);
-$SortItems .= '</form>';
-
-ui_toggle(
-    $SortItems,
-    '<span class="subsection_header_title">'.__('Sort items').'</span>',
-    '',
-    '',
-    false,
-    false,
-    '',
-    'white-box-content no_border',
-    'filter-datatable-main box-flat white_table_graph max_floating_element_size'
-);
-
-
 // Configuration form.
 echo '<span id ="none_text" class="invisible">'.__('None').'</span>';
 echo "<form  id='agentmodules' method='post' action='index.php?sec=reporting&sec2=godmode/reporting/graph_builder&tab=graph_editor&add_module=1&edit_graph=1&id=".$id_graph."'>";
@@ -300,10 +158,11 @@ echo "<table width='100%' cellpadding='4' cellpadding='4' class='databox filters
 echo '<tr>';
 echo '<td class="w50p pdd_50px" id="select_multiple_modules_filtered">'.html_print_input(
     [
-        'type'      => 'select_multiple_modules_filtered',
-        'uniqId'    => 'modules',
-        'class'     => 'flex flex-row',
-        'searchBar' => true,
+        'type'              => 'select_multiple_modules_filtered',
+        'uniqId'            => 'modules',
+        'class'             => 'flex flex-row',
+        'searchBar'         => false,
+        'placeholderAgents' => __('Search agent name'),
     ]
 ).'</td>';
 echo '</tr><tr>';
@@ -340,6 +199,7 @@ echo '</form>';
 // Modules table.
 if ($count_module_array > 0) {
     echo "<table width='100%' cellpadding=4 cellpadding=4 class='databox filters info_table'>";
+    echo '<thead>';
     echo '<tr>
 	<th>'.__('P.').'</th>
 	<th>'.__('Agent').'</th>
@@ -348,6 +208,8 @@ if ($count_module_array > 0) {
 	<th>'.__('Weight').'</th>
 	<th>'.__('Delete').'</th>
 	<th>'.__('Sort').'</th>';
+    echo '</thead>';
+    echo '<tbody>';
     $color = 0;
     for ($a = 0; $a < $count_module_array; $a++) {
         // Calculate table line color.
@@ -359,7 +221,7 @@ if ($count_module_array > 0) {
             $color = 1;
         }
 
-        echo "<tr><td class='$tdcolor'>$position_array[$a]</td>";
+        echo "<tr><td class='position $tdcolor'>$position_array[$a]</td>";
         echo "<td class='$tdcolor'>".$agent_array[$a].'</td>';
         echo "<td class='$tdcolor'>";
         echo modules_get_agentmodule_name($module_array[$a]).'</td>';
@@ -410,9 +272,30 @@ if ($count_module_array > 0) {
 
         echo '</td>';
 
-        echo '<td>';
+        echo '<td style="display: grid;">';
 
-        echo html_print_checkbox_extended('sorted_items[]', $idgs_array[$a], false, false, '', 'class="selected_check"', true);
+        echo html_print_input_image(
+            'up',
+            'images/arrow-up-white.png',
+            'up',
+            ($config['style'] !== 'pandora_black') ? 'filter: invert(100%)' : '',
+            true,
+            [
+                'class'   => 'invert_filter main_menu_icon',
+                'onclick' => 'reorder(\'up\', \''.$idgs_array[$a].'\', this)',
+            ],
+        );
+        echo html_print_input_image(
+            'down',
+            'images/arrow-down-white.png',
+            'down',
+            ($config['style'] !== 'pandora_black') ? 'filter: invert(100%)' : '',
+            true,
+            [
+                'class'   => 'invert_filter main_menu_icon',
+                'onclick' => 'reorder(\'down\', \''.$idgs_array[$a].'\', this)',
+            ]
+        );
 
         echo '</td>';
 
@@ -420,6 +303,8 @@ if ($count_module_array > 0) {
         echo '</tr>';
     }
 
+    echo '</tbody>';
+
     echo '</table>';
 }
 
@@ -482,4 +367,65 @@ function added_ids_sorted_items_to_hidden_input() {
         return true;
     }
 }
+
+
+function reorder(action, idElement, element) {
+    var tr = $(element).parent().parent();
+    switch (action) {
+        case "up":
+            changePosition(action, idElement)
+            .then((data) => {
+                if(data.success) {
+                    $(tr).find('.position').html(parseInt($(tr).find('.position').html()) - 1);
+                    $($(tr).prev()).find('.position').html(parseInt($($(tr).prev()).find('.position').html()) + 1);
+                    $(tr).prev().insertAfter(tr);
+                }
+            })
+            .catch((err) => {
+                console.log(err);
+            })
+        break;
+
+        case "down":
+            changePosition(action, idElement)
+            .then((data) => {
+                if(data.success) {
+                    $(tr).find('.position').html(parseInt($(tr).find('.position').html()) + 1);
+                    $($(tr).next()).find('.position').html(parseInt(($(tr).next()).find('.position').html()) - 1);
+                    $(tr).next().insertBefore(tr);
+                }
+            })
+            .catch((err) => {
+                console.log(err);
+            })
+        break;
+
+        default:
+        break;
+    }
+}
+
+function changePosition(order, idElement) {
+  return new Promise(function(resolve, reject) {
+    $.ajax({
+      method: "POST",
+      url: "<?php echo ui_get_full_url('ajax.php'); ?>",
+      dataType: "json",
+      data: {
+        page: "include/ajax/graph.ajax",
+        sort_items: 1,
+        order,
+        id_graph: <?php echo $id_graph; ?>,
+        id: idElement
+      },
+      success: function(data) {
+        resolve(data);
+      },
+      error: function(error) {
+        reject(error);
+      }
+    });
+  });
+}
+
 </script>
diff --git a/pandora_console/godmode/reporting/graph_builder.php b/pandora_console/godmode/reporting/graph_builder.php
index 2e7b1f782e..e6aa119e84 100644
--- a/pandora_console/godmode/reporting/graph_builder.php
+++ b/pandora_console/godmode/reporting/graph_builder.php
@@ -237,7 +237,7 @@ if ($add_module === true) {
     );
 
     $id_agent_modules = db_get_all_rows_sql(
-        'SELECT id_agente_modulo FROM tagente_modulo WHERE id_agente IN ('.implode(',', $id_agents).") AND nombre IN ('".implode("','", $id_modules)."')"
+        'SELECT id_agente_modulo FROM tagente_modulo WHERE id_agente IN ('.implode(',', $id_agents).") AND id_agente_modulo IN ('".implode("','", $id_modules)."')"
     );
 
     if (count($id_agent_modules) > 0 && $id_agent_modules != '') {
diff --git a/pandora_console/include/ajax/graph.ajax.php b/pandora_console/include/ajax/graph.ajax.php
index 6ea76f373b..2db3a72912 100644
--- a/pandora_console/include/ajax/graph.ajax.php
+++ b/pandora_console/include/ajax/graph.ajax.php
@@ -17,6 +17,8 @@ $save_custom_graph = (bool) get_parameter('save_custom_graph');
 $print_custom_graph = (bool) get_parameter('print_custom_graph', false);
 $print_sparse_graph = (bool) get_parameter('print_sparse_graph');
 $get_graphs = (bool) get_parameter('get_graphs_container');
+$sort_items = (bool) get_parameter('sort_items');
+
 $width = get_parameter('width', 0);
 $height = get_parameter('height', 0);
 
@@ -337,3 +339,104 @@ if ($get_graphs) {
         return;
     }
 }
+
+
+if ($sort_items === true) {
+    $order = (string) get_parameter('order');
+    $id = (string) get_parameter('id', '');
+    $idGraph = (string) get_parameter('id_graph', '');
+    $total = db_get_num_rows('SELECT * FROM tgraph_source  WHERE id_graph = '.$idGraph.'');
+    $item = db_get_row_sql(
+        'SELECT id_gs, field_order
+        FROM tgraph_source
+        WHERE id_gs = '.$id.'
+        ORDER BY field_order'
+    );
+
+    switch ($order) {
+        case 'up':
+            if (($item['field_order'] - 1) < 1) {
+                echo json_encode(['success' => false]);
+                return;
+            }
+
+            $prevItem = db_get_row_sql(
+                'SELECT id_gs, field_order
+                FROM tgraph_source
+                WHERE id_graph = '.$idGraph.'
+                AND field_order = '.($item['field_order'] - 1).'
+                ORDER BY field_order'
+            );
+
+            db_process_sql_begin();
+
+            $resultItem = db_process_sql_update(
+                'tgraph_source',
+                ['field_order' => ($item['field_order'] - 1)],
+                ['id_gs' => $item['id_gs']],
+                false
+            );
+            $resultPrevItem = db_process_sql_update(
+                'tgraph_source',
+                ['field_order' => ($prevItem['field_order'] + 1)],
+                ['id_gs' => $prevItem['id_gs']],
+                false
+            );
+
+            if ($resultItem !== false && $resultPrevItem !== false) {
+                db_process_sql_commit();
+                echo json_encode(['success' => true]);
+                return;
+            } else {
+                db_process_sql_rollback();
+                echo json_encode(['success' => false]);
+                return;
+            }
+        break;
+
+        case 'down':
+            if (($item['field_order'] + 1) > $total) {
+                echo json_encode(['success' => false]);
+                return;
+            }
+
+            $nextItem = db_get_row_sql(
+                'SELECT id_gs, field_order
+                FROM tgraph_source
+                WHERE id_graph = '.$idGraph.'
+                AND field_order = '.($item['field_order'] + 1).'
+                ORDER BY field_order'
+            );
+
+
+            db_process_sql_begin();
+
+            $resultItem = db_process_sql_update(
+                'tgraph_source',
+                ['field_order' => ($item['field_order'] + 1)],
+                ['id_gs' => $item['id_gs']],
+                false
+            );
+            $resultNextItem = db_process_sql_update(
+                'tgraph_source',
+                ['field_order' => ($nextItem['field_order'] - 1)],
+                ['id_gs' => $nextItem['id_gs']],
+                false
+            );
+
+            if ($resultItem !== false && $resultNextItem !== false) {
+                db_process_sql_commit();
+                echo json_encode(['success' => true]);
+                return;
+            } else {
+                db_process_sql_rollback();
+                echo json_encode(['success' => false]);
+                return;
+            }
+        break;
+
+        default:
+            echo json_encode(['success' => false]);
+        break;
+    }
+}
diff --git a/pandora_console/include/functions_html.php b/pandora_console/include/functions_html.php
index 5b37dc51d2..eada8c4d90 100644
--- a/pandora_console/include/functions_html.php
+++ b/pandora_console/include/functions_html.php
@@ -774,7 +774,8 @@ function html_print_select(
     $select2_multiple_enable_all=false,
     $form='',
     $order=false,
-    $custom_id=null
+    $custom_id=null,
+    $placeholder='',
 ) {
     $output = "\n";
 
@@ -1013,7 +1014,8 @@ function html_print_select(
 
         $output .= '<script type="text/javascript">';
         $output .= '$("#'.$id.'").select2({
-            closeOnSelect: '.(($select2_multiple_enable === true) ? 'false' : 'true').'
+            closeOnSelect: '.(($select2_multiple_enable === true) ? 'false' : 'true').',
+            placeholder: "'.$placeholder.'",
         });';
 
         if ($required !== false) {
@@ -1758,6 +1760,7 @@ function html_print_select_multiple_modules_filtered(array $data):string
                 'multiple'    => true,
                 'style'       => 'min-width: 200px;max-width:200px;',
                 'script'      => 'fmModuleChange(\''.$uniqId.'\', '.(int) is_metaconsole().')',
+                'placeholder' => (isset($data['placeholderAgents']) === true) ? $data['placeholderAgents'] : '',
             ]
         );
     } else {
@@ -1773,6 +1776,7 @@ function html_print_select_multiple_modules_filtered(array $data):string
                 'multiple'    => true,
                 'style'       => 'min-width: 200px;max-width:200px;',
                 'script'      => 'fmModuleChange(\''.$uniqId.'\', '.(int) is_metaconsole().')',
+                'placeholder' => (isset($data['placeholderAgents']) === true) ? $data['placeholderAgents'] : '',
             ]
         );
     }
@@ -1888,7 +1892,8 @@ function html_print_select_from_sql(
     $size=false,
     $truncate_size=GENERIC_SIZE_TEXT,
     $class='',
-    $required=false
+    $required=false,
+    $placeholder='',
 ) {
     global $config;
 
@@ -1931,7 +1936,12 @@ function html_print_select_from_sql(
         $required,
         $truncate_size,
         true,
-        true
+        true,
+        false,
+        '',
+        false,
+        null,
+        $placeholder
     );
 }
 
@@ -5680,7 +5690,9 @@ function html_print_input($data, $wrapper='div', $input_only=false)
                 ((isset($data['select2_multiple_enable']) === true) ? $data['select2_multiple_enable'] : false),
                 ((isset($data['select2_multiple_enable_all']) === true) ? $data['select2_multiple_enable_all'] : false),
                 ((isset($data['form']) === true) ? $data['form'] : ''),
-                ((isset($data['order']) === true) ? $data['order'] : false)
+                ((isset($data['order']) === true) ? $data['order'] : false),
+                ((isset($data['custom_id']) === true) ? $data['custom_id'] : null),
+                ((isset($data['placeholder']) === true) ? $data['placeholder'] : null),
             );
         break;
 
@@ -5700,7 +5712,8 @@ function html_print_input($data, $wrapper='div', $input_only=false)
                 ((isset($data['size']) === true) ? $data['size'] : false),
                 ((isset($data['trucate_size']) === true) ? $data['trucate_size'] : GENERIC_SIZE_TEXT),
                 ((isset($data['class']) === true) ? $data['class'] : ''),
-                ((isset($data['required']) === true) ? $data['required'] : false)
+                ((isset($data['required']) === true) ? $data['required'] : false),
+                ((isset($data['placeholder']) === true) ? $data['placeholder'] : null),
             );
         break;
 
diff --git a/pandora_console/include/styles/custom_graph.css b/pandora_console/include/styles/custom_graph.css
new file mode 100644
index 0000000000..3a76f1ec23
--- /dev/null
+++ b/pandora_console/include/styles/custom_graph.css
@@ -0,0 +1,16 @@
+#div-filtered-module-group-modules,
+#div-filtered-module-module-group-modules,
+#div-filtered-module-agents-modules,
+#div-filtered-module-modules-modules {
+  width: 37% !important;
+}
+#div-filtered-module-modules-modules select {
+  width: 100% !important;
+  max-width: 100% !important;
+}
+#select_multiple_modules_filtered > div > div > .select2 {
+  width: 100% !important;
+}
+#select_multiple_modules_filtered > div {
+  flex-wrap: nowrap !important;
+}

From 47fd35c53ff4ecaf1309a00d90609612b220df62 Mon Sep 17 00:00:00 2001
From: "alejandro.campos@artica.es" <alejandro.campos@artica.es>
Date: Fri, 15 Dec 2023 10:48:10 +0100
Subject: [PATCH 053/231] fix tags filter

---
 pandora_console/include/functions_events.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pandora_console/include/functions_events.php b/pandora_console/include/functions_events.php
index 747e5154ce..ce747ad3c0 100644
--- a/pandora_console/include/functions_events.php
+++ b/pandora_console/include/functions_events.php
@@ -1315,7 +1315,7 @@ function events_get_all(
                 if ($tags[0] === $id_tag) {
                     $_tmp .= ' AND (( ';
                 } else {
-                    $_tmp .= ' OR ( ';
+                    $_tmp .= ' AND ( ';
                 }
 
                 $_tmp .= sprintf(

From 3d71d27d6b58a6b7d31815a82fa0469739d47df8 Mon Sep 17 00:00:00 2001
From: "felix.suarez" <felix.suarez@pandorafms.com>
Date: Sat, 16 Dec 2023 23:59:21 -0600
Subject: [PATCH 054/231] Change autodisabled  query

---
 pandora_server/lib/PandoraFMS/Core.pm | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)

diff --git a/pandora_server/lib/PandoraFMS/Core.pm b/pandora_server/lib/PandoraFMS/Core.pm
index 84d3d51bd2..e6f61836e6 100644
--- a/pandora_server/lib/PandoraFMS/Core.pm
+++ b/pandora_server/lib/PandoraFMS/Core.pm
@@ -7187,10 +7187,18 @@ Puts all autodisable agents with all modules unknown on disabled mode
 sub pandora_disable_autodisable_agents ($$) {
 	my ($pa_config, $dbh) = @_;
 	
-	my $sql = 'SELECT id_agente FROM tagente
-			WHERE disabled=0 AND 
-			tagente.unknown_count>0 AND 
-			tagente.modo=2';
+
+	my $sql = 'SELECT id_agente
+				FROM (
+					SELECT tm.id_agente, count(*) as sync_modules, ta.unknown_count 
+					FROM tagente_modulo tm
+					JOIN tagente ta ON ta.id_agente = tm.id_agente 
+					WHERE ta.disabled = 0
+					AND NOT ((id_tipo_modulo >= 21 AND id_tipo_modulo <= 23) OR id_tipo_modulo = 100)
+					GROUP BY tm.id_agente
+				) AS subquery
+				WHERE subquery.unknown_count >= subquery.sync_modules;';
+
 	my @agents_autodisabled = get_db_rows ($dbh, $sql);
 	return if ($#agents_autodisabled < 0);
 	

From d348f1bf1db26d5b6048a7688c3a72fb21136884 Mon Sep 17 00:00:00 2001
From: "felix.suarez" <felix.suarez@pandorafms.com>
Date: Sun, 17 Dec 2023 00:01:47 -0600
Subject: [PATCH 055/231] Remove conf db change

---
 pandora_server/lib/PandoraFMS/DB.pm | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/pandora_server/lib/PandoraFMS/DB.pm b/pandora_server/lib/PandoraFMS/DB.pm
index 9ee699a08c..b417e44efd 100644
--- a/pandora_server/lib/PandoraFMS/DB.pm
+++ b/pandora_server/lib/PandoraFMS/DB.pm
@@ -1263,7 +1263,6 @@ sub db_delete_limit ($$$$;@) {
 sub db_insert ($$$;@) {
 	my ($dbh, $index, $query, @values) = @_;
 	my $insert_id = undef;
-	$dbh->{PrintError} = 0;
 
 	eval {	
 		$dbh->do($query, undef, @values);
@@ -1289,7 +1288,6 @@ sub db_insert ($$$;@) {
 sub db_update ($$;@) {
 	my ($dbh, $query, @values) = @_;
 	my $rows;
-	$dbh->{PrintError} = 0;
 
 	eval {
 		$rows = $dbh->do($query, undef, @values);
@@ -1535,7 +1533,6 @@ sub get_agent_addr_id ($$$) {
 ########################################################################
 sub db_do ($$;@) {
 	my ($dbh, $query, @values) = @_;
-	$dbh->{PrintError} = 0;
 
 	#DBI->trace( 3, '/tmp/dbitrace.log' );
 	eval {

From 315d1a32236f52b9d403af8971e866162b6f8792 Mon Sep 17 00:00:00 2001
From: "alejandro.campos@artica.es" <alejandro.campos@artica.es>
Date: Mon, 18 Dec 2023 13:50:54 +0100
Subject: [PATCH 056/231] add autorefresh to agent view

---
 pandora_console/godmode/users/configure_user.php | 1 +
 1 file changed, 1 insertion(+)

diff --git a/pandora_console/godmode/users/configure_user.php b/pandora_console/godmode/users/configure_user.php
index 83e54f24c5..6b64cff6e7 100644
--- a/pandora_console/godmode/users/configure_user.php
+++ b/pandora_console/godmode/users/configure_user.php
@@ -1556,6 +1556,7 @@ if (empty($doubleAuthElementsContent) === false) {
 $autorefresh_list_out = [];
 if (is_metaconsole() === false || is_centralized() === true) {
     $autorefresh_list_out['operation/agentes/estado_agente'] = 'Agent detail';
+    $autorefresh_list_out['operation/agentes/ver_agente'] = 'Agent view';
     $autorefresh_list_out['operation/agentes/alerts_status'] = 'Alert detail';
     $autorefresh_list_out['enterprise/operation/cluster/cluster'] = 'Cluster view';
     $autorefresh_list_out['operation/gis_maps/render_view'] = 'Gis Map';

From 5c047fc1b54f14d159f8e52249f0d42937b89cae Mon Sep 17 00:00:00 2001
From: Jonathan <jonathan.leon@pandorafms.com>
Date: Mon, 18 Dec 2023 14:46:44 +0100
Subject: [PATCH 057/231] #12657 entries order function datatables

---
 pandora_console/include/javascript/datatablesFunction.js | 5 +++++
 pandora_console/operation/events/events.php              | 5 +++--
 2 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/pandora_console/include/javascript/datatablesFunction.js b/pandora_console/include/javascript/datatablesFunction.js
index 34fe301f41..b517830ce9 100644
--- a/pandora_console/include/javascript/datatablesFunction.js
+++ b/pandora_console/include/javascript/datatablesFunction.js
@@ -66,6 +66,11 @@ if (typeof dt.pagination_options !== "undefined") {
   lengthMenu = dt.pagination_options;
 }
 
+if (dt.pagination_options_order === "true") {
+  lengthMenu[0] = lengthMenu[0].sort((a, b) => a - b);
+  lengthMenu[1] = lengthMenu[1].sort((a, b) => a - b);
+}
+
 var ordering = true;
 if (typeof dt.ordering !== "undefined" && dt.ordering === false) {
   ordering = dt.ordering;
diff --git a/pandora_console/operation/events/events.php b/pandora_console/operation/events/events.php
index 4365ff6594..63ee1c468c 100644
--- a/pandora_console/operation/events/events.php
+++ b/pandora_console/operation/events/events.php
@@ -2839,7 +2839,7 @@ try {
                     'extra_html'                     => $active_filters_div.$graph_div,
                     'pagination_options'             => [
                         [
-                            $config['block_size'],
+                            (int) $config['block_size'],
                             10,
                             25,
                             100,
@@ -2847,7 +2847,7 @@ try {
                             500,
                         ],
                         [
-                            $config['block_size'],
+                            (int) $config['block_size'],
                             10,
                             25,
                             100,
@@ -2855,6 +2855,7 @@ try {
                             500,
                         ],
                     ],
+                    'pagination_options_order'       => 'true',
                     'order'                          => [
                         'field'     => 'timestamp',
                         'direction' => 'desc',

From 8a9fbbac8b750a71fe8bb293bcb22dbf732cabf9 Mon Sep 17 00:00:00 2001
From: Jonathan <jonathan.leon@pandorafms.com>
Date: Mon, 18 Dec 2023 16:32:39 +0100
Subject: [PATCH 058/231] #12515 event title ... over 300 characters

---
 pandora_console/include/functions_ui.php    | 9 +++++++--
 pandora_console/operation/events/events.php | 2 ++
 2 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/pandora_console/include/functions_ui.php b/pandora_console/include/functions_ui.php
index 3ea3e8a740..d6078c56a7 100755
--- a/pandora_console/include/functions_ui.php
+++ b/pandora_console/include/functions_ui.php
@@ -96,7 +96,8 @@ function ui_print_truncate_text(
     $showTextInTitle=true,
     $suffix='&hellip;',
     $style=false,
-    $forced_title=false
+    $forced_title=false,
+    $text_title=''
 ) {
     global $config;
     $truncate_at_end = false;
@@ -211,7 +212,11 @@ function ui_print_truncate_text(
     }
 
     if ($forced_title === true) {
-        $truncateText = '<span class="forced_title" style="'.$style.'" data-title="'.$text.'" data-use_title_for_force_title="1>'.$truncateText.'</span>';
+        if ($text_title !== '') {
+            $truncateText = '<span class="forced_title" style="'.$style.'" data-title="'.$text_title.'" data-use_title_for_force_title="1">'.$truncateText.'</span>';
+        } else {
+            $truncateText = '<span class="forced_title" style="'.$style.'" data-title="'.$text.'" data-use_title_for_force_title="1">'.$truncateText.'</span>';
+        }
     }
 
     if ($return == true) {
diff --git a/pandora_console/operation/events/events.php b/pandora_console/operation/events/events.php
index 4365ff6594..1b23f856b1 100644
--- a/pandora_console/operation/events/events.php
+++ b/pandora_console/operation/events/events.php
@@ -522,6 +522,7 @@ if (is_ajax() === true) {
                         $tmp->event_title = $output_event_name;
                         $tmp->b64 = base64_encode(json_encode($tmp));
                         $tmp->evento = $output_event_name;
+                        $tmp->event_force_title = (strlen($output_event_name) >= 300) ? substr($output_event_name, 0, 300).'...' : $output_event_name;
 
                         if (empty($tmp->module_name) === false) {
                             $tmp->module_name = ui_print_truncate_text(
@@ -783,6 +784,7 @@ if (is_ajax() === true) {
                             '&hellip;',
                             true,
                             true,
+                            $tmp->event_force_title
                         );
 
                         $evn .= $tmp->evento.'</a>';

From a21b332b1d7de5032ea7055898360b80f7b8fd2a Mon Sep 17 00:00:00 2001
From: Jonathan <jonathan.leon@pandorafms.com>
Date: Tue, 19 Dec 2023 12:57:13 +0100
Subject: [PATCH 059/231] #12391 sunburst widget fix style

---
 pandora_console/include/styles/events.css | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pandora_console/include/styles/events.css b/pandora_console/include/styles/events.css
index 8bcdd7187f..7354e195f8 100644
--- a/pandora_console/include/styles/events.css
+++ b/pandora_console/include/styles/events.css
@@ -544,7 +544,7 @@ div#main_pure:has(.events-pure) {
   margin-bottom: 50px !important;
 }
 
-div#sunburst > svg {
+#main > #container_servicemap > div#sunburst > svg {
   width: 750px;
   height: 750px;
 }

From f1f8f402413e925dfb5a6cfdf24378a73abc839b Mon Sep 17 00:00:00 2001
From: Daniel Maya <daniel.maya@pandorafms.com>
Date: Tue, 19 Dec 2023 15:02:29 +0100
Subject: [PATCH 060/231] #12324 Fixed group status

---
 .../include/lib/Dashboard/Widgets/groups_status.php           | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/pandora_console/include/lib/Dashboard/Widgets/groups_status.php b/pandora_console/include/lib/Dashboard/Widgets/groups_status.php
index 2ba42f7bc2..5dc7d031b1 100755
--- a/pandora_console/include/lib/Dashboard/Widgets/groups_status.php
+++ b/pandora_console/include/lib/Dashboard/Widgets/groups_status.php
@@ -293,6 +293,8 @@ class GroupsStatusWidget extends Widget
             (bool) $this->values['groupRecursion']
         );
 
+        $style = 'min-width:200px; min-height:460px;';
+
         $data = '<div class="widget-groups-status"><span>';
         $data .= ui_print_group_icon(
             $this->values['groupId'],
@@ -541,9 +543,9 @@ class GroupsStatusWidget extends Widget
             $table->data[1][0] = __('Not agents in this group');
             $data .= html_print_table($table, true);
             $data .= '</div>';
+            $style .= 'justify-content: start; margin-top: 20px';
         }
 
-        $style = 'min-width:200px; min-height:460px;';
         $output = '<div class="container-center" style="'.$style.'">';
         $output .= $data;
         $output .= '</div>';

From 0d33a412ae5bde44b0491e5d2d84f1fb0fff7889 Mon Sep 17 00:00:00 2001
From: "felix.suarez" <felix.suarez@pandorafms.com>
Date: Tue, 19 Dec 2023 08:56:54 -0600
Subject: [PATCH 061/231] Remove additional concatenation

---
 pandora_console/include/class/WebServerModuleDebug.class.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pandora_console/include/class/WebServerModuleDebug.class.php b/pandora_console/include/class/WebServerModuleDebug.class.php
index f09d1f3a68..872582e6a3 100644
--- a/pandora_console/include/class/WebServerModuleDebug.class.php
+++ b/pandora_console/include/class/WebServerModuleDebug.class.php
@@ -265,7 +265,7 @@ class WebServerModuleDebug extends Wizard
             );
             // Set execution timeout.
             $executionForPerform .= sprintf(
-                $executionForPerform.' -m %d',
+                ' -m %d',
                 $this->requestTimeout
             );
 

From d68daca985cd5ed8d393bb9e82ba8285e95fe7be Mon Sep 17 00:00:00 2001
From: Jonathan <jonathan.leon@pandorafms.com>
Date: Tue, 19 Dec 2023 16:50:36 +0100
Subject: [PATCH 062/231] #11900 counter items

---
 .../godmode/alerts/alert_actions.php          |  7 ++++++-
 .../godmode/alerts/alert_commands.php         |  7 ++++++-
 .../godmode/alerts/alert_templates.php        |  7 ++++++-
 .../godmode/reporting/reporting_builder.php   |  6 +++++-
 pandora_console/godmode/users/user_list.php   |  7 ++++++-
 .../operation/agentes/status_monitor.php      | 19 ++++++++++++++++---
 6 files changed, 45 insertions(+), 8 deletions(-)

diff --git a/pandora_console/godmode/alerts/alert_actions.php b/pandora_console/godmode/alerts/alert_actions.php
index e8915b05eb..7ba527b61e 100644
--- a/pandora_console/godmode/alerts/alert_actions.php
+++ b/pandora_console/godmode/alerts/alert_actions.php
@@ -497,7 +497,12 @@ foreach ($actions as $action) {
 $pagination = '';
 if (isset($data)) {
     html_print_table($table);
-    $pagination = ui_pagination($total_actions, $url, 0, 0, true, 'offset', false, '');
+    $show_count = false;
+    if (is_metaconsole() === true) {
+        $show_count = true;
+    }
+
+    $pagination = ui_pagination($total_actions, $url, 0, 0, true, 'offset', $show_count, '');
 } else {
     ui_print_info_message(['no_close' => true, 'message' => __('No alert actions configured') ]);
 }
diff --git a/pandora_console/godmode/alerts/alert_commands.php b/pandora_console/godmode/alerts/alert_commands.php
index a59de7f5e2..a5b4de7c80 100644
--- a/pandora_console/godmode/alerts/alert_commands.php
+++ b/pandora_console/godmode/alerts/alert_commands.php
@@ -1080,7 +1080,12 @@ foreach ($commands as $command) {
 
 if (isset($data) === true && count($table->data) > 0) {
     html_print_table($table);
-    $pagination = ui_pagination($total_commands, $url, 0, 0, true, 'offset', false, '');
+    $show_count = false;
+    if (is_metaconsole() === true) {
+        $show_count = true;
+    }
+
+    $pagination = ui_pagination($total_commands, $url, 0, 0, true, 'offset', $show_count, '');
 } else {
     ui_print_info_message(
         [
diff --git a/pandora_console/godmode/alerts/alert_templates.php b/pandora_console/godmode/alerts/alert_templates.php
index 8236d1e69c..537c346bac 100644
--- a/pandora_console/godmode/alerts/alert_templates.php
+++ b/pandora_console/godmode/alerts/alert_templates.php
@@ -493,6 +493,11 @@ foreach ($templates as $template) {
 
 $pagination = '';
 if (isset($data) === true) {
+    $show_count = false;
+    if (is_metaconsole() === true) {
+        $show_count = true;
+    }
+
     html_print_table($table);
     $pagination = ui_pagination(
         $total_templates,
@@ -501,7 +506,7 @@ if (isset($data) === true) {
         0,
         true,
         'offset',
-        false,
+        $show_count,
         ''
     );
 } else {
diff --git a/pandora_console/godmode/reporting/reporting_builder.php b/pandora_console/godmode/reporting/reporting_builder.php
index 842e05147d..8ad15c98f8 100755
--- a/pandora_console/godmode/reporting/reporting_builder.php
+++ b/pandora_console/godmode/reporting/reporting_builder.php
@@ -1259,6 +1259,10 @@ switch ($action) {
             $reports_table .= html_print_table($table, true);
             $reports_table .= '<br></div>';
             echo $reports_table;
+            $show_count = false;
+            if (is_metaconsole() === true) {
+                $show_count = true;
+            }
 
             $tablePagination = ui_pagination(
                 $total_reports,
@@ -1267,7 +1271,7 @@ switch ($action) {
                 $pagination,
                 true,
                 'offset',
-                false
+                $show_count
             );
         } else {
             ui_print_info_message(
diff --git a/pandora_console/godmode/users/user_list.php b/pandora_console/godmode/users/user_list.php
index d488b4faad..99c96fdf6d 100644
--- a/pandora_console/godmode/users/user_list.php
+++ b/pandora_console/godmode/users/user_list.php
@@ -1023,8 +1023,13 @@ foreach ($info as $user_id => $user_info) {
     array_push($table->data, $data);
 }
 
+$show_count = false;
+if (is_metaconsole() === true) {
+    $show_count = true;
+}
+
 html_print_table($table);
-$tablePagination = ui_pagination(count($info), false, 0, 0, true, 'offset', false, 'dataTables_paginate paging_simple_numbers');
+$tablePagination = ui_pagination(count($info), false, 0, 0, true, 'offset', $show_count, 'dataTables_paginate paging_simple_numbers');
 unset($table);
 if ($is_management_allowed === true) {
     if ($config['admin_can_add_user'] !== false) {
diff --git a/pandora_console/operation/agentes/status_monitor.php b/pandora_console/operation/agentes/status_monitor.php
index 4ceb7681fe..23a8beae23 100644
--- a/pandora_console/operation/agentes/status_monitor.php
+++ b/pandora_console/operation/agentes/status_monitor.php
@@ -1455,7 +1455,12 @@ if ($autosearch) {
         }
 
         if ($count_modules > $config['block_size']) {
-            $tablePagination = ui_pagination($count_modules, false, $offset, 0, true, 'offset', false);
+            $show_count = false;
+            if (is_metaconsole() === true) {
+                $show_count = true;
+            }
+
+            $tablePagination = ui_pagination($count_modules, false, $offset, 0, true, 'offset', $show_count);
         }
 
         // Get number of elements of the pagination.
@@ -2351,11 +2356,19 @@ if (empty($result) === false) {
         array_push($table->data, $data);
     }
 
-    echo '<div class="total_pages">'.sprintf(__('Total items: %s'), $count).'</div>';
+    if (!defined('METACONSOLE')) {
+        echo '<div class="total_pages">'.sprintf(__('Total items: %s'), $count).'</div>';
+    }
+
     html_print_table($table);
 
     if ($count_modules > $config['block_size']) {
-        $tablePagination = ui_pagination($count_modules, false, $offset, 0, true, 'offset', false);
+        $show_count = false;
+        if (is_metaconsole() === true) {
+            $show_count = true;
+        }
+
+        $tablePagination = ui_pagination($count_modules, false, $offset, 0, true, 'offset', $show_count);
     }
 } else {
     ui_print_info_message(['no_close' => true, 'message' => __('Please apply a filter to display the data')]);

From 1b034d696ca7d3893045c3857f275b7cd2e00af3 Mon Sep 17 00:00:00 2001
From: daniel <daniel.barbero@artica.es>
Date: Wed, 20 Dec 2023 13:54:20 +0100
Subject: [PATCH 063/231] fix timezone events pandora_enterprise#12677

---
 pandora_console/operation/events/events.php | 31 ++++++---------------
 1 file changed, 8 insertions(+), 23 deletions(-)

diff --git a/pandora_console/operation/events/events.php b/pandora_console/operation/events/events.php
index e0263ea844..fc04211ef6 100644
--- a/pandora_console/operation/events/events.php
+++ b/pandora_console/operation/events/events.php
@@ -641,32 +641,17 @@ if (is_ajax() === true) {
                         }
 
                         if (empty($user_timezone) === true) {
-                            if (date_default_timezone_get() !== $config['timezone']) {
-                                $timezone = timezone_open(date_default_timezone_get());
-                                $datetime_eur = date_create('now', timezone_open($config['timezone']));
-                                $dif = timezone_offset_get($timezone, $datetime_eur);
-                                date($config['date_format'], $dif);
-                                if (!date('I')) {
-                                    // For summer -3600sec.
-                                    $dif -= 3600;
-                                }
-
-                                $total_sec = strtotime($tmp->timestamp);
-                                $total_sec += $dif;
-                                $last_contact = date($config['date_format'], $total_sec);
-                                $last_contact_value = ui_print_timestamp($last_contact, true, $options);
-                            } else {
-                                $title = date($config['date_format'], strtotime($tmp->timestamp));
-                                $value = ui_print_timestamp(strtotime($tmp->timestamp), true, $options);
-                                $last_contact_value = '<span title="'.$title.'">'.$value.'</span>';
+                            $user_timezone = $config['timezone'];
+                            if (empty($user_timezone) === true) {
+                                $user_timezone = date_default_timezone_get();
                             }
-                        } else {
-                            date_default_timezone_set($user_timezone);
-                            $title = date($config['date_format'], strtotime($tmp->timestamp));
-                            $value = ui_print_timestamp(strtotime($tmp->timestamp), true, $options);
-                            $last_contact_value = '<span title="'.$title.'">'.$value.'</span>';
                         }
 
+                        date_default_timezone_set($user_timezone);
+                        $title = date($config['date_format'], $tmp->utimestamp);
+                        $value = ui_print_timestamp($tmp->utimestamp, true, $options);
+                        $last_contact_value = '<span title="'.$title.'">'.$value.'</span>';
+
                         $tmp->timestamp = $last_contact_value;
 
                         if (is_numeric($tmp->data) === true) {

From 5194bd165c24c350e03b1206692bb6522ee0c19b Mon Sep 17 00:00:00 2001
From: Jonathan <jonathan.leon@pandorafms.com>
Date: Wed, 20 Dec 2023 15:14:16 +0100
Subject: [PATCH 064/231] #12156 fix notification group

---
 .../include/functions_notifications.php          | 16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)

diff --git a/pandora_console/include/functions_notifications.php b/pandora_console/include/functions_notifications.php
index c65c475550..9e7db33bae 100644
--- a/pandora_console/include/functions_notifications.php
+++ b/pandora_console/include/functions_notifications.php
@@ -636,13 +636,15 @@ function notifications_get_user_label_status($source, $user, $label)
     );
 
     // Clean default common groups error for mesagges.
+    $group_enable = true;
     if ($common_groups[0] === 0) {
         unset($common_groups[0]);
+        $group_enable = false;
     }
 
     // No group found, return no permissions.
     $value = empty($common_groups) ? false : $source[$label];
-    return notifications_build_user_enable_return($value, false);
+    return notifications_build_user_enable_return($value, $group_enable);
 }
 
 
@@ -674,6 +676,18 @@ function notifications_set_user_label_status($source, $user, $label, $value)
         return false;
     }
 
+    $eixsts = db_get_row('tnotification_source_user', 'id_user', $user);
+    if ($eixsts === false) {
+        db_process_sql_insert(
+            'tnotification_source_user',
+            [
+                'id_user'   => $user,
+                'id_source' => $source,
+                'enabled'   => '1',
+            ]
+        );
+    }
+
     return (bool) db_process_sql_update(
         'tnotification_source_user',
         [$label => $value],

From 87cfc51793adfae4df1c93e6ac6151af9bb98841 Mon Sep 17 00:00:00 2001
From: Jonathan <jonathan.leon@pandorafms.com>
Date: Wed, 20 Dec 2023 17:19:18 +0100
Subject: [PATCH 065/231] #12674 fix sort custom reports

---
 .../godmode/reporting/graph_builder.graph_editor.php            | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pandora_console/godmode/reporting/graph_builder.graph_editor.php b/pandora_console/godmode/reporting/graph_builder.graph_editor.php
index 0256c28f92..85000cfdb8 100644
--- a/pandora_console/godmode/reporting/graph_builder.graph_editor.php
+++ b/pandora_console/godmode/reporting/graph_builder.graph_editor.php
@@ -464,7 +464,7 @@ function added_ids_sorted_items_to_hidden_input() {
     var ids = '';
     var first = true;
 
-    $("input.selected_check:checked").each(function(i, val) {
+    $("input.custom_checkbox_input:checked").each(function(i, val) {
         if (!first)
             ids = ids + '|';
         first = false;

From d16f8e689381d63e7853393c377013aa666c42e0 Mon Sep 17 00:00:00 2001
From: Jonathan <jonathan.leon@pandorafms.com>
Date: Thu, 21 Dec 2023 10:22:32 +0100
Subject: [PATCH 066/231] #12666 fix events severity color for firefox

---
 pandora_console/include/styles/events.css | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/pandora_console/include/styles/events.css b/pandora_console/include/styles/events.css
index 8bcdd7187f..86d2b05f7b 100644
--- a/pandora_console/include/styles/events.css
+++ b/pandora_console/include/styles/events.css
@@ -129,6 +129,12 @@ table#table_events > tbody > tr > td.column-estado {
   padding: 0px !important;
   text-align: center;
 }
+@-moz-document url-prefix() {
+  table#table_events > tbody > tr,
+  table#table_events > tbody > tr > td {
+    height: 100%;
+  }
+}
 .sorting_desc {
   background: url(../../images/sort_down_green.png) no-repeat;
   background-position-x: left;

From 25d89708b81c01b29edbc73e67421b9877beca4c Mon Sep 17 00:00:00 2001
From: Daniel Maya <daniel.maya@pandorafms.com>
Date: Thu, 21 Dec 2023 13:07:35 +0100
Subject: [PATCH 067/231] #12638 Fixed label

---
 .../include/visual-console-client/vc.main.min.js       |  2 +-
 .../include/visual-console-client/vc.main.min.js.map   |  2 +-
 visual_console_client/src/Item.ts                      | 10 ++++++----
 3 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/pandora_console/include/visual-console-client/vc.main.min.js b/pandora_console/include/visual-console-client/vc.main.min.js
index b915558f86..f35c42722c 100644
--- a/pandora_console/include/visual-console-client/vc.main.min.js
+++ b/pandora_console/include/visual-console-client/vc.main.min.js
@@ -1,2 +1,2 @@
-(function(){"use strict";var __webpack_modules__={630:function(t,e,n){n.r(e),n.d(e,{FormContainer:function(){return a},InputGroup:function(){return s}});var r=n(510),i=function(){return i=Object.assign||function(t){for(var e,n=1,r=arguments.length;n<r;n++)for(var i in e=arguments[n])Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t},i.apply(this,arguments)},o=function(t,e,n){if(n||2===arguments.length)for(var r,i=0,o=e.length;i<o;i++)!r&&i in e||(r||(r=Array.prototype.slice.call(e,0,i)),r[i]=e[i]);return t.concat(r||Array.prototype.slice.call(e))},s=function(){function t(t,e){this._name="",this.currentData={},this.dataRequestedEventManager=new r.Z,this.name=t,this.initialData=e}return Object.defineProperty(t.prototype,"name",{get:function(){return this._name},set:function(t){if(0===t.length)throw new RangeError("empty name");this._name=t},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"data",{get:function(){return i({},this.currentData)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"element",{get:function(){if(null==this._element){var t=document.createElement("div");t.className="input-group input-group-".concat(this.name);var e=this.createContent();e instanceof Array?e.forEach(t.appendChild):t.appendChild(e),this._element=t}return this._element},enumerable:!1,configurable:!0}),t.prototype.reset=function(){this.currentData={}},t.prototype.updateData=function(t){this.currentData=i(i({},this.currentData),t)},t.prototype.requestData=function(t,e,n){this.dataRequestedEventManager.emit({identifier:t,params:e,done:n})},t.prototype.onDataRequested=function(t){return this.dataRequestedEventManager.on(t)},t}(),a=function(){function t(t,e,n){void 0===e&&(e=[]),void 0===n&&(n=[]);var i=this;this.inputGroupsByName={},this.enabledInputGroupNames=[],this.submitEventManager=new r.Z,this.itemDataRequestedEventManager=new r.Z,this.handleItemDataRequested=this.itemDataRequestedEventManager.emit,this.title=t,e.length>0&&(this.inputGroupsByName=e.reduce((function(t,e){return e.onDataRequested(i.handleItemDataRequested),t[e.name]=e,t}),this.inputGroupsByName)),n.length>0&&(this.enabledInputGroupNames=o(o([],this.enabledInputGroupNames,!0),n.filter((function(t){return null!=i.inputGroupsByName[t]})),!0))}return t.prototype.getInputGroup=function(t){return this.inputGroupsByName[t]||null},t.prototype.addInputGroup=function(t,e){return void 0===e&&(e=null),t.onDataRequested(this.handleItemDataRequested),this.inputGroupsByName[t.name]=t,this.enabledInputGroupNames=this.enabledInputGroupNames.filter((function(e){return e!==t.name})),null!==e?e<=0?this.enabledInputGroupNames=o([t.name],this.enabledInputGroupNames,!0):e>=this.enabledInputGroupNames.length?this.enabledInputGroupNames=o(o([],this.enabledInputGroupNames,!0),[t.name],!1):this.enabledInputGroupNames=o(o(o([],this.enabledInputGroupNames.slice(0,e),!0),[t.name],!1),this.enabledInputGroupNames.slice(e),!0):this.enabledInputGroupNames=o(o([],this.enabledInputGroupNames,!0),[t.name],!1),this},t.prototype.removeInputGroup=function(t){return delete this.inputGroupsByName[t],this.enabledInputGroupNames=this.enabledInputGroupNames.filter((function(e){return e!==t})),this},t.prototype.getFormElement=function(t){var e=this;void 0===t&&(t="update");var n=document.createElement("form");n.id="visual-console-item-edition",n.className="visual-console-item-edition",n.addEventListener("submit",(function(t){t.preventDefault(),e.submitEventManager.emit({nativeEvent:t,data:e.enabledInputGroupNames.reduce((function(t,n){return e.inputGroupsByName[n]&&(t=i(i({},t),e.inputGroupsByName[n].data)),t}),{})})}));var r=document.createElement("div");return r.className="input-groups",this.enabledInputGroupNames.forEach((function(t){e.inputGroupsByName[t]&&r.appendChild(e.inputGroupsByName[t].element)})),n.appendChild(r),n},t.prototype.reset=function(){var t=this;this.enabledInputGroupNames.forEach((function(e){t.inputGroupsByName[e]&&t.inputGroupsByName[e].reset()}))},t.prototype.onSubmit=function(t){return this.submitEventManager.on(t)},t.prototype.onInputGroupDataRequested=function(t){return this.itemDataRequestedEventManager.on(t)},t}()},478:function(t,e,n){n.d(e,{TB:function(){return l}});var r=n(541),i=n(510),o=n(630),s=function(){return s=Object.assign||function(t){for(var e,n=1,r=arguments.length;n<r;n++)for(var i in e=arguments[n])Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t},s.apply(this,arguments)},a=function(t){switch(t){case"up":case"right":case"down":case"left":return t;default:return"down"}};function l(t){if(null==t.id||isNaN(parseInt(t.id)))throw new TypeError("invalid id.");if(null==t.type||isNaN(parseInt(t.type)))throw new TypeError("invalid type.");return s(s({id:parseInt(t.id),type:parseInt(t.type),label:(0,r.JW)(t.label,null),labelPosition:a(t.labelPosition),isLinkEnabled:(0,r.gx)(t.isLinkEnabled),link:(0,r.JW)(t.link,null),isOnTop:(0,r.gx)(t.isOnTop),parentId:(0,r.I1)(t.parentId,null),aclGroupId:(0,r.I1)(t.aclGroupId,null),cacheExpiration:(0,r.I1)(t.cacheExpiration,null),colorStatus:(0,r.JW)(t.colorStatus,"#CCC"),cellId:(0,r.JW)(t.cellId,""),alertOutline:(0,r.gx)(t.alertOutline),ratio:(0,r.xn)(t.ratio,null)},(0,r.HY)(t)),(0,r.oF)(t))}var c=function(){function t(t,e,n){void 0===n&&(n=!1);var o=this;this.elementRef=document.createElement("div"),this.labelElementRef=document.createElement("div"),this.childElementRef=document.createElement("div"),this.clickEventManager=new i.Z,this.dblClickEventManager=new i.Z,this.movedEventManager=new i.Z,this.movementFinishedEventManager=new i.Z,this.resizedEventManager=new i.Z,this.resizeFinishedEventManager=new i.Z,this.removeEventManager=new i.Z,this.selectionChangedEventManager=new i.Z,this.disposables=[],this.debouncedMovementSave=(0,r.Ds)(500,(function(t,e){o._metadata.isBeingMoved=!1;var n={x:o.props.x,y:o.props.y},r={x:t,y:e};o.positionChanged(n,r)&&(o.move(t,e),o.movementFinishedEventManager.emit({item:o,prevPosition:n,newPosition:r}))})),this.removeMovement=null,this.debouncedResizementSave=(0,r.Ds)(500,(function(t,e){o._metadata.isBeingResized=!1;var n={width:o.props.width,height:o.props.height},r={width:t,height:e};o.sizeChanged(n,r)&&(o.resize(t,e),o.resizeFinishedEventManager.emit({item:o,prevSize:n,newSize:r}))})),this.removeResizement=null,this.itemProps=t,this._metadata=e,n||this.init()}return t.prototype.initMovementListener=function(t){var e=this;13!=this.props.type&&21!=this.props.type&&(this.removeMovement=(0,r.Dw)(t,(function(t,n){var r={x:e.props.x,y:e.props.y},i={x:t,y:n};e.meta=s(s({},e.meta),{isSelected:!0}),e.positionChanged(r,i)&&(e._metadata.isBeingMoved=!0,e.moveElement(t,n),e.movedEventManager.emit({item:e,prevPosition:r,newPosition:i}),e.debouncedMovementSave(t,n))})))},t.prototype.stopMovementListener=function(){this.removeMovement&&(this.removeMovement(),this.removeMovement=null)},t.prototype.initResizementListener=function(t){var e=this;13!=this.props.type&&21!=this.props.type&&(this.removeResizement=(0,r.Aq)(t,(function(t,n){if(e._metadata.isBeingResized=!0,e.props.label&&e.props.label.length>0){var r=e.labelElementRef.getBoundingClientRect(),i=r.width,o=r.height;switch(e.props.labelPosition){case"up":case"down":n-=o;break;case"left":case"right":t-=i}}var s={width:e.props.width,height:e.props.height},a={width:t,height:n};e.sizeChanged(s,a)&&(e.resizeElement(t,n),e.resizedEventManager.emit({item:e,prevSize:s,newSize:a}),e.debouncedResizementSave(t,n))})))},t.prototype.stopResizementListener=function(){this.removeResizement&&(this.removeResizement(),this.removeResizement=null)},t.prototype.init=function(){this.elementRef=this.createContainerDomElement(),this.labelElementRef=this.createLabelDomElement(),this.childElementRef=this.createDomElement(),this.elementRef.appendChild(this.childElementRef),this.elementRef.appendChild(this.labelElementRef),this.resizeElement(this.itemProps.width,this.itemProps.height),this.changeLabelPosition(this.itemProps.labelPosition)},t.prototype.createContainerDomElement=function(){var t,e=this;return this.props.isLinkEnabled?(t=document.createElement("a"),this.props.link?t.href=this.props.link:t.className="textDecorationNone"):(t=document.createElement("div")).className="textDecorationNone",t.classList.add("visual-console-item"),this.props.isOnTop&&t.classList.add("is-on-top"),t.style.left="".concat(this.props.x,"px"),t.style.top="".concat(this.props.y,"px"),this.props.alertOutline&&t.classList.add("is-alert-triggered"),t.addEventListener("dblclick",(function(t){e.meta.isBeingMoved||e.meta.isBeingResized||(e.unSelectItem(),e.selectItem(),e.dblClickEventManager.emit({item:e,nativeEvent:t}))})),t.addEventListener("click",(function(t){if(e.meta.editMode)t.preventDefault(),t.stopPropagation();else if(e.itemProps.isLinkEnabled&&null!=e.itemProps.link){var n=document.createElement("div");n.className="div-visual-console-spinner";var r=document.createElement("div");r.className="visual-console-spinner",n.appendChild(r);for(var i=t.composedPath(),o="visual-console-container",s=0;s<i.length;s++){var a=i[s];if(null!=a.id&&null!=a.id&&""!=a.id&&!0===a.id.includes(o)){o=a.id;break}}var l=document.getElementById(o);null!=l&&(l.classList.add("is-updating"),l.appendChild(n))}e.meta.isBeingMoved||e.meta.isBeingResized||e.clickEventManager.emit({item:e,nativeEvent:t})})),this.meta.maintenanceMode&&t.classList.add("is-maintenance"),this.meta.editMode&&t.classList.add("is-editing"),this.meta.isFetching&&t.classList.add("is-fetching"),this.meta.isUpdating&&t.classList.add("is-updating"),this.meta.isSelected&&t.classList.add("is-selected"),t},t.prototype.createLabelDomElement=function(){var t=document.createElement("div");t.className="visual-console-item-label";var e=this.getLabelWithMacrosReplaced();if(e.length>0){var n=document.createElement("table"),r=document.createElement("tr"),i=document.createElement("tr"),o=document.createElement("tr"),s=document.createElement("td");s.innerHTML=e,r.appendChild(s),n.appendChild(i),n.appendChild(r),n.appendChild(o),n.style.textAlign="center",t.appendChild(n)}return t},t.prototype.getLabelWithMacrosReplaced=function(){var t=this.props;return(0,r.No)([{macro:"_date_",value:(0,r.rN)(new Date)},{macro:"_time_",value:(0,r.bc)(new Date)},{macro:"_agent_",value:null!=t.agentAlias?t.agentAlias:""},{macro:"_agentdescription_",value:null!=t.agentDescription?t.agentDescription:""},{macro:"_address_",value:null!=t.agentAddress?t.agentAddress:""},{macro:"_module_",value:null!=t.moduleName?t.moduleName:""},{macro:"_moduledescription_",value:null!=t.moduleDescription?t.moduleDescription:""}],this.props.label||"")},t.prototype.updateDomElement=function(t){t.innerHTML=this.createDomElement().innerHTML},Object.defineProperty(t.prototype,"props",{get:function(){return s({},this.itemProps)},set:function(t){this.setProps(t)},enumerable:!1,configurable:!0}),t.prototype.setProps=function(t){var e=this.props;this.itemProps=t,this.shouldBeUpdated(e,t)&&this.render(e,this._metadata)},Object.defineProperty(t.prototype,"meta",{get:function(){return s({},this._metadata)},set:function(t){this.setMeta(t)},enumerable:!1,configurable:!0}),t.prototype.setMeta=function(t){var e=this._metadata;this._metadata=s(s({},e),t),void 0!==t.isSelected&&e.isSelected!==t.isSelected&&this.selectionChangedEventManager.emit({selected:t.isSelected}),this.render(this.itemProps,e)},t.prototype.shouldBeUpdated=function(t,e){return t!==e},t.prototype.render=function(t,e){void 0===t&&(t=null),void 0===e&&(e=null),t&&(1!==this.props.ratio&&13!=this.props.type&&(this.elementRef.style.transform="scale(".concat(this.props.ratio?this.props.ratio:1,")"),this.elementRef.style.transformOrigin="left top",this.elementRef.style.minWidth="max-content",this.elementRef.style.minHeight="max-content"),13!=t.type&&21!=t.type||this.updateDomElement(this.childElementRef)),t&&!this.positionChanged(t,this.props)||(this.moveElement(this.props.x,this.props.y),t&&13!=t.type&&21!=t.type&&this.updateDomElement(this.childElementRef)),t&&!this.sizeChanged(t,this.props)||(this.resizeElement(this.props.width,this.props.height),t&&13!=t.type&&21!=t.type&&this.updateDomElement(this.childElementRef));var n=this.labelElementRef.innerHTML,r=this.createLabelDomElement().innerHTML;if(n!==r&&(this.labelElementRef.innerHTML=r),t&&t.labelPosition===this.props.labelPosition||this.changeLabelPosition(this.props.labelPosition),t&&t.isOnTop===this.props.isOnTop||(this.props.isOnTop?this.elementRef.classList.add("is-on-top"):this.elementRef.classList.remove("is-on-top")),t&&t.isLinkEnabled!==this.props.isLinkEnabled){for(var i=this.createContainerDomElement(),o=this.elementRef.attributes,s=0;s<o.length;s++)if("id"!==o[s].nodeName){var a=this.elementRef.getAttributeNode(o[s].nodeName);if(null!==a){var l=a.cloneNode(!0);i.setAttributeNode(l)}}null!==this.elementRef.parentNode&&this.elementRef.parentNode.replaceChild(i,this.elementRef),this.elementRef=i,this.elementRef.appendChild(this.childElementRef),this.elementRef.appendChild(this.labelElementRef)}if(t&&this.props.isLinkEnabled&&t.link!==this.props.link&&null!==this.props.link&&this.elementRef.setAttribute("href",this.props.link),e&&e.editMode===this.meta.editMode&&e.maintenanceMode===this.meta.maintenanceMode||(this.meta.editMode&&!1===this.meta.maintenanceMode?(this.elementRef.classList.add("is-editing"),this.elementRef.classList.remove("is-alert-triggered")):(this.elementRef.classList.remove("is-editing"),this.props.alertOutline&&this.elementRef.classList.add("is-alert-triggered"))),e&&e.isFetching===this.meta.isFetching||(this.meta.isFetching?this.elementRef.classList.add("is-fetching"):this.elementRef.classList.remove("is-fetching")),!e||e.isUpdating!==this.meta.isUpdating){if(this.meta.isUpdating){this.elementRef.classList.add("is-updating");var c=document.createElement("div");c.className="div-visual-console-spinner";var p=document.createElement("div");p.className="visual-console-spinner",c.appendChild(p),this.elementRef.appendChild(c)}else{this.elementRef.classList.remove("is-updating");var u=this.elementRef.querySelector(".div-visual-console-spinner");if(null!==u){var d=u.parentElement;null!==d&&d.removeChild(u)}}this.updateDomElement(this.childElementRef)}e&&e.isSelected===this.meta.isSelected||(this.meta.isSelected?(this.elementRef.classList.add("is-selected"),this.elementRef.setAttribute("id","item-selected-move")):(this.elementRef.classList.remove("is-selected"),this.elementRef.removeAttribute("id")))},t.prototype.remove=function(){this.removeEventManager.emit({item:this}),this.disposables.forEach((function(t){try{t.dispose()}catch(t){}})),this.elementRef.remove()},t.prototype.positionChanged=function(t,e){return t.x!==e.x||t.y!==e.y},t.prototype.changeLabelPosition=function(t){switch(t){case"up":this.elementRef.style.flexDirection="column-reverse";break;case"left":this.elementRef.style.flexDirection="row-reverse";break;case"right":this.elementRef.style.flexDirection="row";break;default:this.elementRef.style.flexDirection="column"}var e=this.labelElementRef.getElementsByTagName("table"),n=e.length>0?e.item(0):null;if(n)switch(this.props.labelPosition){case"up":case"down":this.props.width>0&&(n.style.width="".concat(this.props.width,"px"),n.style.height="");break;case"left":case"right":this.props.height>0&&(n.style.width="",n.style.height="".concat(this.props.height,"px"))}},t.prototype.moveElement=function(t,e){this.elementRef.style.left="".concat(t,"px"),this.elementRef.style.top="".concat(e,"px")},t.prototype.move=function(t,e){this.moveElement(t,e),this.itemProps=s(s({},this.props),{x:t,y:e})},t.prototype.sizeChanged=function(t,e){return t.width!==e.width||t.height!==e.height},t.prototype.resizeElement=function(t,e){if(13!=this.props.type&&21!=this.props.type&&(this.childElementRef.style.width=t>0?"".concat(t,"px"):"",this.childElementRef.style.height=e>0?"".concat(e,"px"):""),this.props.label&&this.props.label.length>0){var n=this.labelElementRef.getElementsByTagName("table"),r=n.length>0?n.item(0):null;if(r)switch(this.props.labelPosition){case"up":case"down":r.style.width=t>0?"".concat(t,"px"):"";break;case"left":case"right":r.style.height=e>0?"".concat(e,"px"):""}}},t.prototype.resize=function(t,e){this.resizeElement(t,e),this.itemProps=s(s({},this.props),{width:t,height:e})},t.prototype.onClick=function(t){var e=this.clickEventManager.on(t);return this.disposables.push(e),e},t.prototype.onDblClick=function(t){var e=this.dblClickEventManager.on(t);return this.disposables.push(e),e},t.prototype.onMoved=function(t){var e=this.movedEventManager.on(t);return this.disposables.push(e),e},t.prototype.onMovementFinished=function(t){var e=this.movementFinishedEventManager.on(t);return this.disposables.push(e),e},t.prototype.onResized=function(t){var e=this.resizedEventManager.on(t);return this.disposables.push(e),e},t.prototype.onResizeFinished=function(t){var e=this.resizeFinishedEventManager.on(t);return this.disposables.push(e),e},t.prototype.onRemove=function(t){var e=this.removeEventManager.on(t);return this.disposables.push(e),e},t.prototype.onSelectionChanged=function(t){var e=this.selectionChangedEventManager.on(t);return this.disposables.push(e),e},t.prototype.selectItem=function(){this.meta=s(s({},this.meta),{isSelected:!0}),this.initMovementListener(this.elementRef),13!==this.props.type&&21!==this.props.type&&this.initResizementListener(this.elementRef)},t.prototype.unSelectItem=function(){this.meta=s(s({},this.meta),{isSelected:!1}),this.stopMovementListener(),13!==this.props.type&&this.stopResizementListener()},t.prototype.getFormContainer=function(){return t.getFormContainer(this.props)},t.getFormContainer=function(t){var e=t.type?function(t){var e="";switch(t){case 0:e=(0,r.t)("Static image");break;case 1:e=(0,r.t)("Module graph");break;case 2:case 6:case 7:case 8:e=(0,r.t)("Simple value");break;case 3:case 9:case 15:case 16:e=(0,r.t)("Percentile item");break;case 4:e=(0,r.t)("Label");break;case 5:e=(0,r.t)("Icon");break;case 10:e=(0,r.t)("Service");break;case 11:e=(0,r.t)("Group");break;case 12:e=(0,r.t)("Box");break;case 13:e=(0,r.t)("Line");break;case 14:e=(0,r.t)("Event history graph");break;case 17:e=(0,r.t)("Serialized pie graph");break;case 18:e=(0,r.t)("Bars graph");break;case 19:e=(0,r.t)("Clock");break;case 20:e=(0,r.t)("Color cloud");break;case 21:e=(0,r.t)("Network link");break;case 22:e=(0,r.t)("Odometer");break;case 23:e=(0,r.t)("Basic chart");break;default:e=(0,r.t)("Item")}return e}(t.type):(0,r.t)("Item");return new o.FormContainer(e,[],[])},t}();e.ZP=c},709:function(__unused_webpack_module,__webpack_exports__,__webpack_require__){__webpack_require__.d(__webpack_exports__,{K:function(){return barsGraphPropsDecoder}});var _lib__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(541),_Item__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(478),__extends=(extendStatics=function(t,e){return extendStatics=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},extendStatics(t,e)},function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function n(){this.constructor=t}extendStatics(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}),extendStatics,__assign=function(){return __assign=Object.assign||function(t){for(var e,n=1,r=arguments.length;n<r;n++)for(var i in e=arguments[n])Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t},__assign.apply(this,arguments)},parseBarsGraphProps=function(t){switch(t){case"white":case"black":case"transparent":return t;default:return"transparent"}},parseTypeGraph=function(t){switch(t){case"horizontal":case"vertical":return t;default:return"vertical"}};function barsGraphPropsDecoder(t){if((0,_lib__WEBPACK_IMPORTED_MODULE_0__.VJ)(t.html)&&(0,_lib__WEBPACK_IMPORTED_MODULE_0__.VJ)(t.encodedHtml))throw new TypeError("missing html content.");return __assign(__assign(__assign({},(0,_Item__WEBPACK_IMPORTED_MODULE_1__.TB)(t)),{type:18,html:(0,_lib__WEBPACK_IMPORTED_MODULE_0__.VJ)(t.html)?(0,_lib__WEBPACK_IMPORTED_MODULE_0__.NV)(t.encodedHtml):t.html,backgroundColor:parseBarsGraphProps(t.backgroundColor),typeGraph:parseTypeGraph(t.typeGraph),gridColor:(0,_lib__WEBPACK_IMPORTED_MODULE_0__.VJ)(t.gridColor)?"#000000":t.gridColor}),(0,_lib__WEBPACK_IMPORTED_MODULE_0__.MH)(t))}var BarsGraph=function(_super){function BarsGraph(){return null!==_super&&_super.apply(this,arguments)||this}return __extends(BarsGraph,_super),BarsGraph.prototype.createDomElement=function(){var element=document.createElement("div");element.innerHTML=this.props.html,element.className="bars-graph",!0!==this.props.agentDisabled&&!0!==this.props.moduleDisabled||(element.style.opacity="0.2");for(var scripts=element.getElementsByTagName("script"),_loop_1=function(i){0===scripts[i].src.length&&setTimeout((function(){try{eval(scripts[i].innerHTML.trim())}catch(t){}}),0)},i=0;i<scripts.length;i++)_loop_1(i);return element},BarsGraph.prototype.updateDomElement=function(element){element.innerHTML=this.props.html,!0!==this.props.agentDisabled&&!0!==this.props.moduleDisabled||(element.style.opacity="0.2");for(var scripts=element.getElementsByTagName("script"),i=0;i<scripts.length;i++)0===scripts[i].src.length&&eval(scripts[i].innerHTML.trim())},BarsGraph}(_Item__WEBPACK_IMPORTED_MODULE_1__.ZP);__webpack_exports__.Z=BarsGraph},880:function(__unused_webpack_module,__webpack_exports__,__webpack_require__){__webpack_require__.d(__webpack_exports__,{u:function(){return basicChartPropsDecoder}});var _lib__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(541),_Item__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(478),__extends=(extendStatics=function(t,e){return extendStatics=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},extendStatics(t,e)},function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function n(){this.constructor=t}extendStatics(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}),extendStatics,__assign=function(){return __assign=Object.assign||function(t){for(var e,n=1,r=arguments.length;n<r;n++)for(var i in e=arguments[n])Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t},__assign.apply(this,arguments)};function basicChartPropsDecoder(t){if((0,_lib__WEBPACK_IMPORTED_MODULE_0__.VJ)(t.html)&&(0,_lib__WEBPACK_IMPORTED_MODULE_0__.VJ)(t.encodedHtml))throw new TypeError("missing html content.");return __assign(__assign(__assign(__assign({},(0,_Item__WEBPACK_IMPORTED_MODULE_1__.TB)(t)),{type:23,html:(0,_lib__WEBPACK_IMPORTED_MODULE_0__.VJ)(t.html)?(0,_lib__WEBPACK_IMPORTED_MODULE_0__.NV)(t.encodedHtml):t.html,period:(0,_lib__WEBPACK_IMPORTED_MODULE_0__.I1)(t.period,null),value:parseFloat(t.value),status:(0,_lib__WEBPACK_IMPORTED_MODULE_0__.VJ)(t.status)?"#B2B2B2":t.status,moduleNameColor:(0,_lib__WEBPACK_IMPORTED_MODULE_0__.VJ)(t.moduleNameColor)?"#3f3f3f":t.moduleNameColor}),(0,_lib__WEBPACK_IMPORTED_MODULE_0__.MH)(t)),(0,_lib__WEBPACK_IMPORTED_MODULE_0__.bs)(t))}var BasicChart=function(_super){function BasicChart(){return null!==_super&&_super.apply(this,arguments)||this}return __extends(BasicChart,_super),BasicChart.prototype.createDomElement=function(){var element=document.createElement("div"),header=document.createElement("div");header.className="basic-chart-header";var moduleName=document.createElement("h2");moduleName.className="basic-chart-header-name",moduleName.textContent=this.props.moduleName,moduleName.style.color="".concat(this.props.moduleNameColor),header.appendChild(moduleName);var value="";null!==this.props.value&&(value=this.numberFormat(this.props.value,!1,"",2,1e3));var moduleValue=document.createElement("h2");moduleValue.className="basic-chart-header-value",moduleValue.textContent="".concat(value),moduleValue.style.color=this.props.status,header.appendChild(moduleValue),element.innerHTML=this.props.html,element.className="basic-chart",!0!==this.props.agentDisabled&&!0!==this.props.moduleDisabled||(element.style.opacity="0.2");for(var legendP=element.getElementsByTagName("p"),i=0;i<legendP.length;i++)legendP[i].style.margin="0px";for(var overviewGraphs=element.getElementsByClassName("overview_graph"),i=0;i<overviewGraphs.length;i++)overviewGraphs[i].remove();for(var scripts=element.getElementsByTagName("script"),_loop_1=function(i){0===scripts[i].src.length&&setTimeout((function(){try{eval(scripts[i].innerHTML.trim())}catch(t){}}),0)},i=0;i<scripts.length;i++)_loop_1(i);return element.innerHTML=this.props.html,element.insertBefore(header,element.firstChild),element},BasicChart.prototype.updateDomElement=function(element){var header=document.createElement("div");header.className="basic-chart-header";var moduleName=document.createElement("h2");moduleName.className="basic-chart-header-name",moduleName.textContent=this.props.moduleName,moduleName.style.color="".concat(this.props.moduleNameColor),header.appendChild(moduleName);var value="";null!==this.props.value&&(value=this.numberFormat(this.props.value,!1,"",2,1e3));var moduleValue=document.createElement("h2");moduleValue.className="basic-chart-header-value",moduleValue.textContent="".concat(value),moduleValue.style.color=this.props.status,header.appendChild(moduleValue),element.innerHTML=this.props.html,element.insertBefore(header,element.firstChild);for(var legendP=element.getElementsByTagName("p"),i=0;i<legendP.length;i++)legendP[i].style.margin="0px";for(var overviewGraphs=element.getElementsByClassName("overview_graph"),i=0;i<overviewGraphs.length;i++)overviewGraphs[i].remove();for(var scripts=element.getElementsByTagName("script"),i=0;i<scripts.length;i++)0===scripts[i].src.length&&eval(scripts[i].innerHTML.trim())},BasicChart.prototype.numberFormat=function(t,e,n,r,i){if(i=void 0!==i?i:1e3,r||(r=99),e){if(Math.round(t)!=t)return""}else{r++;var o=this.pad("1",r,0);t=Math.round(t*Number.parseInt(o))/Number.parseInt(o)}for(var s=0;Math.abs(t)>=i;)s++,t/=i;return t=i?Math.round(2*t)/2:Math.round(2*t),isNaN(t)&&(t=0),t+" "+["","K","M","G","T","P","E","Z","Y"][s]+n},BasicChart.prototype.pad=function(t,e,n){var r=t+"";return e<=r.length?r:this.pad(r+n,e,n)},BasicChart}(_Item__WEBPACK_IMPORTED_MODULE_1__.ZP);__webpack_exports__.Z=BasicChart},369:function(__unused_webpack_module,__webpack_exports__,__webpack_require__){__webpack_require__.d(__webpack_exports__,{p:function(){return donutGraphPropsDecoder}});var _lib__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(541),_Item__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(478),__extends=(extendStatics=function(t,e){return extendStatics=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},extendStatics(t,e)},function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function n(){this.constructor=t}extendStatics(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}),extendStatics,__assign=function(){return __assign=Object.assign||function(t){for(var e,n=1,r=arguments.length;n<r;n++)for(var i in e=arguments[n])Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t},__assign.apply(this,arguments)};function donutGraphPropsDecoder(t){if((0,_lib__WEBPACK_IMPORTED_MODULE_0__.VJ)(t.html)&&(0,_lib__WEBPACK_IMPORTED_MODULE_0__.VJ)(t.encodedHtml))throw new TypeError("missing html content.");return __assign(__assign(__assign(__assign({},(0,_Item__WEBPACK_IMPORTED_MODULE_1__.TB)(t)),{type:17,html:(0,_lib__WEBPACK_IMPORTED_MODULE_0__.VJ)(t.html)?(0,_lib__WEBPACK_IMPORTED_MODULE_0__.NV)(t.encodedHtml):t.html,legendBackgroundColor:(0,_lib__WEBPACK_IMPORTED_MODULE_0__.VJ)(t.legendBackgroundColor)?"#ffffff":t.legendBackgroundColor}),(0,_lib__WEBPACK_IMPORTED_MODULE_0__.MH)(t)),(0,_lib__WEBPACK_IMPORTED_MODULE_0__.bs)(t))}var DonutGraph=function(_super){function DonutGraph(){return null!==_super&&_super.apply(this,arguments)||this}return __extends(DonutGraph,_super),DonutGraph.prototype.createDomElement=function(){var element=document.createElement("div");element.className="donut-graph",element.innerHTML=this.props.html,element.style.backgroundColor=this.props.legendBackgroundColor,!0!==this.props.agentDisabled&&!0!==this.props.moduleDisabled||(element.style.opacity="0.2");for(var scripts=element.getElementsByTagName("script"),_loop_1=function(i){0===scripts[i].src.length&&setTimeout((function(){try{eval(scripts[i].innerHTML.trim())}catch(t){}}),0)},i=0;i<scripts.length;i++)_loop_1(i);return element},DonutGraph.prototype.updateDomElement=function(element){element.innerHTML=this.props.html,element.style.backgroundColor=this.props.legendBackgroundColor,!0!==this.props.agentDisabled&&!0!==this.props.moduleDisabled||(element.style.opacity="0.2");for(var scripts=element.getElementsByTagName("script"),i=0;i<scripts.length;i++)0===scripts[i].src.length&&eval(scripts[i].innerHTML.trim())},DonutGraph}(_Item__WEBPACK_IMPORTED_MODULE_1__.ZP);__webpack_exports__.Z=DonutGraph},280:function(__unused_webpack_module,__webpack_exports__,__webpack_require__){__webpack_require__.d(__webpack_exports__,{o:function(){return eventsHistoryPropsDecoder}});var _lib__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(541),_Item__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(478),__extends=(extendStatics=function(t,e){return extendStatics=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},extendStatics(t,e)},function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function n(){this.constructor=t}extendStatics(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}),extendStatics,__assign=function(){return __assign=Object.assign||function(t){for(var e,n=1,r=arguments.length;n<r;n++)for(var i in e=arguments[n])Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t},__assign.apply(this,arguments)};function eventsHistoryPropsDecoder(t){if((0,_lib__WEBPACK_IMPORTED_MODULE_0__.VJ)(t.html)&&(0,_lib__WEBPACK_IMPORTED_MODULE_0__.VJ)(t.encodedHtml))throw new TypeError("missing html content.");return __assign(__assign(__assign({},(0,_Item__WEBPACK_IMPORTED_MODULE_1__.TB)(t)),{type:14,maxTime:(0,_lib__WEBPACK_IMPORTED_MODULE_0__.I1)(t.maxTime,null),legendColor:t.legendColor,html:(0,_lib__WEBPACK_IMPORTED_MODULE_0__.VJ)(t.html)?(0,_lib__WEBPACK_IMPORTED_MODULE_0__.NV)(t.encodedHtml):t.html}),(0,_lib__WEBPACK_IMPORTED_MODULE_0__.MH)(t))}var EventsHistory=function(_super){function EventsHistory(){return null!==_super&&_super.apply(this,arguments)||this}return __extends(EventsHistory,_super),EventsHistory.prototype.createDomElement=function(){var element=document.createElement("div");element.className="events-history",element.innerHTML=this.props.html,!0!==this.props.agentDisabled&&!0!==this.props.moduleDisabled||(element.style.opacity="0.2");for(var scripts=element.getElementsByTagName("script"),_loop_1=function(i){0===scripts[i].src.length&&setTimeout((function(){try{eval(scripts[i].innerHTML.trim())}catch(t){}}),0)},i=0;i<scripts.length;i++)_loop_1(i);var flotText=element.getElementsByClassName("noresizevc");return flotText[0].style.color=this.props.legendColor,element},EventsHistory.prototype.updateDomElement=function(element){element.innerHTML=this.props.html;var aux=document.createElement("div");aux.innerHTML=this.props.html;for(var scripts=aux.getElementsByTagName("script"),i=0;i<scripts.length;i++)0===scripts[i].src.length&&eval(scripts[i].innerHTML.trim());var flotText=element.getElementsByClassName("noresizevc");flotText[0].style.color=this.props.legendColor},EventsHistory}(_Item__WEBPACK_IMPORTED_MODULE_1__.ZP);__webpack_exports__.Z=EventsHistory},600:function(__unused_webpack_module,__webpack_exports__,__webpack_require__){__webpack_require__.d(__webpack_exports__,{C:function(){return moduleGraphPropsDecoder}});var _lib__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(541),_Item__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(478),__extends=(extendStatics=function(t,e){return extendStatics=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},extendStatics(t,e)},function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function n(){this.constructor=t}extendStatics(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}),extendStatics,__assign=function(){return __assign=Object.assign||function(t){for(var e,n=1,r=arguments.length;n<r;n++)for(var i in e=arguments[n])Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t},__assign.apply(this,arguments)},parseBackgroundType=function(t){switch(t){case"white":case"black":case"transparent":return t;default:return"transparent"}},parseGraphType=function(t){switch(t){case"line":case"area":return t;default:return"line"}};function moduleGraphPropsDecoder(t){if((0,_lib__WEBPACK_IMPORTED_MODULE_0__.VJ)(t.html)&&(0,_lib__WEBPACK_IMPORTED_MODULE_0__.VJ)(t.encodedHtml))throw new TypeError("missing html content.");return __assign(__assign(__assign(__assign({},(0,_Item__WEBPACK_IMPORTED_MODULE_1__.TB)(t)),{type:1,html:(0,_lib__WEBPACK_IMPORTED_MODULE_0__.VJ)(t.html)?(0,_lib__WEBPACK_IMPORTED_MODULE_0__.NV)(t.encodedHtml):t.html,backgroundType:parseBackgroundType(t.backgroundType),period:(0,_lib__WEBPACK_IMPORTED_MODULE_0__.I1)(t.period,null),graphType:parseGraphType(t.graphType),customGraphId:(0,_lib__WEBPACK_IMPORTED_MODULE_0__.I1)(t.customGraphId,null)}),(0,_lib__WEBPACK_IMPORTED_MODULE_0__.MH)(t)),(0,_lib__WEBPACK_IMPORTED_MODULE_0__.bs)(t))}var ModuleGraph=function(_super){function ModuleGraph(){return null!==_super&&_super.apply(this,arguments)||this}return __extends(ModuleGraph,_super),ModuleGraph.prototype.createDomElement=function(){var element=document.createElement("div");element.innerHTML=this.props.html,element.className="module-graph",!0!==this.props.agentDisabled&&!0!==this.props.moduleDisabled||(element.style.opacity="0.2");for(var scripts=element.getElementsByTagName("script"),_loop_1=function(i){0===scripts[i].src.length&&setTimeout((function(){try{eval(scripts[i].innerHTML.trim())}catch(t){}}),0)},i=0;i<scripts.length;i++)_loop_1(i);return element},ModuleGraph.prototype.updateDomElement=function(element){element.innerHTML=this.props.html,!0!==this.props.agentDisabled&&!0!==this.props.moduleDisabled||(element.style.opacity="0.2");for(var scripts=element.getElementsByTagName("script"),i=0;i<scripts.length;i++)0===scripts[i].src.length&&eval(scripts[i].innerHTML.trim())},ModuleGraph}(_Item__WEBPACK_IMPORTED_MODULE_1__.ZP);__webpack_exports__.Z=ModuleGraph},830:function(t,e){var n="http://www.w3.org/2000/svg";e.Z=function(t,e,r){var i=void 0===r?{}:r,o=i.size,s=i.color,a=i.spin,l=i.pulse,c=document.createElement("figure");c.title=e,c.className="fa fa-".concat(t.iconName),o&&c.classList.add("fa-".concat(o)),a?c.classList.add("fa-spin"):l&&c.classList.add("fa-pulse");var p=document.createElementNS(n,"svg");p.setAttribute("viewBox","0 0 ".concat(t.icon[0]," ").concat(t.icon[1])),s&&p.setAttribute("fill",s);var u=document.createElementNS(n,"path"),d="string"==typeof t.icon[4]?t.icon[4]:t.icon[4][0];return u.setAttribute("d",d),p.appendChild(u),c.appendChild(p),c}},510:function(t,e){e.Z=function(){var t=this;this.listeners=[],this.listenersOncer=[],this.on=function(e){return t.listeners.push(e),{dispose:function(){return t.off(e)}}},this.once=function(e){t.listenersOncer.push(e)},this.off=function(e){var n=t.listeners.indexOf(e);n>-1&&t.listeners.splice(n,1)},this.emit=function(e){t.listeners.forEach((function(t){return t(e)})),t.listenersOncer.forEach((function(t){return t(e)})),t.listenersOncer=[]},this.pipe=function(e){return t.on((function(t){return e.emit(t)}))}}},541:function(t,e,n){n.d(e,{Dw:function(){return M},Aq:function(){return x},Ds:function(){return E},NV:function(){return _},fk:function(){return k},rN:function(){return y},bc:function(){return v},SM:function(){return m},bs:function(){return h},MH:function(){return d},JW:function(){return a},gx:function(){return l},xn:function(){return o},I1:function(){return i},oF:function(){return p},OR:function(){return f},No:function(){return g},HY:function(){return u},VJ:function(){return s},t:function(){return C}});var r=function(){return r=Object.assign||function(t){for(var e,n=1,r=arguments.length;n<r;n++)for(var i in e=arguments[n])Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t},r.apply(this,arguments)};function i(t,e){return"number"==typeof t?t:"string"==typeof t&&t.length>0&&!isNaN(parseInt(t))?parseInt(t):e}function o(t,e){return"number"==typeof t?t:"string"==typeof t&&t.length>0&&!isNaN(parseFloat(t))?parseFloat(t):e}function s(t){return null==t||0===t.length}function a(t,e){return"string"==typeof t&&t.length>0?t:e}function l(t){return"boolean"==typeof t?t:"number"==typeof t?t>0:"string"==typeof t&&("1"===t||"true"===t)}function c(t,e,n){void 0===n&&(n=" "),"number"==typeof t&&(t="".concat(t)),"number"==typeof n&&(n="".concat(n));var r=e-t.length;if(0===r)return t;if(r<0)return t.substr(Math.abs(r));if(r===n.length)return"".concat(n).concat(t);if(r<n.length)return"".concat(n.substring(0,r)).concat(t);for(var i=Math.floor(r/n.length),o=r-n.length*i,s="",a=0;a<i;a++)s+=n;return 0===o?"".concat(s).concat(t):"".concat(s).concat(n.substring(0,o)).concat(t)}function p(t){return{x:i(t.x,0),y:i(t.y,0)}}function u(t){if(null==t.width||isNaN(parseInt(t.width))||null==t.height||isNaN(parseInt(t.height)))throw new TypeError("invalid size.");return{width:parseInt(t.width),height:parseInt(t.height)}}function d(t){return r({moduleId:i(t.moduleId,null),moduleName:a(t.moduleName,null),moduleDescription:a(t.moduleDescription,null),moduleDisabled:l(t.moduleDisabled)},function(t){var e={agentId:i(t.agentId,null),agentName:a(t.agentName,null),agentAlias:a(t.agentAlias,null),agentDescription:a(t.agentDescription,null),agentAddress:a(t.agentAddress,null),agentDisabled:l(t.agentDisabled)};return null!=t.metaconsoleId?r({metaconsoleId:t.metaconsoleId},e):e}(t))}function h(t){var e={linkedLayoutStatusType:"default"};switch(t.linkedLayoutStatusType){case"weight":var n=i(t.linkedLayoutStatusTypeWeight,null);if(null==n)throw new TypeError("invalid status calculation properties.");t.linkedLayoutStatusTypeWeight&&(e={linkedLayoutStatusType:"weight",linkedLayoutStatusTypeWeight:n});break;case"service":var o=i(t.linkedLayoutStatusTypeWarningThreshold,null),s=i(t.linkedLayoutStatusTypeCriticalThreshold,null);if(null==o||null==s)throw new TypeError("invalid status calculation properties.");e={linkedLayoutStatusType:"service",linkedLayoutStatusTypeWarningThreshold:o,linkedLayoutStatusTypeCriticalThreshold:s}}return r({linkedLayoutId:i(t.linkedLayoutId,null),linkedLayoutNodeId:i(t.linkedLayoutNodeId,null)},e)}function m(t){var e,n=(null,(e=t.receivedAt)instanceof Date?e:"number"==typeof e?new Date(1e3*e):"string"!=typeof e||Number.isNaN(new Date(e).getTime())?null:new Date(e));if(null===n)throw new TypeError("invalid meta structure");var r=null;return t.error instanceof Error?r=t.error:"string"==typeof t.error&&(r=new Error(t.error)),{receivedAt:n,error:r,editMode:l(t.editMode),maintenanceMode:l(t.maintenanceMode),isFromCache:l(t.isFromCache),isFetching:!1,isUpdating:!1,isBeingMoved:!1,isBeingResized:!1,isSelected:!1,lineMode:!1}}function f(t,e){var n="".concat(t,": ").concat(e,";");return["-webkit-".concat(n),"-moz-".concat(n),"-ms-".concat(n),"-o-".concat(n),"".concat(n)]}function _(t){return decodeURIComponent(escape(window.atob(t)))}function y(t,e){if(void 0===e&&(e=null),e&&Intl&&Intl.DateTimeFormat)return Intl.DateTimeFormat(e,{day:"2-digit",month:"2-digit",year:"numeric"}).format(t);var n=c(t.getDate(),2,0),r=c(t.getMonth()+1,2,0),i=c(t.getFullYear(),4,0);return"".concat(n,"/").concat(r,"/").concat(i)}function v(t){var e=c(t.getHours(),2,0),n=c(t.getMinutes(),2,0),r=c(t.getSeconds(),2,0);return"".concat(e,":").concat(n,":").concat(r)}function g(t,e){return t.reduce((function(t,e){var n=e.macro,r=e.value;return t.replace(n,r)}),e)}function b(t,e){var n=0;return function(){for(var r=[],i=0;i<arguments.length;i++)r[i]=arguments[i];var o=Date.now();if(!(o-n<t))return n=o,e.apply(void 0,r)}}function E(t,e){var n=null;return function(){for(var r=[],i=0;i<arguments.length;i++)r[i]=arguments[i];null!==n&&window.clearTimeout(n),n=window.setTimeout((function(){e.apply(void 0,r),n=null}),t)}}function w(t,e){for(var n=0,r=0;t&&!Number.isNaN(t.offsetLeft)&&!Number.isNaN(t.offsetTop)&&t!==e;)n+=t.offsetLeft-t.scrollLeft,r+=t.offsetTop-t.scrollTop,t=t.offsetParent;return{top:r,left:n}}function M(t,e,n){var r=n||t.parentElement,i=t.draggable,o=0,s=0,a=0,l=0,c=0,p=0,u=r.getBoundingClientRect(),d=w(r),h=d.top,m=h+u.height,f=d.left,_=f+u.width,y=t.getBoundingClientRect(),v=window.getComputedStyle(t).borderWidth||"0",g=2*Number.parseInt(v),M=E(32,e),x=b(16,e),C=function(t){var e=0,n=0,r=t.pageX,i=t.pageY,d=r-a,v=i-l,b=u.width-y.width+g,E=u.height-y.height+g,w=r<f||0===o&&d>0&&r<f+c,C=r>_||d+o+y.width-g>u.width||o===b&&d<0&&r>f+b+c,k=i<h||0===s&&v>0&&i<h+p,P=i>m||v+s+y.height-g>u.height||s===E&&v<0&&i>h+E+p;(e=w?0:C?b:d+o)<0&&(e=0),(n=k?0:P?E:v+s)<0&&(n=0),a=r,l=i,e===o&&n===s||(x(e,n),M(e,n),o=e,s=n)},k=function(){o=0,s=0,a=0,l=0,document.removeEventListener("mousemove",C),document.removeEventListener("mouseup",k),t.draggable=i,document.body.style.userSelect="auto"},P=function(e){if(2!==e.button){e.stopPropagation(),t.draggable=!1,t.setAttribute("ondragstart","return false;"),t.setAttribute("draggable","false");var n=w(t,r);o=n.left,s=n.top,a=e.pageX,l=e.pageY,c=e.offsetX,p=e.offsetY,u=r.getBoundingClientRect(),d=w(r),h=d.top,m=h+u.height,f=d.left,_=f+u.width,y=t.getBoundingClientRect(),v=window.getComputedStyle(t).borderWidth||"0",g=2*Number.parseInt(v),document.addEventListener("mousemove",C),document.addEventListener("mouseup",k),document.body.style.userSelect="none"}};return t.addEventListener("mousedown",P),function(){t.removeEventListener("mousedown",P),k()}}function x(t,e){var n=document.createElement("div");n.className="resize-draggable",t.appendChild(n);var r=t.parentElement,i=t.draggable,o=0,s=0,a=0,l=0,c=0,p=r.getBoundingClientRect(),u=w(r),d=u.top,h=d+p.height,m=u.left,f=m+p.width,_=w(t),y=_.top,v=_.left,g=window.getComputedStyle(t).borderWidth||"0",M=Number.parseInt(g),x=E(32,e),C=b(16,e),k=function(t){var e=o+(t.pageX-a),n=s+(t.pageY-l);e===o&&n===s||e<o&&t.pageX>v+(o-c)||(e<15?e=15:e+v-M/2>=f&&(e=f-v),n<15?n=15:n+y-M/2>=h&&(n=h-y),C(e,n),x(e,n),o=e,s=n,a=t.pageX,l=t.pageY)},P=function(){o=0,s=0,a=0,l=0,c=0,document.removeEventListener("mousemove",k),document.removeEventListener("mouseup",P),t.draggable=i,document.body.style.userSelect="auto"};return n.addEventListener("mousedown",(function(e){e.stopPropagation(),t.draggable=!1;var n=t.getBoundingClientRect(),i=n.width,g=n.height;o=i,s=g,a=e.pageX,l=e.pageY,c=e.offsetX,e.offsetY,p=r.getBoundingClientRect(),u=w(r),d=u.top,h=d+p.height,m=u.left,f=m+p.width,_=w(t),y=_.top,v=_.left,document.addEventListener("mousemove",k),document.addEventListener("mouseup",P),document.body.style.userSelect="none"})),function(){n.remove(),P()}}function C(t){return t}function k(t,e,n){return void 0===e&&(e=140),void 0===n&&(n="…"),t.trim().length>e?t.substr(0,e).trim()+n:t}}},__webpack_module_cache__={};function __webpack_require__(t){var e=__webpack_module_cache__[t];if(void 0!==e)return e.exports;var n=__webpack_module_cache__[t]={exports:{}};return __webpack_modules__[t](n,n.exports,__webpack_require__),n.exports}__webpack_require__.d=function(t,e){for(var n in e)__webpack_require__.o(e,n)&&!__webpack_require__.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},__webpack_require__.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},__webpack_require__.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var __webpack_exports__={};!function(){var t,e=__webpack_require__(541),n=__webpack_require__(478),r=(t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},t(e,n)},function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}),i=function(){return i=Object.assign||function(t){for(var e,n=1,r=arguments.length;n<r;n++)for(var i in e=arguments[n])Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t},i.apply(this,arguments)},o=function(t){switch(t){case"default":case"enabled":case"disabled":return t;default:return"default"}};function s(t){if("string"!=typeof t.imageSrc||0===t.imageSrc.length)throw new TypeError("invalid image src.");return i(i(i(i({},(0,n.TB)(t)),{type:0,imageSrc:t.imageSrc,showLastValueTooltip:o(t.showLastValueTooltip),statusImageSrc:(0,e.JW)(t.statusImageSrc,null),lastValue:(0,e.JW)(t.lastValue,null)}),(0,e.MH)(t)),(0,e.bs)(t))}var a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r(e,t),e.prototype.createDomElement=function(){var t=this.props.statusImageSrc||this.props.imageSrc,e=document.createElement("div");return e.className="static-graph",e.setAttribute("ondragstart","return false;"),e.setAttribute("draggable","false"),e.style.backgroundImage="url(".concat(t,")"),e.style.backgroundRepeat="no-repeat",e.style.backgroundSize="contain",e.style.backgroundPosition="center",!0!==this.props.agentDisabled&&!0!==this.props.moduleDisabled||(e.style.opacity="0.2"),null!==this.props.lastValue&&"disabled"!==this.props.showLastValueTooltip&&(e.className="static-graph image forced_title",e.setAttribute("data-use_title_for_force_title","1"),e.setAttribute("data-title",this.props.lastValue)),e},e.prototype.updateDomElement=function(t){var e=this.props.statusImageSrc||this.props.imageSrc;t.style.backgroundImage="url(".concat(e,")")},e}(n.ZP),l=a,c=function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},t(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),p=function(){return p=Object.assign||function(t){for(var e,n=1,r=arguments.length;n<r;n++)for(var i in e=arguments[n])Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t},p.apply(this,arguments)};function u(t){if("string"!=typeof t.imageSrc||0===t.imageSrc.length)throw new TypeError("invalid image src.");if("string"!=typeof t.image||0===t.image.length)throw new TypeError("invalid image.");return p(p(p({},(0,n.TB)(t)),{type:5,image:t.image,imageSrc:t.imageSrc}),(0,e.bs)(t))}var d=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return c(e,t),e.prototype.createDomElement=function(){var t=document.createElement("div");return t.className="icon "+this.props.image,t.style.backgroundImage="url(".concat(this.props.imageSrc,")"),t.style.backgroundRepeat="no-repeat",t.style.backgroundSize="contain",t.style.backgroundPosition="center",t},e.prototype.updateDomElement=function(t){t.style.backgroundImage="url(".concat(this.props.imageSrc,")")},e}(n.ZP),h=d,m=__webpack_require__(630),f=__webpack_require__(830),_={prefix:"fas",iconName:"plus-circle",icon:[512,512,[],"f055","M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm144 276c0 6.6-5.4 12-12 12h-92v92c0 6.6-5.4 12-12 12h-56c-6.6 0-12-5.4-12-12v-92h-92c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h92v-92c0-6.6 5.4-12 12-12h56c6.6 0 12 5.4 12 12v92h92c6.6 0 12 5.4 12 12v56z"]},y={prefix:"fas",iconName:"trash-alt",icon:[448,512,[],"f2ed","M32 464a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48V128H32zm272-256a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zm-96 0a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zm-96 0a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zM432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"]},v=function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},t(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),g=function(){return g=Object.assign||function(t){for(var e,n=1,r=arguments.length;n<r;n++)for(var i in e=arguments[n])Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t},g.apply(this,arguments)},b=function(t,e,n){if(n||2===arguments.length)for(var r,i=0,o=e.length;i<o;i++)!r&&i in e||(r||(r=Array.prototype.slice.call(e,0,i)),r[i]=e[i]);return t.concat(r||Array.prototype.slice.call(e))};function E(t){if("string"!=typeof t.color||0===t.color.length)throw new TypeError("invalid color.");return g(g(g(g({},(0,n.TB)(t)),{type:20,color:t.color,defaultColor:t.defaultColor,colorRanges:t.colorRanges}),(0,e.MH)(t)),(0,e.bs)(t))}var w=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return v(n,t),n.prototype.createContent=function(){var t=this,n=document.createElement("div");n.className="div-input-group";var r=document.createElement("label");r.textContent=(0,e.t)("Default color"),n.appendChild(r);var i=document.createElement("input");return i.type="color",i.required=!0,i.value="".concat(this.currentData.defaultColor||this.initialData.defaultColor||"#000000"),i.addEventListener("change",(function(e){t.updateData({defaultColor:e.target.value})})),n.appendChild(i),n},n}(m.InputGroup),M=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return v(n,t),n.prototype.createContent=function(){var t=this,e=document.createElement("div");e.className="div-input-group div-ranges-input-group";var n=this.createLabel("Ranges");e.appendChild(n);var r=document.createElement("div"),i=document.createElement("div");e.appendChild(i),e.appendChild(r);var o,s=this.currentData.colorRanges||this.initialData.colorRanges||[];return o=function(e){i.innerHTML="",e.forEach((function(e,n){return i.appendChild(t.rangeContainer(e,function(e){return function(n){var r=t.currentData.colorRanges||t.initialData.colorRanges||[];t.updateData({colorRanges:b(b(b([],r.slice(0,e),!0),[n],!1),r.slice(e+1),!0)})}}(n),function(e){return function(){var n=t.currentData.colorRanges||t.initialData.colorRanges||[],r=b(b([],n.slice(0,e),!0),n.slice(e+1),!0);t.updateData({colorRanges:r}),o(r)}}(n)))}))},o(s),r.appendChild(this.initialRangeContainer((function(e){var n=t.currentData.colorRanges||t.initialData.colorRanges||[],r=b(b([],n,!0),[e],!1);t.updateData({colorRanges:r}),o(r)}))),e},n.prototype.initialRangeContainer=function(t){var n={color:"#ffffff"},r=g({},n),i=document.createElement("div"),o=document.createElement("div"),s=this.createLabel("From Value"),a=this.createInputNumber(null,(function(t){r.fromValue=t}));o.appendChild(s),o.appendChild(a),i.appendChild(o);var l=document.createElement("div"),c=this.createLabel("To Value"),p=this.createInputNumber(null,(function(t){r.toValue=t}));o.appendChild(c),o.appendChild(p),i.appendChild(l);var u=document.createElement("div"),d=this.createLabel("Color"),h=this.createInputColor(n.color,(function(t){r.color=t}));o.appendChild(d),o.appendChild(h),i.appendChild(u);var m=document.createElement("a");return m.appendChild((0,f.Z)(_,(0,e.t)("Create color range"),{size:"small",color:"#565656"})),m.addEventListener("click",(function(){var e;void 0!==(e=r).color&&void 0!==e.toValue&&void 0!==e.fromValue&&t(r),r=n,a.value="".concat(r.fromValue||""),p.value="".concat(r.toValue||""),h.value="".concat(r.color)})),i.appendChild(m),i},n.prototype.rangeContainer=function(t,n,r){var i=g({},t),o=document.createElement("div"),s=document.createElement("div"),a=this.createLabel("From Value"),l=this.createInputNumber(t.fromValue,(function(t){i.fromValue=t,n(g({},i))}));s.appendChild(a),s.appendChild(l),o.appendChild(s);var c=document.createElement("div"),p=this.createLabel("To Value"),u=this.createInputNumber(t.toValue,(function(t){i.toValue=t,n(g({},i))}));s.appendChild(p),s.appendChild(u),o.appendChild(c);var d=document.createElement("div"),h=this.createLabel("Color"),m=this.createInputColor(t.color,(function(t){i.color=t,n(g({},i))}));s.appendChild(h),s.appendChild(m),o.appendChild(d);var _=document.createElement("a");return _.appendChild((0,f.Z)(y,(0,e.t)("Delete color range"),{size:"small",color:"#565656"})),_.addEventListener("click",r),o.appendChild(_),o},n.prototype.createLabel=function(t){var n=document.createElement("label");return n.textContent=(0,e.t)(t),n},n.prototype.createInputNumber=function(t,e){var n=document.createElement("input");return n.type="number",null!==t&&(n.value="".concat(t)),n.addEventListener("change",(function(t){var n=parseInt(t.target.value);isNaN(n)||e(n)})),n},n.prototype.createInputColor=function(t,e){var n=document.createElement("input");return n.type="color",null!==t&&(n.value=t),n.addEventListener("change",(function(t){return e(t.target.value)})),n},n}(m.InputGroup),x="http://www.w3.org/2000/svg",C=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return v(e,t),e.prototype.createDomElement=function(){var t=document.createElement("div");return t.className="color-cloud",t.append(this.createSvgElement()),t},e.prototype.resizeElement=function(e){t.prototype.resizeElement.call(this,e,e)},e.prototype.createSvgElement=function(){var t="grad_".concat(this.props.id),e=document.createElementNS(x,"svg");e.setAttribute("viewBox","0 0 100 100");var n=document.createElementNS(x,"defs"),r=document.createElementNS(x,"radialGradient");r.setAttribute("id",t),r.setAttribute("cx","50%"),r.setAttribute("cy","50%"),r.setAttribute("r","50%"),r.setAttribute("fx","50%"),r.setAttribute("fy","50%");var i=document.createElementNS(x,"stop");i.setAttribute("offset","0%"),i.setAttribute("style","stop-color:".concat(this.props.color,";stop-opacity:0.9"));var o=document.createElementNS(x,"stop");o.setAttribute("offset","100%"),o.setAttribute("style","stop-color:".concat(this.props.color,";stop-opacity:0"));var s=document.createElementNS(x,"circle");return s.setAttribute("fill","url(#".concat(t,")")),s.setAttribute("cx","50%"),s.setAttribute("cy","50%"),s.setAttribute("r","50%"),r.append(i,o),n.append(r),e.append(n,s),!0!==this.props.agentDisabled&&!0!==this.props.moduleDisabled||e.setAttribute("opacity","0.2"),e},e.prototype.getFormContainer=function(){return e.getFormContainer(this.props)},e.getFormContainer=function(e){var n=t.getFormContainer.call(this,e);return n.removeInputGroup("label"),n.addInputGroup(new w("color-cloud",e),3),n.addInputGroup(new M("ranges-cloud",e),4),n},e}(n.ZP),k=C,P=__webpack_require__(510),I=function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},t(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),A=function(){return A=Object.assign||function(t){for(var e,n=1,r=arguments.length;n<r;n++)for(var i in e=arguments[n])Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t},A.apply(this,arguments)};function O(t){var r=A(A({},(0,n.TB)(A(A({},t),{width:1,height:1}))),{type:13,label:null,isLinkEnabled:!1,parentId:null,aclGroupId:null,x:0,y:0,width:0,height:0,startPosition:{x:(0,e.I1)(t.startX,0),y:(0,e.I1)(t.startY,0)},endPosition:{x:(0,e.I1)(t.endX,0),y:(0,e.I1)(t.endY,0)},lineWidth:(0,e.I1)(t.lineWidth||t.borderWidth,1),color:(0,e.JW)(t.borderColor||t.color,null),viewportOffsetX:0,viewportOffsetY:0,labelEnd:(0,e.JW)(t.labelEnd,""),labelEndWidth:(0,e.I1)(t.labelEndWidth,0),linkedEnd:t.linkedEnd,linkedStart:t.linkedStart,labelEndHeight:(0,e.I1)(t.labelEndHeight,0),labelStart:(0,e.JW)(t.labelStart,""),labelStartWidth:(0,e.I1)(t.labelStartWidth,0),labelStartHeight:(0,e.I1)(t.labelStartHeight,0)});return A(A({},r),S.extractBoxSizeAndPosition(r.startPosition,r.endPosition))}var T="http://www.w3.org/2000/svg",S=function(t){function n(r,i){var o=t.call(this,A(A({},r),n.extractBoxSizeAndPosition(r.startPosition,r.endPosition)),A({},i),!0)||this;return o.circleRadius=8,o.moveMode=!1,o.isMoving=!1,o.lineMovedEventManager=new P.Z,o.lineMovedEventDisposables=[],o.debouncedStartPositionMovementSave=(0,e.Ds)(500,(function(t,e){o.isMoving=!1;var n={x:t,y:e};o.lineMovedEventManager.emit({item:o,startPosition:n,endPosition:o.props.endPosition})})),o.removeStartPositionMovement=null,o.debouncedEndPositionMovementSave=(0,e.Ds)(500,(function(t,e){o.isMoving=!1;var n={x:t,y:e};o.lineMovedEventManager.emit({item:o,endPosition:n,startPosition:o.props.startPosition})})),o.removeEndPositionMovement=null,o.moveMode=i.editMode,o.init(),t.prototype.resizeElement.call(o,Math.max(r.width,r.viewportOffsetX),Math.max(r.height,r.viewportOffsetY)),o}return I(n,t),n.prototype.initStartPositionMovementListener=function(t,n){var r=this;this.removeStartPositionMovement=(0,e.Dw)(t,(function(t,e){var n={x:t+=r.circleRadius-r.props.viewportOffsetX/2,y:e+=r.circleRadius-r.props.viewportOffsetY/2};r.isMoving=!0,r.props=A(A({},r.props),{startPosition:n}),r.debouncedStartPositionMovementSave(t,e)}),n)},n.prototype.stopStartPositionMovementListener=function(){this.removeStartPositionMovement&&(this.removeStartPositionMovement(),this.removeStartPositionMovement=null)},n.prototype.initEndPositionMovementListener=function(t,n){var r=this;this.removeEndPositionMovement=(0,e.Dw)(t,(function(t,e){t+=r.circleRadius-r.props.viewportOffsetX/2,e+=r.circleRadius-r.props.viewportOffsetY/2,r.isMoving=!0,r.props=A(A({},r.props),{endPosition:{x:t,y:e}}),r.debouncedEndPositionMovementSave(t,e)}),n)},n.prototype.stopEndPositionMovementListener=function(){this.removeEndPositionMovement&&(this.removeEndPositionMovement(),this.removeEndPositionMovement=null)},n.prototype.setProps=function(e){t.prototype.setProps.call(this,A(A({},e),n.extractBoxSizeAndPosition(e.startPosition,e.endPosition)))},n.prototype.setMeta=function(e){this.moveMode=e.editMode,t.prototype.setMeta.call(this,A(A({},e),{lineMode:!0}))},n.prototype.createDomElement=function(){var t=document.createElement("div");t.className="line";var e=this.props,n=e.x,r=e.y,i=e.width,o=e.height,s=e.lineWidth,a=e.viewportOffsetX,l=e.viewportOffsetY,c=e.startPosition,p=e.endPosition,u=e.color;i+=a,o+=l;var d=c.x-n+s/2+a/2,h=c.y-r+s/2+l/2,m=p.x-n+s/2+a/2,f=p.y-r+s/2+l/2,_=document.createElementNS(T,"svg");_.setAttribute("width","".concat(i+s)),_.setAttribute("height","".concat(o+s));var y=document.createElementNS(T,"line");return y.setAttribute("x1","".concat(d)),y.setAttribute("y1","".concat(h)),y.setAttribute("x2","".concat(m)),y.setAttribute("y2","".concat(f)),y.setAttribute("stroke",u||"black"),y.setAttribute("stroke-width","".concat(s)),_.append(y),t.append(_),t},n.prototype.updateDomElement=function(t){null!=t.parentElement&&(t.parentElement.style.cursor="default");var e=this.props,n=e.x,r=e.y,i=e.width,o=e.height,s=e.lineWidth,a=e.viewportOffsetX,l=e.viewportOffsetY,c=e.startPosition,p=e.endPosition,u=e.color;i+=a,o+=l;var d=c.x-n+s/2+a/2,h=c.y-r+s/2+l/2,m=p.x-n+s/2+a/2,f=p.y-r+s/2+l/2,_=t.getElementsByTagName("svg");if(_.length>0){var y=_.item(0);if(null!=y){y.setAttribute("width","".concat(i+s)),y.setAttribute("height","".concat(o+s));var v=y.getElementsByTagNameNS(T,"line");if(v.length>0){var g=v.item(0);null!=g&&(g.setAttribute("x1","".concat(d)),g.setAttribute("y1","".concat(h)),g.setAttribute("x2","".concat(m)),g.setAttribute("y2","".concat(f)),g.setAttribute("stroke",u||"black"),g.setAttribute("stroke-width","".concat(s)))}}}if(this.moveMode){var b=document.createElement("div"),E=document.createElement("div");if(this.isMoving){var w=t.getElementsByClassName("visual-console-item-line-circle-start");w.length>0&&(C=w.item(0))&&(b=C);var M=t.getElementsByClassName("visual-console-item-line-circle-end");M.length>0&&(C=M.item(0))&&(E=C)}if(b.classList.add("visual-console-item-line-circle","visual-console-item-line-circle-start"),b.style.width="".concat(2*this.circleRadius,"px"),b.style.height="".concat(2*this.circleRadius,"px"),b.style.borderRadius="50%",b.style.backgroundColor="".concat(u),b.style.position="absolute",b.style.left="".concat(d-this.circleRadius,"px"),b.style.top="".concat(h-this.circleRadius,"px"),b.style.cursor="move",E.classList.add("visual-console-item-line-circle","visual-console-item-line-circle-end"),E.style.width="".concat(2*this.circleRadius,"px"),E.style.height="".concat(2*this.circleRadius,"px"),E.style.borderRadius="50%",E.style.backgroundColor="".concat(u),E.style.position="absolute",E.style.left="".concat(m-this.circleRadius,"px"),E.style.top="".concat(f-this.circleRadius,"px"),E.style.cursor="move",null!==t.parentElement){for(var x=t.parentElement.getElementsByClassName("visual-console-item-line-circle");x.length>0;)(C=x.item(0))&&C.remove();t.parentElement.appendChild(b),t.parentElement.appendChild(E)}this.initStartPositionMovementListener(b,this.elementRef.parentElement),this.initEndPositionMovementListener(E,this.elementRef.parentElement)}else if(this.moveMode)this.stopStartPositionMovementListener();else if(this.stopStartPositionMovementListener(),null!==t.parentElement)for(x=t.parentElement.getElementsByClassName("visual-console-item-line-circle");x.length>0;){var C;(C=x.item(0))&&C.remove()}},n.extractBoxSizeAndPosition=function(t,e){return{width:Math.abs(t.x-e.x),height:Math.abs(t.y-e.y),x:Math.min(t.x,e.x),y:Math.min(t.y,e.y)}},n.prototype.move=function(e,n){t.prototype.moveElement.call(this,e,n);var r=this.props.startPosition.x-this.props.endPosition.x<=0,i=this.props.startPosition.y-this.props.endPosition.y<=0,o={x:r?e:this.props.width+e,y:i?n:this.props.height+n},s={x:r?this.props.width+e:e,y:i?this.props.height+n:n};this.props=A(A({},this.props),{startPosition:o,endPosition:s})},n.prototype.remove=function(){this.stopStartPositionMovementListener(),t.prototype.remove.call(this)},n.prototype.onLineMovementFinished=function(t){var e=this.lineMovedEventManager.on(t);return this.lineMovedEventDisposables.push(e),e},n}(n.ZP),L=S,R=function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},t(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),D=function(){return D=Object.assign||function(t){for(var e,n=1,r=arguments.length;n<r;n++)for(var i in e=arguments[n])Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t},D.apply(this,arguments)},N="http://www.w3.org/2000/svg";function B(t){return D(D({},O(t)),{type:21,viewportOffsetX:0,viewportOffsetY:0,labelEnd:(0,e.JW)(t.labelEnd,""),labelEndWidth:(0,e.I1)(t.labelEndWidth,0),labelEndHeight:(0,e.I1)(t.labelEndHeight,0),labelStart:(0,e.JW)(t.labelStart,""),labelStartWidth:(0,e.I1)(t.labelStartWidth,0),labelStartHeight:(0,e.I1)(t.labelStartHeight,0)})}var z=function(t){function n(n,r){var i=t.call(this,D({},n),D({},r))||this;return i.debouncedStartPositionMovementSave=(0,e.Ds)(50,(function(t,e){i.isMoving=!1;var n={x:t,y:e};i.render(),i.lineMovedEventManager.emit({item:i,startPosition:n,endPosition:i.props.endPosition})})),i.debouncedEndPositionMovementSave=(0,e.Ds)(50,(function(t,e){i.isMoving=!1;var n={x:t,y:e};i.render(),i.lineMovedEventManager.emit({item:i,endPosition:n,startPosition:i.props.startPosition})})),i.render(),i}return R(n,t),n.prototype.updateDomElement=function(e){null!=this.itemProps.ratio&&(this.itemProps.x/=this.itemProps.ratio,this.itemProps.y/=this.itemProps.ratio),t.prototype.updateDomElement.call(this,e);var n=this.props,r=n.x,i=n.y,o=n.lineWidth,s=n.viewportOffsetX,a=n.viewportOffsetY,l=n.startPosition,c=n.endPosition,p=n.color,u=n.labelEnd,d=n.labelStart,h=n.labelEndWidth,m=n.labelEndHeight,f=n.labelStartWidth,_=n.labelStartHeight;null!=this.itemProps.ratio&&(this.itemProps.x*=this.itemProps.ratio,this.itemProps.y*=this.itemProps.ratio);var y,v,g=e.getElementsByTagName("svg");if(g.length>0){if(null!=(v=g.item(0))){for(var b=v.getElementsByTagNameNS(N,"line"),E=v.getElementsByTagNameNS(N,"g");E.length>0;)E[0].remove();b.length>0&&(y=b.item(0))}if(null!=v&&null!=y){var w=25,M=l.x-r+o/2+s/2,x=l.y-i+o/2+a/2,C=c.x-r+o/2+s/2,k=c.y-i+o/2+a/2,P=l.x-r+o/2+s/2,I=l.y-i+o/2+a/2,A=c.x-r+o/2+s/2,O=c.y-i+o/2+a/2,T=180*Math.atan2(k-x,C-M)/Math.PI;if(f<=0&&(b=d.split("<br>"),f=0,b.forEach((function(t){t.length>f&&(f=10*t.length)})),_<=0&&(_=25*b.length)),h<=0&&(b=u.split("<br>"),h=0,b.forEach((function(t){t.length>h&&(h=10*t.length)})),m<=0&&(m=25*b.length)),P<A&&(P+=w,A-=w+h),P>A&&(P-=w+f,A+=w),I<O&&(I+=w,O-=w+m),I>O&&(I-=w+_,O+=w),void 0===p&&(p="#000"),null!==e.parentElement){for(var S=e.parentElement.getElementsByClassName("vc-item-nl-label");S.length>0;){var L=S.item(0);L&&L.remove()}for(var R=e.parentElement.getElementsByClassName("vc-item-nl-arrow");R.length>0;){var D=R.item(0);D&&D.remove()}}var B=2*o,z=M+(C-M)/2-B,W=x+(k-x)/2-B,j=document.createElement("div");j.classList.add("vc-item-nl-arrow"),j.style.position="absolute",j.style.border="".concat(B,"px solid transparent"),j.style.borderBottom="".concat(B,"px solid ").concat(p),j.style.left="".concat(z,"px"),j.style.top="".concat(W,"px"),j.style.transform="rotate(".concat(90+T,"deg)");var H=document.createElement("div");if(H.classList.add("vc-item-nl-arrow"),H.style.position="absolute",H.style.border="".concat(B,"px solid transparent"),H.style.borderBottom="".concat(B,"px solid ").concat(p),H.style.left="".concat(z,"px"),H.style.top="".concat(W,"px"),H.style.transform="rotate(".concat(270+T,"deg)"),null!==e.parentElement&&(e.parentElement.appendChild(j),e.parentElement.appendChild(H)),""!=d){var V=document.createElement("div");try{V.innerHTML=d,V.style.position="absolute",V.style.left="".concat(P,"px"),V.style.top="".concat(I,"px"),V.style.width="".concat(f,"px"),V.style.border="2px solid ".concat(p),V.classList.add("vc-item-nl-label","label-start")}catch(t){console.error(t)}null!==e.parentElement&&e.parentElement.appendChild(V)}if(""!=u){var G=document.createElement("div");try{G.innerHTML=u,G.style.position="absolute",G.style.left="".concat(A,"px"),G.style.top="".concat(O,"px"),G.style.width="".concat(h,"px"),G.style.border="2px solid ".concat(p),G.classList.add("vc-item-nl-label","label-end")}catch(t){console.error(t)}null!==e.parentElement&&e.parentElement.appendChild(G)}}}},n}(L),W=z,j=function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},t(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),H=function(){return H=Object.assign||function(t){for(var e,n=1,r=arguments.length;n<r;n++)for(var i in e=arguments[n])Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t},H.apply(this,arguments)};function V(t){if(("string"!=typeof t.imageSrc||0===t.imageSrc.length)&&null===t.encodedHtml)throw new TypeError("invalid image src.");if(null===(0,e.I1)(t.groupId,null))throw new TypeError("invalid group Id.");var r=(0,e.gx)(t.showStatistics),i=r?function(t){return(0,e.VJ)(t.html)?(0,e.VJ)(t.encodedHtml)?null:(0,e.NV)(t.encodedHtml):t.html}(t):null;return H(H(H({},(0,n.TB)(t)),{type:11,groupId:parseInt(t.groupId),imageSrc:(0,e.JW)(t.imageSrc,null),statusImageSrc:(0,e.JW)(t.statusImageSrc,null),showStatistics:r,html:i}),(0,e.bs)(t))}var G=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return j(e,t),e.prototype.createDomElement=function(){var t=document.createElement("div");return t.className="group",this.props.showStatistics||null===this.props.statusImageSrc?this.props.showStatistics&&null!=this.props.html&&(t.style.backgroundImage="none",t.innerHTML=this.props.html):(t.style.backgroundImage="url(".concat(this.props.statusImageSrc,")"),t.style.backgroundRepeat="no-repeat",t.style.backgroundSize="contain",t.style.backgroundPosition="center"),t},e.prototype.updateDomElement=function(t){this.props.showStatistics||null===this.props.statusImageSrc?this.props.showStatistics&&null!=this.props.html&&(t.style.backgroundImage="none",t.innerHTML=this.props.html):(t.style.backgroundImage="url(".concat(this.props.statusImageSrc,")"),t.style.backgroundRepeat="no-repeat",t.style.backgroundSize="contain",t.style.backgroundPosition="center",t.innerHTML="")},e}(n.ZP),U=G,F=function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},t(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),K=function(){return K=Object.assign||function(t){for(var e,n=1,r=arguments.length;n<r;n++)for(var i in e=arguments[n])Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t},K.apply(this,arguments)},Z=function(t){switch(t){case"analogic":case"digital":return t;default:return"analogic"}},q=function(t){switch(t){case"datetime":case"time":return t;default:return"datetime"}};function J(t){if("string"!=typeof t.clockTimezone||0===t.clockTimezone.length)throw new TypeError("invalid timezone.");return K(K(K({},(0,n.TB)(t)),{type:19,clockType:Z(t.clockType),clockFormat:q(t.clockFormat),clockTimezone:t.clockTimezone,clockTimezoneOffset:(0,e.I1)(t.clockTimezoneOffset,0),showClockTimezone:(0,e.gx)(t.showClockTimezone),color:(0,e.JW)(t.color,null)}),(0,e.bs)(t))}var Y=function(t){function n(e,r){var i=t.call(this,e,r)||this;return i.intervalRef=null,i.startTick((function(){i.childElementRef.innerHTML=i.createClock().innerHTML}),"analogic"===i.props.clockType?2e4:n.TICK_INTERVAL),i}return F(n,t),n.prototype.stopTick=function(){null!==this.intervalRef&&(window.clearInterval(this.intervalRef),this.intervalRef=null)},n.prototype.startTick=function(t,e){void 0===e&&(e=n.TICK_INTERVAL),this.stopTick(),this.intervalRef=window.setInterval(t,e)},n.prototype.createDomElement=function(){return this.createClock()},n.prototype.updateDomElement=function(e){var n=this.getElementSize(this.props.width,this.props.height),r=n.width,i=n.height;"digital"===this.props.clockType?(!1===this.meta.isBeingResized&&t.prototype.resizeElement.call(this,this.props.width,this.props.height),e.classList.replace("analogic-clock","digital-clock")):(!1===this.meta.isBeingResized&&t.prototype.resizeElement.call(this,r,i),e.classList.replace("digital-clock","analogic-clock")),e.innerHTML=this.createDomElement().innerHTML},n.prototype.remove=function(){this.stopTick(),t.prototype.remove.call(this)},n.prototype.resizeElement=function(e,n){var r=this.getElementSize(e,n),i=r.width,o=r.height;"digital"===this.props.clockType?t.prototype.resizeElement.call(this,e,n):t.prototype.resizeElement.call(this,i,o)},n.prototype.createClock=function(){switch(this.props.clockType){case"analogic":return this.createAnalogicClock();case"digital":return this.createDigitalClock();default:throw new Error("invalid clock type.")}},n.prototype.createAnalogicClock=function(){var t="http://www.w3.org/2000/svg",n="#FFFFF0",r="#242124",i="#242124",o="#525252",s="#DC143C",a=this.getElementSize(),l=a.width,c=a.height,p=10*l/100,u=document.createElement("div");u.className="analogic-clock",u.style.width="".concat(l,"px"),u.style.height="".concat(c,"px");var d=document.createElementNS(t,"svg");d.setAttribute("viewBox","0 0 100 100");var h=document.createElementNS(t,"g");h.setAttribute("class","clockface");var m=document.createElementNS(t,"circle");m.setAttribute("cx","50"),m.setAttribute("cy","50"),m.setAttribute("r","48"),m.setAttribute("fill",n),m.setAttribute("stroke","#242124"),m.setAttribute("stroke-width","2"),m.setAttribute("stroke-linecap","round"),h.append(m);var f=this.getHumanTimezone();if(f.length>0){var _=document.createElementNS(t,"text");_.setAttribute("text-anchor","middle"),_.setAttribute("font-size","8"),_.setAttribute("transform","translate(30 50) rotate(90)"),_.setAttribute("fill",r),_.textContent=f,h.append(_)}var y=document.createElementNS(t,"g");y.setAttribute("class","marks");var v=document.createElementNS(t,"g");v.setAttribute("class","mark"),v.setAttribute("transform","translate(50 50)");var g=document.createElementNS(t,"line");g.setAttribute("x1","36"),g.setAttribute("y1","0"),g.setAttribute("x2","46"),g.setAttribute("y2","0"),g.setAttribute("stroke",r),g.setAttribute("stroke-width","5");var b=document.createElementNS(t,"line");b.setAttribute("x1","36"),b.setAttribute("y1","0"),b.setAttribute("x2","46"),b.setAttribute("y2","0"),b.setAttribute("stroke",n),b.setAttribute("stroke-width","1"),v.append(g,b),y.append(v);for(var E=1;E<60;E++){var w=document.createElementNS(t,"line");w.setAttribute("y1","0"),w.setAttribute("y2","0"),w.setAttribute("stroke",r),w.setAttribute("transform","translate(50 50) rotate(".concat(6*E,")")),E%5==0?(w.setAttribute("x1","38"),w.setAttribute("x2","46"),w.setAttribute("stroke-width",E%15==0?"2":"1")):(w.setAttribute("x1","42"),w.setAttribute("x2","46"),w.setAttribute("stroke-width","0.5")),y.append(w)}var M=document.createElementNS(t,"g");M.setAttribute("class","hour-hand"),M.setAttribute("transform","translate(50 50)");var x=document.createElementNS(t,"line");x.setAttribute("class","hour-hand-a"),x.setAttribute("x1","0"),x.setAttribute("y1","0"),x.setAttribute("x2","30"),x.setAttribute("y2","0"),x.setAttribute("stroke",o),x.setAttribute("stroke-width","4"),x.setAttribute("stroke-linecap","round");var C=document.createElementNS(t,"line");C.setAttribute("class","hour-hand-b"),C.setAttribute("x1","0"),C.setAttribute("y1","0"),C.setAttribute("x2","29.9"),C.setAttribute("y2","0"),C.setAttribute("stroke",i),C.setAttribute("stroke-width","3.1"),C.setAttribute("stroke-linecap","round"),M.append(x,C);var k=document.createElementNS(t,"g");k.setAttribute("class","minute-hand"),k.setAttribute("transform","translate(50 50)");var P=document.createElementNS(t,"line");P.setAttribute("class","minute-hand-a"),P.setAttribute("x1","0"),P.setAttribute("y1","0"),P.setAttribute("x2","40"),P.setAttribute("y2","0"),P.setAttribute("stroke",o),P.setAttribute("stroke-width","2"),P.setAttribute("stroke-linecap","round");var I=document.createElementNS(t,"line");I.setAttribute("class","minute-hand-b"),I.setAttribute("x1","0"),I.setAttribute("y1","0"),I.setAttribute("x2","39.9"),I.setAttribute("y2","0"),I.setAttribute("stroke",i),I.setAttribute("stroke-width","1.5"),I.setAttribute("stroke-linecap","round");var A=document.createElementNS(t,"circle");A.setAttribute("r","3"),A.setAttribute("fill",i),k.append(P,I,A);var O=document.createElementNS(t,"g");O.setAttribute("class","second-hand"),O.setAttribute("transform","translate(50 50)");var T=document.createElementNS(t,"line");T.setAttribute("x1","0"),T.setAttribute("y1","0"),T.setAttribute("x2","46"),T.setAttribute("y2","0"),T.setAttribute("stroke",s),T.setAttribute("stroke-width","1"),T.setAttribute("stroke-linecap","round");var S=document.createElementNS(t,"circle");S.setAttribute("r","2"),S.setAttribute("fill",s),O.append(T,S);var L=document.createElementNS(t,"circle");L.setAttribute("cx","50"),L.setAttribute("cy","50"),L.setAttribute("r","0.3"),L.setAttribute("fill",i);var R=this.getOriginDate(),D=R.getSeconds(),N=R.getMinutes(),B=6*D,z=6*N+D/60*6,W=30*R.getHours()+N/60*30;if(M.setAttribute("transform","translate(50 50) rotate(".concat(W,")")),k.setAttribute("transform","translate(50 50) rotate(".concat(z,")")),O.setAttribute("transform","translate(50 50) rotate(".concat(B,")")),d.append(h,y,M,k,O,L),d.setAttribute("transform","rotate(-90)"),u.innerHTML="\n      <style>\n        @keyframes rotate-hour {\n          from {\n            ".concat((0,e.OR)("transform","translate(50px, 50px) rotate(".concat(W,"deg)")).join("\n"),"\n          }\n          to {\n            ").concat((0,e.OR)("transform","translate(50px, 50px) rotate(".concat(W+360,"deg)")).join("\n"),"\n          }\n        }\n        @keyframes rotate-minute {\n          from {\n            ").concat((0,e.OR)("transform","translate(50px, 50px) rotate(".concat(z,"deg)")).join("\n"),"\n          }\n          to {\n            ").concat((0,e.OR)("transform","translate(50px, 50px) rotate(".concat(z+360,"deg)")).join("\n"),"\n          }\n        }\n        @keyframes rotate-second {\n          from {\n            ").concat((0,e.OR)("transform","translate(50px, 50px) rotate(".concat(B,"deg)")).join("\n"),"\n          }\n          to {\n            ").concat((0,e.OR)("transform","translate(50px, 50px) rotate(".concat(B+360,"deg)")).join("\n"),"\n          }\n        }\n      </style>\n    "),u.append(d),"datetime"===this.props.clockFormat){var j=document.createElement("span");j.className="date",j.textContent=(0,e.rN)(R,"default"),j.style.fontSize="".concat(p,"px"),this.props.color&&(j.style.color=this.props.color),u.append(j)}return u},n.prototype.createDigitalClock=function(){var t=document.createElement("div");t.className="digital-clock";var n=this.getElementSize(),r=n.width,i=n.height,o=r;i<r&&(o=i);var s=6/this.props.clockTimezone.length,a=35*o/100,l=17.5*o/100,c=Math.min(35*s*o/100,r/100*10),p=this.getOriginDate();if("datetime"===this.props.clockFormat){var u=document.createElement("span");u.className="date",u.textContent=(0,e.rN)(p,"default"),u.style.fontSize="".concat(l,"px"),this.props.color&&(u.style.color=this.props.color),t.append(u)}var d=document.createElement("span");d.className="time",d.textContent=(0,e.bc)(p),d.style.fontSize="".concat(a,"px"),this.props.color&&(d.style.color=this.props.color),t.append(d);var h=this.getHumanTimezone();if(h.length>0){var m=document.createElement("span");m.className="timezone",m.textContent=h,m.style.fontSize="".concat(c,"px"),this.props.color&&(m.style.color=this.props.color),t.append(m)}return t},n.prototype.getOriginDate=function(t){void 0===t&&(t=null);var e=t||new Date,n=1e3*this.props.clockTimezoneOffset,r=60*e.getTimezoneOffset()*1e3,i=e.getTime()+n+r;return new Date(i)},n.prototype.getHumanTimezone=function(t){void 0===t&&(t=this.props.clockTimezone);var e=t.split("/")[1];return(void 0===e?"":e).replace("_"," ")},n.prototype.getElementSize=function(t,e){switch(void 0===t&&(t=this.props.width),void 0===e&&(e=this.props.height),this.props.clockType){case"analogic":var n=100;t>0&&e>0?n=Math.min(t,e):t>0?n=t:e>0&&(n=e);var r=0;return"datetime"===this.props.clockFormat&&(r=e/8),{width:n,height:n+r};case"digital":return t>0&&e>0?e=t/2<e?t/2:e:t>0?e=t/2:e>0?t=2*e:(t=100,e=50),{width:t,height:e};default:throw new Error("invalid clock type.")}},n.TICK_INTERVAL=1e3,n}(n.ZP),X=Y,Q=function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},t(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),$=function(){return $=Object.assign||function(t){for(var e,n=1,r=arguments.length;n<r;n++)for(var i in e=arguments[n])Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t},$.apply(this,arguments)};function tt(t){return $($({},(0,n.TB)(t)),{type:12,label:null,isLinkEnabled:!1,parentId:null,aclGroupId:null,borderWidth:(0,e.I1)(t.borderWidth,0),borderColor:(0,e.JW)(t.borderColor,null),fillColor:(0,e.JW)(t.fillColor,null),fillTransparent:t.fillTransparent})}var et=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return Q(e,t),e.prototype.createDomElement=function(){var t=document.createElement("div");if(t.className="box",t.style.boxSizing="border-box",this.props.fillTransparent?t.style.backgroundColor="transparent":this.props.fillColor&&(t.style.backgroundColor=this.props.fillColor),this.props.borderWidth>0){t.style.borderStyle="solid";var e=Math.min(this.props.width,this.props.height)/2,n=Math.min(this.props.borderWidth,e);t.style.borderWidth="".concat(n,"px"),this.props.borderColor&&(t.style.borderColor=this.props.borderColor)}return t},e.prototype.updateDomElement=function(t){if(this.props.fillTransparent?t.style.backgroundColor="transparent":this.props.fillColor&&(t.style.backgroundColor=this.props.fillColor),this.props.borderWidth>0){t.style.borderStyle="solid";var e=Math.min(this.props.width,this.props.height)/2,n=Math.min(this.props.borderWidth,e);t.style.borderWidth="".concat(n,"px"),this.props.borderColor&&(t.style.borderColor=this.props.borderColor)}},e}(n.ZP),nt=et,rt=function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},t(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),it=function(){return it=Object.assign||function(t){for(var e,n=1,r=arguments.length;n<r;n++)for(var i in e=arguments[n])Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t},it.apply(this,arguments)};function ot(t){return it(it(it({},(0,n.TB)(t)),{type:4}),(0,e.bs)(t))}var st=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return rt(e,t),e.prototype.createDomElement=function(){var t=document.createElement("div");return t.className="label",t.innerHTML=this.getLabelWithMacrosReplaced(),t},e.prototype.createLabelDomElement=function(){var t=document.createElement("div");return t.className="visual-console-item-label",t},e}(n.ZP),at=st,lt=function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},t(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),ct=function(){return ct=Object.assign||function(t){for(var e,n=1,r=arguments.length;n<r;n++)for(var i in e=arguments[n])Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t},ct.apply(this,arguments)},pt=function(t){switch(t){case"string":case"image":return t;default:return"string"}};function ut(t){if("string"!=typeof t.value||0===t.value.length)throw new TypeError("invalid value");var r=function(t){switch(t){case"none":case"avg":case"max":case"min":return t;default:return"none"}}(t.processValue);return ct(ct(ct(ct(ct({},(0,n.TB)(t)),{type:2,valueType:pt(t.valueType),value:t.value}),"none"===r?{processValue:r}:{processValue:r,period:(0,e.I1)(t.period,0)}),(0,e.MH)(t)),(0,e.bs)(t))}var dt=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return lt(n,t),n.prototype.createDomElement=function(){var t=document.createElement("div");if(t.className="simple-value",!0!==this.props.agentDisabled&&!0!==this.props.moduleDisabled||(t.style.opacity="0.2"),"image"===this.props.valueType){var n=document.createElement("img");n.src=this.props.value,t.append(n)}else{var r=this.props.value,i=this.getLabelWithMacrosReplaced();i.length>0&&(r=(0,e.No)([{macro:/\(?_VALUE_\)?/i,value:r}],i)),t.innerHTML=r}return t},n.prototype.createLabelDomElement=function(){var t=document.createElement("div");return t.className="visual-console-item-label",t},n}(n.ZP),ht=dt,mt=__webpack_require__(280),ft=Math.PI,_t=2*ft,yt=1e-6,vt=_t-yt;function gt(){this._x0=this._y0=this._x1=this._y1=null,this._=""}function bt(){return new gt}gt.prototype=bt.prototype={constructor:gt,moveTo:function(t,e){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+e)},closePath:function(){null!==this._x1&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")},lineTo:function(t,e){this._+="L"+(this._x1=+t)+","+(this._y1=+e)},quadraticCurveTo:function(t,e,n,r){this._+="Q"+ +t+","+ +e+","+(this._x1=+n)+","+(this._y1=+r)},bezierCurveTo:function(t,e,n,r,i,o){this._+="C"+ +t+","+ +e+","+ +n+","+ +r+","+(this._x1=+i)+","+(this._y1=+o)},arcTo:function(t,e,n,r,i){t=+t,e=+e,n=+n,r=+r,i=+i;var o=this._x1,s=this._y1,a=n-t,l=r-e,c=o-t,p=s-e,u=c*c+p*p;if(i<0)throw new Error("negative radius: "+i);if(null===this._x1)this._+="M"+(this._x1=t)+","+(this._y1=e);else if(u>yt)if(Math.abs(p*a-l*c)>yt&&i){var d=n-o,h=r-s,m=a*a+l*l,f=d*d+h*h,_=Math.sqrt(m),y=Math.sqrt(u),v=i*Math.tan((ft-Math.acos((m+u-f)/(2*_*y)))/2),g=v/y,b=v/_;Math.abs(g-1)>yt&&(this._+="L"+(t+g*c)+","+(e+g*p)),this._+="A"+i+","+i+",0,0,"+ +(p*d>c*h)+","+(this._x1=t+b*a)+","+(this._y1=e+b*l)}else this._+="L"+(this._x1=t)+","+(this._y1=e)},arc:function(t,e,n,r,i,o){t=+t,e=+e,o=!!o;var s=(n=+n)*Math.cos(r),a=n*Math.sin(r),l=t+s,c=e+a,p=1^o,u=o?r-i:i-r;if(n<0)throw new Error("negative radius: "+n);null===this._x1?this._+="M"+l+","+c:(Math.abs(this._x1-l)>yt||Math.abs(this._y1-c)>yt)&&(this._+="L"+l+","+c),n&&(u<0&&(u=u%_t+_t),u>vt?this._+="A"+n+","+n+",0,1,"+p+","+(t-s)+","+(e-a)+"A"+n+","+n+",0,1,"+p+","+(this._x1=l)+","+(this._y1=c):u>yt&&(this._+="A"+n+","+n+",0,"+ +(u>=ft)+","+p+","+(this._x1=t+n*Math.cos(i))+","+(this._y1=e+n*Math.sin(i))))},rect:function(t,e,n,r){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+e)+"h"+ +n+"v"+ +r+"h"+-n+"Z"},toString:function(){return this._}};var Et=bt;function wt(t){return function(){return t}}var Mt=Math.abs,xt=Math.atan2,Ct=Math.cos,kt=Math.max,Pt=Math.min,It=Math.sin,At=Math.sqrt,Ot=1e-12,Tt=Math.PI,St=Tt/2,Lt=2*Tt;function Rt(t){return t>1?0:t<-1?Tt:Math.acos(t)}function Dt(t){return t>=1?St:t<=-1?-St:Math.asin(t)}function Nt(t){return t.innerRadius}function Bt(t){return t.outerRadius}function zt(t){return t.startAngle}function Wt(t){return t.endAngle}function jt(t){return t&&t.padAngle}function Ht(t,e,n,r,i,o,s,a){var l=n-t,c=r-e,p=s-i,u=a-o,d=u*l-p*c;if(!(d*d<Ot))return[t+(d=(p*(e-o)-u*(t-i))/d)*l,e+d*c]}function Vt(t,e,n,r,i,o,s){var a=t-n,l=e-r,c=(s?o:-o)/At(a*a+l*l),p=c*l,u=-c*a,d=t+p,h=e+u,m=n+p,f=r+u,_=(d+m)/2,y=(h+f)/2,v=m-d,g=f-h,b=v*v+g*g,E=i-o,w=d*f-m*h,M=(g<0?-1:1)*At(kt(0,E*E*b-w*w)),x=(w*g-v*M)/b,C=(-w*v-g*M)/b,k=(w*g+v*M)/b,P=(-w*v+g*M)/b,I=x-_,A=C-y,O=k-_,T=P-y;return I*I+A*A>O*O+T*T&&(x=k,C=P),{cx:x,cy:C,x01:-p,y01:-u,x11:x*(i/E-1),y11:C*(i/E-1)}}var Gt=function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},t(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),Ut=function(){return Ut=Object.assign||function(t){for(var e,n=1,r=arguments.length;n<r;n++)for(var i in e=arguments[n])Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t},Ut.apply(this,arguments)};function Ft(t){switch(t){case"progress-bar":case"bubble":case"circular-progress-bar":case"circular-progress-bar-alt":return t;default:case 3:return"progress-bar";case 9:return"bubble";case 15:return"circular-progress-bar";case 16:return"circular-progress-bar-alt"}}function Kt(t){switch(t){case"percent":case"value":return t;default:return"percent"}}function Zt(t){return Ut(Ut(Ut(Ut({},(0,n.TB)(t)),{type:3,percentileType:Ft(t.percentileType||t.type),valueType:Kt(t.valueType),minValue:(0,e.I1)(t.minValue,null),maxValue:(0,e.I1)(t.maxValue,null),color:(0,e.JW)(t.color,null),labelColor:(0,e.JW)(t.labelColor,null),value:(0,e.xn)(t.value,null),unit:(0,e.JW)(t.unit,null)}),(0,e.MH)(t)),(0,e.bs)(t))}var qt="http://www.w3.org/2000/svg",Jt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return Gt(e,t),e.prototype.createDomElement=function(){var t,e={background:"#000000",progress:this.props.color||"#000000",text:this.props.labelColor||"#bcbcbc"},n=this.getProgress(),r=document.createElement("div");null!=this.props.value&&(t=Intl?Intl.NumberFormat("en-EN").format(this.props.value):this.props.value);var i=document.createElementNS(qt,"svg");switch(this.props.percentileType){case"progress-bar":var o=document.createElementNS(qt,"rect");o.setAttribute("fill",e.background),o.setAttribute("fill-opacity","0.5"),o.setAttribute("width","100%"),o.setAttribute("height","100%"),o.setAttribute("rx","5"),o.setAttribute("ry","5");var s=document.createElementNS(qt,"rect");s.setAttribute("fill",e.progress),s.setAttribute("fill-opacity","1"),s.setAttribute("width","".concat(n,"%")),s.setAttribute("height","100%"),s.setAttribute("rx","5"),s.setAttribute("ry","5"),(u=document.createElementNS(qt,"text")).setAttribute("text-anchor","middle"),u.setAttribute("alignment-baseline","middle"),u.setAttribute("font-size","15"),u.setAttribute("font-family","lato"),u.setAttribute("font-weight","bold"),u.setAttribute("text-anchor","middle"),u.setAttribute("alignment-baseline","middle"),u.setAttribute("x","50%"),u.setAttribute("y","50%"),u.setAttribute("fill",e.text),"value"===this.props.valueType?(u.style.fontSize="6pt",u.textContent=this.props.unit?"".concat(t," ").concat(this.props.unit):"".concat(t)):u.textContent="".concat(n,"%"),i.setAttribute("width","100%"),i.setAttribute("height","100%"),i.append(o,s,u);break;case"bubble":case"circular-progress-bar":case"circular-progress-bar-alt":if(i.setAttribute("viewBox","0 0 100 100"),"bubble"===this.props.percentileType)(a=document.createElementNS(qt,"circle")).setAttribute("transform","translate(50 50)"),a.setAttribute("fill",e.background),a.setAttribute("fill-opacity","0.5"),a.setAttribute("r","50"),(l=document.createElementNS(qt,"circle")).setAttribute("transform","translate(50 50)"),l.setAttribute("fill",e.progress),l.setAttribute("fill-opacity","1"),l.setAttribute("r","".concat(n/2)),i.append(a,l);else{var a,l,c={innerRadius:"circular-progress-bar"===this.props.percentileType?30:0,outerRadius:50,startAngle:0,endAngle:2*Math.PI},p=function(){var t=Nt,e=Bt,n=wt(0),r=null,i=zt,o=Wt,s=jt,a=null;function l(){var l,c,p=+t.apply(this,arguments),u=+e.apply(this,arguments),d=i.apply(this,arguments)-St,h=o.apply(this,arguments)-St,m=Mt(h-d),f=h>d;if(a||(a=l=Et()),u<p&&(c=u,u=p,p=c),u>Ot)if(m>Lt-Ot)a.moveTo(u*Ct(d),u*It(d)),a.arc(0,0,u,d,h,!f),p>Ot&&(a.moveTo(p*Ct(h),p*It(h)),a.arc(0,0,p,h,d,f));else{var _,y,v=d,g=h,b=d,E=h,w=m,M=m,x=s.apply(this,arguments)/2,C=x>Ot&&(r?+r.apply(this,arguments):At(p*p+u*u)),k=Pt(Mt(u-p)/2,+n.apply(this,arguments)),P=k,I=k;if(C>Ot){var A=Dt(C/p*It(x)),O=Dt(C/u*It(x));(w-=2*A)>Ot?(b+=A*=f?1:-1,E-=A):(w=0,b=E=(d+h)/2),(M-=2*O)>Ot?(v+=O*=f?1:-1,g-=O):(M=0,v=g=(d+h)/2)}var T=u*Ct(v),S=u*It(v),L=p*Ct(E),R=p*It(E);if(k>Ot){var D,N=u*Ct(g),B=u*It(g),z=p*Ct(b),W=p*It(b);if(m<Tt&&(D=Ht(T,S,z,W,N,B,L,R))){var j=T-D[0],H=S-D[1],V=N-D[0],G=B-D[1],U=1/It(Rt((j*V+H*G)/(At(j*j+H*H)*At(V*V+G*G)))/2),F=At(D[0]*D[0]+D[1]*D[1]);P=Pt(k,(p-F)/(U-1)),I=Pt(k,(u-F)/(U+1))}}M>Ot?I>Ot?(_=Vt(z,W,T,S,u,I,f),y=Vt(N,B,L,R,u,I,f),a.moveTo(_.cx+_.x01,_.cy+_.y01),I<k?a.arc(_.cx,_.cy,I,xt(_.y01,_.x01),xt(y.y01,y.x01),!f):(a.arc(_.cx,_.cy,I,xt(_.y01,_.x01),xt(_.y11,_.x11),!f),a.arc(0,0,u,xt(_.cy+_.y11,_.cx+_.x11),xt(y.cy+y.y11,y.cx+y.x11),!f),a.arc(y.cx,y.cy,I,xt(y.y11,y.x11),xt(y.y01,y.x01),!f))):(a.moveTo(T,S),a.arc(0,0,u,v,g,!f)):a.moveTo(T,S),p>Ot&&w>Ot?P>Ot?(_=Vt(L,R,N,B,p,-P,f),y=Vt(T,S,z,W,p,-P,f),a.lineTo(_.cx+_.x01,_.cy+_.y01),P<k?a.arc(_.cx,_.cy,P,xt(_.y01,_.x01),xt(y.y01,y.x01),!f):(a.arc(_.cx,_.cy,P,xt(_.y01,_.x01),xt(_.y11,_.x11),!f),a.arc(0,0,p,xt(_.cy+_.y11,_.cx+_.x11),xt(y.cy+y.y11,y.cx+y.x11),f),a.arc(y.cx,y.cy,P,xt(y.y11,y.x11),xt(y.y01,y.x01),!f))):a.arc(0,0,p,E,b,f):a.lineTo(L,R)}else a.moveTo(0,0);if(a.closePath(),l)return a=null,l+""||null}return l.centroid=function(){var n=(+t.apply(this,arguments)+ +e.apply(this,arguments))/2,r=(+i.apply(this,arguments)+ +o.apply(this,arguments))/2-Tt/2;return[Ct(r)*n,It(r)*n]},l.innerRadius=function(e){return arguments.length?(t="function"==typeof e?e:wt(+e),l):t},l.outerRadius=function(t){return arguments.length?(e="function"==typeof t?t:wt(+t),l):e},l.cornerRadius=function(t){return arguments.length?(n="function"==typeof t?t:wt(+t),l):n},l.padRadius=function(t){return arguments.length?(r=null==t?null:"function"==typeof t?t:wt(+t),l):r},l.startAngle=function(t){return arguments.length?(i="function"==typeof t?t:wt(+t),l):i},l.endAngle=function(t){return arguments.length?(o="function"==typeof t?t:wt(+t),l):o},l.padAngle=function(t){return arguments.length?(s="function"==typeof t?t:wt(+t),l):s},l.context=function(t){return arguments.length?(a=null==t?null:t,l):a},l}();(a=document.createElementNS(qt,"path")).setAttribute("transform","translate(50 50)"),a.setAttribute("fill",e.background),a.setAttribute("fill-opacity","0.5"),a.setAttribute("d","".concat(p(c))),(l=document.createElementNS(qt,"path")).setAttribute("transform","translate(50 50)"),l.setAttribute("fill",e.progress),l.setAttribute("fill-opacity","1"),l.setAttribute("d","".concat(p(Ut(Ut({},c),{endAngle:c.endAngle*(n/100)})))),i.append(a,l)}var u;if((u=document.createElementNS(qt,"text")).setAttribute("text-anchor","middle"),u.setAttribute("alignment-baseline","middle"),u.setAttribute("font-size","16"),u.setAttribute("font-family","lato"),u.setAttribute("font-weight","bold"),u.setAttribute("fill",e.text),"value"===this.props.valueType&&null!=this.props.value)if(this.props.unit&&this.props.unit.length>0){var d=document.createElementNS(qt,"tspan");d.setAttribute("x","0"),d.setAttribute("dy","1em"),d.textContent="".concat(t),d.style.fontSize="8pt";var h=document.createElementNS(qt,"tspan");h.setAttribute("x","0"),h.setAttribute("dy","1em"),h.textContent="".concat(this.props.unit),h.style.fontSize="8pt",u.append(d,h),u.setAttribute("transform","translate(50 33)")}else u.textContent="".concat(t),u.style.fontSize="8pt",u.setAttribute("transform","translate(50 50)");else u.textContent="".concat(n,"%"),u.setAttribute("transform","translate(50 50)");i.append(u)}return!0!==this.props.agentDisabled&&!0!==this.props.moduleDisabled||i.setAttribute("opacity","0.2"),null!==i&&r.append(i),r},e.prototype.updateDomElement=function(t){!1===this.meta.isBeingResized&&this.resizeElement(this.props.width,this.props.height),t.innerHTML=this.createDomElement().innerHTML},e.prototype.resizeElement=function(e,n){"progress-bar"===this.props.percentileType?t.prototype.resizeElement.call(this,e,35):t.prototype.resizeElement.call(this,e,e)},e.prototype.resize=function(e){this.resizeElement(e,e);var n=this.props.maxValue||0;"progress-bar"===this.props.percentileType&&(n=35),t.prototype.setProps.call(this,Ut(Ut({},this.props),{width:e,height:n}))},e.prototype.getProgress=function(){var t=this.props.minValue||0,e=this.props.maxValue||100,n=null==this.props.value?0:this.props.value;return n<=t?0:n>=e?100:Math.trunc((n-t)/(e-t)*100)},e}(n.ZP),Yt=Jt,Xt=__webpack_require__(369),Qt=__webpack_require__(709),$t=__webpack_require__(600),te=function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},t(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),ee=function(){return ee=Object.assign||function(t){for(var e,n=1,r=arguments.length;n<r;n++)for(var i in e=arguments[n])Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t},ee.apply(this,arguments)};function ne(t){if(null!==t.imageSrc){if("string"!=typeof t.statusImageSrc||0===t.imageSrc.statusImageSrc)throw new TypeError("invalid status image src.")}else if((0,e.VJ)(t.encodedTitle))throw new TypeError("missing encode tittle content.");if(null===(0,e.I1)(t.serviceId,null))throw new TypeError("invalid service id.");return ee(ee({},(0,n.TB)(t)),{type:10,serviceId:t.serviceId,imageSrc:(0,e.JW)(t.imageSrc,null),statusImageSrc:(0,e.JW)(t.statusImageSrc,null),encodedTitle:(0,e.JW)(t.encodedTitle,null)})}var re=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return te(n,t),n.prototype.createDomElement=function(){var t=document.createElement("div");return t.className="service",null!==this.props.statusImageSrc?(t.style.background="url(".concat(this.props.statusImageSrc,") no-repeat"),t.style.backgroundSize="contain",t.style.backgroundPosition="center",null!==this.props.encodedTitle&&(t.className="service image forced_title",t.setAttribute("data-use_title_for_force_title","1"),t.setAttribute("data-title",(0,e.NV)(this.props.encodedTitle)))):null!==this.props.encodedTitle&&(t.innerHTML=(0,e.NV)(this.props.encodedTitle)),t},n.prototype.updateDomElement=function(t){null!==this.props.statusImageSrc?(t.style.background="url(".concat(this.props.statusImageSrc,") no-repeat"),t.style.backgroundSize="contain",t.style.backgroundPosition="center",null!==this.props.encodedTitle&&(t.className="service image forced_title",t.setAttribute("data-use_title_for_force_title","1"),t.setAttribute("data-title",(0,e.NV)(this.props.encodedTitle))),t.innerHTML=""):null!==this.props.encodedTitle&&(t.innerHTML=(0,e.NV)(this.props.encodedTitle))},n}(n.ZP),ie=re,oe=function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},t(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),se=function(){return se=Object.assign||function(t){for(var e,n=1,r=arguments.length;n<r;n++)for(var i in e=arguments[n])Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t},se.apply(this,arguments)};function ae(t){return se(se(se({},(0,n.TB)(t)),{type:22,value:(0,e.I1)(t.value,0),status:(0,e.VJ)(t.status)?"#B2B2B2":t.status,titleColor:(0,e.VJ)(t.titleColor)?"#3f3f3f":t.titleColor,title:(0,e.VJ)(t.title)?"":t.title,titleModule:(0,e.VJ)(t.titleModule)?"":t.titleModule,thresholds:(0,e.VJ)(t.thresholds)?"":t.thresholds,minMaxValue:(0,e.VJ)(t.minMaxValue)?"":t.minMaxValue,odometerType:(0,e.VJ)(t.odometerType)?"percent":t.odometerType}),(0,e.MH)(t))}var le,ce=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return oe(e,t),e.prototype.createDomElement=function(){var t="",e="",n="",r="";if(""!==this.props.thresholds){var i=JSON.parse(this.props.thresholds);null!==i&&(0==i.min_warning&&0==i.max_warning||(t=this.getCoords(i.min_warning,this.props.width/2),e=0==i.max_warning?this.getCoords(100,this.props.width/2):this.getCoords(i.max_warning,this.props.width/2)),0==i.min_critical&&0==i.max_critical||(n=this.getCoords(i.min_critical,this.props.width/2),r=0==i.max_critical?this.getCoords(100,this.props.width/2):this.getCoords(i.max_critical,this.props.width/2)))}var o,s="";Number(this.props.value)===this.props.value&&this.props.value%1!=0?o=this.props.value.toFixed(1):(s=""===this.props.minMaxValue?" %":this.getSubfix(this.props.value),o=new Intl.NumberFormat("es",{maximumSignificantDigits:4,maximumFractionDigits:3}).format(this.props.value));var a=o.match(/\d*\.\d/);null!==a&&(o=a[0]);var l=this.getRotate(this.props.value),c=document.getElementById("visual-console-container");null===c&&(c=document.getElementById("visual-console-container-".concat(this.props.cellId))),""==c.style.backgroundColor&&(c.style.backgroundColor="#fff");var p=.7*this.props.width,u=document.createElement("div");u.className="odometer",!0!==this.props.agentDisabled&&!0!==this.props.moduleDisabled||(u.style.opacity="0.2");var d=document.createElement("div");d.className="odometer-container";var h=document.createElement("div");h.className="odometer-a",h.style.backgroundColor="".concat(c.style.backgroundColor);var m=document.createElement("div");m.className="odometer-b",m.id="odometerB-".concat(this.props.id),m.style.backgroundColor="".concat(this.props.status);var f=document.createElement("div");f.className="odometer-c";var _=document.createElement("div");_.className="odometer-d";var y="http://www.w3.org/2000/svg";if(""!=t){var v=document.createElementNS(y,"svg");v.setAttributeNS(null,"width","100%"),v.setAttributeNS(null,"height","100%"),v.setAttributeNS(null,"style","position:absolute;z-index:1");var g=document.createElementNS(y,"path");g.setAttributeNS(null,"id","svgWarning-".concat(this.props.id)),g.setAttributeNS(null,"d","M".concat(this.props.width/2,",").concat(this.props.width/2,"L").concat(t,"A").concat(this.props.width/2,",").concat(this.props.width/2,",0,0,1,").concat(e,"Z")),g.setAttributeNS(null,"class","svg_warning"),v.appendChild(g),d.appendChild(v)}if(""!=n){var b=document.createElementNS(y,"svg");b.setAttributeNS(null,"width","100%"),b.setAttributeNS(null,"height","100%"),b.setAttributeNS(null,"style","position:absolute;z-index:2");var E=document.createElementNS(y,"path");E.setAttributeNS(null,"id","svgCritical-".concat(this.props.id)),E.setAttributeNS(null,"d","M".concat(this.props.width/2,",").concat(this.props.width/2,"L").concat(n,"A").concat(this.props.width/2,",").concat(this.props.width/2,",0,0,1,").concat(r,"Z")),E.setAttributeNS(null,"fill","#E63C52"),b.appendChild(E),d.appendChild(b)}var w=document.createElement("h1");w.innerText=o+s,w.style.fontSize="".concat(.17*p,"px"),w.style.color="".concat(this.props.status),w.style.lineHeight="0";var M=document.createElement("h2");""==this.props.title?M.textContent=this.truncateTitle(this.props.moduleName):M.textContent=this.truncateTitle(this.props.title),M.title=this.props.titleModule,M.setAttribute("title",this.props.titleModule),M.style.fontSize="".concat(.06*p,"px"),M.style.color="".concat(this.props.titleColor),M.style.lineHeight="0";var x=document.createElement("script");x.type="text/javascript",x.onload=function(){m.style.transform="rotate(".concat(l,"turn)")};var C=window.location.pathname.split("/")[1];return x.src="".concat(document.dir,"/").concat(C,"/include/javascript/pandora_alerts.js"),h.appendChild(w),h.appendChild(M),d.appendChild(m),d.appendChild(f),d.appendChild(_),d.appendChild(h),d.appendChild(x),u.appendChild(d),u},e.prototype.updateDomElement=function(t){var e=this;t.innerHTML=this.createDomElement().innerHTML;var n=this.getRotate(this.props.value),r=document.getElementById("svgWarning-".concat(this.props.id));null!=r&&(r.style.display="none");var i=document.getElementById("svgCritical-".concat(this.props.id));null!=i&&(i.style.display="none"),setTimeout((function(){null!=r&&(r.style.display="block"),null!=i&&(i.style.display="block");var t=document.getElementById("odometerB-".concat(e.props.id));t&&(t.style.transform="rotate(".concat(n,"turn)"))}),500)},e.prototype.resizeElement=function(e){t.prototype.resizeElement.call(this,e,e/2)},e.prototype.resize=function(t){this.resizeElement(this.props.width)},e.prototype.getRotate=function(t){var e=0;if(""===this.props.minMaxValue)e=t/2/100;else{var n=JSON.parse(this.props.minMaxValue);if(n.min===t)e=0;else if(n.max===t)e=.5;else{var r=n.max-n.min;e=(100-100*(n.max-t)/r)/100/2}}return e},e.prototype.getSubfix=function(t){var e="",n=(t+"").length;return n>3&&n<=6?e=" K":n>6&&n<=9?e=" M":n>9&&n<=12?e=" G":n>12&&n<=15&&(e=" T"),e},e.prototype.getCoords=function(t,e){if(""!==this.props.minMaxValue){var n=JSON.parse(this.props.minMaxValue);if(n.min===t)t=0;else if(n.max===t||100===t)t=100;else{var r=n.max-n.min;t=100-100*(n.max-t)/r}}t=180-1.8*t;var i=e+Math.cos(t*Math.PI/180)*e,o=e-Math.sin(t*Math.PI/180)*e;return"".concat(i,",").concat(o)},e.prototype.truncateTitle=function(t){if(null!=t&&t.length>22){var e=t.length/2,n=e-9,r=t.substr(0,e-n),i=t.substr(e+n);return"".concat(r,"...").concat(i)}return t},e}(n.ZP),pe=ce,ue=__webpack_require__(880),de=function(){return de=Object.assign||function(t){for(var e,n=1,r=arguments.length;n<r;n++)for(var i in e=arguments[n])Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t},de.apply(this,arguments)};function he(t){var n=(0,e.I1)(t.type,null);if(null==n)throw new TypeError("missing item type.");switch(n){case 0:return s(t);case 1:return(0,$t.C)(t);case 2:case 6:case 7:case 8:return ut(t);case 3:case 9:case 15:case 16:return Zt(t);case 4:return ot(t);case 5:return u(t);case 10:return ne(t);case 11:return V(t);case 12:return tt(t);case 13:return O(t);case 14:return(0,mt.o)(t);case 17:return(0,Xt.p)(t);case 18:return(0,Qt.K)(t);case 19:return J(t);case 20:return E(t);case 21:return B(t);case 22:return ae(t);case 23:return(0,ue.u)(t);default:throw new TypeError("decoder not found")}}var me=function(){function t(t,n,r){var i=this;this.elementsById={},this.elementIds=[],this.relations={},this.lineLinks={},this.lines={},this.clickEventManager=new P.Z,this.dblClickEventManager=new P.Z,this.movedEventManager=new P.Z,this.lineMovedEventManager=new P.Z,this.resizedEventManager=new P.Z,this.selectionChangedEventManager=new P.Z,this.disposables=[],this.handleElementClick=function(t){i.clickEventManager.emit(t)},this.handleElementDblClick=function(t){i.dblClickEventManager.emit(t)},this.handleElementMovement=function(t){var e=t.item.itemProps.type;if(13===e||21===e||void 0!==i.props.gridSelected&&!1!==i.props.gridSelected||i.elements.forEach((function(e){if(!0===e.meta.isSelected&&t.item.itemProps.id!==e.itemProps.id&&13!==e.props.type&&21!==e.props.type){var n=t.newPosition.x-t.item.props.x,r=t.newPosition.y-t.item.props.y,o=e.props.x+n,s=e.props.y+r;o>i.props.width?o=i.props.width:o<=0&&(o=0),s>i.props.height?s=i.props.height:s<=0&&(s=0),e.moveElement(o,s),e.debouncedMovementSave(o,s)}})),13!==e&&21!==e&&!0===i.props.gridSelected){var n=i.props.gridSize,r=t.newPosition.x,o=t.newPosition.y;if(r%n!=0||o%n!=0){var s=Math.floor(r/n)*n,a=Math.floor(o/n)*n;return void document.getElementById("item-selected-move").setAttribute("style","top:"+a+"px !important; left:"+s+"px !important")}}var l=t.item.props.id;i.getItemRelations(l).forEach((function(e){e.parentId===l?e.line.props=de(de({},e.line.props),{startPosition:i.getVisualCenter(t.newPosition,t.item)}):e.childId===l&&(e.line.props=de(de({},e.line.props),{endPosition:i.getVisualCenter(t.newPosition,t.item)}))})),i.updateLinesConnected(t.item.props,t.newPosition,!1)},this.handleElementMovementFinished=function(t){i.movedEventManager.emit(t),i.updateLinesConnected(t.item.props,t.newPosition,!0)},this.handleLineElementMovementFinished=function(t){i.refreshLink(t.item),i.lineMovedEventManager.emit(t)},this.handleElementResizement=function(t){13===t.item.props.type||21===t.item.props.type||void 0!==i.props.gridSelected&&!1!==i.props.gridSelected||i.elements.forEach((function(e){!0===e.meta.isSelected&&t.item.itemProps.id!==e.itemProps.id&&13!==e.props.type&&21!==e.props.type&&(e.setMeta({isUpdating:!0}),e.resizeElement(t.newSize.width,t.newSize.height),e.debouncedResizementSave(t.newSize.width,t.newSize.height))}));var e=t.item,n=e.props,r=n.id,o=i.getItemRelations(r),s={x:n.x,y:n.y},a=i.elementsById[r].meta;i.elementsById[r].meta=de(de({},a),{isUpdating:!0}),o.forEach((function(t){t.parentId===r?t.line.props=de(de({},t.line.props),{startPosition:i.getVisualCenter(s,e)}):t.childId===r&&(t.line.props=de(de({},t.line.props),{endPosition:i.getVisualCenter(s,e)}))}))},this.handleElementResizementFinished=function(t){i.resizedEventManager.emit(t)},this.handleElementRemove=function(t){i.elementIds=i.elementIds.filter((function(e){return e!==t.item.props.id})),delete i.elementsById[t.item.props.id],i.clearRelations(t.item.props.id)},this.handleElementSelectionChanged=function(t){i.elements.filter((function(t){return 1==t.meta.isSelected})).length>0?t.selected=!0:t.selected=!1,i.selectionChangedEventManager.emit(t)},this.handleContainerClick=function(){i.unSelectItems()},this.containerRef=t,this._props=function(t){var n=t.id,r=t.name,i=t.groupId,o=t.backgroundURL,s=t.backgroundColor,a=t.isFavorite,l=t.relationLineWidth,c=t.maintenanceMode,p=t.gridSize;if(t.gridSelected,null==n||isNaN(parseInt(n)))throw new TypeError("invalid Id.");if("string"!=typeof r||0===r.length)throw new TypeError("invalid name.");if(null==i||isNaN(parseInt(i)))throw new TypeError("invalid group Id.");return de({id:parseInt(n),name:r,groupId:parseInt(i),backgroundURL:(0,e.JW)(o,null),backgroundColor:(0,e.JW)(s,null),isFavorite:(0,e.gx)(a),relationLineWidth:(0,e.I1)(l,0),maintenanceMode:c,gridSize:(0,e.I1)(p,10),gridSelected:!1},(0,e.HY)(t))}(n),this.render(),(r=r.sort((function(t,e){return null==t.id||null==e.id?0:t.id>e.id?1:-1}))).forEach((function(t){return i.addElement(t,i)})),this.buildRelations(),this.elements.forEach((function(t){t instanceof L&&i.refreshLink(t)})),this.containerRef.addEventListener("click",this.handleContainerClick)}return t.prototype.coordinatesInItem=function(t,e,n){return 13!=n.type&&21!=n.type&&t>n.x&&t<n.x+n.width&&e>n.y&&e<n.y+n.height},t.prototype.refreshLink=function(t){var e=t.props.id,n=0,r=0;try{for(var i in this.elementsById)this.coordinatesInItem(t.props.startPosition.x,t.props.startPosition.y,this.elementsById[i].props)&&(n=parseInt(i)),this.coordinatesInItem(t.props.endPosition.x,t.props.endPosition.y,this.elementsById[i].props)&&(r=parseInt(i));for(var i in null==this.lineLinks&&(this.lineLinks={}),null==this.lines&&(this.lines={}),n==e&&(n=0),r==e&&(r=0),null==this.lines[e]&&(this.lines[e]={start:n,end:r}),n>0?(null==this.lineLinks[n]&&(this.lineLinks[n]={}),this.lineLinks[n][e]={start:n,end:r}):this.lines[e].start>0&&(this.lineLinks[this.lines[e].start][e].start=0,this.lines[e].start=0),r>0?(null==this.lineLinks[r]&&(this.lineLinks[r]={}),this.lineLinks[r][e]={start:n,end:r}):this.lines[e].end>0&&(this.lineLinks[this.lines[e].end][e].end=0,this.lines[e].end=0),this.lines[e]={start:n,end:r},this.lineLinks)this.lineLinks[i][e]&&(0==this.lineLinks[i][e].start&&0==this.lineLinks[i][e].end&&(delete this.lineLinks[i][e],0===Object.keys(this.lineLinks[i]).length&&delete this.lineLinks[i]),(this.lineLinks[i][e].start!=n&&this.lineLinks[i][e].end==r||this.lineLinks[i][e].start==n&&this.lineLinks[i][e].end!=r)&&(delete this.lineLinks[i][e],0===Object.keys(this.lineLinks[i]).length&&delete this.lineLinks[i]))}catch(t){console.error(t)}},t.prototype.updateLinesConnected=function(t,n,r){var i=this;null!=this.lineLinks[t.id]&&(Object.keys(this.lineLinks[t.id]).forEach((function(o){var s=parseInt(o);if(-1!==i.elementIds.indexOf(s)){var a=i.elementsById[s];if(a.props){var l=a.props.startPosition.x,c=a.props.startPosition.y,p=a.props.endPosition.x,u=a.props.endPosition.y;t.id==i.lineLinks[t.id][s].start&&(l=n.x+t.width/2,c=n.y+t.height/2),t.id==i.lineLinks[t.id][s].end&&(p=n.x+t.width/2,u=n.y+t.height/2),i.updateElement(de(de({},a.props),{startX:l,startY:c,endX:p,endY:u})),r&&(0,e.Ds)(500,(function(t){i.lineMovedEventManager.emit({item:t.line,startPosition:{x:t.startX,y:t.startY},endPosition:{x:t.endX,y:t.endY}})}))({line:a,startX:l,startY:c,endX:p,endY:u})}}})),this.buildRelations(t.id,n.x+t.width/2,n.y+t.height/2))},Object.defineProperty(t.prototype,"elements",{get:function(){var t=this;return this.elementIds.map((function(e){return t.elementsById[e]})).filter((function(t){return null!=t}))},enumerable:!1,configurable:!0}),t.prototype.addElement=function(t,n){void 0===n&&(n=this);try{null==t.ratio&&(t.ratio=1),t.x*=t.ratio,t.y*=t.ratio,13==t.type&&(t.startX*=t.ratio,t.startY*=t.ratio,t.endX*=t.ratio,t.endY*=t.ratio);var r=function(t){var n=(0,e.I1)(t.type,null);if(null==n)throw new TypeError("missing item type.");var r=(0,e.SM)(t);switch(n){case 0:return new l(s(t),r);case 1:return new $t.Z((0,$t.C)(t),r);case 2:case 6:case 7:case 8:return new ht(ut(t),r);case 3:case 9:case 15:case 16:return new Yt(Zt(t),r);case 4:return new at(ot(t),r);case 5:return new h(u(t),r);case 10:return new ie(ne(t),r);case 11:return new U(V(t),r);case 12:return new nt(tt(t),r);case 13:return new L(O(t),r);case 14:return new mt.Z((0,mt.o)(t),r);case 17:return new Xt.Z((0,Xt.p)(t),r);case 18:return new Qt.Z((0,Qt.K)(t),r);case 19:return new X(J(t),r);case 20:return new k(E(t),r);case 21:return new W(B(t),r);case 22:return new pe(ae(t),r);case 23:return new ue.Z((0,ue.u)(t),r);default:throw new TypeError("item not found")}}(t);return n.elementsById[r.props.id]=r,n.elementIds.push(r.props.id),r.onRemove(n.handleElementRemove),r.onSelectionChanged(n.handleElementSelectionChanged),r.onClick(n.handleElementClick),r.onDblClick(n.handleElementDblClick),r instanceof L?(r.onLineMovementFinished(n.handleLineElementMovementFinished),this.refreshLink(r)):(r.onMoved(n.handleElementMovement),r.onMovementFinished(n.handleElementMovementFinished),r.onResized(n.handleElementResizement),r.onResizeFinished(n.handleElementResizementFinished)),1!==t.ratio&&13!=t.type&&(r.elementRef.style.transform="scale(".concat(t.ratio?t.ratio:1,")"),r.elementRef.style.transformOrigin="left top",r.elementRef.style.minWidth="max-content",r.elementRef.style.minHeight="max-content"),n.containerRef.append(r.elementRef),r}catch(t){console.error("Error creating a new element:",t.message)}},t.prototype.updateElements=function(t){var e=this,n=t.map((function(t){return t.id||null})).filter((function(t){return null!=t}));this.elementIds.filter((function(t){return n.indexOf(t)<0})).forEach((function(t){null!=e.elementsById[t]&&(e.elementsById[t].remove(),delete e.elementsById[t])})),this.elementIds=n,t.forEach((function(t){if(t.id)if(null==e.elementsById[t.id])e.addElement(t);else try{null!=t.ratio&&(t.x*=t.ratio,t.y*=t.ratio,13==t.type&&(t.startX*=t.ratio,t.startY*=t.ratio,t.endX*=t.ratio,t.endY*=t.ratio)),e.elementsById[t.id].props=he(t)}catch(t){console.error("Error updating an element:",t.message)}})),this.buildRelations()},t.prototype.updateElement=function(t){try{this.elementsById[t.id].props=de({},he(t))}catch(t){console.error("Error updating element:",t.message)}this.buildRelations()},Object.defineProperty(t.prototype,"props",{get:function(){return de({},this._props)},set:function(t){var e=this.props;this._props=t,this.render(e)},enumerable:!1,configurable:!0}),t.prototype.render=function(t){void 0===t&&(t=null),t?(t.backgroundURL!==this.props.backgroundURL&&(this.containerRef.style.backgroundImage=null!==this.props.backgroundURL?"url(".concat(this.props.backgroundURL,")"):""),null!=this.props.backgroundColor&&t.backgroundColor!==this.props.backgroundColor&&(this.containerRef.style.backgroundColor=this.props.backgroundColor),this.sizeChanged(t,this.props)&&this.resizeElement(this.props.width,this.props.height)):(this.props.backgroundURL&&(this.containerRef.style.backgroundImage=null!==this.props.backgroundURL?"url(".concat(this.props.backgroundURL,")"):""),this.props.backgroundColor&&(this.containerRef.style.backgroundColor=this.props.backgroundColor),this.resizeElement(this.props.width,this.props.height))},t.prototype.sizeChanged=function(t,e){return t.width!==e.width||t.height!==e.height},t.prototype.resizeElement=function(t,e){this.containerRef.style.width="".concat(t,"px"),this.containerRef.style.height="".concat(e,"px")},t.prototype.resize=function(t,e){this.props=de(de({},this.props),{width:t,height:e})},t.prototype.remove=function(){this.disposables.forEach((function(t){return t.dispose()})),this.elements.forEach((function(t){return t.remove()})),this.elementsById={},this.elementIds=[],this.clearRelations(),this.containerRef.removeEventListener("click",this.handleContainerClick),this.containerRef.innerHTML=""},t.prototype.buildRelations=function(t,e,n){var r=this;this.clearRelations(),this.elements.forEach((function(i){if(null!==i.props.parentId){var o=r.elementsById[i.props.parentId],s=r.elementsById[i.props.id];o&&s&&(null!=t?i.props.parentId==t?r.addRelationLine(o,s,e,n):i.props.id==t?r.addRelationLine(o,s,void 0,void 0,e,n):r.addRelationLine(o,s):r.addRelationLine(o,s))}}))},t.prototype.clearRelations=function(t){if(null!=t)for(var e in this.relations){var n=e.split("|"),r=Number.parseInt(n[0]),i=Number.parseInt(n[1]);t!==r&&t!==i||(this.relations[e].remove(),delete this.relations[e])}else for(var e in this.relations)this.relations[e].remove(),delete this.relations[e]},t.prototype.getRelationLine=function(t,e){var n="".concat(t,"|").concat(e);return this.relations[n]||null},t.prototype.getItemRelations=function(t){var e=[];for(var n in this.relations){var r=n.split("|"),i=Number.parseInt(r[0]),o=Number.parseInt(r[1]);t!==i&&t!==o||e.push({parentId:i,childId:o,line:this.relations[n]})}return e},t.prototype.getVisualCenter=function(t,e){var n=1;null!=e.props.ratio&&(n=e.props.ratio);var r=t.x+e.elementRef.clientWidth/2*n,i=t.y+e.elementRef.clientHeight/2*n;if(void 0!==e.props.label||""!==e.props.label||null!==e.props.label)switch(e.props.labelPosition){case"up":i=t.y+(e.elementRef.clientHeight+e.labelElementRef.clientHeight)/2*n;break;case"down":i=t.y+(e.elementRef.clientHeight-e.labelElementRef.clientHeight)/2*n;break;case"right":r=t.x+(e.elementRef.clientWidth-e.labelElementRef.clientWidth)/2*n;break;case"left":r=t.x+(e.elementRef.clientWidth+e.labelElementRef.clientWidth)/2*n}return{x:r,y:i}},t.prototype.addRelationLine=function(t,n,r,i,o,s){var a="".concat(t.props.id,"|").concat(n.props.id);null!=this.relations[a]&&this.relations[a].remove();var l=this.getVisualCenter(t.props,t),c=l.x,p=l.y,u=this.getVisualCenter(n.props,n),d=u.x,h=u.y;null!=r&&(c=r),null!=i&&(p=i),null!=o&&(d=o),null!=s&&(h=s);var m=new L(O({id:0,type:13,startX:c,startY:p,endX:d,endY:h,width:0,height:0,lineWidth:this.props.relationLineWidth,color:(0,e.JW)(n.props.colorStatus,"#CCC"),ratio:t.props.ratio}),(0,e.SM)({receivedAt:new Date}));return this.relations[a]=m,m.elementRef.style.zIndex="0",this.containerRef.append(m.elementRef),m},t.prototype.onItemClick=function(t){var e=this.clickEventManager.on(t);return this.disposables.push(e),e},t.prototype.onItemDblClick=function(t){var e=this.dblClickEventManager.on(t);return this.disposables.push(e),e},t.prototype.onItemMoved=function(t){var e=this.movedEventManager.on(t);return this.disposables.push(e),e},t.prototype.onLineMoved=function(t){var e=this.lineMovedEventManager.on(t);return this.disposables.push(e),e},t.prototype.onItemResized=function(t){var e=this.resizedEventManager.on(t);return this.disposables.push(e),e},t.prototype.onItemSelectionChanged=function(t){var e=this.selectionChangedEventManager.on(t);return this.disposables.push(e),e},t.prototype.enableEditMode=function(){this.elements.forEach((function(t){t.meta=de(de({},t.meta),{editMode:!0})})),this.containerRef.classList.add("is-editing")},t.prototype.disableEditMode=function(){this.elements.forEach((function(t){t.meta=de(de({},t.meta),{editMode:!1})})),this.containerRef.classList.remove("is-editing")},t.prototype.enableMaintenanceMode=function(){this.elements.forEach((function(t){t.meta=de(de({},t.meta),{maintenanceMode:!0})})),this.containerRef.classList.add("is-maintenance"),this.containerRef.classList.remove("is-editing")},t.prototype.disableMaintenanceMode=function(){this.elements.forEach((function(t){t.meta=de(de({},t.meta),{maintenanceMode:!1})})),this.containerRef.classList.remove("is-maintenance"),this.containerRef.classList.add("is-editing")},t.prototype.updateGridSize=function(t){this._props.gridSize=parseInt(t),this.props.gridSize=parseInt(t)},t.prototype.updateGridSelected=function(t){this._props.gridSelected=t,this.props.gridSelected=t},t.prototype.selectItem=function(t,e){var n=this;void 0===e&&(e=!1),e?this.elementIds.forEach((function(e){var r=n.elementsById[e].meta;e!==t&&r.isSelected?n.elementsById[e].unSelectItem():e!==t||r.isSelected||n.elementsById[e].selectItem()})):this.elementsById[t]&&this.elementsById[t].selectItem()},t.prototype.unSelectItem=function(t){this.elementsById[t]&&this.elementsById[t].meta.isSelected&&this.elementsById[t].unSelectItem()},t.prototype.unSelectItems=function(){var t=this;this.elementIds.forEach((function(e){t.elementsById[e]&&t.elementsById[e].unSelectItem()}))},t.itemDescriptiveName=function(t){var n;switch(t.props.type){case 0:n="".concat((0,e.t)("Static graph")," - ").concat(t.props.imageSrc);break;case 1:n=(0,e.t)("Module graph");break;case 19:n=(0,e.t)("Clock");break;case 18:n=(0,e.t)("Bars graph");break;case 14:n=(0,e.t)("Event history graph");break;case 3:n=(0,e.t)("Percentile bar");break;case 15:n=(0,e.t)("Circular progress bar");break;case 16:n=(0,e.t)("Circular progress bar (interior)");break;case 2:n=(0,e.t)("Simple Value");break;case 4:n=(0,e.t)("Label");break;case 11:n=(0,e.t)("Group");break;case 20:n=(0,e.t)("Color cloud");break;case 5:n="".concat((0,e.t)("Icon")," - ").concat(t.props.imageSrc);break;case 22:n=(0,e.t)("Odometer");break;case 23:n=(0,e.t)("BasicChart");break;default:n=(0,e.t)("Item")}var r=t.props;return null!=r.agentAlias&&null!=r.moduleName?n+=" (".concat((0,e.fk)(r.agentAlias,18)," - ").concat((0,e.fk)(r.moduleName,25),")"):null!=r.agentAlias&&(n+=" (".concat((0,e.fk)(r.agentAlias,25),")")),n},t.items=((le={})[0]=l,le[1]=$t.Z,le[2]=ht,le[6]=ht,le[7]=ht,le[8]=ht,le[3]=Yt,le[9]=Yt,le[15]=Yt,le[16]=Yt,le[4]=at,le[5]=h,le[10]=ie,le[11]=U,le[12]=nt,le[13]=L,le[14]=mt.Z,le[17]=Xt.Z,le[18]=Qt.Z,le[19]=X,le[20]=k,le[21]=W,le[22]=pe,le[23]=ue.Z,le),t}(),fe=function(){function t(t){this.cancellable={cancel:function(){}},this._status="waiting",this.statusChangeEventManager=new P.Z,this.disposables=[],this.taskInitiator=t}return Object.defineProperty(t.prototype,"status",{get:function(){return this._status},set:function(t){this._status=t,this.statusChangeEventManager.emit(t)},enumerable:!1,configurable:!0}),t.prototype.init=function(){var t=this;this.cancellable=this.taskInitiator((function(){t.status="finished"})),this.status="started"},t.prototype.cancel=function(){this.cancellable.cancel(),this.status="cancelled"},t.prototype.onStatusChange=function(t){var e=this.statusChangeEventManager.on(t);return this.disposables.push(e),e},t}(),_e=function(){function t(){this.tasks={}}return t.prototype.add=function(t,e,n){void 0===n&&(n=0),this.tasks[t]&&"started"===this.tasks[t].status&&this.tasks[t].cancel();var r=n>0?function(t,e){return new fe((function(){var n=null;return t.onStatusChange((function(r){"finished"===r&&(n=window.setTimeout((function(){t.init()}),e))})),t.init(),{cancel:function(){n&&clearTimeout(n),t.cancel()}}}))}(new fe(e),n):new fe(e);return this.tasks[t]=r,this.tasks[t]},t.prototype.init=function(t){!this.tasks[t]||"waiting"!==this.tasks[t].status&&"cancelled"!==this.tasks[t].status&&"finished"!==this.tasks[t].status||this.tasks[t].init()},t.prototype.cancel=function(t){this.tasks[t]&&"started"===this.tasks[t].status&&this.tasks[t].cancel()},t}();window.VisualConsole=me,window.VisualConsole.Form=m,window.AsyncTaskManager=_e}()})();
+(function(){"use strict";var __webpack_modules__={630:function(t,e,n){n.r(e),n.d(e,{FormContainer:function(){return a},InputGroup:function(){return s}});var r=n(510),i=function(){return i=Object.assign||function(t){for(var e,n=1,r=arguments.length;n<r;n++)for(var i in e=arguments[n])Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t},i.apply(this,arguments)},o=function(t,e,n){if(n||2===arguments.length)for(var r,i=0,o=e.length;i<o;i++)!r&&i in e||(r||(r=Array.prototype.slice.call(e,0,i)),r[i]=e[i]);return t.concat(r||Array.prototype.slice.call(e))},s=function(){function t(t,e){this._name="",this.currentData={},this.dataRequestedEventManager=new r.Z,this.name=t,this.initialData=e}return Object.defineProperty(t.prototype,"name",{get:function(){return this._name},set:function(t){if(0===t.length)throw new RangeError("empty name");this._name=t},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"data",{get:function(){return i({},this.currentData)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"element",{get:function(){if(null==this._element){var t=document.createElement("div");t.className="input-group input-group-".concat(this.name);var e=this.createContent();e instanceof Array?e.forEach(t.appendChild):t.appendChild(e),this._element=t}return this._element},enumerable:!1,configurable:!0}),t.prototype.reset=function(){this.currentData={}},t.prototype.updateData=function(t){this.currentData=i(i({},this.currentData),t)},t.prototype.requestData=function(t,e,n){this.dataRequestedEventManager.emit({identifier:t,params:e,done:n})},t.prototype.onDataRequested=function(t){return this.dataRequestedEventManager.on(t)},t}(),a=function(){function t(t,e,n){void 0===e&&(e=[]),void 0===n&&(n=[]);var i=this;this.inputGroupsByName={},this.enabledInputGroupNames=[],this.submitEventManager=new r.Z,this.itemDataRequestedEventManager=new r.Z,this.handleItemDataRequested=this.itemDataRequestedEventManager.emit,this.title=t,e.length>0&&(this.inputGroupsByName=e.reduce((function(t,e){return e.onDataRequested(i.handleItemDataRequested),t[e.name]=e,t}),this.inputGroupsByName)),n.length>0&&(this.enabledInputGroupNames=o(o([],this.enabledInputGroupNames,!0),n.filter((function(t){return null!=i.inputGroupsByName[t]})),!0))}return t.prototype.getInputGroup=function(t){return this.inputGroupsByName[t]||null},t.prototype.addInputGroup=function(t,e){return void 0===e&&(e=null),t.onDataRequested(this.handleItemDataRequested),this.inputGroupsByName[t.name]=t,this.enabledInputGroupNames=this.enabledInputGroupNames.filter((function(e){return e!==t.name})),null!==e?e<=0?this.enabledInputGroupNames=o([t.name],this.enabledInputGroupNames,!0):e>=this.enabledInputGroupNames.length?this.enabledInputGroupNames=o(o([],this.enabledInputGroupNames,!0),[t.name],!1):this.enabledInputGroupNames=o(o(o([],this.enabledInputGroupNames.slice(0,e),!0),[t.name],!1),this.enabledInputGroupNames.slice(e),!0):this.enabledInputGroupNames=o(o([],this.enabledInputGroupNames,!0),[t.name],!1),this},t.prototype.removeInputGroup=function(t){return delete this.inputGroupsByName[t],this.enabledInputGroupNames=this.enabledInputGroupNames.filter((function(e){return e!==t})),this},t.prototype.getFormElement=function(t){var e=this;void 0===t&&(t="update");var n=document.createElement("form");n.id="visual-console-item-edition",n.className="visual-console-item-edition",n.addEventListener("submit",(function(t){t.preventDefault(),e.submitEventManager.emit({nativeEvent:t,data:e.enabledInputGroupNames.reduce((function(t,n){return e.inputGroupsByName[n]&&(t=i(i({},t),e.inputGroupsByName[n].data)),t}),{})})}));var r=document.createElement("div");return r.className="input-groups",this.enabledInputGroupNames.forEach((function(t){e.inputGroupsByName[t]&&r.appendChild(e.inputGroupsByName[t].element)})),n.appendChild(r),n},t.prototype.reset=function(){var t=this;this.enabledInputGroupNames.forEach((function(e){t.inputGroupsByName[e]&&t.inputGroupsByName[e].reset()}))},t.prototype.onSubmit=function(t){return this.submitEventManager.on(t)},t.prototype.onInputGroupDataRequested=function(t){return this.itemDataRequestedEventManager.on(t)},t}()},478:function(t,e,n){n.d(e,{TB:function(){return l}});var r=n(541),i=n(510),o=n(630),s=function(){return s=Object.assign||function(t){for(var e,n=1,r=arguments.length;n<r;n++)for(var i in e=arguments[n])Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t},s.apply(this,arguments)},a=function(t){switch(t){case"up":case"right":case"down":case"left":return t;default:return"down"}};function l(t){if(null==t.id||isNaN(parseInt(t.id)))throw new TypeError("invalid id.");if(null==t.type||isNaN(parseInt(t.type)))throw new TypeError("invalid type.");return s(s({id:parseInt(t.id),type:parseInt(t.type),label:(0,r.JW)(t.label,null),labelPosition:a(t.labelPosition),isLinkEnabled:(0,r.gx)(t.isLinkEnabled),link:(0,r.JW)(t.link,null),isOnTop:(0,r.gx)(t.isOnTop),parentId:(0,r.I1)(t.parentId,null),aclGroupId:(0,r.I1)(t.aclGroupId,null),cacheExpiration:(0,r.I1)(t.cacheExpiration,null),colorStatus:(0,r.JW)(t.colorStatus,"#CCC"),cellId:(0,r.JW)(t.cellId,""),alertOutline:(0,r.gx)(t.alertOutline),ratio:(0,r.xn)(t.ratio,null)},(0,r.HY)(t)),(0,r.oF)(t))}var c=function(){function t(t,e,n){void 0===n&&(n=!1);var o=this;this.elementRef=document.createElement("div"),this.labelElementRef=document.createElement("div"),this.childElementRef=document.createElement("div"),this.clickEventManager=new i.Z,this.dblClickEventManager=new i.Z,this.movedEventManager=new i.Z,this.movementFinishedEventManager=new i.Z,this.resizedEventManager=new i.Z,this.resizeFinishedEventManager=new i.Z,this.removeEventManager=new i.Z,this.selectionChangedEventManager=new i.Z,this.disposables=[],this.debouncedMovementSave=(0,r.Ds)(500,(function(t,e){o._metadata.isBeingMoved=!1;var n={x:o.props.x,y:o.props.y},r={x:t,y:e};o.positionChanged(n,r)&&(o.move(t,e),o.movementFinishedEventManager.emit({item:o,prevPosition:n,newPosition:r}))})),this.removeMovement=null,this.debouncedResizementSave=(0,r.Ds)(500,(function(t,e){o._metadata.isBeingResized=!1;var n={width:o.props.width,height:o.props.height},r={width:t,height:e};o.sizeChanged(n,r)&&(o.resize(t,e),o.resizeFinishedEventManager.emit({item:o,prevSize:n,newSize:r}))})),this.removeResizement=null,this.itemProps=t,this._metadata=e,n||this.init()}return t.prototype.initMovementListener=function(t){var e=this;13!=this.props.type&&21!=this.props.type&&(this.removeMovement=(0,r.Dw)(t,(function(t,n){var r={x:e.props.x,y:e.props.y},i={x:t,y:n};e.meta=s(s({},e.meta),{isSelected:!0}),e.positionChanged(r,i)&&(e._metadata.isBeingMoved=!0,e.moveElement(t,n),e.movedEventManager.emit({item:e,prevPosition:r,newPosition:i}),e.debouncedMovementSave(t,n))})))},t.prototype.stopMovementListener=function(){this.removeMovement&&(this.removeMovement(),this.removeMovement=null)},t.prototype.initResizementListener=function(t){var e=this;13!=this.props.type&&21!=this.props.type&&(this.removeResizement=(0,r.Aq)(t,(function(t,n){if(e._metadata.isBeingResized=!0,e.props.label&&e.props.label.length>0){var r=e.labelElementRef.getBoundingClientRect(),i=r.width,o=r.height;switch(e.props.labelPosition){case"up":case"down":n-=o;break;case"left":case"right":t-=i}}var s={width:e.props.width,height:e.props.height},a={width:t,height:n};e.sizeChanged(s,a)&&(e.resizeElement(t,n),e.resizedEventManager.emit({item:e,prevSize:s,newSize:a}),e.debouncedResizementSave(t,n))})))},t.prototype.stopResizementListener=function(){this.removeResizement&&(this.removeResizement(),this.removeResizement=null)},t.prototype.init=function(){this.elementRef=this.createContainerDomElement(),this.labelElementRef=this.createLabelDomElement(),this.childElementRef=this.createDomElement(),this.elementRef.appendChild(this.childElementRef),this.elementRef.appendChild(this.labelElementRef),this.resizeElement(this.itemProps.width,this.itemProps.height),this.changeLabelPosition(this.itemProps.labelPosition)},t.prototype.createContainerDomElement=function(){var t,e=this;return this.props.isLinkEnabled?(t=document.createElement("a"),this.props.link?t.href=this.props.link:t.className="textDecorationNone"):(t=document.createElement("div")).className="textDecorationNone",t.classList.add("visual-console-item"),this.props.isOnTop&&t.classList.add("is-on-top"),t.style.left="".concat(this.props.x,"px"),t.style.top="".concat(this.props.y,"px"),this.props.alertOutline&&t.classList.add("is-alert-triggered"),t.addEventListener("dblclick",(function(t){e.meta.isBeingMoved||e.meta.isBeingResized||(e.unSelectItem(),e.selectItem(),e.dblClickEventManager.emit({item:e,nativeEvent:t}))})),t.addEventListener("click",(function(t){if(e.meta.editMode)t.preventDefault(),t.stopPropagation();else if(e.itemProps.isLinkEnabled&&null!=e.itemProps.link){var n=document.createElement("div");n.className="div-visual-console-spinner";var r=document.createElement("div");r.className="visual-console-spinner",n.appendChild(r);for(var i=t.composedPath(),o="visual-console-container",s=0;s<i.length;s++){var a=i[s];if(null!=a.id&&null!=a.id&&""!=a.id&&!0===a.id.includes(o)){o=a.id;break}}var l=document.getElementById(o);null!=l&&(l.classList.add("is-updating"),l.appendChild(n))}e.meta.isBeingMoved||e.meta.isBeingResized||e.clickEventManager.emit({item:e,nativeEvent:t})})),this.meta.maintenanceMode&&t.classList.add("is-maintenance"),this.meta.editMode&&t.classList.add("is-editing"),this.meta.isFetching&&t.classList.add("is-fetching"),this.meta.isUpdating&&t.classList.add("is-updating"),this.meta.isSelected&&t.classList.add("is-selected"),t},t.prototype.createLabelDomElement=function(){var t=document.createElement("div");t.className="visual-console-item-label";var e=this.getLabelWithMacrosReplaced();if(e.length>0){var n=document.createElement("table"),r=document.createElement("tr"),i=document.createElement("tr"),o=document.createElement("tr"),s=document.createElement("td");s.innerHTML=e,r.appendChild(s),n.appendChild(i),n.appendChild(r),n.appendChild(o),n.style.textAlign="center",t.appendChild(n)}return t},t.prototype.getLabelWithMacrosReplaced=function(){var t=this.props;return(0,r.No)([{macro:"_date_",value:(0,r.rN)(new Date)},{macro:"_time_",value:(0,r.bc)(new Date)},{macro:"_agent_",value:null!=t.agentAlias?t.agentAlias:""},{macro:"_agentdescription_",value:null!=t.agentDescription?t.agentDescription:""},{macro:"_address_",value:null!=t.agentAddress?t.agentAddress:""},{macro:"_module_",value:null!=t.moduleName?t.moduleName:""},{macro:"_moduledescription_",value:null!=t.moduleDescription?t.moduleDescription:""}],this.props.label||"")},t.prototype.updateDomElement=function(t){t.innerHTML=this.createDomElement().innerHTML},Object.defineProperty(t.prototype,"props",{get:function(){return s({},this.itemProps)},set:function(t){this.setProps(t)},enumerable:!1,configurable:!0}),t.prototype.setProps=function(t){var e=this.props;this.itemProps=t,this.shouldBeUpdated(e,t)&&this.render(e,this._metadata)},Object.defineProperty(t.prototype,"meta",{get:function(){return s({},this._metadata)},set:function(t){this.setMeta(t)},enumerable:!1,configurable:!0}),t.prototype.setMeta=function(t){var e=this._metadata;this._metadata=s(s({},e),t),void 0!==t.isSelected&&e.isSelected!==t.isSelected&&this.selectionChangedEventManager.emit({selected:t.isSelected}),this.render(this.itemProps,e)},t.prototype.shouldBeUpdated=function(t,e){return t!==e},t.prototype.render=function(t,e){void 0===t&&(t=null),void 0===e&&(e=null),t&&(1!==this.props.ratio&&13!=this.props.type&&(this.elementRef.style.transform="scale(".concat(this.props.ratio?this.props.ratio:1,")"),this.elementRef.style.transformOrigin="left top",this.elementRef.style.minWidth="max-content",this.elementRef.style.minHeight="max-content"),13!=t.type&&21!=t.type||this.updateDomElement(this.childElementRef)),t&&!this.positionChanged(t,this.props)||(this.moveElement(this.props.x,this.props.y),t&&13!=t.type&&21!=t.type&&this.updateDomElement(this.childElementRef)),t&&!this.sizeChanged(t,this.props)||(this.resizeElement(this.props.width,this.props.height),t&&13!=t.type&&21!=t.type&&this.updateDomElement(this.childElementRef));var n=this.labelElementRef.innerHTML,r=this.createLabelDomElement().innerHTML;if(n!==r?(this.labelElementRef.innerHTML=r,this.changeLabelPosition(this.itemProps.labelPosition)):t&&t.labelPosition===this.props.labelPosition||this.changeLabelPosition(this.props.labelPosition),t&&t.isOnTop===this.props.isOnTop||(this.props.isOnTop?this.elementRef.classList.add("is-on-top"):this.elementRef.classList.remove("is-on-top")),t&&t.isLinkEnabled!==this.props.isLinkEnabled){for(var i=this.createContainerDomElement(),o=this.elementRef.attributes,s=0;s<o.length;s++)if("id"!==o[s].nodeName){var a=this.elementRef.getAttributeNode(o[s].nodeName);if(null!==a){var l=a.cloneNode(!0);i.setAttributeNode(l)}}null!==this.elementRef.parentNode&&this.elementRef.parentNode.replaceChild(i,this.elementRef),this.elementRef=i,this.elementRef.appendChild(this.childElementRef),this.elementRef.appendChild(this.labelElementRef)}if(t&&this.props.isLinkEnabled&&t.link!==this.props.link&&null!==this.props.link&&this.elementRef.setAttribute("href",this.props.link),e&&e.editMode===this.meta.editMode&&e.maintenanceMode===this.meta.maintenanceMode||(this.meta.editMode&&!1===this.meta.maintenanceMode?(this.elementRef.classList.add("is-editing"),this.elementRef.classList.remove("is-alert-triggered")):(this.elementRef.classList.remove("is-editing"),this.props.alertOutline&&this.elementRef.classList.add("is-alert-triggered"))),e&&e.isFetching===this.meta.isFetching||(this.meta.isFetching?this.elementRef.classList.add("is-fetching"):this.elementRef.classList.remove("is-fetching")),!e||e.isUpdating!==this.meta.isUpdating){if(this.meta.isUpdating){this.elementRef.classList.add("is-updating");var c=document.createElement("div");c.className="div-visual-console-spinner";var p=document.createElement("div");p.className="visual-console-spinner",c.appendChild(p),this.elementRef.appendChild(c)}else{this.elementRef.classList.remove("is-updating");var u=this.elementRef.querySelector(".div-visual-console-spinner");if(null!==u){var d=u.parentElement;null!==d&&d.removeChild(u)}}this.updateDomElement(this.childElementRef)}e&&e.isSelected===this.meta.isSelected||(this.meta.isSelected?(this.elementRef.classList.add("is-selected"),this.elementRef.setAttribute("id","item-selected-move")):(this.elementRef.classList.remove("is-selected"),this.elementRef.removeAttribute("id")))},t.prototype.remove=function(){this.removeEventManager.emit({item:this}),this.disposables.forEach((function(t){try{t.dispose()}catch(t){}})),this.elementRef.remove()},t.prototype.positionChanged=function(t,e){return t.x!==e.x||t.y!==e.y},t.prototype.changeLabelPosition=function(t){switch(t){case"up":this.elementRef.style.flexDirection="column-reverse";break;case"left":this.elementRef.style.flexDirection="row-reverse";break;case"right":this.elementRef.style.flexDirection="row";break;default:this.elementRef.style.flexDirection="column"}var e=this.labelElementRef.getElementsByTagName("table"),n=e.length>0?e.item(0):null;if(n)switch(this.props.labelPosition){case"up":case"down":this.props.width>0&&(n.style.width="".concat(this.props.width,"px"),n.style.height="");break;case"left":case"right":this.props.height>0&&(n.style.width="",n.style.height="".concat(this.props.height,"px"))}},t.prototype.moveElement=function(t,e){this.elementRef.style.left="".concat(t,"px"),this.elementRef.style.top="".concat(e,"px")},t.prototype.move=function(t,e){this.moveElement(t,e),this.itemProps=s(s({},this.props),{x:t,y:e})},t.prototype.sizeChanged=function(t,e){return t.width!==e.width||t.height!==e.height},t.prototype.resizeElement=function(t,e){if(13!=this.props.type&&21!=this.props.type&&(this.childElementRef.style.width=t>0?"".concat(t,"px"):"",this.childElementRef.style.height=e>0?"".concat(e,"px"):""),this.props.label&&this.props.label.length>0){var n=this.labelElementRef.getElementsByTagName("table"),r=n.length>0?n.item(0):null;if(r)switch(this.props.labelPosition){case"up":case"down":r.style.width=t>0?"".concat(t,"px"):"";break;case"left":case"right":r.style.height=e>0?"".concat(e,"px"):""}}},t.prototype.resize=function(t,e){this.resizeElement(t,e),this.itemProps=s(s({},this.props),{width:t,height:e})},t.prototype.onClick=function(t){var e=this.clickEventManager.on(t);return this.disposables.push(e),e},t.prototype.onDblClick=function(t){var e=this.dblClickEventManager.on(t);return this.disposables.push(e),e},t.prototype.onMoved=function(t){var e=this.movedEventManager.on(t);return this.disposables.push(e),e},t.prototype.onMovementFinished=function(t){var e=this.movementFinishedEventManager.on(t);return this.disposables.push(e),e},t.prototype.onResized=function(t){var e=this.resizedEventManager.on(t);return this.disposables.push(e),e},t.prototype.onResizeFinished=function(t){var e=this.resizeFinishedEventManager.on(t);return this.disposables.push(e),e},t.prototype.onRemove=function(t){var e=this.removeEventManager.on(t);return this.disposables.push(e),e},t.prototype.onSelectionChanged=function(t){var e=this.selectionChangedEventManager.on(t);return this.disposables.push(e),e},t.prototype.selectItem=function(){this.meta=s(s({},this.meta),{isSelected:!0}),this.initMovementListener(this.elementRef),13!==this.props.type&&21!==this.props.type&&this.initResizementListener(this.elementRef)},t.prototype.unSelectItem=function(){this.meta=s(s({},this.meta),{isSelected:!1}),this.stopMovementListener(),13!==this.props.type&&this.stopResizementListener()},t.prototype.getFormContainer=function(){return t.getFormContainer(this.props)},t.getFormContainer=function(t){var e=t.type?function(t){var e="";switch(t){case 0:e=(0,r.t)("Static image");break;case 1:e=(0,r.t)("Module graph");break;case 2:case 6:case 7:case 8:e=(0,r.t)("Simple value");break;case 3:case 9:case 15:case 16:e=(0,r.t)("Percentile item");break;case 4:e=(0,r.t)("Label");break;case 5:e=(0,r.t)("Icon");break;case 10:e=(0,r.t)("Service");break;case 11:e=(0,r.t)("Group");break;case 12:e=(0,r.t)("Box");break;case 13:e=(0,r.t)("Line");break;case 14:e=(0,r.t)("Event history graph");break;case 17:e=(0,r.t)("Serialized pie graph");break;case 18:e=(0,r.t)("Bars graph");break;case 19:e=(0,r.t)("Clock");break;case 20:e=(0,r.t)("Color cloud");break;case 21:e=(0,r.t)("Network link");break;case 22:e=(0,r.t)("Odometer");break;case 23:e=(0,r.t)("Basic chart");break;default:e=(0,r.t)("Item")}return e}(t.type):(0,r.t)("Item");return new o.FormContainer(e,[],[])},t}();e.ZP=c},709:function(__unused_webpack_module,__webpack_exports__,__webpack_require__){__webpack_require__.d(__webpack_exports__,{K:function(){return barsGraphPropsDecoder}});var _lib__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(541),_Item__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(478),__extends=(extendStatics=function(t,e){return extendStatics=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},extendStatics(t,e)},function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function n(){this.constructor=t}extendStatics(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}),extendStatics,__assign=function(){return __assign=Object.assign||function(t){for(var e,n=1,r=arguments.length;n<r;n++)for(var i in e=arguments[n])Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t},__assign.apply(this,arguments)},parseBarsGraphProps=function(t){switch(t){case"white":case"black":case"transparent":return t;default:return"transparent"}},parseTypeGraph=function(t){switch(t){case"horizontal":case"vertical":return t;default:return"vertical"}};function barsGraphPropsDecoder(t){if((0,_lib__WEBPACK_IMPORTED_MODULE_0__.VJ)(t.html)&&(0,_lib__WEBPACK_IMPORTED_MODULE_0__.VJ)(t.encodedHtml))throw new TypeError("missing html content.");return __assign(__assign(__assign({},(0,_Item__WEBPACK_IMPORTED_MODULE_1__.TB)(t)),{type:18,html:(0,_lib__WEBPACK_IMPORTED_MODULE_0__.VJ)(t.html)?(0,_lib__WEBPACK_IMPORTED_MODULE_0__.NV)(t.encodedHtml):t.html,backgroundColor:parseBarsGraphProps(t.backgroundColor),typeGraph:parseTypeGraph(t.typeGraph),gridColor:(0,_lib__WEBPACK_IMPORTED_MODULE_0__.VJ)(t.gridColor)?"#000000":t.gridColor}),(0,_lib__WEBPACK_IMPORTED_MODULE_0__.MH)(t))}var BarsGraph=function(_super){function BarsGraph(){return null!==_super&&_super.apply(this,arguments)||this}return __extends(BarsGraph,_super),BarsGraph.prototype.createDomElement=function(){var element=document.createElement("div");element.innerHTML=this.props.html,element.className="bars-graph",!0!==this.props.agentDisabled&&!0!==this.props.moduleDisabled||(element.style.opacity="0.2");for(var scripts=element.getElementsByTagName("script"),_loop_1=function(i){0===scripts[i].src.length&&setTimeout((function(){try{eval(scripts[i].innerHTML.trim())}catch(t){}}),0)},i=0;i<scripts.length;i++)_loop_1(i);return element},BarsGraph.prototype.updateDomElement=function(element){element.innerHTML=this.props.html,!0!==this.props.agentDisabled&&!0!==this.props.moduleDisabled||(element.style.opacity="0.2");for(var scripts=element.getElementsByTagName("script"),i=0;i<scripts.length;i++)0===scripts[i].src.length&&eval(scripts[i].innerHTML.trim())},BarsGraph}(_Item__WEBPACK_IMPORTED_MODULE_1__.ZP);__webpack_exports__.Z=BarsGraph},880:function(__unused_webpack_module,__webpack_exports__,__webpack_require__){__webpack_require__.d(__webpack_exports__,{u:function(){return basicChartPropsDecoder}});var _lib__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(541),_Item__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(478),__extends=(extendStatics=function(t,e){return extendStatics=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},extendStatics(t,e)},function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function n(){this.constructor=t}extendStatics(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}),extendStatics,__assign=function(){return __assign=Object.assign||function(t){for(var e,n=1,r=arguments.length;n<r;n++)for(var i in e=arguments[n])Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t},__assign.apply(this,arguments)};function basicChartPropsDecoder(t){if((0,_lib__WEBPACK_IMPORTED_MODULE_0__.VJ)(t.html)&&(0,_lib__WEBPACK_IMPORTED_MODULE_0__.VJ)(t.encodedHtml))throw new TypeError("missing html content.");return __assign(__assign(__assign(__assign({},(0,_Item__WEBPACK_IMPORTED_MODULE_1__.TB)(t)),{type:23,html:(0,_lib__WEBPACK_IMPORTED_MODULE_0__.VJ)(t.html)?(0,_lib__WEBPACK_IMPORTED_MODULE_0__.NV)(t.encodedHtml):t.html,period:(0,_lib__WEBPACK_IMPORTED_MODULE_0__.I1)(t.period,null),value:parseFloat(t.value),status:(0,_lib__WEBPACK_IMPORTED_MODULE_0__.VJ)(t.status)?"#B2B2B2":t.status,moduleNameColor:(0,_lib__WEBPACK_IMPORTED_MODULE_0__.VJ)(t.moduleNameColor)?"#3f3f3f":t.moduleNameColor}),(0,_lib__WEBPACK_IMPORTED_MODULE_0__.MH)(t)),(0,_lib__WEBPACK_IMPORTED_MODULE_0__.bs)(t))}var BasicChart=function(_super){function BasicChart(){return null!==_super&&_super.apply(this,arguments)||this}return __extends(BasicChart,_super),BasicChart.prototype.createDomElement=function(){var element=document.createElement("div"),header=document.createElement("div");header.className="basic-chart-header";var moduleName=document.createElement("h2");moduleName.className="basic-chart-header-name",moduleName.textContent=this.props.moduleName,moduleName.style.color="".concat(this.props.moduleNameColor),header.appendChild(moduleName);var value="";null!==this.props.value&&(value=this.numberFormat(this.props.value,!1,"",2,1e3));var moduleValue=document.createElement("h2");moduleValue.className="basic-chart-header-value",moduleValue.textContent="".concat(value),moduleValue.style.color=this.props.status,header.appendChild(moduleValue),element.innerHTML=this.props.html,element.className="basic-chart",!0!==this.props.agentDisabled&&!0!==this.props.moduleDisabled||(element.style.opacity="0.2");for(var legendP=element.getElementsByTagName("p"),i=0;i<legendP.length;i++)legendP[i].style.margin="0px";for(var overviewGraphs=element.getElementsByClassName("overview_graph"),i=0;i<overviewGraphs.length;i++)overviewGraphs[i].remove();for(var scripts=element.getElementsByTagName("script"),_loop_1=function(i){0===scripts[i].src.length&&setTimeout((function(){try{eval(scripts[i].innerHTML.trim())}catch(t){}}),0)},i=0;i<scripts.length;i++)_loop_1(i);return element.innerHTML=this.props.html,element.insertBefore(header,element.firstChild),element},BasicChart.prototype.updateDomElement=function(element){var header=document.createElement("div");header.className="basic-chart-header";var moduleName=document.createElement("h2");moduleName.className="basic-chart-header-name",moduleName.textContent=this.props.moduleName,moduleName.style.color="".concat(this.props.moduleNameColor),header.appendChild(moduleName);var value="";null!==this.props.value&&(value=this.numberFormat(this.props.value,!1,"",2,1e3));var moduleValue=document.createElement("h2");moduleValue.className="basic-chart-header-value",moduleValue.textContent="".concat(value),moduleValue.style.color=this.props.status,header.appendChild(moduleValue),element.innerHTML=this.props.html,element.insertBefore(header,element.firstChild);for(var legendP=element.getElementsByTagName("p"),i=0;i<legendP.length;i++)legendP[i].style.margin="0px";for(var overviewGraphs=element.getElementsByClassName("overview_graph"),i=0;i<overviewGraphs.length;i++)overviewGraphs[i].remove();for(var scripts=element.getElementsByTagName("script"),i=0;i<scripts.length;i++)0===scripts[i].src.length&&eval(scripts[i].innerHTML.trim())},BasicChart.prototype.numberFormat=function(t,e,n,r,i){if(i=void 0!==i?i:1e3,r||(r=99),e){if(Math.round(t)!=t)return""}else{r++;var o=this.pad("1",r,0);t=Math.round(t*Number.parseInt(o))/Number.parseInt(o)}for(var s=0;Math.abs(t)>=i;)s++,t/=i;return t=i?Math.round(2*t)/2:Math.round(2*t),isNaN(t)&&(t=0),t+" "+["","K","M","G","T","P","E","Z","Y"][s]+n},BasicChart.prototype.pad=function(t,e,n){var r=t+"";return e<=r.length?r:this.pad(r+n,e,n)},BasicChart}(_Item__WEBPACK_IMPORTED_MODULE_1__.ZP);__webpack_exports__.Z=BasicChart},369:function(__unused_webpack_module,__webpack_exports__,__webpack_require__){__webpack_require__.d(__webpack_exports__,{p:function(){return donutGraphPropsDecoder}});var _lib__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(541),_Item__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(478),__extends=(extendStatics=function(t,e){return extendStatics=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},extendStatics(t,e)},function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function n(){this.constructor=t}extendStatics(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}),extendStatics,__assign=function(){return __assign=Object.assign||function(t){for(var e,n=1,r=arguments.length;n<r;n++)for(var i in e=arguments[n])Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t},__assign.apply(this,arguments)};function donutGraphPropsDecoder(t){if((0,_lib__WEBPACK_IMPORTED_MODULE_0__.VJ)(t.html)&&(0,_lib__WEBPACK_IMPORTED_MODULE_0__.VJ)(t.encodedHtml))throw new TypeError("missing html content.");return __assign(__assign(__assign(__assign({},(0,_Item__WEBPACK_IMPORTED_MODULE_1__.TB)(t)),{type:17,html:(0,_lib__WEBPACK_IMPORTED_MODULE_0__.VJ)(t.html)?(0,_lib__WEBPACK_IMPORTED_MODULE_0__.NV)(t.encodedHtml):t.html,legendBackgroundColor:(0,_lib__WEBPACK_IMPORTED_MODULE_0__.VJ)(t.legendBackgroundColor)?"#ffffff":t.legendBackgroundColor}),(0,_lib__WEBPACK_IMPORTED_MODULE_0__.MH)(t)),(0,_lib__WEBPACK_IMPORTED_MODULE_0__.bs)(t))}var DonutGraph=function(_super){function DonutGraph(){return null!==_super&&_super.apply(this,arguments)||this}return __extends(DonutGraph,_super),DonutGraph.prototype.createDomElement=function(){var element=document.createElement("div");element.className="donut-graph",element.innerHTML=this.props.html,element.style.backgroundColor=this.props.legendBackgroundColor,!0!==this.props.agentDisabled&&!0!==this.props.moduleDisabled||(element.style.opacity="0.2");for(var scripts=element.getElementsByTagName("script"),_loop_1=function(i){0===scripts[i].src.length&&setTimeout((function(){try{eval(scripts[i].innerHTML.trim())}catch(t){}}),0)},i=0;i<scripts.length;i++)_loop_1(i);return element},DonutGraph.prototype.updateDomElement=function(element){element.innerHTML=this.props.html,element.style.backgroundColor=this.props.legendBackgroundColor,!0!==this.props.agentDisabled&&!0!==this.props.moduleDisabled||(element.style.opacity="0.2");for(var scripts=element.getElementsByTagName("script"),i=0;i<scripts.length;i++)0===scripts[i].src.length&&eval(scripts[i].innerHTML.trim())},DonutGraph}(_Item__WEBPACK_IMPORTED_MODULE_1__.ZP);__webpack_exports__.Z=DonutGraph},280:function(__unused_webpack_module,__webpack_exports__,__webpack_require__){__webpack_require__.d(__webpack_exports__,{o:function(){return eventsHistoryPropsDecoder}});var _lib__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(541),_Item__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(478),__extends=(extendStatics=function(t,e){return extendStatics=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},extendStatics(t,e)},function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function n(){this.constructor=t}extendStatics(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}),extendStatics,__assign=function(){return __assign=Object.assign||function(t){for(var e,n=1,r=arguments.length;n<r;n++)for(var i in e=arguments[n])Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t},__assign.apply(this,arguments)};function eventsHistoryPropsDecoder(t){if((0,_lib__WEBPACK_IMPORTED_MODULE_0__.VJ)(t.html)&&(0,_lib__WEBPACK_IMPORTED_MODULE_0__.VJ)(t.encodedHtml))throw new TypeError("missing html content.");return __assign(__assign(__assign({},(0,_Item__WEBPACK_IMPORTED_MODULE_1__.TB)(t)),{type:14,maxTime:(0,_lib__WEBPACK_IMPORTED_MODULE_0__.I1)(t.maxTime,null),legendColor:t.legendColor,html:(0,_lib__WEBPACK_IMPORTED_MODULE_0__.VJ)(t.html)?(0,_lib__WEBPACK_IMPORTED_MODULE_0__.NV)(t.encodedHtml):t.html}),(0,_lib__WEBPACK_IMPORTED_MODULE_0__.MH)(t))}var EventsHistory=function(_super){function EventsHistory(){return null!==_super&&_super.apply(this,arguments)||this}return __extends(EventsHistory,_super),EventsHistory.prototype.createDomElement=function(){var element=document.createElement("div");element.className="events-history",element.innerHTML=this.props.html,!0!==this.props.agentDisabled&&!0!==this.props.moduleDisabled||(element.style.opacity="0.2");for(var scripts=element.getElementsByTagName("script"),_loop_1=function(i){0===scripts[i].src.length&&setTimeout((function(){try{eval(scripts[i].innerHTML.trim())}catch(t){}}),0)},i=0;i<scripts.length;i++)_loop_1(i);var flotText=element.getElementsByClassName("noresizevc");return flotText[0].style.color=this.props.legendColor,element},EventsHistory.prototype.updateDomElement=function(element){element.innerHTML=this.props.html;var aux=document.createElement("div");aux.innerHTML=this.props.html;for(var scripts=aux.getElementsByTagName("script"),i=0;i<scripts.length;i++)0===scripts[i].src.length&&eval(scripts[i].innerHTML.trim());var flotText=element.getElementsByClassName("noresizevc");flotText[0].style.color=this.props.legendColor},EventsHistory}(_Item__WEBPACK_IMPORTED_MODULE_1__.ZP);__webpack_exports__.Z=EventsHistory},600:function(__unused_webpack_module,__webpack_exports__,__webpack_require__){__webpack_require__.d(__webpack_exports__,{C:function(){return moduleGraphPropsDecoder}});var _lib__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(541),_Item__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(478),__extends=(extendStatics=function(t,e){return extendStatics=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},extendStatics(t,e)},function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function n(){this.constructor=t}extendStatics(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}),extendStatics,__assign=function(){return __assign=Object.assign||function(t){for(var e,n=1,r=arguments.length;n<r;n++)for(var i in e=arguments[n])Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t},__assign.apply(this,arguments)},parseBackgroundType=function(t){switch(t){case"white":case"black":case"transparent":return t;default:return"transparent"}},parseGraphType=function(t){switch(t){case"line":case"area":return t;default:return"line"}};function moduleGraphPropsDecoder(t){if((0,_lib__WEBPACK_IMPORTED_MODULE_0__.VJ)(t.html)&&(0,_lib__WEBPACK_IMPORTED_MODULE_0__.VJ)(t.encodedHtml))throw new TypeError("missing html content.");return __assign(__assign(__assign(__assign({},(0,_Item__WEBPACK_IMPORTED_MODULE_1__.TB)(t)),{type:1,html:(0,_lib__WEBPACK_IMPORTED_MODULE_0__.VJ)(t.html)?(0,_lib__WEBPACK_IMPORTED_MODULE_0__.NV)(t.encodedHtml):t.html,backgroundType:parseBackgroundType(t.backgroundType),period:(0,_lib__WEBPACK_IMPORTED_MODULE_0__.I1)(t.period,null),graphType:parseGraphType(t.graphType),customGraphId:(0,_lib__WEBPACK_IMPORTED_MODULE_0__.I1)(t.customGraphId,null)}),(0,_lib__WEBPACK_IMPORTED_MODULE_0__.MH)(t)),(0,_lib__WEBPACK_IMPORTED_MODULE_0__.bs)(t))}var ModuleGraph=function(_super){function ModuleGraph(){return null!==_super&&_super.apply(this,arguments)||this}return __extends(ModuleGraph,_super),ModuleGraph.prototype.createDomElement=function(){var element=document.createElement("div");element.innerHTML=this.props.html,element.className="module-graph",!0!==this.props.agentDisabled&&!0!==this.props.moduleDisabled||(element.style.opacity="0.2");for(var scripts=element.getElementsByTagName("script"),_loop_1=function(i){0===scripts[i].src.length&&setTimeout((function(){try{eval(scripts[i].innerHTML.trim())}catch(t){}}),0)},i=0;i<scripts.length;i++)_loop_1(i);return element},ModuleGraph.prototype.updateDomElement=function(element){element.innerHTML=this.props.html,!0!==this.props.agentDisabled&&!0!==this.props.moduleDisabled||(element.style.opacity="0.2");for(var scripts=element.getElementsByTagName("script"),i=0;i<scripts.length;i++)0===scripts[i].src.length&&eval(scripts[i].innerHTML.trim())},ModuleGraph}(_Item__WEBPACK_IMPORTED_MODULE_1__.ZP);__webpack_exports__.Z=ModuleGraph},830:function(t,e){var n="http://www.w3.org/2000/svg";e.Z=function(t,e,r){var i=void 0===r?{}:r,o=i.size,s=i.color,a=i.spin,l=i.pulse,c=document.createElement("figure");c.title=e,c.className="fa fa-".concat(t.iconName),o&&c.classList.add("fa-".concat(o)),a?c.classList.add("fa-spin"):l&&c.classList.add("fa-pulse");var p=document.createElementNS(n,"svg");p.setAttribute("viewBox","0 0 ".concat(t.icon[0]," ").concat(t.icon[1])),s&&p.setAttribute("fill",s);var u=document.createElementNS(n,"path"),d="string"==typeof t.icon[4]?t.icon[4]:t.icon[4][0];return u.setAttribute("d",d),p.appendChild(u),c.appendChild(p),c}},510:function(t,e){e.Z=function(){var t=this;this.listeners=[],this.listenersOncer=[],this.on=function(e){return t.listeners.push(e),{dispose:function(){return t.off(e)}}},this.once=function(e){t.listenersOncer.push(e)},this.off=function(e){var n=t.listeners.indexOf(e);n>-1&&t.listeners.splice(n,1)},this.emit=function(e){t.listeners.forEach((function(t){return t(e)})),t.listenersOncer.forEach((function(t){return t(e)})),t.listenersOncer=[]},this.pipe=function(e){return t.on((function(t){return e.emit(t)}))}}},541:function(t,e,n){n.d(e,{Dw:function(){return M},Aq:function(){return x},Ds:function(){return E},NV:function(){return _},fk:function(){return k},rN:function(){return y},bc:function(){return v},SM:function(){return m},bs:function(){return h},MH:function(){return d},JW:function(){return a},gx:function(){return l},xn:function(){return o},I1:function(){return i},oF:function(){return p},OR:function(){return f},No:function(){return g},HY:function(){return u},VJ:function(){return s},t:function(){return C}});var r=function(){return r=Object.assign||function(t){for(var e,n=1,r=arguments.length;n<r;n++)for(var i in e=arguments[n])Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t},r.apply(this,arguments)};function i(t,e){return"number"==typeof t?t:"string"==typeof t&&t.length>0&&!isNaN(parseInt(t))?parseInt(t):e}function o(t,e){return"number"==typeof t?t:"string"==typeof t&&t.length>0&&!isNaN(parseFloat(t))?parseFloat(t):e}function s(t){return null==t||0===t.length}function a(t,e){return"string"==typeof t&&t.length>0?t:e}function l(t){return"boolean"==typeof t?t:"number"==typeof t?t>0:"string"==typeof t&&("1"===t||"true"===t)}function c(t,e,n){void 0===n&&(n=" "),"number"==typeof t&&(t="".concat(t)),"number"==typeof n&&(n="".concat(n));var r=e-t.length;if(0===r)return t;if(r<0)return t.substr(Math.abs(r));if(r===n.length)return"".concat(n).concat(t);if(r<n.length)return"".concat(n.substring(0,r)).concat(t);for(var i=Math.floor(r/n.length),o=r-n.length*i,s="",a=0;a<i;a++)s+=n;return 0===o?"".concat(s).concat(t):"".concat(s).concat(n.substring(0,o)).concat(t)}function p(t){return{x:i(t.x,0),y:i(t.y,0)}}function u(t){if(null==t.width||isNaN(parseInt(t.width))||null==t.height||isNaN(parseInt(t.height)))throw new TypeError("invalid size.");return{width:parseInt(t.width),height:parseInt(t.height)}}function d(t){return r({moduleId:i(t.moduleId,null),moduleName:a(t.moduleName,null),moduleDescription:a(t.moduleDescription,null),moduleDisabled:l(t.moduleDisabled)},function(t){var e={agentId:i(t.agentId,null),agentName:a(t.agentName,null),agentAlias:a(t.agentAlias,null),agentDescription:a(t.agentDescription,null),agentAddress:a(t.agentAddress,null),agentDisabled:l(t.agentDisabled)};return null!=t.metaconsoleId?r({metaconsoleId:t.metaconsoleId},e):e}(t))}function h(t){var e={linkedLayoutStatusType:"default"};switch(t.linkedLayoutStatusType){case"weight":var n=i(t.linkedLayoutStatusTypeWeight,null);if(null==n)throw new TypeError("invalid status calculation properties.");t.linkedLayoutStatusTypeWeight&&(e={linkedLayoutStatusType:"weight",linkedLayoutStatusTypeWeight:n});break;case"service":var o=i(t.linkedLayoutStatusTypeWarningThreshold,null),s=i(t.linkedLayoutStatusTypeCriticalThreshold,null);if(null==o||null==s)throw new TypeError("invalid status calculation properties.");e={linkedLayoutStatusType:"service",linkedLayoutStatusTypeWarningThreshold:o,linkedLayoutStatusTypeCriticalThreshold:s}}return r({linkedLayoutId:i(t.linkedLayoutId,null),linkedLayoutNodeId:i(t.linkedLayoutNodeId,null)},e)}function m(t){var e,n=(null,(e=t.receivedAt)instanceof Date?e:"number"==typeof e?new Date(1e3*e):"string"!=typeof e||Number.isNaN(new Date(e).getTime())?null:new Date(e));if(null===n)throw new TypeError("invalid meta structure");var r=null;return t.error instanceof Error?r=t.error:"string"==typeof t.error&&(r=new Error(t.error)),{receivedAt:n,error:r,editMode:l(t.editMode),maintenanceMode:l(t.maintenanceMode),isFromCache:l(t.isFromCache),isFetching:!1,isUpdating:!1,isBeingMoved:!1,isBeingResized:!1,isSelected:!1,lineMode:!1}}function f(t,e){var n="".concat(t,": ").concat(e,";");return["-webkit-".concat(n),"-moz-".concat(n),"-ms-".concat(n),"-o-".concat(n),"".concat(n)]}function _(t){return decodeURIComponent(escape(window.atob(t)))}function y(t,e){if(void 0===e&&(e=null),e&&Intl&&Intl.DateTimeFormat)return Intl.DateTimeFormat(e,{day:"2-digit",month:"2-digit",year:"numeric"}).format(t);var n=c(t.getDate(),2,0),r=c(t.getMonth()+1,2,0),i=c(t.getFullYear(),4,0);return"".concat(n,"/").concat(r,"/").concat(i)}function v(t){var e=c(t.getHours(),2,0),n=c(t.getMinutes(),2,0),r=c(t.getSeconds(),2,0);return"".concat(e,":").concat(n,":").concat(r)}function g(t,e){return t.reduce((function(t,e){var n=e.macro,r=e.value;return t.replace(n,r)}),e)}function b(t,e){var n=0;return function(){for(var r=[],i=0;i<arguments.length;i++)r[i]=arguments[i];var o=Date.now();if(!(o-n<t))return n=o,e.apply(void 0,r)}}function E(t,e){var n=null;return function(){for(var r=[],i=0;i<arguments.length;i++)r[i]=arguments[i];null!==n&&window.clearTimeout(n),n=window.setTimeout((function(){e.apply(void 0,r),n=null}),t)}}function w(t,e){for(var n=0,r=0;t&&!Number.isNaN(t.offsetLeft)&&!Number.isNaN(t.offsetTop)&&t!==e;)n+=t.offsetLeft-t.scrollLeft,r+=t.offsetTop-t.scrollTop,t=t.offsetParent;return{top:r,left:n}}function M(t,e,n){var r=n||t.parentElement,i=t.draggable,o=0,s=0,a=0,l=0,c=0,p=0,u=r.getBoundingClientRect(),d=w(r),h=d.top,m=h+u.height,f=d.left,_=f+u.width,y=t.getBoundingClientRect(),v=window.getComputedStyle(t).borderWidth||"0",g=2*Number.parseInt(v),M=E(32,e),x=b(16,e),C=function(t){var e=0,n=0,r=t.pageX,i=t.pageY,d=r-a,v=i-l,b=u.width-y.width+g,E=u.height-y.height+g,w=r<f||0===o&&d>0&&r<f+c,C=r>_||d+o+y.width-g>u.width||o===b&&d<0&&r>f+b+c,k=i<h||0===s&&v>0&&i<h+p,P=i>m||v+s+y.height-g>u.height||s===E&&v<0&&i>h+E+p;(e=w?0:C?b:d+o)<0&&(e=0),(n=k?0:P?E:v+s)<0&&(n=0),a=r,l=i,e===o&&n===s||(x(e,n),M(e,n),o=e,s=n)},k=function(){o=0,s=0,a=0,l=0,document.removeEventListener("mousemove",C),document.removeEventListener("mouseup",k),t.draggable=i,document.body.style.userSelect="auto"},P=function(e){if(2!==e.button){e.stopPropagation(),t.draggable=!1,t.setAttribute("ondragstart","return false;"),t.setAttribute("draggable","false");var n=w(t,r);o=n.left,s=n.top,a=e.pageX,l=e.pageY,c=e.offsetX,p=e.offsetY,u=r.getBoundingClientRect(),d=w(r),h=d.top,m=h+u.height,f=d.left,_=f+u.width,y=t.getBoundingClientRect(),v=window.getComputedStyle(t).borderWidth||"0",g=2*Number.parseInt(v),document.addEventListener("mousemove",C),document.addEventListener("mouseup",k),document.body.style.userSelect="none"}};return t.addEventListener("mousedown",P),function(){t.removeEventListener("mousedown",P),k()}}function x(t,e){var n=document.createElement("div");n.className="resize-draggable",t.appendChild(n);var r=t.parentElement,i=t.draggable,o=0,s=0,a=0,l=0,c=0,p=r.getBoundingClientRect(),u=w(r),d=u.top,h=d+p.height,m=u.left,f=m+p.width,_=w(t),y=_.top,v=_.left,g=window.getComputedStyle(t).borderWidth||"0",M=Number.parseInt(g),x=E(32,e),C=b(16,e),k=function(t){var e=o+(t.pageX-a),n=s+(t.pageY-l);e===o&&n===s||e<o&&t.pageX>v+(o-c)||(e<15?e=15:e+v-M/2>=f&&(e=f-v),n<15?n=15:n+y-M/2>=h&&(n=h-y),C(e,n),x(e,n),o=e,s=n,a=t.pageX,l=t.pageY)},P=function(){o=0,s=0,a=0,l=0,c=0,document.removeEventListener("mousemove",k),document.removeEventListener("mouseup",P),t.draggable=i,document.body.style.userSelect="auto"};return n.addEventListener("mousedown",(function(e){e.stopPropagation(),t.draggable=!1;var n=t.getBoundingClientRect(),i=n.width,g=n.height;o=i,s=g,a=e.pageX,l=e.pageY,c=e.offsetX,e.offsetY,p=r.getBoundingClientRect(),u=w(r),d=u.top,h=d+p.height,m=u.left,f=m+p.width,_=w(t),y=_.top,v=_.left,document.addEventListener("mousemove",k),document.addEventListener("mouseup",P),document.body.style.userSelect="none"})),function(){n.remove(),P()}}function C(t){return t}function k(t,e,n){return void 0===e&&(e=140),void 0===n&&(n="…"),t.trim().length>e?t.substr(0,e).trim()+n:t}}},__webpack_module_cache__={};function __webpack_require__(t){var e=__webpack_module_cache__[t];if(void 0!==e)return e.exports;var n=__webpack_module_cache__[t]={exports:{}};return __webpack_modules__[t](n,n.exports,__webpack_require__),n.exports}__webpack_require__.d=function(t,e){for(var n in e)__webpack_require__.o(e,n)&&!__webpack_require__.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},__webpack_require__.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},__webpack_require__.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var __webpack_exports__={};!function(){var t,e=__webpack_require__(541),n=__webpack_require__(478),r=(t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},t(e,n)},function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}),i=function(){return i=Object.assign||function(t){for(var e,n=1,r=arguments.length;n<r;n++)for(var i in e=arguments[n])Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t},i.apply(this,arguments)},o=function(t){switch(t){case"default":case"enabled":case"disabled":return t;default:return"default"}};function s(t){if("string"!=typeof t.imageSrc||0===t.imageSrc.length)throw new TypeError("invalid image src.");return i(i(i(i({},(0,n.TB)(t)),{type:0,imageSrc:t.imageSrc,showLastValueTooltip:o(t.showLastValueTooltip),statusImageSrc:(0,e.JW)(t.statusImageSrc,null),lastValue:(0,e.JW)(t.lastValue,null)}),(0,e.MH)(t)),(0,e.bs)(t))}var a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r(e,t),e.prototype.createDomElement=function(){var t=this.props.statusImageSrc||this.props.imageSrc,e=document.createElement("div");return e.className="static-graph",e.setAttribute("ondragstart","return false;"),e.setAttribute("draggable","false"),e.style.backgroundImage="url(".concat(t,")"),e.style.backgroundRepeat="no-repeat",e.style.backgroundSize="contain",e.style.backgroundPosition="center",!0!==this.props.agentDisabled&&!0!==this.props.moduleDisabled||(e.style.opacity="0.2"),null!==this.props.lastValue&&"disabled"!==this.props.showLastValueTooltip&&(e.className="static-graph image forced_title",e.setAttribute("data-use_title_for_force_title","1"),e.setAttribute("data-title",this.props.lastValue)),e},e.prototype.updateDomElement=function(t){var e=this.props.statusImageSrc||this.props.imageSrc;t.style.backgroundImage="url(".concat(e,")")},e}(n.ZP),l=a,c=function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},t(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),p=function(){return p=Object.assign||function(t){for(var e,n=1,r=arguments.length;n<r;n++)for(var i in e=arguments[n])Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t},p.apply(this,arguments)};function u(t){if("string"!=typeof t.imageSrc||0===t.imageSrc.length)throw new TypeError("invalid image src.");if("string"!=typeof t.image||0===t.image.length)throw new TypeError("invalid image.");return p(p(p({},(0,n.TB)(t)),{type:5,image:t.image,imageSrc:t.imageSrc}),(0,e.bs)(t))}var d=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return c(e,t),e.prototype.createDomElement=function(){var t=document.createElement("div");return t.className="icon "+this.props.image,t.style.backgroundImage="url(".concat(this.props.imageSrc,")"),t.style.backgroundRepeat="no-repeat",t.style.backgroundSize="contain",t.style.backgroundPosition="center",t},e.prototype.updateDomElement=function(t){t.style.backgroundImage="url(".concat(this.props.imageSrc,")")},e}(n.ZP),h=d,m=__webpack_require__(630),f=__webpack_require__(830),_={prefix:"fas",iconName:"plus-circle",icon:[512,512,[],"f055","M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm144 276c0 6.6-5.4 12-12 12h-92v92c0 6.6-5.4 12-12 12h-56c-6.6 0-12-5.4-12-12v-92h-92c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h92v-92c0-6.6 5.4-12 12-12h56c6.6 0 12 5.4 12 12v92h92c6.6 0 12 5.4 12 12v56z"]},y={prefix:"fas",iconName:"trash-alt",icon:[448,512,[],"f2ed","M32 464a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48V128H32zm272-256a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zm-96 0a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zm-96 0a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zM432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"]},v=function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},t(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),g=function(){return g=Object.assign||function(t){for(var e,n=1,r=arguments.length;n<r;n++)for(var i in e=arguments[n])Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t},g.apply(this,arguments)},b=function(t,e,n){if(n||2===arguments.length)for(var r,i=0,o=e.length;i<o;i++)!r&&i in e||(r||(r=Array.prototype.slice.call(e,0,i)),r[i]=e[i]);return t.concat(r||Array.prototype.slice.call(e))};function E(t){if("string"!=typeof t.color||0===t.color.length)throw new TypeError("invalid color.");return g(g(g(g({},(0,n.TB)(t)),{type:20,color:t.color,defaultColor:t.defaultColor,colorRanges:t.colorRanges}),(0,e.MH)(t)),(0,e.bs)(t))}var w=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return v(n,t),n.prototype.createContent=function(){var t=this,n=document.createElement("div");n.className="div-input-group";var r=document.createElement("label");r.textContent=(0,e.t)("Default color"),n.appendChild(r);var i=document.createElement("input");return i.type="color",i.required=!0,i.value="".concat(this.currentData.defaultColor||this.initialData.defaultColor||"#000000"),i.addEventListener("change",(function(e){t.updateData({defaultColor:e.target.value})})),n.appendChild(i),n},n}(m.InputGroup),M=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return v(n,t),n.prototype.createContent=function(){var t=this,e=document.createElement("div");e.className="div-input-group div-ranges-input-group";var n=this.createLabel("Ranges");e.appendChild(n);var r=document.createElement("div"),i=document.createElement("div");e.appendChild(i),e.appendChild(r);var o,s=this.currentData.colorRanges||this.initialData.colorRanges||[];return o=function(e){i.innerHTML="",e.forEach((function(e,n){return i.appendChild(t.rangeContainer(e,function(e){return function(n){var r=t.currentData.colorRanges||t.initialData.colorRanges||[];t.updateData({colorRanges:b(b(b([],r.slice(0,e),!0),[n],!1),r.slice(e+1),!0)})}}(n),function(e){return function(){var n=t.currentData.colorRanges||t.initialData.colorRanges||[],r=b(b([],n.slice(0,e),!0),n.slice(e+1),!0);t.updateData({colorRanges:r}),o(r)}}(n)))}))},o(s),r.appendChild(this.initialRangeContainer((function(e){var n=t.currentData.colorRanges||t.initialData.colorRanges||[],r=b(b([],n,!0),[e],!1);t.updateData({colorRanges:r}),o(r)}))),e},n.prototype.initialRangeContainer=function(t){var n={color:"#ffffff"},r=g({},n),i=document.createElement("div"),o=document.createElement("div"),s=this.createLabel("From Value"),a=this.createInputNumber(null,(function(t){r.fromValue=t}));o.appendChild(s),o.appendChild(a),i.appendChild(o);var l=document.createElement("div"),c=this.createLabel("To Value"),p=this.createInputNumber(null,(function(t){r.toValue=t}));o.appendChild(c),o.appendChild(p),i.appendChild(l);var u=document.createElement("div"),d=this.createLabel("Color"),h=this.createInputColor(n.color,(function(t){r.color=t}));o.appendChild(d),o.appendChild(h),i.appendChild(u);var m=document.createElement("a");return m.appendChild((0,f.Z)(_,(0,e.t)("Create color range"),{size:"small",color:"#565656"})),m.addEventListener("click",(function(){var e;void 0!==(e=r).color&&void 0!==e.toValue&&void 0!==e.fromValue&&t(r),r=n,a.value="".concat(r.fromValue||""),p.value="".concat(r.toValue||""),h.value="".concat(r.color)})),i.appendChild(m),i},n.prototype.rangeContainer=function(t,n,r){var i=g({},t),o=document.createElement("div"),s=document.createElement("div"),a=this.createLabel("From Value"),l=this.createInputNumber(t.fromValue,(function(t){i.fromValue=t,n(g({},i))}));s.appendChild(a),s.appendChild(l),o.appendChild(s);var c=document.createElement("div"),p=this.createLabel("To Value"),u=this.createInputNumber(t.toValue,(function(t){i.toValue=t,n(g({},i))}));s.appendChild(p),s.appendChild(u),o.appendChild(c);var d=document.createElement("div"),h=this.createLabel("Color"),m=this.createInputColor(t.color,(function(t){i.color=t,n(g({},i))}));s.appendChild(h),s.appendChild(m),o.appendChild(d);var _=document.createElement("a");return _.appendChild((0,f.Z)(y,(0,e.t)("Delete color range"),{size:"small",color:"#565656"})),_.addEventListener("click",r),o.appendChild(_),o},n.prototype.createLabel=function(t){var n=document.createElement("label");return n.textContent=(0,e.t)(t),n},n.prototype.createInputNumber=function(t,e){var n=document.createElement("input");return n.type="number",null!==t&&(n.value="".concat(t)),n.addEventListener("change",(function(t){var n=parseInt(t.target.value);isNaN(n)||e(n)})),n},n.prototype.createInputColor=function(t,e){var n=document.createElement("input");return n.type="color",null!==t&&(n.value=t),n.addEventListener("change",(function(t){return e(t.target.value)})),n},n}(m.InputGroup),x="http://www.w3.org/2000/svg",C=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return v(e,t),e.prototype.createDomElement=function(){var t=document.createElement("div");return t.className="color-cloud",t.append(this.createSvgElement()),t},e.prototype.resizeElement=function(e){t.prototype.resizeElement.call(this,e,e)},e.prototype.createSvgElement=function(){var t="grad_".concat(this.props.id),e=document.createElementNS(x,"svg");e.setAttribute("viewBox","0 0 100 100");var n=document.createElementNS(x,"defs"),r=document.createElementNS(x,"radialGradient");r.setAttribute("id",t),r.setAttribute("cx","50%"),r.setAttribute("cy","50%"),r.setAttribute("r","50%"),r.setAttribute("fx","50%"),r.setAttribute("fy","50%");var i=document.createElementNS(x,"stop");i.setAttribute("offset","0%"),i.setAttribute("style","stop-color:".concat(this.props.color,";stop-opacity:0.9"));var o=document.createElementNS(x,"stop");o.setAttribute("offset","100%"),o.setAttribute("style","stop-color:".concat(this.props.color,";stop-opacity:0"));var s=document.createElementNS(x,"circle");return s.setAttribute("fill","url(#".concat(t,")")),s.setAttribute("cx","50%"),s.setAttribute("cy","50%"),s.setAttribute("r","50%"),r.append(i,o),n.append(r),e.append(n,s),!0!==this.props.agentDisabled&&!0!==this.props.moduleDisabled||e.setAttribute("opacity","0.2"),e},e.prototype.getFormContainer=function(){return e.getFormContainer(this.props)},e.getFormContainer=function(e){var n=t.getFormContainer.call(this,e);return n.removeInputGroup("label"),n.addInputGroup(new w("color-cloud",e),3),n.addInputGroup(new M("ranges-cloud",e),4),n},e}(n.ZP),k=C,P=__webpack_require__(510),I=function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},t(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),A=function(){return A=Object.assign||function(t){for(var e,n=1,r=arguments.length;n<r;n++)for(var i in e=arguments[n])Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t},A.apply(this,arguments)};function O(t){var r=A(A({},(0,n.TB)(A(A({},t),{width:1,height:1}))),{type:13,label:null,isLinkEnabled:!1,parentId:null,aclGroupId:null,x:0,y:0,width:0,height:0,startPosition:{x:(0,e.I1)(t.startX,0),y:(0,e.I1)(t.startY,0)},endPosition:{x:(0,e.I1)(t.endX,0),y:(0,e.I1)(t.endY,0)},lineWidth:(0,e.I1)(t.lineWidth||t.borderWidth,1),color:(0,e.JW)(t.borderColor||t.color,null),viewportOffsetX:0,viewportOffsetY:0,labelEnd:(0,e.JW)(t.labelEnd,""),labelEndWidth:(0,e.I1)(t.labelEndWidth,0),linkedEnd:t.linkedEnd,linkedStart:t.linkedStart,labelEndHeight:(0,e.I1)(t.labelEndHeight,0),labelStart:(0,e.JW)(t.labelStart,""),labelStartWidth:(0,e.I1)(t.labelStartWidth,0),labelStartHeight:(0,e.I1)(t.labelStartHeight,0)});return A(A({},r),S.extractBoxSizeAndPosition(r.startPosition,r.endPosition))}var T="http://www.w3.org/2000/svg",S=function(t){function n(r,i){var o=t.call(this,A(A({},r),n.extractBoxSizeAndPosition(r.startPosition,r.endPosition)),A({},i),!0)||this;return o.circleRadius=8,o.moveMode=!1,o.isMoving=!1,o.lineMovedEventManager=new P.Z,o.lineMovedEventDisposables=[],o.debouncedStartPositionMovementSave=(0,e.Ds)(500,(function(t,e){o.isMoving=!1;var n={x:t,y:e};o.lineMovedEventManager.emit({item:o,startPosition:n,endPosition:o.props.endPosition})})),o.removeStartPositionMovement=null,o.debouncedEndPositionMovementSave=(0,e.Ds)(500,(function(t,e){o.isMoving=!1;var n={x:t,y:e};o.lineMovedEventManager.emit({item:o,endPosition:n,startPosition:o.props.startPosition})})),o.removeEndPositionMovement=null,o.moveMode=i.editMode,o.init(),t.prototype.resizeElement.call(o,Math.max(r.width,r.viewportOffsetX),Math.max(r.height,r.viewportOffsetY)),o}return I(n,t),n.prototype.initStartPositionMovementListener=function(t,n){var r=this;this.removeStartPositionMovement=(0,e.Dw)(t,(function(t,e){var n={x:t+=r.circleRadius-r.props.viewportOffsetX/2,y:e+=r.circleRadius-r.props.viewportOffsetY/2};r.isMoving=!0,r.props=A(A({},r.props),{startPosition:n}),r.debouncedStartPositionMovementSave(t,e)}),n)},n.prototype.stopStartPositionMovementListener=function(){this.removeStartPositionMovement&&(this.removeStartPositionMovement(),this.removeStartPositionMovement=null)},n.prototype.initEndPositionMovementListener=function(t,n){var r=this;this.removeEndPositionMovement=(0,e.Dw)(t,(function(t,e){t+=r.circleRadius-r.props.viewportOffsetX/2,e+=r.circleRadius-r.props.viewportOffsetY/2,r.isMoving=!0,r.props=A(A({},r.props),{endPosition:{x:t,y:e}}),r.debouncedEndPositionMovementSave(t,e)}),n)},n.prototype.stopEndPositionMovementListener=function(){this.removeEndPositionMovement&&(this.removeEndPositionMovement(),this.removeEndPositionMovement=null)},n.prototype.setProps=function(e){t.prototype.setProps.call(this,A(A({},e),n.extractBoxSizeAndPosition(e.startPosition,e.endPosition)))},n.prototype.setMeta=function(e){this.moveMode=e.editMode,t.prototype.setMeta.call(this,A(A({},e),{lineMode:!0}))},n.prototype.createDomElement=function(){var t=document.createElement("div");t.className="line";var e=this.props,n=e.x,r=e.y,i=e.width,o=e.height,s=e.lineWidth,a=e.viewportOffsetX,l=e.viewportOffsetY,c=e.startPosition,p=e.endPosition,u=e.color;i+=a,o+=l;var d=c.x-n+s/2+a/2,h=c.y-r+s/2+l/2,m=p.x-n+s/2+a/2,f=p.y-r+s/2+l/2,_=document.createElementNS(T,"svg");_.setAttribute("width","".concat(i+s)),_.setAttribute("height","".concat(o+s));var y=document.createElementNS(T,"line");return y.setAttribute("x1","".concat(d)),y.setAttribute("y1","".concat(h)),y.setAttribute("x2","".concat(m)),y.setAttribute("y2","".concat(f)),y.setAttribute("stroke",u||"black"),y.setAttribute("stroke-width","".concat(s)),_.append(y),t.append(_),t},n.prototype.updateDomElement=function(t){null!=t.parentElement&&(t.parentElement.style.cursor="default");var e=this.props,n=e.x,r=e.y,i=e.width,o=e.height,s=e.lineWidth,a=e.viewportOffsetX,l=e.viewportOffsetY,c=e.startPosition,p=e.endPosition,u=e.color;i+=a,o+=l;var d=c.x-n+s/2+a/2,h=c.y-r+s/2+l/2,m=p.x-n+s/2+a/2,f=p.y-r+s/2+l/2,_=t.getElementsByTagName("svg");if(_.length>0){var y=_.item(0);if(null!=y){y.setAttribute("width","".concat(i+s)),y.setAttribute("height","".concat(o+s));var v=y.getElementsByTagNameNS(T,"line");if(v.length>0){var g=v.item(0);null!=g&&(g.setAttribute("x1","".concat(d)),g.setAttribute("y1","".concat(h)),g.setAttribute("x2","".concat(m)),g.setAttribute("y2","".concat(f)),g.setAttribute("stroke",u||"black"),g.setAttribute("stroke-width","".concat(s)))}}}if(this.moveMode){var b=document.createElement("div"),E=document.createElement("div");if(this.isMoving){var w=t.getElementsByClassName("visual-console-item-line-circle-start");w.length>0&&(C=w.item(0))&&(b=C);var M=t.getElementsByClassName("visual-console-item-line-circle-end");M.length>0&&(C=M.item(0))&&(E=C)}if(b.classList.add("visual-console-item-line-circle","visual-console-item-line-circle-start"),b.style.width="".concat(2*this.circleRadius,"px"),b.style.height="".concat(2*this.circleRadius,"px"),b.style.borderRadius="50%",b.style.backgroundColor="".concat(u),b.style.position="absolute",b.style.left="".concat(d-this.circleRadius,"px"),b.style.top="".concat(h-this.circleRadius,"px"),b.style.cursor="move",E.classList.add("visual-console-item-line-circle","visual-console-item-line-circle-end"),E.style.width="".concat(2*this.circleRadius,"px"),E.style.height="".concat(2*this.circleRadius,"px"),E.style.borderRadius="50%",E.style.backgroundColor="".concat(u),E.style.position="absolute",E.style.left="".concat(m-this.circleRadius,"px"),E.style.top="".concat(f-this.circleRadius,"px"),E.style.cursor="move",null!==t.parentElement){for(var x=t.parentElement.getElementsByClassName("visual-console-item-line-circle");x.length>0;)(C=x.item(0))&&C.remove();t.parentElement.appendChild(b),t.parentElement.appendChild(E)}this.initStartPositionMovementListener(b,this.elementRef.parentElement),this.initEndPositionMovementListener(E,this.elementRef.parentElement)}else if(this.moveMode)this.stopStartPositionMovementListener();else if(this.stopStartPositionMovementListener(),null!==t.parentElement)for(x=t.parentElement.getElementsByClassName("visual-console-item-line-circle");x.length>0;){var C;(C=x.item(0))&&C.remove()}},n.extractBoxSizeAndPosition=function(t,e){return{width:Math.abs(t.x-e.x),height:Math.abs(t.y-e.y),x:Math.min(t.x,e.x),y:Math.min(t.y,e.y)}},n.prototype.move=function(e,n){t.prototype.moveElement.call(this,e,n);var r=this.props.startPosition.x-this.props.endPosition.x<=0,i=this.props.startPosition.y-this.props.endPosition.y<=0,o={x:r?e:this.props.width+e,y:i?n:this.props.height+n},s={x:r?this.props.width+e:e,y:i?this.props.height+n:n};this.props=A(A({},this.props),{startPosition:o,endPosition:s})},n.prototype.remove=function(){this.stopStartPositionMovementListener(),t.prototype.remove.call(this)},n.prototype.onLineMovementFinished=function(t){var e=this.lineMovedEventManager.on(t);return this.lineMovedEventDisposables.push(e),e},n}(n.ZP),L=S,R=function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},t(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),D=function(){return D=Object.assign||function(t){for(var e,n=1,r=arguments.length;n<r;n++)for(var i in e=arguments[n])Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t},D.apply(this,arguments)},N="http://www.w3.org/2000/svg";function B(t){return D(D({},O(t)),{type:21,viewportOffsetX:0,viewportOffsetY:0,labelEnd:(0,e.JW)(t.labelEnd,""),labelEndWidth:(0,e.I1)(t.labelEndWidth,0),labelEndHeight:(0,e.I1)(t.labelEndHeight,0),labelStart:(0,e.JW)(t.labelStart,""),labelStartWidth:(0,e.I1)(t.labelStartWidth,0),labelStartHeight:(0,e.I1)(t.labelStartHeight,0)})}var z=function(t){function n(n,r){var i=t.call(this,D({},n),D({},r))||this;return i.debouncedStartPositionMovementSave=(0,e.Ds)(50,(function(t,e){i.isMoving=!1;var n={x:t,y:e};i.render(),i.lineMovedEventManager.emit({item:i,startPosition:n,endPosition:i.props.endPosition})})),i.debouncedEndPositionMovementSave=(0,e.Ds)(50,(function(t,e){i.isMoving=!1;var n={x:t,y:e};i.render(),i.lineMovedEventManager.emit({item:i,endPosition:n,startPosition:i.props.startPosition})})),i.render(),i}return R(n,t),n.prototype.updateDomElement=function(e){null!=this.itemProps.ratio&&(this.itemProps.x/=this.itemProps.ratio,this.itemProps.y/=this.itemProps.ratio),t.prototype.updateDomElement.call(this,e);var n=this.props,r=n.x,i=n.y,o=n.lineWidth,s=n.viewportOffsetX,a=n.viewportOffsetY,l=n.startPosition,c=n.endPosition,p=n.color,u=n.labelEnd,d=n.labelStart,h=n.labelEndWidth,m=n.labelEndHeight,f=n.labelStartWidth,_=n.labelStartHeight;null!=this.itemProps.ratio&&(this.itemProps.x*=this.itemProps.ratio,this.itemProps.y*=this.itemProps.ratio);var y,v,g=e.getElementsByTagName("svg");if(g.length>0){if(null!=(v=g.item(0))){for(var b=v.getElementsByTagNameNS(N,"line"),E=v.getElementsByTagNameNS(N,"g");E.length>0;)E[0].remove();b.length>0&&(y=b.item(0))}if(null!=v&&null!=y){var w=25,M=l.x-r+o/2+s/2,x=l.y-i+o/2+a/2,C=c.x-r+o/2+s/2,k=c.y-i+o/2+a/2,P=l.x-r+o/2+s/2,I=l.y-i+o/2+a/2,A=c.x-r+o/2+s/2,O=c.y-i+o/2+a/2,T=180*Math.atan2(k-x,C-M)/Math.PI;if(f<=0&&(b=d.split("<br>"),f=0,b.forEach((function(t){t.length>f&&(f=10*t.length)})),_<=0&&(_=25*b.length)),h<=0&&(b=u.split("<br>"),h=0,b.forEach((function(t){t.length>h&&(h=10*t.length)})),m<=0&&(m=25*b.length)),P<A&&(P+=w,A-=w+h),P>A&&(P-=w+f,A+=w),I<O&&(I+=w,O-=w+m),I>O&&(I-=w+_,O+=w),void 0===p&&(p="#000"),null!==e.parentElement){for(var S=e.parentElement.getElementsByClassName("vc-item-nl-label");S.length>0;){var L=S.item(0);L&&L.remove()}for(var R=e.parentElement.getElementsByClassName("vc-item-nl-arrow");R.length>0;){var D=R.item(0);D&&D.remove()}}var B=2*o,z=M+(C-M)/2-B,W=x+(k-x)/2-B,j=document.createElement("div");j.classList.add("vc-item-nl-arrow"),j.style.position="absolute",j.style.border="".concat(B,"px solid transparent"),j.style.borderBottom="".concat(B,"px solid ").concat(p),j.style.left="".concat(z,"px"),j.style.top="".concat(W,"px"),j.style.transform="rotate(".concat(90+T,"deg)");var H=document.createElement("div");if(H.classList.add("vc-item-nl-arrow"),H.style.position="absolute",H.style.border="".concat(B,"px solid transparent"),H.style.borderBottom="".concat(B,"px solid ").concat(p),H.style.left="".concat(z,"px"),H.style.top="".concat(W,"px"),H.style.transform="rotate(".concat(270+T,"deg)"),null!==e.parentElement&&(e.parentElement.appendChild(j),e.parentElement.appendChild(H)),""!=d){var V=document.createElement("div");try{V.innerHTML=d,V.style.position="absolute",V.style.left="".concat(P,"px"),V.style.top="".concat(I,"px"),V.style.width="".concat(f,"px"),V.style.border="2px solid ".concat(p),V.classList.add("vc-item-nl-label","label-start")}catch(t){console.error(t)}null!==e.parentElement&&e.parentElement.appendChild(V)}if(""!=u){var G=document.createElement("div");try{G.innerHTML=u,G.style.position="absolute",G.style.left="".concat(A,"px"),G.style.top="".concat(O,"px"),G.style.width="".concat(h,"px"),G.style.border="2px solid ".concat(p),G.classList.add("vc-item-nl-label","label-end")}catch(t){console.error(t)}null!==e.parentElement&&e.parentElement.appendChild(G)}}}},n}(L),W=z,j=function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},t(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),H=function(){return H=Object.assign||function(t){for(var e,n=1,r=arguments.length;n<r;n++)for(var i in e=arguments[n])Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t},H.apply(this,arguments)};function V(t){if(("string"!=typeof t.imageSrc||0===t.imageSrc.length)&&null===t.encodedHtml)throw new TypeError("invalid image src.");if(null===(0,e.I1)(t.groupId,null))throw new TypeError("invalid group Id.");var r=(0,e.gx)(t.showStatistics),i=r?function(t){return(0,e.VJ)(t.html)?(0,e.VJ)(t.encodedHtml)?null:(0,e.NV)(t.encodedHtml):t.html}(t):null;return H(H(H({},(0,n.TB)(t)),{type:11,groupId:parseInt(t.groupId),imageSrc:(0,e.JW)(t.imageSrc,null),statusImageSrc:(0,e.JW)(t.statusImageSrc,null),showStatistics:r,html:i}),(0,e.bs)(t))}var G=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return j(e,t),e.prototype.createDomElement=function(){var t=document.createElement("div");return t.className="group",this.props.showStatistics||null===this.props.statusImageSrc?this.props.showStatistics&&null!=this.props.html&&(t.style.backgroundImage="none",t.innerHTML=this.props.html):(t.style.backgroundImage="url(".concat(this.props.statusImageSrc,")"),t.style.backgroundRepeat="no-repeat",t.style.backgroundSize="contain",t.style.backgroundPosition="center"),t},e.prototype.updateDomElement=function(t){this.props.showStatistics||null===this.props.statusImageSrc?this.props.showStatistics&&null!=this.props.html&&(t.style.backgroundImage="none",t.innerHTML=this.props.html):(t.style.backgroundImage="url(".concat(this.props.statusImageSrc,")"),t.style.backgroundRepeat="no-repeat",t.style.backgroundSize="contain",t.style.backgroundPosition="center",t.innerHTML="")},e}(n.ZP),U=G,F=function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},t(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),K=function(){return K=Object.assign||function(t){for(var e,n=1,r=arguments.length;n<r;n++)for(var i in e=arguments[n])Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t},K.apply(this,arguments)},Z=function(t){switch(t){case"analogic":case"digital":return t;default:return"analogic"}},q=function(t){switch(t){case"datetime":case"time":return t;default:return"datetime"}};function J(t){if("string"!=typeof t.clockTimezone||0===t.clockTimezone.length)throw new TypeError("invalid timezone.");return K(K(K({},(0,n.TB)(t)),{type:19,clockType:Z(t.clockType),clockFormat:q(t.clockFormat),clockTimezone:t.clockTimezone,clockTimezoneOffset:(0,e.I1)(t.clockTimezoneOffset,0),showClockTimezone:(0,e.gx)(t.showClockTimezone),color:(0,e.JW)(t.color,null)}),(0,e.bs)(t))}var Y=function(t){function n(e,r){var i=t.call(this,e,r)||this;return i.intervalRef=null,i.startTick((function(){i.childElementRef.innerHTML=i.createClock().innerHTML}),"analogic"===i.props.clockType?2e4:n.TICK_INTERVAL),i}return F(n,t),n.prototype.stopTick=function(){null!==this.intervalRef&&(window.clearInterval(this.intervalRef),this.intervalRef=null)},n.prototype.startTick=function(t,e){void 0===e&&(e=n.TICK_INTERVAL),this.stopTick(),this.intervalRef=window.setInterval(t,e)},n.prototype.createDomElement=function(){return this.createClock()},n.prototype.updateDomElement=function(e){var n=this.getElementSize(this.props.width,this.props.height),r=n.width,i=n.height;"digital"===this.props.clockType?(!1===this.meta.isBeingResized&&t.prototype.resizeElement.call(this,this.props.width,this.props.height),e.classList.replace("analogic-clock","digital-clock")):(!1===this.meta.isBeingResized&&t.prototype.resizeElement.call(this,r,i),e.classList.replace("digital-clock","analogic-clock")),e.innerHTML=this.createDomElement().innerHTML},n.prototype.remove=function(){this.stopTick(),t.prototype.remove.call(this)},n.prototype.resizeElement=function(e,n){var r=this.getElementSize(e,n),i=r.width,o=r.height;"digital"===this.props.clockType?t.prototype.resizeElement.call(this,e,n):t.prototype.resizeElement.call(this,i,o)},n.prototype.createClock=function(){switch(this.props.clockType){case"analogic":return this.createAnalogicClock();case"digital":return this.createDigitalClock();default:throw new Error("invalid clock type.")}},n.prototype.createAnalogicClock=function(){var t="http://www.w3.org/2000/svg",n="#FFFFF0",r="#242124",i="#242124",o="#525252",s="#DC143C",a=this.getElementSize(),l=a.width,c=a.height,p=10*l/100,u=document.createElement("div");u.className="analogic-clock",u.style.width="".concat(l,"px"),u.style.height="".concat(c,"px");var d=document.createElementNS(t,"svg");d.setAttribute("viewBox","0 0 100 100");var h=document.createElementNS(t,"g");h.setAttribute("class","clockface");var m=document.createElementNS(t,"circle");m.setAttribute("cx","50"),m.setAttribute("cy","50"),m.setAttribute("r","48"),m.setAttribute("fill",n),m.setAttribute("stroke","#242124"),m.setAttribute("stroke-width","2"),m.setAttribute("stroke-linecap","round"),h.append(m);var f=this.getHumanTimezone();if(f.length>0){var _=document.createElementNS(t,"text");_.setAttribute("text-anchor","middle"),_.setAttribute("font-size","8"),_.setAttribute("transform","translate(30 50) rotate(90)"),_.setAttribute("fill",r),_.textContent=f,h.append(_)}var y=document.createElementNS(t,"g");y.setAttribute("class","marks");var v=document.createElementNS(t,"g");v.setAttribute("class","mark"),v.setAttribute("transform","translate(50 50)");var g=document.createElementNS(t,"line");g.setAttribute("x1","36"),g.setAttribute("y1","0"),g.setAttribute("x2","46"),g.setAttribute("y2","0"),g.setAttribute("stroke",r),g.setAttribute("stroke-width","5");var b=document.createElementNS(t,"line");b.setAttribute("x1","36"),b.setAttribute("y1","0"),b.setAttribute("x2","46"),b.setAttribute("y2","0"),b.setAttribute("stroke",n),b.setAttribute("stroke-width","1"),v.append(g,b),y.append(v);for(var E=1;E<60;E++){var w=document.createElementNS(t,"line");w.setAttribute("y1","0"),w.setAttribute("y2","0"),w.setAttribute("stroke",r),w.setAttribute("transform","translate(50 50) rotate(".concat(6*E,")")),E%5==0?(w.setAttribute("x1","38"),w.setAttribute("x2","46"),w.setAttribute("stroke-width",E%15==0?"2":"1")):(w.setAttribute("x1","42"),w.setAttribute("x2","46"),w.setAttribute("stroke-width","0.5")),y.append(w)}var M=document.createElementNS(t,"g");M.setAttribute("class","hour-hand"),M.setAttribute("transform","translate(50 50)");var x=document.createElementNS(t,"line");x.setAttribute("class","hour-hand-a"),x.setAttribute("x1","0"),x.setAttribute("y1","0"),x.setAttribute("x2","30"),x.setAttribute("y2","0"),x.setAttribute("stroke",o),x.setAttribute("stroke-width","4"),x.setAttribute("stroke-linecap","round");var C=document.createElementNS(t,"line");C.setAttribute("class","hour-hand-b"),C.setAttribute("x1","0"),C.setAttribute("y1","0"),C.setAttribute("x2","29.9"),C.setAttribute("y2","0"),C.setAttribute("stroke",i),C.setAttribute("stroke-width","3.1"),C.setAttribute("stroke-linecap","round"),M.append(x,C);var k=document.createElementNS(t,"g");k.setAttribute("class","minute-hand"),k.setAttribute("transform","translate(50 50)");var P=document.createElementNS(t,"line");P.setAttribute("class","minute-hand-a"),P.setAttribute("x1","0"),P.setAttribute("y1","0"),P.setAttribute("x2","40"),P.setAttribute("y2","0"),P.setAttribute("stroke",o),P.setAttribute("stroke-width","2"),P.setAttribute("stroke-linecap","round");var I=document.createElementNS(t,"line");I.setAttribute("class","minute-hand-b"),I.setAttribute("x1","0"),I.setAttribute("y1","0"),I.setAttribute("x2","39.9"),I.setAttribute("y2","0"),I.setAttribute("stroke",i),I.setAttribute("stroke-width","1.5"),I.setAttribute("stroke-linecap","round");var A=document.createElementNS(t,"circle");A.setAttribute("r","3"),A.setAttribute("fill",i),k.append(P,I,A);var O=document.createElementNS(t,"g");O.setAttribute("class","second-hand"),O.setAttribute("transform","translate(50 50)");var T=document.createElementNS(t,"line");T.setAttribute("x1","0"),T.setAttribute("y1","0"),T.setAttribute("x2","46"),T.setAttribute("y2","0"),T.setAttribute("stroke",s),T.setAttribute("stroke-width","1"),T.setAttribute("stroke-linecap","round");var S=document.createElementNS(t,"circle");S.setAttribute("r","2"),S.setAttribute("fill",s),O.append(T,S);var L=document.createElementNS(t,"circle");L.setAttribute("cx","50"),L.setAttribute("cy","50"),L.setAttribute("r","0.3"),L.setAttribute("fill",i);var R=this.getOriginDate(),D=R.getSeconds(),N=R.getMinutes(),B=6*D,z=6*N+D/60*6,W=30*R.getHours()+N/60*30;if(M.setAttribute("transform","translate(50 50) rotate(".concat(W,")")),k.setAttribute("transform","translate(50 50) rotate(".concat(z,")")),O.setAttribute("transform","translate(50 50) rotate(".concat(B,")")),d.append(h,y,M,k,O,L),d.setAttribute("transform","rotate(-90)"),u.innerHTML="\n      <style>\n        @keyframes rotate-hour {\n          from {\n            ".concat((0,e.OR)("transform","translate(50px, 50px) rotate(".concat(W,"deg)")).join("\n"),"\n          }\n          to {\n            ").concat((0,e.OR)("transform","translate(50px, 50px) rotate(".concat(W+360,"deg)")).join("\n"),"\n          }\n        }\n        @keyframes rotate-minute {\n          from {\n            ").concat((0,e.OR)("transform","translate(50px, 50px) rotate(".concat(z,"deg)")).join("\n"),"\n          }\n          to {\n            ").concat((0,e.OR)("transform","translate(50px, 50px) rotate(".concat(z+360,"deg)")).join("\n"),"\n          }\n        }\n        @keyframes rotate-second {\n          from {\n            ").concat((0,e.OR)("transform","translate(50px, 50px) rotate(".concat(B,"deg)")).join("\n"),"\n          }\n          to {\n            ").concat((0,e.OR)("transform","translate(50px, 50px) rotate(".concat(B+360,"deg)")).join("\n"),"\n          }\n        }\n      </style>\n    "),u.append(d),"datetime"===this.props.clockFormat){var j=document.createElement("span");j.className="date",j.textContent=(0,e.rN)(R,"default"),j.style.fontSize="".concat(p,"px"),this.props.color&&(j.style.color=this.props.color),u.append(j)}return u},n.prototype.createDigitalClock=function(){var t=document.createElement("div");t.className="digital-clock";var n=this.getElementSize(),r=n.width,i=n.height,o=r;i<r&&(o=i);var s=6/this.props.clockTimezone.length,a=35*o/100,l=17.5*o/100,c=Math.min(35*s*o/100,r/100*10),p=this.getOriginDate();if("datetime"===this.props.clockFormat){var u=document.createElement("span");u.className="date",u.textContent=(0,e.rN)(p,"default"),u.style.fontSize="".concat(l,"px"),this.props.color&&(u.style.color=this.props.color),t.append(u)}var d=document.createElement("span");d.className="time",d.textContent=(0,e.bc)(p),d.style.fontSize="".concat(a,"px"),this.props.color&&(d.style.color=this.props.color),t.append(d);var h=this.getHumanTimezone();if(h.length>0){var m=document.createElement("span");m.className="timezone",m.textContent=h,m.style.fontSize="".concat(c,"px"),this.props.color&&(m.style.color=this.props.color),t.append(m)}return t},n.prototype.getOriginDate=function(t){void 0===t&&(t=null);var e=t||new Date,n=1e3*this.props.clockTimezoneOffset,r=60*e.getTimezoneOffset()*1e3,i=e.getTime()+n+r;return new Date(i)},n.prototype.getHumanTimezone=function(t){void 0===t&&(t=this.props.clockTimezone);var e=t.split("/")[1];return(void 0===e?"":e).replace("_"," ")},n.prototype.getElementSize=function(t,e){switch(void 0===t&&(t=this.props.width),void 0===e&&(e=this.props.height),this.props.clockType){case"analogic":var n=100;t>0&&e>0?n=Math.min(t,e):t>0?n=t:e>0&&(n=e);var r=0;return"datetime"===this.props.clockFormat&&(r=e/8),{width:n,height:n+r};case"digital":return t>0&&e>0?e=t/2<e?t/2:e:t>0?e=t/2:e>0?t=2*e:(t=100,e=50),{width:t,height:e};default:throw new Error("invalid clock type.")}},n.TICK_INTERVAL=1e3,n}(n.ZP),X=Y,Q=function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},t(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),$=function(){return $=Object.assign||function(t){for(var e,n=1,r=arguments.length;n<r;n++)for(var i in e=arguments[n])Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t},$.apply(this,arguments)};function tt(t){return $($({},(0,n.TB)(t)),{type:12,label:null,isLinkEnabled:!1,parentId:null,aclGroupId:null,borderWidth:(0,e.I1)(t.borderWidth,0),borderColor:(0,e.JW)(t.borderColor,null),fillColor:(0,e.JW)(t.fillColor,null),fillTransparent:t.fillTransparent})}var et=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return Q(e,t),e.prototype.createDomElement=function(){var t=document.createElement("div");if(t.className="box",t.style.boxSizing="border-box",this.props.fillTransparent?t.style.backgroundColor="transparent":this.props.fillColor&&(t.style.backgroundColor=this.props.fillColor),this.props.borderWidth>0){t.style.borderStyle="solid";var e=Math.min(this.props.width,this.props.height)/2,n=Math.min(this.props.borderWidth,e);t.style.borderWidth="".concat(n,"px"),this.props.borderColor&&(t.style.borderColor=this.props.borderColor)}return t},e.prototype.updateDomElement=function(t){if(this.props.fillTransparent?t.style.backgroundColor="transparent":this.props.fillColor&&(t.style.backgroundColor=this.props.fillColor),this.props.borderWidth>0){t.style.borderStyle="solid";var e=Math.min(this.props.width,this.props.height)/2,n=Math.min(this.props.borderWidth,e);t.style.borderWidth="".concat(n,"px"),this.props.borderColor&&(t.style.borderColor=this.props.borderColor)}},e}(n.ZP),nt=et,rt=function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},t(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),it=function(){return it=Object.assign||function(t){for(var e,n=1,r=arguments.length;n<r;n++)for(var i in e=arguments[n])Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t},it.apply(this,arguments)};function ot(t){return it(it(it({},(0,n.TB)(t)),{type:4}),(0,e.bs)(t))}var st=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return rt(e,t),e.prototype.createDomElement=function(){var t=document.createElement("div");return t.className="label",t.innerHTML=this.getLabelWithMacrosReplaced(),t},e.prototype.createLabelDomElement=function(){var t=document.createElement("div");return t.className="visual-console-item-label",t},e}(n.ZP),at=st,lt=function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},t(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),ct=function(){return ct=Object.assign||function(t){for(var e,n=1,r=arguments.length;n<r;n++)for(var i in e=arguments[n])Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t},ct.apply(this,arguments)},pt=function(t){switch(t){case"string":case"image":return t;default:return"string"}},ut=function(t){switch(t){case"none":case"avg":case"max":case"min":return t;default:return"none"}};function dt(t){if("string"!=typeof t.value||0===t.value.length)throw new TypeError("invalid value");var r=ut(t.processValue);return ct(ct(ct(ct(ct({},(0,n.TB)(t)),{type:2,valueType:pt(t.valueType),value:t.value}),"none"===r?{processValue:r}:{processValue:r,period:(0,e.I1)(t.period,0)}),(0,e.MH)(t)),(0,e.bs)(t))}var ht=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return lt(n,t),n.prototype.createDomElement=function(){var t=document.createElement("div");if(t.className="simple-value",!0!==this.props.agentDisabled&&!0!==this.props.moduleDisabled||(t.style.opacity="0.2"),"image"===this.props.valueType){var n=document.createElement("img");n.src=this.props.value,t.append(n)}else{var r=this.props.value,i=this.getLabelWithMacrosReplaced();i.length>0&&(r=(0,e.No)([{macro:/\(?_VALUE_\)?/i,value:r}],i)),t.innerHTML=r}return t},n.prototype.createLabelDomElement=function(){var t=document.createElement("div");return t.className="visual-console-item-label",t},n}(n.ZP),mt=ht,ft=__webpack_require__(280),_t=Math.PI,yt=2*_t,vt=1e-6,gt=yt-vt;function bt(){this._x0=this._y0=this._x1=this._y1=null,this._=""}function Et(){return new bt}bt.prototype=Et.prototype={constructor:bt,moveTo:function(t,e){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+e)},closePath:function(){null!==this._x1&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")},lineTo:function(t,e){this._+="L"+(this._x1=+t)+","+(this._y1=+e)},quadraticCurveTo:function(t,e,n,r){this._+="Q"+ +t+","+ +e+","+(this._x1=+n)+","+(this._y1=+r)},bezierCurveTo:function(t,e,n,r,i,o){this._+="C"+ +t+","+ +e+","+ +n+","+ +r+","+(this._x1=+i)+","+(this._y1=+o)},arcTo:function(t,e,n,r,i){t=+t,e=+e,n=+n,r=+r,i=+i;var o=this._x1,s=this._y1,a=n-t,l=r-e,c=o-t,p=s-e,u=c*c+p*p;if(i<0)throw new Error("negative radius: "+i);if(null===this._x1)this._+="M"+(this._x1=t)+","+(this._y1=e);else if(u>vt)if(Math.abs(p*a-l*c)>vt&&i){var d=n-o,h=r-s,m=a*a+l*l,f=d*d+h*h,_=Math.sqrt(m),y=Math.sqrt(u),v=i*Math.tan((_t-Math.acos((m+u-f)/(2*_*y)))/2),g=v/y,b=v/_;Math.abs(g-1)>vt&&(this._+="L"+(t+g*c)+","+(e+g*p)),this._+="A"+i+","+i+",0,0,"+ +(p*d>c*h)+","+(this._x1=t+b*a)+","+(this._y1=e+b*l)}else this._+="L"+(this._x1=t)+","+(this._y1=e)},arc:function(t,e,n,r,i,o){t=+t,e=+e,o=!!o;var s=(n=+n)*Math.cos(r),a=n*Math.sin(r),l=t+s,c=e+a,p=1^o,u=o?r-i:i-r;if(n<0)throw new Error("negative radius: "+n);null===this._x1?this._+="M"+l+","+c:(Math.abs(this._x1-l)>vt||Math.abs(this._y1-c)>vt)&&(this._+="L"+l+","+c),n&&(u<0&&(u=u%yt+yt),u>gt?this._+="A"+n+","+n+",0,1,"+p+","+(t-s)+","+(e-a)+"A"+n+","+n+",0,1,"+p+","+(this._x1=l)+","+(this._y1=c):u>vt&&(this._+="A"+n+","+n+",0,"+ +(u>=_t)+","+p+","+(this._x1=t+n*Math.cos(i))+","+(this._y1=e+n*Math.sin(i))))},rect:function(t,e,n,r){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+e)+"h"+ +n+"v"+ +r+"h"+-n+"Z"},toString:function(){return this._}};var wt=Et;function Mt(t){return function(){return t}}var xt=Math.abs,Ct=Math.atan2,kt=Math.cos,Pt=Math.max,It=Math.min,At=Math.sin,Ot=Math.sqrt,Tt=1e-12,St=Math.PI,Lt=St/2,Rt=2*St;function Dt(t){return t>=1?Lt:t<=-1?-Lt:Math.asin(t)}function Nt(t){return t.innerRadius}function Bt(t){return t.outerRadius}function zt(t){return t.startAngle}function Wt(t){return t.endAngle}function jt(t){return t&&t.padAngle}function Ht(t,e,n,r,i,o,s){var a=t-n,l=e-r,c=(s?o:-o)/Ot(a*a+l*l),p=c*l,u=-c*a,d=t+p,h=e+u,m=n+p,f=r+u,_=(d+m)/2,y=(h+f)/2,v=m-d,g=f-h,b=v*v+g*g,E=i-o,w=d*f-m*h,M=(g<0?-1:1)*Ot(Pt(0,E*E*b-w*w)),x=(w*g-v*M)/b,C=(-w*v-g*M)/b,k=(w*g+v*M)/b,P=(-w*v+g*M)/b,I=x-_,A=C-y,O=k-_,T=P-y;return I*I+A*A>O*O+T*T&&(x=k,C=P),{cx:x,cy:C,x01:-p,y01:-u,x11:x*(i/E-1),y11:C*(i/E-1)}}var Vt=function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},t(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),Gt=function(){return Gt=Object.assign||function(t){for(var e,n=1,r=arguments.length;n<r;n++)for(var i in e=arguments[n])Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t},Gt.apply(this,arguments)};function Ut(t){switch(t){case"progress-bar":case"bubble":case"circular-progress-bar":case"circular-progress-bar-alt":return t;default:case 3:return"progress-bar";case 9:return"bubble";case 15:return"circular-progress-bar";case 16:return"circular-progress-bar-alt"}}function Ft(t){switch(t){case"percent":case"value":return t;default:return"percent"}}function Kt(t){return Gt(Gt(Gt(Gt({},(0,n.TB)(t)),{type:3,percentileType:Ut(t.percentileType||t.type),valueType:Ft(t.valueType),minValue:(0,e.I1)(t.minValue,null),maxValue:(0,e.I1)(t.maxValue,null),color:(0,e.JW)(t.color,null),labelColor:(0,e.JW)(t.labelColor,null),value:(0,e.xn)(t.value,null),unit:(0,e.JW)(t.unit,null)}),(0,e.MH)(t)),(0,e.bs)(t))}var Zt="http://www.w3.org/2000/svg",qt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return Vt(e,t),e.prototype.createDomElement=function(){var t,e={background:"#000000",progress:this.props.color||"#000000",text:this.props.labelColor||"#bcbcbc"},n=this.getProgress(),r=document.createElement("div");null!=this.props.value&&(t=Intl?Intl.NumberFormat("en-EN").format(this.props.value):this.props.value);var i=document.createElementNS(Zt,"svg");switch(this.props.percentileType){case"progress-bar":var o=document.createElementNS(Zt,"rect");o.setAttribute("fill",e.background),o.setAttribute("fill-opacity","0.5"),o.setAttribute("width","100%"),o.setAttribute("height","100%"),o.setAttribute("rx","5"),o.setAttribute("ry","5");var s=document.createElementNS(Zt,"rect");s.setAttribute("fill",e.progress),s.setAttribute("fill-opacity","1"),s.setAttribute("width","".concat(n,"%")),s.setAttribute("height","100%"),s.setAttribute("rx","5"),s.setAttribute("ry","5"),(u=document.createElementNS(Zt,"text")).setAttribute("text-anchor","middle"),u.setAttribute("alignment-baseline","middle"),u.setAttribute("font-size","15"),u.setAttribute("font-family","lato"),u.setAttribute("font-weight","bold"),u.setAttribute("text-anchor","middle"),u.setAttribute("alignment-baseline","middle"),u.setAttribute("x","50%"),u.setAttribute("y","50%"),u.setAttribute("fill",e.text),"value"===this.props.valueType?(u.style.fontSize="6pt",u.textContent=this.props.unit?"".concat(t," ").concat(this.props.unit):"".concat(t)):u.textContent="".concat(n,"%"),i.setAttribute("width","100%"),i.setAttribute("height","100%"),i.append(o,s,u);break;case"bubble":case"circular-progress-bar":case"circular-progress-bar-alt":if(i.setAttribute("viewBox","0 0 100 100"),"bubble"===this.props.percentileType)(a=document.createElementNS(Zt,"circle")).setAttribute("transform","translate(50 50)"),a.setAttribute("fill",e.background),a.setAttribute("fill-opacity","0.5"),a.setAttribute("r","50"),(l=document.createElementNS(Zt,"circle")).setAttribute("transform","translate(50 50)"),l.setAttribute("fill",e.progress),l.setAttribute("fill-opacity","1"),l.setAttribute("r","".concat(n/2)),i.append(a,l);else{var a,l,c={innerRadius:"circular-progress-bar"===this.props.percentileType?30:0,outerRadius:50,startAngle:0,endAngle:2*Math.PI},p=function(){var t=Nt,e=Bt,n=Mt(0),r=null,i=zt,o=Wt,s=jt,a=null;function l(){var l,c,p,u=+t.apply(this,arguments),d=+e.apply(this,arguments),h=i.apply(this,arguments)-Lt,m=o.apply(this,arguments)-Lt,f=xt(m-h),_=m>h;if(a||(a=l=wt()),d<u&&(c=d,d=u,u=c),d>Tt)if(f>Rt-Tt)a.moveTo(d*kt(h),d*At(h)),a.arc(0,0,d,h,m,!_),u>Tt&&(a.moveTo(u*kt(m),u*At(m)),a.arc(0,0,u,m,h,_));else{var y,v,g=h,b=m,E=h,w=m,M=f,x=f,C=s.apply(this,arguments)/2,k=C>Tt&&(r?+r.apply(this,arguments):Ot(u*u+d*d)),P=It(xt(d-u)/2,+n.apply(this,arguments)),I=P,A=P;if(k>Tt){var O=Dt(k/u*At(C)),T=Dt(k/d*At(C));(M-=2*O)>Tt?(E+=O*=_?1:-1,w-=O):(M=0,E=w=(h+m)/2),(x-=2*T)>Tt?(g+=T*=_?1:-1,b-=T):(x=0,g=b=(h+m)/2)}var S=d*kt(g),L=d*At(g),R=u*kt(w),D=u*At(w);if(P>Tt){var N,B=d*kt(b),z=d*At(b),W=u*kt(E),j=u*At(E);if(f<St&&(N=function(t,e,n,r,i,o,s,a){var l=n-t,c=r-e,p=s-i,u=a-o,d=u*l-p*c;if(!(d*d<Tt))return[t+(d=(p*(e-o)-u*(t-i))/d)*l,e+d*c]}(S,L,W,j,B,z,R,D))){var H=S-N[0],V=L-N[1],G=B-N[0],U=z-N[1],F=1/At(((p=(H*G+V*U)/(Ot(H*H+V*V)*Ot(G*G+U*U)))>1?0:p<-1?St:Math.acos(p))/2),K=Ot(N[0]*N[0]+N[1]*N[1]);I=It(P,(u-K)/(F-1)),A=It(P,(d-K)/(F+1))}}x>Tt?A>Tt?(y=Ht(W,j,S,L,d,A,_),v=Ht(B,z,R,D,d,A,_),a.moveTo(y.cx+y.x01,y.cy+y.y01),A<P?a.arc(y.cx,y.cy,A,Ct(y.y01,y.x01),Ct(v.y01,v.x01),!_):(a.arc(y.cx,y.cy,A,Ct(y.y01,y.x01),Ct(y.y11,y.x11),!_),a.arc(0,0,d,Ct(y.cy+y.y11,y.cx+y.x11),Ct(v.cy+v.y11,v.cx+v.x11),!_),a.arc(v.cx,v.cy,A,Ct(v.y11,v.x11),Ct(v.y01,v.x01),!_))):(a.moveTo(S,L),a.arc(0,0,d,g,b,!_)):a.moveTo(S,L),u>Tt&&M>Tt?I>Tt?(y=Ht(R,D,B,z,u,-I,_),v=Ht(S,L,W,j,u,-I,_),a.lineTo(y.cx+y.x01,y.cy+y.y01),I<P?a.arc(y.cx,y.cy,I,Ct(y.y01,y.x01),Ct(v.y01,v.x01),!_):(a.arc(y.cx,y.cy,I,Ct(y.y01,y.x01),Ct(y.y11,y.x11),!_),a.arc(0,0,u,Ct(y.cy+y.y11,y.cx+y.x11),Ct(v.cy+v.y11,v.cx+v.x11),_),a.arc(v.cx,v.cy,I,Ct(v.y11,v.x11),Ct(v.y01,v.x01),!_))):a.arc(0,0,u,w,E,_):a.lineTo(R,D)}else a.moveTo(0,0);if(a.closePath(),l)return a=null,l+""||null}return l.centroid=function(){var n=(+t.apply(this,arguments)+ +e.apply(this,arguments))/2,r=(+i.apply(this,arguments)+ +o.apply(this,arguments))/2-St/2;return[kt(r)*n,At(r)*n]},l.innerRadius=function(e){return arguments.length?(t="function"==typeof e?e:Mt(+e),l):t},l.outerRadius=function(t){return arguments.length?(e="function"==typeof t?t:Mt(+t),l):e},l.cornerRadius=function(t){return arguments.length?(n="function"==typeof t?t:Mt(+t),l):n},l.padRadius=function(t){return arguments.length?(r=null==t?null:"function"==typeof t?t:Mt(+t),l):r},l.startAngle=function(t){return arguments.length?(i="function"==typeof t?t:Mt(+t),l):i},l.endAngle=function(t){return arguments.length?(o="function"==typeof t?t:Mt(+t),l):o},l.padAngle=function(t){return arguments.length?(s="function"==typeof t?t:Mt(+t),l):s},l.context=function(t){return arguments.length?(a=null==t?null:t,l):a},l}();(a=document.createElementNS(Zt,"path")).setAttribute("transform","translate(50 50)"),a.setAttribute("fill",e.background),a.setAttribute("fill-opacity","0.5"),a.setAttribute("d","".concat(p(c))),(l=document.createElementNS(Zt,"path")).setAttribute("transform","translate(50 50)"),l.setAttribute("fill",e.progress),l.setAttribute("fill-opacity","1"),l.setAttribute("d","".concat(p(Gt(Gt({},c),{endAngle:c.endAngle*(n/100)})))),i.append(a,l)}var u;if((u=document.createElementNS(Zt,"text")).setAttribute("text-anchor","middle"),u.setAttribute("alignment-baseline","middle"),u.setAttribute("font-size","16"),u.setAttribute("font-family","lato"),u.setAttribute("font-weight","bold"),u.setAttribute("fill",e.text),"value"===this.props.valueType&&null!=this.props.value)if(this.props.unit&&this.props.unit.length>0){var d=document.createElementNS(Zt,"tspan");d.setAttribute("x","0"),d.setAttribute("dy","1em"),d.textContent="".concat(t),d.style.fontSize="8pt";var h=document.createElementNS(Zt,"tspan");h.setAttribute("x","0"),h.setAttribute("dy","1em"),h.textContent="".concat(this.props.unit),h.style.fontSize="8pt",u.append(d,h),u.setAttribute("transform","translate(50 33)")}else u.textContent="".concat(t),u.style.fontSize="8pt",u.setAttribute("transform","translate(50 50)");else u.textContent="".concat(n,"%"),u.setAttribute("transform","translate(50 50)");i.append(u)}return!0!==this.props.agentDisabled&&!0!==this.props.moduleDisabled||i.setAttribute("opacity","0.2"),null!==i&&r.append(i),r},e.prototype.updateDomElement=function(t){!1===this.meta.isBeingResized&&this.resizeElement(this.props.width,this.props.height),t.innerHTML=this.createDomElement().innerHTML},e.prototype.resizeElement=function(e,n){"progress-bar"===this.props.percentileType?t.prototype.resizeElement.call(this,e,35):t.prototype.resizeElement.call(this,e,e)},e.prototype.resize=function(e){this.resizeElement(e,e);var n=this.props.maxValue||0;"progress-bar"===this.props.percentileType&&(n=35),t.prototype.setProps.call(this,Gt(Gt({},this.props),{width:e,height:n}))},e.prototype.getProgress=function(){var t=this.props.minValue||0,e=this.props.maxValue||100,n=null==this.props.value?0:this.props.value;return n<=t?0:n>=e?100:Math.trunc((n-t)/(e-t)*100)},e}(n.ZP),Jt=qt,Yt=__webpack_require__(369),Xt=__webpack_require__(709),Qt=__webpack_require__(600),$t=function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},t(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),te=function(){return te=Object.assign||function(t){for(var e,n=1,r=arguments.length;n<r;n++)for(var i in e=arguments[n])Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t},te.apply(this,arguments)};function ee(t){if(null!==t.imageSrc){if("string"!=typeof t.statusImageSrc||0===t.imageSrc.statusImageSrc)throw new TypeError("invalid status image src.")}else if((0,e.VJ)(t.encodedTitle))throw new TypeError("missing encode tittle content.");if(null===(0,e.I1)(t.serviceId,null))throw new TypeError("invalid service id.");return te(te({},(0,n.TB)(t)),{type:10,serviceId:t.serviceId,imageSrc:(0,e.JW)(t.imageSrc,null),statusImageSrc:(0,e.JW)(t.statusImageSrc,null),encodedTitle:(0,e.JW)(t.encodedTitle,null)})}var ne=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return $t(n,t),n.prototype.createDomElement=function(){var t=document.createElement("div");return t.className="service",null!==this.props.statusImageSrc?(t.style.background="url(".concat(this.props.statusImageSrc,") no-repeat"),t.style.backgroundSize="contain",t.style.backgroundPosition="center",null!==this.props.encodedTitle&&(t.className="service image forced_title",t.setAttribute("data-use_title_for_force_title","1"),t.setAttribute("data-title",(0,e.NV)(this.props.encodedTitle)))):null!==this.props.encodedTitle&&(t.innerHTML=(0,e.NV)(this.props.encodedTitle)),t},n.prototype.updateDomElement=function(t){null!==this.props.statusImageSrc?(t.style.background="url(".concat(this.props.statusImageSrc,") no-repeat"),t.style.backgroundSize="contain",t.style.backgroundPosition="center",null!==this.props.encodedTitle&&(t.className="service image forced_title",t.setAttribute("data-use_title_for_force_title","1"),t.setAttribute("data-title",(0,e.NV)(this.props.encodedTitle))),t.innerHTML=""):null!==this.props.encodedTitle&&(t.innerHTML=(0,e.NV)(this.props.encodedTitle))},n}(n.ZP),re=ne,ie=function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},t(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),oe=function(){return oe=Object.assign||function(t){for(var e,n=1,r=arguments.length;n<r;n++)for(var i in e=arguments[n])Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t},oe.apply(this,arguments)};function se(t){return oe(oe(oe({},(0,n.TB)(t)),{type:22,value:(0,e.I1)(t.value,0),status:(0,e.VJ)(t.status)?"#B2B2B2":t.status,titleColor:(0,e.VJ)(t.titleColor)?"#3f3f3f":t.titleColor,title:(0,e.VJ)(t.title)?"":t.title,titleModule:(0,e.VJ)(t.titleModule)?"":t.titleModule,thresholds:(0,e.VJ)(t.thresholds)?"":t.thresholds,minMaxValue:(0,e.VJ)(t.minMaxValue)?"":t.minMaxValue,odometerType:(0,e.VJ)(t.odometerType)?"percent":t.odometerType}),(0,e.MH)(t))}var ae,le=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return ie(e,t),e.prototype.createDomElement=function(){var t="",e="",n="",r="";if(""!==this.props.thresholds){var i=JSON.parse(this.props.thresholds);null!==i&&(0==i.min_warning&&0==i.max_warning||(t=this.getCoords(i.min_warning,this.props.width/2),e=0==i.max_warning?this.getCoords(100,this.props.width/2):this.getCoords(i.max_warning,this.props.width/2)),0==i.min_critical&&0==i.max_critical||(n=this.getCoords(i.min_critical,this.props.width/2),r=0==i.max_critical?this.getCoords(100,this.props.width/2):this.getCoords(i.max_critical,this.props.width/2)))}var o,s="";Number(this.props.value)===this.props.value&&this.props.value%1!=0?o=this.props.value.toFixed(1):(s=""===this.props.minMaxValue?" %":this.getSubfix(this.props.value),o=new Intl.NumberFormat("es",{maximumSignificantDigits:4,maximumFractionDigits:3}).format(this.props.value));var a=o.match(/\d*\.\d/);null!==a&&(o=a[0]);var l=this.getRotate(this.props.value),c=document.getElementById("visual-console-container");null===c&&(c=document.getElementById("visual-console-container-".concat(this.props.cellId))),""==c.style.backgroundColor&&(c.style.backgroundColor="#fff");var p=.7*this.props.width,u=document.createElement("div");u.className="odometer",!0!==this.props.agentDisabled&&!0!==this.props.moduleDisabled||(u.style.opacity="0.2");var d=document.createElement("div");d.className="odometer-container";var h=document.createElement("div");h.className="odometer-a",h.style.backgroundColor="".concat(c.style.backgroundColor);var m=document.createElement("div");m.className="odometer-b",m.id="odometerB-".concat(this.props.id),m.style.backgroundColor="".concat(this.props.status);var f=document.createElement("div");f.className="odometer-c";var _=document.createElement("div");_.className="odometer-d";var y="http://www.w3.org/2000/svg";if(""!=t){var v=document.createElementNS(y,"svg");v.setAttributeNS(null,"width","100%"),v.setAttributeNS(null,"height","100%"),v.setAttributeNS(null,"style","position:absolute;z-index:1");var g=document.createElementNS(y,"path");g.setAttributeNS(null,"id","svgWarning-".concat(this.props.id)),g.setAttributeNS(null,"d","M".concat(this.props.width/2,",").concat(this.props.width/2,"L").concat(t,"A").concat(this.props.width/2,",").concat(this.props.width/2,",0,0,1,").concat(e,"Z")),g.setAttributeNS(null,"class","svg_warning"),v.appendChild(g),d.appendChild(v)}if(""!=n){var b=document.createElementNS(y,"svg");b.setAttributeNS(null,"width","100%"),b.setAttributeNS(null,"height","100%"),b.setAttributeNS(null,"style","position:absolute;z-index:2");var E=document.createElementNS(y,"path");E.setAttributeNS(null,"id","svgCritical-".concat(this.props.id)),E.setAttributeNS(null,"d","M".concat(this.props.width/2,",").concat(this.props.width/2,"L").concat(n,"A").concat(this.props.width/2,",").concat(this.props.width/2,",0,0,1,").concat(r,"Z")),E.setAttributeNS(null,"fill","#E63C52"),b.appendChild(E),d.appendChild(b)}var w=document.createElement("h1");w.innerText=o+s,w.style.fontSize="".concat(.17*p,"px"),w.style.color="".concat(this.props.status),w.style.lineHeight="0";var M=document.createElement("h2");""==this.props.title?M.textContent=this.truncateTitle(this.props.moduleName):M.textContent=this.truncateTitle(this.props.title),M.title=this.props.titleModule,M.setAttribute("title",this.props.titleModule),M.style.fontSize="".concat(.06*p,"px"),M.style.color="".concat(this.props.titleColor),M.style.lineHeight="0";var x=document.createElement("script");x.type="text/javascript",x.onload=function(){m.style.transform="rotate(".concat(l,"turn)")};var C=window.location.pathname.split("/")[1];return x.src="".concat(document.dir,"/").concat(C,"/include/javascript/pandora_alerts.js"),h.appendChild(w),h.appendChild(M),d.appendChild(m),d.appendChild(f),d.appendChild(_),d.appendChild(h),d.appendChild(x),u.appendChild(d),u},e.prototype.updateDomElement=function(t){var e=this;t.innerHTML=this.createDomElement().innerHTML;var n=this.getRotate(this.props.value),r=document.getElementById("svgWarning-".concat(this.props.id));null!=r&&(r.style.display="none");var i=document.getElementById("svgCritical-".concat(this.props.id));null!=i&&(i.style.display="none"),setTimeout((function(){null!=r&&(r.style.display="block"),null!=i&&(i.style.display="block");var t=document.getElementById("odometerB-".concat(e.props.id));t&&(t.style.transform="rotate(".concat(n,"turn)"))}),500)},e.prototype.resizeElement=function(e){t.prototype.resizeElement.call(this,e,e/2)},e.prototype.resize=function(t){this.resizeElement(this.props.width)},e.prototype.getRotate=function(t){var e=0;if(""===this.props.minMaxValue)e=t/2/100;else{var n=JSON.parse(this.props.minMaxValue);if(n.min===t)e=0;else if(n.max===t)e=.5;else{var r=n.max-n.min;e=(100-100*(n.max-t)/r)/100/2}}return e},e.prototype.getSubfix=function(t){var e="",n=(t+"").length;return n>3&&n<=6?e=" K":n>6&&n<=9?e=" M":n>9&&n<=12?e=" G":n>12&&n<=15&&(e=" T"),e},e.prototype.getCoords=function(t,e){if(""!==this.props.minMaxValue){var n=JSON.parse(this.props.minMaxValue);if(n.min===t)t=0;else if(n.max===t||100===t)t=100;else{var r=n.max-n.min;t=100-100*(n.max-t)/r}}t=180-1.8*t;var i=e+Math.cos(t*Math.PI/180)*e,o=e-Math.sin(t*Math.PI/180)*e;return"".concat(i,",").concat(o)},e.prototype.truncateTitle=function(t){if(null!=t&&t.length>22){var e=t.length/2,n=e-9,r=t.substr(0,e-n),i=t.substr(e+n);return"".concat(r,"...").concat(i)}return t},e}(n.ZP),ce=le,pe=__webpack_require__(880),ue=function(){return ue=Object.assign||function(t){for(var e,n=1,r=arguments.length;n<r;n++)for(var i in e=arguments[n])Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t},ue.apply(this,arguments)};function de(t){var n=(0,e.I1)(t.type,null);if(null==n)throw new TypeError("missing item type.");switch(n){case 0:return s(t);case 1:return(0,Qt.C)(t);case 2:case 6:case 7:case 8:return dt(t);case 3:case 9:case 15:case 16:return Kt(t);case 4:return ot(t);case 5:return u(t);case 10:return ee(t);case 11:return V(t);case 12:return tt(t);case 13:return O(t);case 14:return(0,ft.o)(t);case 17:return(0,Yt.p)(t);case 18:return(0,Xt.K)(t);case 19:return J(t);case 20:return E(t);case 21:return B(t);case 22:return se(t);case 23:return(0,pe.u)(t);default:throw new TypeError("decoder not found")}}var he=function(){function t(t,n,r){var i=this;this.elementsById={},this.elementIds=[],this.relations={},this.lineLinks={},this.lines={},this.clickEventManager=new P.Z,this.dblClickEventManager=new P.Z,this.movedEventManager=new P.Z,this.lineMovedEventManager=new P.Z,this.resizedEventManager=new P.Z,this.selectionChangedEventManager=new P.Z,this.disposables=[],this.handleElementClick=function(t){i.clickEventManager.emit(t)},this.handleElementDblClick=function(t){i.dblClickEventManager.emit(t)},this.handleElementMovement=function(t){var e=t.item.itemProps.type;if(13===e||21===e||void 0!==i.props.gridSelected&&!1!==i.props.gridSelected||i.elements.forEach((function(e){if(!0===e.meta.isSelected&&t.item.itemProps.id!==e.itemProps.id&&13!==e.props.type&&21!==e.props.type){var n=t.newPosition.x-t.item.props.x,r=t.newPosition.y-t.item.props.y,o=e.props.x+n,s=e.props.y+r;o>i.props.width?o=i.props.width:o<=0&&(o=0),s>i.props.height?s=i.props.height:s<=0&&(s=0),e.moveElement(o,s),e.debouncedMovementSave(o,s)}})),13!==e&&21!==e&&!0===i.props.gridSelected){var n=i.props.gridSize,r=t.newPosition.x,o=t.newPosition.y;if(r%n!=0||o%n!=0){var s=Math.floor(r/n)*n,a=Math.floor(o/n)*n;return void document.getElementById("item-selected-move").setAttribute("style","top:"+a+"px !important; left:"+s+"px !important")}}var l=t.item.props.id;i.getItemRelations(l).forEach((function(e){e.parentId===l?e.line.props=ue(ue({},e.line.props),{startPosition:i.getVisualCenter(t.newPosition,t.item)}):e.childId===l&&(e.line.props=ue(ue({},e.line.props),{endPosition:i.getVisualCenter(t.newPosition,t.item)}))})),i.updateLinesConnected(t.item.props,t.newPosition,!1)},this.handleElementMovementFinished=function(t){i.movedEventManager.emit(t),i.updateLinesConnected(t.item.props,t.newPosition,!0)},this.handleLineElementMovementFinished=function(t){i.refreshLink(t.item),i.lineMovedEventManager.emit(t)},this.handleElementResizement=function(t){13===t.item.props.type||21===t.item.props.type||void 0!==i.props.gridSelected&&!1!==i.props.gridSelected||i.elements.forEach((function(e){!0===e.meta.isSelected&&t.item.itemProps.id!==e.itemProps.id&&13!==e.props.type&&21!==e.props.type&&(e.setMeta({isUpdating:!0}),e.resizeElement(t.newSize.width,t.newSize.height),e.debouncedResizementSave(t.newSize.width,t.newSize.height))}));var e=t.item,n=e.props,r=n.id,o=i.getItemRelations(r),s={x:n.x,y:n.y},a=i.elementsById[r].meta;i.elementsById[r].meta=ue(ue({},a),{isUpdating:!0}),o.forEach((function(t){t.parentId===r?t.line.props=ue(ue({},t.line.props),{startPosition:i.getVisualCenter(s,e)}):t.childId===r&&(t.line.props=ue(ue({},t.line.props),{endPosition:i.getVisualCenter(s,e)}))}))},this.handleElementResizementFinished=function(t){i.resizedEventManager.emit(t)},this.handleElementRemove=function(t){i.elementIds=i.elementIds.filter((function(e){return e!==t.item.props.id})),delete i.elementsById[t.item.props.id],i.clearRelations(t.item.props.id)},this.handleElementSelectionChanged=function(t){i.elements.filter((function(t){return 1==t.meta.isSelected})).length>0?t.selected=!0:t.selected=!1,i.selectionChangedEventManager.emit(t)},this.handleContainerClick=function(){i.unSelectItems()},this.containerRef=t,this._props=function(t){var n=t.id,r=t.name,i=t.groupId,o=t.backgroundURL,s=t.backgroundColor,a=t.isFavorite,l=t.relationLineWidth,c=t.maintenanceMode,p=t.gridSize;if(t.gridSelected,null==n||isNaN(parseInt(n)))throw new TypeError("invalid Id.");if("string"!=typeof r||0===r.length)throw new TypeError("invalid name.");if(null==i||isNaN(parseInt(i)))throw new TypeError("invalid group Id.");return ue({id:parseInt(n),name:r,groupId:parseInt(i),backgroundURL:(0,e.JW)(o,null),backgroundColor:(0,e.JW)(s,null),isFavorite:(0,e.gx)(a),relationLineWidth:(0,e.I1)(l,0),maintenanceMode:c,gridSize:(0,e.I1)(p,10),gridSelected:!1},(0,e.HY)(t))}(n),this.render(),(r=r.sort((function(t,e){return null==t.id||null==e.id?0:t.id>e.id?1:-1}))).forEach((function(t){return i.addElement(t,i)})),this.buildRelations(),this.elements.forEach((function(t){t instanceof L&&i.refreshLink(t)})),this.containerRef.addEventListener("click",this.handleContainerClick)}return t.prototype.coordinatesInItem=function(t,e,n){return 13!=n.type&&21!=n.type&&t>n.x&&t<n.x+n.width&&e>n.y&&e<n.y+n.height},t.prototype.refreshLink=function(t){var e=t.props.id,n=0,r=0;try{for(var i in this.elementsById)this.coordinatesInItem(t.props.startPosition.x,t.props.startPosition.y,this.elementsById[i].props)&&(n=parseInt(i)),this.coordinatesInItem(t.props.endPosition.x,t.props.endPosition.y,this.elementsById[i].props)&&(r=parseInt(i));for(var i in null==this.lineLinks&&(this.lineLinks={}),null==this.lines&&(this.lines={}),n==e&&(n=0),r==e&&(r=0),null==this.lines[e]&&(this.lines[e]={start:n,end:r}),n>0?(null==this.lineLinks[n]&&(this.lineLinks[n]={}),this.lineLinks[n][e]={start:n,end:r}):this.lines[e].start>0&&(this.lineLinks[this.lines[e].start][e].start=0,this.lines[e].start=0),r>0?(null==this.lineLinks[r]&&(this.lineLinks[r]={}),this.lineLinks[r][e]={start:n,end:r}):this.lines[e].end>0&&(this.lineLinks[this.lines[e].end][e].end=0,this.lines[e].end=0),this.lines[e]={start:n,end:r},this.lineLinks)this.lineLinks[i][e]&&(0==this.lineLinks[i][e].start&&0==this.lineLinks[i][e].end&&(delete this.lineLinks[i][e],0===Object.keys(this.lineLinks[i]).length&&delete this.lineLinks[i]),(this.lineLinks[i][e].start!=n&&this.lineLinks[i][e].end==r||this.lineLinks[i][e].start==n&&this.lineLinks[i][e].end!=r)&&(delete this.lineLinks[i][e],0===Object.keys(this.lineLinks[i]).length&&delete this.lineLinks[i]))}catch(t){console.error(t)}},t.prototype.updateLinesConnected=function(t,n,r){var i=this;null!=this.lineLinks[t.id]&&(Object.keys(this.lineLinks[t.id]).forEach((function(o){var s=parseInt(o);if(-1!==i.elementIds.indexOf(s)){var a=i.elementsById[s];if(a.props){var l=a.props.startPosition.x,c=a.props.startPosition.y,p=a.props.endPosition.x,u=a.props.endPosition.y;t.id==i.lineLinks[t.id][s].start&&(l=n.x+t.width/2,c=n.y+t.height/2),t.id==i.lineLinks[t.id][s].end&&(p=n.x+t.width/2,u=n.y+t.height/2),i.updateElement(ue(ue({},a.props),{startX:l,startY:c,endX:p,endY:u})),r&&(0,e.Ds)(500,(function(t){i.lineMovedEventManager.emit({item:t.line,startPosition:{x:t.startX,y:t.startY},endPosition:{x:t.endX,y:t.endY}})}))({line:a,startX:l,startY:c,endX:p,endY:u})}}})),this.buildRelations(t.id,n.x+t.width/2,n.y+t.height/2))},Object.defineProperty(t.prototype,"elements",{get:function(){var t=this;return this.elementIds.map((function(e){return t.elementsById[e]})).filter((function(t){return null!=t}))},enumerable:!1,configurable:!0}),t.prototype.addElement=function(t,n){void 0===n&&(n=this);try{null==t.ratio&&(t.ratio=1),t.x*=t.ratio,t.y*=t.ratio,13==t.type&&(t.startX*=t.ratio,t.startY*=t.ratio,t.endX*=t.ratio,t.endY*=t.ratio);var r=function(t){var n=(0,e.I1)(t.type,null);if(null==n)throw new TypeError("missing item type.");var r=(0,e.SM)(t);switch(n){case 0:return new l(s(t),r);case 1:return new Qt.Z((0,Qt.C)(t),r);case 2:case 6:case 7:case 8:return new mt(dt(t),r);case 3:case 9:case 15:case 16:return new Jt(Kt(t),r);case 4:return new at(ot(t),r);case 5:return new h(u(t),r);case 10:return new re(ee(t),r);case 11:return new U(V(t),r);case 12:return new nt(tt(t),r);case 13:return new L(O(t),r);case 14:return new ft.Z((0,ft.o)(t),r);case 17:return new Yt.Z((0,Yt.p)(t),r);case 18:return new Xt.Z((0,Xt.K)(t),r);case 19:return new X(J(t),r);case 20:return new k(E(t),r);case 21:return new W(B(t),r);case 22:return new ce(se(t),r);case 23:return new pe.Z((0,pe.u)(t),r);default:throw new TypeError("item not found")}}(t);return n.elementsById[r.props.id]=r,n.elementIds.push(r.props.id),r.onRemove(n.handleElementRemove),r.onSelectionChanged(n.handleElementSelectionChanged),r.onClick(n.handleElementClick),r.onDblClick(n.handleElementDblClick),r instanceof L?(r.onLineMovementFinished(n.handleLineElementMovementFinished),this.refreshLink(r)):(r.onMoved(n.handleElementMovement),r.onMovementFinished(n.handleElementMovementFinished),r.onResized(n.handleElementResizement),r.onResizeFinished(n.handleElementResizementFinished)),1!==t.ratio&&13!=t.type&&(r.elementRef.style.transform="scale(".concat(t.ratio?t.ratio:1,")"),r.elementRef.style.transformOrigin="left top",r.elementRef.style.minWidth="max-content",r.elementRef.style.minHeight="max-content"),n.containerRef.append(r.elementRef),r}catch(t){console.error("Error creating a new element:",t.message)}},t.prototype.updateElements=function(t){var e=this,n=t.map((function(t){return t.id||null})).filter((function(t){return null!=t}));this.elementIds.filter((function(t){return n.indexOf(t)<0})).forEach((function(t){null!=e.elementsById[t]&&(e.elementsById[t].remove(),delete e.elementsById[t])})),this.elementIds=n,t.forEach((function(t){if(t.id)if(null==e.elementsById[t.id])e.addElement(t);else try{null!=t.ratio&&(t.x*=t.ratio,t.y*=t.ratio,13==t.type&&(t.startX*=t.ratio,t.startY*=t.ratio,t.endX*=t.ratio,t.endY*=t.ratio)),e.elementsById[t.id].props=de(t)}catch(t){console.error("Error updating an element:",t.message)}})),this.buildRelations()},t.prototype.updateElement=function(t){try{this.elementsById[t.id].props=ue({},de(t))}catch(t){console.error("Error updating element:",t.message)}this.buildRelations()},Object.defineProperty(t.prototype,"props",{get:function(){return ue({},this._props)},set:function(t){var e=this.props;this._props=t,this.render(e)},enumerable:!1,configurable:!0}),t.prototype.render=function(t){void 0===t&&(t=null),t?(t.backgroundURL!==this.props.backgroundURL&&(this.containerRef.style.backgroundImage=null!==this.props.backgroundURL?"url(".concat(this.props.backgroundURL,")"):""),null!=this.props.backgroundColor&&t.backgroundColor!==this.props.backgroundColor&&(this.containerRef.style.backgroundColor=this.props.backgroundColor),this.sizeChanged(t,this.props)&&this.resizeElement(this.props.width,this.props.height)):(this.props.backgroundURL&&(this.containerRef.style.backgroundImage=null!==this.props.backgroundURL?"url(".concat(this.props.backgroundURL,")"):""),this.props.backgroundColor&&(this.containerRef.style.backgroundColor=this.props.backgroundColor),this.resizeElement(this.props.width,this.props.height))},t.prototype.sizeChanged=function(t,e){return t.width!==e.width||t.height!==e.height},t.prototype.resizeElement=function(t,e){this.containerRef.style.width="".concat(t,"px"),this.containerRef.style.height="".concat(e,"px")},t.prototype.resize=function(t,e){this.props=ue(ue({},this.props),{width:t,height:e})},t.prototype.remove=function(){this.disposables.forEach((function(t){return t.dispose()})),this.elements.forEach((function(t){return t.remove()})),this.elementsById={},this.elementIds=[],this.clearRelations(),this.containerRef.removeEventListener("click",this.handleContainerClick),this.containerRef.innerHTML=""},t.prototype.buildRelations=function(t,e,n){var r=this;this.clearRelations(),this.elements.forEach((function(i){if(null!==i.props.parentId){var o=r.elementsById[i.props.parentId],s=r.elementsById[i.props.id];o&&s&&(null!=t?i.props.parentId==t?r.addRelationLine(o,s,e,n):i.props.id==t?r.addRelationLine(o,s,void 0,void 0,e,n):r.addRelationLine(o,s):r.addRelationLine(o,s))}}))},t.prototype.clearRelations=function(t){if(null!=t)for(var e in this.relations){var n=e.split("|"),r=Number.parseInt(n[0]),i=Number.parseInt(n[1]);t!==r&&t!==i||(this.relations[e].remove(),delete this.relations[e])}else for(var e in this.relations)this.relations[e].remove(),delete this.relations[e]},t.prototype.getRelationLine=function(t,e){var n="".concat(t,"|").concat(e);return this.relations[n]||null},t.prototype.getItemRelations=function(t){var e=[];for(var n in this.relations){var r=n.split("|"),i=Number.parseInt(r[0]),o=Number.parseInt(r[1]);t!==i&&t!==o||e.push({parentId:i,childId:o,line:this.relations[n]})}return e},t.prototype.getVisualCenter=function(t,e){var n=1;null!=e.props.ratio&&(n=e.props.ratio);var r=t.x+e.elementRef.clientWidth/2*n,i=t.y+e.elementRef.clientHeight/2*n;if(void 0!==e.props.label||""!==e.props.label||null!==e.props.label)switch(e.props.labelPosition){case"up":i=t.y+(e.elementRef.clientHeight+e.labelElementRef.clientHeight)/2*n;break;case"down":i=t.y+(e.elementRef.clientHeight-e.labelElementRef.clientHeight)/2*n;break;case"right":r=t.x+(e.elementRef.clientWidth-e.labelElementRef.clientWidth)/2*n;break;case"left":r=t.x+(e.elementRef.clientWidth+e.labelElementRef.clientWidth)/2*n}return{x:r,y:i}},t.prototype.addRelationLine=function(t,n,r,i,o,s){var a="".concat(t.props.id,"|").concat(n.props.id);null!=this.relations[a]&&this.relations[a].remove();var l=this.getVisualCenter(t.props,t),c=l.x,p=l.y,u=this.getVisualCenter(n.props,n),d=u.x,h=u.y;null!=r&&(c=r),null!=i&&(p=i),null!=o&&(d=o),null!=s&&(h=s);var m=new L(O({id:0,type:13,startX:c,startY:p,endX:d,endY:h,width:0,height:0,lineWidth:this.props.relationLineWidth,color:(0,e.JW)(n.props.colorStatus,"#CCC"),ratio:t.props.ratio}),(0,e.SM)({receivedAt:new Date}));return this.relations[a]=m,m.elementRef.style.zIndex="0",this.containerRef.append(m.elementRef),m},t.prototype.onItemClick=function(t){var e=this.clickEventManager.on(t);return this.disposables.push(e),e},t.prototype.onItemDblClick=function(t){var e=this.dblClickEventManager.on(t);return this.disposables.push(e),e},t.prototype.onItemMoved=function(t){var e=this.movedEventManager.on(t);return this.disposables.push(e),e},t.prototype.onLineMoved=function(t){var e=this.lineMovedEventManager.on(t);return this.disposables.push(e),e},t.prototype.onItemResized=function(t){var e=this.resizedEventManager.on(t);return this.disposables.push(e),e},t.prototype.onItemSelectionChanged=function(t){var e=this.selectionChangedEventManager.on(t);return this.disposables.push(e),e},t.prototype.enableEditMode=function(){this.elements.forEach((function(t){t.meta=ue(ue({},t.meta),{editMode:!0})})),this.containerRef.classList.add("is-editing")},t.prototype.disableEditMode=function(){this.elements.forEach((function(t){t.meta=ue(ue({},t.meta),{editMode:!1})})),this.containerRef.classList.remove("is-editing")},t.prototype.enableMaintenanceMode=function(){this.elements.forEach((function(t){t.meta=ue(ue({},t.meta),{maintenanceMode:!0})})),this.containerRef.classList.add("is-maintenance"),this.containerRef.classList.remove("is-editing")},t.prototype.disableMaintenanceMode=function(){this.elements.forEach((function(t){t.meta=ue(ue({},t.meta),{maintenanceMode:!1})})),this.containerRef.classList.remove("is-maintenance"),this.containerRef.classList.add("is-editing")},t.prototype.updateGridSize=function(t){this._props.gridSize=parseInt(t),this.props.gridSize=parseInt(t)},t.prototype.updateGridSelected=function(t){this._props.gridSelected=t,this.props.gridSelected=t},t.prototype.selectItem=function(t,e){var n=this;void 0===e&&(e=!1),e?this.elementIds.forEach((function(e){var r=n.elementsById[e].meta;e!==t&&r.isSelected?n.elementsById[e].unSelectItem():e!==t||r.isSelected||n.elementsById[e].selectItem()})):this.elementsById[t]&&this.elementsById[t].selectItem()},t.prototype.unSelectItem=function(t){this.elementsById[t]&&this.elementsById[t].meta.isSelected&&this.elementsById[t].unSelectItem()},t.prototype.unSelectItems=function(){var t=this;this.elementIds.forEach((function(e){t.elementsById[e]&&t.elementsById[e].unSelectItem()}))},t.itemDescriptiveName=function(t){var n;switch(t.props.type){case 0:n="".concat((0,e.t)("Static graph")," - ").concat(t.props.imageSrc);break;case 1:n=(0,e.t)("Module graph");break;case 19:n=(0,e.t)("Clock");break;case 18:n=(0,e.t)("Bars graph");break;case 14:n=(0,e.t)("Event history graph");break;case 3:n=(0,e.t)("Percentile bar");break;case 15:n=(0,e.t)("Circular progress bar");break;case 16:n=(0,e.t)("Circular progress bar (interior)");break;case 2:n=(0,e.t)("Simple Value");break;case 4:n=(0,e.t)("Label");break;case 11:n=(0,e.t)("Group");break;case 20:n=(0,e.t)("Color cloud");break;case 5:n="".concat((0,e.t)("Icon")," - ").concat(t.props.imageSrc);break;case 22:n=(0,e.t)("Odometer");break;case 23:n=(0,e.t)("BasicChart");break;default:n=(0,e.t)("Item")}var r=t.props;return null!=r.agentAlias&&null!=r.moduleName?n+=" (".concat((0,e.fk)(r.agentAlias,18)," - ").concat((0,e.fk)(r.moduleName,25),")"):null!=r.agentAlias&&(n+=" (".concat((0,e.fk)(r.agentAlias,25),")")),n},t.items=((ae={})[0]=l,ae[1]=Qt.Z,ae[2]=mt,ae[6]=mt,ae[7]=mt,ae[8]=mt,ae[3]=Jt,ae[9]=Jt,ae[15]=Jt,ae[16]=Jt,ae[4]=at,ae[5]=h,ae[10]=re,ae[11]=U,ae[12]=nt,ae[13]=L,ae[14]=ft.Z,ae[17]=Yt.Z,ae[18]=Xt.Z,ae[19]=X,ae[20]=k,ae[21]=W,ae[22]=ce,ae[23]=pe.Z,ae),t}(),me=function(){function t(t){this.cancellable={cancel:function(){}},this._status="waiting",this.statusChangeEventManager=new P.Z,this.disposables=[],this.taskInitiator=t}return Object.defineProperty(t.prototype,"status",{get:function(){return this._status},set:function(t){this._status=t,this.statusChangeEventManager.emit(t)},enumerable:!1,configurable:!0}),t.prototype.init=function(){var t=this;this.cancellable=this.taskInitiator((function(){t.status="finished"})),this.status="started"},t.prototype.cancel=function(){this.cancellable.cancel(),this.status="cancelled"},t.prototype.onStatusChange=function(t){var e=this.statusChangeEventManager.on(t);return this.disposables.push(e),e},t}(),fe=function(){function t(){this.tasks={}}return t.prototype.add=function(t,e,n){void 0===n&&(n=0),this.tasks[t]&&"started"===this.tasks[t].status&&this.tasks[t].cancel();var r=n>0?function(t,e){return new me((function(){var n=null;return t.onStatusChange((function(r){"finished"===r&&(n=window.setTimeout((function(){t.init()}),e))})),t.init(),{cancel:function(){n&&clearTimeout(n),t.cancel()}}}))}(new me(e),n):new me(e);return this.tasks[t]=r,this.tasks[t]},t.prototype.init=function(t){!this.tasks[t]||"waiting"!==this.tasks[t].status&&"cancelled"!==this.tasks[t].status&&"finished"!==this.tasks[t].status||this.tasks[t].init()},t.prototype.cancel=function(t){this.tasks[t]&&"started"===this.tasks[t].status&&this.tasks[t].cancel()},t}();window.VisualConsole=he,window.VisualConsole.Form=m,window.AsyncTaskManager=fe}()})();
 //# sourceMappingURL=vc.main.min.js.map
\ No newline at end of file
diff --git a/pandora_console/include/visual-console-client/vc.main.min.js.map b/pandora_console/include/visual-console-client/vc.main.min.js.map
index 6638395037..8d19ec7a21 100644
--- a/pandora_console/include/visual-console-client/vc.main.min.js.map
+++ b/pandora_console/include/visual-console-client/vc.main.min.js.map
@@ -1 +1 @@
-{"version":3,"file":"vc.main.min.js","mappings":"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","sources":["webpack://pandora-fms-visual-console/./src/Form.ts","webpack://pandora-fms-visual-console/./src/Item.ts","webpack://pandora-fms-visual-console/./src/items/BarsGraph.ts","webpack://pandora-fms-visual-console/./src/items/BasicChart.ts","webpack://pandora-fms-visual-console/./src/items/DonutGraph.ts","webpack://pandora-fms-visual-console/./src/items/EventsHistory.ts","webpack://pandora-fms-visual-console/./src/items/ModuleGraph.ts","webpack://pandora-fms-visual-console/./src/lib/FontAwesomeIcon.ts","webpack://pandora-fms-visual-console/./src/lib/TypedEvent.ts","webpack://pandora-fms-visual-console/./src/lib/index.ts","webpack://pandora-fms-visual-console/webpack/bootstrap","webpack://pandora-fms-visual-console/webpack/runtime/define property getters","webpack://pandora-fms-visual-console/webpack/runtime/hasOwnProperty shorthand","webpack://pandora-fms-visual-console/webpack/runtime/make namespace object","webpack://pandora-fms-visual-console/./src/items/StaticGraph.ts","webpack://pandora-fms-visual-console/./src/items/Icon.ts","webpack://pandora-fms-visual-console/./node_modules/@fortawesome/free-solid-svg-icons/index.es.js","webpack://pandora-fms-visual-console/./src/items/ColorCloud.ts","webpack://pandora-fms-visual-console/./src/items/Line.ts","webpack://pandora-fms-visual-console/./src/items/NetworkLink.ts","webpack://pandora-fms-visual-console/./src/items/Group.ts","webpack://pandora-fms-visual-console/./src/items/Clock/index.ts","webpack://pandora-fms-visual-console/./src/items/Box.ts","webpack://pandora-fms-visual-console/./src/items/Label.ts","webpack://pandora-fms-visual-console/./src/items/SimpleValue.ts","webpack://pandora-fms-visual-console/./node_modules/d3-path/src/path.js","webpack://pandora-fms-visual-console/./node_modules/d3-shape/src/constant.js","webpack://pandora-fms-visual-console/./node_modules/d3-shape/src/math.js","webpack://pandora-fms-visual-console/./node_modules/d3-shape/src/arc.js","webpack://pandora-fms-visual-console/./src/items/Percentile.ts","webpack://pandora-fms-visual-console/./src/items/Service.ts","webpack://pandora-fms-visual-console/./src/items/Odometer.ts","webpack://pandora-fms-visual-console/./src/VisualConsole.ts","webpack://pandora-fms-visual-console/./src/lib/AsyncTaskManager.ts","webpack://pandora-fms-visual-console/./src/index.ts"],"sourcesContent":["import TypedEvent, { Listener, Disposable } from \"./lib/TypedEvent\";\nimport { AnyObject, UnknownObject } from \"./lib/types\";\nimport { t } from \"./lib\";\n\ninterface InputGroupDataRequestedEvent {\n  identifier: string;\n  params: UnknownObject;\n  done: (error: Error | null, data?: unknown) => void;\n}\n\n// TODO: Document\nexport abstract class InputGroup<Data extends {} = {}> {\n  private _name: string = \"\";\n  private _element?: HTMLElement;\n  public readonly initialData: Data;\n  protected currentData: Partial<Data> = {};\n  // Event manager for data requests.\n  private readonly dataRequestedEventManager = new TypedEvent<\n    InputGroupDataRequestedEvent\n  >();\n\n  public constructor(name: string, initialData: Data) {\n    this.name = name;\n    this.initialData = initialData;\n  }\n\n  public set name(name: string) {\n    if (name.length === 0) throw new RangeError(\"empty name\");\n    this._name = name;\n  }\n\n  public get name(): string {\n    return this._name;\n  }\n\n  public get data(): Partial<Data> {\n    return { ...this.currentData };\n  }\n\n  public get element(): HTMLElement {\n    if (this._element == null) {\n      const element = document.createElement(\"div\");\n      element.className = `input-group input-group-${this.name}`;\n\n      const content = this.createContent();\n\n      if (content instanceof Array) {\n        content.forEach(element.appendChild);\n      } else {\n        element.appendChild(content);\n      }\n\n      this._element = element;\n    }\n\n    return this._element;\n  }\n\n  public reset(): void {\n    this.currentData = {};\n  }\n\n  protected updateData(data: Partial<Data>): void {\n    this.currentData = {\n      ...this.currentData,\n      ...data\n    };\n    // TODO: Update item.\n  }\n\n  protected requestData(\n    identifier: string,\n    params: UnknownObject,\n    done: (error: Error | null, data?: unknown) => void\n  ): void {\n    this.dataRequestedEventManager.emit({ identifier, params, done });\n  }\n\n  public onDataRequested(\n    listener: Listener<InputGroupDataRequestedEvent>\n  ): Disposable {\n    return this.dataRequestedEventManager.on(listener);\n  }\n\n  protected abstract createContent(): HTMLElement | HTMLElement[];\n\n  // public abstract get isValid(): boolean;\n}\n\nexport interface SubmitFormEvent {\n  nativeEvent: Event;\n  data: AnyObject;\n}\n\n// TODO: Document\nexport class FormContainer {\n  public readonly title: string;\n  private inputGroupsByName: { [name: string]: InputGroup } = {};\n  private enabledInputGroupNames: string[] = [];\n  // Event manager for submit events.\n  private readonly submitEventManager = new TypedEvent<SubmitFormEvent>();\n  // Event manager for item data requests.\n  private readonly itemDataRequestedEventManager = new TypedEvent<\n    InputGroupDataRequestedEvent\n  >();\n  private handleItemDataRequested = this.itemDataRequestedEventManager.emit;\n\n  public constructor(\n    title: string,\n    inputGroups: InputGroup[] = [],\n    enabledInputGroups: string[] = []\n  ) {\n    this.title = title;\n\n    if (inputGroups.length > 0) {\n      this.inputGroupsByName = inputGroups.reduce((prevVal, inputGroup) => {\n        // Add event handlers.\n        inputGroup.onDataRequested(this.handleItemDataRequested);\n        prevVal[inputGroup.name] = inputGroup;\n        return prevVal;\n      }, this.inputGroupsByName);\n    }\n\n    if (enabledInputGroups.length > 0) {\n      this.enabledInputGroupNames = [\n        ...this.enabledInputGroupNames,\n        ...enabledInputGroups.filter(\n          name => this.inputGroupsByName[name] != null\n        )\n      ];\n    }\n  }\n\n  public getInputGroup(inputGroupName: string): InputGroup | null {\n    return this.inputGroupsByName[inputGroupName] || null;\n  }\n\n  public addInputGroup(\n    inputGroup: InputGroup,\n    index: number | null = null\n  ): FormContainer {\n    // Add event handlers.\n    inputGroup.onDataRequested(this.handleItemDataRequested);\n    this.inputGroupsByName[inputGroup.name] = inputGroup;\n\n    // Remove the current stored name if exist.\n    this.enabledInputGroupNames = this.enabledInputGroupNames.filter(\n      name => name !== inputGroup.name\n    );\n\n    if (index !== null) {\n      if (index <= 0) {\n        this.enabledInputGroupNames = [\n          inputGroup.name,\n          ...this.enabledInputGroupNames\n        ];\n      } else if (index >= this.enabledInputGroupNames.length) {\n        this.enabledInputGroupNames = [\n          ...this.enabledInputGroupNames,\n          inputGroup.name\n        ];\n      } else {\n        this.enabledInputGroupNames = [\n          // part of the array before the specified index\n          ...this.enabledInputGroupNames.slice(0, index),\n          // inserted item\n          inputGroup.name,\n          // part of the array after the specified index\n          ...this.enabledInputGroupNames.slice(index)\n        ];\n      }\n    } else {\n      this.enabledInputGroupNames = [\n        ...this.enabledInputGroupNames,\n        inputGroup.name\n      ];\n    }\n\n    return this;\n  }\n\n  public removeInputGroup(inputGroupName: string): FormContainer {\n    delete this.inputGroupsByName[inputGroupName];\n    // Remove the current stored name.\n    this.enabledInputGroupNames = this.enabledInputGroupNames.filter(\n      name => name !== inputGroupName\n    );\n\n    return this;\n  }\n\n  public getFormElement(\n    type: \"creation\" | \"update\" = \"update\"\n  ): HTMLFormElement {\n    const form = document.createElement(\"form\");\n    form.id = \"visual-console-item-edition\";\n    form.className = \"visual-console-item-edition\";\n    form.addEventListener(\"submit\", e => {\n      e.preventDefault();\n      this.submitEventManager.emit({\n        nativeEvent: e,\n        data: this.enabledInputGroupNames.reduce((data, name) => {\n          if (this.inputGroupsByName[name]) {\n            data = {\n              ...data,\n              ...this.inputGroupsByName[name].data\n            };\n          }\n          return data;\n        }, {})\n      });\n    });\n\n    const formContent = document.createElement(\"div\");\n    formContent.className = \"input-groups\";\n\n    this.enabledInputGroupNames.forEach(name => {\n      if (this.inputGroupsByName[name]) {\n        formContent.appendChild(this.inputGroupsByName[name].element);\n      }\n    });\n\n    form.appendChild(formContent);\n\n    return form;\n  }\n\n  public reset(): void {\n    this.enabledInputGroupNames.forEach(name => {\n      if (this.inputGroupsByName[name]) {\n        this.inputGroupsByName[name].reset();\n      }\n    });\n  }\n\n  // public get isValid(): boolean {\n  //   for (let i = 0; i < this.enabledInputGroupNames.length; i++) {\n  //     const inputGroup = this.inputGroupsByName[this.enabledInputGroupNames[i]];\n  //     if (inputGroup && !inputGroup.isValid) return false;\n  //   }\n\n  //   return true;\n  // }\n\n  public onSubmit(listener: Listener<SubmitFormEvent>): Disposable {\n    return this.submitEventManager.on(listener);\n  }\n\n  public onInputGroupDataRequested(\n    listener: Listener<InputGroupDataRequestedEvent>\n  ): Disposable {\n    return this.itemDataRequestedEventManager.on(listener);\n  }\n}\n","import {\n  Position,\n  Size,\n  AnyObject,\n  WithModuleProps,\n  ItemMeta,\n  LinkedVisualConsoleProps,\n  WithAgentProps\n} from \"./lib/types\";\nimport {\n  sizePropsDecoder,\n  positionPropsDecoder,\n  parseIntOr,\n  parseBoolean,\n  notEmptyStringOr,\n  replaceMacros,\n  humanDate,\n  humanTime,\n  addMovementListener,\n  debounce,\n  addResizementListener,\n  t,\n  parseFloatOr\n} from \"./lib\";\nimport TypedEvent, { Listener, Disposable } from \"./lib/TypedEvent\";\nimport { FormContainer, InputGroup } from \"./Form\";\n\n// Enum: https://www.typescriptlang.org/docs/handbook/enums.html.\nexport const enum ItemType {\n  STATIC_GRAPH = 0,\n  MODULE_GRAPH = 1,\n  SIMPLE_VALUE = 2,\n  PERCENTILE_BAR = 3,\n  LABEL = 4,\n  ICON = 5,\n  SIMPLE_VALUE_MAX = 6,\n  SIMPLE_VALUE_MIN = 7,\n  SIMPLE_VALUE_AVG = 8,\n  PERCENTILE_BUBBLE = 9,\n  SERVICE = 10,\n  GROUP_ITEM = 11,\n  BOX_ITEM = 12,\n  LINE_ITEM = 13,\n  AUTO_SLA_GRAPH = 14,\n  CIRCULAR_PROGRESS_BAR = 15,\n  CIRCULAR_INTERIOR_PROGRESS_BAR = 16,\n  DONUT_GRAPH = 17,\n  BARS_GRAPH = 18,\n  CLOCK = 19,\n  COLOR_CLOUD = 20,\n  NETWORK_LINK = 21,\n  ODOMETER = 22,\n  BASIC_CHART = 23\n}\n\n// Base item properties. This interface should be extended by the item implementations.\nexport interface ItemProps extends Position, Size {\n  readonly id: number;\n  readonly type: ItemType;\n  label: string | null;\n  labelPosition: \"up\" | \"right\" | \"down\" | \"left\";\n  isLinkEnabled: boolean;\n  link: string | null;\n  isOnTop: boolean;\n  parentId: number | null;\n  aclGroupId: number | null;\n  cacheExpiration: number | null;\n  colorStatus: string;\n  cellId: string | null;\n  alertOutline: boolean;\n  ratio: number | null;\n}\n\nexport interface ItemClickEvent {\n  item: VisualConsoleItem<ItemProps>;\n  nativeEvent: Event;\n}\n\n// FIXME: Fix type compatibility.\nexport interface ItemRemoveEvent {\n  // data: Props;\n  item: VisualConsoleItem<ItemProps>;\n}\n\nexport interface ItemMovedEvent {\n  item: VisualConsoleItem<ItemProps>;\n  prevPosition: Position;\n  newPosition: Position;\n}\n\nexport interface ItemResizedEvent {\n  item: VisualConsoleItem<ItemProps>;\n  prevSize: Size;\n  newSize: Size;\n}\n\nexport interface ItemSelectionChangedEvent {\n  selected: boolean;\n}\n\n/**\n * Extract a valid enum value from a raw label position value.\n * @param labelPosition Raw value.\n */\nconst parseLabelPosition = (\n  labelPosition: unknown\n): ItemProps[\"labelPosition\"] => {\n  switch (labelPosition) {\n    case \"up\":\n    case \"right\":\n    case \"down\":\n    case \"left\":\n      return labelPosition;\n    default:\n      return \"down\";\n  }\n};\n\n/**\n * Build a valid typed object from a raw object.\n * This will allow us to ensure the type safety.\n *\n * @param data Raw object.\n * @return An object representing the item props.\n * @throws Will throw a TypeError if some property\n * is missing from the raw object or have an invalid type.\n */\nexport function itemBasePropsDecoder(data: AnyObject): ItemProps | never {\n  if (data.id == null || isNaN(parseInt(data.id))) {\n    throw new TypeError(\"invalid id.\");\n  }\n  if (data.type == null || isNaN(parseInt(data.type))) {\n    throw new TypeError(\"invalid type.\");\n  }\n\n  return {\n    id: parseInt(data.id),\n    type: parseInt(data.type),\n    label: notEmptyStringOr(data.label, null),\n    labelPosition: parseLabelPosition(data.labelPosition),\n    isLinkEnabled: parseBoolean(data.isLinkEnabled),\n    link: notEmptyStringOr(data.link, null),\n    isOnTop: parseBoolean(data.isOnTop),\n    parentId: parseIntOr(data.parentId, null),\n    aclGroupId: parseIntOr(data.aclGroupId, null),\n    cacheExpiration: parseIntOr(data.cacheExpiration, null),\n    colorStatus: notEmptyStringOr(data.colorStatus, \"#CCC\"),\n    cellId: notEmptyStringOr(data.cellId, \"\"),\n    alertOutline: parseBoolean(data.alertOutline),\n    ratio: parseFloatOr(data.ratio, null),\n    ...sizePropsDecoder(data), // Object spread. It will merge the properties of the two objects.\n    ...positionPropsDecoder(data) // Object spread. It will merge the properties of the two objects.\n  };\n}\n\n//TODO: Document\nexport function titleItem(id: number): string {\n  let title = \"\";\n  switch (id) {\n    case ItemType.STATIC_GRAPH:\n      title = t(\"Static image\");\n      break;\n    case ItemType.MODULE_GRAPH:\n      title = t(\"Module graph\");\n      break;\n    case ItemType.SIMPLE_VALUE:\n      title = t(\"Simple value\");\n      break;\n    case ItemType.PERCENTILE_BAR:\n      title = t(\"Percentile item\");\n      break;\n    case ItemType.LABEL:\n      title = t(\"Label\");\n      break;\n    case ItemType.ICON:\n      title = t(\"Icon\");\n      break;\n    case ItemType.SIMPLE_VALUE_MAX:\n      title = t(\"Simple value\");\n      break;\n    case ItemType.SIMPLE_VALUE_MIN:\n      title = t(\"Simple value\");\n      break;\n    case ItemType.SIMPLE_VALUE_AVG:\n      title = t(\"Simple value\");\n      break;\n    case ItemType.PERCENTILE_BUBBLE:\n      title = t(\"Percentile item\");\n      break;\n    case ItemType.SERVICE:\n      title = t(\"Service\");\n      break;\n    case ItemType.GROUP_ITEM:\n      title = t(\"Group\");\n      break;\n    case ItemType.BOX_ITEM:\n      title = t(\"Box\");\n      break;\n    case ItemType.LINE_ITEM:\n      title = t(\"Line\");\n      break;\n    case ItemType.AUTO_SLA_GRAPH:\n      title = t(\"Event history graph\");\n      break;\n    case ItemType.CIRCULAR_PROGRESS_BAR:\n      title = t(\"Percentile item\");\n      break;\n    case ItemType.CIRCULAR_INTERIOR_PROGRESS_BAR:\n      title = t(\"Percentile item\");\n      break;\n    case ItemType.DONUT_GRAPH:\n      title = t(\"Serialized pie graph\");\n      break;\n    case ItemType.BARS_GRAPH:\n      title = t(\"Bars graph\");\n      break;\n    case ItemType.CLOCK:\n      title = t(\"Clock\");\n      break;\n    case ItemType.COLOR_CLOUD:\n      title = t(\"Color cloud\");\n      break;\n    case ItemType.NETWORK_LINK:\n      title = t(\"Network link\");\n      break;\n    case ItemType.ODOMETER:\n      title = t(\"Odometer\");\n      break;\n    case ItemType.BASIC_CHART:\n      title = t(\"Basic chart\");\n      break;\n    default:\n      title = t(\"Item\");\n      break;\n  }\n\n  return title;\n}\n\n/**\n * Base class of the visual console items. Should be extended to use its capabilities.\n */\nabstract class VisualConsoleItem<Props extends ItemProps> {\n  // Properties of the item.\n  public itemProps: Props;\n  // Metadata of the item.\n  private _metadata: ItemMeta;\n  // Reference to the DOM element which will contain the item.\n  public elementRef: HTMLElement = document.createElement(\"div\");\n  public labelElementRef: HTMLElement = document.createElement(\"div\");\n  // Reference to the DOM element which will contain the view of the item which extends this class.\n  protected childElementRef: HTMLElement = document.createElement(\"div\");\n  // Event manager for click events.\n  private readonly clickEventManager = new TypedEvent<ItemClickEvent>();\n  // Event manager for double click events.\n  private readonly dblClickEventManager = new TypedEvent<ItemClickEvent>();\n  // Event manager for moved events.\n  private readonly movedEventManager = new TypedEvent<ItemMovedEvent>();\n  // Event manager for stopped movement events.\n  private readonly movementFinishedEventManager = new TypedEvent<\n    ItemMovedEvent\n  >();\n  // Event manager for resized events.\n  private readonly resizedEventManager = new TypedEvent<ItemResizedEvent>();\n  // Event manager for resize finished events.\n  private readonly resizeFinishedEventManager = new TypedEvent<\n    ItemResizedEvent\n  >();\n  // Event manager for remove events.\n  private readonly removeEventManager = new TypedEvent<ItemRemoveEvent>();\n  // Event manager for selection change events.\n  private readonly selectionChangedEventManager = new TypedEvent<\n    ItemSelectionChangedEvent\n  >();\n  // List of references to clean the event listeners.\n  private readonly disposables: Disposable[] = [];\n\n  // This function will only run the 2nd arg function after the time\n  // of the first arg have passed after its last execution.\n  public debouncedMovementSave = debounce(\n    500, // ms.\n    (x: Position[\"x\"], y: Position[\"y\"]) => {\n      // Update the metadata information.\n      // Don't use the .meta property cause we don't need DOM updates.\n      this._metadata.isBeingMoved = false;\n\n      const prevPosition = {\n        x: this.props.x,\n        y: this.props.y\n      };\n      const newPosition = {\n        x: x,\n        y: y\n      };\n\n      if (!this.positionChanged(prevPosition, newPosition)) return;\n\n      // Save the new position to the props.\n      this.move(x, y);\n      // Emit the movement event.\n      this.movementFinishedEventManager.emit({\n        item: this,\n        prevPosition: prevPosition,\n        newPosition: newPosition\n      });\n    }\n  );\n  // This property will store the function\n  // to clean the movement listener.\n  private removeMovement: Function | null = null;\n\n  /**\n   * Start the movement funtionality.\n   * @param element Element to move inside its container.\n   */\n  private initMovementListener(element: HTMLElement): void {\n    // Avoid line movement as 'block' force using circles.\n    if (\n      this.props.type == ItemType.LINE_ITEM ||\n      this.props.type == ItemType.NETWORK_LINK\n    ) {\n      return;\n    }\n\n    this.removeMovement = addMovementListener(\n      element,\n      (x: Position[\"x\"], y: Position[\"y\"]) => {\n        const prevPosition = {\n          x: this.props.x,\n          y: this.props.y\n        };\n        const newPosition = { x, y };\n\n        this.meta = {\n          ...this.meta,\n          isSelected: true\n        };\n\n        if (!this.positionChanged(prevPosition, newPosition)) return;\n\n        // Update the metadata information.\n        // Don't use the .meta property cause we don't need DOM updates.\n        this._metadata.isBeingMoved = true;\n        // Move the DOM element.\n        this.moveElement(x, y);\n        // Emit the movement event.\n        this.movedEventManager.emit({\n          item: this,\n          prevPosition: prevPosition,\n          newPosition: newPosition\n        });\n        // Run the save function.\n        this.debouncedMovementSave(x, y);\n      }\n    );\n  }\n  /**\n   * Stop the movement fun\n   */\n  private stopMovementListener(): void {\n    if (this.removeMovement) {\n      this.removeMovement();\n      this.removeMovement = null;\n    }\n  }\n\n  // This function will only run the 2nd arg function after the time\n  // of the first arg have passed after its last execution.\n  public debouncedResizementSave = debounce(\n    500, // ms.\n    (width: Size[\"width\"], height: Size[\"height\"]) => {\n      // Update the metadata information.\n      // Don't use the .meta property cause we don't need DOM updates.\n      this._metadata.isBeingResized = false;\n\n      const prevSize = {\n        width: this.props.width,\n        height: this.props.height\n      };\n      const newSize = { width, height };\n\n      if (!this.sizeChanged(prevSize, newSize)) return;\n\n      // Save the new position to the props.\n      this.resize(width, height);\n\n      // Emit the resize finished event.\n      this.resizeFinishedEventManager.emit({\n        item: this,\n        prevSize: prevSize,\n        newSize: newSize\n      });\n    }\n  );\n  // This property will store the function\n  // to clean the resizement listener.\n  private removeResizement: Function | null = null;\n\n  /**\n   * Start the resizement funtionality.\n   * @param element Element to move inside its container.\n   */\n  protected initResizementListener(element: HTMLElement): void {\n    if (\n      this.props.type == ItemType.LINE_ITEM ||\n      this.props.type == ItemType.NETWORK_LINK\n    ) {\n      return;\n    }\n    this.removeResizement = addResizementListener(\n      element,\n      (width: Size[\"width\"], height: Size[\"height\"]) => {\n        // Update the metadata information.\n        // Don't use the .meta property cause we don't need DOM updates.\n        this._metadata.isBeingResized = true;\n\n        // The label it's outside the item's size, so we need\n        // to get rid of its size to get the real size of the\n        // item's content.\n        if (this.props.label && this.props.label.length > 0) {\n          const {\n            width: labelWidth,\n            height: labelHeight\n          } = this.labelElementRef.getBoundingClientRect();\n\n          switch (this.props.labelPosition) {\n            case \"up\":\n            case \"down\":\n              height -= labelHeight;\n              break;\n            case \"left\":\n            case \"right\":\n              width -= labelWidth;\n              break;\n          }\n        }\n\n        const prevSize = {\n          width: this.props.width,\n          height: this.props.height\n        };\n        const newSize = { width, height };\n\n        if (!this.sizeChanged(prevSize, newSize)) return;\n\n        // Move the DOM element.\n        this.resizeElement(width, height);\n        // Emit the resizement event.\n        this.resizedEventManager.emit({\n          item: this,\n          prevSize,\n          newSize\n        });\n        // Run the save function.\n        this.debouncedResizementSave(width, height);\n      }\n    );\n  }\n  /**\n   * Stop the resizement functionality.\n   */\n  private stopResizementListener(): void {\n    if (this.removeResizement) {\n      this.removeResizement();\n      this.removeResizement = null;\n    }\n  }\n\n  /**\n   * To create a new element which will be inside the item box.\n   * @return Item.\n   */\n  protected abstract createDomElement(): HTMLElement;\n\n  public constructor(\n    props: Props,\n    metadata: ItemMeta,\n    deferInit: boolean = false\n  ) {\n    this.itemProps = props;\n    this._metadata = metadata;\n\n    if (!deferInit) this.init();\n  }\n\n  /**\n   * To create and append the DOM elements.\n   */\n  protected init(): void {\n    /*\n     * Get a HTMLElement which represents the container box\n     * of the Visual Console item. This element will manage\n     * all the common things like click events, show a border\n     * when hovered, etc.\n     */\n    this.elementRef = this.createContainerDomElement();\n    this.labelElementRef = this.createLabelDomElement();\n\n    /*\n     * Get a HTMLElement which represents the custom view\n     * of the Visual Console item. This element will be\n     * different depending on the item implementation.\n     */\n    this.childElementRef = this.createDomElement();\n\n    // Insert the elements into the container.\n    this.elementRef.appendChild(this.childElementRef);\n    this.elementRef.appendChild(this.labelElementRef);\n\n    // Resize element.\n    this.resizeElement(this.itemProps.width, this.itemProps.height);\n\n    // Set label position.\n    this.changeLabelPosition(this.itemProps.labelPosition);\n  }\n\n  /**\n   * To create a new box for the visual console item.\n   * @return Item box.\n   */\n  private createContainerDomElement(): HTMLElement {\n    let box;\n    if (this.props.isLinkEnabled) {\n      box = document.createElement(\"a\") as HTMLAnchorElement;\n\n      if (this.props.link) {\n        box.href = this.props.link;\n      } else {\n        box.className = \"textDecorationNone\";\n      }\n    } else {\n      box = document.createElement(\"div\") as HTMLDivElement;\n      box.className = \"textDecorationNone\";\n    }\n\n    box.classList.add(\"visual-console-item\");\n    if (this.props.isOnTop) {\n      box.classList.add(\"is-on-top\");\n    }\n\n    box.style.left = `${this.props.x}px`;\n    box.style.top = `${this.props.y}px`;\n\n    if (this.props.alertOutline) {\n      box.classList.add(\"is-alert-triggered\");\n    }\n\n    // Init the click listeners.\n    box.addEventListener(\"dblclick\", e => {\n      if (!this.meta.isBeingMoved && !this.meta.isBeingResized) {\n        this.unSelectItem();\n        this.selectItem();\n\n        this.dblClickEventManager.emit({\n          item: this,\n          nativeEvent: e\n        });\n      }\n    });\n    box.addEventListener(\"click\", e => {\n      if (this.meta.editMode) {\n        e.preventDefault();\n        e.stopPropagation();\n      } else {\n        // Add loading click item.\n        if (this.itemProps.isLinkEnabled && this.itemProps.link != null) {\n          const divParent = document.createElement(\"div\");\n          divParent.className = \"div-visual-console-spinner\";\n          const divSpinner = document.createElement(\"div\");\n          divSpinner.className = \"visual-console-spinner\";\n          divParent.appendChild(divSpinner);\n          let path = e.composedPath();\n          let containerId = \"visual-console-container\";\n          for (let index = 0; index < path.length; index++) {\n            const element = path[index] as HTMLInputElement;\n            if (\n              element.id != undefined &&\n              element.id != null &&\n              element.id != \"\"\n            ) {\n              if (element.id.includes(containerId) === true) {\n                containerId = element.id;\n                break;\n              }\n            }\n          }\n\n          const containerVC = document.getElementById(containerId);\n          if (containerVC != null) {\n            containerVC.classList.add(\"is-updating\");\n            containerVC.appendChild(divParent);\n          }\n        }\n      }\n\n      if (!this.meta.isBeingMoved && !this.meta.isBeingResized) {\n        this.clickEventManager.emit({\n          item: this,\n          nativeEvent: e\n        });\n      }\n    });\n\n    // Metadata state.\n    if (this.meta.maintenanceMode) {\n      box.classList.add(\"is-maintenance\");\n    }\n    if (this.meta.editMode) {\n      box.classList.add(\"is-editing\");\n    }\n    if (this.meta.isFetching) {\n      box.classList.add(\"is-fetching\");\n    }\n    if (this.meta.isUpdating) {\n      box.classList.add(\"is-updating\");\n    }\n    if (this.meta.isSelected) {\n      box.classList.add(\"is-selected\");\n    }\n\n    return box;\n  }\n\n  /**\n   * To create a new label for the visual console item.\n   * @return Item label.\n   */\n  protected createLabelDomElement(): HTMLElement {\n    const element = document.createElement(\"div\");\n    element.className = \"visual-console-item-label\";\n    // Add the label if it exists.\n    const label = this.getLabelWithMacrosReplaced();\n    if (label.length > 0) {\n      // Ugly table we need to use to replicate the legacy style.\n      const table = document.createElement(\"table\");\n      const row = document.createElement(\"tr\");\n      const emptyRow1 = document.createElement(\"tr\");\n      const emptyRow2 = document.createElement(\"tr\");\n      const cell = document.createElement(\"td\");\n\n      cell.innerHTML = label;\n      row.appendChild(cell);\n      table.appendChild(emptyRow1);\n      table.appendChild(row);\n      table.appendChild(emptyRow2);\n      table.style.textAlign = \"center\";\n      element.appendChild(table);\n    }\n\n    return element;\n  }\n\n  /**\n   * Return the label stored into the props with some macros replaced.\n   */\n  protected getLabelWithMacrosReplaced(): string {\n    // We assert that the props may have some needed properties.\n    const props = this.props as Partial<WithModuleProps>;\n\n    return replaceMacros(\n      [\n        {\n          macro: \"_date_\",\n          value: humanDate(new Date())\n        },\n        {\n          macro: \"_time_\",\n          value: humanTime(new Date())\n        },\n        {\n          macro: \"_agent_\",\n          value: props.agentAlias != null ? props.agentAlias : \"\"\n        },\n        {\n          macro: \"_agentdescription_\",\n          value: props.agentDescription != null ? props.agentDescription : \"\"\n        },\n        {\n          macro: \"_address_\",\n          value: props.agentAddress != null ? props.agentAddress : \"\"\n        },\n        {\n          macro: \"_module_\",\n          value: props.moduleName != null ? props.moduleName : \"\"\n        },\n        {\n          macro: \"_moduledescription_\",\n          value: props.moduleDescription != null ? props.moduleDescription : \"\"\n        }\n      ],\n      this.props.label || \"\"\n    );\n  }\n\n  /**\n   * To update the content element.\n   * @return Item.\n   */\n  protected updateDomElement(element: HTMLElement): void {\n    element.innerHTML = this.createDomElement().innerHTML;\n  }\n\n  /**\n   * Public accessor of the `props` property.\n   * @return Properties.\n   */\n  public get props(): Props {\n    return { ...this.itemProps }; // Return a copy.\n  }\n\n  /**\n   * Public setter of the `props` property.\n   * If the new props are different enough than the\n   * stored props, a render would be fired.\n   * @param newProps\n   */\n  public set props(newProps: Props) {\n    this.setProps(newProps);\n  }\n\n  /**\n   * Clasic and protected version of the setter of the `props` property.\n   * Useful to override it from children classes.\n   * @param newProps\n   */\n  protected setProps(newProps: Props) {\n    const prevProps = this.props;\n    // Update the internal props.\n    this.itemProps = newProps;\n\n    // From this point, things which rely on this.props can access to the changes.\n\n    // Check if we should re-render.\n    if (this.shouldBeUpdated(prevProps, newProps))\n      this.render(prevProps, this._metadata);\n  }\n\n  /**\n   * Public accessor of the `meta` property.\n   * @return Properties.\n   */\n  public get meta(): ItemMeta {\n    return { ...this._metadata }; // Return a copy.\n  }\n\n  /**\n   * Public setter of the `meta` property.\n   * If the new meta are different enough than the\n   * stored meta, a render would be fired.\n   * @param newProps\n   */\n  public set meta(newMetadata: ItemMeta) {\n    this.setMeta(newMetadata);\n  }\n\n  /**\n   * Classic version of the setter of the `meta` property.\n   * Useful to override it from children classes.\n   * @param newProps\n   */\n  public setMeta(newMetadata: Partial<ItemMeta>): void {\n    const prevMetadata = this._metadata;\n    // Update the internal meta.\n    this._metadata = {\n      ...prevMetadata,\n      ...newMetadata\n    };\n\n    if (\n      typeof newMetadata.isSelected !== \"undefined\" &&\n      prevMetadata.isSelected !== newMetadata.isSelected\n    ) {\n      this.selectionChangedEventManager.emit({\n        selected: newMetadata.isSelected\n      });\n    }\n\n    // From this point, things which rely on this.props can access to the changes.\n\n    // Check if we should re-render.\n    // if (this.shouldBeUpdated(prevMetadata, newMetadata))\n    this.render(this.itemProps, prevMetadata);\n  }\n\n  /**\n   * To compare the previous and the new props and returns a boolean value\n   * in case the difference is meaningfull enough to perform DOM changes.\n   *\n   * Here, the only comparision is done by reference.\n   *\n   * Override this function to perform a different comparision depending on the item needs.\n   *\n   * @param prevProps\n   * @param newProps\n   * @return Whether the difference is meaningful enough to perform DOM changes or not.\n   */\n  protected shouldBeUpdated(prevProps: Props, newProps: Props): boolean {\n    return prevProps !== newProps;\n  }\n\n  /**\n   * To recreate or update the HTMLElement which represents the item into the DOM.\n   * @param prevProps If exists it will be used to only perform DOM updates instead of a full replace.\n   */\n  public render(\n    prevProps: Props | null = null,\n    prevMeta: ItemMeta | null = null\n  ): void {\n    if (prevProps) {\n      if (this.props.ratio !== 1 && this.props.type != ItemType.LINE_ITEM) {\n        this.elementRef.style.transform = `scale(${\n          this.props.ratio ? this.props.ratio : 1\n        })`;\n        this.elementRef.style.transformOrigin = \"left top\";\n        this.elementRef.style.minWidth = \"max-content\";\n        this.elementRef.style.minHeight = \"max-content\";\n      }\n\n      if (\n        prevProps.type == ItemType.LINE_ITEM ||\n        prevProps.type == ItemType.NETWORK_LINK\n      ) {\n        this.updateDomElement(this.childElementRef);\n      }\n    }\n    // Move box.\n    if (!prevProps || this.positionChanged(prevProps, this.props)) {\n      this.moveElement(this.props.x, this.props.y);\n      if (\n        prevProps &&\n        prevProps.type != ItemType.LINE_ITEM &&\n        prevProps.type != ItemType.NETWORK_LINK\n      ) {\n        this.updateDomElement(this.childElementRef);\n      }\n    }\n\n    // Resize box.\n    if (!prevProps || this.sizeChanged(prevProps, this.props)) {\n      this.resizeElement(this.props.width, this.props.height);\n      if (\n        prevProps &&\n        prevProps.type != ItemType.LINE_ITEM &&\n        prevProps.type != ItemType.NETWORK_LINK\n      ) {\n        this.updateDomElement(this.childElementRef);\n      }\n    }\n    // Change label.\n    const oldLabelHtml = this.labelElementRef.innerHTML;\n    const newLabelHtml = this.createLabelDomElement().innerHTML;\n    if (oldLabelHtml !== newLabelHtml) {\n      this.labelElementRef.innerHTML = newLabelHtml;\n    }\n\n    // Change label position.\n    if (!prevProps || prevProps.labelPosition !== this.props.labelPosition) {\n      this.changeLabelPosition(this.props.labelPosition);\n    }\n    //Change z-index class is-on-top\n    if (!prevProps || prevProps.isOnTop !== this.props.isOnTop) {\n      if (this.props.isOnTop) {\n        this.elementRef.classList.add(\"is-on-top\");\n      } else {\n        this.elementRef.classList.remove(\"is-on-top\");\n      }\n    }\n\n    // Change link.\n    if (prevProps && prevProps.isLinkEnabled !== this.props.isLinkEnabled) {\n      const container = this.createContainerDomElement();\n      // Copy the attributes.\n      const attrs = this.elementRef.attributes;\n      for (let i = 0; i < attrs.length; i++) {\n        if (attrs[i].nodeName !== \"id\") {\n          let cloneIsNeeded = this.elementRef.getAttributeNode(\n            attrs[i].nodeName\n          );\n          if (cloneIsNeeded !== null) {\n            let cloneAttr = cloneIsNeeded.cloneNode(true) as Attr;\n            container.setAttributeNode(cloneAttr);\n          }\n        }\n      }\n      // Replace the reference.\n      if (this.elementRef.parentNode !== null) {\n        this.elementRef.parentNode.replaceChild(container, this.elementRef);\n      }\n\n      // Changed the reference to the main element. It's ugly, but needed.\n      this.elementRef = container;\n\n      // Insert the elements into the container.\n      this.elementRef.appendChild(this.childElementRef);\n      this.elementRef.appendChild(this.labelElementRef);\n    }\n\n    if (\n      prevProps &&\n      this.props.isLinkEnabled &&\n      prevProps.link !== this.props.link\n    ) {\n      if (this.props.link !== null) {\n        this.elementRef.setAttribute(\"href\", this.props.link);\n      }\n    }\n\n    // Change metadata related things.\n    if (\n      !prevMeta ||\n      prevMeta.editMode !== this.meta.editMode ||\n      prevMeta.maintenanceMode !== this.meta.maintenanceMode\n    ) {\n      if (this.meta.editMode && this.meta.maintenanceMode === false) {\n        this.elementRef.classList.add(\"is-editing\");\n        this.elementRef.classList.remove(\"is-alert-triggered\");\n      } else {\n        this.elementRef.classList.remove(\"is-editing\");\n\n        if (this.props.alertOutline) {\n          this.elementRef.classList.add(\"is-alert-triggered\");\n        }\n      }\n    }\n\n    if (!prevMeta || prevMeta.isFetching !== this.meta.isFetching) {\n      if (this.meta.isFetching) {\n        this.elementRef.classList.add(\"is-fetching\");\n      } else {\n        this.elementRef.classList.remove(\"is-fetching\");\n      }\n    }\n\n    if (!prevMeta || prevMeta.isUpdating !== this.meta.isUpdating) {\n      if (this.meta.isUpdating) {\n        this.elementRef.classList.add(\"is-updating\");\n\n        const divParent = document.createElement(\"div\");\n        divParent.className = \"div-visual-console-spinner\";\n        const divSpinner = document.createElement(\"div\");\n        divSpinner.className = \"visual-console-spinner\";\n        divParent.appendChild(divSpinner);\n        this.elementRef.appendChild(divParent);\n      } else {\n        this.elementRef.classList.remove(\"is-updating\");\n\n        const div = this.elementRef.querySelector(\n          \".div-visual-console-spinner\"\n        );\n        if (div !== null) {\n          const parent = div.parentElement;\n          if (parent !== null) {\n            parent.removeChild(div);\n          }\n        }\n      }\n\n      this.updateDomElement(this.childElementRef);\n    }\n    if (!prevMeta || prevMeta.isSelected !== this.meta.isSelected) {\n      if (this.meta.isSelected) {\n        this.elementRef.classList.add(\"is-selected\");\n        this.elementRef.setAttribute(\"id\", \"item-selected-move\");\n      } else {\n        this.elementRef.classList.remove(\"is-selected\");\n        this.elementRef.removeAttribute(\"id\");\n      }\n    }\n  }\n\n  /**\n   * To remove the event listeners and the elements from the DOM.\n   */\n  public remove(): void {\n    // Call the remove event.\n    this.removeEventManager.emit({ item: this });\n    // Event listeners.\n    this.disposables.forEach(disposable => {\n      try {\n        disposable.dispose();\n      } catch (ignored) {} // eslint-disable-line no-empty\n    });\n    // VisualConsoleItem DOM element.\n    this.elementRef.remove();\n  }\n\n  /**\n   * Compare the previous and the new position and return\n   * a boolean value in case the position changed.\n   * @param prevPosition\n   * @param newPosition\n   * @return Whether the position changed or not.\n   */\n  protected positionChanged(\n    prevPosition: Position,\n    newPosition: Position\n  ): boolean {\n    return prevPosition.x !== newPosition.x || prevPosition.y !== newPosition.y;\n  }\n\n  /**\n   * Move the label around the item content.\n   * @param position Label position.\n   */\n  protected changeLabelPosition(position: Props[\"labelPosition\"]): void {\n    switch (position) {\n      case \"up\":\n        this.elementRef.style.flexDirection = \"column-reverse\";\n        break;\n      case \"left\":\n        this.elementRef.style.flexDirection = \"row-reverse\";\n        break;\n      case \"right\":\n        this.elementRef.style.flexDirection = \"row\";\n        break;\n      case \"down\":\n      default:\n        this.elementRef.style.flexDirection = \"column\";\n        break;\n    }\n\n    // Ugly table to show the label as its legacy counterpart.\n    const tables = this.labelElementRef.getElementsByTagName(\"table\");\n    const table = tables.length > 0 ? tables.item(0) : null;\n    // Change the table size depending on its position.\n    if (table) {\n      switch (this.props.labelPosition) {\n        case \"up\":\n        case \"down\":\n          if (this.props.width > 0) {\n            table.style.width = `${this.props.width}px`;\n            table.style.height = \"\";\n          }\n          break;\n        case \"left\":\n        case \"right\":\n          if (this.props.height > 0) {\n            table.style.width = \"\";\n            table.style.height = `${this.props.height}px`;\n          }\n          break;\n      }\n    }\n  }\n\n  /**\n   * Move the DOM container.\n   * @param x Horizontal axis position.\n   * @param y Vertical axis position.\n   */\n  public moveElement(x: number, y: number): void {\n    this.elementRef.style.left = `${x}px`;\n    this.elementRef.style.top = `${y}px`;\n  }\n\n  /**\n   * Update the position into the properties and move the DOM container.\n   * @param x Horizontal axis position.\n   * @param y Vertical axis position.\n   */\n  public move(x: number, y: number): void {\n    this.moveElement(x, y);\n    this.itemProps = {\n      ...this.props, // Object spread: http://es6-features.org/#SpreadOperator\n      x,\n      y\n    };\n  }\n\n  /**\n   * Compare the previous and the new size and return\n   * a boolean value in case the size changed.\n   * @param prevSize\n   * @param newSize\n   * @return Whether the size changed or not.\n   */\n  protected sizeChanged(prevSize: Size, newSize: Size): boolean {\n    return (\n      prevSize.width !== newSize.width || prevSize.height !== newSize.height\n    );\n  }\n\n  /**\n   * Resize the DOM content container.\n   * @param width\n   * @param height\n   */\n  public resizeElement(width: number, height: number): void {\n    // The most valuable size is the content size.\n    if (\n      this.props.type != ItemType.LINE_ITEM &&\n      this.props.type != ItemType.NETWORK_LINK\n    ) {\n      this.childElementRef.style.width = width > 0 ? `${width}px` : \"\";\n      this.childElementRef.style.height = height > 0 ? `${height}px` : \"\";\n    }\n\n    if (this.props.label && this.props.label.length > 0) {\n      // Ugly table to show the label as its legacy counterpart.\n      const tables = this.labelElementRef.getElementsByTagName(\"table\");\n      const table = tables.length > 0 ? tables.item(0) : null;\n\n      if (table) {\n        switch (this.props.labelPosition) {\n          case \"up\":\n          case \"down\":\n            table.style.width = width > 0 ? `${width}px` : \"\";\n            break;\n          case \"left\":\n          case \"right\":\n            table.style.height = height > 0 ? `${height}px` : \"\";\n            break;\n        }\n      }\n    }\n  }\n\n  /**\n   * Update the size into the properties and resize the DOM container.\n   * @param width\n   * @param height\n   */\n  public resize(width: number, height: number): void {\n    this.resizeElement(width, height);\n    this.itemProps = {\n      ...this.props, // Object spread: http://es6-features.org/#SpreadOperator\n      width,\n      height\n    };\n  }\n\n  /**\n   * To add an event handler to the click of the linked visual console elements.\n   * @param listener Function which is going to be executed when a linked console is clicked.\n   */\n  public onClick(listener: Listener<ItemClickEvent>): Disposable {\n    /*\n     * The '.on' function returns a function which will clean the event\n     * listener when executed. We store all the 'dispose' functions to\n     * call them when the item should be cleared.\n     */\n    const disposable = this.clickEventManager.on(listener);\n    this.disposables.push(disposable);\n\n    return disposable;\n  }\n\n  /**\n   * To add an event handler to the double click of the linked visual console elements.\n   * @param listener Function which is going to be executed when a linked console is double clicked.\n   */\n  public onDblClick(listener: Listener<ItemClickEvent>): Disposable {\n    /*\n     * The '.on' function returns a function which will clean the event\n     * listener when executed. We store all the 'dispose' functions to\n     * call them when the item should be cleared.\n     */\n    const disposable = this.dblClickEventManager.on(listener);\n    this.disposables.push(disposable);\n\n    return disposable;\n  }\n\n  /**\n   * To add an event handler to the movement of visual console elements.\n   * @param listener Function which is going to be executed when a linked console is moved.\n   */\n  public onMoved(listener: Listener<ItemMovedEvent>): Disposable {\n    /*\n     * The '.on' function returns a function which will clean the event\n     * listener when executed. We store all the 'dispose' functions to\n     * call them when the item should be cleared.\n     */\n    const disposable = this.movedEventManager.on(listener);\n    this.disposables.push(disposable);\n\n    return disposable;\n  }\n\n  /**\n   * To add an event handler to the movement stopped of visual console elements.\n   * @param listener Function which is going to be executed when a linked console's movement is finished.\n   */\n  public onMovementFinished(listener: Listener<ItemMovedEvent>): Disposable {\n    /*\n     * The '.on' function returns a function which will clean the event\n     * listener when executed. We store all the 'dispose' functions to\n     * call them when the item should be cleared.\n     */\n    const disposable = this.movementFinishedEventManager.on(listener);\n    this.disposables.push(disposable);\n\n    return disposable;\n  }\n\n  /**\n   * To add an event handler to the resizement of visual console elements.\n   * @param listener Function which is going to be executed when a linked console is moved.\n   */\n  public onResized(listener: Listener<ItemResizedEvent>): Disposable {\n    /*\n     * The '.on' function returns a function which will clean the event\n     * listener when executed. We store all the 'dispose' functions to\n     * call them when the item should be cleared.\n     */\n    const disposable = this.resizedEventManager.on(listener);\n    this.disposables.push(disposable);\n\n    return disposable;\n  }\n\n  /**\n   * To add an event handler to the resizement finish of visual console elements.\n   * @param listener Function which is going to be executed when a linked console is finished resizing.\n   */\n  public onResizeFinished(listener: Listener<ItemResizedEvent>): Disposable {\n    /*\n     * The '.on' function returns a function which will clean the event\n     * listener when executed. We store all the 'dispose' functions to\n     * call them when the item should be cleared.\n     */\n    const disposable = this.resizeFinishedEventManager.on(listener);\n    this.disposables.push(disposable);\n\n    return disposable;\n  }\n\n  /**\n   * To add an event handler to the removal of the item.\n   * @param listener Function which is going to be executed when a item is removed.\n   */\n  public onRemove(listener: Listener<ItemRemoveEvent>): Disposable {\n    /*\n     * The '.on' function returns a function which will clean the event\n     * listener when executed. We store all the 'dispose' functions to\n     * call them when the item should be cleared.\n     */\n    const disposable = this.removeEventManager.on(listener);\n    this.disposables.push(disposable);\n\n    return disposable;\n  }\n\n  /**\n   * To add an event handler to item selection.\n   * @param listener Function which is going to be executed when a item is removed.\n   */\n  public onSelectionChanged(\n    listener: Listener<ItemSelectionChangedEvent>\n  ): Disposable {\n    /*\n     * The '.on' function returns a function which will clean the event\n     * listener when executed. We store all the 'dispose' functions to\n     * call them when the item should be cleared.\n     */\n    const disposable = this.selectionChangedEventManager.on(listener);\n    this.disposables.push(disposable);\n\n    return disposable;\n  }\n\n  /**\n   * Select an item.\n   * @param itemId Item Id.\n   * @param unique To remove the selection of other items or not.\n   */\n  public selectItem(): void {\n    this.meta = {\n      ...this.meta,\n      isSelected: true\n    };\n\n    this.initMovementListener(this.elementRef);\n    if (\n      this.props.type !== ItemType.LINE_ITEM &&\n      this.props.type !== ItemType.NETWORK_LINK\n    ) {\n      this.initResizementListener(this.elementRef);\n    }\n  }\n\n  /**\n   * Unselect an item.\n   * @param itemId Item Id.\n   */\n  public unSelectItem(): void {\n    this.meta = {\n      ...this.meta,\n      isSelected: false\n    };\n\n    this.stopMovementListener();\n    if (this.props.type !== ItemType.LINE_ITEM) {\n      this.stopResizementListener();\n    }\n  }\n\n  // TODO: Document\n  public getFormContainer(): FormContainer {\n    return VisualConsoleItem.getFormContainer(this.props);\n  }\n\n  // TODO: Document\n  public static getFormContainer(props: Partial<ItemProps>): FormContainer {\n    const title: string = props.type ? titleItem(props.type) : t(\"Item\");\n    return new FormContainer(title, [], []);\n  }\n}\n\nexport default VisualConsoleItem;\n","import { AnyObject, WithModuleProps } from \"../lib/types\";\nimport { modulePropsDecoder, decodeBase64, stringIsEmpty, t } from \"../lib\";\nimport Item, { ItemType, ItemProps, itemBasePropsDecoder } from \"../Item\";\n\nexport type BarsGraphProps = {\n  type: ItemType.BARS_GRAPH;\n  html: string;\n  backgroundColor: \"white\" | \"black\" | \"transparent\";\n  typeGraph: \"horizontal\" | \"vertical\";\n  gridColor: string;\n} & ItemProps &\n  WithModuleProps;\n\n/**\n * Extract a valid enum value from a raw unknown value.\n * @param BarsGraphProps Raw value.\n */\nconst parseBarsGraphProps = (\n  backgroundColor: unknown\n): BarsGraphProps[\"backgroundColor\"] => {\n  switch (backgroundColor) {\n    case \"white\":\n    case \"black\":\n    case \"transparent\":\n      return backgroundColor;\n    default:\n      return \"transparent\";\n  }\n};\n\n/**\n * Extract a valid enum value from a raw unknown value.\n * @param typeGraph Raw value.\n */\nconst parseTypeGraph = (typeGraph: unknown): BarsGraphProps[\"typeGraph\"] => {\n  switch (typeGraph) {\n    case \"horizontal\":\n    case \"vertical\":\n      return typeGraph;\n    default:\n      return \"vertical\";\n  }\n};\n\n/**\n * Build a valid typed object from a raw object.\n * This will allow us to ensure the type safety.\n *\n * @param data Raw object.\n * @return An object representing the bars graph props.\n * @throws Will throw a TypeError if some property\n * is missing from the raw object or have an invalid type.\n */\nexport function barsGraphPropsDecoder(data: AnyObject): BarsGraphProps | never {\n  if (stringIsEmpty(data.html) && stringIsEmpty(data.encodedHtml)) {\n    throw new TypeError(\"missing html content.\");\n  }\n\n  return {\n    ...itemBasePropsDecoder(data), // Object spread. It will merge the properties of the two objects.\n    type: ItemType.BARS_GRAPH,\n    html: !stringIsEmpty(data.html)\n      ? data.html\n      : decodeBase64(data.encodedHtml),\n    backgroundColor: parseBarsGraphProps(data.backgroundColor),\n    typeGraph: parseTypeGraph(data.typeGraph),\n    gridColor: stringIsEmpty(data.gridColor) ? \"#000000\" : data.gridColor,\n    ...modulePropsDecoder(data) // Object spread. It will merge the properties of the two objects.\n  };\n}\n\nexport default class BarsGraph extends Item<BarsGraphProps> {\n  protected createDomElement(): HTMLElement {\n    const element = document.createElement(\"div\");\n    element.innerHTML = this.props.html;\n    element.className = \"bars-graph\";\n    if (\n      this.props.agentDisabled === true ||\n      this.props.moduleDisabled === true\n    ) {\n      element.style.opacity = \"0.2\";\n    }\n\n    // Hack to execute the JS after the HTML is added to the DOM.\n    const scripts = element.getElementsByTagName(\"script\");\n    for (let i = 0; i < scripts.length; i++) {\n      if (scripts[i].src.length === 0) {\n        setTimeout(() => {\n          try {\n            eval(scripts[i].innerHTML.trim());\n          } catch (ignored) {} // eslint-disable-line no-empty\n        }, 0);\n      }\n    }\n\n    return element;\n  }\n\n  protected updateDomElement(element: HTMLElement): void {\n    element.innerHTML = this.props.html;\n\n    if (\n      this.props.agentDisabled === true ||\n      this.props.moduleDisabled === true\n    ) {\n      element.style.opacity = \"0.2\";\n    }\n\n    // Hack to execute the JS after the HTML is added to the DOM.\n    const scripts = element.getElementsByTagName(\"script\");\n    for (let i = 0; i < scripts.length; i++) {\n      if (scripts[i].src.length === 0) {\n        eval(scripts[i].innerHTML.trim());\n      }\n    }\n  }\n}\n","import {\n  LinkedVisualConsoleProps,\n  AnyObject,\n  WithModuleProps\n} from \"../lib/types\";\nimport {\n  linkedVCPropsDecoder,\n  modulePropsDecoder,\n  decodeBase64,\n  stringIsEmpty,\n  parseIntOr\n} from \"../lib\";\nimport Item, { ItemType, ItemProps, itemBasePropsDecoder } from \"../Item\";\n\nexport type BasicChartProps = {\n  type: ItemType.BASIC_CHART;\n  html: string;\n  period: number | null;\n  value: number | null;\n  status: string;\n  moduleNameColor: string;\n} & ItemProps &\n  WithModuleProps &\n  LinkedVisualConsoleProps;\n\n/**\n * Build a valid typed object from a raw object.\n * This will allow us to ensure the type safety.\n *\n * @param data Raw object.\n * @return An object representing the basic chart props.\n * @throws Will throw a TypeError if some property\n * is missing from the raw object or have an invalid type.\n */\nexport function basicChartPropsDecoder(\n  data: AnyObject\n): BasicChartProps | never {\n  if (stringIsEmpty(data.html) && stringIsEmpty(data.encodedHtml)) {\n    throw new TypeError(\"missing html content.\");\n  }\n\n  return {\n    ...itemBasePropsDecoder(data), // Object spread. It will merge the properties of the two objects.\n    type: ItemType.BASIC_CHART,\n    html: !stringIsEmpty(data.html)\n      ? data.html\n      : decodeBase64(data.encodedHtml),\n    period: parseIntOr(data.period, null),\n    value: parseFloat(data.value),\n    status: stringIsEmpty(data.status) ? \"#B2B2B2\" : data.status,\n    moduleNameColor: stringIsEmpty(data.moduleNameColor)\n      ? \"#3f3f3f\"\n      : data.moduleNameColor,\n    ...modulePropsDecoder(data), // Object spread. It will merge the properties of the two objects.\n    ...linkedVCPropsDecoder(data) // Object spread. It will merge the properties of the two objects.\n  };\n}\n\nexport default class BasicChart extends Item<BasicChartProps> {\n  protected createDomElement(): HTMLElement {\n    const element = document.createElement(\"div\");\n\n    const header = document.createElement(\"div\");\n    header.className = \"basic-chart-header\";\n\n    const moduleName = document.createElement(\"h2\");\n    moduleName.className = \"basic-chart-header-name\";\n    moduleName.textContent = this.props.moduleName;\n    moduleName.style.color = `${this.props.moduleNameColor}`;\n    header.appendChild(moduleName);\n\n    let value = \"\";\n    if (this.props.value !== null) {\n      value = this.numberFormat(this.props.value, false, \"\", 2, 1000);\n    }\n\n    const moduleValue = document.createElement(\"h2\");\n    moduleValue.className = \"basic-chart-header-value\";\n    moduleValue.textContent = `${value}`;\n    moduleValue.style.color = this.props.status;\n    header.appendChild(moduleValue);\n\n    element.innerHTML = this.props.html;\n    element.className = \"basic-chart\";\n    if (\n      this.props.agentDisabled === true ||\n      this.props.moduleDisabled === true\n    ) {\n      element.style.opacity = \"0.2\";\n    }\n\n    // Remove the overview graph.\n    const legendP = element.getElementsByTagName(\"p\");\n    for (let i = 0; i < legendP.length; i++) {\n      legendP[i].style.margin = \"0px\";\n    }\n\n    // Remove the overview graph.\n    const overviewGraphs = element.getElementsByClassName(\"overview_graph\");\n    for (let i = 0; i < overviewGraphs.length; i++) {\n      overviewGraphs[i].remove();\n    }\n\n    // Hack to execute the JS after the HTML is added to the DOM.\n    const scripts = element.getElementsByTagName(\"script\");\n    for (let i = 0; i < scripts.length; i++) {\n      if (scripts[i].src.length === 0) {\n        setTimeout(() => {\n          try {\n            eval(scripts[i].innerHTML.trim());\n          } catch (ignored) {} // eslint-disable-line no-empty\n        }, 0);\n      }\n    }\n\n    element.innerHTML = this.props.html;\n    element.insertBefore(header, element.firstChild);\n\n    return element;\n  }\n\n  protected updateDomElement(element: HTMLElement): void {\n    const header = document.createElement(\"div\");\n    header.className = \"basic-chart-header\";\n\n    const moduleName = document.createElement(\"h2\");\n    moduleName.className = \"basic-chart-header-name\";\n    moduleName.textContent = this.props.moduleName;\n    moduleName.style.color = `${this.props.moduleNameColor}`;\n    header.appendChild(moduleName);\n\n    let value = \"\";\n    if (this.props.value !== null) {\n      value = this.numberFormat(this.props.value, false, \"\", 2, 1000);\n    }\n\n    const moduleValue = document.createElement(\"h2\");\n    moduleValue.className = \"basic-chart-header-value\";\n    moduleValue.textContent = `${value}`;\n    moduleValue.style.color = this.props.status;\n    header.appendChild(moduleValue);\n\n    element.innerHTML = this.props.html;\n    element.insertBefore(header, element.firstChild);\n\n    // Remove the overview graph.\n    const legendP = element.getElementsByTagName(\"p\");\n    for (let i = 0; i < legendP.length; i++) {\n      legendP[i].style.margin = \"0px\";\n    }\n\n    // Remove the overview graph.\n    const overviewGraphs = element.getElementsByClassName(\"overview_graph\");\n    for (let i = 0; i < overviewGraphs.length; i++) {\n      overviewGraphs[i].remove();\n    }\n\n    // Hack to execute the JS after the HTML is added to the DOM.\n    const scripts = element.getElementsByTagName(\"script\");\n    for (let i = 0; i < scripts.length; i++) {\n      if (scripts[i].src.length === 0) {\n        eval(scripts[i].innerHTML.trim());\n      }\n    }\n  }\n\n  protected numberFormat(\n    number: number,\n    forceInteger: boolean,\n    unit: string,\n    shortData: number,\n    divisor: number\n  ) {\n    divisor = typeof divisor !== \"undefined\" ? divisor : 1000;\n    var decimals = 2;\n\n    // Set maximum decimal precision to 99 in case shortData is not set.\n    if (!shortData) {\n      shortData = 99;\n    }\n\n    if (forceInteger) {\n      if (Math.round(number) != number) {\n        return \"\";\n      }\n    } else {\n      shortData++;\n      const auxDecimals = this.pad(\"1\", shortData, 0);\n      number =\n        Math.round(number * Number.parseInt(auxDecimals)) /\n        Number.parseInt(auxDecimals);\n    }\n\n    var shorts = [\"\", \"K\", \"M\", \"G\", \"T\", \"P\", \"E\", \"Z\", \"Y\"];\n    var pos = 0;\n\n    while (Math.abs(number) >= divisor) {\n      // As long as the number can be divided by 1000 or 1024.\n      pos++;\n      number = number / divisor;\n    }\n\n    if (divisor) {\n      number = Math.round(number * decimals) / decimals;\n    } else {\n      number = Math.round(number * decimals);\n    }\n\n    if (isNaN(number)) {\n      number = 0;\n    }\n\n    return number + \" \" + shorts[pos] + unit;\n  }\n\n  protected pad(input: string, length: number, padding: number): string {\n    var str = input + \"\";\n    return length <= str.length\n      ? str\n      : this.pad(str + padding, length, padding);\n  }\n}\n","import {\n  LinkedVisualConsoleProps,\n  AnyObject,\n  WithModuleProps\n} from \"../lib/types\";\nimport {\n  linkedVCPropsDecoder,\n  modulePropsDecoder,\n  decodeBase64,\n  stringIsEmpty,\n  t\n} from \"../lib\";\nimport Item, { ItemType, ItemProps, itemBasePropsDecoder } from \"../Item\";\n\nexport type DonutGraphProps = {\n  type: ItemType.DONUT_GRAPH;\n  html: string;\n  legendBackgroundColor: string;\n} & ItemProps &\n  WithModuleProps &\n  LinkedVisualConsoleProps;\n\n/**\n * Build a valid typed object from a raw object.\n * This will allow us to ensure the type safety.\n *\n * @param data Raw object.\n * @return An object representing the donut graph props.\n * @throws Will throw a TypeError if some property\n * is missing from the raw object or have an invalid type.\n */\nexport function donutGraphPropsDecoder(\n  data: AnyObject\n): DonutGraphProps | never {\n  if (stringIsEmpty(data.html) && stringIsEmpty(data.encodedHtml)) {\n    throw new TypeError(\"missing html content.\");\n  }\n\n  return {\n    ...itemBasePropsDecoder(data), // Object spread. It will merge the properties of the two objects.\n    type: ItemType.DONUT_GRAPH,\n    html: !stringIsEmpty(data.html)\n      ? data.html\n      : decodeBase64(data.encodedHtml),\n    legendBackgroundColor: stringIsEmpty(data.legendBackgroundColor)\n      ? \"#ffffff\"\n      : data.legendBackgroundColor,\n    ...modulePropsDecoder(data), // Object spread. It will merge the properties of the two objects.\n    ...linkedVCPropsDecoder(data) // Object spread. It will merge the properties of the two objects.\n  };\n}\n\nexport default class DonutGraph extends Item<DonutGraphProps> {\n  protected createDomElement(): HTMLElement {\n    const element = document.createElement(\"div\");\n    element.className = \"donut-graph\";\n    element.innerHTML = this.props.html;\n    element.style.backgroundColor = this.props.legendBackgroundColor;\n\n    if (\n      this.props.agentDisabled === true ||\n      this.props.moduleDisabled === true\n    ) {\n      element.style.opacity = \"0.2\";\n    }\n\n    // Hack to execute the JS after the HTML is added to the DOM.\n    const scripts = element.getElementsByTagName(\"script\");\n    for (let i = 0; i < scripts.length; i++) {\n      if (scripts[i].src.length === 0) {\n        setTimeout(() => {\n          try {\n            eval(scripts[i].innerHTML.trim());\n          } catch (ignored) {} // eslint-disable-line no-empty\n        }, 0);\n      }\n    }\n\n    return element;\n  }\n\n  protected updateDomElement(element: HTMLElement): void {\n    element.innerHTML = this.props.html;\n    element.style.backgroundColor = this.props.legendBackgroundColor;\n\n    if (\n      this.props.agentDisabled === true ||\n      this.props.moduleDisabled === true\n    ) {\n      element.style.opacity = \"0.2\";\n    }\n\n    // Hack to execute the JS after the HTML is added to the DOM.\n    const scripts = element.getElementsByTagName(\"script\");\n    for (let i = 0; i < scripts.length; i++) {\n      if (scripts[i].src.length === 0) {\n        eval(scripts[i].innerHTML.trim());\n      }\n    }\n  }\n}\n","import { AnyObject, WithModuleProps } from \"../lib/types\";\nimport {\n  modulePropsDecoder,\n  parseIntOr,\n  decodeBase64,\n  stringIsEmpty,\n  t\n} from \"../lib\";\nimport Item, { ItemType, ItemProps, itemBasePropsDecoder } from \"../Item\";\n\nexport type EventsHistoryProps = {\n  type: ItemType.AUTO_SLA_GRAPH;\n  maxTime: number | null;\n  legendColor: string;\n  html: string;\n} & ItemProps &\n  WithModuleProps;\n\n/**\n * Build a valid typed object from a raw object.\n * This will allow us to ensure the type safety.\n *\n * @param data Raw object.\n * @return An object representing the events history props.\n * @throws Will throw a TypeError if some property\n * is missing from the raw object or have an invalid type.\n */\nexport function eventsHistoryPropsDecoder(\n  data: AnyObject\n): EventsHistoryProps | never {\n  if (stringIsEmpty(data.html) && stringIsEmpty(data.encodedHtml)) {\n    throw new TypeError(\"missing html content.\");\n  }\n\n  return {\n    ...itemBasePropsDecoder(data), // Object spread. It will merge the properties of the two objects.\n    type: ItemType.AUTO_SLA_GRAPH,\n    maxTime: parseIntOr(data.maxTime, null),\n    legendColor: data.legendColor,\n    html: !stringIsEmpty(data.html)\n      ? data.html\n      : decodeBase64(data.encodedHtml),\n    ...modulePropsDecoder(data) // Object spread. It will merge the properties of the two objects.\n  };\n}\n\nexport default class EventsHistory extends Item<EventsHistoryProps> {\n  protected createDomElement(): HTMLElement {\n    const element = document.createElement(\"div\");\n    element.className = \"events-history\";\n    element.innerHTML = this.props.html;\n\n    if (\n      this.props.agentDisabled === true ||\n      this.props.moduleDisabled === true\n    ) {\n      element.style.opacity = \"0.2\";\n    }\n\n    // Hack to execute the JS after the HTML is added to the DOM.\n    const scripts = element.getElementsByTagName(\"script\");\n    for (let i = 0; i < scripts.length; i++) {\n      if (scripts[i].src.length === 0) {\n        setTimeout(() => {\n          try {\n            eval(scripts[i].innerHTML.trim());\n          } catch (ignored) {} // eslint-disable-line no-empty\n        }, 0);\n      }\n    }\n\n    var flotText = element.getElementsByClassName(\n      \"noresizevc\"\n    ) as HTMLCollectionOf<HTMLElement>;\n    flotText[0].style.color = this.props.legendColor;\n\n    return element;\n  }\n\n  protected updateDomElement(element: HTMLElement): void {\n    element.innerHTML = this.props.html;\n\n    // Hack to execute the JS after the HTML is added to the DOM.\n    const aux = document.createElement(\"div\");\n    aux.innerHTML = this.props.html;\n    const scripts = aux.getElementsByTagName(\"script\");\n    for (let i = 0; i < scripts.length; i++) {\n      if (scripts[i].src.length === 0) {\n        eval(scripts[i].innerHTML.trim());\n      }\n    }\n\n    var flotText = element.getElementsByClassName(\n      \"noresizevc\"\n    ) as HTMLCollectionOf<HTMLElement>;\n    flotText[0].style.color = this.props.legendColor;\n  }\n}\n","import {\n  LinkedVisualConsoleProps,\n  AnyObject,\n  WithModuleProps\n} from \"../lib/types\";\nimport {\n  linkedVCPropsDecoder,\n  modulePropsDecoder,\n  decodeBase64,\n  stringIsEmpty,\n  parseIntOr\n} from \"../lib\";\nimport Item, { ItemType, ItemProps, itemBasePropsDecoder } from \"../Item\";\n\nexport type ModuleGraphProps = {\n  type: ItemType.MODULE_GRAPH;\n  html: string;\n  backgroundType: \"white\" | \"black\" | \"transparent\";\n  graphType: \"line\" | \"area\";\n  period: number | null;\n  customGraphId: number | null;\n} & ItemProps &\n  WithModuleProps &\n  LinkedVisualConsoleProps;\n\n/**\n * Extract a valid enum value from a raw unknown value.\n * @param backgroundType Raw value.\n */\nconst parseBackgroundType = (\n  backgroundType: unknown\n): ModuleGraphProps[\"backgroundType\"] => {\n  switch (backgroundType) {\n    case \"white\":\n    case \"black\":\n    case \"transparent\":\n      return backgroundType;\n    default:\n      return \"transparent\";\n  }\n};\n\n/**\n * Extract a valid enum value from a raw unknown value.\n * @param graphType Raw value.\n */\nconst parseGraphType = (graphType: unknown): ModuleGraphProps[\"graphType\"] => {\n  switch (graphType) {\n    case \"line\":\n    case \"area\":\n      return graphType;\n    default:\n      return \"line\";\n  }\n};\n\n/**\n * Build a valid typed object from a raw object.\n * This will allow us to ensure the type safety.\n *\n * @param data Raw object.\n * @return An object representing the module graph props.\n * @throws Will throw a TypeError if some property\n * is missing from the raw object or have an invalid type.\n */\nexport function moduleGraphPropsDecoder(\n  data: AnyObject\n): ModuleGraphProps | never {\n  if (stringIsEmpty(data.html) && stringIsEmpty(data.encodedHtml)) {\n    throw new TypeError(\"missing html content.\");\n  }\n\n  return {\n    ...itemBasePropsDecoder(data), // Object spread. It will merge the properties of the two objects.\n    type: ItemType.MODULE_GRAPH,\n    html: !stringIsEmpty(data.html)\n      ? data.html\n      : decodeBase64(data.encodedHtml),\n    backgroundType: parseBackgroundType(data.backgroundType),\n    period: parseIntOr(data.period, null),\n    graphType: parseGraphType(data.graphType),\n    customGraphId: parseIntOr(data.customGraphId, null),\n    ...modulePropsDecoder(data), // Object spread. It will merge the properties of the two objects.\n    ...linkedVCPropsDecoder(data) // Object spread. It will merge the properties of the two objects.\n  };\n}\n\nexport default class ModuleGraph extends Item<ModuleGraphProps> {\n  protected createDomElement(): HTMLElement {\n    const element = document.createElement(\"div\");\n\n    element.innerHTML = this.props.html;\n    element.className = \"module-graph\";\n    if (\n      this.props.agentDisabled === true ||\n      this.props.moduleDisabled === true\n    ) {\n      element.style.opacity = \"0.2\";\n    }\n\n    // Hack to execute the JS after the HTML is added to the DOM.\n    const scripts = element.getElementsByTagName(\"script\");\n    for (let i = 0; i < scripts.length; i++) {\n      if (scripts[i].src.length === 0) {\n        setTimeout(() => {\n          try {\n            eval(scripts[i].innerHTML.trim());\n          } catch (ignored) {} // eslint-disable-line no-empty\n        }, 0);\n      }\n    }\n\n    return element;\n  }\n\n  protected updateDomElement(element: HTMLElement): void {\n    element.innerHTML = this.props.html;\n\n    if (\n      this.props.agentDisabled === true ||\n      this.props.moduleDisabled === true\n    ) {\n      element.style.opacity = \"0.2\";\n    }\n\n    // Hack to execute the JS after the HTML is added to the DOM.\n    const scripts = element.getElementsByTagName(\"script\");\n    for (let i = 0; i < scripts.length; i++) {\n      if (scripts[i].src.length === 0) {\n        eval(scripts[i].innerHTML.trim());\n      }\n    }\n  }\n}\n","import { IconDefinition } from \"@fortawesome/free-solid-svg-icons\";\nimport \"./FontAwesomeIcon.styles.css\";\n\nconst svgNS = \"http://www.w3.org/2000/svg\";\n\ninterface ExtraProps {\n  size?: \"small\" | \"medium\" | \"large\";\n  color?: string;\n  spin?: boolean;\n  pulse?: boolean;\n}\n\nconst fontAwesomeIcon = (\n  iconDefinition: IconDefinition,\n  title: string,\n  { size, color, spin, pulse }: ExtraProps = {}\n): HTMLElement => {\n  const container = document.createElement(\"figure\");\n  container.title = title;\n  container.className = `fa fa-${iconDefinition.iconName}`;\n\n  if (size) container.classList.add(`fa-${size}`);\n\n  if (spin) container.classList.add(\"fa-spin\");\n  else if (pulse) container.classList.add(\"fa-pulse\");\n\n  const icon = document.createElementNS(svgNS, \"svg\");\n  // Auto resize SVG using the view box magic: https://css-tricks.com/scale-svg/\n  icon.setAttribute(\n    \"viewBox\",\n    `0 0 ${iconDefinition.icon[0]} ${iconDefinition.icon[1]}`\n  );\n  if (color) icon.setAttribute(\"fill\", color);\n\n  // Path\n  const path = document.createElementNS(svgNS, \"path\");\n  const pathData =\n    typeof iconDefinition.icon[4] === \"string\"\n      ? iconDefinition.icon[4]\n      : iconDefinition.icon[4][0];\n  path.setAttribute(\"d\", pathData);\n\n  icon.appendChild(path);\n  container.appendChild(icon);\n\n  return container;\n};\n\nexport default fontAwesomeIcon;\n","export interface Listener<T> {\n  (event: T): void;\n}\n\nexport interface Disposable {\n  dispose: () => void;\n}\n\n/** passes through events as they happen. You will not get events from before you start listening */\nexport default class TypedEvent<T> {\n  private listeners: Listener<T>[] = [];\n  private listenersOncer: Listener<T>[] = [];\n\n  public on = (listener: Listener<T>): Disposable => {\n    this.listeners.push(listener);\n    return {\n      dispose: () => this.off(listener)\n    };\n  };\n\n  public once = (listener: Listener<T>): void => {\n    this.listenersOncer.push(listener);\n  };\n\n  public off = (listener: Listener<T>): void => {\n    const callbackIndex = this.listeners.indexOf(listener);\n    if (callbackIndex > -1) this.listeners.splice(callbackIndex, 1);\n  };\n\n  public emit = (event: T): void => {\n    /** Update any general listeners */\n    this.listeners.forEach(listener => listener(event));\n\n    /** Clear the `once` queue */\n    this.listenersOncer.forEach(listener => listener(event));\n    this.listenersOncer = [];\n  };\n\n  public pipe = (te: TypedEvent<T>): Disposable => this.on(e => te.emit(e));\n}\n","import {\n  AnyObject,\n  Position,\n  Size,\n  WithAgentProps,\n  WithModuleProps,\n  LinkedVisualConsoleProps,\n  LinkedVisualConsolePropsStatus,\n  UnknownObject,\n  ItemMeta\n} from \"./types\";\n\nimport helpTipIcon from \"./help-tip.png\";\nimport fontAwesomeIcon from \"./FontAwesomeIcon\";\nimport { faPencilAlt, faListAlt } from \"@fortawesome/free-solid-svg-icons\";\nimport \"./autocomplete.css\";\n\n/**\n * Return a number or a default value from a raw value.\n * @param value Raw value from which we will try to extract a valid number.\n * @param defaultValue Default value to use if we cannot extract a valid number.\n * @return A valid number or the default value.\n */\nexport function parseIntOr<T>(value: unknown, defaultValue: T): number | T {\n  if (typeof value === \"number\") return value;\n  if (typeof value === \"string\" && value.length > 0 && !isNaN(parseInt(value)))\n    return parseInt(value);\n  else return defaultValue;\n}\n\n/**\n * Return a number or a default value from a raw value.\n * @param value Raw value from which we will try to extract a valid number.\n * @param defaultValue Default value to use if we cannot extract a valid number.\n * @return A valid number or the default value.\n */\nexport function parseFloatOr<T>(value: unknown, defaultValue: T): number | T {\n  if (typeof value === \"number\") return value;\n  if (\n    typeof value === \"string\" &&\n    value.length > 0 &&\n    !isNaN(parseFloat(value))\n  )\n    return parseFloat(value);\n  else return defaultValue;\n}\n\n/**\n * Check if a string exists and it's not empty.\n * @param value Value to check.\n * @return The check result.\n */\nexport function stringIsEmpty(value?: string | null): boolean {\n  return value == null || value.length === 0;\n}\n\n/**\n * Return a not empty string or a default value from a raw value.\n * @param value Raw value from which we will try to extract a non empty string.\n * @param defaultValue Default value to use if we cannot extract a non empty string.\n * @return A non empty string or the default value.\n */\nexport function notEmptyStringOr<T>(\n  value: unknown,\n  defaultValue: T\n): string | T {\n  return typeof value === \"string\" && value.length > 0 ? value : defaultValue;\n}\n\n/**\n * Return a boolean from a raw value.\n * @param value Raw value from which we will try to extract the boolean.\n * @return A valid boolean value. false by default.\n */\nexport function parseBoolean(value: unknown): boolean {\n  if (typeof value === \"boolean\") return value;\n  else if (typeof value === \"number\") return value > 0;\n  else if (typeof value === \"string\") return value === \"1\" || value === \"true\";\n  else return false;\n}\n\n/**\n * Return a valid date or a default value from a raw value.\n * @param value Raw value from which we will try to extract a valid date.\n * @param defaultValue Default value to use if we cannot extract a valid date.\n * @return A valid date or the default value.\n */\nexport function parseDateOr<T>(value: unknown, defaultValue: T): Date | T {\n  if (value instanceof Date) return value;\n  else if (typeof value === \"number\") return new Date(value * 1000);\n  else if (\n    typeof value === \"string\" &&\n    !Number.isNaN(new Date(value).getTime())\n  )\n    return new Date(value);\n  else return defaultValue;\n}\n\n/**\n * Pad the current string with another string (multiple times, if needed)\n * until the resulting string reaches the given length.\n * The padding is applied from the start (left) of the current string.\n * @param value Text that needs to be padded.\n * @param length Length of the returned text.\n * @param pad Text to add.\n * @return Padded text.\n */\nexport function leftPad(\n  value: string | number,\n  length: number,\n  pad: string | number = \" \"\n): string {\n  if (typeof value === \"number\") value = `${value}`;\n  if (typeof pad === \"number\") pad = `${pad}`;\n\n  const diffLength = length - value.length;\n  if (diffLength === 0) return value;\n  if (diffLength < 0) return value.substr(Math.abs(diffLength));\n\n  if (diffLength === pad.length) return `${pad}${value}`;\n  if (diffLength < pad.length) return `${pad.substring(0, diffLength)}${value}`;\n\n  const repeatTimes = Math.floor(diffLength / pad.length);\n  const restLength = diffLength - pad.length * repeatTimes;\n\n  let newPad = \"\";\n  for (let i = 0; i < repeatTimes; i++) newPad += pad;\n\n  if (restLength === 0) return `${newPad}${value}`;\n  return `${newPad}${pad.substring(0, restLength)}${value}`;\n}\n\n/* Decoders */\n\n/**\n * Build a valid typed object from a raw object.\n * @param data Raw object.\n * @return An object representing the position.\n */\nexport function positionPropsDecoder(data: AnyObject): Position {\n  return {\n    x: parseIntOr(data.x, 0),\n    y: parseIntOr(data.y, 0)\n  };\n}\n\n/**\n * Build a valid typed object from a raw object.\n * @param data Raw object.\n * @return An object representing the size.\n * @throws Will throw a TypeError if the width and height are not valid numbers.\n */\nexport function sizePropsDecoder(data: AnyObject): Size | never {\n  if (\n    data.width == null ||\n    isNaN(parseInt(data.width)) ||\n    data.height == null ||\n    isNaN(parseInt(data.height))\n  ) {\n    throw new TypeError(\"invalid size.\");\n  }\n\n  return {\n    width: parseInt(data.width),\n    height: parseInt(data.height)\n  };\n}\n\n/**\n * Build a valid typed object from a raw object.\n * @param data Raw object.\n * @return An object representing the agent properties.\n */\nexport function agentPropsDecoder(data: AnyObject): WithAgentProps {\n  const agentProps: WithAgentProps = {\n    agentId: parseIntOr(data.agentId, null),\n    agentName: notEmptyStringOr(data.agentName, null),\n    agentAlias: notEmptyStringOr(data.agentAlias, null),\n    agentDescription: notEmptyStringOr(data.agentDescription, null),\n    agentAddress: notEmptyStringOr(data.agentAddress, null),\n    agentDisabled: parseBoolean(data.agentDisabled)\n  };\n\n  return data.metaconsoleId != null\n    ? {\n        metaconsoleId: data.metaconsoleId,\n        ...agentProps // Object spread: http://es6-features.org/#SpreadOperator\n      }\n    : agentProps;\n}\n\n/**\n * Build a valid typed object from a raw object.\n * @param data Raw object.\n * @return An object representing the module and agent properties.\n */\nexport function modulePropsDecoder(data: AnyObject): WithModuleProps {\n  return {\n    moduleId: parseIntOr(data.moduleId, null),\n    moduleName: notEmptyStringOr(data.moduleName, null),\n    moduleDescription: notEmptyStringOr(data.moduleDescription, null),\n    moduleDisabled: parseBoolean(data.moduleDisabled),\n    ...agentPropsDecoder(data) // Object spread: http://es6-features.org/#SpreadOperator\n  };\n}\n\n/**\n * Build a valid typed object from a raw object.\n * @param data Raw object.\n * @return An object representing the linked visual console properties.\n * @throws Will throw a TypeError if the status calculation properties are invalid.\n */\nexport function linkedVCPropsDecoder(\n  data: AnyObject\n): LinkedVisualConsoleProps | never {\n  let linkedLayoutStatusProps: LinkedVisualConsolePropsStatus = {\n    linkedLayoutStatusType: \"default\"\n  };\n  switch (data.linkedLayoutStatusType) {\n    case \"weight\": {\n      const weight = parseIntOr(data.linkedLayoutStatusTypeWeight, null);\n      if (weight == null)\n        throw new TypeError(\"invalid status calculation properties.\");\n\n      if (data.linkedLayoutStatusTypeWeight)\n        linkedLayoutStatusProps = {\n          linkedLayoutStatusType: \"weight\",\n          linkedLayoutStatusTypeWeight: weight\n        };\n      break;\n    }\n    case \"service\": {\n      const warningThreshold = parseIntOr(\n        data.linkedLayoutStatusTypeWarningThreshold,\n        null\n      );\n      const criticalThreshold = parseIntOr(\n        data.linkedLayoutStatusTypeCriticalThreshold,\n        null\n      );\n      if (warningThreshold == null || criticalThreshold == null) {\n        throw new TypeError(\"invalid status calculation properties.\");\n      }\n\n      linkedLayoutStatusProps = {\n        linkedLayoutStatusType: \"service\",\n        linkedLayoutStatusTypeWarningThreshold: warningThreshold,\n        linkedLayoutStatusTypeCriticalThreshold: criticalThreshold\n      };\n      break;\n    }\n  }\n\n  return {\n    linkedLayoutId: parseIntOr(data.linkedLayoutId, null),\n    linkedLayoutNodeId: parseIntOr(data.linkedLayoutNodeId, null),\n    ...linkedLayoutStatusProps // Object spread: http://es6-features.org/#SpreadOperator\n  };\n}\n\n/**\n * Build a valid typed object from a raw object.\n * @param data Raw object.\n * @return An object representing the item's meta properties.\n */\nexport function itemMetaDecoder(data: UnknownObject): ItemMeta | never {\n  const receivedAt = parseDateOr(data.receivedAt, null);\n  if (receivedAt === null) throw new TypeError(\"invalid meta structure\");\n\n  let error = null;\n  if (data.error instanceof Error) error = data.error;\n  else if (typeof data.error === \"string\") error = new Error(data.error);\n\n  return {\n    receivedAt,\n    error,\n    editMode: parseBoolean(data.editMode),\n    maintenanceMode: parseBoolean(data.maintenanceMode),\n    isFromCache: parseBoolean(data.isFromCache),\n    isFetching: false,\n    isUpdating: false,\n    isBeingMoved: false,\n    isBeingResized: false,\n    isSelected: false,\n    lineMode: false\n  };\n}\n\n/**\n * To get a CSS rule with the most used prefixes.\n * @param ruleName Name of the CSS rule.\n * @param ruleValue Value of the CSS rule.\n * @return An array of rules with the prefixes applied.\n */\nexport function prefixedCssRules(\n  ruleName: string,\n  ruleValue: string\n): string[] {\n  const rule = `${ruleName}: ${ruleValue};`;\n  return [\n    `-webkit-${rule}`,\n    `-moz-${rule}`,\n    `-ms-${rule}`,\n    `-o-${rule}`,\n    `${rule}`\n  ];\n}\n\n/**\n * Decode a base64 string.\n * @param input Data encoded using base64.\n * @return Decoded data.\n */\nexport function decodeBase64(input: string): string {\n  return decodeURIComponent(escape(window.atob(input)));\n}\n\n/**\n * Generate a date representation with the format 'd/m/Y'.\n * @param initialDate Date to be used instead of a generated one.\n * @param locale Locale to use if localization is required and available.\n * @example 24/02/2020.\n * @return Date representation.\n */\nexport function humanDate(date: Date, locale: string | null = null): string {\n  if (locale && Intl && Intl.DateTimeFormat) {\n    // Format using the user locale.\n    const options: Intl.DateTimeFormatOptions = {\n      day: \"2-digit\",\n      month: \"2-digit\",\n      year: \"numeric\"\n    };\n    return Intl.DateTimeFormat(locale, options).format(date);\n  } else {\n    // Use getDate, getDay returns the week day.\n    const day = leftPad(date.getDate(), 2, 0);\n    // The getMonth function returns the month starting by 0.\n    const month = leftPad(date.getMonth() + 1, 2, 0);\n    const year = leftPad(date.getFullYear(), 4, 0);\n\n    // Format: 'd/m/Y'.\n    return `${day}/${month}/${year}`;\n  }\n}\n\n/**\n * Generate a time representation with the format 'hh:mm:ss'.\n * @param initialDate Date to be used instead of a generated one.\n * @example 01:34:09.\n * @return Time representation.\n */\nexport function humanTime(date: Date): string {\n  const hours = leftPad(date.getHours(), 2, 0);\n  const minutes = leftPad(date.getMinutes(), 2, 0);\n  const seconds = leftPad(date.getSeconds(), 2, 0);\n\n  return `${hours}:${minutes}:${seconds}`;\n}\n\ninterface Macro {\n  macro: string | RegExp;\n  value: string;\n}\n/**\n * Replace the macros of a text.\n * @param macros List of macros and their replacements.\n * @param text Text in which we need to replace the macros.\n */\nexport function replaceMacros(macros: Macro[], text: string): string {\n  return macros.reduce(\n    (acc, { macro, value }) => acc.replace(macro, value),\n    text\n  );\n}\n\n/**\n * Create a function which will limit the rate of execution of\n * the selected function to one time for the selected interval.\n * @param delay Interval.\n * @param fn Function to be executed at a limited rate.\n */\nexport function throttle<T, R>(delay: number, fn: (...args: T[]) => R) {\n  let last = 0;\n  return (...args: T[]) => {\n    const now = Date.now();\n    if (now - last < delay) return;\n    last = now;\n    return fn(...args);\n  };\n}\n\n/**\n * Create a function which will call the selected function only\n * after the interval time has passed after its last execution.\n * @param delay Interval.\n * @param fn Function to be executed after the last call.\n */\nexport function debounce<T>(delay: number, fn: (...args: T[]) => void) {\n  let timerRef: number | null = null;\n  return (...args: T[]) => {\n    if (timerRef !== null) window.clearTimeout(timerRef);\n    timerRef = window.setTimeout(() => {\n      fn(...args);\n      timerRef = null;\n    }, delay);\n  };\n}\n\n/**\n * Retrieve the offset of an element relative to the page.\n * @param el Node used to calculate the offset.\n */\nfunction getOffset(el: HTMLElement | null, parent?: HTMLElement) {\n  let x = 0;\n  let y = 0;\n  while (\n    el &&\n    !Number.isNaN(el.offsetLeft) &&\n    !Number.isNaN(el.offsetTop) &&\n    el !== parent\n  ) {\n    x += el.offsetLeft - el.scrollLeft;\n    y += el.offsetTop - el.scrollTop;\n    el = el.offsetParent as HTMLElement | null;\n  }\n  return { top: y, left: x };\n}\n\n/**\n * Add the grab & move functionality to a certain element inside it's container.\n *\n * @param element Element to move.\n * @param onMoved Function to execute when the element moves.\n * @param altContainer Alternative element to contain the moved element.\n *\n * @return A function which will clean the event handlers when executed.\n */\nexport function addMovementListener(\n  element: HTMLElement,\n  onMoved: (x: Position[\"x\"], y: Position[\"y\"]) => void,\n  altContainer?: HTMLElement\n): Function {\n  const container = altContainer || (element.parentElement as HTMLElement);\n\n  // Store the initial draggable state.\n  const isDraggable = element.draggable;\n  // Init the coordinates.\n  let lastX: Position[\"x\"] = 0;\n  let lastY: Position[\"y\"] = 0;\n  let lastMouseX: Position[\"x\"] = 0;\n  let lastMouseY: Position[\"y\"] = 0;\n  let mouseElementOffsetX: Position[\"x\"] = 0;\n  let mouseElementOffsetY: Position[\"y\"] = 0;\n  // Bounds.\n  let containerBounds = container.getBoundingClientRect();\n  let containerOffset = getOffset(container);\n  let containerTop = containerOffset.top;\n  let containerBottom = containerTop + containerBounds.height;\n  let containerLeft = containerOffset.left;\n  let containerRight = containerLeft + containerBounds.width;\n  let elementBounds = element.getBoundingClientRect();\n  let borderWidth = window.getComputedStyle(element).borderWidth || \"0\";\n  let borderFix = Number.parseInt(borderWidth) * 2;\n\n  // Will run onMoved 32ms after its last execution.\n  const debouncedMovement = debounce(32, onMoved);\n  // Will run onMoved one time max every 16ms.\n  const throttledMovement = throttle(16, onMoved);\n\n  const handleMove = (e: MouseEvent) => {\n    // Calculate the new element coordinates.\n    let x = 0;\n    let y = 0;\n\n    const mouseX = e.pageX;\n    const mouseY = e.pageY;\n    const mouseDeltaX = mouseX - lastMouseX;\n    const mouseDeltaY = mouseY - lastMouseY;\n\n    const minX = 0;\n    const maxX = containerBounds.width - elementBounds.width + borderFix;\n    const minY = 0;\n    const maxY = containerBounds.height - elementBounds.height + borderFix;\n\n    const outOfBoundsLeft =\n      mouseX < containerLeft ||\n      (lastX === 0 &&\n        mouseDeltaX > 0 &&\n        mouseX < containerLeft + mouseElementOffsetX);\n    const outOfBoundsRight =\n      mouseX > containerRight ||\n      mouseDeltaX + lastX + elementBounds.width - borderFix >\n        containerBounds.width ||\n      (lastX === maxX &&\n        mouseDeltaX < 0 &&\n        mouseX > containerLeft + maxX + mouseElementOffsetX);\n    const outOfBoundsTop =\n      mouseY < containerTop ||\n      (lastY === 0 &&\n        mouseDeltaY > 0 &&\n        mouseY < containerTop + mouseElementOffsetY);\n    const outOfBoundsBottom =\n      mouseY > containerBottom ||\n      mouseDeltaY + lastY + elementBounds.height - borderFix >\n        containerBounds.height ||\n      (lastY === maxY &&\n        mouseDeltaY < 0 &&\n        mouseY > containerTop + maxY + mouseElementOffsetY);\n\n    if (outOfBoundsLeft) x = minX;\n    else if (outOfBoundsRight) x = maxX;\n    else x = mouseDeltaX + lastX;\n\n    if (outOfBoundsTop) y = minY;\n    else if (outOfBoundsBottom) y = maxY;\n    else y = mouseDeltaY + lastY;\n\n    if (x < 0) x = minX;\n    if (y < 0) y = minY;\n\n    // Store the last mouse coordinates.\n    lastMouseX = mouseX;\n    lastMouseY = mouseY;\n\n    if (x === lastX && y === lastY) return;\n\n    // Run the movement events.\n    throttledMovement(x, y);\n    debouncedMovement(x, y);\n\n    // Store the coordinates of the element.\n    lastX = x;\n    lastY = y;\n  };\n  const handleEnd = () => {\n    // Reset the positions.\n    lastX = 0;\n    lastY = 0;\n    lastMouseX = 0;\n    lastMouseY = 0;\n    // Remove the move event.\n    document.removeEventListener(\"mousemove\", handleMove);\n    // Clean itself.\n    document.removeEventListener(\"mouseup\", handleEnd);\n    // Reset the draggable property to its initial state.\n    element.draggable = isDraggable;\n    // Reset the body selection property to a default state.\n    document.body.style.userSelect = \"auto\";\n  };\n  const handleStart = (e: MouseEvent) => {\n    // Avoid starting the movement on right click.\n    if (e.button === 2) return;\n\n    e.stopPropagation();\n\n    // Disable the drag temporarily.\n    element.draggable = false;\n\n    // Fix for Firefox browser.\n    element.setAttribute(\"ondragstart\", \"return false;\");\n    element.setAttribute(\"draggable\", \"false\");\n\n    // Store the difference between the cursor and\n    // the initial coordinates of the element.\n    const elementOffset = getOffset(element, container);\n    lastX = elementOffset.left;\n    lastY = elementOffset.top;\n\n    // Store the mouse position.\n    lastMouseX = e.pageX;\n    lastMouseY = e.pageY;\n    // Store the relative position between the mouse and the element.\n    mouseElementOffsetX = e.offsetX;\n    mouseElementOffsetY = e.offsetY;\n\n    // Initialize the bounds.\n    containerBounds = container.getBoundingClientRect();\n    containerOffset = getOffset(container);\n    containerTop = containerOffset.top;\n    containerBottom = containerTop + containerBounds.height;\n    containerLeft = containerOffset.left;\n    containerRight = containerLeft + containerBounds.width;\n    elementBounds = element.getBoundingClientRect();\n    borderWidth = window.getComputedStyle(element).borderWidth || \"0\";\n    borderFix = Number.parseInt(borderWidth) * 2;\n\n    // Listen to the mouse movement.\n    document.addEventListener(\"mousemove\", handleMove);\n    // Listen to the moment when the mouse click is not pressed anymore.\n    document.addEventListener(\"mouseup\", handleEnd);\n    // Limit the mouse selection of the body.\n    document.body.style.userSelect = \"none\";\n  };\n\n  // Event to listen the init of the movement.\n  element.addEventListener(\"mousedown\", handleStart);\n\n  // Returns a function to clean the event listeners.\n  return () => {\n    element.removeEventListener(\"mousedown\", handleStart);\n    handleEnd();\n  };\n}\n\n/**\n * Add the grab & resize functionality to a certain element.\n *\n * @param element Element to move.\n * @param onResized Function to execute when the element is resized.\n *\n * @return A function which will clean the event handlers when executed.\n */\nexport function addResizementListener(\n  element: HTMLElement,\n  onResized: (x: Position[\"x\"], y: Position[\"y\"]) => void\n): Function {\n  const minWidth = 15;\n  const minHeight = 15;\n\n  const resizeDraggable = document.createElement(\"div\");\n  resizeDraggable.className = \"resize-draggable\";\n  element.appendChild(resizeDraggable);\n\n  // Container of the resizable element.\n  const container = element.parentElement as HTMLElement;\n  // Store the initial draggable state.\n  const isDraggable = element.draggable;\n  // Init the coordinates.\n  let lastWidth: Size[\"width\"] = 0;\n  let lastHeight: Size[\"height\"] = 0;\n  let lastMouseX: Position[\"x\"] = 0;\n  let lastMouseY: Position[\"y\"] = 0;\n  let mouseElementOffsetX: Position[\"x\"] = 0;\n  let mouseElementOffsetY: Position[\"y\"] = 0;\n  // Init the bounds.\n  let containerBounds = container.getBoundingClientRect();\n  let containerOffset = getOffset(container);\n  let containerTop = containerOffset.top;\n  let containerBottom = containerTop + containerBounds.height;\n  let containerLeft = containerOffset.left;\n  let containerRight = containerLeft + containerBounds.width;\n  let elementOffset = getOffset(element);\n  let elementTop = elementOffset.top;\n  let elementLeft = elementOffset.left;\n  let borderWidth = window.getComputedStyle(element).borderWidth || \"0\";\n  let borderFix = Number.parseInt(borderWidth);\n\n  // Will run onResized 32ms after its last execution.\n  const debouncedResizement = debounce(32, onResized);\n  // Will run onResized one time max every 16ms.\n  const throttledResizement = throttle(16, onResized);\n\n  const handleResize = (e: MouseEvent) => {\n    // Calculate the new element coordinates.\n    let width = lastWidth + (e.pageX - lastMouseX);\n    let height = lastHeight + (e.pageY - lastMouseY);\n\n    if (width === lastWidth && height === lastHeight) return;\n\n    if (\n      width < lastWidth &&\n      e.pageX > elementLeft + (lastWidth - mouseElementOffsetX)\n    )\n      return;\n\n    if (width < minWidth) {\n      // Minimum value.\n      width = minWidth;\n    } else if (width + elementLeft - borderFix / 2 >= containerRight) {\n      // Limit the size to the container.\n      width = containerRight - elementLeft;\n    }\n    if (height < minHeight) {\n      // Minimum value.\n      height = minHeight;\n    } else if (height + elementTop - borderFix / 2 >= containerBottom) {\n      // Limit the size to the container.\n      height = containerBottom - elementTop;\n    }\n\n    // Run the movement events.\n    throttledResizement(width, height);\n    debouncedResizement(width, height);\n\n    // Store the coordinates of the element.\n    lastWidth = width;\n    lastHeight = height;\n    // Store the last mouse coordinates.\n    lastMouseX = e.pageX;\n    lastMouseY = e.pageY;\n  };\n  const handleEnd = () => {\n    // Reset the positions.\n    lastWidth = 0;\n    lastHeight = 0;\n    lastMouseX = 0;\n    lastMouseY = 0;\n    mouseElementOffsetX = 0;\n    mouseElementOffsetY = 0;\n    // Remove the move event.\n    document.removeEventListener(\"mousemove\", handleResize);\n    // Clean itself.\n    document.removeEventListener(\"mouseup\", handleEnd);\n    // Reset the draggable property to its initial state.\n    element.draggable = isDraggable;\n    // Reset the body selection property to a default state.\n    document.body.style.userSelect = \"auto\";\n  };\n  const handleStart = (e: MouseEvent) => {\n    e.stopPropagation();\n\n    // Disable the drag temporarily.\n    element.draggable = false;\n\n    // Store the difference between the cursor and\n    // the initial coordinates of the element.\n    const { width, height } = element.getBoundingClientRect();\n    lastWidth = width;\n    lastHeight = height;\n    // Store the mouse position.\n    lastMouseX = e.pageX;\n    lastMouseY = e.pageY;\n    // Store the relative position between the mouse and the element.\n    mouseElementOffsetX = e.offsetX;\n    mouseElementOffsetY = e.offsetY;\n\n    // Initialize the bounds.\n    containerBounds = container.getBoundingClientRect();\n    containerOffset = getOffset(container);\n    containerTop = containerOffset.top;\n    containerBottom = containerTop + containerBounds.height;\n    containerLeft = containerOffset.left;\n    containerRight = containerLeft + containerBounds.width;\n    elementOffset = getOffset(element);\n    elementTop = elementOffset.top;\n    elementLeft = elementOffset.left;\n\n    // Listen to the mouse movement.\n    document.addEventListener(\"mousemove\", handleResize);\n    // Listen to the moment when the mouse click is not pressed anymore.\n    document.addEventListener(\"mouseup\", handleEnd);\n    // Limit the mouse selection of the body.\n    document.body.style.userSelect = \"none\";\n  };\n\n  // Event to listen the init of the movement.\n  resizeDraggable.addEventListener(\"mousedown\", handleStart);\n\n  // Returns a function to clean the event listeners.\n  return () => {\n    resizeDraggable.remove();\n    handleEnd();\n  };\n}\n\n// TODO: Document and code\nexport function t(text: string): string {\n  return text;\n}\n\nexport function helpTip(text: string): HTMLElement {\n  const container = document.createElement(\"a\");\n  container.className = \"tip\";\n  const icon = document.createElement(\"img\");\n  icon.src = helpTipIcon;\n  icon.className = \"forced_title\";\n  icon.setAttribute(\"alt\", text);\n  icon.setAttribute(\"data-title\", text);\n  icon.setAttribute(\"data-use_title_for_force_title\", \"1\");\n\n  container.appendChild(icon);\n\n  return container;\n}\n\ninterface PeriodSelectorOption {\n  value: number;\n  text: string;\n}\nexport function periodSelector(\n  selectedValue: PeriodSelectorOption[\"value\"] | null,\n  emptyOption: PeriodSelectorOption | null,\n  options: PeriodSelectorOption[],\n  onChange: (value: PeriodSelectorOption[\"value\"]) => void\n): HTMLElement {\n  if (selectedValue === null) selectedValue = 0;\n  const initialValue = emptyOption ? emptyOption.value : 0;\n  let currentValue: number =\n    selectedValue != null ? selectedValue : initialValue;\n  // Main container.\n  const container = document.createElement(\"div\");\n  // Container for the period selector.\n  const periodsContainer = document.createElement(\"div\");\n  const selectPeriods = document.createElement(\"select\");\n  const useManualPeriodsBtn = document.createElement(\"a\");\n  // Container for the custom period input.\n  const manualPeriodsContainer = document.createElement(\"div\");\n  const inputTimeValue = document.createElement(\"input\");\n  const unitsSelect = document.createElement(\"select\");\n  const usePeriodsBtn = document.createElement(\"a\");\n  // Units to multiply the custom period input.\n  const unitOptions: { value: string; text: string }[] = [\n    { value: \"1\", text: t(\"Seconds\").toLowerCase() },\n    { value: \"60\", text: t(\"Minutes\").toLowerCase() },\n    { value: \"3600\", text: t(\"Hours\").toLowerCase() },\n    { value: \"86400\", text: t(\"Days\").toLowerCase() },\n    { value: \"604800\", text: t(\"Weeks\").toLowerCase() },\n    { value: `${86400 * 30}`, text: t(\"Months\").toLowerCase() },\n    { value: `${86400 * 30 * 12}`, text: t(\"Years\").toLowerCase() }\n  ];\n\n  // Will be executed every time the value changes.\n  const handleChange = (value: number) => {\n    currentValue = value;\n    onChange(currentValue);\n  };\n  // Will return the first period option smaller than the value.\n  const findPeriodsOption = (value: number) =>\n    options\n      .sort((a, b) => (a.value < b.value ? 1 : -1))\n      .find(optionVal => value >= optionVal.value);\n  // Will return the first multiple of the value using the custom input multipliers.\n  const findManualPeriodsOptionValue = (value: number) =>\n    unitOptions\n      .map(unitOption => Number.parseInt(unitOption.value))\n      .sort((a, b) => (a < b ? 1 : -1))\n      .find(optionVal => value % optionVal === 0);\n  // Will find and set a valid option for the period selector.\n  const setPeriodsValue = (value: number) => {\n    let option = findPeriodsOption(value);\n    selectPeriods.value = `${option ? option.value : initialValue}`;\n  };\n  // Will transform the value to show the perfect fit for the custom input period.\n  const setManualPeriodsValue = (value: number) => {\n    const optionVal = findManualPeriodsOptionValue(value);\n    if (optionVal) {\n      inputTimeValue.value = `${value / optionVal}`;\n      unitsSelect.value = `${optionVal}`;\n    } else {\n      inputTimeValue.value = `${value}`;\n      unitsSelect.value = \"1\";\n    }\n  };\n\n  // Will modify the value to show the perfect fit for this element and show its container.\n  const showPeriods = () => {\n    let option = findPeriodsOption(currentValue);\n    const newValue = option ? option.value : initialValue;\n    selectPeriods.value = `${newValue}`;\n\n    if (newValue !== currentValue) handleChange(newValue);\n\n    container.replaceChild(periodsContainer, manualPeriodsContainer);\n  };\n  // Will modify the value to show the perfect fit for this element and show its container.\n  const showManualPeriods = () => {\n    const optionVal = findManualPeriodsOptionValue(currentValue);\n\n    if (optionVal) {\n      inputTimeValue.value = `${currentValue / optionVal}`;\n      unitsSelect.value = `${optionVal}`;\n    } else {\n      inputTimeValue.value = `${currentValue}`;\n      unitsSelect.value = \"1\";\n    }\n\n    container.replaceChild(manualPeriodsContainer, periodsContainer);\n  };\n\n  // Append the elements\n\n  periodsContainer.appendChild(selectPeriods);\n  periodsContainer.appendChild(useManualPeriodsBtn);\n\n  manualPeriodsContainer.appendChild(inputTimeValue);\n  manualPeriodsContainer.appendChild(unitsSelect);\n  manualPeriodsContainer.appendChild(usePeriodsBtn);\n\n  if (\n    options.find(option => option.value === selectedValue) ||\n    (emptyOption && emptyOption.value === selectedValue)\n  ) {\n    // Start with the custom periods select.\n    container.appendChild(periodsContainer);\n  } else {\n    // Start with the manual time input\n    container.appendChild(manualPeriodsContainer);\n  }\n\n  // Set and fill the elements.\n\n  // Periods selector.\n\n  selectPeriods.addEventListener(\"change\", (e: Event) =>\n    handleChange(\n      parseIntOr((e.target as HTMLSelectElement).value, initialValue)\n    )\n  );\n  if (emptyOption) {\n    const optionElem = document.createElement(\"option\");\n    optionElem.value = `${emptyOption.value}`;\n    optionElem.text = emptyOption.text;\n    selectPeriods.appendChild(optionElem);\n  }\n  options.forEach(option => {\n    const optionElem = document.createElement(\"option\");\n    optionElem.value = `${option.value}`;\n    optionElem.text = option.text;\n    selectPeriods.appendChild(optionElem);\n  });\n\n  setPeriodsValue(selectedValue);\n\n  useManualPeriodsBtn.appendChild(\n    fontAwesomeIcon(faPencilAlt, t(\"Show manual period input\"), {\n      size: \"small\"\n    })\n  );\n  useManualPeriodsBtn.addEventListener(\"click\", e => {\n    e.preventDefault();\n    showManualPeriods();\n  });\n\n  // Manual periods input.\n\n  inputTimeValue.type = \"number\";\n  inputTimeValue.min = \"0\";\n  inputTimeValue.required = true;\n  inputTimeValue.addEventListener(\"change\", (e: Event) =>\n    handleChange(\n      parseIntOr((e.target as HTMLSelectElement).value, 0) *\n        parseIntOr(unitsSelect.value, 1)\n    )\n  );\n  // Select for time units.\n  unitsSelect.addEventListener(\"change\", (e: Event) =>\n    handleChange(\n      parseIntOr(inputTimeValue.value, 0) *\n        parseIntOr((e.target as HTMLSelectElement).value, 1)\n    )\n  );\n  unitOptions.forEach(option => {\n    const optionElem = document.createElement(\"option\");\n    optionElem.value = `${option.value}`;\n    optionElem.text = option.text;\n    unitsSelect.appendChild(optionElem);\n  });\n\n  setManualPeriodsValue(selectedValue);\n\n  usePeriodsBtn.appendChild(\n    fontAwesomeIcon(faListAlt, t(\"Show periods selector\"), { size: \"small\" })\n  );\n  usePeriodsBtn.addEventListener(\"click\", e => {\n    e.preventDefault();\n    showPeriods();\n  });\n\n  return container;\n}\n\n/**\n * Cuts the text if their length is greater than the selected max length\n * and applies the selected ellipse to the result text.\n * @param str Text to cut\n * @param max Maximum length after cutting the text\n * @param ellipse String to be added to the cutted text\n * @returns Full text or text cutted with the ellipse\n */\nexport function ellipsize(\n  str: string,\n  max: number = 140,\n  ellipse: string = \"…\"\n): string {\n  return str.trim().length > max ? str.substr(0, max).trim() + ellipse : str;\n}\n\n// TODO: Document\nexport function autocompleteInput<T>(\n  initialValue: string | null,\n  onDataRequested: (value: string, done: (data: T[]) => void) => void,\n  renderListElement: (data: T) => HTMLElement,\n  onSelected: (data: T) => string\n): HTMLElement {\n  const container = document.createElement(\"div\");\n  container.classList.add(\"autocomplete\");\n\n  const input = document.createElement(\"input\");\n  input.type = \"text\";\n  input.required = true;\n  if (initialValue !== null) input.value = initialValue;\n\n  const list = document.createElement(\"div\");\n  list.classList.add(\"autocomplete-items\");\n\n  const cleanList = () => {\n    list.innerHTML = \"\";\n  };\n\n  input.addEventListener(\"keyup\", e => {\n    const value = (e.target as HTMLInputElement).value;\n    if (value) {\n      onDataRequested(value, data => {\n        cleanList();\n        if (data instanceof Array) {\n          data.forEach(item => {\n            const listElement = renderListElement(item);\n            listElement.addEventListener(\"click\", () => {\n              input.value = onSelected(item);\n              cleanList();\n            });\n            list.appendChild(listElement);\n          });\n        }\n      });\n    } else {\n      cleanList();\n    }\n  });\n\n  container.appendChild(input);\n  container.appendChild(list);\n\n  return container;\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import {\n  WithModuleProps,\n  LinkedVisualConsoleProps,\n  AnyObject\n} from \"../lib/types\";\n\nimport {\n  modulePropsDecoder,\n  linkedVCPropsDecoder,\n  notEmptyStringOr\n} from \"../lib\";\nimport Item, { ItemType, ItemProps, itemBasePropsDecoder } from \"../Item\";\n\nexport type StaticGraphProps = {\n  type: ItemType.STATIC_GRAPH;\n  imageSrc: string; // URL?\n  showLastValueTooltip: \"default\" | \"enabled\" | \"disabled\";\n  statusImageSrc: string | null; // URL?\n  lastValue: string | null;\n} & ItemProps &\n  WithModuleProps &\n  LinkedVisualConsoleProps;\n\n/**\n * Extract a valid enum value from a raw unknown value.\n * @param showLastValueTooltip Raw value.\n */\nconst parseShowLastValueTooltip = (\n  showLastValueTooltip: unknown\n): StaticGraphProps[\"showLastValueTooltip\"] => {\n  switch (showLastValueTooltip) {\n    case \"default\":\n    case \"enabled\":\n    case \"disabled\":\n      return showLastValueTooltip;\n    default:\n      return \"default\";\n  }\n};\n\n/**\n * Build a valid typed object from a raw object.\n * This will allow us to ensure the type safety.\n *\n * @param data Raw object.\n * @return An object representing the static graph props.\n * @throws Will throw a TypeError if some property\n * is missing from the raw object or have an invalid type.\n */\nexport function staticGraphPropsDecoder(\n  data: AnyObject\n): StaticGraphProps | never {\n  if (typeof data.imageSrc !== \"string\" || data.imageSrc.length === 0) {\n    throw new TypeError(\"invalid image src.\");\n  }\n\n  return {\n    ...itemBasePropsDecoder(data), // Object spread. It will merge the properties of the two objects.\n    type: ItemType.STATIC_GRAPH,\n    imageSrc: data.imageSrc,\n    showLastValueTooltip: parseShowLastValueTooltip(data.showLastValueTooltip),\n    statusImageSrc: notEmptyStringOr(data.statusImageSrc, null),\n    lastValue: notEmptyStringOr(data.lastValue, null),\n    ...modulePropsDecoder(data), // Object spread. It will merge the properties of the two objects.\n    ...linkedVCPropsDecoder(data) // Object spread. It will merge the properties of the two objects.\n  };\n}\n\nexport default class StaticGraph extends Item<StaticGraphProps> {\n  protected createDomElement(): HTMLElement {\n    const imgSrc = this.props.statusImageSrc || this.props.imageSrc;\n    const element = document.createElement(\"div\");\n    element.className = \"static-graph\";\n    element.setAttribute(\"ondragstart\", \"return false;\");\n    element.setAttribute(\"draggable\", \"false\");\n    element.style.backgroundImage = `url(${imgSrc})`;\n    element.style.backgroundRepeat = \"no-repeat\";\n    element.style.backgroundSize = \"contain\";\n    element.style.backgroundPosition = \"center\";\n\n    if (\n      this.props.agentDisabled === true ||\n      this.props.moduleDisabled === true\n    ) {\n      element.style.opacity = \"0.2\";\n    }\n\n    // Show last value in a tooltip.\n    if (\n      this.props.lastValue !== null &&\n      this.props.showLastValueTooltip !== \"disabled\"\n    ) {\n      element.className = \"static-graph image forced_title\";\n      element.setAttribute(\"data-use_title_for_force_title\", \"1\");\n      element.setAttribute(\"data-title\", this.props.lastValue);\n    }\n\n    return element;\n  }\n\n  /**\n   * To update the content element.\n   * @override Item.updateDomElement\n   */\n  protected updateDomElement(element: HTMLElement): void {\n    const imgSrc = this.props.statusImageSrc || this.props.imageSrc;\n    element.style.backgroundImage = `url(${imgSrc})`;\n  }\n}\n","import { LinkedVisualConsoleProps, AnyObject } from \"../lib/types\";\nimport { linkedVCPropsDecoder } from \"../lib\";\nimport Item, { ItemType, ItemProps, itemBasePropsDecoder } from \"../Item\";\n\nexport type IconProps = {\n  type: ItemType.ICON;\n  image: string;\n  imageSrc: string; // URL?\n} & ItemProps &\n  LinkedVisualConsoleProps;\n\n/**\n * Build a valid typed object from a raw object.\n * This will allow us to ensure the type safety.\n *\n * @param data Raw object.\n * @return An object representing the icon props.\n * @throws Will throw a TypeError if some property\n * is missing from the raw object or have an invalid type.\n */\nexport function iconPropsDecoder(data: AnyObject): IconProps | never {\n  if (typeof data.imageSrc !== \"string\" || data.imageSrc.length === 0) {\n    throw new TypeError(\"invalid image src.\");\n  }\n\n  if (typeof data.image !== \"string\" || data.image.length === 0) {\n    throw new TypeError(\"invalid image.\");\n  }\n\n  return {\n    ...itemBasePropsDecoder(data), // Object spread. It will merge the properties of the two objects.\n    type: ItemType.ICON,\n    image: data.image,\n    imageSrc: data.imageSrc,\n    ...linkedVCPropsDecoder(data) // Object spread. It will merge the properties of the two objects.\n  };\n}\n\nexport default class Icon extends Item<IconProps> {\n  protected createDomElement(): HTMLElement {\n    const element = document.createElement(\"div\");\n    element.className = \"icon \" + this.props.image;\n    element.style.backgroundImage = `url(${this.props.imageSrc})`;\n    element.style.backgroundRepeat = \"no-repeat\";\n    element.style.backgroundSize = \"contain\";\n    element.style.backgroundPosition = \"center\";\n\n    return element;\n  }\n\n  /**\n   * To update the content element.\n   * @override Item.updateDomElement\n   */\n  protected updateDomElement(element: HTMLElement): void {\n    element.style.backgroundImage = `url(${this.props.imageSrc})`;\n  }\n}\n","/*!\n * Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n */\nvar prefix = \"fas\";\nvar faAd = {\n  prefix: 'fas',\n  iconName: 'ad',\n  icon: [512, 512, [], \"f641\", \"M157.52 272h36.96L176 218.78 157.52 272zM352 256c-13.23 0-24 10.77-24 24s10.77 24 24 24 24-10.77 24-24-10.77-24-24-24zM464 64H48C21.5 64 0 85.5 0 112v288c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM250.58 352h-16.94c-6.81 0-12.88-4.32-15.12-10.75L211.15 320h-70.29l-7.38 21.25A16 16 0 0 1 118.36 352h-16.94c-11.01 0-18.73-10.85-15.12-21.25L140 176.12A23.995 23.995 0 0 1 162.67 160h26.66A23.99 23.99 0 0 1 212 176.13l53.69 154.62c3.61 10.4-4.11 21.25-15.11 21.25zM424 336c0 8.84-7.16 16-16 16h-16c-4.85 0-9.04-2.27-11.98-5.68-8.62 3.66-18.09 5.68-28.02 5.68-39.7 0-72-32.3-72-72s32.3-72 72-72c8.46 0 16.46 1.73 24 4.42V176c0-8.84 7.16-16 16-16h16c8.84 0 16 7.16 16 16v160z\"]\n};\nvar faAddressBook = {\n  prefix: 'fas',\n  iconName: 'address-book',\n  icon: [448, 512, [], \"f2b9\", \"M436 160c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h320c26.5 0 48-21.5 48-48v-48h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20v-64h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20v-64h20zm-228-32c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H118.4C106 384 96 375.4 96 364.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2z\"]\n};\nvar faAddressCard = {\n  prefix: 'fas',\n  iconName: 'address-card',\n  icon: [576, 512, [], \"f2bb\", \"M528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-352 96c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H86.4C74 384 64 375.4 64 364.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2zM512 312c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-64c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-64c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16z\"]\n};\nvar faAdjust = {\n  prefix: 'fas',\n  iconName: 'adjust',\n  icon: [512, 512, [], \"f042\", \"M8 256c0 136.966 111.033 248 248 248s248-111.034 248-248S392.966 8 256 8 8 119.033 8 256zm248 184V72c101.705 0 184 82.311 184 184 0 101.705-82.311 184-184 184z\"]\n};\nvar faAirFreshener = {\n  prefix: 'fas',\n  iconName: 'air-freshener',\n  icon: [512, 512, [], \"f5d0\", \"M224 160H96C43 160 0 203 0 256V480C0 497.625 14.375 512 32 512H288C305.625 512 320 497.625 320 480V256C320 203 277 160 224 160ZM160 416C115.875 416 80 380.125 80 336S115.875 256 160 256S240 291.875 240 336S204.125 416 160 416ZM224 32C224 14.375 209.625 0 192 0H128C110.375 0 96 14.375 96 32V128H224V32ZM381.781 51.578C383 50.969 384 49.359 384 48C384 46.625 383 45.031 381.781 44.422L352 32L339.562 2.219C338.969 1 337.375 0 336 0S333.031 1 332.406 2.219L320 32L290.219 44.422C289 45.031 288 46.625 288 48C288 49.359 289 50.969 290.219 51.578L320 64L332.406 93.781C333.031 95 334.625 96 336 96S338.969 95 339.562 93.781L352 64L381.781 51.578ZM448 64L460.406 93.781C461.031 95 462.625 96 464 96S466.969 95 467.562 93.781L480 64L509.781 51.578C511 50.969 512 49.359 512 48C512 46.625 511 45.031 509.781 44.422L480 32L467.562 2.219C466.969 1 465.375 0 464 0S461.031 1 460.406 2.219L448 32L418.219 44.422C417 45.031 416 46.625 416 48C416 49.359 417 50.969 418.219 51.578L448 64ZM480 224L467.562 194.219C466.969 193 465.375 192 464 192S461.031 193 460.406 194.219L448 224L418.219 236.422C417 237.031 416 238.625 416 240C416 241.359 417 242.969 418.219 243.578L448 256L460.406 285.781C461.031 287 462.625 288 464 288S466.969 287 467.562 285.781L480 256L509.781 243.578C511 242.969 512 241.359 512 240C512 238.625 511 237.031 509.781 236.422L480 224ZM445.781 147.578C447 146.969 448 145.359 448 144C448 142.625 447 141.031 445.781 140.422L416 128L403.562 98.219C402.969 97 401.375 96 400 96S397.031 97 396.406 98.219L384 128L354.219 140.422C353 141.031 352 142.625 352 144C352 145.359 353 146.969 354.219 147.578L384 160L396.406 189.781C397.031 191 398.625 192 400 192S402.969 191 403.562 189.781L416 160L445.781 147.578Z\"]\n};\nvar faAlignCenter = {\n  prefix: 'fas',\n  iconName: 'align-center',\n  icon: [448, 512, [], \"f037\", \"M432 160H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 256H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM108.1 96h231.81A12.09 12.09 0 0 0 352 83.9V44.09A12.09 12.09 0 0 0 339.91 32H108.1A12.09 12.09 0 0 0 96 44.09V83.9A12.1 12.1 0 0 0 108.1 96zm231.81 256A12.09 12.09 0 0 0 352 339.9v-39.81A12.09 12.09 0 0 0 339.91 288H108.1A12.09 12.09 0 0 0 96 300.09v39.81a12.1 12.1 0 0 0 12.1 12.1z\"]\n};\nvar faAlignJustify = {\n  prefix: 'fas',\n  iconName: 'align-justify',\n  icon: [448, 512, [], \"f039\", \"M432 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-128H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-128H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-128H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faAlignLeft = {\n  prefix: 'fas',\n  iconName: 'align-left',\n  icon: [448, 512, [], \"f036\", \"M12.83 352h262.34A12.82 12.82 0 0 0 288 339.17v-38.34A12.82 12.82 0 0 0 275.17 288H12.83A12.82 12.82 0 0 0 0 300.83v38.34A12.82 12.82 0 0 0 12.83 352zm0-256h262.34A12.82 12.82 0 0 0 288 83.17V44.83A12.82 12.82 0 0 0 275.17 32H12.83A12.82 12.82 0 0 0 0 44.83v38.34A12.82 12.82 0 0 0 12.83 96zM432 160H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 256H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faAlignRight = {\n  prefix: 'fas',\n  iconName: 'align-right',\n  icon: [448, 512, [], \"f038\", \"M16 224h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm416 192H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm3.17-384H172.83A12.82 12.82 0 0 0 160 44.83v38.34A12.82 12.82 0 0 0 172.83 96h262.34A12.82 12.82 0 0 0 448 83.17V44.83A12.82 12.82 0 0 0 435.17 32zm0 256H172.83A12.82 12.82 0 0 0 160 300.83v38.34A12.82 12.82 0 0 0 172.83 352h262.34A12.82 12.82 0 0 0 448 339.17v-38.34A12.82 12.82 0 0 0 435.17 288z\"]\n};\nvar faAllergies = {\n  prefix: 'fas',\n  iconName: 'allergies',\n  icon: [448, 512, [], \"f461\", \"M416 112c-17.6 0-32 14.4-32 32v72c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8V64c0-17.6-14.4-32-32-32s-32 14.4-32 32v152c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8V32c0-17.6-14.4-32-32-32s-32 14.4-32 32v184c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8V64c0-17.6-14.4-32-32-32S96 46.4 96 64v241l-23.6-32.5c-13-17.9-38-21.8-55.9-8.8s-21.8 38-8.8 55.9l125.6 172.7c9 12.4 23.5 19.8 38.8 19.8h197.6c22.3 0 41.6-15.3 46.7-37l26.5-112.7c3.2-13.7 4.9-28.3 5.1-42.3V144c0-17.6-14.4-32-32-32zM176 416c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-96c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm64 128c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-96c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm64 32c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm32 64c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm32-128c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z\"]\n};\nvar faAmbulance = {\n  prefix: 'fas',\n  iconName: 'ambulance',\n  icon: [640, 512, [], \"f0f9\", \"M624 352h-16V243.9c0-12.7-5.1-24.9-14.1-33.9L494 110.1c-9-9-21.2-14.1-33.9-14.1H416V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h16c0 53 43 96 96 96s96-43 96-96h128c0 53 43 96 96 96s96-43 96-96h48c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM160 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm144-248c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48zm176 248c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm80-208H416V144h44.1l99.9 99.9V256z\"]\n};\nvar faAmericanSignLanguageInterpreting = {\n  prefix: 'fas',\n  iconName: 'american-sign-language-interpreting',\n  icon: [640, 512, [], \"f2a3\", \"M290.547 189.039c-20.295-10.149-44.147-11.199-64.739-3.89 42.606 0 71.208 20.475 85.578 50.576 8.576 17.899-5.148 38.071-23.617 38.071 18.429 0 32.211 20.136 23.617 38.071-14.725 30.846-46.123 50.854-80.298 50.854-.557 0-94.471-8.615-94.471-8.615l-66.406 33.347c-9.384 4.693-19.815.379-23.895-7.781L1.86 290.747c-4.167-8.615-1.111-18.897 6.946-23.621l58.072-33.069L108 159.861c6.39-57.245 34.731-109.767 79.743-146.726 11.391-9.448 28.341-7.781 37.51 3.613 9.446 11.394 7.78 28.067-3.612 37.516-12.503 10.559-23.618 22.509-32.509 35.57 21.672-14.729 46.679-24.732 74.186-28.067 14.725-1.945 28.063 8.336 29.73 23.065 1.945 14.728-8.336 28.067-23.062 29.734-16.116 1.945-31.12 7.503-44.178 15.284 26.114-5.713 58.712-3.138 88.079 11.115 13.336 6.669 18.893 22.509 12.224 35.848-6.389 13.06-22.504 18.617-35.564 12.226zm-27.229 69.472c-6.112-12.505-18.338-20.286-32.231-20.286a35.46 35.46 0 0 0-35.565 35.57c0 21.428 17.808 35.57 35.565 35.57 13.893 0 26.119-7.781 32.231-20.286 4.446-9.449 13.614-15.006 23.339-15.284-9.725-.277-18.893-5.835-23.339-15.284zm374.821-37.237c4.168 8.615 1.111 18.897-6.946 23.621l-58.071 33.069L532 352.16c-6.39 57.245-34.731 109.767-79.743 146.726-10.932 9.112-27.799 8.144-37.51-3.613-9.446-11.394-7.78-28.067 3.613-37.516 12.503-10.559 23.617-22.509 32.508-35.57-21.672 14.729-46.679 24.732-74.186 28.067-10.021 2.506-27.552-5.643-29.73-23.065-1.945-14.728 8.336-28.067 23.062-29.734 16.116-1.946 31.12-7.503 44.178-15.284-26.114 5.713-58.712 3.138-88.079-11.115-13.336-6.669-18.893-22.509-12.224-35.848 6.389-13.061 22.505-18.619 35.565-12.227 20.295 10.149 44.147 11.199 64.739 3.89-42.606 0-71.208-20.475-85.578-50.576-8.576-17.899 5.148-38.071 23.617-38.071-18.429 0-32.211-20.136-23.617-38.071 14.033-29.396 44.039-50.887 81.966-50.854l92.803 8.615 66.406-33.347c9.408-4.704 19.828-.354 23.894 7.781l44.455 88.926zm-229.227-18.618c-13.893 0-26.119 7.781-32.231 20.286-4.446 9.449-13.614 15.006-23.339 15.284 9.725.278 18.893 5.836 23.339 15.284 6.112 12.505 18.338 20.286 32.231 20.286a35.46 35.46 0 0 0 35.565-35.57c0-21.429-17.808-35.57-35.565-35.57z\"]\n};\nvar faAnchor = {\n  prefix: 'fas',\n  iconName: 'anchor',\n  icon: [576, 512, [], \"f13d\", \"M12.971 352h32.394C67.172 454.735 181.944 512 288 512c106.229 0 220.853-57.38 242.635-160h32.394c10.691 0 16.045-12.926 8.485-20.485l-67.029-67.029c-4.686-4.686-12.284-4.686-16.971 0l-67.029 67.029c-7.56 7.56-2.206 20.485 8.485 20.485h35.146c-20.29 54.317-84.963 86.588-144.117 94.015V256h52c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-52v-5.47c37.281-13.178 63.995-48.725 64-90.518C384.005 43.772 341.605.738 289.37.01 235.723-.739 192 42.525 192 96c0 41.798 26.716 77.35 64 90.53V192h-52c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h52v190.015c-58.936-7.399-123.82-39.679-144.117-94.015h35.146c10.691 0 16.045-12.926 8.485-20.485l-67.029-67.029c-4.686-4.686-12.284-4.686-16.971 0L4.485 331.515C-3.074 339.074 2.28 352 12.971 352zM288 64c17.645 0 32 14.355 32 32s-14.355 32-32 32-32-14.355-32-32 14.355-32 32-32z\"]\n};\nvar faAngleDoubleDown = {\n  prefix: 'fas',\n  iconName: 'angle-double-down',\n  icon: [320, 512, [], \"f103\", \"M143 256.3L7 120.3c-9.4-9.4-9.4-24.6 0-33.9l22.6-22.6c9.4-9.4 24.6-9.4 33.9 0l96.4 96.4 96.4-96.4c9.4-9.4 24.6-9.4 33.9 0L313 86.3c9.4 9.4 9.4 24.6 0 33.9l-136 136c-9.4 9.5-24.6 9.5-34 .1zm34 192l136-136c9.4-9.4 9.4-24.6 0-33.9l-22.6-22.6c-9.4-9.4-24.6-9.4-33.9 0L160 352.1l-96.4-96.4c-9.4-9.4-24.6-9.4-33.9 0L7 278.3c-9.4 9.4-9.4 24.6 0 33.9l136 136c9.4 9.5 24.6 9.5 34 .1z\"]\n};\nvar faAngleDoubleLeft = {\n  prefix: 'fas',\n  iconName: 'angle-double-left',\n  icon: [448, 512, [], \"f100\", \"M223.7 239l136-136c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9L319.9 256l96.4 96.4c9.4 9.4 9.4 24.6 0 33.9L393.7 409c-9.4 9.4-24.6 9.4-33.9 0l-136-136c-9.5-9.4-9.5-24.6-.1-34zm-192 34l136 136c9.4 9.4 24.6 9.4 33.9 0l22.6-22.6c9.4-9.4 9.4-24.6 0-33.9L127.9 256l96.4-96.4c9.4-9.4 9.4-24.6 0-33.9L201.7 103c-9.4-9.4-24.6-9.4-33.9 0l-136 136c-9.5 9.4-9.5 24.6-.1 34z\"]\n};\nvar faAngleDoubleRight = {\n  prefix: 'fas',\n  iconName: 'angle-double-right',\n  icon: [448, 512, [], \"f101\", \"M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34zm192-34l-136-136c-9.4-9.4-24.6-9.4-33.9 0l-22.6 22.6c-9.4 9.4-9.4 24.6 0 33.9l96.4 96.4-96.4 96.4c-9.4 9.4-9.4 24.6 0 33.9l22.6 22.6c9.4 9.4 24.6 9.4 33.9 0l136-136c9.4-9.2 9.4-24.4 0-33.8z\"]\n};\nvar faAngleDoubleUp = {\n  prefix: 'fas',\n  iconName: 'angle-double-up',\n  icon: [320, 512, [], \"f102\", \"M177 255.7l136 136c9.4 9.4 9.4 24.6 0 33.9l-22.6 22.6c-9.4 9.4-24.6 9.4-33.9 0L160 351.9l-96.4 96.4c-9.4 9.4-24.6 9.4-33.9 0L7 425.7c-9.4-9.4-9.4-24.6 0-33.9l136-136c9.4-9.5 24.6-9.5 34-.1zm-34-192L7 199.7c-9.4 9.4-9.4 24.6 0 33.9l22.6 22.6c9.4 9.4 24.6 9.4 33.9 0l96.4-96.4 96.4 96.4c9.4 9.4 24.6 9.4 33.9 0l22.6-22.6c9.4-9.4 9.4-24.6 0-33.9l-136-136c-9.2-9.4-24.4-9.4-33.8 0z\"]\n};\nvar faAngleDown = {\n  prefix: 'fas',\n  iconName: 'angle-down',\n  icon: [320, 512, [], \"f107\", \"M143 352.3L7 216.3c-9.4-9.4-9.4-24.6 0-33.9l22.6-22.6c9.4-9.4 24.6-9.4 33.9 0l96.4 96.4 96.4-96.4c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9l-136 136c-9.2 9.4-24.4 9.4-33.8 0z\"]\n};\nvar faAngleLeft = {\n  prefix: 'fas',\n  iconName: 'angle-left',\n  icon: [256, 512, [], \"f104\", \"M31.7 239l136-136c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9L127.9 256l96.4 96.4c9.4 9.4 9.4 24.6 0 33.9L201.7 409c-9.4 9.4-24.6 9.4-33.9 0l-136-136c-9.5-9.4-9.5-24.6-.1-34z\"]\n};\nvar faAngleRight = {\n  prefix: 'fas',\n  iconName: 'angle-right',\n  icon: [256, 512, [], \"f105\", \"M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z\"]\n};\nvar faAngleUp = {\n  prefix: 'fas',\n  iconName: 'angle-up',\n  icon: [320, 512, [], \"f106\", \"M177 159.7l136 136c9.4 9.4 9.4 24.6 0 33.9l-22.6 22.6c-9.4 9.4-24.6 9.4-33.9 0L160 255.9l-96.4 96.4c-9.4 9.4-24.6 9.4-33.9 0L7 329.7c-9.4-9.4-9.4-24.6 0-33.9l136-136c9.4-9.5 24.6-9.5 34-.1z\"]\n};\nvar faAngry = {\n  prefix: 'fas',\n  iconName: 'angry',\n  icon: [496, 512, [], \"f556\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM136 240c0-9.3 4.1-17.5 10.5-23.4l-31-9.3c-8.5-2.5-13.3-11.5-10.7-19.9 2.5-8.5 11.4-13.2 19.9-10.7l80 24c8.5 2.5 13.3 11.5 10.7 19.9-2.1 6.9-8.4 11.4-15.3 11.4-.5 0-1.1-.2-1.7-.2.7 2.7 1.7 5.3 1.7 8.2 0 17.7-14.3 32-32 32S136 257.7 136 240zm168 154.2c-27.8-33.4-84.2-33.4-112.1 0-13.5 16.3-38.2-4.2-24.6-20.5 20-24 49.4-37.8 80.6-37.8s60.6 13.8 80.6 37.8c13.8 16.5-11.1 36.6-24.5 20.5zm76.6-186.9l-31 9.3c6.3 5.8 10.5 14.1 10.5 23.4 0 17.7-14.3 32-32 32s-32-14.3-32-32c0-2.9.9-5.6 1.7-8.2-.6.1-1.1.2-1.7.2-6.9 0-13.2-4.5-15.3-11.4-2.5-8.5 2.3-17.4 10.7-19.9l80-24c8.4-2.5 17.4 2.3 19.9 10.7 2.5 8.5-2.3 17.4-10.8 19.9z\"]\n};\nvar faAnkh = {\n  prefix: 'fas',\n  iconName: 'ankh',\n  icon: [320, 512, [], \"f644\", \"M296 256h-44.62C272.46 222.01 288 181.65 288 144 288 55.63 230.69 0 160 0S32 55.63 32 144c0 37.65 15.54 78.01 36.62 112H24c-13.25 0-24 10.74-24 24v32c0 13.25 10.75 24 24 24h96v152c0 13.25 10.75 24 24 24h32c13.25 0 24-10.75 24-24V336h96c13.25 0 24-10.75 24-24v-32c0-13.26-10.75-24-24-24zM160 80c29.61 0 48 24.52 48 64 0 34.66-27.14 78.14-48 100.87-20.86-22.72-48-66.21-48-100.87 0-39.48 18.39-64 48-64z\"]\n};\nvar faAppleAlt = {\n  prefix: 'fas',\n  iconName: 'apple-alt',\n  icon: [448, 512, [], \"f5d1\", \"M350.85 129c25.97 4.67 47.27 18.67 63.92 42 14.65 20.67 24.64 46.67 29.96 78 4.67 28.67 4.32 57.33-1 86-7.99 47.33-23.97 87-47.94 119-28.64 38.67-64.59 58-107.87 58-10.66 0-22.3-3.33-34.96-10-8.66-5.33-18.31-8-28.97-8s-20.3 2.67-28.97 8c-12.66 6.67-24.3 10-34.96 10-43.28 0-79.23-19.33-107.87-58-23.97-32-39.95-71.67-47.94-119-5.32-28.67-5.67-57.33-1-86 5.32-31.33 15.31-57.33 29.96-78 16.65-23.33 37.95-37.33 63.92-42 15.98-2.67 37.95-.33 65.92 7 23.97 6.67 44.28 14.67 60.93 24 16.65-9.33 36.96-17.33 60.93-24 27.98-7.33 49.96-9.67 65.94-7zm-54.94-41c-9.32 8.67-21.65 15-36.96 19-10.66 3.33-22.3 5-34.96 5l-14.98-1c-1.33-9.33-1.33-20 0-32 2.67-24 10.32-42.33 22.97-55 9.32-8.67 21.65-15 36.96-19 10.66-3.33 22.3-5 34.96-5l14.98 1 1 15c0 12.67-1.67 24.33-4.99 35-3.99 15.33-10.31 27.67-18.98 37z\"]\n};\nvar faArchive = {\n  prefix: 'fas',\n  iconName: 'archive',\n  icon: [512, 512, [], \"f187\", \"M32 448c0 17.7 14.3 32 32 32h384c17.7 0 32-14.3 32-32V160H32v288zm160-212c0-6.6 5.4-12 12-12h104c6.6 0 12 5.4 12 12v8c0 6.6-5.4 12-12 12H204c-6.6 0-12-5.4-12-12v-8zM480 32H32C14.3 32 0 46.3 0 64v48c0 8.8 7.2 16 16 16h480c8.8 0 16-7.2 16-16V64c0-17.7-14.3-32-32-32z\"]\n};\nvar faArchway = {\n  prefix: 'fas',\n  iconName: 'archway',\n  icon: [576, 512, [], \"f557\", \"M560 448h-16V96H32v352H16.02c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16H176c8.84 0 16-7.16 16-16V320c0-53.02 42.98-96 96-96s96 42.98 96 96l.02 160v16c0 8.84 7.16 16 16 16H560c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm0-448H16C7.16 0 0 7.16 0 16v32c0 8.84 7.16 16 16 16h544c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16z\"]\n};\nvar faArrowAltCircleDown = {\n  prefix: 'fas',\n  iconName: 'arrow-alt-circle-down',\n  icon: [512, 512, [], \"f358\", \"M504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zM212 140v116h-70.9c-10.7 0-16.1 13-8.5 20.5l114.9 114.3c4.7 4.7 12.2 4.7 16.9 0l114.9-114.3c7.6-7.6 2.2-20.5-8.5-20.5H300V140c0-6.6-5.4-12-12-12h-64c-6.6 0-12 5.4-12 12z\"]\n};\nvar faArrowAltCircleLeft = {\n  prefix: 'fas',\n  iconName: 'arrow-alt-circle-left',\n  icon: [512, 512, [], \"f359\", \"M256 504C119 504 8 393 8 256S119 8 256 8s248 111 248 248-111 248-248 248zm116-292H256v-70.9c0-10.7-13-16.1-20.5-8.5L121.2 247.5c-4.7 4.7-4.7 12.2 0 16.9l114.3 114.9c7.6 7.6 20.5 2.2 20.5-8.5V300h116c6.6 0 12-5.4 12-12v-64c0-6.6-5.4-12-12-12z\"]\n};\nvar faArrowAltCircleRight = {\n  prefix: 'fas',\n  iconName: 'arrow-alt-circle-right',\n  icon: [512, 512, [], \"f35a\", \"M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zM140 300h116v70.9c0 10.7 13 16.1 20.5 8.5l114.3-114.9c4.7-4.7 4.7-12.2 0-16.9l-114.3-115c-7.6-7.6-20.5-2.2-20.5 8.5V212H140c-6.6 0-12 5.4-12 12v64c0 6.6 5.4 12 12 12z\"]\n};\nvar faArrowAltCircleUp = {\n  prefix: 'fas',\n  iconName: 'arrow-alt-circle-up',\n  icon: [512, 512, [], \"f35b\", \"M8 256C8 119 119 8 256 8s248 111 248 248-111 248-248 248S8 393 8 256zm292 116V256h70.9c10.7 0 16.1-13 8.5-20.5L264.5 121.2c-4.7-4.7-12.2-4.7-16.9 0l-115 114.3c-7.6 7.6-2.2 20.5 8.5 20.5H212v116c0 6.6 5.4 12 12 12h64c6.6 0 12-5.4 12-12z\"]\n};\nvar faArrowCircleDown = {\n  prefix: 'fas',\n  iconName: 'arrow-circle-down',\n  icon: [512, 512, [], \"f0ab\", \"M504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-143.6-28.9L288 302.6V120c0-13.3-10.7-24-24-24h-16c-13.3 0-24 10.7-24 24v182.6l-72.4-75.5c-9.3-9.7-24.8-9.9-34.3-.4l-10.9 11c-9.4 9.4-9.4 24.6 0 33.9L239 404.3c9.4 9.4 24.6 9.4 33.9 0l132.7-132.7c9.4-9.4 9.4-24.6 0-33.9l-10.9-11c-9.5-9.5-25-9.3-34.3.4z\"]\n};\nvar faArrowCircleLeft = {\n  prefix: 'fas',\n  iconName: 'arrow-circle-left',\n  icon: [512, 512, [], \"f0a8\", \"M256 504C119 504 8 393 8 256S119 8 256 8s248 111 248 248-111 248-248 248zm28.9-143.6L209.4 288H392c13.3 0 24-10.7 24-24v-16c0-13.3-10.7-24-24-24H209.4l75.5-72.4c9.7-9.3 9.9-24.8.4-34.3l-11-10.9c-9.4-9.4-24.6-9.4-33.9 0L107.7 239c-9.4 9.4-9.4 24.6 0 33.9l132.7 132.7c9.4 9.4 24.6 9.4 33.9 0l11-10.9c9.5-9.5 9.3-25-.4-34.3z\"]\n};\nvar faArrowCircleRight = {\n  prefix: 'fas',\n  iconName: 'arrow-circle-right',\n  icon: [512, 512, [], \"f0a9\", \"M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zm-28.9 143.6l75.5 72.4H120c-13.3 0-24 10.7-24 24v16c0 13.3 10.7 24 24 24h182.6l-75.5 72.4c-9.7 9.3-9.9 24.8-.4 34.3l11 10.9c9.4 9.4 24.6 9.4 33.9 0L404.3 273c9.4-9.4 9.4-24.6 0-33.9L271.6 106.3c-9.4-9.4-24.6-9.4-33.9 0l-11 10.9c-9.5 9.6-9.3 25.1.4 34.4z\"]\n};\nvar faArrowCircleUp = {\n  prefix: 'fas',\n  iconName: 'arrow-circle-up',\n  icon: [512, 512, [], \"f0aa\", \"M8 256C8 119 119 8 256 8s248 111 248 248-111 248-248 248S8 393 8 256zm143.6 28.9l72.4-75.5V392c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24V209.4l72.4 75.5c9.3 9.7 24.8 9.9 34.3.4l10.9-11c9.4-9.4 9.4-24.6 0-33.9L273 107.7c-9.4-9.4-24.6-9.4-33.9 0L106.3 240.4c-9.4 9.4-9.4 24.6 0 33.9l10.9 11c9.6 9.5 25.1 9.3 34.4-.4z\"]\n};\nvar faArrowDown = {\n  prefix: 'fas',\n  iconName: 'arrow-down',\n  icon: [448, 512, [], \"f063\", \"M413.1 222.5l22.2 22.2c9.4 9.4 9.4 24.6 0 33.9L241 473c-9.4 9.4-24.6 9.4-33.9 0L12.7 278.6c-9.4-9.4-9.4-24.6 0-33.9l22.2-22.2c9.5-9.5 25-9.3 34.3.4L184 343.4V56c0-13.3 10.7-24 24-24h32c13.3 0 24 10.7 24 24v287.4l114.8-120.5c9.3-9.8 24.8-10 34.3-.4z\"]\n};\nvar faArrowLeft = {\n  prefix: 'fas',\n  iconName: 'arrow-left',\n  icon: [448, 512, [], \"f060\", \"M257.5 445.1l-22.2 22.2c-9.4 9.4-24.6 9.4-33.9 0L7 273c-9.4-9.4-9.4-24.6 0-33.9L201.4 44.7c9.4-9.4 24.6-9.4 33.9 0l22.2 22.2c9.5 9.5 9.3 25-.4 34.3L136.6 216H424c13.3 0 24 10.7 24 24v32c0 13.3-10.7 24-24 24H136.6l120.5 114.8c9.8 9.3 10 24.8.4 34.3z\"]\n};\nvar faArrowRight = {\n  prefix: 'fas',\n  iconName: 'arrow-right',\n  icon: [448, 512, [], \"f061\", \"M190.5 66.9l22.2-22.2c9.4-9.4 24.6-9.4 33.9 0L441 239c9.4 9.4 9.4 24.6 0 33.9L246.6 467.3c-9.4 9.4-24.6 9.4-33.9 0l-22.2-22.2c-9.5-9.5-9.3-25 .4-34.3L311.4 296H24c-13.3 0-24-10.7-24-24v-32c0-13.3 10.7-24 24-24h287.4L190.9 101.2c-9.8-9.3-10-24.8-.4-34.3z\"]\n};\nvar faArrowUp = {\n  prefix: 'fas',\n  iconName: 'arrow-up',\n  icon: [448, 512, [], \"f062\", \"M34.9 289.5l-22.2-22.2c-9.4-9.4-9.4-24.6 0-33.9L207 39c9.4-9.4 24.6-9.4 33.9 0l194.3 194.3c9.4 9.4 9.4 24.6 0 33.9L413 289.4c-9.5 9.5-25 9.3-34.3-.4L264 168.6V456c0 13.3-10.7 24-24 24h-32c-13.3 0-24-10.7-24-24V168.6L69.2 289.1c-9.3 9.8-24.8 10-34.3.4z\"]\n};\nvar faArrowsAlt = {\n  prefix: 'fas',\n  iconName: 'arrows-alt',\n  icon: [512, 512, [], \"f0b2\", \"M352.201 425.775l-79.196 79.196c-9.373 9.373-24.568 9.373-33.941 0l-79.196-79.196c-15.119-15.119-4.411-40.971 16.971-40.97h51.162L228 284H127.196v51.162c0 21.382-25.851 32.09-40.971 16.971L7.029 272.937c-9.373-9.373-9.373-24.569 0-33.941L86.225 159.8c15.119-15.119 40.971-4.411 40.971 16.971V228H228V127.196h-51.23c-21.382 0-32.09-25.851-16.971-40.971l79.196-79.196c9.373-9.373 24.568-9.373 33.941 0l79.196 79.196c15.119 15.119 4.411 40.971-16.971 40.971h-51.162V228h100.804v-51.162c0-21.382 25.851-32.09 40.97-16.971l79.196 79.196c9.373 9.373 9.373 24.569 0 33.941L425.773 352.2c-15.119 15.119-40.971 4.411-40.97-16.971V284H284v100.804h51.23c21.382 0 32.09 25.851 16.971 40.971z\"]\n};\nvar faArrowsAltH = {\n  prefix: 'fas',\n  iconName: 'arrows-alt-h',\n  icon: [512, 512, [], \"f337\", \"M377.941 169.941V216H134.059v-46.059c0-21.382-25.851-32.09-40.971-16.971L7.029 239.029c-9.373 9.373-9.373 24.568 0 33.941l86.059 86.059c15.119 15.119 40.971 4.411 40.971-16.971V296h243.882v46.059c0 21.382 25.851 32.09 40.971 16.971l86.059-86.059c9.373-9.373 9.373-24.568 0-33.941l-86.059-86.059c-15.119-15.12-40.971-4.412-40.971 16.97z\"]\n};\nvar faArrowsAltV = {\n  prefix: 'fas',\n  iconName: 'arrows-alt-v',\n  icon: [256, 512, [], \"f338\", \"M214.059 377.941H168V134.059h46.059c21.382 0 32.09-25.851 16.971-40.971L144.971 7.029c-9.373-9.373-24.568-9.373-33.941 0L24.971 93.088c-15.119 15.119-4.411 40.971 16.971 40.971H88v243.882H41.941c-21.382 0-32.09 25.851-16.971 40.971l86.059 86.059c9.373 9.373 24.568 9.373 33.941 0l86.059-86.059c15.12-15.119 4.412-40.971-16.97-40.971z\"]\n};\nvar faAssistiveListeningSystems = {\n  prefix: 'fas',\n  iconName: 'assistive-listening-systems',\n  icon: [512, 512, [], \"f2a2\", \"M216 260c0 15.464-12.536 28-28 28s-28-12.536-28-28c0-44.112 35.888-80 80-80s80 35.888 80 80c0 15.464-12.536 28-28 28s-28-12.536-28-28c0-13.234-10.767-24-24-24s-24 10.766-24 24zm24-176c-97.047 0-176 78.953-176 176 0 15.464 12.536 28 28 28s28-12.536 28-28c0-66.168 53.832-120 120-120s120 53.832 120 120c0 75.164-71.009 70.311-71.997 143.622L288 404c0 28.673-23.327 52-52 52-15.464 0-28 12.536-28 28s12.536 28 28 28c59.475 0 107.876-48.328 108-107.774.595-34.428 72-48.24 72-144.226 0-97.047-78.953-176-176-176zm-80 236c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zM32 448c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm480-187.993c0-1.518-.012-3.025-.045-4.531C510.076 140.525 436.157 38.47 327.994 1.511c-14.633-4.998-30.549 2.809-35.55 17.442-5 14.633 2.81 30.549 17.442 35.55 85.906 29.354 144.61 110.513 146.077 201.953l.003.188c.026 1.118.033 2.236.033 3.363 0 15.464 12.536 28 28 28s28.001-12.536 28.001-28zM152.971 439.029l-80-80L39.03 392.97l80 80 33.941-33.941z\"]\n};\nvar faAsterisk = {\n  prefix: 'fas',\n  iconName: 'asterisk',\n  icon: [512, 512, [], \"f069\", \"M478.21 334.093L336 256l142.21-78.093c11.795-6.477 15.961-21.384 9.232-33.037l-19.48-33.741c-6.728-11.653-21.72-15.499-33.227-8.523L296 186.718l3.475-162.204C299.763 11.061 288.937 0 275.48 0h-38.96c-13.456 0-24.283 11.061-23.994 24.514L216 186.718 77.265 102.607c-11.506-6.976-26.499-3.13-33.227 8.523l-19.48 33.741c-6.728 11.653-2.562 26.56 9.233 33.037L176 256 33.79 334.093c-11.795 6.477-15.961 21.384-9.232 33.037l19.48 33.741c6.728 11.653 21.721 15.499 33.227 8.523L216 325.282l-3.475 162.204C212.237 500.939 223.064 512 236.52 512h38.961c13.456 0 24.283-11.061 23.995-24.514L296 325.282l138.735 84.111c11.506 6.976 26.499 3.13 33.227-8.523l19.48-33.741c6.728-11.653 2.563-26.559-9.232-33.036z\"]\n};\nvar faAt = {\n  prefix: 'fas',\n  iconName: 'at',\n  icon: [512, 512, [], \"f1fa\", \"M256 8C118.941 8 8 118.919 8 256c0 137.059 110.919 248 248 248 48.154 0 95.342-14.14 135.408-40.223 12.005-7.815 14.625-24.288 5.552-35.372l-10.177-12.433c-7.671-9.371-21.179-11.667-31.373-5.129C325.92 429.757 291.314 440 256 440c-101.458 0-184-82.542-184-184S154.542 72 256 72c100.139 0 184 57.619 184 160 0 38.786-21.093 79.742-58.17 83.693-17.349-.454-16.91-12.857-13.476-30.024l23.433-121.11C394.653 149.75 383.308 136 368.225 136h-44.981a13.518 13.518 0 0 0-13.432 11.993l-.01.092c-14.697-17.901-40.448-21.775-59.971-21.775-74.58 0-137.831 62.234-137.831 151.46 0 65.303 36.785 105.87 96 105.87 26.984 0 57.369-15.637 74.991-38.333 9.522 34.104 40.613 34.103 70.71 34.103C462.609 379.41 504 307.798 504 232 504 95.653 394.023 8 256 8zm-21.68 304.43c-22.249 0-36.07-15.623-36.07-40.771 0-44.993 30.779-72.729 58.63-72.729 22.292 0 35.601 15.241 35.601 40.77 0 45.061-33.875 72.73-58.161 72.73z\"]\n};\nvar faAtlas = {\n  prefix: 'fas',\n  iconName: 'atlas',\n  icon: [448, 512, [], \"f558\", \"M318.38 208h-39.09c-1.49 27.03-6.54 51.35-14.21 70.41 27.71-13.24 48.02-39.19 53.3-70.41zm0-32c-5.29-31.22-25.59-57.17-53.3-70.41 7.68 19.06 12.72 43.38 14.21 70.41h39.09zM224 97.31c-7.69 7.45-20.77 34.42-23.43 78.69h46.87c-2.67-44.26-15.75-71.24-23.44-78.69zm-41.08 8.28c-27.71 13.24-48.02 39.19-53.3 70.41h39.09c1.49-27.03 6.53-51.35 14.21-70.41zm0 172.82c-7.68-19.06-12.72-43.38-14.21-70.41h-39.09c5.28 31.22 25.59 57.17 53.3 70.41zM247.43 208h-46.87c2.66 44.26 15.74 71.24 23.43 78.69 7.7-7.45 20.78-34.43 23.44-78.69zM448 358.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM224 64c70.69 0 128 57.31 128 128s-57.31 128-128 128S96 262.69 96 192 153.31 64 224 64zm160 384H96c-19.2 0-32-12.8-32-32s16-32 32-32h288v64z\"]\n};\nvar faAtom = {\n  prefix: 'fas',\n  iconName: 'atom',\n  icon: [448, 512, [], \"f5d2\", \"M223.99908,224a32,32,0,1,0,32.00782,32A32.06431,32.06431,0,0,0,223.99908,224Zm214.172-96c-10.877-19.5-40.50979-50.75-116.27544-41.875C300.39168,34.875,267.63386,0,223.99908,0s-76.39066,34.875-97.89653,86.125C50.3369,77.375,20.706,108.5,9.82907,128-6.54984,157.375-5.17484,201.125,34.958,256-5.17484,310.875-6.54984,354.625,9.82907,384c29.13087,52.375,101.64652,43.625,116.27348,41.875C147.60842,477.125,180.36429,512,223.99908,512s76.3926-34.875,97.89652-86.125c14.62891,1.75,87.14456,10.5,116.27544-41.875C454.55,354.625,453.175,310.875,413.04017,256,453.175,201.125,454.55,157.375,438.171,128ZM63.33886,352c-4-7.25-.125-24.75,15.00391-48.25,6.87695,6.5,14.12891,12.875,21.88087,19.125,1.625,13.75,4,27.125,6.75,40.125C82.34472,363.875,67.09081,358.625,63.33886,352Zm36.88478-162.875c-7.752,6.25-15.00392,12.625-21.88087,19.125-15.12891-23.5-19.00392-41-15.00391-48.25,3.377-6.125,16.37891-11.5,37.88478-11.5,1.75,0,3.875.375,5.75.375C104.09864,162.25,101.84864,175.625,100.22364,189.125ZM223.99908,64c9.50195,0,22.25586,13.5,33.88282,37.25-11.252,3.75-22.50391,8-33.88282,12.875-11.377-4.875-22.62892-9.125-33.88283-12.875C201.74516,77.5,214.49712,64,223.99908,64Zm0,384c-9.502,0-22.25392-13.5-33.88283-37.25,11.25391-3.75,22.50587-8,33.88283-12.875C235.378,402.75,246.62994,407,257.8819,410.75,246.25494,434.5,233.501,448,223.99908,448Zm0-112a80,80,0,1,1,80-80A80.00023,80.00023,0,0,1,223.99908,336ZM384.6593,352c-3.625,6.625-19.00392,11.875-43.63479,11,2.752-13,5.127-26.375,6.752-40.125,7.75195-6.25,15.00391-12.625,21.87891-19.125C384.7843,327.25,388.6593,344.75,384.6593,352ZM369.65538,208.25c-6.875-6.5-14.127-12.875-21.87891-19.125-1.625-13.5-3.875-26.875-6.752-40.25,1.875,0,4.002-.375,5.752-.375,21.50391,0,34.50782,5.375,37.88283,11.5C388.6593,167.25,384.7843,184.75,369.65538,208.25Z\"]\n};\nvar faAudioDescription = {\n  prefix: 'fas',\n  iconName: 'audio-description',\n  icon: [512, 512, [], \"f29e\", \"M162.925 238.709l8.822 30.655h-25.606l9.041-30.652c1.277-4.421 2.651-9.994 3.872-15.245 1.22 5.251 2.594 10.823 3.871 15.242zm166.474-32.099h-14.523v98.781h14.523c29.776 0 46.175-17.678 46.175-49.776 0-32.239-17.49-49.005-46.175-49.005zM512 112v288c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48zM245.459 336.139l-57.097-168A12.001 12.001 0 0 0 177 160h-35.894a12.001 12.001 0 0 0-11.362 8.139l-57.097 168C70.003 343.922 75.789 352 84.009 352h29.133a12 12 0 0 0 11.535-8.693l8.574-29.906h51.367l8.793 29.977A12 12 0 0 0 204.926 352h29.172c8.22 0 14.006-8.078 11.361-15.861zm184.701-80.525c0-58.977-37.919-95.614-98.96-95.614h-57.366c-6.627 0-12 5.373-12 12v168c0 6.627 5.373 12 12 12H331.2c61.041 0 98.96-36.933 98.96-96.386z\"]\n};\nvar faAward = {\n  prefix: 'fas',\n  iconName: 'award',\n  icon: [384, 512, [], \"f559\", \"M97.12 362.63c-8.69-8.69-4.16-6.24-25.12-11.85-9.51-2.55-17.87-7.45-25.43-13.32L1.2 448.7c-4.39 10.77 3.81 22.47 15.43 22.03l52.69-2.01L105.56 507c8 8.44 22.04 5.81 26.43-4.96l52.05-127.62c-10.84 6.04-22.87 9.58-35.31 9.58-19.5 0-37.82-7.59-51.61-21.37zM382.8 448.7l-45.37-111.24c-7.56 5.88-15.92 10.77-25.43 13.32-21.07 5.64-16.45 3.18-25.12 11.85-13.79 13.78-32.12 21.37-51.62 21.37-12.44 0-24.47-3.55-35.31-9.58L252 502.04c4.39 10.77 18.44 13.4 26.43 4.96l36.25-38.28 52.69 2.01c11.62.44 19.82-11.27 15.43-22.03zM263 340c15.28-15.55 17.03-14.21 38.79-20.14 13.89-3.79 24.75-14.84 28.47-28.98 7.48-28.4 5.54-24.97 25.95-45.75 10.17-10.35 14.14-25.44 10.42-39.58-7.47-28.38-7.48-24.42 0-52.83 3.72-14.14-.25-29.23-10.42-39.58-20.41-20.78-18.47-17.36-25.95-45.75-3.72-14.14-14.58-25.19-28.47-28.98-27.88-7.61-24.52-5.62-44.95-26.41-10.17-10.35-25-14.4-38.89-10.61-27.87 7.6-23.98 7.61-51.9 0-13.89-3.79-28.72.25-38.89 10.61-20.41 20.78-17.05 18.8-44.94 26.41-13.89 3.79-24.75 14.84-28.47 28.98-7.47 28.39-5.54 24.97-25.95 45.75-10.17 10.35-14.15 25.44-10.42 39.58 7.47 28.36 7.48 24.4 0 52.82-3.72 14.14.25 29.23 10.42 39.59 20.41 20.78 18.47 17.35 25.95 45.75 3.72 14.14 14.58 25.19 28.47 28.98C104.6 325.96 106.27 325 121 340c13.23 13.47 33.84 15.88 49.74 5.82a39.676 39.676 0 0 1 42.53 0c15.89 10.06 36.5 7.65 49.73-5.82zM97.66 175.96c0-53.03 42.24-96.02 94.34-96.02s94.34 42.99 94.34 96.02-42.24 96.02-94.34 96.02-94.34-42.99-94.34-96.02z\"]\n};\nvar faBaby = {\n  prefix: 'fas',\n  iconName: 'baby',\n  icon: [384, 512, [], \"f77c\", \"M192 160c44.2 0 80-35.8 80-80S236.2 0 192 0s-80 35.8-80 80 35.8 80 80 80zm-53.4 248.8l25.6-32-61.5-51.2L56.8 383c-11.4 14.2-11.7 34.4-.8 49l48 64c7.9 10.5 19.9 16 32 16 8.3 0 16.8-2.6 24-8 17.7-13.2 21.2-38.3 8-56l-29.4-39.2zm142.7-83.2l-61.5 51.2 25.6 32L216 448c-13.2 17.7-9.7 42.8 8 56 7.2 5.4 15.6 8 24 8 12.2 0 24.2-5.5 32-16l48-64c10.9-14.6 10.6-34.8-.8-49l-45.9-57.4zM376.7 145c-12.7-18.1-37.6-22.4-55.7-9.8l-40.6 28.5c-52.7 37-124.2 37-176.8 0L63 135.3C44.9 122.6 20 127 7.3 145-5.4 163.1-1 188 17 200.7l40.6 28.5c17 11.9 35.4 20.9 54.4 27.9V288h160v-30.8c19-7 37.4-16 54.4-27.9l40.6-28.5c18.1-12.8 22.4-37.7 9.7-55.8z\"]\n};\nvar faBabyCarriage = {\n  prefix: 'fas',\n  iconName: 'baby-carriage',\n  icon: [512, 512, [], \"f77d\", \"M144.8 17c-11.3-17.8-37.2-22.8-54-9.4C35.3 51.9 0 118 0 192h256L144.8 17zM496 96h-48c-35.3 0-64 28.7-64 64v64H0c0 50.6 23 96.4 60.3 130.7C25.7 363.6 0 394.7 0 432c0 44.2 35.8 80 80 80s80-35.8 80-80c0-8.9-1.8-17.2-4.4-25.2 21.6 5.9 44.6 9.2 68.4 9.2s46.9-3.3 68.4-9.2c-2.7 8-4.4 16.3-4.4 25.2 0 44.2 35.8 80 80 80s80-35.8 80-80c0-37.3-25.7-68.4-60.3-77.3C425 320.4 448 274.6 448 224v-64h48c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM80 464c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32zm320-32c0 17.6-14.4 32-32 32s-32-14.4-32-32 14.4-32 32-32 32 14.4 32 32z\"]\n};\nvar faBackspace = {\n  prefix: 'fas',\n  iconName: 'backspace',\n  icon: [640, 512, [], \"f55a\", \"M576 64H205.26A63.97 63.97 0 0 0 160 82.75L9.37 233.37c-12.5 12.5-12.5 32.76 0 45.25L160 429.25c12 12 28.28 18.75 45.25 18.75H576c35.35 0 64-28.65 64-64V128c0-35.35-28.65-64-64-64zm-84.69 254.06c6.25 6.25 6.25 16.38 0 22.63l-22.62 22.62c-6.25 6.25-16.38 6.25-22.63 0L384 301.25l-62.06 62.06c-6.25 6.25-16.38 6.25-22.63 0l-22.62-22.62c-6.25-6.25-6.25-16.38 0-22.63L338.75 256l-62.06-62.06c-6.25-6.25-6.25-16.38 0-22.63l22.62-22.62c6.25-6.25 16.38-6.25 22.63 0L384 210.75l62.06-62.06c6.25-6.25 16.38-6.25 22.63 0l22.62 22.62c6.25 6.25 6.25 16.38 0 22.63L429.25 256l62.06 62.06z\"]\n};\nvar faBackward = {\n  prefix: 'fas',\n  iconName: 'backward',\n  icon: [512, 512, [], \"f04a\", \"M11.5 280.6l192 160c20.6 17.2 52.5 2.8 52.5-24.6V96c0-27.4-31.9-41.8-52.5-24.6l-192 160c-15.3 12.8-15.3 36.4 0 49.2zm256 0l192 160c20.6 17.2 52.5 2.8 52.5-24.6V96c0-27.4-31.9-41.8-52.5-24.6l-192 160c-15.3 12.8-15.3 36.4 0 49.2z\"]\n};\nvar faBacon = {\n  prefix: 'fas',\n  iconName: 'bacon',\n  icon: [576, 512, [], \"f7e5\", \"M218.92 336.39c34.89-34.89 44.2-59.7 54.05-86 10.61-28.29 21.59-57.54 61.37-97.34s69.05-50.77 97.35-61.38c23.88-9 46.64-17.68 76.79-45.37L470.81 8.91a31 31 0 0 0-40.18-2.83c-13.64 10.1-25.15 14.39-41 20.3C247 79.52 209.26 191.29 200.65 214.1c-29.75 78.83-89.55 94.68-98.72 98.09-24.86 9.26-54.73 20.38-91.07 50.36C-3 374-3.63 395 9.07 407.61l35.76 35.51C80 410.52 107 400.15 133 390.39c26.27-9.84 51.06-19.12 85.92-54zm348-232l-35.75-35.51c-35.19 32.63-62.18 43-88.25 52.79-26.26 9.85-51.06 19.16-85.95 54s-44.19 59.69-54 86C292.33 290 281.34 319.22 241.55 359s-69 50.73-97.3 61.32c-23.86 9-46.61 17.66-76.72 45.33l37.68 37.43a31 31 0 0 0 40.18 2.82c13.6-10.06 25.09-14.34 40.94-20.24 142.2-53 180-164.1 188.94-187.69C405 219.18 464.8 203.3 474 199.86c24.87-9.27 54.74-20.4 91.11-50.41 13.89-11.4 14.52-32.45 1.82-45.05z\"]\n};\nvar faBacteria = {\n  prefix: 'fas',\n  iconName: 'bacteria',\n  icon: [640, 512, [], \"e059\", \"M272.35,226.4A17.71,17.71,0,0,0,281.46,203l-4-9.08a121.29,121.29,0,0,1,12.36-3.08A83.34,83.34,0,0,0,323.57,177l10,9a17.76,17.76,0,1,0,23.92-26.27l-9.72-8.76a83.12,83.12,0,0,0,11.65-48.18l11.85-3.51a17.73,17.73,0,1,0-10.15-34l-11.34,3.36a84,84,0,0,0-36.38-35.57l2.84-10.85a17.8,17.8,0,0,0-34.47-8.93l-2.82,10.78a83.25,83.25,0,0,0-16.74,1.1C250.83,27,240,30.22,229.1,33.39l-3.38-9.46a17.8,17.8,0,0,0-33.56,11.89l3.49,9.8a286.74,286.74,0,0,0-43.94,23.57l-6.32-8.43a17.9,17.9,0,0,0-24.94-3.6A17.69,17.69,0,0,0,116.84,82l6.45,8.61a286.59,286.59,0,0,0-34.95,35.33l-8.82-6.42a17.84,17.84,0,0,0-24.89,3.86,17.66,17.66,0,0,0,3.88,24.77l8.88,6.47a286.6,286.6,0,0,0-23,43.91l-10.48-3.59a17.73,17.73,0,1,0-11.59,33.52L32.67,232c-2.79,10-5.79,19.84-7.52,30.22a83.16,83.16,0,0,0-.82,19l-11.58,3.43a17.73,17.73,0,1,0,10.13,34l11.27-3.33a83.51,83.51,0,0,0,36.39,35.43l-2.88,11.06a17.81,17.81,0,0,0,34.48,8.92l2.87-11c1,0,2.07.26,3.1.26a83.39,83.39,0,0,0,45.65-13.88l8.59,8.8a17.77,17.77,0,0,0,25.56-24.7l-9.14-9.37a83.41,83.41,0,0,0,12.08-31.05,119.08,119.08,0,0,1,3.87-15.53l9,4.22a17.74,17.74,0,1,0,15.15-32.09l-8.8-4.11c.67-1,1.2-2.08,1.9-3.05a119.89,119.89,0,0,1,7.87-9.41,121.73,121.73,0,0,1,11.65-11.4,119.49,119.49,0,0,1,9.94-7.82c1.12-.77,2.32-1.42,3.47-2.15l3.92,8.85a17.86,17.86,0,0,0,16.32,10.58A18.14,18.14,0,0,0,272.35,226.4ZM128,256a32,32,0,1,1,32-32A32,32,0,0,1,128,256Zm80-96a16,16,0,1,1,16-16A16,16,0,0,1,208,160Zm431.26,45.3a17.79,17.79,0,0,0-17.06-12.69,17.55,17.55,0,0,0-5.08.74l-11.27,3.33a83.61,83.61,0,0,0-36.39-35.43l2.88-11.06a17.81,17.81,0,0,0-34.48-8.91l-2.87,11c-1,0-2.07-.26-3.1-.26a83.32,83.32,0,0,0-45.65,13.89l-8.59-8.81a17.77,17.77,0,0,0-25.56,24.7l9.14,9.37a83.28,83.28,0,0,0-12.08,31.06,119.34,119.34,0,0,1-3.87,15.52l-9-4.22a17.74,17.74,0,1,0-15.15,32.09l8.8,4.11c-.67,1-1.2,2.08-1.89,3.05a117.71,117.71,0,0,1-7.94,9.47,119,119,0,0,1-11.57,11.33,121.59,121.59,0,0,1-10,7.83c-1.12.77-2.32,1.42-3.47,2.15l-3.92-8.85a17.86,17.86,0,0,0-16.32-10.58,18.14,18.14,0,0,0-7.18,1.5A17.71,17.71,0,0,0,358.54,309l4,9.08a118.71,118.71,0,0,1-12.36,3.08,83.34,83.34,0,0,0-33.77,13.9l-10-9a17.77,17.77,0,1,0-23.92,26.28l9.72,8.75a83.12,83.12,0,0,0-11.65,48.18l-11.86,3.51a17.73,17.73,0,1,0,10.16,34l11.34-3.36A84,84,0,0,0,326.61,479l-2.84,10.85a17.8,17.8,0,0,0,34.47,8.93L361.06,488a83.3,83.3,0,0,0,16.74-1.1c11.37-1.89,22.24-5.07,33.1-8.24l3.38,9.46a17.8,17.8,0,0,0,33.56-11.89l-3.49-9.79a287.66,287.66,0,0,0,43.94-23.58l6.32,8.43a17.88,17.88,0,0,0,24.93,3.6A17.67,17.67,0,0,0,523.16,430l-6.45-8.61a287.37,287.37,0,0,0,34.95-35.34l8.82,6.42a17.76,17.76,0,1,0,21-28.63l-8.88-6.46a287.17,287.17,0,0,0,23-43.92l10.48,3.59a17.73,17.73,0,1,0,11.59-33.52L607.33,280c2.79-10,5.79-19.84,7.52-30.21a83.27,83.27,0,0,0,.82-19.05l11.58-3.43A17.7,17.7,0,0,0,639.26,205.3ZM416,416a32,32,0,1,1,32-32A32,32,0,0,1,416,416Z\"]\n};\nvar faBacterium = {\n  prefix: 'fas',\n  iconName: 'bacterium',\n  icon: [512, 512, [], \"e05a\", \"M511,102.93A23.76,23.76,0,0,0,481.47,87l-15.12,4.48a111.85,111.85,0,0,0-48.5-47.42l3.79-14.47a23.74,23.74,0,0,0-46-11.91l-3.76,14.37a111.94,111.94,0,0,0-22.33,1.47,386.74,386.74,0,0,0-44.33,10.41l-4.3-12a23.74,23.74,0,0,0-44.75,15.85l4.3,12.05a383.4,383.4,0,0,0-58.69,31.83l-8-10.63a23.85,23.85,0,0,0-33.24-4.8,23.57,23.57,0,0,0-4.83,33.09l8,10.63a386.14,386.14,0,0,0-46.7,47.44l-11-8a23.68,23.68,0,1,0-28,38.17l11.09,8.06a383.45,383.45,0,0,0-30.92,58.75l-12.93-4.43a23.65,23.65,0,1,0-15.47,44.69l13,4.48a385.81,385.81,0,0,0-9.3,40.53A111.58,111.58,0,0,0,32.44,375L17,379.56a23.64,23.64,0,0,0,13.51,45.31l15-4.44a111.49,111.49,0,0,0,48.53,47.24l-3.85,14.75a23.66,23.66,0,0,0,17,28.83,24.7,24.7,0,0,0,6,.75,23.73,23.73,0,0,0,23-17.7L140,479.67c1.37.05,2.77.35,4.13.35A111.22,111.22,0,0,0,205,461.5l11.45,11.74a23.7,23.7,0,0,0,34.08-32.93l-12.19-12.5a111,111,0,0,0,16.11-41.4,158.69,158.69,0,0,1,5.16-20.71l12,5.64a23.66,23.66,0,1,0,20.19-42.79l-11.72-5.49c.89-1.32,1.59-2.77,2.52-4.06a157.86,157.86,0,0,1,10.46-12.49,159.5,159.5,0,0,1,15.59-15.28,162.18,162.18,0,0,1,13.23-10.4c1.5-1,3.1-1.89,4.63-2.87l5.23,11.8a23.74,23.74,0,0,0,43.48-19.08l-5.36-12.11a158.87,158.87,0,0,1,16.49-4.1,111,111,0,0,0,45-18.54l13.33,12a23.69,23.69,0,1,0,31.88-35l-12.94-11.67A110.83,110.83,0,0,0,479.21,137L495,132.32A23.61,23.61,0,0,0,511,102.93ZM160,368a48,48,0,1,1,48-48A48,48,0,0,1,160,368Zm80-136a24,24,0,1,1,24-24A24,24,0,0,1,240,232Z\"]\n};\nvar faBahai = {\n  prefix: 'fas',\n  iconName: 'bahai',\n  icon: [512, 512, [], \"f666\", \"M496.25 202.52l-110-15.44 41.82-104.34c6.67-16.64-11.6-32.18-26.59-22.63L307.44 120 273.35 12.82C270.64 4.27 263.32 0 256 0c-7.32 0-14.64 4.27-17.35 12.82l-34.09 107.19-94.04-59.89c-14.99-9.55-33.25 5.99-26.59 22.63l41.82 104.34-110 15.43c-17.54 2.46-21.68 26.27-6.03 34.67l98.16 52.66-74.48 83.54c-10.92 12.25-1.72 30.93 13.29 30.93 1.31 0 2.67-.14 4.07-.45l108.57-23.65-4.11 112.55c-.43 11.65 8.87 19.22 18.41 19.22 5.15 0 10.39-2.21 14.2-7.18l68.18-88.9 68.18 88.9c3.81 4.97 9.04 7.18 14.2 7.18 9.54 0 18.84-7.57 18.41-19.22l-4.11-112.55 108.57 23.65c17.36 3.76 29.21-17.2 17.35-30.49l-74.48-83.54 98.16-52.66c15.64-8.39 11.5-32.2-6.04-34.66zM338.51 311.68l-51.89-11.3 1.97 53.79L256 311.68l-32.59 42.49 1.96-53.79-51.89 11.3 35.6-39.93-46.92-25.17 52.57-7.38-19.99-49.87 44.95 28.62L256 166.72l16.29 51.23 44.95-28.62-19.99 49.87 52.57 7.38-46.92 25.17 35.61 39.93z\"]\n};\nvar faBalanceScale = {\n  prefix: 'fas',\n  iconName: 'balance-scale',\n  icon: [640, 512, [], \"f24e\", \"M256 336h-.02c0-16.18 1.34-8.73-85.05-181.51-17.65-35.29-68.19-35.36-85.87 0C-2.06 328.75.02 320.33.02 336H0c0 44.18 57.31 80 128 80s128-35.82 128-80zM128 176l72 144H56l72-144zm511.98 160c0-16.18 1.34-8.73-85.05-181.51-17.65-35.29-68.19-35.36-85.87 0-87.12 174.26-85.04 165.84-85.04 181.51H384c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02zM440 320l72-144 72 144H440zm88 128H352V153.25c23.51-10.29 41.16-31.48 46.39-57.25H528c8.84 0 16-7.16 16-16V48c0-8.84-7.16-16-16-16H383.64C369.04 12.68 346.09 0 320 0s-49.04 12.68-63.64 32H112c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h129.61c5.23 25.76 22.87 46.96 46.39 57.25V448H112c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z\"]\n};\nvar faBalanceScaleLeft = {\n  prefix: 'fas',\n  iconName: 'balance-scale-left',\n  icon: [640, 512, [], \"f515\", \"M528 448H352V153.25c20.42-8.94 36.1-26.22 43.38-47.47l132-44.26c8.38-2.81 12.89-11.88 10.08-20.26l-10.17-30.34C524.48 2.54 515.41-1.97 507.03.84L389.11 40.37C375.3 16.36 349.69 0 320 0c-44.18 0-80 35.82-80 80 0 3.43.59 6.71 1.01 10.03l-128.39 43.05c-8.38 2.81-12.89 11.88-10.08 20.26l10.17 30.34c2.81 8.38 11.88 12.89 20.26 10.08l142.05-47.63c4.07 2.77 8.43 5.12 12.99 7.12V496c0 8.84 7.16 16 16 16h224c8.84 0 16-7.16 16-16v-32c-.01-8.84-7.17-16-16.01-16zm111.98-144c0-16.18 1.34-8.73-85.05-181.51-17.65-35.29-68.19-35.36-85.87 0-87.12 174.26-85.04 165.84-85.04 181.51H384c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02zM440 288l72-144 72 144H440zm-269.07-37.51c-17.65-35.29-68.19-35.36-85.87 0C-2.06 424.75.02 416.33.02 432H0c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02c0-16.18 1.34-8.73-85.05-181.51zM56 416l72-144 72 144H56z\"]\n};\nvar faBalanceScaleRight = {\n  prefix: 'fas',\n  iconName: 'balance-scale-right',\n  icon: [640, 512, [], \"f516\", \"M96 464v32c0 8.84 7.16 16 16 16h224c8.84 0 16-7.16 16-16V153.25c4.56-2 8.92-4.35 12.99-7.12l142.05 47.63c8.38 2.81 17.45-1.71 20.26-10.08l10.17-30.34c2.81-8.38-1.71-17.45-10.08-20.26l-128.4-43.05c.42-3.32 1.01-6.6 1.01-10.03 0-44.18-35.82-80-80-80-29.69 0-55.3 16.36-69.11 40.37L132.96.83c-8.38-2.81-17.45 1.71-20.26 10.08l-10.17 30.34c-2.81 8.38 1.71 17.45 10.08 20.26l132 44.26c7.28 21.25 22.96 38.54 43.38 47.47V448H112c-8.84 0-16 7.16-16 16zM0 304c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02c0-15.67 2.08-7.25-85.05-181.51-17.68-35.36-68.22-35.29-85.87 0C-1.32 295.27.02 287.82.02 304H0zm56-16l72-144 72 144H56zm328.02 144H384c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02c0-15.67 2.08-7.25-85.05-181.51-17.68-35.36-68.22-35.29-85.87 0-86.38 172.78-85.04 165.33-85.04 181.51zM440 416l72-144 72 144H440z\"]\n};\nvar faBan = {\n  prefix: 'fas',\n  iconName: 'ban',\n  icon: [512, 512, [], \"f05e\", \"M256 8C119.034 8 8 119.033 8 256s111.034 248 248 248 248-111.034 248-248S392.967 8 256 8zm130.108 117.892c65.448 65.448 70 165.481 20.677 235.637L150.47 105.216c70.204-49.356 170.226-44.735 235.638 20.676zM125.892 386.108c-65.448-65.448-70-165.481-20.677-235.637L361.53 406.784c-70.203 49.356-170.226 44.736-235.638-20.676z\"]\n};\nvar faBandAid = {\n  prefix: 'fas',\n  iconName: 'band-aid',\n  icon: [640, 512, [], \"f462\", \"M0 160v192c0 35.3 28.7 64 64 64h96V96H64c-35.3 0-64 28.7-64 64zm576-64h-96v320h96c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64zM192 416h256V96H192v320zm176-232c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm0 96c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm-96-96c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm0 96c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24z\"]\n};\nvar faBarcode = {\n  prefix: 'fas',\n  iconName: 'barcode',\n  icon: [512, 512, [], \"f02a\", \"M0 448V64h18v384H0zm26.857-.273V64H36v383.727h-9.143zm27.143 0V64h8.857v383.727H54zm44.857 0V64h8.857v383.727h-8.857zm36 0V64h17.714v383.727h-17.714zm44.857 0V64h8.857v383.727h-8.857zm18 0V64h8.857v383.727h-8.857zm18 0V64h8.857v383.727h-8.857zm35.715 0V64h18v383.727h-18zm44.857 0V64h18v383.727h-18zm35.999 0V64h18.001v383.727h-18.001zm36.001 0V64h18.001v383.727h-18.001zm26.857 0V64h18v383.727h-18zm45.143 0V64h26.857v383.727h-26.857zm35.714 0V64h9.143v383.727H476zm18 .273V64h18v384h-18z\"]\n};\nvar faBars = {\n  prefix: 'fas',\n  iconName: 'bars',\n  icon: [448, 512, [], \"f0c9\", \"M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"]\n};\nvar faBaseballBall = {\n  prefix: 'fas',\n  iconName: 'baseball-ball',\n  icon: [496, 512, [], \"f433\", \"M368.5 363.9l28.8-13.9c11.1 22.9 26 43.2 44.1 60.9 34-42.5 54.5-96.3 54.5-154.9 0-58.5-20.4-112.2-54.2-154.6-17.8 17.3-32.6 37.1-43.6 59.5l-28.7-14.1c12.8-26 30-49 50.8-69C375.6 34.7 315 8 248 8 181.1 8 120.5 34.6 75.9 77.7c20.7 19.9 37.9 42.9 50.7 68.8l-28.7 14.1c-11-22.3-25.7-42.1-43.5-59.4C20.4 143.7 0 197.4 0 256c0 58.6 20.4 112.3 54.4 154.7 18.2-17.7 33.2-38 44.3-61l28.8 13.9c-12.9 26.7-30.3 50.3-51.5 70.7 44.5 43.1 105.1 69.7 172 69.7 66.8 0 127.3-26.5 171.9-69.5-21.1-20.4-38.5-43.9-51.4-70.6zm-228.3-32l-30.5-9.8c14.9-46.4 12.7-93.8-.6-134l30.4-10c15 45.6 18 99.9.7 153.8zm216.3-153.4l30.4 10c-13.2 40.1-15.5 87.5-.6 134l-30.5 9.8c-17.3-54-14.3-108.3.7-153.8z\"]\n};\nvar faBasketballBall = {\n  prefix: 'fas',\n  iconName: 'basketball-ball',\n  icon: [496, 512, [], \"f434\", \"M212.3 10.3c-43.8 6.3-86.2 24.1-122.2 53.8l77.4 77.4c27.8-35.8 43.3-81.2 44.8-131.2zM248 222L405.9 64.1c-42.4-35-93.6-53.5-145.5-56.1-1.2 63.9-21.5 122.3-58.7 167.7L248 222zM56.1 98.1c-29.7 36-47.5 78.4-53.8 122.2 50-1.5 95.5-17 131.2-44.8L56.1 98.1zm272.2 204.2c45.3-37.1 103.7-57.4 167.7-58.7-2.6-51.9-21.1-103.1-56.1-145.5L282 256l46.3 46.3zM248 290L90.1 447.9c42.4 34.9 93.6 53.5 145.5 56.1 1.3-64 21.6-122.4 58.7-167.7L248 290zm191.9 123.9c29.7-36 47.5-78.4 53.8-122.2-50.1 1.6-95.5 17.1-131.2 44.8l77.4 77.4zM167.7 209.7C122.3 246.9 63.9 267.3 0 268.4c2.6 51.9 21.1 103.1 56.1 145.5L214 256l-46.3-46.3zm116 292c43.8-6.3 86.2-24.1 122.2-53.8l-77.4-77.4c-27.7 35.7-43.2 81.2-44.8 131.2z\"]\n};\nvar faBath = {\n  prefix: 'fas',\n  iconName: 'bath',\n  icon: [512, 512, [], \"f2cd\", \"M32,384a95.4,95.4,0,0,0,32,71.09V496a16,16,0,0,0,16,16h32a16,16,0,0,0,16-16V480H384v16a16,16,0,0,0,16,16h32a16,16,0,0,0,16-16V455.09A95.4,95.4,0,0,0,480,384V336H32ZM496,256H80V69.25a21.26,21.26,0,0,1,36.28-15l19.27,19.26c-13.13,29.88-7.61,59.11,8.62,79.73l-.17.17A16,16,0,0,0,144,176l11.31,11.31a16,16,0,0,0,22.63,0L283.31,81.94a16,16,0,0,0,0-22.63L272,48a16,16,0,0,0-22.62,0l-.17.17c-20.62-16.23-49.83-21.75-79.73-8.62L150.22,20.28A69.25,69.25,0,0,0,32,69.25V256H16A16,16,0,0,0,0,272v16a16,16,0,0,0,16,16H496a16,16,0,0,0,16-16V272A16,16,0,0,0,496,256Z\"]\n};\nvar faBatteryEmpty = {\n  prefix: 'fas',\n  iconName: 'battery-empty',\n  icon: [640, 512, [], \"f244\", \"M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48z\"]\n};\nvar faBatteryFull = {\n  prefix: 'fas',\n  iconName: 'battery-full',\n  icon: [640, 512, [], \"f240\", \"M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48zm-48 96H96v128h416V192z\"]\n};\nvar faBatteryHalf = {\n  prefix: 'fas',\n  iconName: 'battery-half',\n  icon: [640, 512, [], \"f242\", \"M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48zm-240 96H96v128h224V192z\"]\n};\nvar faBatteryQuarter = {\n  prefix: 'fas',\n  iconName: 'battery-quarter',\n  icon: [640, 512, [], \"f243\", \"M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48zm-336 96H96v128h128V192z\"]\n};\nvar faBatteryThreeQuarters = {\n  prefix: 'fas',\n  iconName: 'battery-three-quarters',\n  icon: [640, 512, [], \"f241\", \"M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48zm-144 96H96v128h320V192z\"]\n};\nvar faBed = {\n  prefix: 'fas',\n  iconName: 'bed',\n  icon: [640, 512, [], \"f236\", \"M176 256c44.11 0 80-35.89 80-80s-35.89-80-80-80-80 35.89-80 80 35.89 80 80 80zm352-128H304c-8.84 0-16 7.16-16 16v144H64V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v352c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-48h512v48c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V240c0-61.86-50.14-112-112-112z\"]\n};\nvar faBeer = {\n  prefix: 'fas',\n  iconName: 'beer',\n  icon: [448, 512, [], \"f0fc\", \"M368 96h-48V56c0-13.255-10.745-24-24-24H24C10.745 32 0 42.745 0 56v400c0 13.255 10.745 24 24 24h272c13.255 0 24-10.745 24-24v-42.11l80.606-35.977C429.396 365.063 448 336.388 448 304.86V176c0-44.112-35.888-80-80-80zm16 208.86a16.018 16.018 0 0 1-9.479 14.611L320 343.805V160h48c8.822 0 16 7.178 16 16v128.86zM208 384c-8.836 0-16-7.164-16-16V144c0-8.836 7.164-16 16-16s16 7.164 16 16v224c0 8.836-7.164 16-16 16zm-96 0c-8.836 0-16-7.164-16-16V144c0-8.836 7.164-16 16-16s16 7.164 16 16v224c0 8.836-7.164 16-16 16z\"]\n};\nvar faBell = {\n  prefix: 'fas',\n  iconName: 'bell',\n  icon: [448, 512, [], \"f0f3\", \"M224 512c35.32 0 63.97-28.65 63.97-64H160.03c0 35.35 28.65 64 63.97 64zm215.39-149.71c-19.32-20.76-55.47-51.99-55.47-154.29 0-77.7-54.48-139.9-127.94-155.16V32c0-17.67-14.32-32-31.98-32s-31.98 14.33-31.98 32v20.84C118.56 68.1 64.08 130.3 64.08 208c0 102.3-36.15 133.53-55.47 154.29-6 6.45-8.66 14.16-8.61 21.71.11 16.4 12.98 32 32.1 32h383.8c19.12 0 32-15.6 32.1-32 .05-7.55-2.61-15.27-8.61-21.71z\"]\n};\nvar faBellSlash = {\n  prefix: 'fas',\n  iconName: 'bell-slash',\n  icon: [640, 512, [], \"f1f6\", \"M633.82 458.1l-90.62-70.05c.19-1.38.8-2.66.8-4.06.05-7.55-2.61-15.27-8.61-21.71-19.32-20.76-55.47-51.99-55.47-154.29 0-77.7-54.48-139.9-127.94-155.16V32c0-17.67-14.32-32-31.98-32s-31.98 14.33-31.98 32v20.84c-40.33 8.38-74.66 31.07-97.59 62.57L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.35 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.42-6.97 4.17-17.02-2.81-22.45zM157.23 251.54c-8.61 67.96-36.41 93.33-52.62 110.75-6 6.45-8.66 14.16-8.61 21.71.11 16.4 12.98 32 32.1 32h241.92L157.23 251.54zM320 512c35.32 0 63.97-28.65 63.97-64H256.03c0 35.35 28.65 64 63.97 64z\"]\n};\nvar faBezierCurve = {\n  prefix: 'fas',\n  iconName: 'bezier-curve',\n  icon: [640, 512, [], \"f55b\", \"M368 32h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32zM208 88h-84.75C113.75 64.56 90.84 48 64 48 28.66 48 0 76.65 0 112s28.66 64 64 64c26.84 0 49.75-16.56 59.25-40h79.73c-55.37 32.52-95.86 87.32-109.54 152h49.4c11.3-41.61 36.77-77.21 71.04-101.56-3.7-8.08-5.88-16.99-5.88-26.44V88zm-48 232H64c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32zM576 48c-26.84 0-49.75 16.56-59.25 40H432v72c0 9.45-2.19 18.36-5.88 26.44 34.27 24.35 59.74 59.95 71.04 101.56h49.4c-13.68-64.68-54.17-119.48-109.54-152h79.73c9.5 23.44 32.41 40 59.25 40 35.34 0 64-28.65 64-64s-28.66-64-64-64zm0 272h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32z\"]\n};\nvar faBible = {\n  prefix: 'fas',\n  iconName: 'bible',\n  icon: [448, 512, [], \"f647\", \"M448 358.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM144 144c0-8.84 7.16-16 16-16h48V80c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v48h48c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16h-48v112c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16V192h-48c-8.84 0-16-7.16-16-16v-32zm236.8 304H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8v64z\"]\n};\nvar faBicycle = {\n  prefix: 'fas',\n  iconName: 'bicycle',\n  icon: [640, 512, [], \"f206\", \"M512.509 192.001c-16.373-.064-32.03 2.955-46.436 8.495l-77.68-125.153A24 24 0 0 0 368.001 64h-64c-8.837 0-16 7.163-16 16v16c0 8.837 7.163 16 16 16h50.649l14.896 24H256.002v-16c0-8.837-7.163-16-16-16h-87.459c-13.441 0-24.777 10.999-24.536 24.437.232 13.044 10.876 23.563 23.995 23.563h48.726l-29.417 47.52c-13.433-4.83-27.904-7.483-42.992-7.52C58.094 191.83.412 249.012.002 319.236-.413 390.279 57.055 448 128.002 448c59.642 0 109.758-40.793 123.967-96h52.033a24 24 0 0 0 20.406-11.367L410.37 201.77l14.938 24.067c-25.455 23.448-41.385 57.081-41.307 94.437.145 68.833 57.899 127.051 126.729 127.719 70.606.685 128.181-55.803 129.255-125.996 1.086-70.941-56.526-129.72-127.476-129.996zM186.75 265.772c9.727 10.529 16.673 23.661 19.642 38.228h-43.306l23.664-38.228zM128.002 400c-44.112 0-80-35.888-80-80s35.888-80 80-80c5.869 0 11.586.653 17.099 1.859l-45.505 73.509C89.715 331.327 101.213 352 120.002 352h81.3c-12.37 28.225-40.562 48-73.3 48zm162.63-96h-35.624c-3.96-31.756-19.556-59.894-42.383-80.026L237.371 184h127.547l-74.286 120zm217.057 95.886c-41.036-2.165-74.049-35.692-75.627-76.755-.812-21.121 6.633-40.518 19.335-55.263l44.433 71.586c4.66 7.508 14.524 9.816 22.032 5.156l13.594-8.437c7.508-4.66 9.817-14.524 5.156-22.032l-44.468-71.643a79.901 79.901 0 0 1 19.858-2.497c44.112 0 80 35.888 80 80-.001 45.54-38.252 82.316-84.313 79.885z\"]\n};\nvar faBiking = {\n  prefix: 'fas',\n  iconName: 'biking',\n  icon: [640, 512, [], \"f84a\", \"M400 96a48 48 0 1 0-48-48 48 48 0 0 0 48 48zm-4 121a31.9 31.9 0 0 0 20 7h64a32 32 0 0 0 0-64h-52.78L356 103a31.94 31.94 0 0 0-40.81.68l-112 96a32 32 0 0 0 3.08 50.92L288 305.12V416a32 32 0 0 0 64 0V288a32 32 0 0 0-14.25-26.62l-41.36-27.57 58.25-49.92zm116 39a128 128 0 1 0 128 128 128 128 0 0 0-128-128zm0 192a64 64 0 1 1 64-64 64 64 0 0 1-64 64zM128 256a128 128 0 1 0 128 128 128 128 0 0 0-128-128zm0 192a64 64 0 1 1 64-64 64 64 0 0 1-64 64z\"]\n};\nvar faBinoculars = {\n  prefix: 'fas',\n  iconName: 'binoculars',\n  icon: [512, 512, [], \"f1e5\", \"M416 48c0-8.84-7.16-16-16-16h-64c-8.84 0-16 7.16-16 16v48h96V48zM63.91 159.99C61.4 253.84 3.46 274.22 0 404v44c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32V288h32V128H95.84c-17.63 0-31.45 14.37-31.93 31.99zm384.18 0c-.48-17.62-14.3-31.99-31.93-31.99H320v160h32v160c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-44c-3.46-129.78-61.4-150.16-63.91-244.01zM176 32h-64c-8.84 0-16 7.16-16 16v48h96V48c0-8.84-7.16-16-16-16zm48 256h64V128h-64v160z\"]\n};\nvar faBiohazard = {\n  prefix: 'fas',\n  iconName: 'biohazard',\n  icon: [576, 512, [], \"f780\", \"M287.9 112c18.6 0 36.2 3.8 52.8 9.6 13.3-10.3 23.6-24.3 29.5-40.7-25.2-10.9-53-17-82.2-17-29.1 0-56.9 6-82.1 16.9 5.9 16.4 16.2 30.4 29.5 40.7 16.5-5.7 34-9.5 52.5-9.5zM163.6 438.7c12-11.8 20.4-26.4 24.5-42.4-32.9-26.4-54.8-65.3-58.9-109.6-8.5-2.8-17.2-4.6-26.4-4.6-7.6 0-15.2 1-22.5 3.1 4.1 62.8 35.8 118 83.3 153.5zm224.2-42.6c4.1 16 12.5 30.7 24.5 42.5 47.4-35.5 79.1-90.7 83-153.5-7.2-2-14.7-3-22.2-3-9.2 0-18 1.9-26.6 4.7-4.1 44.2-26 82.9-58.7 109.3zm113.5-205c-17.6-10.4-36.3-16.6-55.3-19.9 6-17.7 10-36.4 10-56.2 0-41-14.5-80.8-41-112.2-2.5-3-6.6-3.7-10-1.8-3.3 1.9-4.8 6-3.6 9.7 4.5 13.8 6.6 26.3 6.6 38.5 0 67.8-53.8 122.9-120 122.9S168 117 168 49.2c0-12.1 2.2-24.7 6.6-38.5 1.2-3.7-.3-7.8-3.6-9.7-3.4-1.9-7.5-1.2-10 1.8C134.6 34.2 120 74 120 115c0 19.8 3.9 38.5 10 56.2-18.9 3.3-37.7 9.5-55.3 19.9-34.6 20.5-61 53.3-74.3 92.4-1.3 3.7.2 7.7 3.5 9.8 3.3 2 7.5 1.3 10-1.6 9.4-10.8 19-19.1 29.2-25.1 57.3-33.9 130.8-13.7 163.9 45 33.1 58.7 13.4 134-43.9 167.9-10.2 6.1-22 10.4-35.8 13.4-3.7.8-6.4 4.2-6.4 8.1.1 4 2.7 7.3 6.5 8 39.7 7.8 80.6.8 115.2-19.7 18-10.6 32.9-24.5 45.3-40.1 12.4 15.6 27.3 29.5 45.3 40.1 34.6 20.5 75.5 27.5 115.2 19.7 3.8-.7 6.4-4 6.5-8 0-3.9-2.6-7.3-6.4-8.1-13.9-2.9-25.6-7.3-35.8-13.4-57.3-33.9-77-109.2-43.9-167.9s106.6-78.9 163.9-45c10.2 6.1 19.8 14.3 29.2 25.1 2.5 2.9 6.7 3.6 10 1.6s4.8-6.1 3.5-9.8c-13.1-39.1-39.5-72-74.1-92.4zm-213.4 129c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48z\"]\n};\nvar faBirthdayCake = {\n  prefix: 'fas',\n  iconName: 'birthday-cake',\n  icon: [448, 512, [], \"f1fd\", \"M448 384c-28.02 0-31.26-32-74.5-32-43.43 0-46.825 32-74.75 32-27.695 0-31.454-32-74.75-32-42.842 0-47.218 32-74.5 32-28.148 0-31.202-32-74.75-32-43.547 0-46.653 32-74.75 32v-80c0-26.5 21.5-48 48-48h16V112h64v144h64V112h64v144h64V112h64v144h16c26.5 0 48 21.5 48 48v80zm0 128H0v-96c43.356 0 46.767-32 74.75-32 27.951 0 31.253 32 74.75 32 42.843 0 47.217-32 74.5-32 28.148 0 31.201 32 74.75 32 43.357 0 46.767-32 74.75-32 27.488 0 31.252 32 74.5 32v96zM96 96c-17.75 0-32-14.25-32-32 0-31 32-23 32-64 12 0 32 29.5 32 56s-14.25 40-32 40zm128 0c-17.75 0-32-14.25-32-32 0-31 32-23 32-64 12 0 32 29.5 32 56s-14.25 40-32 40zm128 0c-17.75 0-32-14.25-32-32 0-31 32-23 32-64 12 0 32 29.5 32 56s-14.25 40-32 40z\"]\n};\nvar faBlender = {\n  prefix: 'fas',\n  iconName: 'blender',\n  icon: [512, 512, [], \"f517\", \"M416 384H160c-35.35 0-64 28.65-64 64v32c0 17.67 14.33 32 32 32h320c17.67 0 32-14.33 32-32v-32c0-35.35-28.65-64-64-64zm-128 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm40-416h166.54L512 0H48C21.49 0 0 21.49 0 48v160c0 26.51 21.49 48 48 48h103.27l8.73 96h256l17.46-64H328c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h114.18l17.46-64H328c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h140.36l17.46-64H328c-4.42 0-8-3.58-8-8V72c0-4.42 3.58-8 8-8zM64 192V64h69.82l11.64 128H64z\"]\n};\nvar faBlenderPhone = {\n  prefix: 'fas',\n  iconName: 'blender-phone',\n  icon: [576, 512, [], \"f6b6\", \"M392 64h166.54L576 0H192v352h288l17.46-64H392c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h114.18l17.46-64H392c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h140.36l17.46-64H392c-4.42 0-8-3.58-8-8V72c0-4.42 3.58-8 8-8zM158.8 335.01l-25.78-63.26c-2.78-6.81-9.8-10.99-17.24-10.26l-45.03 4.42c-17.28-46.94-17.65-99.78 0-147.72l45.03 4.42c7.43.73 14.46-3.46 17.24-10.26l25.78-63.26c3.02-7.39.2-15.85-6.68-20.07l-39.28-24.1C98.51-3.87 80.09-.5 68.95 11.97c-92.57 103.6-92 259.55 2.1 362.49 9.87 10.8 29.12 12.48 41.65 4.8l39.41-24.18c6.89-4.22 9.7-12.67 6.69-20.07zM480 384H192c-35.35 0-64 28.65-64 64v32c0 17.67 14.33 32 32 32h352c17.67 0 32-14.33 32-32v-32c0-35.35-28.65-64-64-64zm-144 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faBlind = {\n  prefix: 'fas',\n  iconName: 'blind',\n  icon: [384, 512, [], \"f29d\", \"M380.15 510.837a8 8 0 0 1-10.989-2.687l-125.33-206.427a31.923 31.923 0 0 0 12.958-9.485l126.048 207.608a8 8 0 0 1-2.687 10.991zM142.803 314.338l-32.54 89.485 36.12 88.285c6.693 16.36 25.377 24.192 41.733 17.501 16.357-6.692 24.193-25.376 17.501-41.734l-62.814-153.537zM96 88c24.301 0 44-19.699 44-44S120.301 0 96 0 52 19.699 52 44s19.699 44 44 44zm154.837 169.128l-120-152c-4.733-5.995-11.75-9.108-18.837-9.112V96H80v.026c-7.146.003-14.217 3.161-18.944 9.24L0 183.766v95.694c0 13.455 11.011 24.791 24.464 24.536C37.505 303.748 48 293.1 48 280v-79.766l16-20.571v140.698L9.927 469.055c-6.04 16.609 2.528 34.969 19.138 41.009 16.602 6.039 34.968-2.524 41.009-19.138L136 309.638V202.441l-31.406-39.816a4 4 0 1 1 6.269-4.971l102.3 129.217c9.145 11.584 24.368 11.339 33.708 3.965 10.41-8.216 12.159-23.334 3.966-33.708z\"]\n};\nvar faBlog = {\n  prefix: 'fas',\n  iconName: 'blog',\n  icon: [512, 512, [], \"f781\", \"M172.2 226.8c-14.6-2.9-28.2 8.9-28.2 23.8V301c0 10.2 7.1 18.4 16.7 22 18.2 6.8 31.3 24.4 31.3 45 0 26.5-21.5 48-48 48s-48-21.5-48-48V120c0-13.3-10.7-24-24-24H24c-13.3 0-24 10.7-24 24v248c0 89.5 82.1 160.2 175 140.7 54.4-11.4 98.3-55.4 109.7-109.7 17.4-82.9-37-157.2-112.5-172.2zM209 0c-9.2-.5-17 6.8-17 16v31.6c0 8.5 6.6 15.5 15 15.9 129.4 7 233.4 112 240.9 241.5.5 8.4 7.5 15 15.9 15h32.1c9.2 0 16.5-7.8 16-17C503.4 139.8 372.2 8.6 209 0zm.3 96c-9.3-.7-17.3 6.7-17.3 16.1v32.1c0 8.4 6.5 15.3 14.8 15.9 76.8 6.3 138 68.2 144.9 145.2.8 8.3 7.6 14.7 15.9 14.7h32.2c9.3 0 16.8-8 16.1-17.3-8.4-110.1-96.5-198.2-206.6-206.7z\"]\n};\nvar faBold = {\n  prefix: 'fas',\n  iconName: 'bold',\n  icon: [384, 512, [], \"f032\", \"M333.49 238a122 122 0 0 0 27-65.21C367.87 96.49 308 32 233.42 32H34a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h31.87v288H34a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h209.32c70.8 0 134.14-51.75 141-122.4 4.74-48.45-16.39-92.06-50.83-119.6zM145.66 112h87.76a48 48 0 0 1 0 96h-87.76zm87.76 288h-87.76V288h87.76a56 56 0 0 1 0 112z\"]\n};\nvar faBolt = {\n  prefix: 'fas',\n  iconName: 'bolt',\n  icon: [320, 512, [], \"f0e7\", \"M296 160H180.6l42.6-129.8C227.2 15 215.7 0 200 0H56C44 0 33.8 8.9 32.2 20.8l-32 240C-1.7 275.2 9.5 288 24 288h118.7L96.6 482.5c-3.6 15.2 8 29.5 23.3 29.5 8.4 0 16.4-4.4 20.8-12l176-304c9.3-15.9-2.2-36-20.7-36z\"]\n};\nvar faBomb = {\n  prefix: 'fas',\n  iconName: 'bomb',\n  icon: [512, 512, [], \"f1e2\", \"M440.5 88.5l-52 52L415 167c9.4 9.4 9.4 24.6 0 33.9l-17.4 17.4c11.8 26.1 18.4 55.1 18.4 85.6 0 114.9-93.1 208-208 208S0 418.9 0 304 93.1 96 208 96c30.5 0 59.5 6.6 85.6 18.4L311 97c9.4-9.4 24.6-9.4 33.9 0l26.5 26.5 52-52 17.1 17zM500 60h-24c-6.6 0-12 5.4-12 12s5.4 12 12 12h24c6.6 0 12-5.4 12-12s-5.4-12-12-12zM440 0c-6.6 0-12 5.4-12 12v24c0 6.6 5.4 12 12 12s12-5.4 12-12V12c0-6.6-5.4-12-12-12zm33.9 55l17-17c4.7-4.7 4.7-12.3 0-17-4.7-4.7-12.3-4.7-17 0l-17 17c-4.7 4.7-4.7 12.3 0 17 4.8 4.7 12.4 4.7 17 0zm-67.8 0c4.7 4.7 12.3 4.7 17 0 4.7-4.7 4.7-12.3 0-17l-17-17c-4.7-4.7-12.3-4.7-17 0-4.7 4.7-4.7 12.3 0 17l17 17zm67.8 34c-4.7-4.7-12.3-4.7-17 0-4.7 4.7-4.7 12.3 0 17l17 17c4.7 4.7 12.3 4.7 17 0 4.7-4.7 4.7-12.3 0-17l-17-17zM112 272c0-35.3 28.7-64 64-64 8.8 0 16-7.2 16-16s-7.2-16-16-16c-52.9 0-96 43.1-96 96 0 8.8 7.2 16 16 16s16-7.2 16-16z\"]\n};\nvar faBone = {\n  prefix: 'fas',\n  iconName: 'bone',\n  icon: [640, 512, [], \"f5d7\", \"M598.88 244.56c25.2-12.6 41.12-38.36 41.12-66.53v-7.64C640 129.3 606.7 96 565.61 96c-32.02 0-60.44 20.49-70.57 50.86-7.68 23.03-11.6 45.14-38.11 45.14H183.06c-27.38 0-31.58-25.54-38.11-45.14C134.83 116.49 106.4 96 74.39 96 33.3 96 0 129.3 0 170.39v7.64c0 28.17 15.92 53.93 41.12 66.53 9.43 4.71 9.43 18.17 0 22.88C15.92 280.04 0 305.8 0 333.97v7.64C0 382.7 33.3 416 74.38 416c32.02 0 60.44-20.49 70.57-50.86 7.68-23.03 11.6-45.14 38.11-45.14h273.87c27.38 0 31.58 25.54 38.11 45.14C505.17 395.51 533.6 416 565.61 416c41.08 0 74.38-33.3 74.38-74.39v-7.64c0-28.18-15.92-53.93-41.12-66.53-9.42-4.71-9.42-18.17.01-22.88z\"]\n};\nvar faBong = {\n  prefix: 'fas',\n  iconName: 'bong',\n  icon: [448, 512, [], \"f55c\", \"M302.5 512c23.18 0 44.43-12.58 56-32.66C374.69 451.26 384 418.75 384 384c0-36.12-10.08-69.81-27.44-98.62L400 241.94l9.38 9.38c6.25 6.25 16.38 6.25 22.63 0l11.3-11.32c6.25-6.25 6.25-16.38 0-22.63l-52.69-52.69c-6.25-6.25-16.38-6.25-22.63 0l-11.31 11.31c-6.25 6.25-6.25 16.38 0 22.63l9.38 9.38-39.41 39.41c-11.56-11.37-24.53-21.33-38.65-29.51V63.74l15.97-.02c8.82-.01 15.97-7.16 15.98-15.98l.04-31.72C320 7.17 312.82-.01 303.97 0L80.03.26c-8.82.01-15.97 7.16-15.98 15.98l-.04 31.73c-.01 8.85 7.17 16.02 16.02 16.01L96 63.96v153.93C38.67 251.1 0 312.97 0 384c0 34.75 9.31 67.27 25.5 95.34C37.08 499.42 58.33 512 81.5 512h221zM120.06 259.43L144 245.56V63.91l96-.11v181.76l23.94 13.87c24.81 14.37 44.12 35.73 56.56 60.57h-257c12.45-24.84 31.75-46.2 56.56-60.57z\"]\n};\nvar faBook = {\n  prefix: 'fas',\n  iconName: 'book',\n  icon: [448, 512, [], \"f02d\", \"M448 360V24c0-13.3-10.7-24-24-24H96C43 0 0 43 0 96v320c0 53 43 96 96 96h328c13.3 0 24-10.7 24-24v-16c0-7.5-3.5-14.3-8.9-18.7-4.2-15.4-4.2-59.3 0-74.7 5.4-4.3 8.9-11.1 8.9-18.6zM128 134c0-3.3 2.7-6 6-6h212c3.3 0 6 2.7 6 6v20c0 3.3-2.7 6-6 6H134c-3.3 0-6-2.7-6-6v-20zm0 64c0-3.3 2.7-6 6-6h212c3.3 0 6 2.7 6 6v20c0 3.3-2.7 6-6 6H134c-3.3 0-6-2.7-6-6v-20zm253.4 250H96c-17.7 0-32-14.3-32-32 0-17.6 14.4-32 32-32h285.4c-1.9 17.1-1.9 46.9 0 64z\"]\n};\nvar faBookDead = {\n  prefix: 'fas',\n  iconName: 'book-dead',\n  icon: [448, 512, [], \"f6b7\", \"M272 136c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zm176 222.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM240 56c44.2 0 80 28.7 80 64 0 20.9-12.7 39.2-32 50.9V184c0 8.8-7.2 16-16 16h-64c-8.8 0-16-7.2-16-16v-13.1c-19.3-11.7-32-30-32-50.9 0-35.3 35.8-64 80-64zM124.8 223.3l6.3-14.7c1.7-4.1 6.4-5.9 10.5-4.2l98.3 42.1 98.4-42.1c4.1-1.7 8.8.1 10.5 4.2l6.3 14.7c1.7 4.1-.1 8.8-4.2 10.5L280.6 264l70.3 30.1c4.1 1.7 5.9 6.4 4.2 10.5l-6.3 14.7c-1.7 4.1-6.4 5.9-10.5 4.2L240 281.4l-98.3 42.2c-4.1 1.7-8.8-.1-10.5-4.2l-6.3-14.7c-1.7-4.1.1-8.8 4.2-10.5l70.4-30.1-70.5-30.3c-4.1-1.7-5.9-6.4-4.2-10.5zm256 224.7H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8zM208 136c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16z\"]\n};\nvar faBookMedical = {\n  prefix: 'fas',\n  iconName: 'book-medical',\n  icon: [448, 512, [], \"f7e6\", \"M448 358.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16q0-9.6-9.6-19.2c-3.2-16-3.2-60.8 0-73.6q9.6-4.8 9.6-19.2zM144 168a8 8 0 0 1 8-8h56v-56a8 8 0 0 1 8-8h48a8 8 0 0 1 8 8v56h56a8 8 0 0 1 8 8v48a8 8 0 0 1-8 8h-56v56a8 8 0 0 1-8 8h-48a8 8 0 0 1-8-8v-56h-56a8 8 0 0 1-8-8zm236.8 280H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8z\"]\n};\nvar faBookOpen = {\n  prefix: 'fas',\n  iconName: 'book-open',\n  icon: [576, 512, [], \"f518\", \"M542.22 32.05c-54.8 3.11-163.72 14.43-230.96 55.59-4.64 2.84-7.27 7.89-7.27 13.17v363.87c0 11.55 12.63 18.85 23.28 13.49 69.18-34.82 169.23-44.32 218.7-46.92 16.89-.89 30.02-14.43 30.02-30.66V62.75c.01-17.71-15.35-31.74-33.77-30.7zM264.73 87.64C197.5 46.48 88.58 35.17 33.78 32.05 15.36 31.01 0 45.04 0 62.75V400.6c0 16.24 13.13 29.78 30.02 30.66 49.49 2.6 149.59 12.11 218.77 46.95 10.62 5.35 23.21-1.94 23.21-13.46V100.63c0-5.29-2.62-10.14-7.27-12.99z\"]\n};\nvar faBookReader = {\n  prefix: 'fas',\n  iconName: 'book-reader',\n  icon: [512, 512, [], \"f5da\", \"M352 96c0-53.02-42.98-96-96-96s-96 42.98-96 96 42.98 96 96 96 96-42.98 96-96zM233.59 241.1c-59.33-36.32-155.43-46.3-203.79-49.05C13.55 191.13 0 203.51 0 219.14v222.8c0 14.33 11.59 26.28 26.49 27.05 43.66 2.29 131.99 10.68 193.04 41.43 9.37 4.72 20.48-1.71 20.48-11.87V252.56c-.01-4.67-2.32-8.95-6.42-11.46zm248.61-49.05c-48.35 2.74-144.46 12.73-203.78 49.05-4.1 2.51-6.41 6.96-6.41 11.63v245.79c0 10.19 11.14 16.63 20.54 11.9 61.04-30.72 149.32-39.11 192.97-41.4 14.9-.78 26.49-12.73 26.49-27.06V219.14c-.01-15.63-13.56-28.01-29.81-27.09z\"]\n};\nvar faBookmark = {\n  prefix: 'fas',\n  iconName: 'bookmark',\n  icon: [384, 512, [], \"f02e\", \"M0 512V48C0 21.49 21.49 0 48 0h288c26.51 0 48 21.49 48 48v464L192 400 0 512z\"]\n};\nvar faBorderAll = {\n  prefix: 'fas',\n  iconName: 'border-all',\n  icon: [448, 512, [], \"f84c\", \"M416 32H32A32 32 0 0 0 0 64v384a32 32 0 0 0 32 32h384a32 32 0 0 0 32-32V64a32 32 0 0 0-32-32zm-32 64v128H256V96zm-192 0v128H64V96zM64 416V288h128v128zm192 0V288h128v128z\"]\n};\nvar faBorderNone = {\n  prefix: 'fas',\n  iconName: 'border-none',\n  icon: [448, 512, [], \"f850\", \"M240 224h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-288 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 192h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-96h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-192h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM240 320h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-192h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-96 288h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96-384h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM48 224H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 192H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-96H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-192H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-96H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faBorderStyle = {\n  prefix: 'fas',\n  iconName: 'border-style',\n  icon: [448, 512, [], \"f853\", \"M240 416h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm192 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96-192h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 96h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 96h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-288h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-96H32A32 32 0 0 0 0 64v400a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V96h368a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faBowlingBall = {\n  prefix: 'fas',\n  iconName: 'bowling-ball',\n  icon: [496, 512, [], \"f436\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM120 192c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm64-96c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm48 144c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faBox = {\n  prefix: 'fas',\n  iconName: 'box',\n  icon: [512, 512, [], \"f466\", \"M509.5 184.6L458.9 32.8C452.4 13.2 434.1 0 413.4 0H272v192h238.7c-.4-2.5-.4-5-1.2-7.4zM240 0H98.6c-20.7 0-39 13.2-45.5 32.8L2.5 184.6c-.8 2.4-.8 4.9-1.2 7.4H240V0zM0 224v240c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V224H0z\"]\n};\nvar faBoxOpen = {\n  prefix: 'fas',\n  iconName: 'box-open',\n  icon: [640, 512, [], \"f49e\", \"M425.7 256c-16.9 0-32.8-9-41.4-23.4L320 126l-64.2 106.6c-8.7 14.5-24.6 23.5-41.5 23.5-4.5 0-9-.6-13.3-1.9L64 215v178c0 14.7 10 27.5 24.2 31l216.2 54.1c10.2 2.5 20.9 2.5 31 0L551.8 424c14.2-3.6 24.2-16.4 24.2-31V215l-137 39.1c-4.3 1.3-8.8 1.9-13.3 1.9zm212.6-112.2L586.8 41c-3.1-6.2-9.8-9.8-16.7-8.9L320 64l91.7 152.1c3.8 6.3 11.4 9.3 18.5 7.3l197.9-56.5c9.9-2.9 14.7-13.9 10.2-23.1zM53.2 41L1.7 143.8c-4.6 9.2.3 20.2 10.1 23l197.9 56.5c7.1 2 14.7-1 18.5-7.3L320 64 69.8 32.1c-6.9-.8-13.5 2.7-16.6 8.9z\"]\n};\nvar faBoxTissue = {\n  prefix: 'fas',\n  iconName: 'box-tissue',\n  icon: [512, 512, [], \"e05b\", \"M383.88,287.82l64-192H338.47a70.2,70.2,0,0,1-66.59-48,70.21,70.21,0,0,0-66.6-48H63.88l64,288Zm-384,192a32,32,0,0,0,32,32h448a32,32,0,0,0,32-32v-64H-.12Zm480-256H438.94l-21.33,64h14.27a16,16,0,0,1,0,32h-352a16,16,0,1,1,0-32H95.09l-14.22-64h-49a32,32,0,0,0-32,32v128h512v-128A32,32,0,0,0,479.88,223.82Z\"]\n};\nvar faBoxes = {\n  prefix: 'fas',\n  iconName: 'boxes',\n  icon: [576, 512, [], \"f468\", \"M560 288h-80v96l-32-21.3-32 21.3v-96h-80c-8.8 0-16 7.2-16 16v192c0 8.8 7.2 16 16 16h224c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16zm-384-64h224c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16h-80v96l-32-21.3L256 96V0h-80c-8.8 0-16 7.2-16 16v192c0 8.8 7.2 16 16 16zm64 64h-80v96l-32-21.3L96 384v-96H16c-8.8 0-16 7.2-16 16v192c0 8.8 7.2 16 16 16h224c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16z\"]\n};\nvar faBraille = {\n  prefix: 'fas',\n  iconName: 'braille',\n  icon: [640, 512, [], \"f2a1\", \"M128 256c0 35.346-28.654 64-64 64S0 291.346 0 256s28.654-64 64-64 64 28.654 64 64zM64 384c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0-352C28.654 32 0 60.654 0 96s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64zm160 192c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0 160c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0-352c-35.346 0-64 28.654-64 64s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64zm224 192c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0 160c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0-352c-35.346 0-64 28.654-64 64s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64zm160 192c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0 160c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0-320c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32z\"]\n};\nvar faBrain = {\n  prefix: 'fas',\n  iconName: 'brain',\n  icon: [576, 512, [], \"f5dc\", \"M208 0c-29.9 0-54.7 20.5-61.8 48.2-.8 0-1.4-.2-2.2-.2-35.3 0-64 28.7-64 64 0 4.8.6 9.5 1.7 14C52.5 138 32 166.6 32 200c0 12.6 3.2 24.3 8.3 34.9C16.3 248.7 0 274.3 0 304c0 33.3 20.4 61.9 49.4 73.9-.9 4.6-1.4 9.3-1.4 14.1 0 39.8 32.2 72 72 72 4.1 0 8.1-.5 12-1.2 9.6 28.5 36.2 49.2 68 49.2 39.8 0 72-32.2 72-72V64c0-35.3-28.7-64-64-64zm368 304c0-29.7-16.3-55.3-40.3-69.1 5.2-10.6 8.3-22.3 8.3-34.9 0-33.4-20.5-62-49.7-74 1-4.5 1.7-9.2 1.7-14 0-35.3-28.7-64-64-64-.8 0-1.5.2-2.2.2C422.7 20.5 397.9 0 368 0c-35.3 0-64 28.6-64 64v376c0 39.8 32.2 72 72 72 31.8 0 58.4-20.7 68-49.2 3.9.7 7.9 1.2 12 1.2 39.8 0 72-32.2 72-72 0-4.8-.5-9.5-1.4-14.1 29-12 49.4-40.6 49.4-73.9z\"]\n};\nvar faBreadSlice = {\n  prefix: 'fas',\n  iconName: 'bread-slice',\n  icon: [576, 512, [], \"f7ec\", \"M288 0C108 0 0 93.4 0 169.14 0 199.44 24.24 224 64 224v256c0 17.67 16.12 32 36 32h376c19.88 0 36-14.33 36-32V224c39.76 0 64-24.56 64-54.86C576 93.4 468 0 288 0z\"]\n};\nvar faBriefcase = {\n  prefix: 'fas',\n  iconName: 'briefcase',\n  icon: [512, 512, [], \"f0b1\", \"M320 336c0 8.84-7.16 16-16 16h-96c-8.84 0-16-7.16-16-16v-48H0v144c0 25.6 22.4 48 48 48h416c25.6 0 48-22.4 48-48V288H320v48zm144-208h-80V80c0-25.6-22.4-48-48-48H176c-25.6 0-48 22.4-48 48v48H48c-25.6 0-48 22.4-48 48v80h512v-80c0-25.6-22.4-48-48-48zm-144 0H192V96h128v32z\"]\n};\nvar faBriefcaseMedical = {\n  prefix: 'fas',\n  iconName: 'briefcase-medical',\n  icon: [512, 512, [], \"f469\", \"M464 128h-80V80c0-26.5-21.5-48-48-48H176c-26.5 0-48 21.5-48 48v48H48c-26.5 0-48 21.5-48 48v288c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V176c0-26.5-21.5-48-48-48zM192 96h128v32H192V96zm160 248c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48z\"]\n};\nvar faBroadcastTower = {\n  prefix: 'fas',\n  iconName: 'broadcast-tower',\n  icon: [640, 512, [], \"f519\", \"M150.94 192h33.73c11.01 0 18.61-10.83 14.86-21.18-4.93-13.58-7.55-27.98-7.55-42.82s2.62-29.24 7.55-42.82C203.29 74.83 195.68 64 184.67 64h-33.73c-7.01 0-13.46 4.49-15.41 11.23C130.64 92.21 128 109.88 128 128c0 18.12 2.64 35.79 7.54 52.76 1.94 6.74 8.39 11.24 15.4 11.24zM89.92 23.34C95.56 12.72 87.97 0 75.96 0H40.63c-6.27 0-12.14 3.59-14.74 9.31C9.4 45.54 0 85.65 0 128c0 24.75 3.12 68.33 26.69 118.86 2.62 5.63 8.42 9.14 14.61 9.14h34.84c12.02 0 19.61-12.74 13.95-23.37-49.78-93.32-16.71-178.15-.17-209.29zM614.06 9.29C611.46 3.58 605.6 0 599.33 0h-35.42c-11.98 0-19.66 12.66-14.02 23.25 18.27 34.29 48.42 119.42.28 209.23-5.72 10.68 1.8 23.52 13.91 23.52h35.23c6.27 0 12.13-3.58 14.73-9.29C630.57 210.48 640 170.36 640 128s-9.42-82.48-25.94-118.71zM489.06 64h-33.73c-11.01 0-18.61 10.83-14.86 21.18 4.93 13.58 7.55 27.98 7.55 42.82s-2.62 29.24-7.55 42.82c-3.76 10.35 3.85 21.18 14.86 21.18h33.73c7.02 0 13.46-4.49 15.41-11.24 4.9-16.97 7.53-34.64 7.53-52.76 0-18.12-2.64-35.79-7.54-52.76-1.94-6.75-8.39-11.24-15.4-11.24zm-116.3 100.12c7.05-10.29 11.2-22.71 11.2-36.12 0-35.35-28.63-64-63.96-64-35.32 0-63.96 28.65-63.96 64 0 13.41 4.15 25.83 11.2 36.12l-130.5 313.41c-3.4 8.15.46 17.52 8.61 20.92l29.51 12.31c8.15 3.4 17.52-.46 20.91-8.61L244.96 384h150.07l49.2 118.15c3.4 8.16 12.76 12.01 20.91 8.61l29.51-12.31c8.15-3.4 12-12.77 8.61-20.92l-130.5-313.41zM271.62 320L320 203.81 368.38 320h-96.76z\"]\n};\nvar faBroom = {\n  prefix: 'fas',\n  iconName: 'broom',\n  icon: [640, 512, [], \"f51a\", \"M256.47 216.77l86.73 109.18s-16.6 102.36-76.57 150.12C206.66 523.85 0 510.19 0 510.19s3.8-23.14 11-55.43l94.62-112.17c3.97-4.7-.87-11.62-6.65-9.5l-60.4 22.09c14.44-41.66 32.72-80.04 54.6-97.47 59.97-47.76 163.3-40.94 163.3-40.94zM636.53 31.03l-19.86-25c-5.49-6.9-15.52-8.05-22.41-2.56l-232.48 177.8-34.14-42.97c-5.09-6.41-15.14-5.21-18.59 2.21l-25.33 54.55 86.73 109.18 58.8-12.45c8-1.69 11.42-11.2 6.34-17.6l-34.09-42.92 232.48-177.8c6.89-5.48 8.04-15.53 2.55-22.44z\"]\n};\nvar faBrush = {\n  prefix: 'fas',\n  iconName: 'brush',\n  icon: [384, 512, [], \"f55d\", \"M352 0H32C14.33 0 0 14.33 0 32v224h384V32c0-17.67-14.33-32-32-32zM0 320c0 35.35 28.66 64 64 64h64v64c0 35.35 28.66 64 64 64s64-28.65 64-64v-64h64c35.34 0 64-28.65 64-64v-32H0v32zm192 104c13.25 0 24 10.74 24 24 0 13.25-10.75 24-24 24s-24-10.75-24-24c0-13.26 10.75-24 24-24z\"]\n};\nvar faBug = {\n  prefix: 'fas',\n  iconName: 'bug',\n  icon: [512, 512, [], \"f188\", \"M511.988 288.9c-.478 17.43-15.217 31.1-32.653 31.1H424v16c0 21.864-4.882 42.584-13.6 61.145l60.228 60.228c12.496 12.497 12.496 32.758 0 45.255-12.498 12.497-32.759 12.496-45.256 0l-54.736-54.736C345.886 467.965 314.351 480 280 480V236c0-6.627-5.373-12-12-12h-24c-6.627 0-12 5.373-12 12v244c-34.351 0-65.886-12.035-90.636-32.108l-54.736 54.736c-12.498 12.497-32.759 12.496-45.256 0-12.496-12.497-12.496-32.758 0-45.255l60.228-60.228C92.882 378.584 88 357.864 88 336v-16H32.666C15.23 320 .491 306.33.013 288.9-.484 270.816 14.028 256 32 256h56v-58.745l-46.628-46.628c-12.496-12.497-12.496-32.758 0-45.255 12.498-12.497 32.758-12.497 45.256 0L141.255 160h229.489l54.627-54.627c12.498-12.497 32.758-12.497 45.256 0 12.496 12.497 12.496 32.758 0 45.255L424 197.255V256h56c17.972 0 32.484 14.816 31.988 32.9zM257 0c-61.856 0-112 50.144-112 112h224C369 50.144 318.856 0 257 0z\"]\n};\nvar faBuilding = {\n  prefix: 'fas',\n  iconName: 'building',\n  icon: [448, 512, [], \"f1ad\", \"M436 480h-20V24c0-13.255-10.745-24-24-24H56C42.745 0 32 10.745 32 24v456H12c-6.627 0-12 5.373-12 12v20h448v-20c0-6.627-5.373-12-12-12zM128 76c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12V76zm0 96c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12v-40zm52 148h-40c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12zm76 160h-64v-84c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v84zm64-172c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40zm0-96c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40zm0-96c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12V76c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40z\"]\n};\nvar faBullhorn = {\n  prefix: 'fas',\n  iconName: 'bullhorn',\n  icon: [576, 512, [], \"f0a1\", \"M576 240c0-23.63-12.95-44.04-32-55.12V32.01C544 23.26 537.02 0 512 0c-7.12 0-14.19 2.38-19.98 7.02l-85.03 68.03C364.28 109.19 310.66 128 256 128H64c-35.35 0-64 28.65-64 64v96c0 35.35 28.65 64 64 64h33.7c-1.39 10.48-2.18 21.14-2.18 32 0 39.77 9.26 77.35 25.56 110.94 5.19 10.69 16.52 17.06 28.4 17.06h74.28c26.05 0 41.69-29.84 25.9-50.56-16.4-21.52-26.15-48.36-26.15-77.44 0-11.11 1.62-21.79 4.41-32H256c54.66 0 108.28 18.81 150.98 52.95l85.03 68.03a32.023 32.023 0 0 0 19.98 7.02c24.92 0 32-22.78 32-32V295.13C563.05 284.04 576 263.63 576 240zm-96 141.42l-33.05-26.44C392.95 311.78 325.12 288 256 288v-96c69.12 0 136.95-23.78 190.95-66.98L480 98.58v282.84z\"]\n};\nvar faBullseye = {\n  prefix: 'fas',\n  iconName: 'bullseye',\n  icon: [496, 512, [], \"f140\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm0 432c-101.69 0-184-82.29-184-184 0-101.69 82.29-184 184-184 101.69 0 184 82.29 184 184 0 101.69-82.29 184-184 184zm0-312c-70.69 0-128 57.31-128 128s57.31 128 128 128 128-57.31 128-128-57.31-128-128-128zm0 192c-35.29 0-64-28.71-64-64s28.71-64 64-64 64 28.71 64 64-28.71 64-64 64z\"]\n};\nvar faBurn = {\n  prefix: 'fas',\n  iconName: 'burn',\n  icon: [384, 512, [], \"f46a\", \"M192 0C79.7 101.3 0 220.9 0 300.5 0 425 79 512 192 512s192-87 192-211.5c0-79.9-80.2-199.6-192-300.5zm0 448c-56.5 0-96-39-96-94.8 0-13.5 4.6-61.5 96-161.2 91.4 99.7 96 147.7 96 161.2 0 55.8-39.5 94.8-96 94.8z\"]\n};\nvar faBus = {\n  prefix: 'fas',\n  iconName: 'bus',\n  icon: [512, 512, [], \"f207\", \"M488 128h-8V80c0-44.8-99.2-80-224-80S32 35.2 32 80v48h-8c-13.25 0-24 10.74-24 24v80c0 13.25 10.75 24 24 24h8v160c0 17.67 14.33 32 32 32v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h192v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h6.4c16 0 25.6-12.8 25.6-25.6V256h8c13.25 0 24-10.75 24-24v-80c0-13.26-10.75-24-24-24zM112 400c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm16-112c-17.67 0-32-14.33-32-32V128c0-17.67 14.33-32 32-32h256c17.67 0 32 14.33 32 32v128c0 17.67-14.33 32-32 32H128zm272 112c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faBusAlt = {\n  prefix: 'fas',\n  iconName: 'bus-alt',\n  icon: [512, 512, [], \"f55e\", \"M488 128h-8V80c0-44.8-99.2-80-224-80S32 35.2 32 80v48h-8c-13.25 0-24 10.74-24 24v80c0 13.25 10.75 24 24 24h8v160c0 17.67 14.33 32 32 32v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h192v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h6.4c16 0 25.6-12.8 25.6-25.6V256h8c13.25 0 24-10.75 24-24v-80c0-13.26-10.75-24-24-24zM160 72c0-4.42 3.58-8 8-8h176c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H168c-4.42 0-8-3.58-8-8V72zm-48 328c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm128-112H128c-17.67 0-32-14.33-32-32v-96c0-17.67 14.33-32 32-32h112v160zm32 0V128h112c17.67 0 32 14.33 32 32v96c0 17.67-14.33 32-32 32H272zm128 112c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faBusinessTime = {\n  prefix: 'fas',\n  iconName: 'business-time',\n  icon: [640, 512, [], \"f64a\", \"M496 224c-79.59 0-144 64.41-144 144s64.41 144 144 144 144-64.41 144-144-64.41-144-144-144zm64 150.29c0 5.34-4.37 9.71-9.71 9.71h-60.57c-5.34 0-9.71-4.37-9.71-9.71v-76.57c0-5.34 4.37-9.71 9.71-9.71h12.57c5.34 0 9.71 4.37 9.71 9.71V352h38.29c5.34 0 9.71 4.37 9.71 9.71v12.58zM496 192c5.4 0 10.72.33 16 .81V144c0-25.6-22.4-48-48-48h-80V48c0-25.6-22.4-48-48-48H176c-25.6 0-48 22.4-48 48v48H48c-25.6 0-48 22.4-48 48v80h395.12c28.6-20.09 63.35-32 100.88-32zM320 96H192V64h128v32zm6.82 224H208c-8.84 0-16-7.16-16-16v-48H0v144c0 25.6 22.4 48 48 48h291.43C327.1 423.96 320 396.82 320 368c0-16.66 2.48-32.72 6.82-48z\"]\n};\nvar faCalculator = {\n  prefix: 'fas',\n  iconName: 'calculator',\n  icon: [448, 512, [], \"f1ec\", \"M400 0H48C22.4 0 0 22.4 0 48v416c0 25.6 22.4 48 48 48h352c25.6 0 48-22.4 48-48V48c0-25.6-22.4-48-48-48zM128 435.2c0 6.4-6.4 12.8-12.8 12.8H76.8c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm0-128c0 6.4-6.4 12.8-12.8 12.8H76.8c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm128 128c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm0-128c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm128 128c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8V268.8c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v166.4zm0-256c0 6.4-6.4 12.8-12.8 12.8H76.8c-6.4 0-12.8-6.4-12.8-12.8V76.8C64 70.4 70.4 64 76.8 64h294.4c6.4 0 12.8 6.4 12.8 12.8v102.4z\"]\n};\nvar faCalendar = {\n  prefix: 'fas',\n  iconName: 'calendar',\n  icon: [448, 512, [], \"f133\", \"M12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm436-44v-36c0-26.5-21.5-48-48-48h-48V12c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v52H160V12c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v52H48C21.5 64 0 85.5 0 112v36c0 6.6 5.4 12 12 12h424c6.6 0 12-5.4 12-12z\"]\n};\nvar faCalendarAlt = {\n  prefix: 'fas',\n  iconName: 'calendar-alt',\n  icon: [448, 512, [], \"f073\", \"M0 464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V192H0v272zm320-196c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40zm0 128c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40zM192 268c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40zm0 128c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40zM64 268c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12v-40zm0 128c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12v-40zM400 64h-48V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H160V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H48C21.5 64 0 85.5 0 112v48h448v-48c0-26.5-21.5-48-48-48z\"]\n};\nvar faCalendarCheck = {\n  prefix: 'fas',\n  iconName: 'calendar-check',\n  icon: [448, 512, [], \"f274\", \"M436 160H12c-6.627 0-12-5.373-12-12v-36c0-26.51 21.49-48 48-48h48V12c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v52h128V12c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v52h48c26.51 0 48 21.49 48 48v36c0 6.627-5.373 12-12 12zM12 192h424c6.627 0 12 5.373 12 12v260c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V204c0-6.627 5.373-12 12-12zm333.296 95.947l-28.169-28.398c-4.667-4.705-12.265-4.736-16.97-.068L194.12 364.665l-45.98-46.352c-4.667-4.705-12.266-4.736-16.971-.068l-28.397 28.17c-4.705 4.667-4.736 12.265-.068 16.97l82.601 83.269c4.667 4.705 12.265 4.736 16.97.068l142.953-141.805c4.705-4.667 4.736-12.265.068-16.97z\"]\n};\nvar faCalendarDay = {\n  prefix: 'fas',\n  iconName: 'calendar-day',\n  icon: [448, 512, [], \"f783\", \"M0 464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V192H0v272zm64-192c0-8.8 7.2-16 16-16h96c8.8 0 16 7.2 16 16v96c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16v-96zM400 64h-48V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H160V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H48C21.5 64 0 85.5 0 112v48h448v-48c0-26.5-21.5-48-48-48z\"]\n};\nvar faCalendarMinus = {\n  prefix: 'fas',\n  iconName: 'calendar-minus',\n  icon: [448, 512, [], \"f272\", \"M436 160H12c-6.6 0-12-5.4-12-12v-36c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48v36c0 6.6-5.4 12-12 12zM12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm304 192c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12H132c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h184z\"]\n};\nvar faCalendarPlus = {\n  prefix: 'fas',\n  iconName: 'calendar-plus',\n  icon: [448, 512, [], \"f271\", \"M436 160H12c-6.6 0-12-5.4-12-12v-36c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48v36c0 6.6-5.4 12-12 12zM12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm316 140c0-6.6-5.4-12-12-12h-60v-60c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v60h-60c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h60v60c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-60h60c6.6 0 12-5.4 12-12v-40z\"]\n};\nvar faCalendarTimes = {\n  prefix: 'fas',\n  iconName: 'calendar-times',\n  icon: [448, 512, [], \"f273\", \"M436 160H12c-6.6 0-12-5.4-12-12v-36c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48v36c0 6.6-5.4 12-12 12zM12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm257.3 160l48.1-48.1c4.7-4.7 4.7-12.3 0-17l-28.3-28.3c-4.7-4.7-12.3-4.7-17 0L224 306.7l-48.1-48.1c-4.7-4.7-12.3-4.7-17 0l-28.3 28.3c-4.7 4.7-4.7 12.3 0 17l48.1 48.1-48.1 48.1c-4.7 4.7-4.7 12.3 0 17l28.3 28.3c4.7 4.7 12.3 4.7 17 0l48.1-48.1 48.1 48.1c4.7 4.7 12.3 4.7 17 0l28.3-28.3c4.7-4.7 4.7-12.3 0-17L269.3 352z\"]\n};\nvar faCalendarWeek = {\n  prefix: 'fas',\n  iconName: 'calendar-week',\n  icon: [448, 512, [], \"f784\", \"M0 464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V192H0v272zm64-192c0-8.8 7.2-16 16-16h288c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16v-64zM400 64h-48V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H160V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H48C21.5 64 0 85.5 0 112v48h448v-48c0-26.5-21.5-48-48-48z\"]\n};\nvar faCamera = {\n  prefix: 'fas',\n  iconName: 'camera',\n  icon: [512, 512, [], \"f030\", \"M512 144v288c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V144c0-26.5 21.5-48 48-48h88l12.3-32.9c7-18.7 24.9-31.1 44.9-31.1h125.5c20 0 37.9 12.4 44.9 31.1L376 96h88c26.5 0 48 21.5 48 48zM376 288c0-66.2-53.8-120-120-120s-120 53.8-120 120 53.8 120 120 120 120-53.8 120-120zm-32 0c0 48.5-39.5 88-88 88s-88-39.5-88-88 39.5-88 88-88 88 39.5 88 88z\"]\n};\nvar faCameraRetro = {\n  prefix: 'fas',\n  iconName: 'camera-retro',\n  icon: [512, 512, [], \"f083\", \"M48 32C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48H48zm0 32h106c3.3 0 6 2.7 6 6v20c0 3.3-2.7 6-6 6H38c-3.3 0-6-2.7-6-6V80c0-8.8 7.2-16 16-16zm426 96H38c-3.3 0-6-2.7-6-6v-36c0-3.3 2.7-6 6-6h138l30.2-45.3c1.1-1.7 3-2.7 5-2.7H464c8.8 0 16 7.2 16 16v74c0 3.3-2.7 6-6 6zM256 424c-66.2 0-120-53.8-120-120s53.8-120 120-120 120 53.8 120 120-53.8 120-120 120zm0-208c-48.5 0-88 39.5-88 88s39.5 88 88 88 88-39.5 88-88-39.5-88-88-88zm-48 104c-8.8 0-16-7.2-16-16 0-35.3 28.7-64 64-64 8.8 0 16 7.2 16 16s-7.2 16-16 16c-17.6 0-32 14.4-32 32 0 8.8-7.2 16-16 16z\"]\n};\nvar faCampground = {\n  prefix: 'fas',\n  iconName: 'campground',\n  icon: [640, 512, [], \"f6bb\", \"M624 448h-24.68L359.54 117.75l53.41-73.55c5.19-7.15 3.61-17.16-3.54-22.35l-25.9-18.79c-7.15-5.19-17.15-3.61-22.35 3.55L320 63.3 278.83 6.6c-5.19-7.15-15.2-8.74-22.35-3.55l-25.88 18.8c-7.15 5.19-8.74 15.2-3.54 22.35l53.41 73.55L40.68 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM320 288l116.36 160H203.64L320 288z\"]\n};\nvar faCandyCane = {\n  prefix: 'fas',\n  iconName: 'candy-cane',\n  icon: [512, 512, [], \"f786\", \"M497.5 92C469.6 33.1 411.8 0 352.4 0c-27.9 0-56.2 7.3-81.8 22.6L243.1 39c-15.2 9.1-20.1 28.7-11 43.9l32.8 54.9c6 10 16.6 15.6 27.5 15.6 5.6 0 11.2-1.5 16.4-4.5l27.5-16.4c5.1-3.1 10.8-4.5 16.4-4.5 10.9 0 21.5 5.6 27.5 15.6 9.1 15.1 4.1 34.8-11 43.9L15.6 397.6c-15.2 9.1-20.1 28.7-11 43.9l32.8 54.9c6 10 16.6 15.6 27.5 15.6 5.6 0 11.2-1.5 16.4-4.5L428.6 301c71.7-42.9 104.6-133.5 68.9-209zm-177.7 13l-2.5 1.5L296.8 45c9.7-4.7 19.8-8.1 30.3-10.2l20.6 61.8c-9.8.8-19.4 3.3-27.9 8.4zM145.9 431.8l-60.5-38.5 30.8-18.3 60.5 38.5-30.8 18.3zm107.5-63.9l-60.5-38.5 30.8-18.3 60.5 38.5-30.8 18.3zM364.3 302l-60.5-38.5 30.8-18.3 60.5 38.5-30.8 18.3zm20.4-197.3l46-46c8.4 6.5 16 14.1 22.6 22.6L407.6 127c-5.7-9.3-13.7-16.9-22.9-22.3zm82.1 107.8l-59.5-19.8c3.2-5.3 5.8-10.9 7.4-17.1 1.1-4.5 1.7-9.1 1.8-13.6l60.4 20.1c-2.1 10.4-5.5 20.6-10.1 30.4z\"]\n};\nvar faCannabis = {\n  prefix: 'fas',\n  iconName: 'cannabis',\n  icon: [512, 512, [], \"f55f\", \"M503.47 360.25c-1.56-.82-32.39-16.89-76.78-25.81 64.25-75.12 84.05-161.67 84.93-165.64 1.18-5.33-.44-10.9-4.3-14.77-3.03-3.04-7.12-4.7-11.32-4.7-1.14 0-2.29.12-3.44.38-3.88.85-86.54 19.59-160.58 79.76.01-1.46.01-2.93.01-4.4 0-118.79-59.98-213.72-62.53-217.7A15.973 15.973 0 0 0 256 0c-5.45 0-10.53 2.78-13.47 7.37-2.55 3.98-62.53 98.91-62.53 217.7 0 1.47.01 2.94.01 4.4-74.03-60.16-156.69-78.9-160.58-79.76-1.14-.25-2.29-.38-3.44-.38-4.2 0-8.29 1.66-11.32 4.7A15.986 15.986 0 0 0 .38 168.8c.88 3.97 20.68 90.52 84.93 165.64-44.39 8.92-75.21 24.99-76.78 25.81a16.003 16.003 0 0 0-.02 28.29c2.45 1.29 60.76 31.72 133.49 31.72 6.14 0 11.96-.1 17.5-.31-11.37 22.23-16.52 38.31-16.81 39.22-1.8 5.68-.29 11.89 3.91 16.11a16.019 16.019 0 0 0 16.1 3.99c1.83-.57 37.72-11.99 77.3-39.29V504c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8v-64.01c39.58 27.3 75.47 38.71 77.3 39.29a16.019 16.019 0 0 0 16.1-3.99c4.2-4.22 5.71-10.43 3.91-16.11-.29-.91-5.45-16.99-16.81-39.22 5.54.21 11.37.31 17.5.31 72.72 0 131.04-30.43 133.49-31.72 5.24-2.78 8.52-8.22 8.51-14.15-.01-5.94-3.29-11.39-8.53-14.15z\"]\n};\nvar faCapsules = {\n  prefix: 'fas',\n  iconName: 'capsules',\n  icon: [576, 512, [], \"f46b\", \"M555.3 300.1L424.2 112.8C401.9 81 366.4 64 330.4 64c-22.6 0-45.5 6.7-65.5 20.7-19.7 13.8-33.7 32.8-41.5 53.8C220.5 79.2 172 32 112 32 50.1 32 0 82.1 0 144v224c0 61.9 50.1 112 112 112s112-50.1 112-112V218.9c3.3 8.6 7.3 17.1 12.8 25L368 431.2c22.2 31.8 57.7 48.8 93.8 48.8 22.7 0 45.5-6.7 65.5-20.7 51.7-36.2 64.2-107.5 28-159.2zM160 256H64V144c0-26.5 21.5-48 48-48s48 21.5 48 48v112zm194.8 44.9l-65.6-93.7c-7.7-11-10.7-24.4-8.3-37.6 2.3-13.2 9.7-24.8 20.7-32.5 8.5-6 18.5-9.1 28.8-9.1 16.5 0 31.9 8 41.3 21.5l65.6 93.7-82.5 57.7z\"]\n};\nvar faCar = {\n  prefix: 'fas',\n  iconName: 'car',\n  icon: [512, 512, [], \"f1b9\", \"M499.99 176h-59.87l-16.64-41.6C406.38 91.63 365.57 64 319.5 64h-127c-46.06 0-86.88 27.63-103.99 70.4L71.87 176H12.01C4.2 176-1.53 183.34.37 190.91l6 24C7.7 220.25 12.5 224 18.01 224h20.07C24.65 235.73 16 252.78 16 272v48c0 16.12 6.16 30.67 16 41.93V416c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h256v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-54.07c9.84-11.25 16-25.8 16-41.93v-48c0-19.22-8.65-36.27-22.07-48H494c5.51 0 10.31-3.75 11.64-9.09l6-24c1.89-7.57-3.84-14.91-11.65-14.91zm-352.06-17.83c7.29-18.22 24.94-30.17 44.57-30.17h127c19.63 0 37.28 11.95 44.57 30.17L384 208H128l19.93-49.83zM96 319.8c-19.2 0-32-12.76-32-31.9S76.8 256 96 256s48 28.71 48 47.85-28.8 15.95-48 15.95zm320 0c-19.2 0-48 3.19-48-15.95S396.8 256 416 256s32 12.76 32 31.9-12.8 31.9-32 31.9z\"]\n};\nvar faCarAlt = {\n  prefix: 'fas',\n  iconName: 'car-alt',\n  icon: [480, 512, [], \"f5de\", \"M438.66 212.33l-11.24-28.1-19.93-49.83C390.38 91.63 349.57 64 303.5 64h-127c-46.06 0-86.88 27.63-103.99 70.4l-19.93 49.83-11.24 28.1C17.22 221.5 0 244.66 0 272v48c0 16.12 6.16 30.67 16 41.93V416c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h256v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-54.07c9.84-11.25 16-25.8 16-41.93v-48c0-27.34-17.22-50.5-41.34-59.67zm-306.73-54.16c7.29-18.22 24.94-30.17 44.57-30.17h127c19.63 0 37.28 11.95 44.57 30.17L368 208H112l19.93-49.83zM80 319.8c-19.2 0-32-12.76-32-31.9S60.8 256 80 256s48 28.71 48 47.85-28.8 15.95-48 15.95zm320 0c-19.2 0-48 3.19-48-15.95S380.8 256 400 256s32 12.76 32 31.9-12.8 31.9-32 31.9z\"]\n};\nvar faCarBattery = {\n  prefix: 'fas',\n  iconName: 'car-battery',\n  icon: [512, 512, [], \"f5df\", \"M480 128h-32V80c0-8.84-7.16-16-16-16h-96c-8.84 0-16 7.16-16 16v48H192V80c0-8.84-7.16-16-16-16H80c-8.84 0-16 7.16-16 16v48H32c-17.67 0-32 14.33-32 32v256c0 17.67 14.33 32 32 32h448c17.67 0 32-14.33 32-32V160c0-17.67-14.33-32-32-32zM192 264c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h112c4.42 0 8 3.58 8 8v16zm256 0c0 4.42-3.58 8-8 8h-40v40c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-40h-40c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h40v-40c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v40h40c4.42 0 8 3.58 8 8v16z\"]\n};\nvar faCarCrash = {\n  prefix: 'fas',\n  iconName: 'car-crash',\n  icon: [640, 512, [], \"f5e1\", \"M143.25 220.81l-12.42 46.37c-3.01 11.25-3.63 22.89-2.41 34.39l-35.2 28.98c-6.57 5.41-16.31-.43-14.62-8.77l15.44-76.68c1.06-5.26-2.66-10.28-8-10.79l-77.86-7.55c-8.47-.82-11.23-11.83-4.14-16.54l65.15-43.3c4.46-2.97 5.38-9.15 1.98-13.29L21.46 93.22c-5.41-6.57.43-16.3 8.78-14.62l76.68 15.44c5.26 1.06 10.28-2.66 10.8-8l7.55-77.86c.82-8.48 11.83-11.23 16.55-4.14l43.3 65.14c2.97 4.46 9.15 5.38 13.29 1.98l60.4-49.71c6.57-5.41 16.3.43 14.62 8.77L262.1 86.38c-2.71 3.05-5.43 6.09-7.91 9.4l-32.15 42.97-10.71 14.32c-32.73 8.76-59.18 34.53-68.08 67.74zm494.57 132.51l-12.42 46.36c-3.13 11.68-9.38 21.61-17.55 29.36a66.876 66.876 0 0 1-8.76 7l-13.99 52.23c-1.14 4.27-3.1 8.1-5.65 11.38-7.67 9.84-20.74 14.68-33.54 11.25L515 502.62c-17.07-4.57-27.2-22.12-22.63-39.19l8.28-30.91-247.28-66.26-8.28 30.91c-4.57 17.07-22.12 27.2-39.19 22.63l-30.91-8.28c-12.8-3.43-21.7-14.16-23.42-26.51-.57-4.12-.35-8.42.79-12.68l13.99-52.23a66.62 66.62 0 0 1-4.09-10.45c-3.2-10.79-3.65-22.52-.52-34.2l12.42-46.37c5.31-19.8 19.36-34.83 36.89-42.21a64.336 64.336 0 0 1 18.49-4.72l18.13-24.23 32.15-42.97c3.45-4.61 7.19-8.9 11.2-12.84 8-7.89 17.03-14.44 26.74-19.51 4.86-2.54 9.89-4.71 15.05-6.49 10.33-3.58 21.19-5.63 32.24-6.04 11.05-.41 22.31.82 33.43 3.8l122.68 32.87c11.12 2.98 21.48 7.54 30.85 13.43a111.11 111.11 0 0 1 34.69 34.5c8.82 13.88 14.64 29.84 16.68 46.99l6.36 53.29 3.59 30.05a64.49 64.49 0 0 1 22.74 29.93c4.39 11.88 5.29 25.19 1.75 38.39zM255.58 234.34c-18.55-4.97-34.21 4.04-39.17 22.53-4.96 18.49 4.11 34.12 22.65 39.09 18.55 4.97 45.54 15.51 50.49-2.98 4.96-18.49-15.43-53.67-33.97-58.64zm290.61 28.17l-6.36-53.29c-.58-4.87-1.89-9.53-3.82-13.86-5.8-12.99-17.2-23.01-31.42-26.82l-122.68-32.87a48.008 48.008 0 0 0-50.86 17.61l-32.15 42.97 172 46.08 75.29 20.18zm18.49 54.65c-18.55-4.97-53.8 15.31-58.75 33.79-4.95 18.49 23.69 22.86 42.24 27.83 18.55 4.97 34.21-4.04 39.17-22.53 4.95-18.48-4.11-34.12-22.66-39.09z\"]\n};\nvar faCarSide = {\n  prefix: 'fas',\n  iconName: 'car-side',\n  icon: [640, 512, [], \"f5e4\", \"M544 192h-16L419.22 56.02A64.025 64.025 0 0 0 369.24 32H155.33c-26.17 0-49.7 15.93-59.42 40.23L48 194.26C20.44 201.4 0 226.21 0 256v112c0 8.84 7.16 16 16 16h48c0 53.02 42.98 96 96 96s96-42.98 96-96h128c0 53.02 42.98 96 96 96s96-42.98 96-96h48c8.84 0 16-7.16 16-16v-80c0-53.02-42.98-96-96-96zM160 432c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48zm72-240H116.93l38.4-96H232v96zm48 0V96h89.24l76.8 96H280zm200 240c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48z\"]\n};\nvar faCaravan = {\n  prefix: 'fas',\n  iconName: 'caravan',\n  icon: [640, 512, [], \"f8ff\", \"M416,208a16,16,0,1,0,16,16A16,16,0,0,0,416,208ZM624,320H576V160A160,160,0,0,0,416,0H64A64,64,0,0,0,0,64V320a64,64,0,0,0,64,64H96a96,96,0,0,0,192,0H624a16,16,0,0,0,16-16V336A16,16,0,0,0,624,320ZM192,432a48,48,0,1,1,48-48A48.05,48.05,0,0,1,192,432Zm64-240a32,32,0,0,1-32,32H96a32,32,0,0,1-32-32V128A32,32,0,0,1,96,96H224a32,32,0,0,1,32,32ZM448,320H320V128a32,32,0,0,1,32-32h64a32,32,0,0,1,32,32Z\"]\n};\nvar faCaretDown = {\n  prefix: 'fas',\n  iconName: 'caret-down',\n  icon: [320, 512, [], \"f0d7\", \"M31.3 192h257.3c17.8 0 26.7 21.5 14.1 34.1L174.1 354.8c-7.8 7.8-20.5 7.8-28.3 0L17.2 226.1C4.6 213.5 13.5 192 31.3 192z\"]\n};\nvar faCaretLeft = {\n  prefix: 'fas',\n  iconName: 'caret-left',\n  icon: [192, 512, [], \"f0d9\", \"M192 127.338v257.324c0 17.818-21.543 26.741-34.142 14.142L29.196 270.142c-7.81-7.81-7.81-20.474 0-28.284l128.662-128.662c12.599-12.6 34.142-3.676 34.142 14.142z\"]\n};\nvar faCaretRight = {\n  prefix: 'fas',\n  iconName: 'caret-right',\n  icon: [192, 512, [], \"f0da\", \"M0 384.662V127.338c0-17.818 21.543-26.741 34.142-14.142l128.662 128.662c7.81 7.81 7.81 20.474 0 28.284L34.142 398.804C21.543 411.404 0 402.48 0 384.662z\"]\n};\nvar faCaretSquareDown = {\n  prefix: 'fas',\n  iconName: 'caret-square-down',\n  icon: [448, 512, [], \"f150\", \"M448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zM92.5 220.5l123 123c4.7 4.7 12.3 4.7 17 0l123-123c7.6-7.6 2.2-20.5-8.5-20.5H101c-10.7 0-16.1 12.9-8.5 20.5z\"]\n};\nvar faCaretSquareLeft = {\n  prefix: 'fas',\n  iconName: 'caret-square-left',\n  icon: [448, 512, [], \"f191\", \"M400 480H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48zM259.515 124.485l-123.03 123.03c-4.686 4.686-4.686 12.284 0 16.971l123.029 123.029c7.56 7.56 20.485 2.206 20.485-8.485V132.971c.001-10.691-12.925-16.045-20.484-8.486z\"]\n};\nvar faCaretSquareRight = {\n  prefix: 'fas',\n  iconName: 'caret-square-right',\n  icon: [448, 512, [], \"f152\", \"M48 32h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48zm140.485 355.515l123.029-123.029c4.686-4.686 4.686-12.284 0-16.971l-123.029-123.03c-7.56-7.56-20.485-2.206-20.485 8.485v246.059c0 10.691 12.926 16.045 20.485 8.486z\"]\n};\nvar faCaretSquareUp = {\n  prefix: 'fas',\n  iconName: 'caret-square-up',\n  icon: [448, 512, [], \"f151\", \"M0 432V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48zm355.515-140.485l-123.03-123.03c-4.686-4.686-12.284-4.686-16.971 0L92.485 291.515c-7.56 7.56-2.206 20.485 8.485 20.485h246.059c10.691 0 16.045-12.926 8.486-20.485z\"]\n};\nvar faCaretUp = {\n  prefix: 'fas',\n  iconName: 'caret-up',\n  icon: [320, 512, [], \"f0d8\", \"M288.662 352H31.338c-17.818 0-26.741-21.543-14.142-34.142l128.662-128.662c7.81-7.81 20.474-7.81 28.284 0l128.662 128.662c12.6 12.599 3.676 34.142-14.142 34.142z\"]\n};\nvar faCarrot = {\n  prefix: 'fas',\n  iconName: 'carrot',\n  icon: [512, 512, [], \"f787\", \"M298.2 156.6c-52.7-25.7-114.5-10.5-150.2 32.8l55.2 55.2c6.3 6.3 6.3 16.4 0 22.6-3.1 3.1-7.2 4.7-11.3 4.7s-8.2-1.6-11.3-4.7L130.4 217 2.3 479.7c-2.9 6-3.1 13.3 0 19.7 5.4 11.1 18.9 15.7 30 10.3l133.6-65.2-49.2-49.2c-6.3-6.2-6.3-16.4 0-22.6 6.3-6.2 16.4-6.2 22.6 0l57 57 102-49.8c24-11.7 44.5-31.3 57.1-57.1 30.1-61.7 4.5-136.1-57.2-166.2zm92.1-34.9C409.8 81 399.7 32.9 360 0c-50.3 41.7-52.5 107.5-7.9 151.9l8 8c44.4 44.6 110.3 42.4 151.9-7.9-32.9-39.7-81-49.8-121.7-30.3z\"]\n};\nvar faCartArrowDown = {\n  prefix: 'fas',\n  iconName: 'cart-arrow-down',\n  icon: [576, 512, [], \"f218\", \"M504.717 320H211.572l6.545 32h268.418c15.401 0 26.816 14.301 23.403 29.319l-5.517 24.276C523.112 414.668 536 433.828 536 456c0 31.202-25.519 56.444-56.824 55.994-29.823-.429-54.35-24.631-55.155-54.447-.44-16.287 6.085-31.049 16.803-41.548H231.176C241.553 426.165 248 440.326 248 456c0 31.813-26.528 57.431-58.67 55.938-28.54-1.325-51.751-24.385-53.251-52.917-1.158-22.034 10.436-41.455 28.051-51.586L93.883 64H24C10.745 64 0 53.255 0 40V24C0 10.745 10.745 0 24 0h102.529c11.401 0 21.228 8.021 23.513 19.19L159.208 64H551.99c15.401 0 26.816 14.301 23.403 29.319l-47.273 208C525.637 312.246 515.923 320 504.717 320zM403.029 192H360v-60c0-6.627-5.373-12-12-12h-24c-6.627 0-12 5.373-12 12v60h-43.029c-10.691 0-16.045 12.926-8.485 20.485l67.029 67.029c4.686 4.686 12.284 4.686 16.971 0l67.029-67.029c7.559-7.559 2.205-20.485-8.486-20.485z\"]\n};\nvar faCartPlus = {\n  prefix: 'fas',\n  iconName: 'cart-plus',\n  icon: [576, 512, [], \"f217\", \"M504.717 320H211.572l6.545 32h268.418c15.401 0 26.816 14.301 23.403 29.319l-5.517 24.276C523.112 414.668 536 433.828 536 456c0 31.202-25.519 56.444-56.824 55.994-29.823-.429-54.35-24.631-55.155-54.447-.44-16.287 6.085-31.049 16.803-41.548H231.176C241.553 426.165 248 440.326 248 456c0 31.813-26.528 57.431-58.67 55.938-28.54-1.325-51.751-24.385-53.251-52.917-1.158-22.034 10.436-41.455 28.051-51.586L93.883 64H24C10.745 64 0 53.255 0 40V24C0 10.745 10.745 0 24 0h102.529c11.401 0 21.228 8.021 23.513 19.19L159.208 64H551.99c15.401 0 26.816 14.301 23.403 29.319l-47.273 208C525.637 312.246 515.923 320 504.717 320zM408 168h-48v-40c0-8.837-7.163-16-16-16h-16c-8.837 0-16 7.163-16 16v40h-48c-8.837 0-16 7.163-16 16v16c0 8.837 7.163 16 16 16h48v40c0 8.837 7.163 16 16 16h16c8.837 0 16-7.163 16-16v-40h48c8.837 0 16-7.163 16-16v-16c0-8.837-7.163-16-16-16z\"]\n};\nvar faCashRegister = {\n  prefix: 'fas',\n  iconName: 'cash-register',\n  icon: [512, 512, [], \"f788\", \"M511.1 378.8l-26.7-160c-2.6-15.4-15.9-26.7-31.6-26.7H208v-64h96c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16H48c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h96v64H59.1c-15.6 0-29 11.3-31.6 26.7L.8 378.7c-.6 3.5-.9 7-.9 10.5V480c0 17.7 14.3 32 32 32h448c17.7 0 32-14.3 32-32v-90.7c.1-3.5-.2-7-.8-10.5zM280 248c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16zm-32 64h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16zm-32-80c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16h16zM80 80V48h192v32H80zm40 200h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16zm16 64v-16c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16zm216 112c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h176c4.4 0 8 3.6 8 8v16zm24-112c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16zm48-80c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16z\"]\n};\nvar faCat = {\n  prefix: 'fas',\n  iconName: 'cat',\n  icon: [512, 512, [], \"f6be\", \"M290.59 192c-20.18 0-106.82 1.98-162.59 85.95V192c0-52.94-43.06-96-96-96-17.67 0-32 14.33-32 32s14.33 32 32 32c17.64 0 32 14.36 32 32v256c0 35.3 28.7 64 64 64h176c8.84 0 16-7.16 16-16v-16c0-17.67-14.33-32-32-32h-32l128-96v144c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V289.86c-10.29 2.67-20.89 4.54-32 4.54-61.81 0-113.52-44.05-125.41-102.4zM448 96h-64l-64-64v134.4c0 53.02 42.98 96 96 96s96-42.98 96-96V32l-64 64zm-72 80c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zm80 0c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16z\"]\n};\nvar faCertificate = {\n  prefix: 'fas',\n  iconName: 'certificate',\n  icon: [512, 512, [], \"f0a3\", \"M458.622 255.92l45.985-45.005c13.708-12.977 7.316-36.039-10.664-40.339l-62.65-15.99 17.661-62.015c4.991-17.838-11.829-34.663-29.661-29.671l-61.994 17.667-15.984-62.671C337.085.197 313.765-6.276 300.99 7.228L256 53.57 211.011 7.229c-12.63-13.351-36.047-7.234-40.325 10.668l-15.984 62.671-61.995-17.667C74.87 57.907 58.056 74.738 63.046 92.572l17.661 62.015-62.65 15.99C.069 174.878-6.31 197.944 7.392 210.915l45.985 45.005-45.985 45.004c-13.708 12.977-7.316 36.039 10.664 40.339l62.65 15.99-17.661 62.015c-4.991 17.838 11.829 34.663 29.661 29.671l61.994-17.667 15.984 62.671c4.439 18.575 27.696 24.018 40.325 10.668L256 458.61l44.989 46.001c12.5 13.488 35.987 7.486 40.325-10.668l15.984-62.671 61.994 17.667c17.836 4.994 34.651-11.837 29.661-29.671l-17.661-62.015 62.65-15.99c17.987-4.302 24.366-27.367 10.664-40.339l-45.984-45.004z\"]\n};\nvar faChair = {\n  prefix: 'fas',\n  iconName: 'chair',\n  icon: [448, 512, [], \"f6c0\", \"M112 128c0-29.5 16.2-55 40-68.9V256h48V48h48v208h48V59.1c23.8 13.9 40 39.4 40 68.9v128h48V128C384 57.3 326.7 0 256 0h-64C121.3 0 64 57.3 64 128v128h48zm334.3 213.9l-10.7-32c-4.4-13.1-16.6-21.9-30.4-21.9H42.7c-13.8 0-26 8.8-30.4 21.9l-10.7 32C-5.2 362.6 10.2 384 32 384v112c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V384h256v112c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V384c21.8 0 37.2-21.4 30.3-42.1z\"]\n};\nvar faChalkboard = {\n  prefix: 'fas',\n  iconName: 'chalkboard',\n  icon: [640, 512, [], \"f51b\", \"M96 64h448v352h64V40c0-22.06-17.94-40-40-40H72C49.94 0 32 17.94 32 40v376h64V64zm528 384H480v-64H288v64H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z\"]\n};\nvar faChalkboardTeacher = {\n  prefix: 'fas',\n  iconName: 'chalkboard-teacher',\n  icon: [640, 512, [], \"f51c\", \"M208 352c-2.39 0-4.78.35-7.06 1.09C187.98 357.3 174.35 360 160 360c-14.35 0-27.98-2.7-40.95-6.91-2.28-.74-4.66-1.09-7.05-1.09C49.94 352-.33 402.48 0 464.62.14 490.88 21.73 512 48 512h224c26.27 0 47.86-21.12 48-47.38.33-62.14-49.94-112.62-112-112.62zm-48-32c53.02 0 96-42.98 96-96s-42.98-96-96-96-96 42.98-96 96 42.98 96 96 96zM592 0H208c-26.47 0-48 22.25-48 49.59V96c23.42 0 45.1 6.78 64 17.8V64h352v288h-64v-64H384v64h-76.24c19.1 16.69 33.12 38.73 39.69 64H592c26.47 0 48-22.25 48-49.59V49.59C640 22.25 618.47 0 592 0z\"]\n};\nvar faChargingStation = {\n  prefix: 'fas',\n  iconName: 'charging-station',\n  icon: [576, 512, [], \"f5e7\", \"M336 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h320c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm208-320V80c0-8.84-7.16-16-16-16s-16 7.16-16 16v48h-32V80c0-8.84-7.16-16-16-16s-16 7.16-16 16v48h-16c-8.84 0-16 7.16-16 16v32c0 35.76 23.62 65.69 56 75.93v118.49c0 13.95-9.5 26.92-23.26 29.19C431.22 402.5 416 388.99 416 372v-28c0-48.6-39.4-88-88-88h-8V64c0-35.35-28.65-64-64-64H96C60.65 0 32 28.65 32 64v352h288V304h8c22.09 0 40 17.91 40 40v24.61c0 39.67 28.92 75.16 68.41 79.01C481.71 452.05 520 416.41 520 372V251.93c32.38-10.24 56-40.17 56-75.93v-32c0-8.84-7.16-16-16-16h-16zm-283.91 47.76l-93.7 139c-2.2 3.33-6.21 5.24-10.39 5.24-7.67 0-13.47-6.28-11.67-12.92L167.35 224H108c-7.25 0-12.85-5.59-11.89-11.89l16-107C112.9 99.9 117.98 96 124 96h68c7.88 0 13.62 6.54 11.6 13.21L192 160h57.7c9.24 0 15.01 8.78 10.39 15.76z\"]\n};\nvar faChartArea = {\n  prefix: 'fas',\n  iconName: 'chart-area',\n  icon: [512, 512, [], \"f1fe\", \"M500 384c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H12c-6.6 0-12-5.4-12-12V76c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v308h436zM372.7 159.5L288 216l-85.3-113.7c-5.1-6.8-15.5-6.3-19.9 1L96 248v104h384l-89.9-187.8c-3.2-6.5-11.4-8.7-17.4-4.7z\"]\n};\nvar faChartBar = {\n  prefix: 'fas',\n  iconName: 'chart-bar',\n  icon: [512, 512, [], \"f080\", \"M332.8 320h38.4c6.4 0 12.8-6.4 12.8-12.8V172.8c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h38.4c6.4 0 12.8-6.4 12.8-12.8V76.8c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-288 0h38.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h38.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zM496 384H64V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z\"]\n};\nvar faChartLine = {\n  prefix: 'fas',\n  iconName: 'chart-line',\n  icon: [512, 512, [], \"f201\", \"M496 384H64V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM464 96H345.94c-21.38 0-32.09 25.85-16.97 40.97l32.4 32.4L288 242.75l-73.37-73.37c-12.5-12.5-32.76-12.5-45.25 0l-68.69 68.69c-6.25 6.25-6.25 16.38 0 22.63l22.62 22.62c6.25 6.25 16.38 6.25 22.63 0L192 237.25l73.37 73.37c12.5 12.5 32.76 12.5 45.25 0l96-96 32.4 32.4c15.12 15.12 40.97 4.41 40.97-16.97V112c.01-8.84-7.15-16-15.99-16z\"]\n};\nvar faChartPie = {\n  prefix: 'fas',\n  iconName: 'chart-pie',\n  icon: [544, 512, [], \"f200\", \"M527.79 288H290.5l158.03 158.03c6.04 6.04 15.98 6.53 22.19.68 38.7-36.46 65.32-85.61 73.13-140.86 1.34-9.46-6.51-17.85-16.06-17.85zm-15.83-64.8C503.72 103.74 408.26 8.28 288.8.04 279.68-.59 272 7.1 272 16.24V240h223.77c9.14 0 16.82-7.68 16.19-16.8zM224 288V50.71c0-9.55-8.39-17.4-17.84-16.06C86.99 51.49-4.1 155.6.14 280.37 4.5 408.51 114.83 513.59 243.03 511.98c50.4-.63 96.97-16.87 135.26-44.03 7.9-5.6 8.42-17.23 1.57-24.08L224 288z\"]\n};\nvar faCheck = {\n  prefix: 'fas',\n  iconName: 'check',\n  icon: [512, 512, [], \"f00c\", \"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\"]\n};\nvar faCheckCircle = {\n  prefix: 'fas',\n  iconName: 'check-circle',\n  icon: [512, 512, [], \"f058\", \"M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zM227.314 387.314l184-184c6.248-6.248 6.248-16.379 0-22.627l-22.627-22.627c-6.248-6.249-16.379-6.249-22.628 0L216 308.118l-70.059-70.059c-6.248-6.248-16.379-6.248-22.628 0l-22.627 22.627c-6.248 6.248-6.248 16.379 0 22.627l104 104c6.249 6.249 16.379 6.249 22.628.001z\"]\n};\nvar faCheckDouble = {\n  prefix: 'fas',\n  iconName: 'check-double',\n  icon: [512, 512, [], \"f560\", \"M505 174.8l-39.6-39.6c-9.4-9.4-24.6-9.4-33.9 0L192 374.7 80.6 263.2c-9.4-9.4-24.6-9.4-33.9 0L7 302.9c-9.4 9.4-9.4 24.6 0 34L175 505c9.4 9.4 24.6 9.4 33.9 0l296-296.2c9.4-9.5 9.4-24.7.1-34zm-324.3 106c6.2 6.3 16.4 6.3 22.6 0l208-208.2c6.2-6.3 6.2-16.4 0-22.6L366.1 4.7c-6.2-6.3-16.4-6.3-22.6 0L192 156.2l-55.4-55.5c-6.2-6.3-16.4-6.3-22.6 0L68.7 146c-6.2 6.3-6.2 16.4 0 22.6l112 112.2z\"]\n};\nvar faCheckSquare = {\n  prefix: 'fas',\n  iconName: 'check-square',\n  icon: [448, 512, [], \"f14a\", \"M400 480H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48zm-204.686-98.059l184-184c6.248-6.248 6.248-16.379 0-22.627l-22.627-22.627c-6.248-6.248-16.379-6.249-22.628 0L184 302.745l-70.059-70.059c-6.248-6.248-16.379-6.248-22.628 0l-22.627 22.627c-6.248 6.248-6.248 16.379 0 22.627l104 104c6.249 6.25 16.379 6.25 22.628.001z\"]\n};\nvar faCheese = {\n  prefix: 'fas',\n  iconName: 'cheese',\n  icon: [512, 512, [], \"f7ef\", \"M0 288v160a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32V288zM299.83 32a32 32 0 0 0-21.13 7L0 256h512c0-119.89-94-217.8-212.17-224z\"]\n};\nvar faChess = {\n  prefix: 'fas',\n  iconName: 'chess',\n  icon: [512, 512, [], \"f439\", \"M74 208H64a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h15.94A535.78 535.78 0 0 1 64 384h128a535.78 535.78 0 0 1-15.94-128H192a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16h-10l33.89-90.38a16 16 0 0 0-15-21.62H144V64h24a8 8 0 0 0 8-8V40a8 8 0 0 0-8-8h-24V8a8 8 0 0 0-8-8h-16a8 8 0 0 0-8 8v24H88a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h24v32H55.09a16 16 0 0 0-15 21.62zm173.16 251.58L224 448v-16a16 16 0 0 0-16-16H48a16 16 0 0 0-16 16v16L8.85 459.58A16 16 0 0 0 0 473.89V496a16 16 0 0 0 16 16h224a16 16 0 0 0 16-16v-22.11a16 16 0 0 0-8.84-14.31zm92.77-157.78l-3.29 82.2h126.72l-3.29-82.21 24.6-20.79A32 32 0 0 0 496 256.54V198a6 6 0 0 0-6-6h-26.38a6 6 0 0 0-6 6v26h-24.71v-26a6 6 0 0 0-6-6H373.1a6 6 0 0 0-6 6v26h-24.71v-26a6 6 0 0 0-6-6H310a6 6 0 0 0-6 6v58.6a32 32 0 0 0 11.36 24.4zM384 304a16 16 0 0 1 32 0v32h-32zm119.16 155.58L480 448v-16a16 16 0 0 0-16-16H336a16 16 0 0 0-16 16v16l-23.15 11.58a16 16 0 0 0-8.85 14.31V496a16 16 0 0 0 16 16h192a16 16 0 0 0 16-16v-22.11a16 16 0 0 0-8.84-14.31z\"]\n};\nvar faChessBishop = {\n  prefix: 'fas',\n  iconName: 'chess-bishop',\n  icon: [320, 512, [], \"f43a\", \"M8 287.88c0 51.64 22.14 73.83 56 84.6V416h192v-43.52c33.86-10.77 56-33 56-84.6 0-30.61-10.73-67.1-26.69-102.56L185 285.65a8 8 0 0 1-11.31 0l-11.31-11.31a8 8 0 0 1 0-11.31L270.27 155.1c-20.8-37.91-46.47-72.1-70.87-92.59C213.4 59.09 224 47.05 224 32a32 32 0 0 0-32-32h-64a32 32 0 0 0-32 32c0 15 10.6 27.09 24.6 30.51C67.81 106.8 8 214.5 8 287.88zM304 448H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faChessBoard = {\n  prefix: 'fas',\n  iconName: 'chess-board',\n  icon: [512, 512, [], \"f43c\", \"M255.9.2h-64v64h64zM0 64.17v64h64v-64zM128 .2H64v64h64zm64 255.9v64h64v-64zM0 192.12v64h64v-64zM383.85.2h-64v64h64zm128 0h-64v64h64zM128 256.1H64v64h64zM511.8 448v-64h-64v64zm0-128v-64h-64v64zM383.85 512h64v-64h-64zm128-319.88v-64h-64v64zM128 512h64v-64h-64zM0 512h64v-64H0zm255.9 0h64v-64h-64zM0 320.07v64h64v-64zm319.88-191.92v-64h-64v64zm-64 128h64v-64h-64zm-64 128v64h64v-64zm128-64h64v-64h-64zm0-127.95h64v-64h-64zm0 191.93v64h64v-64zM64 384.05v64h64v-64zm128-255.9v-64h-64v64zm191.92 255.9h64v-64h-64zm-128-191.93v-64h-64v64zm128-127.95v64h64v-64zm-128 255.9v64h64v-64zm-64-127.95H128v64h64zm191.92 64h64v-64h-64zM128 128.15H64v64h64zm0 191.92v64h64v-64z\"]\n};\nvar faChessKing = {\n  prefix: 'fas',\n  iconName: 'chess-king',\n  icon: [448, 512, [], \"f43f\", \"M400 448H48a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h352a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm16-288H256v-48h40a8 8 0 0 0 8-8V56a8 8 0 0 0-8-8h-40V8a8 8 0 0 0-8-8h-48a8 8 0 0 0-8 8v40h-40a8 8 0 0 0-8 8v48a8 8 0 0 0 8 8h40v48H32a32 32 0 0 0-30.52 41.54L74.56 416h298.88l73.08-214.46A32 32 0 0 0 416 160z\"]\n};\nvar faChessKnight = {\n  prefix: 'fas',\n  iconName: 'chess-knight',\n  icon: [384, 512, [], \"f441\", \"M19 272.47l40.63 18.06a32 32 0 0 0 24.88.47l12.78-5.12a32 32 0 0 0 18.76-20.5l9.22-30.65a24 24 0 0 1 12.55-15.65L159.94 208v50.33a48 48 0 0 1-26.53 42.94l-57.22 28.65A80 80 0 0 0 32 401.48V416h319.86V224c0-106-85.92-192-191.92-192H12A12 12 0 0 0 0 44a16.9 16.9 0 0 0 1.79 7.58L16 80l-9 9a24 24 0 0 0-7 17v137.21a32 32 0 0 0 19 29.26zM52 128a20 20 0 1 1-20 20 20 20 0 0 1 20-20zm316 320H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h352a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faChessPawn = {\n  prefix: 'fas',\n  iconName: 'chess-pawn',\n  icon: [320, 512, [], \"f443\", \"M105.1 224H80a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h16v5.49c0 44-4.14 86.6-24 122.51h176c-19.89-35.91-24-78.51-24-122.51V288h16a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-25.1c29.39-18.38 49.1-50.78 49.1-88a104 104 0 0 0-208 0c0 37.22 19.71 69.62 49.1 88zM304 448H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faChessQueen = {\n  prefix: 'fas',\n  iconName: 'chess-queen',\n  icon: [512, 512, [], \"f445\", \"M256 112a56 56 0 1 0-56-56 56 56 0 0 0 56 56zm176 336H80a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h352a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm72.87-263.84l-28.51-15.92c-7.44-5-16.91-2.46-22.29 4.68a47.59 47.59 0 0 1-47.23 18.23C383.7 186.86 368 164.93 368 141.4a13.4 13.4 0 0 0-13.4-13.4h-38.77c-6 0-11.61 4-12.86 9.91a48 48 0 0 1-93.94 0c-1.25-5.92-6.82-9.91-12.86-9.91H157.4a13.4 13.4 0 0 0-13.4 13.4c0 25.69-19 48.75-44.67 50.49a47.5 47.5 0 0 1-41.54-19.15c-5.28-7.09-14.73-9.45-22.09-4.54l-28.57 16a16 16 0 0 0-5.44 20.47L104.24 416h303.52l102.55-211.37a16 16 0 0 0-5.44-20.47z\"]\n};\nvar faChessRook = {\n  prefix: 'fas',\n  iconName: 'chess-rook',\n  icon: [384, 512, [], \"f447\", \"M368 32h-56a16 16 0 0 0-16 16v48h-48V48a16 16 0 0 0-16-16h-80a16 16 0 0 0-16 16v48H88.1V48a16 16 0 0 0-16-16H16A16 16 0 0 0 0 48v176l64 32c0 48.33-1.54 95-13.21 160h282.42C321.54 351 320 303.72 320 256l64-32V48a16 16 0 0 0-16-16zM224 320h-64v-64a32 32 0 0 1 64 0zm144 128H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h352a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faChevronCircleDown = {\n  prefix: 'fas',\n  iconName: 'chevron-circle-down',\n  icon: [512, 512, [], \"f13a\", \"M504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zM273 369.9l135.5-135.5c9.4-9.4 9.4-24.6 0-33.9l-17-17c-9.4-9.4-24.6-9.4-33.9 0L256 285.1 154.4 183.5c-9.4-9.4-24.6-9.4-33.9 0l-17 17c-9.4 9.4-9.4 24.6 0 33.9L239 369.9c9.4 9.4 24.6 9.4 34 0z\"]\n};\nvar faChevronCircleLeft = {\n  prefix: 'fas',\n  iconName: 'chevron-circle-left',\n  icon: [512, 512, [], \"f137\", \"M256 504C119 504 8 393 8 256S119 8 256 8s248 111 248 248-111 248-248 248zM142.1 273l135.5 135.5c9.4 9.4 24.6 9.4 33.9 0l17-17c9.4-9.4 9.4-24.6 0-33.9L226.9 256l101.6-101.6c9.4-9.4 9.4-24.6 0-33.9l-17-17c-9.4-9.4-24.6-9.4-33.9 0L142.1 239c-9.4 9.4-9.4 24.6 0 34z\"]\n};\nvar faChevronCircleRight = {\n  prefix: 'fas',\n  iconName: 'chevron-circle-right',\n  icon: [512, 512, [], \"f138\", \"M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zm113.9 231L234.4 103.5c-9.4-9.4-24.6-9.4-33.9 0l-17 17c-9.4 9.4-9.4 24.6 0 33.9L285.1 256 183.5 357.6c-9.4 9.4-9.4 24.6 0 33.9l17 17c9.4 9.4 24.6 9.4 33.9 0L369.9 273c9.4-9.4 9.4-24.6 0-34z\"]\n};\nvar faChevronCircleUp = {\n  prefix: 'fas',\n  iconName: 'chevron-circle-up',\n  icon: [512, 512, [], \"f139\", \"M8 256C8 119 119 8 256 8s248 111 248 248-111 248-248 248S8 393 8 256zm231-113.9L103.5 277.6c-9.4 9.4-9.4 24.6 0 33.9l17 17c9.4 9.4 24.6 9.4 33.9 0L256 226.9l101.6 101.6c9.4 9.4 24.6 9.4 33.9 0l17-17c9.4-9.4 9.4-24.6 0-33.9L273 142.1c-9.4-9.4-24.6-9.4-34 0z\"]\n};\nvar faChevronDown = {\n  prefix: 'fas',\n  iconName: 'chevron-down',\n  icon: [448, 512, [], \"f078\", \"M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z\"]\n};\nvar faChevronLeft = {\n  prefix: 'fas',\n  iconName: 'chevron-left',\n  icon: [320, 512, [], \"f053\", \"M34.52 239.03L228.87 44.69c9.37-9.37 24.57-9.37 33.94 0l22.67 22.67c9.36 9.36 9.37 24.52.04 33.9L131.49 256l154.02 154.75c9.34 9.38 9.32 24.54-.04 33.9l-22.67 22.67c-9.37 9.37-24.57 9.37-33.94 0L34.52 272.97c-9.37-9.37-9.37-24.57 0-33.94z\"]\n};\nvar faChevronRight = {\n  prefix: 'fas',\n  iconName: 'chevron-right',\n  icon: [320, 512, [], \"f054\", \"M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z\"]\n};\nvar faChevronUp = {\n  prefix: 'fas',\n  iconName: 'chevron-up',\n  icon: [448, 512, [], \"f077\", \"M240.971 130.524l194.343 194.343c9.373 9.373 9.373 24.569 0 33.941l-22.667 22.667c-9.357 9.357-24.522 9.375-33.901.04L224 227.495 69.255 381.516c-9.379 9.335-24.544 9.317-33.901-.04l-22.667-22.667c-9.373-9.373-9.373-24.569 0-33.941L207.03 130.525c9.372-9.373 24.568-9.373 33.941-.001z\"]\n};\nvar faChild = {\n  prefix: 'fas',\n  iconName: 'child',\n  icon: [384, 512, [], \"f1ae\", \"M120 72c0-39.765 32.235-72 72-72s72 32.235 72 72c0 39.764-32.235 72-72 72s-72-32.236-72-72zm254.627 1.373c-12.496-12.497-32.758-12.497-45.254 0L242.745 160H141.254L54.627 73.373c-12.496-12.497-32.758-12.497-45.254 0-12.497 12.497-12.497 32.758 0 45.255L104 213.254V480c0 17.673 14.327 32 32 32h16c17.673 0 32-14.327 32-32V368h16v112c0 17.673 14.327 32 32 32h16c17.673 0 32-14.327 32-32V213.254l94.627-94.627c12.497-12.497 12.497-32.757 0-45.254z\"]\n};\nvar faChurch = {\n  prefix: 'fas',\n  iconName: 'church',\n  icon: [640, 512, [], \"f51d\", \"M464.46 246.68L352 179.2V128h48c8.84 0 16-7.16 16-16V80c0-8.84-7.16-16-16-16h-48V16c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v48h-48c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h48v51.2l-112.46 67.48A31.997 31.997 0 0 0 160 274.12V512h96v-96c0-35.35 28.65-64 64-64s64 28.65 64 64v96h96V274.12c0-11.24-5.9-21.66-15.54-27.44zM0 395.96V496c0 8.84 7.16 16 16 16h112V320L19.39 366.54A32.024 32.024 0 0 0 0 395.96zm620.61-29.42L512 320v192h112c8.84 0 16-7.16 16-16V395.96c0-12.8-7.63-24.37-19.39-29.42z\"]\n};\nvar faCircle = {\n  prefix: 'fas',\n  iconName: 'circle',\n  icon: [512, 512, [], \"f111\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8z\"]\n};\nvar faCircleNotch = {\n  prefix: 'fas',\n  iconName: 'circle-notch',\n  icon: [512, 512, [], \"f1ce\", \"M288 39.056v16.659c0 10.804 7.281 20.159 17.686 23.066C383.204 100.434 440 171.518 440 256c0 101.689-82.295 184-184 184-101.689 0-184-82.295-184-184 0-84.47 56.786-155.564 134.312-177.219C216.719 75.874 224 66.517 224 55.712V39.064c0-15.709-14.834-27.153-30.046-23.234C86.603 43.482 7.394 141.206 8.003 257.332c.72 137.052 111.477 246.956 248.531 246.667C393.255 503.711 504 392.788 504 256c0-115.633-79.14-212.779-186.211-240.236C302.678 11.889 288 23.456 288 39.056z\"]\n};\nvar faCity = {\n  prefix: 'fas',\n  iconName: 'city',\n  icon: [640, 512, [], \"f64f\", \"M616 192H480V24c0-13.26-10.74-24-24-24H312c-13.26 0-24 10.74-24 24v72h-64V16c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v80h-64V16c0-8.84-7.16-16-16-16H80c-8.84 0-16 7.16-16 16v80H24c-13.26 0-24 10.74-24 24v360c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V216c0-13.26-10.75-24-24-24zM128 404c0 6.63-5.37 12-12 12H76c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12H76c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12H76c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm128 192c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm160 96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12V76c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm160 288c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40z\"]\n};\nvar faClinicMedical = {\n  prefix: 'fas',\n  iconName: 'clinic-medical',\n  icon: [576, 512, [], \"f7f2\", \"M288 115L69.47 307.71c-1.62 1.46-3.69 2.14-5.47 3.35V496a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V311.1c-1.7-1.16-3.72-1.82-5.26-3.2zm96 261a8 8 0 0 1-8 8h-56v56a8 8 0 0 1-8 8h-48a8 8 0 0 1-8-8v-56h-56a8 8 0 0 1-8-8v-48a8 8 0 0 1 8-8h56v-56a8 8 0 0 1 8-8h48a8 8 0 0 1 8 8v56h56a8 8 0 0 1 8 8zm186.69-139.72l-255.94-226a39.85 39.85 0 0 0-53.45 0l-256 226a16 16 0 0 0-1.21 22.6L25.5 282.7a16 16 0 0 0 22.6 1.21L277.42 81.63a16 16 0 0 1 21.17 0L527.91 283.9a16 16 0 0 0 22.6-1.21l21.4-23.82a16 16 0 0 0-1.22-22.59z\"]\n};\nvar faClipboard = {\n  prefix: 'fas',\n  iconName: 'clipboard',\n  icon: [384, 512, [], \"f328\", \"M384 112v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h80c0-35.29 28.71-64 64-64s64 28.71 64 64h80c26.51 0 48 21.49 48 48zM192 40c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24m96 114v-20a6 6 0 0 0-6-6H102a6 6 0 0 0-6 6v20a6 6 0 0 0 6 6h180a6 6 0 0 0 6-6z\"]\n};\nvar faClipboardCheck = {\n  prefix: 'fas',\n  iconName: 'clipboard-check',\n  icon: [384, 512, [], \"f46c\", \"M336 64h-80c0-35.3-28.7-64-64-64s-64 28.7-64 64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM192 40c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm121.2 231.8l-143 141.8c-4.7 4.7-12.3 4.6-17-.1l-82.6-83.3c-4.7-4.7-4.6-12.3.1-17L99.1 285c4.7-4.7 12.3-4.6 17 .1l46 46.4 106-105.2c4.7-4.7 12.3-4.6 17 .1l28.2 28.4c4.7 4.8 4.6 12.3-.1 17z\"]\n};\nvar faClipboardList = {\n  prefix: 'fas',\n  iconName: 'clipboard-list',\n  icon: [384, 512, [], \"f46d\", \"M336 64h-80c0-35.3-28.7-64-64-64s-64 28.7-64 64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM96 424c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24zm0-96c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24zm0-96c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24zm96-192c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm128 368c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16z\"]\n};\nvar faClock = {\n  prefix: 'fas',\n  iconName: 'clock',\n  icon: [512, 512, [], \"f017\", \"M256,8C119,8,8,119,8,256S119,504,256,504,504,393,504,256,393,8,256,8Zm92.49,313h0l-20,25a16,16,0,0,1-22.49,2.5h0l-67-49.72a40,40,0,0,1-15-31.23V112a16,16,0,0,1,16-16h32a16,16,0,0,1,16,16V256l58,42.5A16,16,0,0,1,348.49,321Z\"]\n};\nvar faClone = {\n  prefix: 'fas',\n  iconName: 'clone',\n  icon: [512, 512, [], \"f24d\", \"M464 0c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48H176c-26.51 0-48-21.49-48-48V48c0-26.51 21.49-48 48-48h288M176 416c-44.112 0-80-35.888-80-80V128H48c-26.51 0-48 21.49-48 48v288c0 26.51 21.49 48 48 48h288c26.51 0 48-21.49 48-48v-48H176z\"]\n};\nvar faClosedCaptioning = {\n  prefix: 'fas',\n  iconName: 'closed-captioning',\n  icon: [512, 512, [], \"f20a\", \"M464 64H48C21.5 64 0 85.5 0 112v288c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM218.1 287.7c2.8-2.5 7.1-2.1 9.2.9l19.5 27.7c1.7 2.4 1.5 5.6-.5 7.7-53.6 56.8-172.8 32.1-172.8-67.9 0-97.3 121.7-119.5 172.5-70.1 2.1 2 2.5 3.2 1 5.7l-17.5 30.5c-1.9 3.1-6.2 4-9.1 1.7-40.8-32-94.6-14.9-94.6 31.2.1 48 51.1 70.5 92.3 32.6zm190.4 0c2.8-2.5 7.1-2.1 9.2.9l19.5 27.7c1.7 2.4 1.5 5.6-.5 7.7-53.5 56.9-172.7 32.1-172.7-67.9 0-97.3 121.7-119.5 172.5-70.1 2.1 2 2.5 3.2 1 5.7L420 222.2c-1.9 3.1-6.2 4-9.1 1.7-40.8-32-94.6-14.9-94.6 31.2 0 48 51 70.5 92.2 32.6z\"]\n};\nvar faCloud = {\n  prefix: 'fas',\n  iconName: 'cloud',\n  icon: [640, 512, [], \"f0c2\", \"M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4z\"]\n};\nvar faCloudDownloadAlt = {\n  prefix: 'fas',\n  iconName: 'cloud-download-alt',\n  icon: [640, 512, [], \"f381\", \"M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4zm-132.9 88.7L299.3 420.7c-6.2 6.2-16.4 6.2-22.6 0L171.3 315.3c-10.1-10.1-2.9-27.3 11.3-27.3H248V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v112h65.4c14.2 0 21.4 17.2 11.3 27.3z\"]\n};\nvar faCloudMeatball = {\n  prefix: 'fas',\n  iconName: 'cloud-meatball',\n  icon: [512, 512, [], \"f73b\", \"M48 352c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48zm416 0c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48zm-119 11.1c4.6-14.5 1.6-30.8-9.8-42.3-11.5-11.5-27.8-14.4-42.3-9.9-7-13.5-20.7-23-36.9-23s-29.9 9.5-36.9 23c-14.5-4.6-30.8-1.6-42.3 9.9-11.5 11.5-14.4 27.8-9.9 42.3-13.5 7-23 20.7-23 36.9s9.5 29.9 23 36.9c-4.6 14.5-1.6 30.8 9.9 42.3 8.2 8.2 18.9 12.3 29.7 12.3 4.3 0 8.5-1.1 12.6-2.5 7 13.5 20.7 23 36.9 23s29.9-9.5 36.9-23c4.1 1.3 8.3 2.5 12.6 2.5 10.8 0 21.5-4.1 29.7-12.3 11.5-11.5 14.4-27.8 9.8-42.3 13.5-7 23-20.7 23-36.9s-9.5-29.9-23-36.9zM512 224c0-53-43-96-96-96-.6 0-1.1.2-1.6.2 1.1-5.2 1.6-10.6 1.6-16.2 0-44.2-35.8-80-80-80-24.6 0-46.3 11.3-61 28.8C256.4 24.8 219.3 0 176 0 114.1 0 64 50.1 64 112c0 7.3.8 14.3 2.1 21.2C27.8 145.8 0 181.5 0 224c0 53 43 96 96 96h43.4c3.6-8 8.4-15.4 14.8-21.8 13.5-13.5 31.5-21.1 50.8-21.3 13.5-13.2 31.7-20.9 51-20.9s37.5 7.7 51 20.9c19.3.2 37.3 7.8 50.8 21.3 6.4 6.4 11.3 13.8 14.8 21.8H416c53 0 96-43 96-96z\"]\n};\nvar faCloudMoon = {\n  prefix: 'fas',\n  iconName: 'cloud-moon',\n  icon: [576, 512, [], \"f6c3\", \"M342.8 352.7c5.7-9.6 9.2-20.7 9.2-32.7 0-35.3-28.7-64-64-64-17.2 0-32.8 6.9-44.3 17.9-16.3-29.6-47.5-49.9-83.7-49.9-53 0-96 43-96 96 0 2 .5 3.8.6 5.7C27.1 338.8 0 374.1 0 416c0 53 43 96 96 96h240c44.2 0 80-35.8 80-80 0-41.9-32.3-75.8-73.2-79.3zm222.5-54.3c-93.1 17.7-178.5-53.7-178.5-147.7 0-54.2 29-104 76.1-130.8 7.3-4.1 5.4-15.1-2.8-16.7C448.4 1.1 436.7 0 425 0 319.1 0 233.1 85.9 233.1 192c0 8.5.7 16.8 1.8 25 5.9 4.3 11.6 8.9 16.7 14.2 11.4-4.7 23.7-7.2 36.4-7.2 52.9 0 96 43.1 96 96 0 3.6-.2 7.2-.6 10.7 23.6 10.8 42.4 29.5 53.5 52.6 54.4-3.4 103.7-29.3 137.1-70.4 5.3-6.5-.5-16.1-8.7-14.5z\"]\n};\nvar faCloudMoonRain = {\n  prefix: 'fas',\n  iconName: 'cloud-moon-rain',\n  icon: [576, 512, [], \"f73c\", \"M350.5 225.5c-6.9-37.2-39.3-65.5-78.5-65.5-12.3 0-23.9 3-34.3 8-17.4-24.1-45.6-40-77.7-40-53 0-96 43-96 96 0 .5.2 1.1.2 1.6C27.6 232.9 0 265.2 0 304c0 44.2 35.8 80 80 80h256c44.2 0 80-35.8 80-80 0-39.2-28.2-71.7-65.5-78.5zm217.4-1.7c-70.4 13.3-135-40.3-135-110.8 0-40.6 21.9-78 57.5-98.1 5.5-3.1 4.1-11.4-2.1-12.5C479.6.8 470.7 0 461.8 0c-77.9 0-141.1 61.2-144.4 137.9 26.7 11.9 48.2 33.8 58.9 61.7 37.1 14.3 64 47.4 70.2 86.8 5.1.5 10 1.5 15.2 1.5 44.7 0 85.6-20.2 112.6-53.3 4.2-4.8-.2-12-6.4-10.8zM364.5 418.1c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8z\"]\n};\nvar faCloudRain = {\n  prefix: 'fas',\n  iconName: 'cloud-rain',\n  icon: [512, 512, [], \"f73d\", \"M416 128c-.6 0-1.1.2-1.6.2 1.1-5.2 1.6-10.6 1.6-16.2 0-44.2-35.8-80-80-80-24.6 0-46.3 11.3-61 28.8C256.4 24.8 219.3 0 176 0 114.1 0 64 50.1 64 112c0 7.3.8 14.3 2.1 21.2C27.8 145.8 0 181.5 0 224c0 53 43 96 96 96h320c53 0 96-43 96-96s-43-96-96-96zM88 374.2c-12.8 44.4-40 56.4-40 87.7 0 27.7 21.5 50.1 48 50.1s48-22.4 48-50.1c0-31.4-27.2-43.1-40-87.7-2.2-8.1-13.5-8.5-16 0zm160 0c-12.8 44.4-40 56.4-40 87.7 0 27.7 21.5 50.1 48 50.1s48-22.4 48-50.1c0-31.4-27.2-43.1-40-87.7-2.2-8.1-13.5-8.5-16 0zm160 0c-12.8 44.4-40 56.4-40 87.7 0 27.7 21.5 50.1 48 50.1s48-22.4 48-50.1c0-31.4-27.2-43.1-40-87.7-2.2-8.1-13.5-8.5-16 0z\"]\n};\nvar faCloudShowersHeavy = {\n  prefix: 'fas',\n  iconName: 'cloud-showers-heavy',\n  icon: [512, 512, [], \"f740\", \"M183.9 370.1c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zm96 0c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zm-192 0c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zm384 0c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zm-96 0c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zM416 128c-.6 0-1.1.2-1.6.2 1.1-5.2 1.6-10.6 1.6-16.2 0-44.2-35.8-80-80-80-24.6 0-46.3 11.3-61 28.8C256.4 24.8 219.3 0 176 0 114.2 0 64 50.1 64 112c0 7.3.8 14.3 2.1 21.2C27.8 145.8 0 181.5 0 224c0 53 43 96 96 96h320c53 0 96-43 96-96s-43-96-96-96z\"]\n};\nvar faCloudSun = {\n  prefix: 'fas',\n  iconName: 'cloud-sun',\n  icon: [640, 512, [], \"f6c4\", \"M575.2 325.7c.2-1.9.8-3.7.8-5.6 0-35.3-28.7-64-64-64-12.6 0-24.2 3.8-34.1 10-17.6-38.8-56.5-66-101.9-66-61.8 0-112 50.1-112 112 0 3 .7 5.8.9 8.7-49.6 3.7-88.9 44.7-88.9 95.3 0 53 43 96 96 96h272c53 0 96-43 96-96 0-42.1-27.2-77.4-64.8-90.4zm-430.4-22.6c-43.7-43.7-43.7-114.7 0-158.3 43.7-43.7 114.7-43.7 158.4 0 9.7 9.7 16.9 20.9 22.3 32.7 9.8-3.7 20.1-6 30.7-7.5L386 81.1c4-11.9-7.3-23.1-19.2-19.2L279 91.2 237.5 8.4C232-2.8 216-2.8 210.4 8.4L169 91.2 81.1 61.9C69.3 58 58 69.3 61.9 81.1l29.3 87.8-82.8 41.5c-11.2 5.6-11.2 21.5 0 27.1l82.8 41.4-29.3 87.8c-4 11.9 7.3 23.1 19.2 19.2l76.1-25.3c6.1-12.4 14-23.7 23.6-33.5-13.1-5.4-25.4-13.4-36-24zm-4.8-79.2c0 40.8 29.3 74.8 67.9 82.3 8-4.7 16.3-8.8 25.2-11.7 5.4-44.3 31-82.5 67.4-105C287.3 160.4 258 140 224 140c-46.3 0-84 37.6-84 83.9z\"]\n};\nvar faCloudSunRain = {\n  prefix: 'fas',\n  iconName: 'cloud-sun-rain',\n  icon: [576, 512, [], \"f743\", \"M510.5 225.5c-6.9-37.2-39.3-65.5-78.5-65.5-12.3 0-23.9 3-34.3 8-17.4-24.1-45.6-40-77.7-40-53 0-96 43-96 96 0 .5.2 1.1.2 1.6C187.6 233 160 265.2 160 304c0 44.2 35.8 80 80 80h256c44.2 0 80-35.8 80-80 0-39.2-28.2-71.7-65.5-78.5zm-386.4 34.4c-37.4-37.4-37.4-98.3 0-135.8 34.6-34.6 89.1-36.8 126.7-7.4 20-12.9 43.6-20.7 69.2-20.7.7 0 1.3.2 2 .2l8.9-26.7c3.4-10.2-6.3-19.8-16.5-16.4l-75.3 25.1-35.5-71c-4.8-9.6-18.5-9.6-23.3 0l-35.5 71-75.3-25.1c-10.2-3.4-19.8 6.3-16.4 16.5l25.1 75.3-71 35.5c-9.6 4.8-9.6 18.5 0 23.3l71 35.5-25.1 75.3c-3.4 10.2 6.3 19.8 16.5 16.5l59.2-19.7c-.2-2.4-.7-4.7-.7-7.2 0-12.5 2.3-24.5 6.2-35.9-3.6-2.7-7.1-5.2-10.2-8.3zm69.8-58c4.3-24.5 15.8-46.4 31.9-64-9.8-6.2-21.4-9.9-33.8-9.9-35.3 0-64 28.7-64 64 0 18.7 8.2 35.4 21.1 47.1 11.3-15.9 26.6-28.9 44.8-37.2zm330.6 216.2c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8z\"]\n};\nvar faCloudUploadAlt = {\n  prefix: 'fas',\n  iconName: 'cloud-upload-alt',\n  icon: [640, 512, [], \"f382\", \"M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4zM393.4 288H328v112c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V288h-65.4c-14.3 0-21.4-17.2-11.3-27.3l105.4-105.4c6.2-6.2 16.4-6.2 22.6 0l105.4 105.4c10.1 10.1 2.9 27.3-11.3 27.3z\"]\n};\nvar faCocktail = {\n  prefix: 'fas',\n  iconName: 'cocktail',\n  icon: [576, 512, [], \"f561\", \"M296 464h-56V338.78l168.74-168.73c15.52-15.52 4.53-42.05-17.42-42.05H24.68c-21.95 0-32.94 26.53-17.42 42.05L176 338.78V464h-56c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h240c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40zM432 0c-62.61 0-115.35 40.2-135.18 96h52.54c16.65-28.55 47.27-48 82.64-48 52.93 0 96 43.06 96 96s-43.07 96-96 96c-14.04 0-27.29-3.2-39.32-8.64l-35.26 35.26C379.23 279.92 404.59 288 432 288c79.53 0 144-64.47 144-144S511.53 0 432 0z\"]\n};\nvar faCode = {\n  prefix: 'fas',\n  iconName: 'code',\n  icon: [640, 512, [], \"f121\", \"M278.9 511.5l-61-17.7c-6.4-1.8-10-8.5-8.2-14.9L346.2 8.7c1.8-6.4 8.5-10 14.9-8.2l61 17.7c6.4 1.8 10 8.5 8.2 14.9L293.8 503.3c-1.9 6.4-8.5 10.1-14.9 8.2zm-114-112.2l43.5-46.4c4.6-4.9 4.3-12.7-.8-17.2L117 256l90.6-79.7c5.1-4.5 5.5-12.3.8-17.2l-43.5-46.4c-4.5-4.8-12.1-5.1-17-.5L3.8 247.2c-5.1 4.7-5.1 12.8 0 17.5l144.1 135.1c4.9 4.6 12.5 4.4 17-.5zm327.2.6l144.1-135.1c5.1-4.7 5.1-12.8 0-17.5L492.1 112.1c-4.8-4.5-12.4-4.3-17 .5L431.6 159c-4.6 4.9-4.3 12.7.8 17.2L523 256l-90.6 79.7c-5.1 4.5-5.5 12.3-.8 17.2l43.5 46.4c4.5 4.9 12.1 5.1 17 .6z\"]\n};\nvar faCodeBranch = {\n  prefix: 'fas',\n  iconName: 'code-branch',\n  icon: [384, 512, [], \"f126\", \"M384 144c0-44.2-35.8-80-80-80s-80 35.8-80 80c0 36.4 24.3 67.1 57.5 76.8-.6 16.1-4.2 28.5-11 36.9-15.4 19.2-49.3 22.4-85.2 25.7-28.2 2.6-57.4 5.4-81.3 16.9v-144c32.5-10.2 56-40.5 56-76.3 0-44.2-35.8-80-80-80S0 35.8 0 80c0 35.8 23.5 66.1 56 76.3v199.3C23.5 365.9 0 396.2 0 432c0 44.2 35.8 80 80 80s80-35.8 80-80c0-34-21.2-63.1-51.2-74.6 3.1-5.2 7.8-9.8 14.9-13.4 16.2-8.2 40.4-10.4 66.1-12.8 42.2-3.9 90-8.4 118.2-43.4 14-17.4 21.1-39.8 21.6-67.9 31.6-10.8 54.4-40.7 54.4-75.9zM80 64c8.8 0 16 7.2 16 16s-7.2 16-16 16-16-7.2-16-16 7.2-16 16-16zm0 384c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm224-320c8.8 0 16 7.2 16 16s-7.2 16-16 16-16-7.2-16-16 7.2-16 16-16z\"]\n};\nvar faCoffee = {\n  prefix: 'fas',\n  iconName: 'coffee',\n  icon: [640, 512, [], \"f0f4\", \"M192 384h192c53 0 96-43 96-96h32c70.6 0 128-57.4 128-128S582.6 32 512 32H120c-13.3 0-24 10.7-24 24v232c0 53 43 96 96 96zM512 96c35.3 0 64 28.7 64 64s-28.7 64-64 64h-32V96h32zm47.7 384H48.3c-47.6 0-61-64-36-64h583.3c25 0 11.8 64-35.9 64z\"]\n};\nvar faCog = {\n  prefix: 'fas',\n  iconName: 'cog',\n  icon: [512, 512, [], \"f013\", \"M487.4 315.7l-42.6-24.6c4.3-23.2 4.3-47 0-70.2l42.6-24.6c4.9-2.8 7.1-8.6 5.5-14-11.1-35.6-30-67.8-54.7-94.6-3.8-4.1-10-5.1-14.8-2.3L380.8 110c-17.9-15.4-38.5-27.3-60.8-35.1V25.8c0-5.6-3.9-10.5-9.4-11.7-36.7-8.2-74.3-7.8-109.2 0-5.5 1.2-9.4 6.1-9.4 11.7V75c-22.2 7.9-42.8 19.8-60.8 35.1L88.7 85.5c-4.9-2.8-11-1.9-14.8 2.3-24.7 26.7-43.6 58.9-54.7 94.6-1.7 5.4.6 11.2 5.5 14L67.3 221c-4.3 23.2-4.3 47 0 70.2l-42.6 24.6c-4.9 2.8-7.1 8.6-5.5 14 11.1 35.6 30 67.8 54.7 94.6 3.8 4.1 10 5.1 14.8 2.3l42.6-24.6c17.9 15.4 38.5 27.3 60.8 35.1v49.2c0 5.6 3.9 10.5 9.4 11.7 36.7 8.2 74.3 7.8 109.2 0 5.5-1.2 9.4-6.1 9.4-11.7v-49.2c22.2-7.9 42.8-19.8 60.8-35.1l42.6 24.6c4.9 2.8 11 1.9 14.8-2.3 24.7-26.7 43.6-58.9 54.7-94.6 1.5-5.5-.7-11.3-5.6-14.1zM256 336c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\"]\n};\nvar faCogs = {\n  prefix: 'fas',\n  iconName: 'cogs',\n  icon: [640, 512, [], \"f085\", \"M512.1 191l-8.2 14.3c-3 5.3-9.4 7.5-15.1 5.4-11.8-4.4-22.6-10.7-32.1-18.6-4.6-3.8-5.8-10.5-2.8-15.7l8.2-14.3c-6.9-8-12.3-17.3-15.9-27.4h-16.5c-6 0-11.2-4.3-12.2-10.3-2-12-2.1-24.6 0-37.1 1-6 6.2-10.4 12.2-10.4h16.5c3.6-10.1 9-19.4 15.9-27.4l-8.2-14.3c-3-5.2-1.9-11.9 2.8-15.7 9.5-7.9 20.4-14.2 32.1-18.6 5.7-2.1 12.1.1 15.1 5.4l8.2 14.3c10.5-1.9 21.2-1.9 31.7 0L552 6.3c3-5.3 9.4-7.5 15.1-5.4 11.8 4.4 22.6 10.7 32.1 18.6 4.6 3.8 5.8 10.5 2.8 15.7l-8.2 14.3c6.9 8 12.3 17.3 15.9 27.4h16.5c6 0 11.2 4.3 12.2 10.3 2 12 2.1 24.6 0 37.1-1 6-6.2 10.4-12.2 10.4h-16.5c-3.6 10.1-9 19.4-15.9 27.4l8.2 14.3c3 5.2 1.9 11.9-2.8 15.7-9.5 7.9-20.4 14.2-32.1 18.6-5.7 2.1-12.1-.1-15.1-5.4l-8.2-14.3c-10.4 1.9-21.2 1.9-31.7 0zm-10.5-58.8c38.5 29.6 82.4-14.3 52.8-52.8-38.5-29.7-82.4 14.3-52.8 52.8zM386.3 286.1l33.7 16.8c10.1 5.8 14.5 18.1 10.5 29.1-8.9 24.2-26.4 46.4-42.6 65.8-7.4 8.9-20.2 11.1-30.3 5.3l-29.1-16.8c-16 13.7-34.6 24.6-54.9 31.7v33.6c0 11.6-8.3 21.6-19.7 23.6-24.6 4.2-50.4 4.4-75.9 0-11.5-2-20-11.9-20-23.6V418c-20.3-7.2-38.9-18-54.9-31.7L74 403c-10 5.8-22.9 3.6-30.3-5.3-16.2-19.4-33.3-41.6-42.2-65.7-4-10.9.4-23.2 10.5-29.1l33.3-16.8c-3.9-20.9-3.9-42.4 0-63.4L12 205.8c-10.1-5.8-14.6-18.1-10.5-29 8.9-24.2 26-46.4 42.2-65.8 7.4-8.9 20.2-11.1 30.3-5.3l29.1 16.8c16-13.7 34.6-24.6 54.9-31.7V57.1c0-11.5 8.2-21.5 19.6-23.5 24.6-4.2 50.5-4.4 76-.1 11.5 2 20 11.9 20 23.6v33.6c20.3 7.2 38.9 18 54.9 31.7l29.1-16.8c10-5.8 22.9-3.6 30.3 5.3 16.2 19.4 33.2 41.6 42.1 65.8 4 10.9.1 23.2-10 29.1l-33.7 16.8c3.9 21 3.9 42.5 0 63.5zm-117.6 21.1c59.2-77-28.7-164.9-105.7-105.7-59.2 77 28.7 164.9 105.7 105.7zm243.4 182.7l-8.2 14.3c-3 5.3-9.4 7.5-15.1 5.4-11.8-4.4-22.6-10.7-32.1-18.6-4.6-3.8-5.8-10.5-2.8-15.7l8.2-14.3c-6.9-8-12.3-17.3-15.9-27.4h-16.5c-6 0-11.2-4.3-12.2-10.3-2-12-2.1-24.6 0-37.1 1-6 6.2-10.4 12.2-10.4h16.5c3.6-10.1 9-19.4 15.9-27.4l-8.2-14.3c-3-5.2-1.9-11.9 2.8-15.7 9.5-7.9 20.4-14.2 32.1-18.6 5.7-2.1 12.1.1 15.1 5.4l8.2 14.3c10.5-1.9 21.2-1.9 31.7 0l8.2-14.3c3-5.3 9.4-7.5 15.1-5.4 11.8 4.4 22.6 10.7 32.1 18.6 4.6 3.8 5.8 10.5 2.8 15.7l-8.2 14.3c6.9 8 12.3 17.3 15.9 27.4h16.5c6 0 11.2 4.3 12.2 10.3 2 12 2.1 24.6 0 37.1-1 6-6.2 10.4-12.2 10.4h-16.5c-3.6 10.1-9 19.4-15.9 27.4l8.2 14.3c3 5.2 1.9 11.9-2.8 15.7-9.5 7.9-20.4 14.2-32.1 18.6-5.7 2.1-12.1-.1-15.1-5.4l-8.2-14.3c-10.4 1.9-21.2 1.9-31.7 0zM501.6 431c38.5 29.6 82.4-14.3 52.8-52.8-38.5-29.6-82.4 14.3-52.8 52.8z\"]\n};\nvar faCoins = {\n  prefix: 'fas',\n  iconName: 'coins',\n  icon: [512, 512, [], \"f51e\", \"M0 405.3V448c0 35.3 86 64 192 64s192-28.7 192-64v-42.7C342.7 434.4 267.2 448 192 448S41.3 434.4 0 405.3zM320 128c106 0 192-28.7 192-64S426 0 320 0 128 28.7 128 64s86 64 192 64zM0 300.4V352c0 35.3 86 64 192 64s192-28.7 192-64v-51.6c-41.3 34-116.9 51.6-192 51.6S41.3 334.4 0 300.4zm416 11c57.3-11.1 96-31.7 96-55.4v-42.7c-23.2 16.4-57.3 27.6-96 34.5v63.6zM192 160C86 160 0 195.8 0 240s86 80 192 80 192-35.8 192-80-86-80-192-80zm219.3 56.3c60-10.8 100.7-32 100.7-56.3v-42.7c-35.5 25.1-96.5 38.6-160.7 41.8 29.5 14.3 51.2 33.5 60 57.2z\"]\n};\nvar faColumns = {\n  prefix: 'fas',\n  iconName: 'columns',\n  icon: [512, 512, [], \"f0db\", \"M464 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM224 416H64V160h160v256zm224 0H288V160h160v256z\"]\n};\nvar faComment = {\n  prefix: 'fas',\n  iconName: 'comment',\n  icon: [512, 512, [], \"f075\", \"M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5c-2.2 2.3-2.8 5.7-1.5 8.7S4.8 480 8 480c66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 141.4 0 256-93.1 256-208S397.4 32 256 32z\"]\n};\nvar faCommentAlt = {\n  prefix: 'fas',\n  iconName: 'comment-alt',\n  icon: [512, 512, [], \"f27a\", \"M448 0H64C28.7 0 0 28.7 0 64v288c0 35.3 28.7 64 64 64h96v84c0 9.8 11.2 15.5 19.1 9.7L304 416h144c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64z\"]\n};\nvar faCommentDollar = {\n  prefix: 'fas',\n  iconName: 'comment-dollar',\n  icon: [512, 512, [], \"f651\", \"M256 32C114.62 32 0 125.12 0 240c0 49.56 21.41 95.01 57.02 130.74C44.46 421.05 2.7 465.97 2.2 466.5A7.995 7.995 0 0 0 8 480c66.26 0 115.99-31.75 140.6-51.38C181.29 440.93 217.59 448 256 448c141.38 0 256-93.12 256-208S397.38 32 256 32zm24 302.44V352c0 8.84-7.16 16-16 16h-16c-8.84 0-16-7.16-16-16v-17.73c-11.42-1.35-22.28-5.19-31.78-11.46-6.22-4.11-6.82-13.11-1.55-18.38l17.52-17.52c3.74-3.74 9.31-4.24 14.11-2.03 3.18 1.46 6.66 2.22 10.26 2.22h32.78c4.66 0 8.44-3.78 8.44-8.42 0-3.75-2.52-7.08-6.12-8.11l-50.07-14.3c-22.25-6.35-40.01-24.71-42.91-47.67-4.05-32.07 19.03-59.43 49.32-63.05V128c0-8.84 7.16-16 16-16h16c8.84 0 16 7.16 16 16v17.73c11.42 1.35 22.28 5.19 31.78 11.46 6.22 4.11 6.82 13.11 1.55 18.38l-17.52 17.52c-3.74 3.74-9.31 4.24-14.11 2.03a24.516 24.516 0 0 0-10.26-2.22h-32.78c-4.66 0-8.44 3.78-8.44 8.42 0 3.75 2.52 7.08 6.12 8.11l50.07 14.3c22.25 6.36 40.01 24.71 42.91 47.67 4.05 32.06-19.03 59.42-49.32 63.04z\"]\n};\nvar faCommentDots = {\n  prefix: 'fas',\n  iconName: 'comment-dots',\n  icon: [512, 512, [], \"f4ad\", \"M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5c-2.2 2.3-2.8 5.7-1.5 8.7S4.8 480 8 480c66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 141.4 0 256-93.1 256-208S397.4 32 256 32zM128 272c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faCommentMedical = {\n  prefix: 'fas',\n  iconName: 'comment-medical',\n  icon: [512, 512, [], \"f7f5\", \"M256 32C114.62 32 0 125.12 0 240c0 49.56 21.41 95 57 130.74C44.46 421.05 2.7 466 2.2 466.5A8 8 0 0 0 8 480c66.26 0 116-31.75 140.6-51.38A304.66 304.66 0 0 0 256 448c141.39 0 256-93.12 256-208S397.39 32 256 32zm96 232a8 8 0 0 1-8 8h-56v56a8 8 0 0 1-8 8h-48a8 8 0 0 1-8-8v-56h-56a8 8 0 0 1-8-8v-48a8 8 0 0 1 8-8h56v-56a8 8 0 0 1 8-8h48a8 8 0 0 1 8 8v56h56a8 8 0 0 1 8 8z\"]\n};\nvar faCommentSlash = {\n  prefix: 'fas',\n  iconName: 'comment-slash',\n  icon: [640, 512, [], \"f4b3\", \"M64 240c0 49.6 21.4 95 57 130.7-12.6 50.3-54.3 95.2-54.8 95.8-2.2 2.3-2.8 5.7-1.5 8.7 1.3 2.9 4.1 4.8 7.3 4.8 66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 27.4 0 53.7-3.6 78.4-10L72.9 186.4c-5.6 17.1-8.9 35-8.9 53.6zm569.8 218.1l-114.4-88.4C554.6 334.1 576 289.2 576 240c0-114.9-114.6-208-256-208-65.1 0-124.2 20.1-169.4 52.7L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4l588.4 454.7c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.4-6.8 4.1-16.9-2.9-22.3z\"]\n};\nvar faComments = {\n  prefix: 'fas',\n  iconName: 'comments',\n  icon: [576, 512, [], \"f086\", \"M416 192c0-88.4-93.1-160-208-160S0 103.6 0 192c0 34.3 14.1 65.9 38 92-13.4 30.2-35.5 54.2-35.8 54.5-2.2 2.3-2.8 5.7-1.5 8.7S4.8 352 8 352c36.6 0 66.9-12.3 88.7-25 32.2 15.7 70.3 25 111.3 25 114.9 0 208-71.6 208-160zm122 220c23.9-26 38-57.7 38-92 0-66.9-53.5-124.2-129.3-148.1.9 6.6 1.3 13.3 1.3 20.1 0 105.9-107.7 192-240 192-10.8 0-21.3-.8-31.7-1.9C207.8 439.6 281.8 480 368 480c41 0 79.1-9.2 111.3-25 21.8 12.7 52.1 25 88.7 25 3.2 0 6.1-1.9 7.3-4.8 1.3-2.9.7-6.3-1.5-8.7-.3-.3-22.4-24.2-35.8-54.5z\"]\n};\nvar faCommentsDollar = {\n  prefix: 'fas',\n  iconName: 'comments-dollar',\n  icon: [576, 512, [], \"f653\", \"M416 192c0-88.37-93.12-160-208-160S0 103.63 0 192c0 34.27 14.13 65.95 37.97 91.98C24.61 314.22 2.52 338.16 2.2 338.5A7.995 7.995 0 0 0 8 352c36.58 0 66.93-12.25 88.73-24.98C128.93 342.76 167.02 352 208 352c114.88 0 208-71.63 208-160zm-224 96v-16.29c-11.29-.58-22.27-4.52-31.37-11.35-3.9-2.93-4.1-8.77-.57-12.14l11.75-11.21c2.77-2.64 6.89-2.76 10.13-.73 3.87 2.42 8.26 3.72 12.82 3.72h28.11c6.5 0 11.8-5.92 11.8-13.19 0-5.95-3.61-11.19-8.77-12.73l-45-13.5c-18.59-5.58-31.58-23.42-31.58-43.39 0-24.52 19.05-44.44 42.67-45.07V96c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16.29c11.29.58 22.27 4.51 31.37 11.35 3.9 2.93 4.1 8.77.57 12.14l-11.75 11.21c-2.77 2.64-6.89 2.76-10.13.73-3.87-2.43-8.26-3.72-12.82-3.72h-28.11c-6.5 0-11.8 5.92-11.8 13.19 0 5.95 3.61 11.19 8.77 12.73l45 13.5c18.59 5.58 31.58 23.42 31.58 43.39 0 24.53-19.05 44.44-42.67 45.07V288c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8zm346.01 123.99C561.87 385.96 576 354.27 576 320c0-66.94-53.49-124.2-129.33-148.07.86 6.6 1.33 13.29 1.33 20.07 0 105.87-107.66 192-240 192-10.78 0-21.32-.77-31.73-1.88C207.8 439.63 281.77 480 368 480c40.98 0 79.07-9.24 111.27-24.98C501.07 467.75 531.42 480 568 480c3.2 0 6.09-1.91 7.34-4.84 1.27-2.94.66-6.34-1.55-8.67-.31-.33-22.42-24.24-35.78-54.5z\"]\n};\nvar faCompactDisc = {\n  prefix: 'fas',\n  iconName: 'compact-disc',\n  icon: [496, 512, [], \"f51f\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM88 256H56c0-105.9 86.1-192 192-192v32c-88.2 0-160 71.8-160 160zm160 96c-53 0-96-43-96-96s43-96 96-96 96 43 96 96-43 96-96 96zm0-128c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32z\"]\n};\nvar faCompass = {\n  prefix: 'fas',\n  iconName: 'compass',\n  icon: [496, 512, [], \"f14e\", \"M225.38 233.37c-12.5 12.5-12.5 32.76 0 45.25 12.49 12.5 32.76 12.5 45.25 0 12.5-12.5 12.5-32.76 0-45.25-12.5-12.49-32.76-12.49-45.25 0zM248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm126.14 148.05L308.17 300.4a31.938 31.938 0 0 1-15.77 15.77l-144.34 65.97c-16.65 7.61-33.81-9.55-26.2-26.2l65.98-144.35a31.938 31.938 0 0 1 15.77-15.77l144.34-65.97c16.65-7.6 33.8 9.55 26.19 26.2z\"]\n};\nvar faCompress = {\n  prefix: 'fas',\n  iconName: 'compress',\n  icon: [448, 512, [], \"f066\", \"M436 192H312c-13.3 0-24-10.7-24-24V44c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v84h84c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12zm-276-24V44c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v84H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h124c13.3 0 24-10.7 24-24zm0 300V344c0-13.3-10.7-24-24-24H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h84v84c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm192 0v-84h84c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12H312c-13.3 0-24 10.7-24 24v124c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12z\"]\n};\nvar faCompressAlt = {\n  prefix: 'fas',\n  iconName: 'compress-alt',\n  icon: [448, 512, [], \"f422\", \"M4.686 427.314L104 328l-32.922-31.029C55.958 281.851 66.666 256 88.048 256h112C213.303 256 224 266.745 224 280v112c0 21.382-25.803 32.09-40.922 16.971L152 376l-99.314 99.314c-6.248 6.248-16.379 6.248-22.627 0L4.686 449.941c-6.248-6.248-6.248-16.379 0-22.627zM443.314 84.686L344 184l32.922 31.029c15.12 15.12 4.412 40.971-16.97 40.971h-112C234.697 256 224 245.255 224 232V120c0-21.382 25.803-32.09 40.922-16.971L296 136l99.314-99.314c6.248-6.248 16.379-6.248 22.627 0l25.373 25.373c6.248 6.248 6.248 16.379 0 22.627z\"]\n};\nvar faCompressArrowsAlt = {\n  prefix: 'fas',\n  iconName: 'compress-arrows-alt',\n  icon: [512, 512, [], \"f78c\", \"M200 288H88c-21.4 0-32.1 25.8-17 41l32.9 31-99.2 99.3c-6.2 6.2-6.2 16.4 0 22.6l25.4 25.4c6.2 6.2 16.4 6.2 22.6 0L152 408l31.1 33c15.1 15.1 40.9 4.4 40.9-17V312c0-13.3-10.7-24-24-24zm112-64h112c21.4 0 32.1-25.9 17-41l-33-31 99.3-99.3c6.2-6.2 6.2-16.4 0-22.6L481.9 4.7c-6.2-6.2-16.4-6.2-22.6 0L360 104l-31.1-33C313.8 55.9 288 66.6 288 88v112c0 13.3 10.7 24 24 24zm96 136l33-31.1c15.1-15.1 4.4-40.9-17-40.9H312c-13.3 0-24 10.7-24 24v112c0 21.4 25.9 32.1 41 17l31-32.9 99.3 99.3c6.2 6.2 16.4 6.2 22.6 0l25.4-25.4c6.2-6.2 6.2-16.4 0-22.6L408 360zM183 71.1L152 104 52.7 4.7c-6.2-6.2-16.4-6.2-22.6 0L4.7 30.1c-6.2 6.2-6.2 16.4 0 22.6L104 152l-33 31.1C55.9 198.2 66.6 224 88 224h112c13.3 0 24-10.7 24-24V88c0-21.3-25.9-32-41-16.9z\"]\n};\nvar faConciergeBell = {\n  prefix: 'fas',\n  iconName: 'concierge-bell',\n  icon: [512, 512, [], \"f562\", \"M288 130.54V112h16c8.84 0 16-7.16 16-16V80c0-8.84-7.16-16-16-16h-96c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h16v18.54C115.49 146.11 32 239.18 32 352h448c0-112.82-83.49-205.89-192-221.46zM496 384H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z\"]\n};\nvar faCookie = {\n  prefix: 'fas',\n  iconName: 'cookie',\n  icon: [512, 512, [], \"f563\", \"M510.37 254.79l-12.08-76.26a132.493 132.493 0 0 0-37.16-72.95l-54.76-54.75c-19.73-19.72-45.18-32.7-72.71-37.05l-76.7-12.15c-27.51-4.36-55.69.11-80.52 12.76L107.32 49.6a132.25 132.25 0 0 0-57.79 57.8l-35.1 68.88a132.602 132.602 0 0 0-12.82 80.94l12.08 76.27a132.493 132.493 0 0 0 37.16 72.95l54.76 54.75a132.087 132.087 0 0 0 72.71 37.05l76.7 12.14c27.51 4.36 55.69-.11 80.52-12.75l69.12-35.21a132.302 132.302 0 0 0 57.79-57.8l35.1-68.87c12.71-24.96 17.2-53.3 12.82-80.96zM176 368c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm32-160c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm160 128c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faCookieBite = {\n  prefix: 'fas',\n  iconName: 'cookie-bite',\n  icon: [512, 512, [], \"f564\", \"M510.52 255.82c-69.97-.85-126.47-57.69-126.47-127.86-70.17 0-127-56.49-127.86-126.45-27.26-4.14-55.13.3-79.72 12.82l-69.13 35.22a132.221 132.221 0 0 0-57.79 57.81l-35.1 68.88a132.645 132.645 0 0 0-12.82 80.95l12.08 76.27a132.521 132.521 0 0 0 37.16 72.96l54.77 54.76a132.036 132.036 0 0 0 72.71 37.06l76.71 12.15c27.51 4.36 55.7-.11 80.53-12.76l69.13-35.21a132.273 132.273 0 0 0 57.79-57.81l35.1-68.88c12.56-24.64 17.01-52.58 12.91-79.91zM176 368c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm32-160c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm160 128c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faCopy = {\n  prefix: 'fas',\n  iconName: 'copy',\n  icon: [448, 512, [], \"f0c5\", \"M320 448v40c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24V120c0-13.255 10.745-24 24-24h72v296c0 30.879 25.121 56 56 56h168zm0-344V0H152c-13.255 0-24 10.745-24 24v368c0 13.255 10.745 24 24 24h272c13.255 0 24-10.745 24-24V128H344c-13.2 0-24-10.8-24-24zm120.971-31.029L375.029 7.029A24 24 0 0 0 358.059 0H352v96h96v-6.059a24 24 0 0 0-7.029-16.97z\"]\n};\nvar faCopyright = {\n  prefix: 'fas',\n  iconName: 'copyright',\n  icon: [512, 512, [], \"f1f9\", \"M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm117.134 346.753c-1.592 1.867-39.776 45.731-109.851 45.731-84.692 0-144.484-63.26-144.484-145.567 0-81.303 62.004-143.401 143.762-143.401 66.957 0 101.965 37.315 103.422 38.904a12 12 0 0 1 1.238 14.623l-22.38 34.655c-4.049 6.267-12.774 7.351-18.234 2.295-.233-.214-26.529-23.88-61.88-23.88-46.116 0-73.916 33.575-73.916 76.082 0 39.602 25.514 79.692 74.277 79.692 38.697 0 65.28-28.338 65.544-28.625 5.132-5.565 14.059-5.033 18.508 1.053l24.547 33.572a12.001 12.001 0 0 1-.553 14.866z\"]\n};\nvar faCouch = {\n  prefix: 'fas',\n  iconName: 'couch',\n  icon: [640, 512, [], \"f4b8\", \"M160 224v64h320v-64c0-35.3 28.7-64 64-64h32c0-53-43-96-96-96H160c-53 0-96 43-96 96h32c35.3 0 64 28.7 64 64zm416-32h-32c-17.7 0-32 14.3-32 32v96H128v-96c0-17.7-14.3-32-32-32H64c-35.3 0-64 28.7-64 64 0 23.6 13 44 32 55.1V432c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-16h384v16c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V311.1c19-11.1 32-31.5 32-55.1 0-35.3-28.7-64-64-64z\"]\n};\nvar faCreditCard = {\n  prefix: 'fas',\n  iconName: 'credit-card',\n  icon: [576, 512, [], \"f09d\", \"M0 432c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V256H0v176zm192-68c0-6.6 5.4-12 12-12h136c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H204c-6.6 0-12-5.4-12-12v-40zm-128 0c0-6.6 5.4-12 12-12h72c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12v-40zM576 80v48H0V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48z\"]\n};\nvar faCrop = {\n  prefix: 'fas',\n  iconName: 'crop',\n  icon: [512, 512, [], \"f125\", \"M488 352h-40V109.25l59.31-59.31c6.25-6.25 6.25-16.38 0-22.63L484.69 4.69c-6.25-6.25-16.38-6.25-22.63 0L402.75 64H192v96h114.75L160 306.75V24c0-13.26-10.75-24-24-24H88C74.75 0 64 10.74 64 24v40H24C10.75 64 0 74.74 0 88v48c0 13.25 10.75 24 24 24h40v264c0 13.25 10.75 24 24 24h232v-96H205.25L352 205.25V488c0 13.25 10.75 24 24 24h48c13.25 0 24-10.75 24-24v-40h40c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24z\"]\n};\nvar faCropAlt = {\n  prefix: 'fas',\n  iconName: 'crop-alt',\n  icon: [512, 512, [], \"f565\", \"M488 352h-40V96c0-17.67-14.33-32-32-32H192v96h160v328c0 13.25 10.75 24 24 24h48c13.25 0 24-10.75 24-24v-40h40c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24zM160 24c0-13.26-10.75-24-24-24H88C74.75 0 64 10.74 64 24v40H24C10.75 64 0 74.74 0 88v48c0 13.25 10.75 24 24 24h40v256c0 17.67 14.33 32 32 32h224v-96H160V24z\"]\n};\nvar faCross = {\n  prefix: 'fas',\n  iconName: 'cross',\n  icon: [384, 512, [], \"f654\", \"M352 128h-96V32c0-17.67-14.33-32-32-32h-64c-17.67 0-32 14.33-32 32v96H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h96v224c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V256h96c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32z\"]\n};\nvar faCrosshairs = {\n  prefix: 'fas',\n  iconName: 'crosshairs',\n  icon: [512, 512, [], \"f05b\", \"M500 224h-30.364C455.724 130.325 381.675 56.276 288 42.364V12c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v30.364C130.325 56.276 56.276 130.325 42.364 224H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h30.364C56.276 381.675 130.325 455.724 224 469.636V500c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-30.364C381.675 455.724 455.724 381.675 469.636 288H500c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12zM288 404.634V364c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40.634C165.826 392.232 119.783 346.243 107.366 288H148c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-40.634C119.768 165.826 165.757 119.783 224 107.366V148c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40.634C346.174 119.768 392.217 165.757 404.634 224H364c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40.634C392.232 346.174 346.243 392.217 288 404.634zM288 256c0 17.673-14.327 32-32 32s-32-14.327-32-32c0-17.673 14.327-32 32-32s32 14.327 32 32z\"]\n};\nvar faCrow = {\n  prefix: 'fas',\n  iconName: 'crow',\n  icon: [640, 512, [], \"f520\", \"M544 32h-16.36C513.04 12.68 490.09 0 464 0c-44.18 0-80 35.82-80 80v20.98L12.09 393.57A30.216 30.216 0 0 0 0 417.74c0 22.46 23.64 37.07 43.73 27.03L165.27 384h96.49l44.41 120.1c2.27 6.23 9.15 9.44 15.38 7.17l22.55-8.21c6.23-2.27 9.44-9.15 7.17-15.38L312.94 384H352c1.91 0 3.76-.23 5.66-.29l44.51 120.38c2.27 6.23 9.15 9.44 15.38 7.17l22.55-8.21c6.23-2.27 9.44-9.15 7.17-15.38l-41.24-111.53C485.74 352.8 544 279.26 544 192v-80l96-16c0-35.35-42.98-64-96-64zm-80 72c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z\"]\n};\nvar faCrown = {\n  prefix: 'fas',\n  iconName: 'crown',\n  icon: [640, 512, [], \"f521\", \"M528 448H112c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h416c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm64-320c-26.5 0-48 21.5-48 48 0 7.1 1.6 13.7 4.4 19.8L476 239.2c-15.4 9.2-35.3 4-44.2-11.6L350.3 85C361 76.2 368 63 368 48c0-26.5-21.5-48-48-48s-48 21.5-48 48c0 15 7 28.2 17.7 37l-81.5 142.6c-8.9 15.6-28.9 20.8-44.2 11.6l-72.3-43.4c2.7-6 4.4-12.7 4.4-19.8 0-26.5-21.5-48-48-48S0 149.5 0 176s21.5 48 48 48c2.6 0 5.2-.4 7.7-.8L128 416h384l72.3-192.8c2.5.4 5.1.8 7.7.8 26.5 0 48-21.5 48-48s-21.5-48-48-48z\"]\n};\nvar faCrutch = {\n  prefix: 'fas',\n  iconName: 'crutch',\n  icon: [512, 512, [], \"f7f7\", \"M507.31 185.71l-181-181a16 16 0 0 0-22.62 0L281 27.31a16 16 0 0 0 0 22.63l181 181a16 16 0 0 0 22.63 0l22.62-22.63a16 16 0 0 0 .06-22.6zm-179.54 66.41l-67.89-67.89 55.1-55.1-45.25-45.25-109.67 109.67a96.08 96.08 0 0 0-25.67 46.29L106.65 360.1l-102 102a16 16 0 0 0 0 22.63l22.62 22.62a16 16 0 0 0 22.63 0l102-102 120.25-27.75a95.88 95.88 0 0 0 46.29-25.65l109.68-109.68L382.87 197zm-54.57 54.57a32 32 0 0 1-15.45 8.54l-79.3 18.32 18.3-79.3a32.22 32.22 0 0 1 8.56-15.45l9.31-9.31 67.89 67.89z\"]\n};\nvar faCube = {\n  prefix: 'fas',\n  iconName: 'cube',\n  icon: [512, 512, [], \"f1b2\", \"M239.1 6.3l-208 78c-18.7 7-31.1 25-31.1 45v225.1c0 18.2 10.3 34.8 26.5 42.9l208 104c13.5 6.8 29.4 6.8 42.9 0l208-104c16.3-8.1 26.5-24.8 26.5-42.9V129.3c0-20-12.4-37.9-31.1-44.9l-208-78C262 2.2 250 2.2 239.1 6.3zM256 68.4l192 72v1.1l-192 78-192-78v-1.1l192-72zm32 356V275.5l160-65v133.9l-160 80z\"]\n};\nvar faCubes = {\n  prefix: 'fas',\n  iconName: 'cubes',\n  icon: [512, 512, [], \"f1b3\", \"M488.6 250.2L392 214V105.5c0-15-9.3-28.4-23.4-33.7l-100-37.5c-8.1-3.1-17.1-3.1-25.3 0l-100 37.5c-14.1 5.3-23.4 18.7-23.4 33.7V214l-96.6 36.2C9.3 255.5 0 268.9 0 283.9V394c0 13.6 7.7 26.1 19.9 32.2l100 50c10.1 5.1 22.1 5.1 32.2 0l103.9-52 103.9 52c10.1 5.1 22.1 5.1 32.2 0l100-50c12.2-6.1 19.9-18.6 19.9-32.2V283.9c0-15-9.3-28.4-23.4-33.7zM358 214.8l-85 31.9v-68.2l85-37v73.3zM154 104.1l102-38.2 102 38.2v.6l-102 41.4-102-41.4v-.6zm84 291.1l-85 42.5v-79.1l85-38.8v75.4zm0-112l-102 41.4-102-41.4v-.6l102-38.2 102 38.2v.6zm240 112l-85 42.5v-79.1l85-38.8v75.4zm0-112l-102 41.4-102-41.4v-.6l102-38.2 102 38.2v.6z\"]\n};\nvar faCut = {\n  prefix: 'fas',\n  iconName: 'cut',\n  icon: [448, 512, [], \"f0c4\", \"M278.06 256L444.48 89.57c4.69-4.69 4.69-12.29 0-16.97-32.8-32.8-85.99-32.8-118.79 0L210.18 188.12l-24.86-24.86c4.31-10.92 6.68-22.81 6.68-35.26 0-53.02-42.98-96-96-96S0 74.98 0 128s42.98 96 96 96c4.54 0 8.99-.32 13.36-.93L142.29 256l-32.93 32.93c-4.37-.61-8.83-.93-13.36-.93-53.02 0-96 42.98-96 96s42.98 96 96 96 96-42.98 96-96c0-12.45-2.37-24.34-6.68-35.26l24.86-24.86L325.69 439.4c32.8 32.8 85.99 32.8 118.79 0 4.69-4.68 4.69-12.28 0-16.97L278.06 256zM96 160c-17.64 0-32-14.36-32-32s14.36-32 32-32 32 14.36 32 32-14.36 32-32 32zm0 256c-17.64 0-32-14.36-32-32s14.36-32 32-32 32 14.36 32 32-14.36 32-32 32z\"]\n};\nvar faDatabase = {\n  prefix: 'fas',\n  iconName: 'database',\n  icon: [448, 512, [], \"f1c0\", \"M448 73.143v45.714C448 159.143 347.667 192 224 192S0 159.143 0 118.857V73.143C0 32.857 100.333 0 224 0s224 32.857 224 73.143zM448 176v102.857C448 319.143 347.667 352 224 352S0 319.143 0 278.857V176c48.125 33.143 136.208 48.572 224 48.572S399.874 209.143 448 176zm0 160v102.857C448 479.143 347.667 512 224 512S0 479.143 0 438.857V336c48.125 33.143 136.208 48.572 224 48.572S399.874 369.143 448 336z\"]\n};\nvar faDeaf = {\n  prefix: 'fas',\n  iconName: 'deaf',\n  icon: [512, 512, [], \"f2a4\", \"M216 260c0 15.464-12.536 28-28 28s-28-12.536-28-28c0-44.112 35.888-80 80-80s80 35.888 80 80c0 15.464-12.536 28-28 28s-28-12.536-28-28c0-13.234-10.767-24-24-24s-24 10.766-24 24zm24-176c-97.047 0-176 78.953-176 176 0 15.464 12.536 28 28 28s28-12.536 28-28c0-66.168 53.832-120 120-120s120 53.832 120 120c0 75.164-71.009 70.311-71.997 143.622L288 404c0 28.673-23.327 52-52 52-15.464 0-28 12.536-28 28s12.536 28 28 28c59.475 0 107.876-48.328 108-107.774.595-34.428 72-48.24 72-144.226 0-97.047-78.953-176-176-176zm268.485-52.201L480.2 3.515c-4.687-4.686-12.284-4.686-16.971 0L376.2 90.544c-4.686 4.686-4.686 12.284 0 16.971l28.285 28.285c4.686 4.686 12.284 4.686 16.97 0l87.03-87.029c4.687-4.688 4.687-12.286 0-16.972zM168.97 314.745c-4.686-4.686-12.284-4.686-16.97 0L3.515 463.23c-4.686 4.686-4.686 12.284 0 16.971L31.8 508.485c4.687 4.686 12.284 4.686 16.971 0L197.256 360c4.686-4.686 4.686-12.284 0-16.971l-28.286-28.284z\"]\n};\nvar faDemocrat = {\n  prefix: 'fas',\n  iconName: 'democrat',\n  icon: [640, 512, [], \"f747\", \"M637.3 256.9l-19.6-29.4c-28.2-42.3-75.3-67.5-126.1-67.5H256l-81.2-81.2c20.1-20.1 22.6-51.1 7.5-73.9-3.4-5.2-10.8-5.9-15.2-1.5l-41.8 41.8L82.4 2.4c-3.6-3.6-9.6-3-12.4 1.2-12.3 18.6-10.3 44 6.1 60.4 3.3 3.3 7.3 5.3 11.3 7.5-2.2 1.7-4.7 3.1-6.4 5.4L6.4 176.2c-7.3 9.7-8.4 22.7-3 33.5l14.3 28.6c5.4 10.8 16.5 17.7 28.6 17.7h31c8.5 0 16.6-3.4 22.6-9.4L138 212l54 108h352v-77.8c16.2 12.2 18.3 17.6 40.1 50.3 4.9 7.4 14.8 9.3 22.2 4.4l26.6-17.7c7.3-5 9.3-14.9 4.4-22.3zm-341.1-13.6l-16.5 16.1 3.9 22.7c.7 4.1-3.6 7.2-7.2 5.3L256 276.7l-20.4 10.7c-3.6 1.9-7.9-1.2-7.2-5.3l3.9-22.7-16.5-16.1c-3-2.9-1.3-7.9 2.8-8.5l22.8-3.3 10.2-20.7c1.8-3.7 7.1-3.7 9 0l10.2 20.7 22.8 3.3c4 .6 5.6 5.6 2.6 8.5zm112 0l-16.5 16.1 3.9 22.7c.7 4.1-3.6 7.2-7.2 5.3L368 276.7l-20.4 10.7c-3.6 1.9-7.9-1.2-7.2-5.3l3.9-22.7-16.5-16.1c-3-2.9-1.3-7.9 2.8-8.5l22.8-3.3 10.2-20.7c1.8-3.7 7.1-3.7 9 0l10.2 20.7 22.8 3.3c4 .6 5.6 5.6 2.6 8.5zm112 0l-16.5 16.1 3.9 22.7c.7 4.1-3.6 7.2-7.2 5.3L480 276.7l-20.4 10.7c-3.6 1.9-7.9-1.2-7.2-5.3l3.9-22.7-16.5-16.1c-3-2.9-1.3-7.9 2.8-8.5l22.8-3.3 10.2-20.7c1.8-3.7 7.1-3.7 9 0l10.2 20.7 22.8 3.3c4 .6 5.6 5.6 2.6 8.5zM192 496c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-80h160v80c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V352H192v144z\"]\n};\nvar faDesktop = {\n  prefix: 'fas',\n  iconName: 'desktop',\n  icon: [576, 512, [], \"f108\", \"M528 0H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h192l-16 48h-72c-13.3 0-24 10.7-24 24s10.7 24 24 24h272c13.3 0 24-10.7 24-24s-10.7-24-24-24h-72l-16-48h192c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm-16 352H64V64h448v288z\"]\n};\nvar faDharmachakra = {\n  prefix: 'fas',\n  iconName: 'dharmachakra',\n  icon: [512, 512, [], \"f655\", \"M495 225.06l-17.22 1.08c-5.27-39.49-20.79-75.64-43.86-105.84l12.95-11.43c6.92-6.11 7.25-16.79.73-23.31L426.44 64.4c-6.53-6.53-17.21-6.19-23.31.73L391.7 78.07c-30.2-23.06-66.35-38.58-105.83-43.86L286.94 17c.58-9.21-6.74-17-15.97-17h-29.94c-9.23 0-16.54 7.79-15.97 17l1.08 17.22c-39.49 5.27-75.64 20.79-105.83 43.86l-11.43-12.95c-6.11-6.92-16.79-7.25-23.31-.73L64.4 85.56c-6.53 6.53-6.19 17.21.73 23.31l12.95 11.43c-23.06 30.2-38.58 66.35-43.86 105.84L17 225.06c-9.21-.58-17 6.74-17 15.97v29.94c0 9.23 7.79 16.54 17 15.97l17.22-1.08c5.27 39.49 20.79 75.64 43.86 105.83l-12.95 11.43c-6.92 6.11-7.25 16.79-.73 23.31l21.17 21.17c6.53 6.53 17.21 6.19 23.31-.73l11.43-12.95c30.2 23.06 66.35 38.58 105.84 43.86L225.06 495c-.58 9.21 6.74 17 15.97 17h29.94c9.23 0 16.54-7.79 15.97-17l-1.08-17.22c39.49-5.27 75.64-20.79 105.84-43.86l11.43 12.95c6.11 6.92 16.79 7.25 23.31.73l21.17-21.17c6.53-6.53 6.19-17.21-.73-23.31l-12.95-11.43c23.06-30.2 38.58-66.35 43.86-105.83l17.22 1.08c9.21.58 17-6.74 17-15.97v-29.94c-.01-9.23-7.8-16.54-17.01-15.97zM281.84 98.61c24.81 4.07 47.63 13.66 67.23 27.78l-42.62 48.29c-8.73-5.44-18.32-9.54-28.62-11.95l4.01-64.12zm-51.68 0l4.01 64.12c-10.29 2.41-19.89 6.52-28.62 11.95l-42.62-48.29c19.6-14.12 42.42-23.71 67.23-27.78zm-103.77 64.33l48.3 42.61c-5.44 8.73-9.54 18.33-11.96 28.62l-64.12-4.01c4.07-24.81 13.66-47.62 27.78-67.22zm-27.78 118.9l64.12-4.01c2.41 10.29 6.52 19.89 11.95 28.62l-48.29 42.62c-14.12-19.6-23.71-42.42-27.78-67.23zm131.55 131.55c-24.81-4.07-47.63-13.66-67.23-27.78l42.61-48.3c8.73 5.44 18.33 9.54 28.62 11.96l-4 64.12zM256 288c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm25.84 125.39l-4.01-64.12c10.29-2.41 19.89-6.52 28.62-11.96l42.61 48.3c-19.6 14.12-42.41 23.71-67.22 27.78zm103.77-64.33l-48.29-42.62c5.44-8.73 9.54-18.32 11.95-28.62l64.12 4.01c-4.07 24.82-13.66 47.64-27.78 67.23zm-36.34-114.89c-2.41-10.29-6.52-19.89-11.96-28.62l48.3-42.61c14.12 19.6 23.71 42.42 27.78 67.23l-64.12 4z\"]\n};\nvar faDiagnoses = {\n  prefix: 'fas',\n  iconName: 'diagnoses',\n  icon: [640, 512, [], \"f470\", \"M496 256c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zm-176-80c48.5 0 88-39.5 88-88S368.5 0 320 0s-88 39.5-88 88 39.5 88 88 88zM59.8 364c10.2 15.3 29.3 17.8 42.9 9.8 16.2-9.6 56.2-31.7 105.3-48.6V416h224v-90.7c49.1 16.8 89.1 39 105.3 48.6 13.6 8 32.7 5.3 42.9-9.8l17.8-26.7c8.8-13.2 7.6-34.6-10-45.1-11.9-7.1-29.7-17-51.1-27.4-28.1 46.1-99.4 17.8-87.7-35.1C409.3 217.2 365.1 208 320 208c-57 0-112.9 14.5-160 32.2-.2 40.2-47.6 63.3-79.2 36-11.2 6-21.3 11.6-28.7 16-17.6 10.5-18.8 31.8-10 45.1L59.8 364zM368 344c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm-96-96c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm-160 8c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zm512 192H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16z\"]\n};\nvar faDice = {\n  prefix: 'fas',\n  iconName: 'dice',\n  icon: [640, 512, [], \"f522\", \"M592 192H473.26c12.69 29.59 7.12 65.2-17 89.32L320 417.58V464c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48V240c0-26.51-21.49-48-48-48zM480 376c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm-46.37-186.7L258.7 14.37c-19.16-19.16-50.23-19.16-69.39 0L14.37 189.3c-19.16 19.16-19.16 50.23 0 69.39L189.3 433.63c19.16 19.16 50.23 19.16 69.39 0L433.63 258.7c19.16-19.17 19.16-50.24 0-69.4zM96 248c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm128 128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm0-128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm0-128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm128 128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z\"]\n};\nvar faDiceD20 = {\n  prefix: 'fas',\n  iconName: 'dice-d20',\n  icon: [480, 512, [], \"f6cf\", \"M106.75 215.06L1.2 370.95c-3.08 5 .1 11.5 5.93 12.14l208.26 22.07-108.64-190.1zM7.41 315.43L82.7 193.08 6.06 147.1c-2.67-1.6-6.06.32-6.06 3.43v162.81c0 4.03 5.29 5.53 7.41 2.09zM18.25 423.6l194.4 87.66c5.3 2.45 11.35-1.43 11.35-7.26v-65.67l-203.55-22.3c-4.45-.5-6.23 5.59-2.2 7.57zm81.22-257.78L179.4 22.88c4.34-7.06-3.59-15.25-10.78-11.14L17.81 110.35c-2.47 1.62-2.39 5.26.13 6.78l81.53 48.69zM240 176h109.21L253.63 7.62C250.5 2.54 245.25 0 240 0s-10.5 2.54-13.63 7.62L130.79 176H240zm233.94-28.9l-76.64 45.99 75.29 122.35c2.11 3.44 7.41 1.94 7.41-2.1V150.53c0-3.11-3.39-5.03-6.06-3.43zm-93.41 18.72l81.53-48.7c2.53-1.52 2.6-5.16.13-6.78l-150.81-98.6c-7.19-4.11-15.12 4.08-10.78 11.14l79.93 142.94zm79.02 250.21L256 438.32v65.67c0 5.84 6.05 9.71 11.35 7.26l194.4-87.66c4.03-1.97 2.25-8.06-2.2-7.56zm-86.3-200.97l-108.63 190.1 208.26-22.07c5.83-.65 9.01-7.14 5.93-12.14L373.25 215.06zM240 208H139.57L240 383.75 340.43 208H240z\"]\n};\nvar faDiceD6 = {\n  prefix: 'fas',\n  iconName: 'dice-d6',\n  icon: [448, 512, [], \"f6d1\", \"M422.19 109.95L256.21 9.07c-19.91-12.1-44.52-12.1-64.43 0L25.81 109.95c-5.32 3.23-5.29 11.27.06 14.46L224 242.55l198.14-118.14c5.35-3.19 5.38-11.22.05-14.46zm13.84 44.63L240 271.46v223.82c0 12.88 13.39 20.91 24.05 14.43l152.16-92.48c19.68-11.96 31.79-33.94 31.79-57.7v-197.7c0-6.41-6.64-10.43-11.97-7.25zM0 161.83v197.7c0 23.77 12.11 45.74 31.79 57.7l152.16 92.47c10.67 6.48 24.05-1.54 24.05-14.43V271.46L11.97 154.58C6.64 151.4 0 155.42 0 161.83z\"]\n};\nvar faDiceFive = {\n  prefix: 'fas',\n  iconName: 'dice-five',\n  icon: [448, 512, [], \"f523\", \"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm96 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm96 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faDiceFour = {\n  prefix: 'fas',\n  iconName: 'dice-four',\n  icon: [448, 512, [], \"f524\", \"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm192 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faDiceOne = {\n  prefix: 'fas',\n  iconName: 'dice-one',\n  icon: [448, 512, [], \"f525\", \"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM224 288c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faDiceSix = {\n  prefix: 'fas',\n  iconName: 'dice-six',\n  icon: [448, 512, [], \"f526\", \"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm192 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faDiceThree = {\n  prefix: 'fas',\n  iconName: 'dice-three',\n  icon: [448, 512, [], \"f527\", \"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm96 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm96 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faDiceTwo = {\n  prefix: 'fas',\n  iconName: 'dice-two',\n  icon: [448, 512, [], \"f528\", \"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm192 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faDigitalTachograph = {\n  prefix: 'fas',\n  iconName: 'digital-tachograph',\n  icon: [640, 512, [], \"f566\", \"M608 96H32c-17.67 0-32 14.33-32 32v256c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V128c0-17.67-14.33-32-32-32zM304 352c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-8c0-4.42 3.58-8 8-8h224c4.42 0 8 3.58 8 8v8zM72 288v-16c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H80c-4.42 0-8-3.58-8-8zm64 0v-16c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8zm64 0v-16c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8zm64 0v-16c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8zm40-64c0 8.84-7.16 16-16 16H80c-8.84 0-16-7.16-16-16v-48c0-8.84 7.16-16 16-16h208c8.84 0 16 7.16 16 16v48zm272 128c0 4.42-3.58 8-8 8H344c-4.42 0-8-3.58-8-8v-8c0-4.42 3.58-8 8-8h224c4.42 0 8 3.58 8 8v8z\"]\n};\nvar faDirections = {\n  prefix: 'fas',\n  iconName: 'directions',\n  icon: [512, 512, [], \"f5eb\", \"M502.61 233.32L278.68 9.39c-12.52-12.52-32.83-12.52-45.36 0L9.39 233.32c-12.52 12.53-12.52 32.83 0 45.36l223.93 223.93c12.52 12.53 32.83 12.53 45.36 0l223.93-223.93c12.52-12.53 12.52-32.83 0-45.36zm-100.98 12.56l-84.21 77.73c-5.12 4.73-13.43 1.1-13.43-5.88V264h-96v64c0 4.42-3.58 8-8 8h-32c-4.42 0-8-3.58-8-8v-80c0-17.67 14.33-32 32-32h112v-53.73c0-6.97 8.3-10.61 13.43-5.88l84.21 77.73c3.43 3.17 3.43 8.59 0 11.76z\"]\n};\nvar faDisease = {\n  prefix: 'fas',\n  iconName: 'disease',\n  icon: [512, 512, [], \"f7fa\", \"M472.29 195.9l-67.06-23c-19.28-6.6-33.54-20.92-38.14-38.31l-16-60.45c-11.58-43.77-76.57-57.13-110-22.62L195 99.24c-13.26 13.71-33.54 20.93-54.2 19.31l-71.9-5.62c-52-4.07-86.93 44.89-59 82.84l38.54 52.42c11.08 15.07 12.82 33.86 4.64 50.24l-28.43 57C4 396.67 47.46 440.29 98.11 429.23l70-15.28c20.11-4.39 41.45 0 57.07 11.73l54.32 40.83c39.32 29.56 101 7.57 104.45-37.22l4.7-61.86c1.35-17.8 12.8-33.87 30.63-43l62-31.74c44.84-22.96 39.55-80.17-8.99-96.79zM160 256a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm128 96a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm16-128a16 16 0 1 1 16-16 16 16 0 0 1-16 16z\"]\n};\nvar faDivide = {\n  prefix: 'fas',\n  iconName: 'divide',\n  icon: [448, 512, [], \"f529\", \"M224 352c-35.35 0-64 28.65-64 64s28.65 64 64 64 64-28.65 64-64-28.65-64-64-64zm0-192c35.35 0 64-28.65 64-64s-28.65-64-64-64-64 28.65-64 64 28.65 64 64 64zm192 48H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z\"]\n};\nvar faDizzy = {\n  prefix: 'fas',\n  iconName: 'dizzy',\n  icon: [496, 512, [], \"f567\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-96 206.6l-28.7 28.7c-14.8 14.8-37.8-7.5-22.6-22.6l28.7-28.7-28.7-28.7c-15-15 7.7-37.6 22.6-22.6l28.7 28.7 28.7-28.7c15-15 37.6 7.7 22.6 22.6L174.6 192l28.7 28.7c15.2 15.2-7.9 37.4-22.6 22.6L152 214.6zM248 416c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64zm147.3-195.3c15.2 15.2-7.9 37.4-22.6 22.6L344 214.6l-28.7 28.7c-14.8 14.8-37.8-7.5-22.6-22.6l28.7-28.7-28.7-28.7c-15-15 7.7-37.6 22.6-22.6l28.7 28.7 28.7-28.7c15-15 37.6 7.7 22.6 22.6L366.6 192l28.7 28.7z\"]\n};\nvar faDna = {\n  prefix: 'fas',\n  iconName: 'dna',\n  icon: [448, 512, [], \"f471\", \"M.1 494.1c-1.1 9.5 6.3 17.8 15.9 17.8l32.3.1c8.1 0 14.9-5.9 16-13.9.7-4.9 1.8-11.1 3.4-18.1H380c1.6 6.9 2.9 13.2 3.5 18.1 1.1 8 7.9 14 16 13.9l32.3-.1c9.6 0 17.1-8.3 15.9-17.8-4.6-37.9-25.6-129-118.9-207.7-17.6 12.4-37.1 24.2-58.5 35.4 6.2 4.6 11.4 9.4 17 14.2H159.7c21.3-18.1 47-35.6 78.7-51.4C410.5 199.1 442.1 65.8 447.9 17.9 449 8.4 441.6.1 432 .1L399.6 0c-8.1 0-14.9 5.9-16 13.9-.7 4.9-1.8 11.1-3.4 18.1H67.8c-1.6-7-2.7-13.1-3.4-18.1-1.1-8-7.9-14-16-13.9L16.1.1C6.5.1-1 8.4.1 17.9 5.3 60.8 31.4 171.8 160 256 31.5 340.2 5.3 451.2.1 494.1zM224 219.6c-25.1-13.7-46.4-28.4-64.3-43.6h128.5c-17.8 15.2-39.1 30-64.2 43.6zM355.1 96c-5.8 10.4-12.8 21.1-21 32H114c-8.3-10.9-15.3-21.6-21-32h262.1zM92.9 416c5.8-10.4 12.8-21.1 21-32h219.4c8.3 10.9 15.4 21.6 21.2 32H92.9z\"]\n};\nvar faDog = {\n  prefix: 'fas',\n  iconName: 'dog',\n  icon: [576, 512, [], \"f6d3\", \"M298.06,224,448,277.55V496a16,16,0,0,1-16,16H368a16,16,0,0,1-16-16V384H192V496a16,16,0,0,1-16,16H112a16,16,0,0,1-16-16V282.09C58.84,268.84,32,233.66,32,192a32,32,0,0,1,64,0,32.06,32.06,0,0,0,32,32ZM544,112v32a64,64,0,0,1-64,64H448v35.58L320,197.87V48c0-14.25,17.22-21.39,27.31-11.31L374.59,64h53.63c10.91,0,23.75,7.92,28.62,17.69L464,96h64A16,16,0,0,1,544,112Zm-112,0a16,16,0,1,0-16,16A16,16,0,0,0,432,112Z\"]\n};\nvar faDollarSign = {\n  prefix: 'fas',\n  iconName: 'dollar-sign',\n  icon: [288, 512, [], \"f155\", \"M209.2 233.4l-108-31.6C88.7 198.2 80 186.5 80 173.5c0-16.3 13.2-29.5 29.5-29.5h66.3c12.2 0 24.2 3.7 34.2 10.5 6.1 4.1 14.3 3.1 19.5-2l34.8-34c7.1-6.9 6.1-18.4-1.8-24.5C238 74.8 207.4 64.1 176 64V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48h-2.5C45.8 64-5.4 118.7.5 183.6c4.2 46.1 39.4 83.6 83.8 96.6l102.5 30c12.5 3.7 21.2 15.3 21.2 28.3 0 16.3-13.2 29.5-29.5 29.5h-66.3C100 368 88 364.3 78 357.5c-6.1-4.1-14.3-3.1-19.5 2l-34.8 34c-7.1 6.9-6.1 18.4 1.8 24.5 24.5 19.2 55.1 29.9 86.5 30v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-48.2c46.6-.9 90.3-28.6 105.7-72.7 21.5-61.6-14.6-124.8-72.5-141.7z\"]\n};\nvar faDolly = {\n  prefix: 'fas',\n  iconName: 'dolly',\n  icon: [576, 512, [], \"f472\", \"M294.2 277.7c18 5 34.7 13.4 49.5 24.7l161.5-53.8c8.4-2.8 12.9-11.9 10.1-20.2L454.9 47.2c-2.8-8.4-11.9-12.9-20.2-10.1l-61.1 20.4 33.1 99.4L346 177l-33.1-99.4-61.6 20.5c-8.4 2.8-12.9 11.9-10.1 20.2l53 159.4zm281 48.7L565 296c-2.8-8.4-11.9-12.9-20.2-10.1l-213.5 71.2c-17.2-22-43.6-36.4-73.5-37L158.4 21.9C154 8.8 141.8 0 128 0H16C7.2 0 0 7.2 0 16v32c0 8.8 7.2 16 16 16h88.9l92.2 276.7c-26.1 20.4-41.7 53.6-36 90.5 6.1 39.4 37.9 72.3 77.3 79.2 60.2 10.7 112.3-34.8 113.4-92.6l213.3-71.2c8.3-2.8 12.9-11.8 10.1-20.2zM256 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48z\"]\n};\nvar faDollyFlatbed = {\n  prefix: 'fas',\n  iconName: 'dolly-flatbed',\n  icon: [640, 512, [], \"f474\", \"M208 320h384c8.8 0 16-7.2 16-16V48c0-8.8-7.2-16-16-16H448v128l-48-32-48 32V32H208c-8.8 0-16 7.2-16 16v256c0 8.8 7.2 16 16 16zm416 64H128V16c0-8.8-7.2-16-16-16H16C7.2 0 0 7.2 0 16v32c0 8.8 7.2 16 16 16h48v368c0 8.8 7.2 16 16 16h82.9c-1.8 5-2.9 10.4-2.9 16 0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1.2-11-2.9-16H451c-1.8 5-2.9 10.4-2.9 16 0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1.2-11-2.9-16H624c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16z\"]\n};\nvar faDonate = {\n  prefix: 'fas',\n  iconName: 'donate',\n  icon: [512, 512, [], \"f4b9\", \"M256 416c114.9 0 208-93.1 208-208S370.9 0 256 0 48 93.1 48 208s93.1 208 208 208zM233.8 97.4V80.6c0-9.2 7.4-16.6 16.6-16.6h11.1c9.2 0 16.6 7.4 16.6 16.6v17c15.5.8 30.5 6.1 43 15.4 5.6 4.1 6.2 12.3 1.2 17.1L306 145.6c-3.8 3.7-9.5 3.8-14 1-5.4-3.4-11.4-5.1-17.8-5.1h-38.9c-9 0-16.3 8.2-16.3 18.3 0 8.2 5 15.5 12.1 17.6l62.3 18.7c25.7 7.7 43.7 32.4 43.7 60.1 0 34-26.4 61.5-59.1 62.4v16.8c0 9.2-7.4 16.6-16.6 16.6h-11.1c-9.2 0-16.6-7.4-16.6-16.6v-17c-15.5-.8-30.5-6.1-43-15.4-5.6-4.1-6.2-12.3-1.2-17.1l16.3-15.5c3.8-3.7 9.5-3.8 14-1 5.4 3.4 11.4 5.1 17.8 5.1h38.9c9 0 16.3-8.2 16.3-18.3 0-8.2-5-15.5-12.1-17.6l-62.3-18.7c-25.7-7.7-43.7-32.4-43.7-60.1.1-34 26.4-61.5 59.1-62.4zM480 352h-32.5c-19.6 26-44.6 47.7-73 64h63.8c5.3 0 9.6 3.6 9.6 8v16c0 4.4-4.3 8-9.6 8H73.6c-5.3 0-9.6-3.6-9.6-8v-16c0-4.4 4.3-8 9.6-8h63.8c-28.4-16.3-53.3-38-73-64H32c-17.7 0-32 14.3-32 32v96c0 17.7 14.3 32 32 32h448c17.7 0 32-14.3 32-32v-96c0-17.7-14.3-32-32-32z\"]\n};\nvar faDoorClosed = {\n  prefix: 'fas',\n  iconName: 'door-closed',\n  icon: [640, 512, [], \"f52a\", \"M624 448H512V50.8C512 22.78 490.47 0 464 0H175.99c-26.47 0-48 22.78-48 50.8V448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM415.99 288c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32c.01 17.67-14.32 32-32 32z\"]\n};\nvar faDoorOpen = {\n  prefix: 'fas',\n  iconName: 'door-open',\n  icon: [640, 512, [], \"f52b\", \"M624 448h-80V113.45C544 86.19 522.47 64 496 64H384v64h96v384h144c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM312.24 1.01l-192 49.74C105.99 54.44 96 67.7 96 82.92V448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h336V33.18c0-21.58-19.56-37.41-39.76-32.17zM264 288c-13.25 0-24-14.33-24-32s10.75-32 24-32 24 14.33 24 32-10.75 32-24 32z\"]\n};\nvar faDotCircle = {\n  prefix: 'fas',\n  iconName: 'dot-circle',\n  icon: [512, 512, [], \"f192\", \"M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm80 248c0 44.112-35.888 80-80 80s-80-35.888-80-80 35.888-80 80-80 80 35.888 80 80z\"]\n};\nvar faDove = {\n  prefix: 'fas',\n  iconName: 'dove',\n  icon: [512, 512, [], \"f4ba\", \"M288 167.2v-28.1c-28.2-36.3-47.1-79.3-54.1-125.2-2.1-13.5-19-18.8-27.8-8.3-21.1 24.9-37.7 54.1-48.9 86.5 34.2 38.3 80 64.6 130.8 75.1zM400 64c-44.2 0-80 35.9-80 80.1v59.4C215.6 197.3 127 133 87 41.8c-5.5-12.5-23.2-13.2-29-.9C41.4 76 32 115.2 32 156.6c0 70.8 34.1 136.9 85.1 185.9 13.2 12.7 26.1 23.2 38.9 32.8l-143.9 36C1.4 414-3.4 426.4 2.6 435.7 20 462.6 63 508.2 155.8 512c8 .3 16-2.6 22.1-7.9l65.2-56.1H320c88.4 0 160-71.5 160-159.9V128l32-64H400zm0 96.1c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z\"]\n};\nvar faDownload = {\n  prefix: 'fas',\n  iconName: 'download',\n  icon: [512, 512, [], \"f019\", \"M216 0h80c13.3 0 24 10.7 24 24v168h87.7c17.8 0 26.7 21.5 14.1 34.1L269.7 378.3c-7.5 7.5-19.8 7.5-27.3 0L90.1 226.1c-12.6-12.6-3.7-34.1 14.1-34.1H192V24c0-13.3 10.7-24 24-24zm296 376v112c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V376c0-13.3 10.7-24 24-24h146.7l49 49c20.1 20.1 52.5 20.1 72.6 0l49-49H488c13.3 0 24 10.7 24 24zm-124 88c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20zm64 0c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20z\"]\n};\nvar faDraftingCompass = {\n  prefix: 'fas',\n  iconName: 'drafting-compass',\n  icon: [512, 512, [], \"f568\", \"M457.01 344.42c-25.05 20.33-52.63 37.18-82.54 49.05l54.38 94.19 53.95 23.04c9.81 4.19 20.89-2.21 22.17-12.8l7.02-58.25-54.98-95.23zm42.49-94.56c4.86-7.67 1.89-17.99-6.05-22.39l-28.07-15.57c-7.48-4.15-16.61-1.46-21.26 5.72C403.01 281.15 332.25 320 256 320c-23.93 0-47.23-4.25-69.41-11.53l67.36-116.68c.7.02 1.34.21 2.04.21s1.35-.19 2.04-.21l51.09 88.5c31.23-8.96 59.56-25.75 82.61-48.92l-51.79-89.71C347.39 128.03 352 112.63 352 96c0-53.02-42.98-96-96-96s-96 42.98-96 96c0 16.63 4.61 32.03 12.05 45.66l-68.3 118.31c-12.55-11.61-23.96-24.59-33.68-39-4.79-7.1-13.97-9.62-21.38-5.33l-27.75 16.07c-7.85 4.54-10.63 14.9-5.64 22.47 15.57 23.64 34.69 44.21 55.98 62.02L0 439.66l7.02 58.25c1.28 10.59 12.36 16.99 22.17 12.8l53.95-23.04 70.8-122.63C186.13 377.28 220.62 384 256 384c99.05 0 190.88-51.01 243.5-134.14zM256 64c17.67 0 32 14.33 32 32s-14.33 32-32 32-32-14.33-32-32 14.33-32 32-32z\"]\n};\nvar faDragon = {\n  prefix: 'fas',\n  iconName: 'dragon',\n  icon: [640, 512, [], \"f6d5\", \"M18.32 255.78L192 223.96l-91.28 68.69c-10.08 10.08-2.94 27.31 11.31 27.31h222.7c-9.44-26.4-14.73-54.47-14.73-83.38v-42.27l-119.73-87.6c-23.82-15.88-55.29-14.01-77.06 4.59L5.81 227.64c-12.38 10.33-3.45 30.42 12.51 28.14zm556.87 34.1l-100.66-50.31A47.992 47.992 0 0 1 448 196.65v-36.69h64l28.09 22.63c6 6 14.14 9.37 22.63 9.37h30.97a32 32 0 0 0 28.62-17.69l14.31-28.62a32.005 32.005 0 0 0-3.02-33.51l-74.53-99.38C553.02 4.7 543.54 0 533.47 0H296.02c-7.13 0-10.7 8.57-5.66 13.61L352 63.96 292.42 88.8c-5.9 2.95-5.9 11.36 0 14.31L352 127.96v108.62c0 72.08 36.03 139.39 96 179.38-195.59 6.81-344.56 41.01-434.1 60.91C5.78 478.67 0 485.88 0 494.2 0 504 7.95 512 17.76 512h499.08c63.29.01 119.61-47.56 122.99-110.76 2.52-47.28-22.73-90.4-64.64-111.36zM489.18 66.25l45.65 11.41c-2.75 10.91-12.47 18.89-24.13 18.26-12.96-.71-25.85-12.53-21.52-29.67z\"]\n};\nvar faDrawPolygon = {\n  prefix: 'fas',\n  iconName: 'draw-polygon',\n  icon: [448, 512, [], \"f5ee\", \"M384 352c-.35 0-.67.1-1.02.1l-39.2-65.32c5.07-9.17 8.22-19.56 8.22-30.78s-3.14-21.61-8.22-30.78l39.2-65.32c.35.01.67.1 1.02.1 35.35 0 64-28.65 64-64s-28.65-64-64-64c-23.63 0-44.04 12.95-55.12 32H119.12C108.04 44.95 87.63 32 64 32 28.65 32 0 60.65 0 96c0 23.63 12.95 44.04 32 55.12v209.75C12.95 371.96 0 392.37 0 416c0 35.35 28.65 64 64 64 23.63 0 44.04-12.95 55.12-32h209.75c11.09 19.05 31.49 32 55.12 32 35.35 0 64-28.65 64-64 .01-35.35-28.64-64-63.99-64zm-288 8.88V151.12A63.825 63.825 0 0 0 119.12 128h208.36l-38.46 64.1c-.35-.01-.67-.1-1.02-.1-35.35 0-64 28.65-64 64s28.65 64 64 64c.35 0 .67-.1 1.02-.1l38.46 64.1H119.12A63.748 63.748 0 0 0 96 360.88zM272 256c0-8.82 7.18-16 16-16s16 7.18 16 16-7.18 16-16 16-16-7.18-16-16zM400 96c0 8.82-7.18 16-16 16s-16-7.18-16-16 7.18-16 16-16 16 7.18 16 16zM64 80c8.82 0 16 7.18 16 16s-7.18 16-16 16-16-7.18-16-16 7.18-16 16-16zM48 416c0-8.82 7.18-16 16-16s16 7.18 16 16-7.18 16-16 16-16-7.18-16-16zm336 16c-8.82 0-16-7.18-16-16s7.18-16 16-16 16 7.18 16 16-7.18 16-16 16z\"]\n};\nvar faDrum = {\n  prefix: 'fas',\n  iconName: 'drum',\n  icon: [512, 512, [], \"f569\", \"M431.34 122.05l73.53-47.42a16 16 0 0 0 4.44-22.19l-8.87-13.31a16 16 0 0 0-22.19-4.44l-110.06 71C318.43 96.91 271.22 96 256 96 219.55 96 0 100.55 0 208.15v160.23c0 30.27 27.5 57.68 72 77.86v-101.9a24 24 0 1 1 48 0v118.93c33.05 9.11 71.07 15.06 112 16.73V376.39a24 24 0 1 1 48 0V480c40.93-1.67 78.95-7.62 112-16.73V344.34a24 24 0 1 1 48 0v101.9c44.5-20.18 72-47.59 72-77.86V208.15c0-43.32-35.76-69.76-80.66-86.1zM256 272.24c-114.88 0-208-28.69-208-64.09s93.12-64.08 208-64.08c17.15 0 33.73.71 49.68 1.91l-72.81 47a16 16 0 0 0-4.43 22.19l8.87 13.31a16 16 0 0 0 22.19 4.44l118.64-76.52C430.09 168 464 186.84 464 208.15c0 35.4-93.13 64.09-208 64.09z\"]\n};\nvar faDrumSteelpan = {\n  prefix: 'fas',\n  iconName: 'drum-steelpan',\n  icon: [576, 512, [], \"f56a\", \"M288 32C128.94 32 0 89.31 0 160v192c0 70.69 128.94 128 288 128s288-57.31 288-128V160c0-70.69-128.94-128-288-128zm-82.99 158.36c-4.45 16.61-14.54 30.57-28.31 40.48C100.23 217.46 48 190.78 48 160c0-30.16 50.11-56.39 124.04-70.03l25.6 44.34c9.86 17.09 12.48 36.99 7.37 56.05zM288 240c-21.08 0-41.41-1-60.89-2.7 8.06-26.13 32.15-45.3 60.89-45.3s52.83 19.17 60.89 45.3C329.41 239 309.08 240 288 240zm64-144c0 35.29-28.71 64-64 64s-64-28.71-64-64V82.96c20.4-1.88 41.8-2.96 64-2.96s43.6 1.08 64 2.96V96zm46.93 134.9c-13.81-9.91-23.94-23.9-28.4-40.54-5.11-19.06-2.49-38.96 7.38-56.04l25.65-44.42C477.72 103.5 528 129.79 528 160c0 30.83-52.4 57.54-129.07 70.9z\"]\n};\nvar faDrumstickBite = {\n  prefix: 'fas',\n  iconName: 'drumstick-bite',\n  icon: [512, 512, [], \"f6d7\", \"M462.8 49.57a169.44 169.44 0 0 0-239.5 0C187.82 85 160.13 128 160.13 192v85.83l-40.62 40.59c-9.7 9.69-24 11.07-36.78 6a60.33 60.33 0 0 0-65 98.72C33 438.39 54.24 442.7 73.85 438.21c-4.5 19.6-.18 40.83 15.1 56.1a60.35 60.35 0 0 0 98.8-65c-5.09-12.73-3.72-27 6-36.75L234.36 352h85.89a187.87 187.87 0 0 0 61.89-10c-39.64-43.89-39.83-110.23 1.05-151.07 34.38-34.36 86.76-39.46 128.74-16.8 1.3-44.96-14.81-90.28-49.13-124.56z\"]\n};\nvar faDumbbell = {\n  prefix: 'fas',\n  iconName: 'dumbbell',\n  icon: [640, 512, [], \"f44b\", \"M104 96H56c-13.3 0-24 10.7-24 24v104H8c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h24v104c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V120c0-13.3-10.7-24-24-24zm528 128h-24V120c0-13.3-10.7-24-24-24h-48c-13.3 0-24 10.7-24 24v272c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V288h24c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM456 32h-48c-13.3 0-24 10.7-24 24v168H256V56c0-13.3-10.7-24-24-24h-48c-13.3 0-24 10.7-24 24v400c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V288h128v168c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24z\"]\n};\nvar faDumpster = {\n  prefix: 'fas',\n  iconName: 'dumpster',\n  icon: [576, 512, [], \"f793\", \"M560 160c10.4 0 18-9.8 15.5-19.9l-24-96C549.7 37 543.3 32 536 32h-98.9l25.6 128H560zM272 32H171.5l-25.6 128H272V32zm132.5 0H304v128h126.1L404.5 32zM16 160h97.3l25.6-128H40c-7.3 0-13.7 5-15.5 12.1l-24 96C-2 150.2 5.6 160 16 160zm544 64h-20l4-32H32l4 32H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h28l20 160v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h320v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16l20-160h28c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16z\"]\n};\nvar faDumpsterFire = {\n  prefix: 'fas',\n  iconName: 'dumpster-fire',\n  icon: [640, 512, [], \"f794\", \"M418.7 104.1l.2-.2-14.4-72H304v128h60.8c16.2-19.3 34.2-38.2 53.9-55.8zM272 32H171.5l-25.6 128H272V32zm189.3 72.1c18.2 16.3 35.5 33.7 51.1 51.5 5.7-5.6 11.4-11.1 17.3-16.3l21.3-19 21.3 19c1.1.9 2.1 2.1 3.1 3.1-.1-.8.2-1.5 0-2.3l-24-96C549.7 37 543.3 32 536 32h-98.9l12.3 61.5 11.9 10.6zM16 160h97.3l25.6-128H40c-7.3 0-13.7 5-15.5 12.1l-24 96C-2 150.2 5.6 160 16 160zm324.6 32H32l4 32H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h28l20 160v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h208.8c-30.2-33.7-48.8-77.9-48.8-126.4 0-35.9 19.9-82.9 52.6-129.6zm210.5-28.8c-14.9 13.3-28.3 27.2-40.2 41.2-19.5-25.8-43.6-52-71-76.4-70.2 62.7-120 144.3-120 193.6 0 87.5 71.6 158.4 160 158.4s160-70.9 160-158.4c.1-36.6-37-112.2-88.8-158.4zm-18.6 229.4c-14.7 10.7-32.9 17-52.5 17-49 0-88.9-33.5-88.9-88 0-27.1 16.5-51 49.4-91.9 4.7 5.6 67.1 88.1 67.1 88.1l39.8-47c2.8 4.8 5.4 9.5 7.7 14 18.6 36.7 10.8 83.6-22.6 107.8z\"]\n};\nvar faDungeon = {\n  prefix: 'fas',\n  iconName: 'dungeon',\n  icon: [512, 512, [], \"f6d9\", \"M128.73 195.32l-82.81-51.76c-8.04-5.02-18.99-2.17-22.93 6.45A254.19 254.19 0 0 0 .54 239.28C-.05 248.37 7.59 256 16.69 256h97.13c7.96 0 14.08-6.25 15.01-14.16 1.09-9.33 3.24-18.33 6.24-26.94 2.56-7.34.25-15.46-6.34-19.58zM319.03 8C298.86 2.82 277.77 0 256 0s-42.86 2.82-63.03 8c-9.17 2.35-13.91 12.6-10.39 21.39l37.47 104.03A16.003 16.003 0 0 0 235.1 144h41.8c6.75 0 12.77-4.23 15.05-10.58l37.47-104.03c3.52-8.79-1.22-19.03-10.39-21.39zM112 288H16c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h96c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zm0 128H16c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h96c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zm77.31-283.67l-36.32-90.8c-3.53-8.83-14.13-12.99-22.42-8.31a257.308 257.308 0 0 0-71.61 59.89c-6.06 7.32-3.85 18.48 4.22 23.52l82.93 51.83c6.51 4.07 14.66 2.62 20.11-2.79 5.18-5.15 10.79-9.85 16.79-14.05 6.28-4.41 9.15-12.17 6.3-19.29zM398.18 256h97.13c9.1 0 16.74-7.63 16.15-16.72a254.135 254.135 0 0 0-22.45-89.27c-3.94-8.62-14.89-11.47-22.93-6.45l-82.81 51.76c-6.59 4.12-8.9 12.24-6.34 19.58 3.01 8.61 5.15 17.62 6.24 26.94.93 7.91 7.05 14.16 15.01 14.16zm54.85-162.89a257.308 257.308 0 0 0-71.61-59.89c-8.28-4.68-18.88-.52-22.42 8.31l-36.32 90.8c-2.85 7.12.02 14.88 6.3 19.28 6 4.2 11.61 8.9 16.79 14.05 5.44 5.41 13.6 6.86 20.11 2.79l82.93-51.83c8.07-5.03 10.29-16.19 4.22-23.51zM496 288h-96c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h96c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zm0 128h-96c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h96c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zM240 177.62V472c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8V177.62c-5.23-.89-10.52-1.62-16-1.62s-10.77.73-16 1.62zm-64 41.51V472c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8V189.36c-12.78 7.45-23.84 17.47-32 29.77zm128-29.77V472c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8V219.13c-8.16-12.3-19.22-22.32-32-29.77z\"]\n};\nvar faEdit = {\n  prefix: 'fas',\n  iconName: 'edit',\n  icon: [576, 512, [], \"f044\", \"M402.6 83.2l90.2 90.2c3.8 3.8 3.8 10 0 13.8L274.4 405.6l-92.8 10.3c-12.4 1.4-22.9-9.1-21.5-21.5l10.3-92.8L388.8 83.2c3.8-3.8 10-3.8 13.8 0zm162-22.9l-48.8-48.8c-15.2-15.2-39.9-15.2-55.2 0l-35.4 35.4c-3.8 3.8-3.8 10 0 13.8l90.2 90.2c3.8 3.8 10 3.8 13.8 0l35.4-35.4c15.2-15.3 15.2-40 0-55.2zM384 346.2V448H64V128h229.8c3.2 0 6.2-1.3 8.5-3.5l40-40c7.6-7.6 2.2-20.5-8.5-20.5H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V306.2c0-10.7-12.9-16-20.5-8.5l-40 40c-2.2 2.3-3.5 5.3-3.5 8.5z\"]\n};\nvar faEgg = {\n  prefix: 'fas',\n  iconName: 'egg',\n  icon: [384, 512, [], \"f7fb\", \"M192 0C86 0 0 214 0 320s86 192 192 192 192-86 192-192S298 0 192 0z\"]\n};\nvar faEject = {\n  prefix: 'fas',\n  iconName: 'eject',\n  icon: [448, 512, [], \"f052\", \"M448 384v64c0 17.673-14.327 32-32 32H32c-17.673 0-32-14.327-32-32v-64c0-17.673 14.327-32 32-32h384c17.673 0 32 14.327 32 32zM48.053 320h351.886c41.651 0 63.581-49.674 35.383-80.435L259.383 47.558c-19.014-20.743-51.751-20.744-70.767 0L12.67 239.565C-15.475 270.268 6.324 320 48.053 320z\"]\n};\nvar faEllipsisH = {\n  prefix: 'fas',\n  iconName: 'ellipsis-h',\n  icon: [512, 512, [], \"f141\", \"M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z\"]\n};\nvar faEllipsisV = {\n  prefix: 'fas',\n  iconName: 'ellipsis-v',\n  icon: [192, 512, [], \"f142\", \"M96 184c39.8 0 72 32.2 72 72s-32.2 72-72 72-72-32.2-72-72 32.2-72 72-72zM24 80c0 39.8 32.2 72 72 72s72-32.2 72-72S135.8 8 96 8 24 40.2 24 80zm0 352c0 39.8 32.2 72 72 72s72-32.2 72-72-32.2-72-72-72-72 32.2-72 72z\"]\n};\nvar faEnvelope = {\n  prefix: 'fas',\n  iconName: 'envelope',\n  icon: [512, 512, [], \"f0e0\", \"M502.3 190.8c3.9-3.1 9.7-.2 9.7 4.7V400c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V195.6c0-5 5.7-7.8 9.7-4.7 22.4 17.4 52.1 39.5 154.1 113.6 21.1 15.4 56.7 47.8 92.2 47.6 35.7.3 72-32.8 92.3-47.6 102-74.1 131.6-96.3 154-113.7zM256 320c23.2.4 56.6-29.2 73.4-41.4 132.7-96.3 142.8-104.7 173.4-128.7 5.8-4.5 9.2-11.5 9.2-18.9v-19c0-26.5-21.5-48-48-48H48C21.5 64 0 85.5 0 112v19c0 7.4 3.4 14.3 9.2 18.9 30.6 23.9 40.7 32.4 173.4 128.7 16.8 12.2 50.2 41.8 73.4 41.4z\"]\n};\nvar faEnvelopeOpen = {\n  prefix: 'fas',\n  iconName: 'envelope-open',\n  icon: [512, 512, [], \"f2b6\", \"M512 464c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V200.724a48 48 0 0 1 18.387-37.776c24.913-19.529 45.501-35.365 164.2-121.511C199.412 29.17 232.797-.347 256 .003c23.198-.354 56.596 29.172 73.413 41.433 118.687 86.137 139.303 101.995 164.2 121.512A48 48 0 0 1 512 200.724V464zm-65.666-196.605c-2.563-3.728-7.7-4.595-11.339-1.907-22.845 16.873-55.462 40.705-105.582 77.079-16.825 12.266-50.21 41.781-73.413 41.43-23.211.344-56.559-29.143-73.413-41.43-50.114-36.37-82.734-60.204-105.582-77.079-3.639-2.688-8.776-1.821-11.339 1.907l-9.072 13.196a7.998 7.998 0 0 0 1.839 10.967c22.887 16.899 55.454 40.69 105.303 76.868 20.274 14.781 56.524 47.813 92.264 47.573 35.724.242 71.961-32.771 92.263-47.573 49.85-36.179 82.418-59.97 105.303-76.868a7.998 7.998 0 0 0 1.839-10.967l-9.071-13.196z\"]\n};\nvar faEnvelopeOpenText = {\n  prefix: 'fas',\n  iconName: 'envelope-open-text',\n  icon: [512, 512, [], \"f658\", \"M176 216h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16H176c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16zm-16 80c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16H176c-8.84 0-16 7.16-16 16v16zm96 121.13c-16.42 0-32.84-5.06-46.86-15.19L0 250.86V464c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V250.86L302.86 401.94c-14.02 10.12-30.44 15.19-46.86 15.19zm237.61-254.18c-8.85-6.94-17.24-13.47-29.61-22.81V96c0-26.51-21.49-48-48-48h-77.55c-3.04-2.2-5.87-4.26-9.04-6.56C312.6 29.17 279.2-.35 256 0c-23.2-.35-56.59 29.17-73.41 41.44-3.17 2.3-6 4.36-9.04 6.56H96c-26.51 0-48 21.49-48 48v44.14c-12.37 9.33-20.76 15.87-29.61 22.81A47.995 47.995 0 0 0 0 200.72v10.65l96 69.35V96h320v184.72l96-69.35v-10.65c0-14.74-6.78-28.67-18.39-37.77z\"]\n};\nvar faEnvelopeSquare = {\n  prefix: 'fas',\n  iconName: 'envelope-square',\n  icon: [448, 512, [], \"f199\", \"M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM178.117 262.104C87.429 196.287 88.353 196.121 64 177.167V152c0-13.255 10.745-24 24-24h272c13.255 0 24 10.745 24 24v25.167c-24.371 18.969-23.434 19.124-114.117 84.938-10.5 7.655-31.392 26.12-45.883 25.894-14.503.218-35.367-18.227-45.883-25.895zM384 217.775V360c0 13.255-10.745 24-24 24H88c-13.255 0-24-10.745-24-24V217.775c13.958 10.794 33.329 25.236 95.303 70.214 14.162 10.341 37.975 32.145 64.694 32.01 26.887.134 51.037-22.041 64.72-32.025 61.958-44.965 81.325-59.406 95.283-70.199z\"]\n};\nvar faEquals = {\n  prefix: 'fas',\n  iconName: 'equals',\n  icon: [448, 512, [], \"f52c\", \"M416 304H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32zm0-192H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z\"]\n};\nvar faEraser = {\n  prefix: 'fas',\n  iconName: 'eraser',\n  icon: [512, 512, [], \"f12d\", \"M497.941 273.941c18.745-18.745 18.745-49.137 0-67.882l-160-160c-18.745-18.745-49.136-18.746-67.883 0l-256 256c-18.745 18.745-18.745 49.137 0 67.882l96 96A48.004 48.004 0 0 0 144 480h356c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12H355.883l142.058-142.059zm-302.627-62.627l137.373 137.373L265.373 416H150.628l-80-80 124.686-124.686z\"]\n};\nvar faEthernet = {\n  prefix: 'fas',\n  iconName: 'ethernet',\n  icon: [512, 512, [], \"f796\", \"M496 192h-48v-48c0-8.8-7.2-16-16-16h-48V80c0-8.8-7.2-16-16-16H144c-8.8 0-16 7.2-16 16v48H80c-8.8 0-16 7.2-16 16v48H16c-8.8 0-16 7.2-16 16v224c0 8.8 7.2 16 16 16h80V320h32v128h64V320h32v128h64V320h32v128h64V320h32v128h80c8.8 0 16-7.2 16-16V208c0-8.8-7.2-16-16-16z\"]\n};\nvar faEuroSign = {\n  prefix: 'fas',\n  iconName: 'euro-sign',\n  icon: [320, 512, [], \"f153\", \"M310.706 413.765c-1.314-6.63-7.835-10.872-14.424-9.369-10.692 2.439-27.422 5.413-45.426 5.413-56.763 0-101.929-34.79-121.461-85.449h113.689a12 12 0 0 0 11.708-9.369l6.373-28.36c1.686-7.502-4.019-14.631-11.708-14.631H115.22c-1.21-14.328-1.414-28.287.137-42.245H261.95a12 12 0 0 0 11.723-9.434l6.512-29.755c1.638-7.484-4.061-14.566-11.723-14.566H130.184c20.633-44.991 62.69-75.03 117.619-75.03 14.486 0 28.564 2.25 37.851 4.145 6.216 1.268 12.347-2.498 14.002-8.623l11.991-44.368c1.822-6.741-2.465-13.616-9.326-14.917C290.217 34.912 270.71 32 249.635 32 152.451 32 74.03 92.252 45.075 176H12c-6.627 0-12 5.373-12 12v29.755c0 6.627 5.373 12 12 12h21.569c-1.009 13.607-1.181 29.287-.181 42.245H12c-6.627 0-12 5.373-12 12v28.36c0 6.627 5.373 12 12 12h30.114C67.139 414.692 145.264 480 249.635 480c26.301 0 48.562-4.544 61.101-7.788 6.167-1.595 10.027-7.708 8.788-13.957l-8.818-44.49z\"]\n};\nvar faExchangeAlt = {\n  prefix: 'fas',\n  iconName: 'exchange-alt',\n  icon: [512, 512, [], \"f362\", \"M0 168v-16c0-13.255 10.745-24 24-24h360V80c0-21.367 25.899-32.042 40.971-16.971l80 80c9.372 9.373 9.372 24.569 0 33.941l-80 80C409.956 271.982 384 261.456 384 240v-48H24c-13.255 0-24-10.745-24-24zm488 152H128v-48c0-21.314-25.862-32.08-40.971-16.971l-80 80c-9.372 9.373-9.372 24.569 0 33.941l80 80C102.057 463.997 128 453.437 128 432v-48h360c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24z\"]\n};\nvar faExclamation = {\n  prefix: 'fas',\n  iconName: 'exclamation',\n  icon: [192, 512, [], \"f12a\", \"M176 432c0 44.112-35.888 80-80 80s-80-35.888-80-80 35.888-80 80-80 80 35.888 80 80zM25.26 25.199l13.6 272C39.499 309.972 50.041 320 62.83 320h66.34c12.789 0 23.331-10.028 23.97-22.801l13.6-272C167.425 11.49 156.496 0 142.77 0H49.23C35.504 0 24.575 11.49 25.26 25.199z\"]\n};\nvar faExclamationCircle = {\n  prefix: 'fas',\n  iconName: 'exclamation-circle',\n  icon: [512, 512, [], \"f06a\", \"M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248zm-248 50c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z\"]\n};\nvar faExclamationTriangle = {\n  prefix: 'fas',\n  iconName: 'exclamation-triangle',\n  icon: [576, 512, [], \"f071\", \"M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z\"]\n};\nvar faExpand = {\n  prefix: 'fas',\n  iconName: 'expand',\n  icon: [448, 512, [], \"f065\", \"M0 180V56c0-13.3 10.7-24 24-24h124c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H64v84c0 6.6-5.4 12-12 12H12c-6.6 0-12-5.4-12-12zM288 44v40c0 6.6 5.4 12 12 12h84v84c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12V56c0-13.3-10.7-24-24-24H300c-6.6 0-12 5.4-12 12zm148 276h-40c-6.6 0-12 5.4-12 12v84h-84c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h124c13.3 0 24-10.7 24-24V332c0-6.6-5.4-12-12-12zM160 468v-40c0-6.6-5.4-12-12-12H64v-84c0-6.6-5.4-12-12-12H12c-6.6 0-12 5.4-12 12v124c0 13.3 10.7 24 24 24h124c6.6 0 12-5.4 12-12z\"]\n};\nvar faExpandAlt = {\n  prefix: 'fas',\n  iconName: 'expand-alt',\n  icon: [448, 512, [], \"f424\", \"M212.686 315.314L120 408l32.922 31.029c15.12 15.12 4.412 40.971-16.97 40.971h-112C10.697 480 0 469.255 0 456V344c0-21.382 25.803-32.09 40.922-16.971L72 360l92.686-92.686c6.248-6.248 16.379-6.248 22.627 0l25.373 25.373c6.249 6.248 6.249 16.378 0 22.627zm22.628-118.628L328 104l-32.922-31.029C279.958 57.851 290.666 32 312.048 32h112C437.303 32 448 42.745 448 56v112c0 21.382-25.803 32.09-40.922 16.971L376 152l-92.686 92.686c-6.248 6.248-16.379 6.248-22.627 0l-25.373-25.373c-6.249-6.248-6.249-16.378 0-22.627z\"]\n};\nvar faExpandArrowsAlt = {\n  prefix: 'fas',\n  iconName: 'expand-arrows-alt',\n  icon: [448, 512, [], \"f31e\", \"M448 344v112a23.94 23.94 0 0 1-24 24H312c-21.39 0-32.09-25.9-17-41l36.2-36.2L224 295.6 116.77 402.9 153 439c15.09 15.1 4.39 41-17 41H24a23.94 23.94 0 0 1-24-24V344c0-21.4 25.89-32.1 41-17l36.19 36.2L184.46 256 77.18 148.7 41 185c-15.1 15.1-41 4.4-41-17V56a23.94 23.94 0 0 1 24-24h112c21.39 0 32.09 25.9 17 41l-36.2 36.2L224 216.4l107.23-107.3L295 73c-15.09-15.1-4.39-41 17-41h112a23.94 23.94 0 0 1 24 24v112c0 21.4-25.89 32.1-41 17l-36.19-36.2L263.54 256l107.28 107.3L407 327.1c15.1-15.2 41-4.5 41 16.9z\"]\n};\nvar faExternalLinkAlt = {\n  prefix: 'fas',\n  iconName: 'external-link-alt',\n  icon: [512, 512, [], \"f35d\", \"M432,320H400a16,16,0,0,0-16,16V448H64V128H208a16,16,0,0,0,16-16V80a16,16,0,0,0-16-16H48A48,48,0,0,0,0,112V464a48,48,0,0,0,48,48H400a48,48,0,0,0,48-48V336A16,16,0,0,0,432,320ZM488,0h-128c-21.37,0-32.05,25.91-17,41l35.73,35.73L135,320.37a24,24,0,0,0,0,34L157.67,377a24,24,0,0,0,34,0L435.28,133.32,471,169c15,15,41,4.5,41-17V24A24,24,0,0,0,488,0Z\"]\n};\nvar faExternalLinkSquareAlt = {\n  prefix: 'fas',\n  iconName: 'external-link-square-alt',\n  icon: [448, 512, [], \"f360\", \"M448 80v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48zm-88 16H248.029c-21.313 0-32.08 25.861-16.971 40.971l31.984 31.987L67.515 364.485c-4.686 4.686-4.686 12.284 0 16.971l31.029 31.029c4.687 4.686 12.285 4.686 16.971 0l195.526-195.526 31.988 31.991C358.058 263.977 384 253.425 384 231.979V120c0-13.255-10.745-24-24-24z\"]\n};\nvar faEye = {\n  prefix: 'fas',\n  iconName: 'eye',\n  icon: [576, 512, [], \"f06e\", \"M572.52 241.4C518.29 135.59 410.93 64 288 64S57.68 135.64 3.48 241.41a32.35 32.35 0 0 0 0 29.19C57.71 376.41 165.07 448 288 448s230.32-71.64 284.52-177.41a32.35 32.35 0 0 0 0-29.19zM288 400a144 144 0 1 1 144-144 143.93 143.93 0 0 1-144 144zm0-240a95.31 95.31 0 0 0-25.31 3.79 47.85 47.85 0 0 1-66.9 66.9A95.78 95.78 0 1 0 288 160z\"]\n};\nvar faEyeDropper = {\n  prefix: 'fas',\n  iconName: 'eye-dropper',\n  icon: [512, 512, [], \"f1fb\", \"M50.75 333.25c-12 12-18.75 28.28-18.75 45.26V424L0 480l32 32 56-32h45.49c16.97 0 33.25-6.74 45.25-18.74l126.64-126.62-128-128L50.75 333.25zM483.88 28.12c-37.47-37.5-98.28-37.5-135.75 0l-77.09 77.09-13.1-13.1c-9.44-9.44-24.65-9.31-33.94 0l-40.97 40.97c-9.37 9.37-9.37 24.57 0 33.94l161.94 161.94c9.44 9.44 24.65 9.31 33.94 0L419.88 288c9.37-9.37 9.37-24.57 0-33.94l-13.1-13.1 77.09-77.09c37.51-37.48 37.51-98.26.01-135.75z\"]\n};\nvar faEyeSlash = {\n  prefix: 'fas',\n  iconName: 'eye-slash',\n  icon: [640, 512, [], \"f070\", \"M320 400c-75.85 0-137.25-58.71-142.9-133.11L72.2 185.82c-13.79 17.3-26.48 35.59-36.72 55.59a32.35 32.35 0 0 0 0 29.19C89.71 376.41 197.07 448 320 448c26.91 0 52.87-4 77.89-10.46L346 397.39a144.13 144.13 0 0 1-26 2.61zm313.82 58.1l-110.55-85.44a331.25 331.25 0 0 0 81.25-102.07 32.35 32.35 0 0 0 0-29.19C550.29 135.59 442.93 64 320 64a308.15 308.15 0 0 0-147.32 37.7L45.46 3.37A16 16 0 0 0 23 6.18L3.37 31.45A16 16 0 0 0 6.18 53.9l588.36 454.73a16 16 0 0 0 22.46-2.81l19.64-25.27a16 16 0 0 0-2.82-22.45zm-183.72-142l-39.3-30.38A94.75 94.75 0 0 0 416 256a94.76 94.76 0 0 0-121.31-92.21A47.65 47.65 0 0 1 304 192a46.64 46.64 0 0 1-1.54 10l-73.61-56.89A142.31 142.31 0 0 1 320 112a143.92 143.92 0 0 1 144 144c0 21.63-5.29 41.79-13.9 60.11z\"]\n};\nvar faFan = {\n  prefix: 'fas',\n  iconName: 'fan',\n  icon: [512, 512, [], \"f863\", \"M352.57 128c-28.09 0-54.09 4.52-77.06 12.86l12.41-123.11C289 7.31 279.81-1.18 269.33.13 189.63 10.13 128 77.64 128 159.43c0 28.09 4.52 54.09 12.86 77.06L17.75 224.08C7.31 223-1.18 232.19.13 242.67c10 79.7 77.51 141.33 159.3 141.33 28.09 0 54.09-4.52 77.06-12.86l-12.41 123.11c-1.05 10.43 8.11 18.93 18.59 17.62 79.7-10 141.33-77.51 141.33-159.3 0-28.09-4.52-54.09-12.86-77.06l123.11 12.41c10.44 1.05 18.93-8.11 17.62-18.59-10-79.7-77.51-141.33-159.3-141.33zM256 288a32 32 0 1 1 32-32 32 32 0 0 1-32 32z\"]\n};\nvar faFastBackward = {\n  prefix: 'fas',\n  iconName: 'fast-backward',\n  icon: [512, 512, [], \"f049\", \"M0 436V76c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v151.9L235.5 71.4C256.1 54.3 288 68.6 288 96v131.9L459.5 71.4C480.1 54.3 512 68.6 512 96v320c0 27.4-31.9 41.7-52.5 24.6L288 285.3V416c0 27.4-31.9 41.7-52.5 24.6L64 285.3V436c0 6.6-5.4 12-12 12H12c-6.6 0-12-5.4-12-12z\"]\n};\nvar faFastForward = {\n  prefix: 'fas',\n  iconName: 'fast-forward',\n  icon: [512, 512, [], \"f050\", \"M512 76v360c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12V284.1L276.5 440.6c-20.6 17.2-52.5 2.8-52.5-24.6V284.1L52.5 440.6C31.9 457.8 0 443.4 0 416V96c0-27.4 31.9-41.7 52.5-24.6L224 226.8V96c0-27.4 31.9-41.7 52.5-24.6L448 226.8V76c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12z\"]\n};\nvar faFaucet = {\n  prefix: 'fas',\n  iconName: 'faucet',\n  icon: [512, 512, [], \"e005\", \"M352,256H313.39c-15.71-13.44-35.46-23.07-57.39-28V180.44l-32-3.38-32,3.38V228c-21.93,5-41.68,14.6-57.39,28H16A16,16,0,0,0,0,272v96a16,16,0,0,0,16,16h92.79C129.38,421.73,173,448,224,448s94.62-26.27,115.21-64H352a32,32,0,0,1,32,32,32,32,0,0,0,32,32h64a32,32,0,0,0,32-32A160,160,0,0,0,352,256ZM81.59,159.91l142.41-15,142.41,15c9.42,1,17.59-6.81,17.59-16.8V112.89c0-10-8.17-17.8-17.59-16.81L256,107.74V80a16,16,0,0,0-16-16H208a16,16,0,0,0-16,16v27.74L81.59,96.08C72.17,95.09,64,102.9,64,112.89v30.22C64,153.1,72.17,160.91,81.59,159.91Z\"]\n};\nvar faFax = {\n  prefix: 'fas',\n  iconName: 'fax',\n  icon: [512, 512, [], \"f1ac\", \"M480 160V77.25a32 32 0 0 0-9.38-22.63L425.37 9.37A32 32 0 0 0 402.75 0H160a32 32 0 0 0-32 32v448a32 32 0 0 0 32 32h320a32 32 0 0 0 32-32V192a32 32 0 0 0-32-32zM288 432a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16zm0-128a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16zm128 128a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16zm0-128a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16zm0-112H192V64h160v48a16 16 0 0 0 16 16h48zM64 128H32a32 32 0 0 0-32 32v320a32 32 0 0 0 32 32h32a32 32 0 0 0 32-32V160a32 32 0 0 0-32-32z\"]\n};\nvar faFeather = {\n  prefix: 'fas',\n  iconName: 'feather',\n  icon: [512, 512, [], \"f52d\", \"M467.14 44.84c-62.55-62.48-161.67-64.78-252.28 25.73-78.61 78.52-60.98 60.92-85.75 85.66-60.46 60.39-70.39 150.83-63.64 211.17l178.44-178.25c6.26-6.25 16.4-6.25 22.65 0s6.25 16.38 0 22.63L7.04 471.03c-9.38 9.37-9.38 24.57 0 33.94 9.38 9.37 24.6 9.37 33.98 0l66.1-66.03C159.42 454.65 279 457.11 353.95 384h-98.19l147.57-49.14c49.99-49.93 36.38-36.18 46.31-46.86h-97.78l131.54-43.8c45.44-74.46 34.31-148.84-16.26-199.36z\"]\n};\nvar faFeatherAlt = {\n  prefix: 'fas',\n  iconName: 'feather-alt',\n  icon: [512, 512, [], \"f56b\", \"M512 0C460.22 3.56 96.44 38.2 71.01 287.61c-3.09 26.66-4.84 53.44-5.99 80.24l178.87-178.69c6.25-6.25 16.4-6.25 22.65 0s6.25 16.38 0 22.63L7.04 471.03c-9.38 9.37-9.38 24.57 0 33.94 9.38 9.37 24.59 9.37 33.98 0l57.13-57.07c42.09-.14 84.15-2.53 125.96-7.36 53.48-5.44 97.02-26.47 132.58-56.54H255.74l146.79-48.88c11.25-14.89 21.37-30.71 30.45-47.12h-81.14l106.54-53.21C500.29 132.86 510.19 26.26 512 0z\"]\n};\nvar faFemale = {\n  prefix: 'fas',\n  iconName: 'female',\n  icon: [256, 512, [], \"f182\", \"M128 0c35.346 0 64 28.654 64 64s-28.654 64-64 64c-35.346 0-64-28.654-64-64S92.654 0 128 0m119.283 354.179l-48-192A24 24 0 0 0 176 144h-11.36c-22.711 10.443-49.59 10.894-73.28 0H80a24 24 0 0 0-23.283 18.179l-48 192C4.935 369.305 16.383 384 32 384h56v104c0 13.255 10.745 24 24 24h32c13.255 0 24-10.745 24-24V384h56c15.591 0 27.071-14.671 23.283-29.821z\"]\n};\nvar faFighterJet = {\n  prefix: 'fas',\n  iconName: 'fighter-jet',\n  icon: [640, 512, [], \"f0fb\", \"M544 224l-128-16-48-16h-24L227.158 44h39.509C278.333 44 288 41.375 288 38s-9.667-6-21.333-6H152v12h16v164h-48l-66.667-80H18.667L8 138.667V208h8v16h48v2.666l-64 8v42.667l64 8V288H16v16H8v69.333L18.667 384h34.667L120 304h48v164h-16v12h114.667c11.667 0 21.333-2.625 21.333-6s-9.667-6-21.333-6h-39.509L344 320h24l48-16 128-16c96-21.333 96-26.583 96-32 0-5.417 0-10.667-96-32z\"]\n};\nvar faFile = {\n  prefix: 'fas',\n  iconName: 'file',\n  icon: [384, 512, [], \"f15b\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm160-14.1v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z\"]\n};\nvar faFileAlt = {\n  prefix: 'fas',\n  iconName: 'file-alt',\n  icon: [384, 512, [], \"f15c\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm64 236c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12v8zm0-64c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12v8zm0-72v8c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12zm96-114.1v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z\"]\n};\nvar faFileArchive = {\n  prefix: 'fas',\n  iconName: 'file-archive',\n  icon: [384, 512, [], \"f1c6\", \"M377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zM128.4 336c-17.9 0-32.4 12.1-32.4 27 0 15 14.6 27 32.5 27s32.4-12.1 32.4-27-14.6-27-32.5-27zM224 136V0h-63.6v32h-32V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zM95.9 32h32v32h-32zm32.3 384c-33.2 0-58-30.4-51.4-62.9L96.4 256v-32h32v-32h-32v-32h32v-32h-32V96h32V64h32v32h-32v32h32v32h-32v32h32v32h-32v32h22.1c5.7 0 10.7 4.1 11.8 9.7l17.3 87.7c6.4 32.4-18.4 62.6-51.4 62.6z\"]\n};\nvar faFileAudio = {\n  prefix: 'fas',\n  iconName: 'file-audio',\n  icon: [384, 512, [], \"f1c7\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm-64 268c0 10.7-12.9 16-20.5 8.5L104 376H76c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h28l35.5-36.5c7.6-7.6 20.5-2.2 20.5 8.5v136zm33.2-47.6c9.1-9.3 9.1-24.1 0-33.4-22.1-22.8 12.2-56.2 34.4-33.5 27.2 27.9 27.2 72.4 0 100.4-21.8 22.3-56.9-10.4-34.4-33.5zm86-117.1c54.4 55.9 54.4 144.8 0 200.8-21.8 22.4-57-10.3-34.4-33.5 36.2-37.2 36.3-96.5 0-133.8-22.1-22.8 12.3-56.3 34.4-33.5zM384 121.9v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z\"]\n};\nvar faFileCode = {\n  prefix: 'fas',\n  iconName: 'file-code',\n  icon: [384, 512, [], \"f1c9\", \"M384 121.941V128H256V0h6.059c6.365 0 12.47 2.529 16.971 7.029l97.941 97.941A24.005 24.005 0 0 1 384 121.941zM248 160c-13.2 0-24-10.8-24-24V0H24C10.745 0 0 10.745 0 24v464c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V160H248zM123.206 400.505a5.4 5.4 0 0 1-7.633.246l-64.866-60.812a5.4 5.4 0 0 1 0-7.879l64.866-60.812a5.4 5.4 0 0 1 7.633.246l19.579 20.885a5.4 5.4 0 0 1-.372 7.747L101.65 336l40.763 35.874a5.4 5.4 0 0 1 .372 7.747l-19.579 20.884zm51.295 50.479l-27.453-7.97a5.402 5.402 0 0 1-3.681-6.692l61.44-211.626a5.402 5.402 0 0 1 6.692-3.681l27.452 7.97a5.4 5.4 0 0 1 3.68 6.692l-61.44 211.626a5.397 5.397 0 0 1-6.69 3.681zm160.792-111.045l-64.866 60.812a5.4 5.4 0 0 1-7.633-.246l-19.58-20.885a5.4 5.4 0 0 1 .372-7.747L284.35 336l-40.763-35.874a5.4 5.4 0 0 1-.372-7.747l19.58-20.885a5.4 5.4 0 0 1 7.633-.246l64.866 60.812a5.4 5.4 0 0 1-.001 7.879z\"]\n};\nvar faFileContract = {\n  prefix: 'fas',\n  iconName: 'file-contract',\n  icon: [384, 512, [], \"f56c\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zM64 72c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8V72zm0 64c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16zm192.81 248H304c8.84 0 16 7.16 16 16s-7.16 16-16 16h-47.19c-16.45 0-31.27-9.14-38.64-23.86-2.95-5.92-8.09-6.52-10.17-6.52s-7.22.59-10.02 6.19l-7.67 15.34a15.986 15.986 0 0 1-14.31 8.84c-.38 0-.75-.02-1.14-.05-6.45-.45-12-4.75-14.03-10.89L144 354.59l-10.61 31.88c-5.89 17.66-22.38 29.53-41 29.53H80c-8.84 0-16-7.16-16-16s7.16-16 16-16h12.39c4.83 0 9.11-3.08 10.64-7.66l18.19-54.64c3.3-9.81 12.44-16.41 22.78-16.41s19.48 6.59 22.77 16.41l13.88 41.64c19.77-16.19 54.05-9.7 66 14.16 2.02 4.06 5.96 6.5 10.16 6.5zM377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z\"]\n};\nvar faFileCsv = {\n  prefix: 'fas',\n  iconName: 'file-csv',\n  icon: [384, 512, [], \"f6dd\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm-96 144c0 4.42-3.58 8-8 8h-8c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h8c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-8c-26.51 0-48-21.49-48-48v-32c0-26.51 21.49-48 48-48h8c4.42 0 8 3.58 8 8v16zm44.27 104H160c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h12.27c5.95 0 10.41-3.5 10.41-6.62 0-1.3-.75-2.66-2.12-3.84l-21.89-18.77c-8.47-7.22-13.33-17.48-13.33-28.14 0-21.3 19.02-38.62 42.41-38.62H200c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-12.27c-5.95 0-10.41 3.5-10.41 6.62 0 1.3.75 2.66 2.12 3.84l21.89 18.77c8.47 7.22 13.33 17.48 13.33 28.14.01 21.29-19 38.62-42.39 38.62zM256 264v20.8c0 20.27 5.7 40.17 16 56.88 10.3-16.7 16-36.61 16-56.88V264c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v20.8c0 35.48-12.88 68.89-36.28 94.09-3.02 3.25-7.27 5.11-11.72 5.11s-8.7-1.86-11.72-5.11c-23.4-25.2-36.28-58.61-36.28-94.09V264c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8zm121-159L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z\"]\n};\nvar faFileDownload = {\n  prefix: 'fas',\n  iconName: 'file-download',\n  icon: [384, 512, [], \"f56d\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm76.45 211.36l-96.42 95.7c-6.65 6.61-17.39 6.61-24.04 0l-96.42-95.7C73.42 337.29 80.54 320 94.82 320H160v-80c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v80h65.18c14.28 0 21.4 17.29 11.27 27.36zM377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z\"]\n};\nvar faFileExcel = {\n  prefix: 'fas',\n  iconName: 'file-excel',\n  icon: [384, 512, [], \"f1c3\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm60.1 106.5L224 336l60.1 93.5c5.1 8-.6 18.5-10.1 18.5h-34.9c-4.4 0-8.5-2.4-10.6-6.3C208.9 405.5 192 373 192 373c-6.4 14.8-10 20-36.6 68.8-2.1 3.9-6.1 6.3-10.5 6.3H110c-9.5 0-15.2-10.5-10.1-18.5l60.3-93.5-60.3-93.5c-5.2-8 .6-18.5 10.1-18.5h34.8c4.4 0 8.5 2.4 10.6 6.3 26.1 48.8 20 33.6 36.6 68.5 0 0 6.1-11.7 36.6-68.5 2.1-3.9 6.2-6.3 10.6-6.3H274c9.5-.1 15.2 10.4 10.1 18.4zM384 121.9v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z\"]\n};\nvar faFileExport = {\n  prefix: 'fas',\n  iconName: 'file-export',\n  icon: [576, 512, [], \"f56e\", \"M384 121.9c0-6.3-2.5-12.4-7-16.9L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128zM571 308l-95.7-96.4c-10.1-10.1-27.4-3-27.4 11.3V288h-64v64h64v65.2c0 14.3 17.3 21.4 27.4 11.3L571 332c6.6-6.6 6.6-17.4 0-24zm-379 28v-32c0-8.8 7.2-16 16-16h176V160H248c-13.2 0-24-10.8-24-24V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V352H208c-8.8 0-16-7.2-16-16z\"]\n};\nvar faFileImage = {\n  prefix: 'fas',\n  iconName: 'file-image',\n  icon: [384, 512, [], \"f1c5\", \"M384 121.941V128H256V0h6.059a24 24 0 0 1 16.97 7.029l97.941 97.941a24.002 24.002 0 0 1 7.03 16.971zM248 160c-13.2 0-24-10.8-24-24V0H24C10.745 0 0 10.745 0 24v464c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V160H248zm-135.455 16c26.51 0 48 21.49 48 48s-21.49 48-48 48-48-21.49-48-48 21.491-48 48-48zm208 240h-256l.485-48.485L104.545 328c4.686-4.686 11.799-4.201 16.485.485L160.545 368 264.06 264.485c4.686-4.686 12.284-4.686 16.971 0L320.545 304v112z\"]\n};\nvar faFileImport = {\n  prefix: 'fas',\n  iconName: 'file-import',\n  icon: [512, 512, [], \"f56f\", \"M16 288c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h112v-64zm489-183L407.1 7c-4.5-4.5-10.6-7-17-7H384v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H152c-13.3 0-24 10.7-24 24v264h128v-65.2c0-14.3 17.3-21.4 27.4-11.3L379 308c6.6 6.7 6.6 17.4 0 24l-95.7 96.4c-10.1 10.1-27.4 3-27.4-11.3V352H128v136c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H376c-13.2 0-24-10.8-24-24z\"]\n};\nvar faFileInvoice = {\n  prefix: 'fas',\n  iconName: 'file-invoice',\n  icon: [384, 512, [], \"f570\", \"M288 256H96v64h192v-64zm89-151L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zM64 72c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8V72zm0 64c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16zm256 304c0 4.42-3.58 8-8 8h-80c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16zm0-200v96c0 8.84-7.16 16-16 16H80c-8.84 0-16-7.16-16-16v-96c0-8.84 7.16-16 16-16h224c8.84 0 16 7.16 16 16z\"]\n};\nvar faFileInvoiceDollar = {\n  prefix: 'fas',\n  iconName: 'file-invoice-dollar',\n  icon: [384, 512, [], \"f571\", \"M377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zM64 72c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8V72zm0 80v-16c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8zm144 263.88V440c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-24.29c-11.29-.58-22.27-4.52-31.37-11.35-3.9-2.93-4.1-8.77-.57-12.14l11.75-11.21c2.77-2.64 6.89-2.76 10.13-.73 3.87 2.42 8.26 3.72 12.82 3.72h28.11c6.5 0 11.8-5.92 11.8-13.19 0-5.95-3.61-11.19-8.77-12.73l-45-13.5c-18.59-5.58-31.58-23.42-31.58-43.39 0-24.52 19.05-44.44 42.67-45.07V232c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v24.29c11.29.58 22.27 4.51 31.37 11.35 3.9 2.93 4.1 8.77.57 12.14l-11.75 11.21c-2.77 2.64-6.89 2.76-10.13.73-3.87-2.43-8.26-3.72-12.82-3.72h-28.11c-6.5 0-11.8 5.92-11.8 13.19 0 5.95 3.61 11.19 8.77 12.73l45 13.5c18.59 5.58 31.58 23.42 31.58 43.39 0 24.53-19.05 44.44-42.67 45.07z\"]\n};\nvar faFileMedical = {\n  prefix: 'fas',\n  iconName: 'file-medical',\n  icon: [384, 512, [], \"f477\", \"M377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm64 160v48c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8z\"]\n};\nvar faFileMedicalAlt = {\n  prefix: 'fas',\n  iconName: 'file-medical-alt',\n  icon: [448, 512, [], \"f478\", \"M288 136V0H88C74.7 0 64 10.7 64 24v232H8c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h140.9c3 0 5.8 1.7 7.2 4.4l19.9 39.8 56.8-113.7c2.9-5.9 11.4-5.9 14.3 0l34.7 69.5H352c8.8 0 16 7.2 16 16s-7.2 16-16 16h-89.9L240 275.8l-56.8 113.7c-2.9 5.9-11.4 5.9-14.3 0L134.1 320H64v168c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H312c-13.2 0-24-10.8-24-24zm153-31L343.1 7c-4.5-4.5-10.6-7-17-7H320v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z\"]\n};\nvar faFilePdf = {\n  prefix: 'fas',\n  iconName: 'file-pdf',\n  icon: [384, 512, [], \"f1c1\", \"M181.9 256.1c-5-16-4.9-46.9-2-46.9 8.4 0 7.6 36.9 2 46.9zm-1.7 47.2c-7.7 20.2-17.3 43.3-28.4 62.7 18.3-7 39-17.2 62.9-21.9-12.7-9.6-24.9-23.4-34.5-40.8zM86.1 428.1c0 .8 13.2-5.4 34.9-40.2-6.7 6.3-29.1 24.5-34.9 40.2zM248 160h136v328c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V24C0 10.7 10.7 0 24 0h200v136c0 13.2 10.8 24 24 24zm-8 171.8c-20-12.2-33.3-29-42.7-53.8 4.5-18.5 11.6-46.6 6.2-64.2-4.7-29.4-42.4-26.5-47.8-6.8-5 18.3-.4 44.1 8.1 77-11.6 27.6-28.7 64.6-40.8 85.8-.1 0-.1.1-.2.1-27.1 13.9-73.6 44.5-54.5 68 5.6 6.9 16 10 21.5 10 17.9 0 35.7-18 61.1-61.8 25.8-8.5 54.1-19.1 79-23.2 21.7 11.8 47.1 19.5 64 19.5 29.2 0 31.2-32 19.7-43.4-13.9-13.6-54.3-9.7-73.6-7.2zM377 105L279 7c-4.5-4.5-10.6-7-17-7h-6v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-74.1 255.3c4.1-2.7-2.5-11.9-42.8-9 37.1 15.8 42.8 9 42.8 9z\"]\n};\nvar faFilePowerpoint = {\n  prefix: 'fas',\n  iconName: 'file-powerpoint',\n  icon: [384, 512, [], \"f1c4\", \"M193.7 271.2c8.8 0 15.5 2.7 20.3 8.1 9.6 10.9 9.8 32.7-.2 44.1-4.9 5.6-11.9 8.5-21.1 8.5h-26.9v-60.7h27.9zM377 105L279 7c-4.5-4.5-10.6-7-17-7h-6v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm53 165.2c0 90.3-88.8 77.6-111.1 77.6V436c0 6.6-5.4 12-12 12h-30.8c-6.6 0-12-5.4-12-12V236.2c0-6.6 5.4-12 12-12h81c44.5 0 72.9 32.8 72.9 77z\"]\n};\nvar faFilePrescription = {\n  prefix: 'fas',\n  iconName: 'file-prescription',\n  icon: [384, 512, [], \"f572\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm68.53 179.48l11.31 11.31c6.25 6.25 6.25 16.38 0 22.63l-29.9 29.9L304 409.38c6.25 6.25 6.25 16.38 0 22.63l-11.31 11.31c-6.25 6.25-16.38 6.25-22.63 0L240 413.25l-30.06 30.06c-6.25 6.25-16.38 6.25-22.63 0L176 432c-6.25-6.25-6.25-16.38 0-22.63l30.06-30.06L146.74 320H128v48c0 8.84-7.16 16-16 16H96c-8.84 0-16-7.16-16-16V208c0-8.84 7.16-16 16-16h80c35.35 0 64 28.65 64 64 0 24.22-13.62 45.05-33.46 55.92L240 345.38l29.9-29.9c6.25-6.25 16.38-6.25 22.63 0zM176 272h-48v-32h48c8.82 0 16 7.18 16 16s-7.18 16-16 16zm208-150.1v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z\"]\n};\nvar faFileSignature = {\n  prefix: 'fas',\n  iconName: 'file-signature',\n  icon: [576, 512, [], \"f573\", \"M218.17 424.14c-2.95-5.92-8.09-6.52-10.17-6.52s-7.22.59-10.02 6.19l-7.67 15.34c-6.37 12.78-25.03 11.37-29.48-2.09L144 386.59l-10.61 31.88c-5.89 17.66-22.38 29.53-41 29.53H80c-8.84 0-16-7.16-16-16s7.16-16 16-16h12.39c4.83 0 9.11-3.08 10.64-7.66l18.19-54.64c3.3-9.81 12.44-16.41 22.78-16.41s19.48 6.59 22.77 16.41l13.88 41.64c19.75-16.19 54.06-9.7 66 14.16 1.89 3.78 5.49 5.95 9.36 6.26v-82.12l128-127.09V160H248c-13.2 0-24-10.8-24-24V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24v-40l-128-.11c-16.12-.31-30.58-9.28-37.83-23.75zM384 121.9c0-6.3-2.5-12.4-7-16.9L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1zm-96 225.06V416h68.99l161.68-162.78-67.88-67.88L288 346.96zm280.54-179.63l-31.87-31.87c-9.94-9.94-26.07-9.94-36.01 0l-27.25 27.25 67.88 67.88 27.25-27.25c9.95-9.94 9.95-26.07 0-36.01z\"]\n};\nvar faFileUpload = {\n  prefix: 'fas',\n  iconName: 'file-upload',\n  icon: [384, 512, [], \"f574\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm65.18 216.01H224v80c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-80H94.82c-14.28 0-21.41-17.29-11.27-27.36l96.42-95.7c6.65-6.61 17.39-6.61 24.04 0l96.42 95.7c10.15 10.07 3.03 27.36-11.25 27.36zM377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z\"]\n};\nvar faFileVideo = {\n  prefix: 'fas',\n  iconName: 'file-video',\n  icon: [384, 512, [], \"f1c8\", \"M384 121.941V128H256V0h6.059c6.365 0 12.47 2.529 16.971 7.029l97.941 97.941A24.005 24.005 0 0 1 384 121.941zM224 136V0H24C10.745 0 0 10.745 0 24v464c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V160H248c-13.2 0-24-10.8-24-24zm96 144.016v111.963c0 21.445-25.943 31.998-40.971 16.971L224 353.941V392c0 13.255-10.745 24-24 24H88c-13.255 0-24-10.745-24-24V280c0-13.255 10.745-24 24-24h112c13.255 0 24 10.745 24 24v38.059l55.029-55.013c15.011-15.01 40.971-4.491 40.971 16.97z\"]\n};\nvar faFileWord = {\n  prefix: 'fas',\n  iconName: 'file-word',\n  icon: [384, 512, [], \"f1c2\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm57.1 120H305c7.7 0 13.4 7.1 11.7 14.7l-38 168c-1.2 5.5-6.1 9.3-11.7 9.3h-38c-5.5 0-10.3-3.8-11.6-9.1-25.8-103.5-20.8-81.2-25.6-110.5h-.5c-1.1 14.3-2.4 17.4-25.6 110.5-1.3 5.3-6.1 9.1-11.6 9.1H117c-5.6 0-10.5-3.9-11.7-9.4l-37.8-168c-1.7-7.5 4-14.6 11.7-14.6h24.5c5.7 0 10.7 4 11.8 9.7 15.6 78 20.1 109.5 21 122.2 1.6-10.2 7.3-32.7 29.4-122.7 1.3-5.4 6.1-9.1 11.7-9.1h29.1c5.6 0 10.4 3.8 11.7 9.2 24 100.4 28.8 124 29.6 129.4-.2-11.2-2.6-17.8 21.6-129.2 1-5.6 5.9-9.5 11.5-9.5zM384 121.9v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z\"]\n};\nvar faFill = {\n  prefix: 'fas',\n  iconName: 'fill',\n  icon: [512, 512, [], \"f575\", \"M502.63 217.06L294.94 9.37C288.69 3.12 280.5 0 272.31 0s-16.38 3.12-22.62 9.37l-81.58 81.58L81.93 4.77c-6.24-6.25-16.38-6.25-22.62 0L36.69 27.38c-6.24 6.25-6.24 16.38 0 22.63l86.19 86.18-94.76 94.76c-37.49 37.49-37.49 98.26 0 135.75l117.19 117.19c18.75 18.74 43.31 28.12 67.87 28.12 24.57 0 49.13-9.37 67.88-28.12l221.57-221.57c12.49-12.5 12.49-32.76 0-45.26zm-116.22 70.97H65.93c1.36-3.84 3.57-7.98 7.43-11.83l13.15-13.15 81.61-81.61 58.61 58.6c12.49 12.49 32.75 12.49 45.24 0 12.49-12.49 12.49-32.75 0-45.24l-58.61-58.6 58.95-58.95 162.45 162.44-48.35 48.34z\"]\n};\nvar faFillDrip = {\n  prefix: 'fas',\n  iconName: 'fill-drip',\n  icon: [576, 512, [], \"f576\", \"M512 320s-64 92.65-64 128c0 35.35 28.66 64 64 64s64-28.65 64-64-64-128-64-128zm-9.37-102.94L294.94 9.37C288.69 3.12 280.5 0 272.31 0s-16.38 3.12-22.62 9.37l-81.58 81.58L81.93 4.76c-6.25-6.25-16.38-6.25-22.62 0L36.69 27.38c-6.24 6.25-6.24 16.38 0 22.62l86.19 86.18-94.76 94.76c-37.49 37.48-37.49 98.26 0 135.75l117.19 117.19c18.74 18.74 43.31 28.12 67.87 28.12 24.57 0 49.13-9.37 67.87-28.12l221.57-221.57c12.5-12.5 12.5-32.75.01-45.25zm-116.22 70.97H65.93c1.36-3.84 3.57-7.98 7.43-11.83l13.15-13.15 81.61-81.61 58.6 58.6c12.49 12.49 32.75 12.49 45.24 0s12.49-32.75 0-45.24l-58.6-58.6 58.95-58.95 162.44 162.44-48.34 48.34z\"]\n};\nvar faFilm = {\n  prefix: 'fas',\n  iconName: 'film',\n  icon: [512, 512, [], \"f008\", \"M488 64h-8v20c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12V64H96v20c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12V64h-8C10.7 64 0 74.7 0 88v336c0 13.3 10.7 24 24 24h8v-20c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v20h320v-20c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v20h8c13.3 0 24-10.7 24-24V88c0-13.3-10.7-24-24-24zM96 372c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm272 208c0 6.6-5.4 12-12 12H156c-6.6 0-12-5.4-12-12v-96c0-6.6 5.4-12 12-12h200c6.6 0 12 5.4 12 12v96zm0-168c0 6.6-5.4 12-12 12H156c-6.6 0-12-5.4-12-12v-96c0-6.6 5.4-12 12-12h200c6.6 0 12 5.4 12 12v96zm112 152c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40z\"]\n};\nvar faFilter = {\n  prefix: 'fas',\n  iconName: 'filter',\n  icon: [512, 512, [], \"f0b0\", \"M487.976 0H24.028C2.71 0-8.047 25.866 7.058 40.971L192 225.941V432c0 7.831 3.821 15.17 10.237 19.662l80 55.98C298.02 518.69 320 507.493 320 487.98V225.941l184.947-184.97C520.021 25.896 509.338 0 487.976 0z\"]\n};\nvar faFingerprint = {\n  prefix: 'fas',\n  iconName: 'fingerprint',\n  icon: [512, 512, [], \"f577\", \"M256.12 245.96c-13.25 0-24 10.74-24 24 1.14 72.25-8.14 141.9-27.7 211.55-2.73 9.72 2.15 30.49 23.12 30.49 10.48 0 20.11-6.92 23.09-17.52 13.53-47.91 31.04-125.41 29.48-224.52.01-13.25-10.73-24-23.99-24zm-.86-81.73C194 164.16 151.25 211.3 152.1 265.32c.75 47.94-3.75 95.91-13.37 142.55-2.69 12.98 5.67 25.69 18.64 28.36 13.05 2.67 25.67-5.66 28.36-18.64 10.34-50.09 15.17-101.58 14.37-153.02-.41-25.95 19.92-52.49 54.45-52.34 31.31.47 57.15 25.34 57.62 55.47.77 48.05-2.81 96.33-10.61 143.55-2.17 13.06 6.69 25.42 19.76 27.58 19.97 3.33 26.81-15.1 27.58-19.77 8.28-50.03 12.06-101.21 11.27-152.11-.88-55.8-47.94-101.88-104.91-102.72zm-110.69-19.78c-10.3-8.34-25.37-6.8-33.76 3.48-25.62 31.5-39.39 71.28-38.75 112 .59 37.58-2.47 75.27-9.11 112.05-2.34 13.05 6.31 25.53 19.36 27.89 20.11 3.5 27.07-14.81 27.89-19.36 7.19-39.84 10.5-80.66 9.86-121.33-.47-29.88 9.2-57.88 28-80.97 8.35-10.28 6.79-25.39-3.49-33.76zm109.47-62.33c-15.41-.41-30.87 1.44-45.78 4.97-12.89 3.06-20.87 15.98-17.83 28.89 3.06 12.89 16 20.83 28.89 17.83 11.05-2.61 22.47-3.77 34-3.69 75.43 1.13 137.73 61.5 138.88 134.58.59 37.88-1.28 76.11-5.58 113.63-1.5 13.17 7.95 25.08 21.11 26.58 16.72 1.95 25.51-11.88 26.58-21.11a929.06 929.06 0 0 0 5.89-119.85c-1.56-98.75-85.07-180.33-186.16-181.83zm252.07 121.45c-2.86-12.92-15.51-21.2-28.61-18.27-12.94 2.86-21.12 15.66-18.26 28.61 4.71 21.41 4.91 37.41 4.7 61.6-.11 13.27 10.55 24.09 23.8 24.2h.2c13.17 0 23.89-10.61 24-23.8.18-22.18.4-44.11-5.83-72.34zm-40.12-90.72C417.29 43.46 337.6 1.29 252.81.02 183.02-.82 118.47 24.91 70.46 72.94 24.09 119.37-.9 181.04.14 246.65l-.12 21.47c-.39 13.25 10.03 24.31 23.28 24.69.23.02.48.02.72.02 12.92 0 23.59-10.3 23.97-23.3l.16-23.64c-.83-52.5 19.16-101.86 56.28-139 38.76-38.8 91.34-59.67 147.68-58.86 69.45 1.03 134.73 35.56 174.62 92.39 7.61 10.86 22.56 13.45 33.42 5.86 10.84-7.62 13.46-22.59 5.84-33.43z\"]\n};\nvar faFire = {\n  prefix: 'fas',\n  iconName: 'fire',\n  icon: [384, 512, [], \"f06d\", \"M216 23.86c0-23.8-30.65-32.77-44.15-13.04C48 191.85 224 200 224 288c0 35.63-29.11 64.46-64.85 63.99-35.17-.45-63.15-29.77-63.15-64.94v-85.51c0-21.7-26.47-32.23-41.43-16.5C27.8 213.16 0 261.33 0 320c0 105.87 86.13 192 192 192s192-86.13 192-192c0-170.29-168-193-168-296.14z\"]\n};\nvar faFireAlt = {\n  prefix: 'fas',\n  iconName: 'fire-alt',\n  icon: [448, 512, [], \"f7e4\", \"M323.56 51.2c-20.8 19.3-39.58 39.59-56.22 59.97C240.08 73.62 206.28 35.53 168 0 69.74 91.17 0 209.96 0 281.6 0 408.85 100.29 512 224 512s224-103.15 224-230.4c0-53.27-51.98-163.14-124.44-230.4zm-19.47 340.65C282.43 407.01 255.72 416 226.86 416 154.71 416 96 368.26 96 290.75c0-38.61 24.31-72.63 72.79-130.75 6.93 7.98 98.83 125.34 98.83 125.34l58.63-66.88c4.14 6.85 7.91 13.55 11.27 19.97 27.35 52.19 15.81 118.97-33.43 153.42z\"]\n};\nvar faFireExtinguisher = {\n  prefix: 'fas',\n  iconName: 'fire-extinguisher',\n  icon: [448, 512, [], \"f134\", \"M434.027 26.329l-168 28C254.693 56.218 256 67.8 256 72h-58.332C208.353 36.108 181.446 0 144 0c-39.435 0-66.368 39.676-52.228 76.203-52.039 13.051-75.381 54.213-90.049 90.884-4.923 12.307 1.063 26.274 13.37 31.197 12.317 4.926 26.279-1.075 31.196-13.37C75.058 112.99 106.964 120 168 120v27.076c-41.543 10.862-72 49.235-72 94.129V488c0 13.255 10.745 24 24 24h144c13.255 0 24-10.745 24-24V240c0-44.731-30.596-82.312-72-92.97V120h40c0 2.974-1.703 15.716 10.027 17.671l168 28C441.342 166.89 448 161.25 448 153.834V38.166c0-7.416-6.658-13.056-13.973-11.837zM144 72c-8.822 0-16-7.178-16-16s7.178-16 16-16 16 7.178 16 16-7.178 16-16 16z\"]\n};\nvar faFirstAid = {\n  prefix: 'fas',\n  iconName: 'first-aid',\n  icon: [576, 512, [], \"f479\", \"M0 80v352c0 26.5 21.5 48 48 48h48V32H48C21.5 32 0 53.5 0 80zm128 400h320V32H128v448zm64-248c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48zM528 32h-48v448h48c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48z\"]\n};\nvar faFish = {\n  prefix: 'fas',\n  iconName: 'fish',\n  icon: [576, 512, [], \"f578\", \"M327.1 96c-89.97 0-168.54 54.77-212.27 101.63L27.5 131.58c-12.13-9.18-30.24.6-27.14 14.66L24.54 256 .35 365.77c-3.1 14.06 15.01 23.83 27.14 14.66l87.33-66.05C158.55 361.23 237.13 416 327.1 416 464.56 416 576 288 576 256S464.56 96 327.1 96zm87.43 184c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24 13.26 0 24 10.74 24 24 0 13.25-10.75 24-24 24z\"]\n};\nvar faFistRaised = {\n  prefix: 'fas',\n  iconName: 'fist-raised',\n  icon: [384, 512, [], \"f6de\", \"M255.98 160V16c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v146.93c5.02-1.78 10.34-2.93 15.97-2.93h48.03zm128 95.99c-.01-35.34-28.66-63.99-63.99-63.99H207.85c-8.78 0-15.9 7.07-15.9 15.85v.56c0 26.27 21.3 47.59 47.57 47.59h35.26c9.68 0 13.2 3.58 13.2 8v16.2c0 4.29-3.59 7.78-7.88 8-44.52 2.28-64.16 24.71-96.05 72.55l-6.31 9.47a7.994 7.994 0 0 1-11.09 2.22l-13.31-8.88a7.994 7.994 0 0 1-2.22-11.09l6.31-9.47c15.73-23.6 30.2-43.26 47.31-58.08-17.27-5.51-31.4-18.12-38.87-34.45-6.59 3.41-13.96 5.52-21.87 5.52h-32c-12.34 0-23.49-4.81-32-12.48C71.48 251.19 60.33 256 48 256H16c-5.64 0-10.97-1.15-16-2.95v77.93c0 33.95 13.48 66.5 37.49 90.51L63.99 448v64h255.98v-63.96l35.91-35.92A96.035 96.035 0 0 0 384 344.21l-.02-88.22zm-32.01-90.09V48c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v112h32c11.28 0 21.94 2.31 32 5.9zM16 224h32c8.84 0 16-7.16 16-16V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v128c0 8.84 7.16 16 16 16zm95.99 0h32c8.84 0 16-7.16 16-16V48c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v160c0 8.84 7.16 16 16 16z\"]\n};\nvar faFlag = {\n  prefix: 'fas',\n  iconName: 'flag',\n  icon: [512, 512, [], \"f024\", \"M349.565 98.783C295.978 98.783 251.721 64 184.348 64c-24.955 0-47.309 4.384-68.045 12.013a55.947 55.947 0 0 0 3.586-23.562C118.117 24.015 94.806 1.206 66.338.048 34.345-1.254 8 24.296 8 56c0 19.026 9.497 35.825 24 45.945V488c0 13.255 10.745 24 24 24h16c13.255 0 24-10.745 24-24v-94.4c28.311-12.064 63.582-22.122 114.435-22.122 53.588 0 97.844 34.783 165.217 34.783 48.169 0 86.667-16.294 122.505-40.858C506.84 359.452 512 349.571 512 339.045v-243.1c0-23.393-24.269-38.87-45.485-29.016-34.338 15.948-76.454 31.854-116.95 31.854z\"]\n};\nvar faFlagCheckered = {\n  prefix: 'fas',\n  iconName: 'flag-checkered',\n  icon: [512, 512, [], \"f11e\", \"M243.2 189.9V258c26.1 5.9 49.3 15.6 73.6 22.3v-68.2c-26-5.8-49.4-15.5-73.6-22.2zm223.3-123c-34.3 15.9-76.5 31.9-117 31.9C296 98.8 251.7 64 184.3 64c-25 0-47.3 4.4-68 12 2.8-7.3 4.1-15.2 3.6-23.6C118.1 24 94.8 1.2 66.3 0 34.3-1.3 8 24.3 8 56c0 19 9.5 35.8 24 45.9V488c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24v-94.4c28.3-12.1 63.6-22.1 114.4-22.1 53.6 0 97.8 34.8 165.2 34.8 48.2 0 86.7-16.3 122.5-40.9 8.7-6 13.8-15.8 13.8-26.4V95.9c.1-23.3-24.2-38.8-45.4-29zM169.6 325.5c-25.8 2.7-50 8.2-73.6 16.6v-70.5c26.2-9.3 47.5-15 73.6-17.4zM464 191c-23.6 9.8-46.3 19.5-73.6 23.9V286c24.8-3.4 51.4-11.8 73.6-26v70.5c-25.1 16.1-48.5 24.7-73.6 27.1V286c-27 3.7-47.9 1.5-73.6-5.6v67.4c-23.9-7.4-47.3-16.7-73.6-21.3V258c-19.7-4.4-40.8-6.8-73.6-3.8v-70c-22.4 3.1-44.6 10.2-73.6 20.9v-70.5c33.2-12.2 50.1-19.8 73.6-22v71.6c27-3.7 48.4-1.3 73.6 5.7v-67.4c23.7 7.4 47.2 16.7 73.6 21.3v68.4c23.7 5.3 47.6 6.9 73.6 2.7V143c27-4.8 52.3-13.6 73.6-22.5z\"]\n};\nvar faFlagUsa = {\n  prefix: 'fas',\n  iconName: 'flag-usa',\n  icon: [512, 512, [], \"f74d\", \"M32 0C14.3 0 0 14.3 0 32v464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V32C64 14.3 49.7 0 32 0zm267.9 303.6c-57.2-15.1-111.7-28.8-203.9 11.1V384c185.7-92.2 221.7 53.3 397.5-23.1 11.4-5 18.5-16.5 18.5-28.8v-36c-43.6 17.3-80.2 24.1-112.1 24.1-37.4-.1-68.9-8.4-100-16.6zm0-96c-57.2-15.1-111.7-28.8-203.9 11.1v61.5c94.8-37.6 154.6-22.7 212.1-7.6 57.2 15.1 111.7 28.8 203.9-11.1V200c-43.6 17.3-80.2 24.1-112.1 24.1-37.4 0-68.9-8.3-100-16.5zm9.5-125.9c51.8 15.6 97.4 29 202.6-20.1V30.8c0-25.1-26.8-38.1-49.4-26.6C291.3 91.5 305.4-62.2 96 32.4v151.9c94.8-37.5 154.6-22.7 212.1-7.6 57.2 15 111.7 28.7 203.9-11.1V96.7c-53.6 23.5-93.3 31.4-126.1 31.4s-59-7.8-85.7-15.9c-4-1.2-8.1-2.4-12.1-3.5V75.5c7.2 2 14.3 4.1 21.3 6.2zM160 128.1c-8.8 0-16-7.1-16-16 0-8.8 7.2-16 16-16s16 7.1 16 16-7.2 16-16 16zm0-55.8c-8.8 0-16-7.1-16-16 0-8.8 7.2-16 16-16s16 7.1 16 16c0 8.8-7.2 16-16 16zm64 47.9c-8.8 0-16-7.1-16-16 0-8.8 7.2-16 16-16s16 7.1 16 16c0 8.8-7.2 16-16 16zm0-55.9c-8.8 0-16-7.1-16-16 0-8.8 7.2-16 16-16s16 7.1 16 16c0 8.8-7.2 16-16 16z\"]\n};\nvar faFlask = {\n  prefix: 'fas',\n  iconName: 'flask',\n  icon: [448, 512, [], \"f0c3\", \"M437.2 403.5L320 215V64h8c13.3 0 24-10.7 24-24V24c0-13.3-10.7-24-24-24H120c-13.3 0-24 10.7-24 24v16c0 13.3 10.7 24 24 24h8v151L10.8 403.5C-18.5 450.6 15.3 512 70.9 512h306.2c55.7 0 89.4-61.5 60.1-108.5zM137.9 320l48.2-77.6c3.7-5.2 5.8-11.6 5.8-18.4V64h64v160c0 6.9 2.2 13.2 5.8 18.4l48.2 77.6h-172z\"]\n};\nvar faFlushed = {\n  prefix: 'fas',\n  iconName: 'flushed',\n  icon: [496, 512, [], \"f579\", \"M344 200c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm-192 0c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM80 224c0-39.8 32.2-72 72-72s72 32.2 72 72-32.2 72-72 72-72-32.2-72-72zm232 176H184c-21.2 0-21.2-32 0-32h128c21.2 0 21.2 32 0 32zm32-104c-39.8 0-72-32.2-72-72s32.2-72 72-72 72 32.2 72 72-32.2 72-72 72z\"]\n};\nvar faFolder = {\n  prefix: 'fas',\n  iconName: 'folder',\n  icon: [512, 512, [], \"f07b\", \"M464 128H272l-64-64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48z\"]\n};\nvar faFolderMinus = {\n  prefix: 'fas',\n  iconName: 'folder-minus',\n  icon: [512, 512, [], \"f65d\", \"M464 128H272l-64-64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48zm-96 168c0 8.84-7.16 16-16 16H160c-8.84 0-16-7.16-16-16v-16c0-8.84 7.16-16 16-16h192c8.84 0 16 7.16 16 16v16z\"]\n};\nvar faFolderOpen = {\n  prefix: 'fas',\n  iconName: 'folder-open',\n  icon: [576, 512, [], \"f07c\", \"M572.694 292.093L500.27 416.248A63.997 63.997 0 0 1 444.989 448H45.025c-18.523 0-30.064-20.093-20.731-36.093l72.424-124.155A64 64 0 0 1 152 256h399.964c18.523 0 30.064 20.093 20.73 36.093zM152 224h328v-48c0-26.51-21.49-48-48-48H272l-64-64H48C21.49 64 0 85.49 0 112v278.046l69.077-118.418C86.214 242.25 117.989 224 152 224z\"]\n};\nvar faFolderPlus = {\n  prefix: 'fas',\n  iconName: 'folder-plus',\n  icon: [512, 512, [], \"f65e\", \"M464,128H272L208,64H48A48,48,0,0,0,0,112V400a48,48,0,0,0,48,48H464a48,48,0,0,0,48-48V176A48,48,0,0,0,464,128ZM359.5,296a16,16,0,0,1-16,16h-64v64a16,16,0,0,1-16,16h-16a16,16,0,0,1-16-16V312h-64a16,16,0,0,1-16-16V280a16,16,0,0,1,16-16h64V200a16,16,0,0,1,16-16h16a16,16,0,0,1,16,16v64h64a16,16,0,0,1,16,16Z\"]\n};\nvar faFont = {\n  prefix: 'fas',\n  iconName: 'font',\n  icon: [448, 512, [], \"f031\", \"M432 416h-23.41L277.88 53.69A32 32 0 0 0 247.58 32h-47.16a32 32 0 0 0-30.3 21.69L39.41 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-19.58l23.3-64h152.56l23.3 64H304a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM176.85 272L224 142.51 271.15 272z\"]\n};\nvar faFontAwesomeLogoFull = {\n  prefix: 'fas',\n  iconName: 'font-awesome-logo-full',\n  icon: [3992, 512, [\"Font Awesome\"], \"f4e6\", \"M454.6 0H57.4C25.9 0 0 25.9 0 57.4v397.3C0 486.1 25.9 512 57.4 512h397.3c31.4 0 57.4-25.9 57.4-57.4V57.4C512 25.9 486.1 0 454.6 0zm-58.9 324.9c0 4.8-4.1 6.9-8.9 8.9-19.2 8.1-39.7 15.7-61.5 15.7-40.5 0-68.7-44.8-163.2 2.5v51.8c0 30.3-45.7 30.2-45.7 0v-250c-9-7-15-17.9-15-30.3 0-21 17.1-38.2 38.2-38.2 21 0 38.2 17.1 38.2 38.2 0 12.2-5.8 23.2-14.9 30.2v21c37.1-12 65.5-34.4 146.1-3.4 26.6 11.4 68.7-15.7 76.5-15.7 5.5 0 10.3 4.1 10.3 8.9v160.4zm432.9-174.2h-137v70.1H825c39.8 0 40.4 62.2 0 62.2H691.6v105.6c0 45.5-70.7 46.4-70.7 0V128.3c0-22 18-39.8 39.8-39.8h167.8c39.6 0 40.5 62.2.1 62.2zm191.1 23.4c-169.3 0-169.1 252.4 0 252.4 169.9 0 169.9-252.4 0-252.4zm0 196.1c-81.6 0-82.1-139.8 0-139.8 82.5 0 82.4 139.8 0 139.8zm372.4 53.4c-17.5 0-31.4-13.9-31.4-31.4v-117c0-62.4-72.6-52.5-99.1-16.4v133.4c0 41.5-63.3 41.8-63.3 0V208c0-40 63.1-41.6 63.1 0v3.4c43.3-51.6 162.4-60.4 162.4 39.3v141.5c.3 30.4-31.5 31.4-31.7 31.4zm179.7 2.9c-44.3 0-68.3-22.9-68.3-65.8V235.2H1488c-35.6 0-36.7-55.3 0-55.3h15.5v-37.3c0-41.3 63.8-42.1 63.8 0v37.5h24.9c35.4 0 35.7 55.3 0 55.3h-24.9v108.5c0 29.6 26.1 26.3 27.4 26.3 31.4 0 52.6 56.3-22.9 56.3zM1992 123c-19.5-50.2-95.5-50-114.5 0-107.3 275.7-99.5 252.7-99.5 262.8 0 42.8 58.3 51.2 72.1 14.4l13.5-35.9H2006l13 35.9c14.2 37.7 72.1 27.2 72.1-14.4 0-10.1 5.3 6.8-99.1-262.8zm-108.9 179.1l51.7-142.9 51.8 142.9h-103.5zm591.3-85.6l-53.7 176.3c-12.4 41.2-72 41-84 0l-42.3-135.9-42.3 135.9c-12.4 40.9-72 41.2-84.5 0l-54.2-176.3c-12.5-39.4 49.8-56.1 60.2-16.9L2213 342l45.3-139.5c10.9-32.7 59.6-34.7 71.2 0l45.3 139.5 39.3-142.4c10.3-38.3 72.6-23.8 60.3 16.9zm275.4 75.1c0-42.4-33.9-117.5-119.5-117.5-73.2 0-124.4 56.3-124.4 126 0 77.2 55.3 126.4 128.5 126.4 31.7 0 93-11.5 93-39.8 0-18.3-21.1-31.5-39.3-22.4-49.4 26.2-109 8.4-115.9-43.8h148.3c16.3 0 29.3-13.4 29.3-28.9zM2571 277.7c9.5-73.4 113.9-68.6 118.6 0H2571zm316.7 148.8c-31.4 0-81.6-10.5-96.6-31.9-12.4-17 2.5-39.8 21.8-39.8 16.3 0 36.8 22.9 77.7 22.9 27.4 0 40.4-11 40.4-25.8 0-39.8-142.9-7.4-142.9-102 0-40.4 35.3-75.7 98.6-75.7 31.4 0 74.1 9.9 87.6 29.4 10.8 14.8-1.4 36.2-20.9 36.2-15.1 0-26.7-17.3-66.2-17.3-22.9 0-37.8 10.5-37.8 23.8 0 35.9 142.4 6 142.4 103.1-.1 43.7-37.4 77.1-104.1 77.1zm266.8-252.4c-169.3 0-169.1 252.4 0 252.4 170.1 0 169.6-252.4 0-252.4zm0 196.1c-81.8 0-82-139.8 0-139.8 82.5 0 82.4 139.8 0 139.8zm476.9 22V268.7c0-53.8-61.4-45.8-85.7-10.5v134c0 41.3-63.8 42.1-63.8 0V268.7c0-52.1-59.5-47.4-85.7-10.1v133.6c0 41.5-63.3 41.8-63.3 0V208c0-40 63.1-41.6 63.1 0v3.4c9.9-14.4 41.8-37.3 78.6-37.3 35.3 0 57.7 16.4 66.7 43.8 13.9-21.8 45.8-43.8 82.6-43.8 44.3 0 70.7 23.4 70.7 72.7v145.3c.5 17.3-13.5 31.4-31.9 31.4 3.5.1-31.3 1.1-31.3-31.3zM3992 291.6c0-42.4-32.4-117.5-117.9-117.5-73.2 0-127.5 56.3-127.5 126 0 77.2 58.3 126.4 131.6 126.4 31.7 0 91.5-11.5 91.5-39.8 0-18.3-21.1-31.5-39.3-22.4-49.4 26.2-110.5 8.4-117.5-43.8h149.8c16.3 0 29.1-13.4 29.3-28.9zm-180.5-13.9c9.7-74.4 115.9-68.3 120.1 0h-120.1z\"]\n};\nvar faFootballBall = {\n  prefix: 'fas',\n  iconName: 'football-ball',\n  icon: [496, 512, [], \"f44e\", \"M481.5 60.3c-4.8-18.2-19.1-32.5-37.3-37.4C420.3 16.5 383 8.9 339.4 8L496 164.8c-.8-43.5-8.2-80.6-14.5-104.5zm-467 391.4c4.8 18.2 19.1 32.5 37.3 37.4 23.9 6.4 61.2 14 104.8 14.9L0 347.2c.8 43.5 8.2 80.6 14.5 104.5zM4.2 283.4L220.4 500c132.5-19.4 248.8-118.7 271.5-271.4L275.6 12C143.1 31.4 26.8 130.7 4.2 283.4zm317.3-123.6c3.1-3.1 8.2-3.1 11.3 0l11.3 11.3c3.1 3.1 3.1 8.2 0 11.3l-28.3 28.3 28.3 28.3c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-28.3-28.3-22.6 22.7 28.3 28.3c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0L248 278.6l-22.6 22.6 28.3 28.3c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-28.3-28.3-28.3 28.3c-3.1 3.1-8.2 3.1-11.3 0l-11.3-11.3c-3.1-3.1-3.1-8.2 0-11.3l28.3-28.3-28.3-28.2c-3.1-3.1-3.1-8.2 0-11.3l11.3-11.3c3.1-3.1 8.2-3.1 11.3 0l28.3 28.3 22.6-22.6-28.3-28.3c-3.1-3.1-3.1-8.2 0-11.3l11.3-11.3c3.1-3.1 8.2-3.1 11.3 0l28.3 28.3 22.6-22.6-28.3-28.3c-3.1-3.1-3.1-8.2 0-11.3l11.3-11.3c3.1-3.1 8.2-3.1 11.3 0l28.3 28.3 28.3-28.5z\"]\n};\nvar faForward = {\n  prefix: 'fas',\n  iconName: 'forward',\n  icon: [512, 512, [], \"f04e\", \"M500.5 231.4l-192-160C287.9 54.3 256 68.6 256 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2zm-256 0l-192-160C31.9 54.3 0 68.6 0 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2z\"]\n};\nvar faFrog = {\n  prefix: 'fas',\n  iconName: 'frog',\n  icon: [576, 512, [], \"f52e\", \"M446.53 97.43C439.67 60.23 407.19 32 368 32c-39.23 0-71.72 28.29-78.54 65.54C126.75 112.96-.5 250.12 0 416.98.11 451.9 29.08 480 64 480h304c8.84 0 16-7.16 16-16 0-17.67-14.33-32-32-32h-79.49l35.8-48.33c24.14-36.23 10.35-88.28-33.71-106.6-23.89-9.93-51.55-4.65-72.24 10.88l-32.76 24.59c-7.06 5.31-17.09 3.91-22.41-3.19-5.3-7.08-3.88-17.11 3.19-22.41l34.78-26.09c36.84-27.66 88.28-27.62 125.13 0 10.87 8.15 45.87 39.06 40.8 93.21L469.62 480H560c8.84 0 16-7.16 16-16 0-17.67-14.33-32-32-32h-53.63l-98.52-104.68 154.44-86.65A58.16 58.16 0 0 0 576 189.94c0-21.4-11.72-40.95-30.48-51.23-40.56-22.22-98.99-41.28-98.99-41.28zM368 136c-13.26 0-24-10.75-24-24 0-13.26 10.74-24 24-24 13.25 0 24 10.74 24 24 0 13.25-10.75 24-24 24z\"]\n};\nvar faFrown = {\n  prefix: 'fas',\n  iconName: 'frown',\n  icon: [496, 512, [], \"f119\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm170.2 218.2C315.8 367.4 282.9 352 248 352s-67.8 15.4-90.2 42.2c-13.5 16.3-38.1-4.2-24.6-20.5C161.7 339.6 203.6 320 248 320s86.3 19.6 114.7 53.8c13.6 16.2-11 36.7-24.5 20.4z\"]\n};\nvar faFrownOpen = {\n  prefix: 'fas',\n  iconName: 'frown-open',\n  icon: [496, 512, [], \"f57a\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM136 208c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm187.3 183.3c-31.2-9.6-59.4-15.3-75.3-15.3s-44.1 5.7-75.3 15.3c-11.5 3.5-22.5-6.3-20.5-18.1 7-40 60.1-61.2 95.8-61.2s88.8 21.3 95.8 61.2c2 11.9-9.1 21.6-20.5 18.1zM328 240c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faFunnelDollar = {\n  prefix: 'fas',\n  iconName: 'funnel-dollar',\n  icon: [640, 512, [], \"f662\", \"M433.46 165.94l101.2-111.87C554.61 34.12 540.48 0 512.26 0H31.74C3.52 0-10.61 34.12 9.34 54.07L192 256v155.92c0 12.59 5.93 24.44 16 32l79.99 60c20.86 15.64 48.47 6.97 59.22-13.57C310.8 455.38 288 406.35 288 352c0-89.79 62.05-165.17 145.46-186.06zM480 192c-88.37 0-160 71.63-160 160s71.63 160 160 160 160-71.63 160-160-71.63-160-160-160zm16 239.88V448c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-16.29c-11.29-.58-22.27-4.52-31.37-11.35-3.9-2.93-4.1-8.77-.57-12.14l11.75-11.21c2.77-2.64 6.89-2.76 10.13-.73 3.87 2.42 8.26 3.72 12.82 3.72h28.11c6.5 0 11.8-5.92 11.8-13.19 0-5.95-3.61-11.19-8.77-12.73l-45-13.5c-18.59-5.58-31.58-23.42-31.58-43.39 0-24.52 19.05-44.44 42.67-45.07V256c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16.29c11.29.58 22.27 4.51 31.37 11.35 3.9 2.93 4.1 8.77.57 12.14l-11.75 11.21c-2.77 2.64-6.89 2.76-10.13.73-3.87-2.43-8.26-3.72-12.82-3.72h-28.11c-6.5 0-11.8 5.92-11.8 13.19 0 5.95 3.61 11.19 8.77 12.73l45 13.5c18.59 5.58 31.58 23.42 31.58 43.39 0 24.53-19.04 44.44-42.67 45.07z\"]\n};\nvar faFutbol = {\n  prefix: 'fas',\n  iconName: 'futbol',\n  icon: [512, 512, [], \"f1e3\", \"M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zm-48 0l-.003-.282-26.064 22.741-62.679-58.5 16.454-84.355 34.303 3.072c-24.889-34.216-60.004-60.089-100.709-73.141l13.651 31.939L256 139l-74.953-41.525 13.651-31.939c-40.631 13.028-75.78 38.87-100.709 73.141l34.565-3.073 16.192 84.355-62.678 58.5-26.064-22.741-.003.282c0 43.015 13.497 83.952 38.472 117.991l7.704-33.897 85.138 10.447 36.301 77.826-29.902 17.786c40.202 13.122 84.29 13.148 124.572 0l-29.902-17.786 36.301-77.826 85.138-10.447 7.704 33.897C442.503 339.952 456 299.015 456 256zm-248.102 69.571l-29.894-91.312L256 177.732l77.996 56.527-29.622 91.312h-96.476z\"]\n};\nvar faGamepad = {\n  prefix: 'fas',\n  iconName: 'gamepad',\n  icon: [640, 512, [], \"f11b\", \"M480.07 96H160a160 160 0 1 0 114.24 272h91.52A160 160 0 1 0 480.07 96zM248 268a12 12 0 0 1-12 12h-52v52a12 12 0 0 1-12 12h-24a12 12 0 0 1-12-12v-52H84a12 12 0 0 1-12-12v-24a12 12 0 0 1 12-12h52v-52a12 12 0 0 1 12-12h24a12 12 0 0 1 12 12v52h52a12 12 0 0 1 12 12zm216 76a40 40 0 1 1 40-40 40 40 0 0 1-40 40zm64-96a40 40 0 1 1 40-40 40 40 0 0 1-40 40z\"]\n};\nvar faGasPump = {\n  prefix: 'fas',\n  iconName: 'gas-pump',\n  icon: [512, 512, [], \"f52f\", \"M336 448H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h320c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm157.2-340.7l-81-81c-6.2-6.2-16.4-6.2-22.6 0l-11.3 11.3c-6.2 6.2-6.2 16.4 0 22.6L416 97.9V160c0 28.1 20.9 51.3 48 55.2V376c0 13.2-10.8 24-24 24s-24-10.8-24-24v-32c0-48.6-39.4-88-88-88h-8V64c0-35.3-28.7-64-64-64H96C60.7 0 32 28.7 32 64v352h288V304h8c22.1 0 40 17.9 40 40v27.8c0 37.7 27 72 64.5 75.9 43 4.3 79.5-29.5 79.5-71.7V152.6c0-17-6.8-33.3-18.8-45.3zM256 192H96V64h160v128z\"]\n};\nvar faGavel = {\n  prefix: 'fas',\n  iconName: 'gavel',\n  icon: [512, 512, [], \"f0e3\", \"M504.971 199.362l-22.627-22.627c-9.373-9.373-24.569-9.373-33.941 0l-5.657 5.657L329.608 69.255l5.657-5.657c9.373-9.373 9.373-24.569 0-33.941L312.638 7.029c-9.373-9.373-24.569-9.373-33.941 0L154.246 131.48c-9.373 9.373-9.373 24.569 0 33.941l22.627 22.627c9.373 9.373 24.569 9.373 33.941 0l5.657-5.657 39.598 39.598-81.04 81.04-5.657-5.657c-12.497-12.497-32.758-12.497-45.255 0L9.373 412.118c-12.497 12.497-12.497 32.758 0 45.255l45.255 45.255c12.497 12.497 32.758 12.497 45.255 0l114.745-114.745c12.497-12.497 12.497-32.758 0-45.255l-5.657-5.657 81.04-81.04 39.598 39.598-5.657 5.657c-9.373 9.373-9.373 24.569 0 33.941l22.627 22.627c9.373 9.373 24.569 9.373 33.941 0l124.451-124.451c9.372-9.372 9.372-24.568 0-33.941z\"]\n};\nvar faGem = {\n  prefix: 'fas',\n  iconName: 'gem',\n  icon: [576, 512, [], \"f3a5\", \"M485.5 0L576 160H474.9L405.7 0h79.8zm-128 0l69.2 160H149.3L218.5 0h139zm-267 0h79.8l-69.2 160H0L90.5 0zM0 192h100.7l123 251.7c1.5 3.1-2.7 5.9-5 3.3L0 192zm148.2 0h279.6l-137 318.2c-1 2.4-4.5 2.4-5.5 0L148.2 192zm204.1 251.7l123-251.7H576L357.3 446.9c-2.3 2.7-6.5-.1-5-3.2z\"]\n};\nvar faGenderless = {\n  prefix: 'fas',\n  iconName: 'genderless',\n  icon: [288, 512, [], \"f22d\", \"M144 176c44.1 0 80 35.9 80 80s-35.9 80-80 80-80-35.9-80-80 35.9-80 80-80m0-64C64.5 112 0 176.5 0 256s64.5 144 144 144 144-64.5 144-144-64.5-144-144-144z\"]\n};\nvar faGhost = {\n  prefix: 'fas',\n  iconName: 'ghost',\n  icon: [384, 512, [], \"f6e2\", \"M186.1.09C81.01 3.24 0 94.92 0 200.05v263.92c0 14.26 17.23 21.39 27.31 11.31l24.92-18.53c6.66-4.95 16-3.99 21.51 2.21l42.95 48.35c6.25 6.25 16.38 6.25 22.63 0l40.72-45.85c6.37-7.17 17.56-7.17 23.92 0l40.72 45.85c6.25 6.25 16.38 6.25 22.63 0l42.95-48.35c5.51-6.2 14.85-7.17 21.51-2.21l24.92 18.53c10.08 10.08 27.31 2.94 27.31-11.31V192C384 84 294.83-3.17 186.1.09zM128 224c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm128 0c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faGift = {\n  prefix: 'fas',\n  iconName: 'gift',\n  icon: [512, 512, [], \"f06b\", \"M32 448c0 17.7 14.3 32 32 32h160V320H32v128zm256 32h160c17.7 0 32-14.3 32-32V320H288v160zm192-320h-42.1c6.2-12.1 10.1-25.5 10.1-40 0-48.5-39.5-88-88-88-41.6 0-68.5 21.3-103 68.3-34.5-47-61.4-68.3-103-68.3-48.5 0-88 39.5-88 88 0 14.5 3.8 27.9 10.1 40H32c-17.7 0-32 14.3-32 32v80c0 8.8 7.2 16 16 16h480c8.8 0 16-7.2 16-16v-80c0-17.7-14.3-32-32-32zm-326.1 0c-22.1 0-40-17.9-40-40s17.9-40 40-40c19.9 0 34.6 3.3 86.1 80h-86.1zm206.1 0h-86.1c51.4-76.5 65.7-80 86.1-80 22.1 0 40 17.9 40 40s-17.9 40-40 40z\"]\n};\nvar faGifts = {\n  prefix: 'fas',\n  iconName: 'gifts',\n  icon: [640, 512, [], \"f79c\", \"M240.6 194.1c1.9-30.8 17.3-61.2 44-79.8C279.4 103.5 268.7 96 256 96h-29.4l30.7-22c7.2-5.1 8.9-15.1 3.7-22.3l-9.3-13c-5.1-7.2-15.1-8.9-22.3-3.7l-32 22.9 11.5-30.6c3.1-8.3-1.1-17.5-9.4-20.6l-15-5.6c-8.3-3.1-17.5 1.1-20.6 9.4l-19.9 53-19.9-53.1C121 2.1 111.8-2.1 103.5 1l-15 5.6C80.2 9.7 76 19 79.2 27.2l11.5 30.6L58.6 35c-7.2-5.1-17.2-3.5-22.3 3.7l-9.3 13c-5.1 7.2-3.5 17.2 3.7 22.3l30.7 22H32c-17.7 0-32 14.3-32 32v352c0 17.7 14.3 32 32 32h168.9c-5.5-9.5-8.9-20.3-8.9-32V256c0-29.9 20.8-55 48.6-61.9zM224 480c0 17.7 14.3 32 32 32h160V384H224v96zm224 32h160c17.7 0 32-14.3 32-32v-96H448v128zm160-288h-20.4c2.6-7.6 4.4-15.5 4.4-23.8 0-35.5-27-72.2-72.1-72.2-48.1 0-75.9 47.7-87.9 75.3-12.1-27.6-39.9-75.3-87.9-75.3-45.1 0-72.1 36.7-72.1 72.2 0 8.3 1.7 16.2 4.4 23.8H256c-17.7 0-32 14.3-32 32v96h192V224h15.3l.7-.2.7.2H448v128h192v-96c0-17.7-14.3-32-32-32zm-272 0c-2.7-1.4-5.1-3-7.2-4.8-7.3-6.4-8.8-13.8-8.8-19 0-9.7 6.4-24.2 24.1-24.2 18.7 0 35.6 27.4 44.5 48H336zm199.2-4.8c-2.1 1.8-4.5 3.4-7.2 4.8h-52.6c8.8-20.3 25.8-48 44.5-48 17.7 0 24.1 14.5 24.1 24.2 0 5.2-1.5 12.6-8.8 19z\"]\n};\nvar faGlassCheers = {\n  prefix: 'fas',\n  iconName: 'glass-cheers',\n  icon: [640, 512, [], \"f79f\", \"M639.4 433.6c-8.4-20.4-31.8-30.1-52.2-21.6l-22.1 9.2-38.7-101.9c47.9-35 64.8-100.3 34.5-152.8L474.3 16c-8-13.9-25.1-19.7-40-13.6L320 49.8 205.7 2.4c-14.9-6.2-32-.3-40 13.6L79.1 166.5C48.9 219 65.7 284.3 113.6 319.2L74.9 421.1l-22.1-9.2c-20.4-8.5-43.7 1.2-52.2 21.6-1.7 4.1.2 8.8 4.3 10.5l162.3 67.4c4.1 1.7 8.7-.2 10.4-4.3 8.4-20.4-1.2-43.8-21.6-52.3l-22.1-9.2L173.3 342c4.4.5 8.8 1.3 13.1 1.3 51.7 0 99.4-33.1 113.4-85.3l20.2-75.4 20.2 75.4c14 52.2 61.7 85.3 113.4 85.3 4.3 0 8.7-.8 13.1-1.3L506 445.6l-22.1 9.2c-20.4 8.5-30.1 31.9-21.6 52.3 1.7 4.1 6.4 6 10.4 4.3L635.1 444c4-1.7 6-6.3 4.3-10.4zM275.9 162.1l-112.1-46.5 36.5-63.4 94.5 39.2-18.9 70.7zm88.2 0l-18.9-70.7 94.5-39.2 36.5 63.4-112.1 46.5z\"]\n};\nvar faGlassMartini = {\n  prefix: 'fas',\n  iconName: 'glass-martini',\n  icon: [512, 512, [], \"f000\", \"M502.05 57.6C523.3 36.34 508.25 0 478.2 0H33.8C3.75 0-11.3 36.34 9.95 57.6L224 271.64V464h-56c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h240c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40h-56V271.64L502.05 57.6z\"]\n};\nvar faGlassMartiniAlt = {\n  prefix: 'fas',\n  iconName: 'glass-martini-alt',\n  icon: [512, 512, [], \"f57b\", \"M502.05 57.6C523.3 36.34 508.25 0 478.2 0H33.8C3.75 0-11.3 36.34 9.95 57.6L224 271.64V464h-56c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h240c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40h-56V271.64L502.05 57.6zM443.77 48l-48 48H116.24l-48-48h375.53z\"]\n};\nvar faGlassWhiskey = {\n  prefix: 'fas',\n  iconName: 'glass-whiskey',\n  icon: [512, 512, [], \"f7a0\", \"M480 32H32C12.5 32-2.4 49.2.3 68.5l56 356.5c4.5 31.5 31.5 54.9 63.4 54.9h273c31.8 0 58.9-23.4 63.4-54.9l55.6-356.5C514.4 49.2 499.5 32 480 32zm-37.4 64l-30 192h-313L69.4 96h373.2z\"]\n};\nvar faGlasses = {\n  prefix: 'fas',\n  iconName: 'glasses',\n  icon: [576, 512, [], \"f530\", \"M574.1 280.37L528.75 98.66c-5.91-23.7-21.59-44.05-43-55.81-21.44-11.73-46.97-14.11-70.19-6.33l-15.25 5.08c-8.39 2.79-12.92 11.86-10.12 20.24l5.06 15.18c2.79 8.38 11.85 12.91 20.23 10.12l13.18-4.39c10.87-3.62 23-3.57 33.16 1.73 10.29 5.37 17.57 14.56 20.37 25.82l38.46 153.82c-22.19-6.81-49.79-12.46-81.2-12.46-34.77 0-73.98 7.02-114.85 26.74h-73.18c-40.87-19.74-80.08-26.75-114.86-26.75-31.42 0-59.02 5.65-81.21 12.46l38.46-153.83c2.79-11.25 10.09-20.45 20.38-25.81 10.16-5.3 22.28-5.35 33.15-1.73l13.17 4.39c8.38 2.79 17.44-1.74 20.23-10.12l5.06-15.18c2.8-8.38-1.73-17.45-10.12-20.24l-15.25-5.08c-23.22-7.78-48.75-5.41-70.19 6.33-21.41 11.77-37.09 32.11-43 55.8L1.9 280.37A64.218 64.218 0 0 0 0 295.86v70.25C0 429.01 51.58 480 115.2 480h37.12c60.28 0 110.37-45.94 114.88-105.37l2.93-38.63h35.75l2.93 38.63C313.31 434.06 363.4 480 423.68 480h37.12c63.62 0 115.2-50.99 115.2-113.88v-70.25c0-5.23-.64-10.43-1.9-15.5zm-370.72 89.42c-1.97 25.91-24.4 46.21-51.06 46.21H115.2C86.97 416 64 393.62 64 366.11v-37.54c18.12-6.49 43.42-12.92 72.58-12.92 23.86 0 47.26 4.33 69.93 12.92l-3.13 41.22zM512 366.12c0 27.51-22.97 49.88-51.2 49.88h-37.12c-26.67 0-49.1-20.3-51.06-46.21l-3.13-41.22c22.67-8.59 46.08-12.92 69.95-12.92 29.12 0 54.43 6.44 72.55 12.93v37.54z\"]\n};\nvar faGlobe = {\n  prefix: 'fas',\n  iconName: 'globe',\n  icon: [496, 512, [], \"f0ac\", \"M336.5 160C322 70.7 287.8 8 248 8s-74 62.7-88.5 152h177zM152 256c0 22.2 1.2 43.5 3.3 64h185.3c2.1-20.5 3.3-41.8 3.3-64s-1.2-43.5-3.3-64H155.3c-2.1 20.5-3.3 41.8-3.3 64zm324.7-96c-28.6-67.9-86.5-120.4-158-141.6 24.4 33.8 41.2 84.7 50 141.6h108zM177.2 18.4C105.8 39.6 47.8 92.1 19.3 160h108c8.7-56.9 25.5-107.8 49.9-141.6zM487.4 192H372.7c2.1 21 3.3 42.5 3.3 64s-1.2 43-3.3 64h114.6c5.5-20.5 8.6-41.8 8.6-64s-3.1-43.5-8.5-64zM120 256c0-21.5 1.2-43 3.3-64H8.6C3.2 212.5 0 233.8 0 256s3.2 43.5 8.6 64h114.6c-2-21-3.2-42.5-3.2-64zm39.5 96c14.5 89.3 48.7 152 88.5 152s74-62.7 88.5-152h-177zm159.3 141.6c71.4-21.2 129.4-73.7 158-141.6h-108c-8.8 56.9-25.6 107.8-50 141.6zM19.3 352c28.6 67.9 86.5 120.4 158 141.6-24.4-33.8-41.2-84.7-50-141.6h-108z\"]\n};\nvar faGlobeAfrica = {\n  prefix: 'fas',\n  iconName: 'globe-africa',\n  icon: [496, 512, [], \"f57c\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm160 215.5v6.93c0 5.87-3.32 11.24-8.57 13.86l-15.39 7.7a15.485 15.485 0 0 1-15.53-.97l-18.21-12.14a15.52 15.52 0 0 0-13.5-1.81l-2.65.88c-9.7 3.23-13.66 14.79-7.99 23.3l13.24 19.86c2.87 4.31 7.71 6.9 12.89 6.9h8.21c8.56 0 15.5 6.94 15.5 15.5v11.34c0 3.35-1.09 6.62-3.1 9.3l-18.74 24.98c-1.42 1.9-2.39 4.1-2.83 6.43l-4.3 22.83c-.62 3.29-2.29 6.29-4.76 8.56a159.608 159.608 0 0 0-25 29.16l-13.03 19.55a27.756 27.756 0 0 1-23.09 12.36c-10.51 0-20.12-5.94-24.82-15.34a78.902 78.902 0 0 1-8.33-35.29V367.5c0-8.56-6.94-15.5-15.5-15.5h-25.88c-14.49 0-28.38-5.76-38.63-16a54.659 54.659 0 0 1-16-38.63v-14.06c0-17.19 8.1-33.38 21.85-43.7l27.58-20.69a54.663 54.663 0 0 1 32.78-10.93h.89c8.48 0 16.85 1.97 24.43 5.77l14.72 7.36c3.68 1.84 7.93 2.14 11.83.84l47.31-15.77c6.33-2.11 10.6-8.03 10.6-14.7 0-8.56-6.94-15.5-15.5-15.5h-10.09c-4.11 0-8.05-1.63-10.96-4.54l-6.92-6.92a15.493 15.493 0 0 0-10.96-4.54H199.5c-8.56 0-15.5-6.94-15.5-15.5v-4.4c0-7.11 4.84-13.31 11.74-15.04l14.45-3.61c3.74-.94 7-3.23 9.14-6.44l8.08-12.11c2.87-4.31 7.71-6.9 12.89-6.9h24.21c8.56 0 15.5-6.94 15.5-15.5v-21.7C359.23 71.63 422.86 131.02 441.93 208H423.5c-8.56 0-15.5 6.94-15.5 15.5z\"]\n};\nvar faGlobeAmericas = {\n  prefix: 'fas',\n  iconName: 'globe-americas',\n  icon: [496, 512, [], \"f57d\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm82.29 357.6c-3.9 3.88-7.99 7.95-11.31 11.28-2.99 3-5.1 6.7-6.17 10.71-1.51 5.66-2.73 11.38-4.77 16.87l-17.39 46.85c-13.76 3-28 4.69-42.65 4.69v-27.38c1.69-12.62-7.64-36.26-22.63-51.25-6-6-9.37-14.14-9.37-22.63v-32.01c0-11.64-6.27-22.34-16.46-27.97-14.37-7.95-34.81-19.06-48.81-26.11-11.48-5.78-22.1-13.14-31.65-21.75l-.8-.72a114.792 114.792 0 0 1-18.06-20.74c-9.38-13.77-24.66-36.42-34.59-51.14 20.47-45.5 57.36-82.04 103.2-101.89l24.01 12.01C203.48 89.74 216 82.01 216 70.11v-11.3c7.99-1.29 16.12-2.11 24.39-2.42l28.3 28.3c6.25 6.25 6.25 16.38 0 22.63L264 112l-10.34 10.34c-3.12 3.12-3.12 8.19 0 11.31l4.69 4.69c3.12 3.12 3.12 8.19 0 11.31l-8 8a8.008 8.008 0 0 1-5.66 2.34h-8.99c-2.08 0-4.08.81-5.58 2.27l-9.92 9.65a8.008 8.008 0 0 0-1.58 9.31l15.59 31.19c2.66 5.32-1.21 11.58-7.15 11.58h-5.64c-1.93 0-3.79-.7-5.24-1.96l-9.28-8.06a16.017 16.017 0 0 0-15.55-3.1l-31.17 10.39a11.95 11.95 0 0 0-8.17 11.34c0 4.53 2.56 8.66 6.61 10.69l11.08 5.54c9.41 4.71 19.79 7.16 30.31 7.16s22.59 27.29 32 32h66.75c8.49 0 16.62 3.37 22.63 9.37l13.69 13.69a30.503 30.503 0 0 1 8.93 21.57 46.536 46.536 0 0 1-13.72 32.98zM417 274.25c-5.79-1.45-10.84-5-14.15-9.97l-17.98-26.97a23.97 23.97 0 0 1 0-26.62l19.59-29.38c2.32-3.47 5.5-6.29 9.24-8.15l12.98-6.49C440.2 193.59 448 223.87 448 256c0 8.67-.74 17.16-1.82 25.54L417 274.25z\"]\n};\nvar faGlobeAsia = {\n  prefix: 'fas',\n  iconName: 'globe-asia',\n  icon: [496, 512, [], \"f57e\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm-11.34 240.23c-2.89 4.82-8.1 7.77-13.72 7.77h-.31c-4.24 0-8.31 1.69-11.31 4.69l-5.66 5.66c-3.12 3.12-3.12 8.19 0 11.31l5.66 5.66c3 3 4.69 7.07 4.69 11.31V304c0 8.84-7.16 16-16 16h-6.11c-6.06 0-11.6-3.42-14.31-8.85l-22.62-45.23c-2.44-4.88-8.95-5.94-12.81-2.08l-19.47 19.46c-3 3-7.07 4.69-11.31 4.69H50.81C49.12 277.55 48 266.92 48 256c0-110.28 89.72-200 200-200 21.51 0 42.2 3.51 61.63 9.82l-50.16 38.53c-5.11 3.41-4.63 11.06.86 13.81l10.83 5.41c5.42 2.71 8.84 8.25 8.84 14.31V216c0 4.42-3.58 8-8 8h-3.06c-3.03 0-5.8-1.71-7.15-4.42-1.56-3.12-5.96-3.29-7.76-.3l-17.37 28.95zM408 358.43c0 4.24-1.69 8.31-4.69 11.31l-9.57 9.57c-3 3-7.07 4.69-11.31 4.69h-15.16c-4.24 0-8.31-1.69-11.31-4.69l-13.01-13.01a26.767 26.767 0 0 0-25.42-7.04l-21.27 5.32c-1.27.32-2.57.48-3.88.48h-10.34c-4.24 0-8.31-1.69-11.31-4.69l-11.91-11.91a8.008 8.008 0 0 1-2.34-5.66v-10.2c0-3.27 1.99-6.21 5.03-7.43l39.34-15.74c1.98-.79 3.86-1.82 5.59-3.05l23.71-16.89a7.978 7.978 0 0 1 4.64-1.48h12.09c3.23 0 6.15 1.94 7.39 4.93l5.35 12.85a4 4 0 0 0 3.69 2.46h3.8c1.78 0 3.35-1.18 3.84-2.88l4.2-14.47c.5-1.71 2.06-2.88 3.84-2.88h6.06c2.21 0 4 1.79 4 4v12.93c0 2.12.84 4.16 2.34 5.66l11.91 11.91c3 3 4.69 7.07 4.69 11.31v24.6z\"]\n};\nvar faGlobeEurope = {\n  prefix: 'fas',\n  iconName: 'globe-europe',\n  icon: [496, 512, [], \"f7a2\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm200 248c0 22.5-3.9 44.2-10.8 64.4h-20.3c-4.3 0-8.4-1.7-11.4-4.8l-32-32.6c-4.5-4.6-4.5-12.1.1-16.7l12.5-12.5v-8.7c0-3-1.2-5.9-3.3-8l-9.4-9.4c-2.1-2.1-5-3.3-8-3.3h-16c-6.2 0-11.3-5.1-11.3-11.3 0-3 1.2-5.9 3.3-8l9.4-9.4c2.1-2.1 5-3.3 8-3.3h32c6.2 0 11.3-5.1 11.3-11.3v-9.4c0-6.2-5.1-11.3-11.3-11.3h-36.7c-8.8 0-16 7.2-16 16v4.5c0 6.9-4.4 13-10.9 15.2l-31.6 10.5c-3.3 1.1-5.5 4.1-5.5 7.6v2.2c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8s-3.6-8-8-8H247c-3 0-5.8 1.7-7.2 4.4l-9.4 18.7c-2.7 5.4-8.2 8.8-14.3 8.8H194c-8.8 0-16-7.2-16-16V199c0-4.2 1.7-8.3 4.7-11.3l20.1-20.1c4.6-4.6 7.2-10.9 7.2-17.5 0-3.4 2.2-6.5 5.5-7.6l40-13.3c1.7-.6 3.2-1.5 4.4-2.7l26.8-26.8c2.1-2.1 3.3-5 3.3-8 0-6.2-5.1-11.3-11.3-11.3H258l-16 16v8c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8v-20c0-2.5 1.2-4.9 3.2-6.4l28.9-21.7c1.9-.1 3.8-.3 5.7-.3C358.3 56 448 145.7 448 256zM130.1 149.1c0-3 1.2-5.9 3.3-8l25.4-25.4c2.1-2.1 5-3.3 8-3.3 6.2 0 11.3 5.1 11.3 11.3v16c0 3-1.2 5.9-3.3 8l-9.4 9.4c-2.1 2.1-5 3.3-8 3.3h-16c-6.2 0-11.3-5.1-11.3-11.3zm128 306.4v-7.1c0-8.8-7.2-16-16-16h-20.2c-10.8 0-26.7-5.3-35.4-11.8l-22.2-16.7c-11.5-8.6-18.2-22.1-18.2-36.4v-23.9c0-16 8.4-30.8 22.1-39l42.9-25.7c7.1-4.2 15.2-6.5 23.4-6.5h31.2c10.9 0 21.4 3.9 29.6 10.9l43.2 37.1h18.3c8.5 0 16.6 3.4 22.6 9.4l17.3 17.3c3.4 3.4 8.1 5.3 12.9 5.3H423c-32.4 58.9-93.8 99.5-164.9 103.1z\"]\n};\nvar faGolfBall = {\n  prefix: 'fas',\n  iconName: 'golf-ball',\n  icon: [416, 512, [], \"f450\", \"M96 416h224c0 17.7-14.3 32-32 32h-16c-17.7 0-32 14.3-32 32v20c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-20c0-17.7-14.3-32-32-32h-16c-17.7 0-32-14.3-32-32zm320-208c0 74.2-39 139.2-97.5 176h-221C39 347.2 0 282.2 0 208 0 93.1 93.1 0 208 0s208 93.1 208 208zm-180.1 43.9c18.3 0 33.1-14.8 33.1-33.1 0-14.4-9.3-26.3-22.1-30.9 9.6 26.8-15.6 51.3-41.9 41.9 4.6 12.8 16.5 22.1 30.9 22.1zm49.1 46.9c0-14.4-9.3-26.3-22.1-30.9 9.6 26.8-15.6 51.3-41.9 41.9 4.6 12.8 16.5 22.1 30.9 22.1 18.3 0 33.1-14.9 33.1-33.1zm64-64c0-14.4-9.3-26.3-22.1-30.9 9.6 26.8-15.6 51.3-41.9 41.9 4.6 12.8 16.5 22.1 30.9 22.1 18.3 0 33.1-14.9 33.1-33.1z\"]\n};\nvar faGopuram = {\n  prefix: 'fas',\n  iconName: 'gopuram',\n  icon: [512, 512, [], \"f664\", \"M496 352h-16V240c0-8.8-7.2-16-16-16h-16v-80c0-8.8-7.2-16-16-16h-16V16c0-8.8-7.2-16-16-16s-16 7.2-16 16v16h-64V16c0-8.8-7.2-16-16-16s-16 7.2-16 16v16h-64V16c0-8.8-7.2-16-16-16s-16 7.2-16 16v16h-64V16c0-8.8-7.2-16-16-16S96 7.2 96 16v112H80c-8.8 0-16 7.2-16 16v80H48c-8.8 0-16 7.2-16 16v112H16c-8.8 0-16 7.2-16 16v128c0 8.8 7.2 16 16 16h80V352h32V224h32v-96h32v96h-32v128h-32v160h80v-80c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16v80h80V352h-32V224h-32v-96h32v96h32v128h32v160h80c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16zM232 176c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v48h-48zm56 176h-64v-64c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16z\"]\n};\nvar faGraduationCap = {\n  prefix: 'fas',\n  iconName: 'graduation-cap',\n  icon: [640, 512, [], \"f19d\", \"M622.34 153.2L343.4 67.5c-15.2-4.67-31.6-4.67-46.79 0L17.66 153.2c-23.54 7.23-23.54 38.36 0 45.59l48.63 14.94c-10.67 13.19-17.23 29.28-17.88 46.9C38.78 266.15 32 276.11 32 288c0 10.78 5.68 19.85 13.86 25.65L20.33 428.53C18.11 438.52 25.71 448 35.94 448h56.11c10.24 0 17.84-9.48 15.62-19.47L82.14 313.65C90.32 307.85 96 298.78 96 288c0-11.57-6.47-21.25-15.66-26.87.76-15.02 8.44-28.3 20.69-36.72L296.6 284.5c9.06 2.78 26.44 6.25 46.79 0l278.95-85.7c23.55-7.24 23.55-38.36 0-45.6zM352.79 315.09c-28.53 8.76-52.84 3.92-65.59 0l-145.02-44.55L128 384c0 35.35 85.96 64 192 64s192-28.65 192-64l-14.18-113.47-145.03 44.56z\"]\n};\nvar faGreaterThan = {\n  prefix: 'fas',\n  iconName: 'greater-than',\n  icon: [384, 512, [], \"f531\", \"M365.52 209.85L59.22 67.01c-16.06-7.49-35.15-.54-42.64 15.52L3.01 111.61c-7.49 16.06-.54 35.15 15.52 42.64L236.96 256.1 18.49 357.99C2.47 365.46-4.46 384.5 3.01 400.52l13.52 29C24 445.54 43.04 452.47 59.06 445l306.47-142.91a32.003 32.003 0 0 0 18.48-29v-34.23c-.01-12.45-7.21-23.76-18.49-29.01z\"]\n};\nvar faGreaterThanEqual = {\n  prefix: 'fas',\n  iconName: 'greater-than-equal',\n  icon: [448, 512, [], \"f532\", \"M55.22 107.69l175.56 68.09-175.44 68.05c-18.39 6.03-27.88 24.39-21.2 41l12.09 30.08c6.68 16.61 26.99 25.19 45.38 19.15L393.02 214.2c13.77-4.52 22.98-16.61 22.98-30.17v-15.96c0-13.56-9.21-25.65-22.98-30.17L91.3 17.92c-18.29-6-38.51 2.53-45.15 19.06L34.12 66.9c-6.64 16.53 2.81 34.79 21.1 40.79zM424 400H24c-13.25 0-24 10.74-24 24v48c0 13.25 10.75 24 24 24h400c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24z\"]\n};\nvar faGrimace = {\n  prefix: 'fas',\n  iconName: 'grimace',\n  icon: [496, 512, [], \"f57f\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM144 400h-8c-17.7 0-32-14.3-32-32v-8h40v40zm0-56h-40v-8c0-17.7 14.3-32 32-32h8v40zm-8-136c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm72 192h-48v-40h48v40zm0-56h-48v-40h48v40zm64 56h-48v-40h48v40zm0-56h-48v-40h48v40zm64 56h-48v-40h48v40zm0-56h-48v-40h48v40zm-8-104c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm64 128c0 17.7-14.3 32-32 32h-8v-40h40v8zm0-24h-40v-40h8c17.7 0 32 14.3 32 32v8z\"]\n};\nvar faGrin = {\n  prefix: 'fas',\n  iconName: 'grin',\n  icon: [496, 512, [], \"f580\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm80 256c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.3-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.3-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z\"]\n};\nvar faGrinAlt = {\n  prefix: 'fas',\n  iconName: 'grin-alt',\n  icon: [496, 512, [], \"f581\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm63.7 128.7c7.6-11.4 24.7-11.7 32.7 0 12.4 18.4 15.1 36.9 15.7 55.3-.5 18.4-3.3 36.9-15.7 55.3-7.6 11.4-24.7 11.7-32.7 0-12.4-18.4-15.1-36.9-15.7-55.3.5-18.4 3.3-36.9 15.7-55.3zm-160 0c7.6-11.4 24.7-11.7 32.7 0 12.4 18.4 15.1 36.9 15.7 55.3-.5 18.4-3.3 36.9-15.7 55.3-7.6 11.4-24.7 11.7-32.7 0-12.4-18.4-15.1-36.9-15.7-55.3.5-18.4 3.3-36.9 15.7-55.3zM248 432c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.3-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z\"]\n};\nvar faGrinBeam = {\n  prefix: 'fas',\n  iconName: 'grin-beam',\n  icon: [496, 512, [], \"f582\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 144c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.1 7.3-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm-160 0c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm80 280c-60.6 0-134.5-38.3-143.8-93.3-2-11.9 9.4-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z\"]\n};\nvar faGrinBeamSweat = {\n  prefix: 'fas',\n  iconName: 'grin-beam-sweat',\n  icon: [504, 512, [], \"f583\", \"M456 128c26.5 0 48-21 48-47 0-20-28.5-60.4-41.6-77.8-3.2-4.3-9.6-4.3-12.8 0C436.5 20.6 408 61 408 81c0 26 21.5 47 48 47zm0 32c-44.1 0-80-35.4-80-79 0-4.4.3-14.2 8.1-32.2C345 23.1 298.3 8 248 8 111 8 0 119 0 256s111 248 248 248 248-111 248-248c0-35.1-7.4-68.4-20.5-98.6-6.3 1.5-12.7 2.6-19.5 2.6zm-128-8c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 12-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.1 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm-160 0c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 12-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm80 280c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.3-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.5-3.7 22.6 6.2 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z\"]\n};\nvar faGrinHearts = {\n  prefix: 'fas',\n  iconName: 'grin-hearts',\n  icon: [496, 512, [], \"f584\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM90.4 183.6c6.7-17.6 26.7-26.7 44.9-21.9l7.1 1.9 2-7.1c5-18.1 22.8-30.9 41.5-27.9 21.4 3.4 34.4 24.2 28.8 44.5L195.3 243c-1.2 4.5-5.9 7.2-10.5 6l-70.2-18.2c-20.4-5.4-31.9-27-24.2-47.2zM248 432c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.2-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.6 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3zm133.4-201.3l-70.2 18.2c-4.5 1.2-9.2-1.5-10.5-6L281.3 173c-5.6-20.3 7.4-41.1 28.8-44.5 18.6-3 36.4 9.8 41.5 27.9l2 7.1 7.1-1.9c18.2-4.7 38.2 4.3 44.9 21.9 7.7 20.3-3.8 41.9-24.2 47.2z\"]\n};\nvar faGrinSquint = {\n  prefix: 'fas',\n  iconName: 'grin-squint',\n  icon: [496, 512, [], \"f585\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm33.8 189.7l80-48c11.6-6.9 24 7.7 15.4 18L343.6 208l33.6 40.3c8.7 10.4-3.9 24.8-15.4 18l-80-48c-7.7-4.7-7.7-15.9 0-20.6zm-163-30c-8.6-10.3 3.8-24.9 15.4-18l80 48c7.8 4.7 7.8 15.9 0 20.6l-80 48c-11.5 6.8-24-7.6-15.4-18l33.6-40.3-33.6-40.3zM248 432c-60.6 0-134.5-38.3-143.8-93.3-2-11.9 9.4-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.5-3.7 22.6 6.2 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z\"]\n};\nvar faGrinSquintTears = {\n  prefix: 'fas',\n  iconName: 'grin-squint-tears',\n  icon: [512, 512, [], \"f586\", \"M409.6 111.9c22.6-3.2 73.5-12 88.3-26.8 19.2-19.2 18.9-50.6-.7-70.2S446-5 426.9 14.2c-14.8 14.8-23.5 65.7-26.8 88.3-.8 5.5 3.9 10.2 9.5 9.4zM102.4 400.1c-22.6 3.2-73.5 12-88.3 26.8-19.1 19.1-18.8 50.6.8 70.2s51 19.9 70.2.7c14.8-14.8 23.5-65.7 26.8-88.3.8-5.5-3.9-10.2-9.5-9.4zm311.7-256.5c-33 3.9-48.6-25.1-45.7-45.7 3.4-24 7.4-42.1 11.5-56.5C285.1-13.4 161.8-.5 80.6 80.6-.5 161.7-13.4 285 41.4 379.9c14.4-4.1 32.4-8 56.5-11.5 33.2-3.9 48.6 25.2 45.7 45.7-3.4 24-7.4 42.1-11.5 56.5 94.8 54.8 218.1 41.9 299.3-39.2s94-204.4 39.2-299.3c-14.4 4.1-32.5 8-56.5 11.5zM255.7 106c3.3-13.2 22.4-11.5 23.6 1.8l4.8 52.3 52.3 4.8c13.4 1.2 14.9 20.3 1.8 23.6l-90.5 22.6c-8.9 2.2-16.7-5.9-14.5-14.5l22.5-90.6zm-90.9 230.3L160 284l-52.3-4.8c-13.4-1.2-14.9-20.3-1.8-23.6l90.5-22.6c8.8-2.2 16.7 5.8 14.5 14.5L188.3 338c-3.1 13.2-22.2 11.7-23.5-1.7zm215.7 44.2c-29.3 29.3-75.7 50.4-116.7 50.4-18.9 0-36.6-4.5-51-14.7-9.8-6.9-8.7-21.8 2-27.2 28.3-14.6 63.9-42.4 97.8-76.3s61.7-69.6 76.3-97.8c5.4-10.5 20.2-11.9 27.3-2 32.3 45.3 7.1 124.7-35.7 167.6z\"]\n};\nvar faGrinStars = {\n  prefix: 'fas',\n  iconName: 'grin-stars',\n  icon: [496, 512, [], \"f587\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM94.6 168.9l34.9-5 15.5-31.6c2.9-5.8 11-5.8 13.9 0l15.5 31.6 34.9 5c6.2 1 8.9 8.6 4.3 13.2l-25.4 24.6 6 34.9c1 6.2-5.3 11-11 7.9L152 233.3l-31.3 16.3c-5.7 3.1-12-1.7-11-7.9l6-34.9-25.4-24.6c-4.6-4.7-1.9-12.3 4.3-13.3zM248 432c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.3-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.5-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3zm157.7-249.9l-25.4 24.6 6 34.9c1 6.2-5.3 11-11 7.9L344 233.3l-31.3 16.3c-5.7 3.1-12-1.7-11-7.9l6-34.9-25.4-24.6c-4.5-4.6-1.9-12.2 4.3-13.2l34.9-5 15.5-31.6c2.9-5.8 11-5.8 13.9 0l15.5 31.6 34.9 5c6.3.9 9 8.5 4.4 13.1z\"]\n};\nvar faGrinTears = {\n  prefix: 'fas',\n  iconName: 'grin-tears',\n  icon: [640, 512, [], \"f588\", \"M102.4 256.1c-22.6 3.2-73.5 12-88.3 26.8-19.1 19.1-18.8 50.6.8 70.2s51 19.9 70.2.7c14.8-14.8 23.5-65.7 26.8-88.3.8-5.5-3.9-10.2-9.5-9.4zm523.4 26.8c-14.8-14.8-65.7-23.5-88.3-26.8-5.5-.8-10.3 3.9-9.5 9.5 3.2 22.6 12 73.5 26.8 88.3 19.2 19.2 50.6 18.9 70.2-.7s20-51.2.8-70.3zm-129.4-12.8c-3.8-26.6 19.1-49.5 45.7-45.7 8.9 1.3 16.8 2.7 24.3 4.1C552.7 104.5 447.7 8 320 8S87.3 104.5 73.6 228.5c7.5-1.4 15.4-2.8 24.3-4.1 33.2-3.9 48.6 25.3 45.7 45.7-11.8 82.3-29.9 100.4-35.8 106.4-.9.9-2 1.6-3 2.5 42.7 74.6 123 125 215.2 125s172.5-50.4 215.2-125.1c-1-.9-2.1-1.5-3-2.5-5.9-5.9-24-24-35.8-106.3zM400 152c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 12-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm-160 0c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 12-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm80 280c-60.6 0-134.5-38.3-143.8-93.3-2-11.7 9.2-21.6 20.7-17.9C227.1 330.5 272 336 320 336s92.9-5.5 123.1-15.2c11.4-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z\"]\n};\nvar faGrinTongue = {\n  prefix: 'fas',\n  iconName: 'grin-tongue',\n  icon: [496, 512, [], \"f589\", \"M248 8C111 8 0 119 0 256c0 106.3 67 196.7 161 232-5.6-12.2-9-25.7-9-40v-45.5c-24.7-16.2-43.5-38.1-47.8-63.8-2-11.8 9.3-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.6 22.6 6.1 20.7 17.9-4.3 25.7-23.1 47.6-47.8 63.8V448c0 14.3-3.4 27.8-9 40 94-35.3 161-125.7 161-232C496 119 385 8 248 8zm-80 232c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm160 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm-34.9 134.6c-14.4-6.5-31.1 2.2-34.6 17.6l-1.8 7.8c-2.1 9.2-15.2 9.2-17.3 0l-1.8-7.8c-3.5-15.4-20.2-24.1-34.6-17.6-.9.4.3-.2-18.9 9.4v63c0 35.2 28 64.5 63.1 64.9 35.7.5 64.9-28.4 64.9-64v-64c-19.5-9.6-18.2-8.9-19-9.3z\"]\n};\nvar faGrinTongueSquint = {\n  prefix: 'fas',\n  iconName: 'grin-tongue-squint',\n  icon: [496, 512, [], \"f58a\", \"M293.1 374.6c-14.4-6.5-31.1 2.2-34.6 17.6l-1.8 7.8c-2.1 9.2-15.2 9.2-17.3 0l-1.8-7.8c-3.5-15.4-20.2-24.1-34.6-17.6-.9.4.3-.2-18.9 9.4v63c0 35.2 28 64.5 63.1 64.9 35.7.5 64.9-28.4 64.9-64v-64c-19.5-9.6-18.2-8.9-19-9.3zM248 8C111 8 0 119 0 256c0 106.3 67 196.7 161 232-5.6-12.2-9-25.7-9-40v-45.5c-24.7-16.2-43.5-38.1-47.8-63.8-2-11.8 9.2-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.7 22.6 6.1 20.7 17.9-4.3 25.7-23.1 47.6-47.8 63.8V448c0 14.3-3.4 27.8-9 40 94-35.3 161-125.7 161-232C496 119 385 8 248 8zm-33.8 210.3l-80 48c-11.5 6.8-24-7.6-15.4-18l33.6-40.3-33.6-40.3c-8.6-10.3 3.8-24.9 15.4-18l80 48c7.7 4.7 7.7 15.9 0 20.6zm163 30c8.7 10.4-3.9 24.8-15.4 18l-80-48c-7.8-4.7-7.8-15.9 0-20.6l80-48c11.7-6.9 23.9 7.7 15.4 18L343.6 208l33.6 40.3z\"]\n};\nvar faGrinTongueWink = {\n  prefix: 'fas',\n  iconName: 'grin-tongue-wink',\n  icon: [496, 512, [], \"f58b\", \"M344 184c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zM248 8C111 8 0 119 0 256c0 106.3 67 196.7 161 232-5.6-12.2-9-25.7-9-40v-45.5c-24.7-16.2-43.5-38.1-47.8-63.8-2-11.8 9.3-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.5-3.7 22.6 6.1 20.7 17.9-4.3 25.7-23.1 47.6-47.8 63.8V448c0 14.3-3.4 27.8-9 40 94-35.3 161-125.7 161-232C496 119 385 8 248 8zm-56 225l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L112 233c-8.5 7.4-21.6.3-19.8-10.8 4-25.2 34.2-42.1 59.9-42.1S208 197 212 222.2c1.6 11.1-11.6 18.2-20 10.8zm152 39c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64zm-50.9 102.6c-14.4-6.5-31.1 2.2-34.6 17.6l-1.8 7.8c-2.1 9.2-15.2 9.2-17.3 0l-1.8-7.8c-3.5-15.4-20.2-24.1-34.6-17.6-.9.4.3-.2-18.9 9.4v63c0 35.2 28 64.5 63.1 64.9 35.7.5 64.9-28.4 64.9-64v-64c-19.5-9.6-18.2-8.9-19-9.3z\"]\n};\nvar faGrinWink = {\n  prefix: 'fas',\n  iconName: 'grin-wink',\n  icon: [496, 512, [], \"f58c\", \"M0 256c0 137 111 248 248 248s248-111 248-248S385 8 248 8 0 119 0 256zm200-48c0 17.7-14.3 32-32 32s-32-14.3-32-32 14.3-32 32-32 32 14.3 32 32zm168 25l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L288 233c-8.3 7.4-21.6.4-19.8-10.8 4-25.2 34.2-42.1 59.9-42.1S384 197 388 222.2c1.6 11-11.5 18.2-20 10.8zm-243.1 87.8C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.3-3.7 22.6 6 20.7 17.9-9.2 55-83.2 93.3-143.8 93.3s-134.5-38.3-143.8-93.3c-2-11.9 9.3-21.6 20.7-17.9z\"]\n};\nvar faGripHorizontal = {\n  prefix: 'fas',\n  iconName: 'grip-horizontal',\n  icon: [448, 512, [], \"f58d\", \"M96 288H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm160 0h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm160 0h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zM96 96H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm160 0h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm160 0h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32z\"]\n};\nvar faGripLines = {\n  prefix: 'fas',\n  iconName: 'grip-lines',\n  icon: [512, 512, [], \"f7a4\", \"M496 288H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h480c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm0-128H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h480c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16z\"]\n};\nvar faGripLinesVertical = {\n  prefix: 'fas',\n  iconName: 'grip-lines-vertical',\n  icon: [256, 512, [], \"f7a5\", \"M96 496V16c0-8.8-7.2-16-16-16H48c-8.8 0-16 7.2-16 16v480c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16zm128 0V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v480c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16z\"]\n};\nvar faGripVertical = {\n  prefix: 'fas',\n  iconName: 'grip-vertical',\n  icon: [320, 512, [], \"f58e\", \"M96 32H32C14.33 32 0 46.33 0 64v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32zm0 160H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm0 160H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zM288 32h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32zm0 160h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm0 160h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32z\"]\n};\nvar faGuitar = {\n  prefix: 'fas',\n  iconName: 'guitar',\n  icon: [512, 512, [], \"f7a6\", \"M502.63 39L473 9.37a32 32 0 0 0-45.26 0L381.46 55.7a35.14 35.14 0 0 0-8.53 13.79L360.77 106l-76.26 76.26c-12.16-8.76-25.5-15.74-40.1-19.14-33.45-7.78-67-.88-89.88 22a82.45 82.45 0 0 0-20.24 33.47c-6 18.56-23.21 32.69-42.15 34.46-23.7 2.27-45.73 11.45-62.61 28.44C-16.11 327-7.9 409 47.58 464.45S185 528 230.56 482.52c17-16.88 26.16-38.9 28.45-62.71 1.76-18.85 15.89-36.13 34.43-42.14a82.6 82.6 0 0 0 33.48-20.25c22.87-22.88 29.74-56.36 22-89.75-3.39-14.64-10.37-28-19.16-40.2L406 151.23l36.48-12.16a35.14 35.14 0 0 0 13.79-8.53l46.33-46.32a32 32 0 0 0 .03-45.22zM208 352a48 48 0 1 1 48-48 48 48 0 0 1-48 48z\"]\n};\nvar faHSquare = {\n  prefix: 'fas',\n  iconName: 'h-square',\n  icon: [448, 512, [], \"f0fd\", \"M448 80v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48zm-112 48h-32c-8.837 0-16 7.163-16 16v80H160v-80c0-8.837-7.163-16-16-16h-32c-8.837 0-16 7.163-16 16v224c0 8.837 7.163 16 16 16h32c8.837 0 16-7.163 16-16v-80h128v80c0 8.837 7.163 16 16 16h32c8.837 0 16-7.163 16-16V144c0-8.837-7.163-16-16-16z\"]\n};\nvar faHamburger = {\n  prefix: 'fas',\n  iconName: 'hamburger',\n  icon: [512, 512, [], \"f805\", \"M464 256H48a48 48 0 0 0 0 96h416a48 48 0 0 0 0-96zm16 128H32a16 16 0 0 0-16 16v16a64 64 0 0 0 64 64h352a64 64 0 0 0 64-64v-16a16 16 0 0 0-16-16zM58.64 224h394.72c34.57 0 54.62-43.9 34.82-75.88C448 83.2 359.55 32.1 256 32c-103.54.1-192 51.2-232.18 116.11C4 180.09 24.07 224 58.64 224zM384 112a16 16 0 1 1-16 16 16 16 0 0 1 16-16zM256 80a16 16 0 1 1-16 16 16 16 0 0 1 16-16zm-128 32a16 16 0 1 1-16 16 16 16 0 0 1 16-16z\"]\n};\nvar faHammer = {\n  prefix: 'fas',\n  iconName: 'hammer',\n  icon: [576, 512, [], \"f6e3\", \"M571.31 193.94l-22.63-22.63c-6.25-6.25-16.38-6.25-22.63 0l-11.31 11.31-28.9-28.9c5.63-21.31.36-44.9-16.35-61.61l-45.25-45.25c-62.48-62.48-163.79-62.48-226.28 0l90.51 45.25v18.75c0 16.97 6.74 33.25 18.75 45.25l49.14 49.14c16.71 16.71 40.3 21.98 61.61 16.35l28.9 28.9-11.31 11.31c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l90.51-90.51c6.23-6.24 6.23-16.37-.02-22.62zm-286.72-15.2c-3.7-3.7-6.84-7.79-9.85-11.95L19.64 404.96c-25.57 23.88-26.26 64.19-1.53 88.93s65.05 24.05 88.93-1.53l238.13-255.07c-3.96-2.91-7.9-5.87-11.44-9.41l-49.14-49.14z\"]\n};\nvar faHamsa = {\n  prefix: 'fas',\n  iconName: 'hamsa',\n  icon: [512, 512, [], \"f665\", \"M509.34 307.25C504.28 295.56 492.75 288 480 288h-64V80c0-22-18-40-40-40s-40 18-40 40v134c0 5.52-4.48 10-10 10h-20c-5.52 0-10-4.48-10-10V40c0-22-18-40-40-40s-40 18-40 40v174c0 5.52-4.48 10-10 10h-20c-5.52 0-10-4.48-10-10V80c0-22-18-40-40-40S96 58 96 80v208H32c-12.75 0-24.28 7.56-29.34 19.25a31.966 31.966 0 0 0 5.94 34.58l102.69 110.03C146.97 490.08 199.69 512 256 512s109.03-21.92 144.72-60.14L503.4 341.83a31.966 31.966 0 0 0 5.94-34.58zM256 416c-53.02 0-96-64-96-64s42.98-64 96-64 96 64 96 64-42.98 64-96 64zm0-96c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32z\"]\n};\nvar faHandHolding = {\n  prefix: 'fas',\n  iconName: 'hand-holding',\n  icon: [576, 512, [], \"f4bd\", \"M565.3 328.1c-11.8-10.7-30.2-10-42.6 0L430.3 402c-11.3 9.1-25.4 14-40 14H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h78.3c15.9 0 30.7-10.9 33.3-26.6 3.3-20-12.1-37.4-31.6-37.4H192c-27 0-53.1 9.3-74.1 26.3L71.4 384H16c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h356.8c14.5 0 28.6-4.9 40-14L564 377c15.2-12.1 16.4-35.3 1.3-48.9z\"]\n};\nvar faHandHoldingHeart = {\n  prefix: 'fas',\n  iconName: 'hand-holding-heart',\n  icon: [576, 512, [], \"f4be\", \"M275.3 250.5c7 7.4 18.4 7.4 25.5 0l108.9-114.2c31.6-33.2 29.8-88.2-5.6-118.8-30.8-26.7-76.7-21.9-104.9 7.7L288 36.9l-11.1-11.6C248.7-4.4 202.8-9.2 172 17.5c-35.3 30.6-37.2 85.6-5.6 118.8l108.9 114.2zm290 77.6c-11.8-10.7-30.2-10-42.6 0L430.3 402c-11.3 9.1-25.4 14-40 14H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h78.3c15.9 0 30.7-10.9 33.3-26.6 3.3-20-12.1-37.4-31.6-37.4H192c-27 0-53.1 9.3-74.1 26.3L71.4 384H16c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h356.8c14.5 0 28.6-4.9 40-14L564 377c15.2-12.1 16.4-35.3 1.3-48.9z\"]\n};\nvar faHandHoldingMedical = {\n  prefix: 'fas',\n  iconName: 'hand-holding-medical',\n  icon: [576, 512, [], \"e05c\", \"M159.88,175.82h64v64a16,16,0,0,0,16,16h64a16,16,0,0,0,16-16v-64h64a16,16,0,0,0,16-16v-64a16,16,0,0,0-16-16h-64v-64a16,16,0,0,0-16-16h-64a16,16,0,0,0-16,16v64h-64a16,16,0,0,0-16,16v64A16,16,0,0,0,159.88,175.82ZM568.07,336.13a39.91,39.91,0,0,0-55.93-8.47L392.47,415.84H271.86a16,16,0,0,1,0-32H350.1c16,0,30.75-10.87,33.37-26.61a32.06,32.06,0,0,0-31.62-37.38h-160a117.7,117.7,0,0,0-74.12,26.25l-46.5,37.74H15.87a16.11,16.11,0,0,0-16,16v96a16.11,16.11,0,0,0,16,16h347a104.8,104.8,0,0,0,61.7-20.27L559.6,392A40,40,0,0,0,568.07,336.13Z\"]\n};\nvar faHandHoldingUsd = {\n  prefix: 'fas',\n  iconName: 'hand-holding-usd',\n  icon: [576, 512, [], \"f4c0\", \"M271.06,144.3l54.27,14.3a8.59,8.59,0,0,1,6.63,8.1c0,4.6-4.09,8.4-9.12,8.4h-35.6a30,30,0,0,1-11.19-2.2c-5.24-2.2-11.28-1.7-15.3,2l-19,17.5a11.68,11.68,0,0,0-2.25,2.66,11.42,11.42,0,0,0,3.88,15.74,83.77,83.77,0,0,0,34.51,11.5V240c0,8.8,7.83,16,17.37,16h17.37c9.55,0,17.38-7.2,17.38-16V222.4c32.93-3.6,57.84-31,53.5-63-3.15-23-22.46-41.3-46.56-47.7L282.68,97.4a8.59,8.59,0,0,1-6.63-8.1c0-4.6,4.09-8.4,9.12-8.4h35.6A30,30,0,0,1,332,83.1c5.23,2.2,11.28,1.7,15.3-2l19-17.5A11.31,11.31,0,0,0,368.47,61a11.43,11.43,0,0,0-3.84-15.78,83.82,83.82,0,0,0-34.52-11.5V16c0-8.8-7.82-16-17.37-16H295.37C285.82,0,278,7.2,278,16V33.6c-32.89,3.6-57.85,31-53.51,63C227.63,119.6,247,137.9,271.06,144.3ZM565.27,328.1c-11.8-10.7-30.2-10-42.6,0L430.27,402a63.64,63.64,0,0,1-40,14H272a16,16,0,0,1,0-32h78.29c15.9,0,30.71-10.9,33.25-26.6a31.2,31.2,0,0,0,.46-5.46A32,32,0,0,0,352,320H192a117.66,117.66,0,0,0-74.1,26.29L71.4,384H16A16,16,0,0,0,0,400v96a16,16,0,0,0,16,16H372.77a64,64,0,0,0,40-14L564,377a32,32,0,0,0,1.28-48.9Z\"]\n};\nvar faHandHoldingWater = {\n  prefix: 'fas',\n  iconName: 'hand-holding-water',\n  icon: [576, 512, [], \"f4c1\", \"M288 256c53 0 96-42.1 96-94 0-40-57.1-120.7-83.2-155.6-6.4-8.5-19.2-8.5-25.6 0C249.1 41.3 192 122 192 162c0 51.9 43 94 96 94zm277.3 72.1c-11.8-10.7-30.2-10-42.6 0L430.3 402c-11.3 9.1-25.4 14-40 14H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h78.3c15.9 0 30.7-10.9 33.3-26.6 3.3-20-12.1-37.4-31.6-37.4H192c-27 0-53.1 9.3-74.1 26.3L71.4 384H16c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h356.8c14.5 0 28.6-4.9 40-14L564 377c15.2-12.1 16.4-35.3 1.3-48.9z\"]\n};\nvar faHandLizard = {\n  prefix: 'fas',\n  iconName: 'hand-lizard',\n  icon: [576, 512, [], \"f258\", \"M384 480h192V363.778a95.998 95.998 0 0 0-14.833-51.263L398.127 54.368A48 48 0 0 0 357.544 32H24C10.745 32 0 42.745 0 56v16c0 30.928 25.072 56 56 56h229.981c12.844 0 21.556 13.067 16.615 24.923l-21.41 51.385A32 32 0 0 1 251.648 224H128c-35.346 0-64 28.654-64 64v8c0 13.255 10.745 24 24 24h147.406a47.995 47.995 0 0 1 25.692 7.455l111.748 70.811A24.001 24.001 0 0 1 384 418.539V480z\"]\n};\nvar faHandMiddleFinger = {\n  prefix: 'fas',\n  iconName: 'hand-middle-finger',\n  icon: [512, 512, [], \"f806\", \"M479.93 317.12a37.33 37.33 0 0 0-28.28-36.19L416 272v-49.59c0-11.44-9.69-21.29-23.15-23.54l-38.4-6.4C336.63 189.5 320 200.86 320 216v32a8 8 0 0 1-16 0V50c0-26.28-20.25-49.2-46.52-50A48 48 0 0 0 208 48v200a8 8 0 0 1-16 0v-32c0-15.15-16.63-26.51-34.45-23.54l-30.68 5.12c-18 3-30.87 16.12-30.87 31.38V376a8 8 0 0 1-16 0v-76l-27.36 15A37.34 37.34 0 0 0 32 348.4v73.47a37.31 37.31 0 0 0 10.93 26.39l30.93 30.93A112 112 0 0 0 153.05 512h215A112 112 0 0 0 480 400z\"]\n};\nvar faHandPaper = {\n  prefix: 'fas',\n  iconName: 'hand-paper',\n  icon: [448, 512, [], \"f256\", \"M408.781 128.007C386.356 127.578 368 146.36 368 168.79V256h-8V79.79c0-22.43-18.356-41.212-40.781-40.783C297.488 39.423 280 57.169 280 79v177h-8V40.79C272 18.36 253.644-.422 231.219.007 209.488.423 192 18.169 192 40v216h-8V80.79c0-22.43-18.356-41.212-40.781-40.783C121.488 40.423 104 58.169 104 80v235.992l-31.648-43.519c-12.993-17.866-38.009-21.817-55.877-8.823-17.865 12.994-21.815 38.01-8.822 55.877l125.601 172.705A48 48 0 0 0 172.073 512h197.59c22.274 0 41.622-15.324 46.724-37.006l26.508-112.66a192.011 192.011 0 0 0 5.104-43.975V168c.001-21.831-17.487-39.577-39.218-39.993z\"]\n};\nvar faHandPeace = {\n  prefix: 'fas',\n  iconName: 'hand-peace',\n  icon: [448, 512, [], \"f25b\", \"M408 216c-22.092 0-40 17.909-40 40h-8v-32c0-22.091-17.908-40-40-40s-40 17.909-40 40v32h-8V48c0-26.51-21.49-48-48-48s-48 21.49-48 48v208h-13.572L92.688 78.449C82.994 53.774 55.134 41.63 30.461 51.324 5.787 61.017-6.356 88.877 3.337 113.551l74.765 190.342-31.09 24.872c-15.381 12.306-19.515 33.978-9.741 51.081l64 112A39.998 39.998 0 0 0 136 512h240c18.562 0 34.686-12.77 38.937-30.838l32-136A39.97 39.97 0 0 0 448 336v-80c0-22.091-17.908-40-40-40z\"]\n};\nvar faHandPointDown = {\n  prefix: 'fas',\n  iconName: 'hand-point-down',\n  icon: [384, 512, [], \"f0a7\", \"M91.826 467.2V317.966c-8.248 5.841-16.558 10.57-24.918 14.153C35.098 345.752-.014 322.222 0 288c.008-18.616 10.897-32.203 29.092-40 28.286-12.122 64.329-78.648 77.323-107.534 7.956-17.857 25.479-28.453 43.845-28.464l.001-.002h171.526c11.812 0 21.897 8.596 23.703 20.269 7.25 46.837 38.483 61.76 38.315 123.731-.007 2.724.195 13.254.195 16 0 50.654-22.122 81.574-71.263 72.6-9.297 18.597-39.486 30.738-62.315 16.45-21.177 24.645-53.896 22.639-70.944 6.299V467.2c0 24.15-20.201 44.8-43.826 44.8-23.283 0-43.826-21.35-43.826-44.8zM112 72V24c0-13.255 10.745-24 24-24h192c13.255 0 24 10.745 24 24v48c0 13.255-10.745 24-24 24H136c-13.255 0-24-10.745-24-24zm212-24c0-11.046-8.954-20-20-20s-20 8.954-20 20 8.954 20 20 20 20-8.954 20-20z\"]\n};\nvar faHandPointLeft = {\n  prefix: 'fas',\n  iconName: 'hand-point-left',\n  icon: [512, 512, [], \"f0a5\", \"M44.8 155.826h149.234c-5.841-8.248-10.57-16.558-14.153-24.918C166.248 99.098 189.778 63.986 224 64c18.616.008 32.203 10.897 40 29.092 12.122 28.286 78.648 64.329 107.534 77.323 17.857 7.956 28.453 25.479 28.464 43.845l.002.001v171.526c0 11.812-8.596 21.897-20.269 23.703-46.837 7.25-61.76 38.483-123.731 38.315-2.724-.007-13.254.195-16 .195-50.654 0-81.574-22.122-72.6-71.263-18.597-9.297-30.738-39.486-16.45-62.315-24.645-21.177-22.639-53.896-6.299-70.944H44.8c-24.15 0-44.8-20.201-44.8-43.826 0-23.283 21.35-43.826 44.8-43.826zM440 176h48c13.255 0 24 10.745 24 24v192c0 13.255-10.745 24-24 24h-48c-13.255 0-24-10.745-24-24V200c0-13.255 10.745-24 24-24zm24 212c11.046 0 20-8.954 20-20s-8.954-20-20-20-20 8.954-20 20 8.954 20 20 20z\"]\n};\nvar faHandPointRight = {\n  prefix: 'fas',\n  iconName: 'hand-point-right',\n  icon: [512, 512, [], \"f0a4\", \"M512 199.652c0 23.625-20.65 43.826-44.8 43.826h-99.851c16.34 17.048 18.346 49.766-6.299 70.944 14.288 22.829 2.147 53.017-16.45 62.315C353.574 425.878 322.654 448 272 448c-2.746 0-13.276-.203-16-.195-61.971.168-76.894-31.065-123.731-38.315C120.596 407.683 112 397.599 112 385.786V214.261l.002-.001c.011-18.366 10.607-35.889 28.464-43.845 28.886-12.994 95.413-49.038 107.534-77.323 7.797-18.194 21.384-29.084 40-29.092 34.222-.014 57.752 35.098 44.119 66.908-3.583 8.359-8.312 16.67-14.153 24.918H467.2c23.45 0 44.8 20.543 44.8 43.826zM96 200v192c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24V200c0-13.255 10.745-24 24-24h48c13.255 0 24 10.745 24 24zM68 368c0-11.046-8.954-20-20-20s-20 8.954-20 20 8.954 20 20 20 20-8.954 20-20z\"]\n};\nvar faHandPointUp = {\n  prefix: 'fas',\n  iconName: 'hand-point-up',\n  icon: [384, 512, [], \"f0a6\", \"M135.652 0c23.625 0 43.826 20.65 43.826 44.8v99.851c17.048-16.34 49.766-18.346 70.944 6.299 22.829-14.288 53.017-2.147 62.315 16.45C361.878 158.426 384 189.346 384 240c0 2.746-.203 13.276-.195 16 .168 61.971-31.065 76.894-38.315 123.731C343.683 391.404 333.599 400 321.786 400H150.261l-.001-.002c-18.366-.011-35.889-10.607-43.845-28.464C93.421 342.648 57.377 276.122 29.092 264 10.897 256.203.008 242.616 0 224c-.014-34.222 35.098-57.752 66.908-44.119 8.359 3.583 16.67 8.312 24.918 14.153V44.8c0-23.45 20.543-44.8 43.826-44.8zM136 416h192c13.255 0 24 10.745 24 24v48c0 13.255-10.745 24-24 24H136c-13.255 0-24-10.745-24-24v-48c0-13.255 10.745-24 24-24zm168 28c-11.046 0-20 8.954-20 20s8.954 20 20 20 20-8.954 20-20-8.954-20-20-20z\"]\n};\nvar faHandPointer = {\n  prefix: 'fas',\n  iconName: 'hand-pointer',\n  icon: [448, 512, [], \"f25a\", \"M448 240v96c0 3.084-.356 6.159-1.063 9.162l-32 136C410.686 499.23 394.562 512 376 512H168a40.004 40.004 0 0 1-32.35-16.473l-127.997-176c-12.993-17.866-9.043-42.883 8.822-55.876 17.867-12.994 42.884-9.043 55.877 8.823L104 315.992V40c0-22.091 17.908-40 40-40s40 17.909 40 40v200h8v-40c0-22.091 17.908-40 40-40s40 17.909 40 40v40h8v-24c0-22.091 17.908-40 40-40s40 17.909 40 40v24h8c0-22.091 17.908-40 40-40s40 17.909 40 40zm-256 80h-8v96h8v-96zm88 0h-8v96h8v-96zm88 0h-8v96h8v-96z\"]\n};\nvar faHandRock = {\n  prefix: 'fas',\n  iconName: 'hand-rock',\n  icon: [512, 512, [], \"f255\", \"M464.8 80c-26.9-.4-48.8 21.2-48.8 48h-8V96.8c0-26.3-20.9-48.3-47.2-48.8-26.9-.4-48.8 21.2-48.8 48v32h-8V80.8c0-26.3-20.9-48.3-47.2-48.8-26.9-.4-48.8 21.2-48.8 48v48h-8V96.8c0-26.3-20.9-48.3-47.2-48.8-26.9-.4-48.8 21.2-48.8 48v136l-8-7.1v-48.1c0-26.3-20.9-48.3-47.2-48.8C21.9 127.6 0 149.2 0 176v66.4c0 27.4 11.7 53.5 32.2 71.8l111.7 99.3c10.2 9.1 16.1 22.2 16.1 35.9v6.7c0 13.3 10.7 24 24 24h240c13.3 0 24-10.7 24-24v-2.9c0-12.8 2.6-25.5 7.5-37.3l49-116.3c5-11.8 7.5-24.5 7.5-37.3V128.8c0-26.3-20.9-48.4-47.2-48.8z\"]\n};\nvar faHandScissors = {\n  prefix: 'fas',\n  iconName: 'hand-scissors',\n  icon: [512, 512, [], \"f257\", \"M216 440c0-22.092 17.909-40 40-40v-8h-32c-22.091 0-40-17.908-40-40s17.909-40 40-40h32v-8H48c-26.51 0-48-21.49-48-48s21.49-48 48-48h208v-13.572l-177.551-69.74c-24.674-9.694-36.818-37.555-27.125-62.228 9.693-24.674 37.554-36.817 62.228-27.124l190.342 74.765 24.872-31.09c12.306-15.381 33.978-19.515 51.081-9.741l112 64A40.002 40.002 0 0 1 512 168v240c0 18.562-12.77 34.686-30.838 38.937l-136 32A39.982 39.982 0 0 1 336 480h-80c-22.091 0-40-17.908-40-40z\"]\n};\nvar faHandSparkles = {\n  prefix: 'fas',\n  iconName: 'hand-sparkles',\n  icon: [640, 512, [], \"e05d\", \"M106.66,170.64l.09,0,49.55-20.65a7.32,7.32,0,0,0,3.68-6h0a7.29,7.29,0,0,0-3.68-6l-49.57-20.67-.07,0L86,67.68a6.66,6.66,0,0,0-11.92,0l-20.7,49.63-.05,0L3.7,138A7.29,7.29,0,0,0,0,144H0a7.32,7.32,0,0,0,3.68,6L53.27,170.6l.07,0L74,220.26a6.65,6.65,0,0,0,11.92,0l20.69-49.62ZM471.38,467.41l-1-.42-1-.5a38.67,38.67,0,0,1,0-69.14l1-.49,1-.43,37.49-15.63,15.63-37.48.41-1,.47-.95c3.85-7.74,10.58-13.63,18.35-17.34,0-1.33.25-2.69.27-4V144a32,32,0,0,0-64,0v72a8,8,0,0,1-8,8H456a8,8,0,0,1-8-8V64a32,32,0,0,0-64,0V216a8,8,0,0,1-8,8H360a8,8,0,0,1-8-8V32a32,32,0,0,0-64,0V216a8,8,0,0,1-8,8H264a8,8,0,0,1-8-8V64a32,32,0,0,0-64,0v241l-23.59-32.49a40,40,0,0,0-64.71,47.09L229.3,492.21A48.07,48.07,0,0,0,268.09,512H465.7c19.24,0,35.65-11.73,43.24-28.79l-.07-.17ZM349.79,339.52,320,351.93l-12.42,29.78a4,4,0,0,1-7.15,0L288,351.93l-29.79-12.41a4,4,0,0,1,0-7.16L288,319.94l12.42-29.78a4,4,0,0,1,7.15,0L320,319.94l29.79,12.42a4,4,0,0,1,0,7.16ZM640,431.91a7.28,7.28,0,0,0-3.68-6l-49.57-20.67-.07,0L566,355.63a6.66,6.66,0,0,0-11.92,0l-20.7,49.63-.05,0L483.7,426a7.28,7.28,0,0,0-3.68,6h0a7.29,7.29,0,0,0,3.68,5.95l49.57,20.67.07,0L554,508.21a6.65,6.65,0,0,0,11.92,0l20.69-49.62h0l.09,0,49.55-20.66a7.29,7.29,0,0,0,3.68-5.95h0Z\"]\n};\nvar faHandSpock = {\n  prefix: 'fas',\n  iconName: 'hand-spock',\n  icon: [512, 512, [], \"f259\", \"M510.9005,145.27027,442.604,432.09391A103.99507,103.99507,0,0,1,341.43745,512H214.074a135.96968,135.96968,0,0,1-93.18489-36.95291L12.59072,373.12723a39.992,39.992,0,0,1,54.8122-58.24988l60.59342,57.02528v0a283.24849,283.24849,0,0,0-11.6703-80.46734L73.63726,147.36011a40.00575,40.00575,0,1,1,76.71833-22.7187l37.15458,125.39477a8.33113,8.33113,0,0,0,16.05656-4.4414L153.26183,49.95406A39.99638,39.99638,0,1,1,230.73015,30.0166l56.09491,218.15825a10.42047,10.42047,0,0,0,20.30018-.501L344.80766,63.96966a40.052,40.052,0,0,1,51.30245-30.0893c19.86073,6.2998,30.86262,27.67378,26.67564,48.08487l-33.83869,164.966a7.55172,7.55172,0,0,0,14.74406,3.2666l29.3973-123.45874a39.99414,39.99414,0,1,1,77.81208,18.53121Z\"]\n};\nvar faHands = {\n  prefix: 'fas',\n  iconName: 'hands',\n  icon: [640, 512, [], \"f4c2\", \"M204.8 230.4c-10.6-14.1-30.7-17-44.8-6.4-14.1 10.6-17 30.7-6.4 44.8l38.1 50.8c4.8 6.4 4.1 15.3-1.5 20.9l-12.8 12.8c-6.7 6.7-17.6 6.2-23.6-1.1L64 244.4V96c0-17.7-14.3-32-32-32S0 78.3 0 96v218.4c0 10.9 3.7 21.5 10.5 30l104.1 134.3c5 6.5 8.4 13.9 10.4 21.7 1.8 6.9 8.1 11.6 15.3 11.6H272c8.8 0 16-7.2 16-16V384c0-27.7-9-54.6-25.6-76.8l-57.6-76.8zM608 64c-17.7 0-32 14.3-32 32v148.4l-89.8 107.8c-6 7.2-17 7.7-23.6 1.1l-12.8-12.8c-5.6-5.6-6.3-14.5-1.5-20.9l38.1-50.8c10.6-14.1 7.7-34.2-6.4-44.8-14.1-10.6-34.2-7.7-44.8 6.4l-57.6 76.8C361 329.4 352 356.3 352 384v112c0 8.8 7.2 16 16 16h131.7c7.1 0 13.5-4.7 15.3-11.6 2-7.8 5.4-15.2 10.4-21.7l104.1-134.3c6.8-8.5 10.5-19.1 10.5-30V96c0-17.7-14.3-32-32-32z\"]\n};\nvar faHandsHelping = {\n  prefix: 'fas',\n  iconName: 'hands-helping',\n  icon: [640, 512, [], \"f4c4\", \"M488 192H336v56c0 39.7-32.3 72-72 72s-72-32.3-72-72V126.4l-64.9 39C107.8 176.9 96 197.8 96 220.2v47.3l-80 46.2C.7 322.5-4.6 342.1 4.3 357.4l80 138.6c8.8 15.3 28.4 20.5 43.7 11.7L231.4 448H368c35.3 0 64-28.7 64-64h16c17.7 0 32-14.3 32-32v-64h8c13.3 0 24-10.7 24-24v-48c0-13.3-10.7-24-24-24zm147.7-37.4L555.7 16C546.9.7 527.3-4.5 512 4.3L408.6 64H306.4c-12 0-23.7 3.4-33.9 9.7L239 94.6c-9.4 5.8-15 16.1-15 27.1V248c0 22.1 17.9 40 40 40s40-17.9 40-40v-88h184c30.9 0 56 25.1 56 56v28.5l80-46.2c15.3-8.9 20.5-28.4 11.7-43.7z\"]\n};\nvar faHandsWash = {\n  prefix: 'fas',\n  iconName: 'hands-wash',\n  icon: [576, 512, [], \"e05e\", \"M496,224a48,48,0,1,0-48-48A48,48,0,0,0,496,224ZM311.47,178.45A56.77,56.77,0,0,1,328,176a56,56,0,0,1,19,3.49l15.35-48.61A24,24,0,0,0,342,99.74c-11.53-1.35-22.21,6.44-25.71,17.51l-20.9,66.17ZM93.65,386.33c.8-.19,1.54-.54,2.35-.71V359.93a156,156,0,0,1,107.06-148l73.7-22.76L310.92,81.05a24,24,0,0,0-20.33-31.11c-11.53-1.34-22.22,6.45-25.72,17.52L231.42,173.88a8,8,0,0,1-15.26-4.83L259.53,31.26A24,24,0,0,0,239.2.15C227.67-1.19,217,6.6,213.49,17.66L165.56,169.37a8,8,0,1,1-15.26-4.82l38.56-122a24,24,0,0,0-20.33-31.11C157,10,146.32,17.83,142.82,28.9l-60,189.85L80.76,168.7A24,24,0,0,0,56.9,144.55c-13.23-.05-24.72,10.54-24.9,23.86V281.14A123.69,123.69,0,0,0,93.65,386.33ZM519.1,336H360a8,8,0,0,1,0-16H488a24,24,0,0,0,23.54-28.76C509.35,279.84,498.71,272,487.1,272H288l47.09-17.06a24,24,0,0,0-14.18-45.88L213.19,242.31A123.88,123.88,0,0,0,128,360v25.65a79.78,79.78,0,0,1,58,108.63A118.9,118.9,0,0,0,248,512H456a24,24,0,0,0,23.54-28.76C477.35,471.84,466.71,464,455.1,464H360a8,8,0,0,1,0-16H488a24,24,0,0,0,23.54-28.76C509.35,407.84,498.71,400,487.1,400H360a8,8,0,0,1,0-16H520a24,24,0,0,0,23.54-28.76C541.35,343.84,530.71,336,519.1,336ZM416,64a32,32,0,1,0-32-32A32,32,0,0,0,416,64ZM112,416a48,48,0,1,0,48,48A48,48,0,0,0,112,416Z\"]\n};\nvar faHandshake = {\n  prefix: 'fas',\n  iconName: 'handshake',\n  icon: [640, 512, [], \"f2b5\", \"M434.7 64h-85.9c-8 0-15.7 3-21.6 8.4l-98.3 90c-.1.1-.2.3-.3.4-16.6 15.6-16.3 40.5-2.1 56 12.7 13.9 39.4 17.6 56.1 2.7.1-.1.3-.1.4-.2l79.9-73.2c6.5-5.9 16.7-5.5 22.6 1 6 6.5 5.5 16.6-1 22.6l-26.1 23.9L504 313.8c2.9 2.4 5.5 5 7.9 7.7V128l-54.6-54.6c-5.9-6-14.1-9.4-22.6-9.4zM544 128.2v223.9c0 17.7 14.3 32 32 32h64V128.2h-96zm48 223.9c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zM0 384h64c17.7 0 32-14.3 32-32V128.2H0V384zm48-63.9c8.8 0 16 7.2 16 16s-7.2 16-16 16-16-7.2-16-16c0-8.9 7.2-16 16-16zm435.9 18.6L334.6 217.5l-30 27.5c-29.7 27.1-75.2 24.5-101.7-4.4-26.9-29.4-24.8-74.9 4.4-101.7L289.1 64h-83.8c-8.5 0-16.6 3.4-22.6 9.4L128 128v223.9h18.3l90.5 81.9c27.4 22.3 67.7 18.1 90-9.3l.2-.2 17.9 15.5c15.9 13 39.4 10.5 52.3-5.4l31.4-38.6 5.4 4.4c13.7 11.1 33.9 9.1 45-4.7l9.5-11.7c11.2-13.8 9.1-33.9-4.6-45.1z\"]\n};\nvar faHandshakeAltSlash = {\n  prefix: 'fas',\n  iconName: 'handshake-alt-slash',\n  icon: [640, 512, [], \"e05f\", \"M358.59,195.6,504.2,313.8a63.4,63.4,0,0,1,22.21,37.91H624a16.05,16.05,0,0,0,16-16V143.91A16,16,0,0,0,624,128H512L457.41,73.41A32,32,0,0,0,434.8,64H348.91a32,32,0,0,0-21.61,8.41l-88.12,80.68-25.69-19.85L289.09,64H205.3a32,32,0,0,0-22.6,9.41l-20.34,20.3L45.47,3.38A16,16,0,0,0,23,6.19L3.38,31.46A16,16,0,0,0,6.19,53.91L594.54,508.63A16,16,0,0,0,617,505.82l19.64-25.27a16,16,0,0,0-2.81-22.45L303.4,202.72l32.69-29.92,27-24.7a16,16,0,0,1,21.61,23.61ZM16,128A16.05,16.05,0,0,0,0,144V335.91a16,16,0,0,0,16,16H146.3l90.5,81.89a64,64,0,0,0,90-9.3l.2-.2,17.91,15.5a37.16,37.16,0,0,0,52.29-5.39l8.8-10.82L23.56,128Z\"]\n};\nvar faHandshakeSlash = {\n  prefix: 'fas',\n  iconName: 'handshake-slash',\n  icon: [640, 512, [], \"e060\", \"M0,128.21V384H64a32,32,0,0,0,32-32V184L23.83,128.21ZM48,320.1a16,16,0,1,1-16,16A16,16,0,0,1,48,320.1Zm80,31.81h18.3l90.5,81.89a64,64,0,0,0,90-9.3l.2-.2,17.91,15.5a37.16,37.16,0,0,0,52.29-5.39l8.8-10.82L128,208.72Zm416-223.7V352.1a32,32,0,0,0,32,32h64V128.21ZM592,352.1a16,16,0,1,1,16-16A16,16,0,0,1,592,352.1ZM303.33,202.67l59.58-54.57a16,16,0,0,1,21.59,23.61L358.41,195.6,504,313.8a73.08,73.08,0,0,1,7.91,7.7V128L457.3,73.41A31.76,31.76,0,0,0,434.7,64H348.8a31.93,31.93,0,0,0-21.6,8.41l-88.07,80.64-25.64-19.81L289.09,64H205.3a32,32,0,0,0-22.6,9.41L162.36,93.72,45.47,3.38A16,16,0,0,0,23,6.19L3.38,31.46A16,16,0,0,0,6.19,53.91L594.53,508.63A16,16,0,0,0,617,505.82l19.65-25.27a16,16,0,0,0-2.82-22.45Z\"]\n};\nvar faHanukiah = {\n  prefix: 'fas',\n  iconName: 'hanukiah',\n  icon: [640, 512, [], \"f6e6\", \"M232 160c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm-64 0c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm224 0c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm64 0c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm88 8c0-4.42-3.58-8-8-8h-16c-4.42 0-8 3.58-8 8v120h32V168zm-440-8c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm520 0h-32c-8.84 0-16 7.16-16 16v112c0 17.67-14.33 32-32 32H352V128c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v192H96c-17.67 0-32-14.33-32-32V176c0-8.84-7.16-16-16-16H16c-8.84 0-16 7.16-16 16v112c0 53.02 42.98 96 96 96h192v64H112c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16H352v-64h192c53.02 0 96-42.98 96-96V176c0-8.84-7.16-16-16-16zm-16-32c13.25 0 24-11.94 24-26.67S608 48 608 48s-24 38.61-24 53.33S594.75 128 608 128zm-576 0c13.25 0 24-11.94 24-26.67S32 48 32 48 8 86.61 8 101.33 18.75 128 32 128zm288-48c13.25 0 24-11.94 24-26.67S320 0 320 0s-24 38.61-24 53.33S306.75 80 320 80zm-208 48c13.25 0 24-11.94 24-26.67S112 48 112 48s-24 38.61-24 53.33S98.75 128 112 128zm64 0c13.25 0 24-11.94 24-26.67S176 48 176 48s-24 38.61-24 53.33S162.75 128 176 128zm64 0c13.25 0 24-11.94 24-26.67S240 48 240 48s-24 38.61-24 53.33S226.75 128 240 128zm160 0c13.25 0 24-11.94 24-26.67S400 48 400 48s-24 38.61-24 53.33S386.75 128 400 128zm64 0c13.25 0 24-11.94 24-26.67S464 48 464 48s-24 38.61-24 53.33S450.75 128 464 128zm64 0c13.25 0 24-11.94 24-26.67S528 48 528 48s-24 38.61-24 53.33S514.75 128 528 128z\"]\n};\nvar faHardHat = {\n  prefix: 'fas',\n  iconName: 'hard-hat',\n  icon: [512, 512, [], \"f807\", \"M480 288c0-80.25-49.28-148.92-119.19-177.62L320 192V80a16 16 0 0 0-16-16h-96a16 16 0 0 0-16 16v112l-40.81-81.62C81.28 139.08 32 207.75 32 288v64h448zm16 96H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h480a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faHashtag = {\n  prefix: 'fas',\n  iconName: 'hashtag',\n  icon: [448, 512, [], \"f292\", \"M440.667 182.109l7.143-40c1.313-7.355-4.342-14.109-11.813-14.109h-74.81l14.623-81.891C377.123 38.754 371.468 32 363.997 32h-40.632a12 12 0 0 0-11.813 9.891L296.175 128H197.54l14.623-81.891C213.477 38.754 207.822 32 200.35 32h-40.632a12 12 0 0 0-11.813 9.891L132.528 128H53.432a12 12 0 0 0-11.813 9.891l-7.143 40C33.163 185.246 38.818 192 46.289 192h74.81L98.242 320H19.146a12 12 0 0 0-11.813 9.891l-7.143 40C-1.123 377.246 4.532 384 12.003 384h74.81L72.19 465.891C70.877 473.246 76.532 480 84.003 480h40.632a12 12 0 0 0 11.813-9.891L151.826 384h98.634l-14.623 81.891C234.523 473.246 240.178 480 247.65 480h40.632a12 12 0 0 0 11.813-9.891L315.472 384h79.096a12 12 0 0 0 11.813-9.891l7.143-40c1.313-7.355-4.342-14.109-11.813-14.109h-74.81l22.857-128h79.096a12 12 0 0 0 11.813-9.891zM261.889 320h-98.634l22.857-128h98.634l-22.857 128z\"]\n};\nvar faHatCowboy = {\n  prefix: 'fas',\n  iconName: 'hat-cowboy',\n  icon: [640, 512, [], \"f8c0\", \"M490 296.9C480.51 239.51 450.51 64 392.3 64c-14 0-26.49 5.93-37 14a58.21 58.21 0 0 1-70.58 0c-10.51-8-23-14-37-14-58.2 0-88.2 175.47-97.71 232.88C188.81 309.47 243.73 320 320 320s131.23-10.51 170-23.1zm142.9-37.18a16 16 0 0 0-19.75 1.5c-1 .9-101.27 90.78-293.16 90.78-190.82 0-292.22-89.94-293.24-90.84A16 16 0 0 0 1 278.53C1.73 280.55 78.32 480 320 480s318.27-199.45 319-201.47a16 16 0 0 0-6.09-18.81z\"]\n};\nvar faHatCowboySide = {\n  prefix: 'fas',\n  iconName: 'hat-cowboy-side',\n  icon: [640, 512, [], \"f8c1\", \"M260.8 291.06c-28.63-22.94-62-35.06-96.4-35.06C87 256 21.47 318.72 1.43 412.06c-3.55 16.6-.43 33.83 8.57 47.3C18.75 472.47 31.83 480 45.88 480H592c-103.21 0-155-37.07-233.19-104.46zm234.65-18.29L468.4 116.2A64 64 0 0 0 392 64.41L200.85 105a64 64 0 0 0-50.35 55.79L143.61 226c6.9-.83 13.7-2 20.79-2 41.79 0 82 14.55 117.29 42.82l98 84.48C450.76 412.54 494.9 448 592 448a48 48 0 0 0 48-48c0-25.39-29.6-119.33-144.55-127.23z\"]\n};\nvar faHatWizard = {\n  prefix: 'fas',\n  iconName: 'hat-wizard',\n  icon: [512, 512, [], \"f6e8\", \"M496 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-304-64l-64-32 64-32 32-64 32 64 64 32-64 32-16 32h208l-86.41-201.63a63.955 63.955 0 0 1-1.89-45.45L416 0 228.42 107.19a127.989 127.989 0 0 0-53.46 59.15L64 416h144l-16-32zm64-224l16-32 16 32 32 16-32 16-16 32-16-32-32-16 32-16z\"]\n};\nvar faHdd = {\n  prefix: 'fas',\n  iconName: 'hdd',\n  icon: [576, 512, [], \"f0a0\", \"M576 304v96c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48v-96c0-26.51 21.49-48 48-48h480c26.51 0 48 21.49 48 48zm-48-80a79.557 79.557 0 0 1 30.777 6.165L462.25 85.374A48.003 48.003 0 0 0 422.311 64H153.689a48 48 0 0 0-39.938 21.374L17.223 230.165A79.557 79.557 0 0 1 48 224h480zm-48 96c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm-96 0c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32z\"]\n};\nvar faHeadSideCough = {\n  prefix: 'fas',\n  iconName: 'head-side-cough',\n  icon: [640, 512, [], \"e061\", \"M616,304a24,24,0,1,0-24-24A24,24,0,0,0,616,304ZM552,416a24,24,0,1,0,24,24A24,24,0,0,0,552,416Zm-64-56a24,24,0,1,0,24,24A24,24,0,0,0,488,360ZM616,464a24,24,0,1,0,24,24A24,24,0,0,0,616,464Zm0-104a24,24,0,1,0,24,24A24,24,0,0,0,616,360Zm-64-40a24,24,0,1,0,24,24A24,24,0,0,0,552,320Zm-74.78-45c-21-47.12-48.5-151.75-73.12-186.75A208.13,208.13,0,0,0,234.1,0H192C86,0,0,86,0,192c0,56.75,24.75,107.62,64,142.88V512H288V480h64a64,64,0,0,0,64-64H320a32,32,0,0,1,0-64h96V320h32A32,32,0,0,0,477.22,275ZM288,224a32,32,0,1,1,32-32A32.07,32.07,0,0,1,288,224Z\"]\n};\nvar faHeadSideCoughSlash = {\n  prefix: 'fas',\n  iconName: 'head-side-cough-slash',\n  icon: [640, 512, [], \"e062\", \"M454.11,319.21c19.56-3.81,31.62-25,23.11-44.21-21-47.12-48.5-151.75-73.12-186.75A208.13,208.13,0,0,0,234.1,0H192A190.64,190.64,0,0,0,84.18,33.3L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.46A16,16,0,0,0,6.18,53.91L594.53,508.63A16,16,0,0,0,617,505.82l19.64-25.27a16,16,0,0,0-2.81-22.45ZM313.39,210.45,263.61,172c5.88-7.14,14.43-12,24.36-12a32.06,32.06,0,0,1,32,32C320,199,317.24,205.17,313.39,210.45ZM616,304a24,24,0,1,0-24-24A24,24,0,0,0,616,304Zm-64,64a24,24,0,1,0-24-24A24,24,0,0,0,552,368ZM288,384a32,32,0,0,1,32-32h19.54L20.73,105.59A190.86,190.86,0,0,0,0,192c0,56.75,24.75,107.62,64,142.88V512H288V480h64a64,64,0,0,0,64-64H320A32,32,0,0,1,288,384Zm328-24a24,24,0,1,0,24,24A24,24,0,0,0,616,360Z\"]\n};\nvar faHeadSideMask = {\n  prefix: 'fas',\n  iconName: 'head-side-mask',\n  icon: [512, 512, [], \"e063\", \"M.15,184.42C-2.17,244.21,23,298.06,64,334.88V512H224V316.51L3.67,156.25A182.28,182.28,0,0,0,.15,184.42ZM509.22,275c-21-47.12-48.5-151.75-73.12-186.75A208.11,208.11,0,0,0,266.11,0H200C117,0,42.48,50.57,13.25,123.65L239.21,288H511.76A31.35,31.35,0,0,0,509.22,275ZM320,224a32,32,0,1,1,32-32A32.07,32.07,0,0,1,320,224Zm16,144H496l16-48H256V512H401.88a64,64,0,0,0,60.71-43.76L464,464H336a16,16,0,0,1,0-32H474.67l10.67-32H336a16,16,0,0,1,0-32Z\"]\n};\nvar faHeadSideVirus = {\n  prefix: 'fas',\n  iconName: 'head-side-virus',\n  icon: [512, 512, [], \"e064\", \"M272,240a16,16,0,1,0,16,16A16,16,0,0,0,272,240Zm-64-64a16,16,0,1,0,16,16A16,16,0,0,0,208,176Zm301.2,99c-20.93-47.12-48.43-151.73-73.07-186.75A207.9,207.9,0,0,0,266.09,0H192C86,0,0,86,0,192A191.23,191.23,0,0,0,64,334.81V512H320V448h64a64,64,0,0,0,64-64V320H480A32,32,0,0,0,509.2,275ZM368,240H355.88c-28.51,0-42.79,34.47-22.63,54.63l8.58,8.57a16,16,0,1,1-22.63,22.63l-8.57-8.58C290.47,297.09,256,311.37,256,339.88V352a16,16,0,0,1-32,0V339.88c0-28.51-34.47-42.79-54.63-22.63l-8.57,8.58a16,16,0,0,1-22.63-22.63l8.58-8.57c20.16-20.16,5.88-54.63-22.63-54.63H112a16,16,0,0,1,0-32h12.12c28.51,0,42.79-34.47,22.63-54.63l-8.58-8.57a16,16,0,0,1,22.63-22.63l8.57,8.58c20.16,20.16,54.63,5.88,54.63-22.63V96a16,16,0,0,1,32,0v12.12c0,28.51,34.47,42.79,54.63,22.63l8.57-8.58a16,16,0,0,1,22.63,22.63l-8.58,8.57C313.09,173.53,327.37,208,355.88,208H368a16,16,0,0,1,0,32Z\"]\n};\nvar faHeading = {\n  prefix: 'fas',\n  iconName: 'heading',\n  icon: [512, 512, [], \"f1dc\", \"M448 96v320h32a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16H320a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32V288H160v128h32a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16H32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32V96H32a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16h160a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16h-32v128h192V96h-32a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16h160a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16z\"]\n};\nvar faHeadphones = {\n  prefix: 'fas',\n  iconName: 'headphones',\n  icon: [512, 512, [], \"f025\", \"M256 32C114.52 32 0 146.496 0 288v48a32 32 0 0 0 17.689 28.622l14.383 7.191C34.083 431.903 83.421 480 144 480h24c13.255 0 24-10.745 24-24V280c0-13.255-10.745-24-24-24h-24c-31.342 0-59.671 12.879-80 33.627V288c0-105.869 86.131-192 192-192s192 86.131 192 192v1.627C427.671 268.879 399.342 256 368 256h-24c-13.255 0-24 10.745-24 24v176c0 13.255 10.745 24 24 24h24c60.579 0 109.917-48.098 111.928-108.187l14.382-7.191A32 32 0 0 0 512 336v-48c0-141.479-114.496-256-256-256z\"]\n};\nvar faHeadphonesAlt = {\n  prefix: 'fas',\n  iconName: 'headphones-alt',\n  icon: [512, 512, [], \"f58f\", \"M160 288h-16c-35.35 0-64 28.7-64 64.12v63.76c0 35.41 28.65 64.12 64 64.12h16c17.67 0 32-14.36 32-32.06V320.06c0-17.71-14.33-32.06-32-32.06zm208 0h-16c-17.67 0-32 14.35-32 32.06v127.88c0 17.7 14.33 32.06 32 32.06h16c35.35 0 64-28.71 64-64.12v-63.76c0-35.41-28.65-64.12-64-64.12zM256 32C112.91 32 4.57 151.13 0 288v112c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V288c0-114.67 93.33-207.8 208-207.82 114.67.02 208 93.15 208 207.82v112c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V288C507.43 151.13 399.09 32 256 32z\"]\n};\nvar faHeadset = {\n  prefix: 'fas',\n  iconName: 'headset',\n  icon: [512, 512, [], \"f590\", \"M192 208c0-17.67-14.33-32-32-32h-16c-35.35 0-64 28.65-64 64v48c0 35.35 28.65 64 64 64h16c17.67 0 32-14.33 32-32V208zm176 144c35.35 0 64-28.65 64-64v-48c0-35.35-28.65-64-64-64h-16c-17.67 0-32 14.33-32 32v112c0 17.67 14.33 32 32 32h16zM256 0C113.18 0 4.58 118.83 0 256v16c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-16c0-114.69 93.31-208 208-208s208 93.31 208 208h-.12c.08 2.43.12 165.72.12 165.72 0 23.35-18.93 42.28-42.28 42.28H320c0-26.51-21.49-48-48-48h-32c-26.51 0-48 21.49-48 48s21.49 48 48 48h181.72c49.86 0 90.28-40.42 90.28-90.28V256C507.42 118.83 398.82 0 256 0z\"]\n};\nvar faHeart = {\n  prefix: 'fas',\n  iconName: 'heart',\n  icon: [512, 512, [], \"f004\", \"M462.3 62.6C407.5 15.9 326 24.3 275.7 76.2L256 96.5l-19.7-20.3C186.1 24.3 104.5 15.9 49.7 62.6c-62.8 53.6-66.1 149.8-9.9 207.9l193.5 199.8c12.5 12.9 32.8 12.9 45.3 0l193.5-199.8c56.3-58.1 53-154.3-9.8-207.9z\"]\n};\nvar faHeartBroken = {\n  prefix: 'fas',\n  iconName: 'heart-broken',\n  icon: [512, 512, [], \"f7a9\", \"M473.7 73.8l-2.4-2.5c-46-47-118-51.7-169.6-14.8L336 159.9l-96 64 48 128-144-144 96-64-28.6-86.5C159.7 19.6 87 24 40.7 71.4l-2.4 2.4C-10.4 123.6-12.5 202.9 31 256l212.1 218.6c7.1 7.3 18.6 7.3 25.7 0L481 255.9c43.5-53 41.4-132.3-7.3-182.1z\"]\n};\nvar faHeartbeat = {\n  prefix: 'fas',\n  iconName: 'heartbeat',\n  icon: [512, 512, [], \"f21e\", \"M320.2 243.8l-49.7 99.4c-6 12.1-23.4 11.7-28.9-.6l-56.9-126.3-30 71.7H60.6l182.5 186.5c7.1 7.3 18.6 7.3 25.7 0L451.4 288H342.3l-22.1-44.2zM473.7 73.9l-2.4-2.5c-51.5-52.6-135.8-52.6-187.4 0L256 100l-27.9-28.5c-51.5-52.7-135.9-52.7-187.4 0l-2.4 2.4C-10.4 123.7-12.5 203 31 256h102.4l35.9-86.2c5.4-12.9 23.6-13.2 29.4-.4l58.2 129.3 49-97.9c5.9-11.8 22.7-11.8 28.6 0l27.6 55.2H481c43.5-53 41.4-132.3-7.3-182.1z\"]\n};\nvar faHelicopter = {\n  prefix: 'fas',\n  iconName: 'helicopter',\n  icon: [640, 512, [], \"f533\", \"M304 384h272c17.67 0 32-14.33 32-32 0-123.71-100.29-224-224-224V64h176c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16H144c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h176v64H112L68.8 70.4C65.78 66.37 61.03 64 56 64H16.01C5.6 64-2.04 73.78.49 83.88L32 192l160 64 86.4 115.2A31.992 31.992 0 0 0 304 384zm112-188.49C478.55 208.3 528.03 257.44 540.79 320H416V195.51zm219.37 263.3l-22.15-22.2c-6.25-6.26-16.24-6.1-22.64.01-7.09 6.77-13.84 11.25-24.64 11.25H240c-8.84 0-16 7.18-16 16.03v32.06c0 8.85 7.16 16.03 16 16.03h325.94c14.88 0 35.3-.47 68.45-29.52 7.02-6.14 7.57-17.05.98-23.66z\"]\n};\nvar faHighlighter = {\n  prefix: 'fas',\n  iconName: 'highlighter',\n  icon: [544, 512, [], \"f591\", \"M0 479.98L99.92 512l35.45-35.45-67.04-67.04L0 479.98zm124.61-240.01a36.592 36.592 0 0 0-10.79 38.1l13.05 42.83-50.93 50.94 96.23 96.23 50.86-50.86 42.74 13.08c13.73 4.2 28.65-.01 38.15-10.78l35.55-41.64-173.34-173.34-41.52 35.44zm403.31-160.7l-63.2-63.2c-20.49-20.49-53.38-21.52-75.12-2.35L190.55 183.68l169.77 169.78L530.27 154.4c19.18-21.74 18.15-54.63-2.35-75.13z\"]\n};\nvar faHiking = {\n  prefix: 'fas',\n  iconName: 'hiking',\n  icon: [384, 512, [], \"f6ec\", \"M80.95 472.23c-4.28 17.16 6.14 34.53 23.28 38.81 2.61.66 5.22.95 7.8.95 14.33 0 27.37-9.7 31.02-24.23l25.24-100.97-52.78-52.78-34.56 138.22zm14.89-196.12L137 117c2.19-8.42-3.14-16.95-11.92-19.06-43.88-10.52-88.35 15.07-99.32 57.17L.49 253.24c-2.19 8.42 3.14 16.95 11.92 19.06l63.56 15.25c8.79 2.1 17.68-3.02 19.87-11.44zM368 160h-16c-8.84 0-16 7.16-16 16v16h-34.75l-46.78-46.78C243.38 134.11 228.61 128 212.91 128c-27.02 0-50.47 18.3-57.03 44.52l-26.92 107.72a32.012 32.012 0 0 0 8.42 30.39L224 397.25V480c0 17.67 14.33 32 32 32s32-14.33 32-32v-82.75c0-17.09-6.66-33.16-18.75-45.25l-46.82-46.82c.15-.5.49-.89.62-1.41l19.89-79.57 22.43 22.43c6 6 14.14 9.38 22.62 9.38h48v240c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V176c.01-8.84-7.15-16-15.99-16zM240 96c26.51 0 48-21.49 48-48S266.51 0 240 0s-48 21.49-48 48 21.49 48 48 48z\"]\n};\nvar faHippo = {\n  prefix: 'fas',\n  iconName: 'hippo',\n  icon: [640, 512, [], \"f6ed\", \"M581.12 96.2c-27.67-.15-52.5 17.58-76.6 26.62C489.98 88.27 455.83 64 416 64c-11.28 0-21.95 2.3-32 5.88V56c0-13.26-10.75-24-24-24h-16c-13.25 0-24 10.74-24 24v48.98C286.01 79.58 241.24 64 192 64 85.96 64 0 135.64 0 224v240c0 8.84 7.16 16 16 16h64c8.84 0 16-7.16 16-16v-70.79C128.35 407.57 166.72 416 208 416s79.65-8.43 112-22.79V464c0 8.84 7.16 16 16 16h64c8.84 0 16-7.16 16-16V288h128v32c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-32c17.67 0 32-14.33 32-32v-92.02c0-34.09-24.79-67.59-58.88-67.78zM448 176c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16z\"]\n};\nvar faHistory = {\n  prefix: 'fas',\n  iconName: 'history',\n  icon: [512, 512, [], \"f1da\", \"M504 255.531c.253 136.64-111.18 248.372-247.82 248.468-59.015.042-113.223-20.53-155.822-54.911-11.077-8.94-11.905-25.541-1.839-35.607l11.267-11.267c8.609-8.609 22.353-9.551 31.891-1.984C173.062 425.135 212.781 440 256 440c101.705 0 184-82.311 184-184 0-101.705-82.311-184-184-184-48.814 0-93.149 18.969-126.068 49.932l50.754 50.754c10.08 10.08 2.941 27.314-11.313 27.314H24c-8.837 0-16-7.163-16-16V38.627c0-14.254 17.234-21.393 27.314-11.314l49.372 49.372C129.209 34.136 189.552 8 256 8c136.81 0 247.747 110.78 248 247.531zm-180.912 78.784l9.823-12.63c8.138-10.463 6.253-25.542-4.21-33.679L288 256.349V152c0-13.255-10.745-24-24-24h-16c-13.255 0-24 10.745-24 24v135.651l65.409 50.874c10.463 8.137 25.541 6.253 33.679-4.21z\"]\n};\nvar faHockeyPuck = {\n  prefix: 'fas',\n  iconName: 'hockey-puck',\n  icon: [512, 512, [], \"f453\", \"M0 160c0-53 114.6-96 256-96s256 43 256 96-114.6 96-256 96S0 213 0 160zm0 82.2V352c0 53 114.6 96 256 96s256-43 256-96V242.2c-113.4 82.3-398.5 82.4-512 0z\"]\n};\nvar faHollyBerry = {\n  prefix: 'fas',\n  iconName: 'holly-berry',\n  icon: [448, 512, [], \"f7aa\", \"M144 192c26.5 0 48-21.5 48-48s-21.5-48-48-48-48 21.5-48 48 21.5 48 48 48zm112-48c0 26.5 21.5 48 48 48s48-21.5 48-48-21.5-48-48-48-48 21.5-48 48zm-32-48c26.5 0 48-21.5 48-48S250.5 0 224 0s-48 21.5-48 48 21.5 48 48 48zm-16.2 139.1c.1-12.4-13.1-20.1-23.8-13.7-34.3 20.3-71.4 32.7-108.7 36.2-9.7.9-15.6 11.3-11.6 20.2 6.2 13.9 11.1 28.6 14.7 43.8 3.6 15.2-5.3 30.6-20.2 35.1-14.9 4.5-30.1 7.6-45.3 9.1-9.7 1-15.7 11.3-11.7 20.2 15 32.8 22.9 69.5 23 107.7.1 14.4 15.2 23.1 27.6 16 33.2-19 68.9-30.5 104.8-33.9 9.7-.9 15.6-11.3 11.6-20.2-6.2-13.9-11.1-28.6-14.7-43.8-3.6-15.2 5.3-30.6 20.2-35.1 14.9-4.5 30.1-7.6 45.3-9.1 9.7-1 15.7-11.3 11.7-20.2-15.5-34.2-23.3-72.5-22.9-112.3zM435 365.6c-15.2-1.6-30.3-4.7-45.3-9.1-14.9-4.5-23.8-19.9-20.2-35.1 3.6-15.2 8.5-29.8 14.7-43.8 4-8.9-1.9-19.3-11.6-20.2-37.3-3.5-74.4-15.9-108.7-36.2-10.7-6.3-23.9 1.4-23.8 13.7 0 1.6-.2 3.2-.2 4.9.2 33.3 7 65.7 19.9 94 5.7 12.4 5.2 26.6-.6 38.9 4.9 1.2 9.9 2.2 14.8 3.7 14.9 4.5 23.8 19.9 20.2 35.1-3.6 15.2-8.5 29.8-14.7 43.8-4 8.9 1.9 19.3 11.6 20.2 35.9 3.4 71.6 14.9 104.8 33.9 12.5 7.1 27.6-1.6 27.6-16 .2-38.2 8-75 23-107.7 4.3-8.7-1.8-19.1-11.5-20.1z\"]\n};\nvar faHome = {\n  prefix: 'fas',\n  iconName: 'home',\n  icon: [576, 512, [], \"f015\", \"M280.37 148.26L96 300.11V464a16 16 0 0 0 16 16l112.06-.29a16 16 0 0 0 15.92-16V368a16 16 0 0 1 16-16h64a16 16 0 0 1 16 16v95.64a16 16 0 0 0 16 16.05L464 480a16 16 0 0 0 16-16V300L295.67 148.26a12.19 12.19 0 0 0-15.3 0zM571.6 251.47L488 182.56V44.05a12 12 0 0 0-12-12h-56a12 12 0 0 0-12 12v72.61L318.47 43a48 48 0 0 0-61 0L4.34 251.47a12 12 0 0 0-1.6 16.9l25.5 31A12 12 0 0 0 45.15 301l235.22-193.74a12.19 12.19 0 0 1 15.3 0L530.9 301a12 12 0 0 0 16.9-1.6l25.5-31a12 12 0 0 0-1.7-16.93z\"]\n};\nvar faHorse = {\n  prefix: 'fas',\n  iconName: 'horse',\n  icon: [576, 512, [], \"f6f0\", \"M575.92 76.6c-.01-8.13-3.02-15.87-8.58-21.8-3.78-4.03-8.58-9.12-13.69-14.5 11.06-6.84 19.5-17.49 22.18-30.66C576.85 4.68 572.96 0 567.9 0H447.92c-70.69 0-128 57.31-128 128H160c-28.84 0-54.4 12.98-72 33.11V160c-48.53 0-88 39.47-88 88v56c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-56c0-13.22 6.87-24.39 16.78-31.68-.21 2.58-.78 5.05-.78 7.68 0 27.64 11.84 52.36 30.54 69.88l-25.72 68.6a63.945 63.945 0 0 0-2.16 37.99l24.85 99.41A15.982 15.982 0 0 0 107.02 512h65.96c10.41 0 18.05-9.78 15.52-19.88l-26.31-105.26 23.84-63.59L320 345.6V496c0 8.84 7.16 16 16 16h64c8.84 0 16-7.16 16-16V318.22c19.74-20.19 32-47.75 32-78.22 0-.22-.07-.42-.08-.64V136.89l16 7.11 18.9 37.7c7.45 14.87 25.05 21.55 40.49 15.37l32.55-13.02a31.997 31.997 0 0 0 20.12-29.74l-.06-77.71zm-64 19.4c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16z\"]\n};\nvar faHorseHead = {\n  prefix: 'fas',\n  iconName: 'horse-head',\n  icon: [512, 512, [], \"f7ab\", \"M509.8 332.5l-69.9-164.3c-14.9-41.2-50.4-71-93-79.2 18-10.6 46.3-35.9 34.2-82.3-1.3-5-7.1-7.9-12-6.1L166.9 76.3C35.9 123.4 0 238.9 0 398.8V480c0 17.7 14.3 32 32 32h236.2c23.8 0 39.3-25 28.6-46.3L256 384v-.7c-45.6-3.5-84.6-30.7-104.3-69.6-1.6-3.1-.9-6.9 1.6-9.3l12.1-12.1c3.9-3.9 10.6-2.7 12.9 2.4 14.8 33.7 48.2 57.4 87.4 57.4 17.2 0 33-5.1 46.8-13.2l46 63.9c6 8.4 15.7 13.3 26 13.3h50.3c8.5 0 16.6-3.4 22.6-9.4l45.3-39.8c8.9-9.1 11.7-22.6 7.1-34.4zM328 224c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24z\"]\n};\nvar faHospital = {\n  prefix: 'fas',\n  iconName: 'hospital',\n  icon: [448, 512, [], \"f0f8\", \"M448 492v20H0v-20c0-6.627 5.373-12 12-12h20V120c0-13.255 10.745-24 24-24h88V24c0-13.255 10.745-24 24-24h112c13.255 0 24 10.745 24 24v72h88c13.255 0 24 10.745 24 24v360h20c6.627 0 12 5.373 12 12zM308 192h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12zm-168 64h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12zm104 128h-40c-6.627 0-12 5.373-12 12v84h64v-84c0-6.627-5.373-12-12-12zm64-96h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12zm-116 12c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40zM182 96h26v26a6 6 0 0 0 6 6h20a6 6 0 0 0 6-6V96h26a6 6 0 0 0 6-6V70a6 6 0 0 0-6-6h-26V38a6 6 0 0 0-6-6h-20a6 6 0 0 0-6 6v26h-26a6 6 0 0 0-6 6v20a6 6 0 0 0 6 6z\"]\n};\nvar faHospitalAlt = {\n  prefix: 'fas',\n  iconName: 'hospital-alt',\n  icon: [576, 512, [], \"f47d\", \"M544 96H416V32c0-17.7-14.3-32-32-32H192c-17.7 0-32 14.3-32 32v64H32c-17.7 0-32 14.3-32 32v368c0 8.8 7.2 16 16 16h544c8.8 0 16-7.2 16-16V128c0-17.7-14.3-32-32-32zM160 436c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-128c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm160 128c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-128c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm16-170c0 3.3-2.7 6-6 6h-26v26c0 3.3-2.7 6-6 6h-20c-3.3 0-6-2.7-6-6v-26h-26c-3.3 0-6-2.7-6-6v-20c0-3.3 2.7-6 6-6h26V86c0-3.3 2.7-6 6-6h20c3.3 0 6 2.7 6 6v26h26c3.3 0 6 2.7 6 6v20zm144 298c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-128c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40z\"]\n};\nvar faHospitalSymbol = {\n  prefix: 'fas',\n  iconName: 'hospital-symbol',\n  icon: [512, 512, [], \"f47e\", \"M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256 256-114.6 256-256S397.4 0 256 0zm112 376c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-88h-96v88c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V136c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v88h96v-88c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v240z\"]\n};\nvar faHospitalUser = {\n  prefix: 'fas',\n  iconName: 'hospital-user',\n  icon: [640, 512, [], \"f80d\", \"M480 320a96 96 0 1 0-96-96 96 96 0 0 0 96 96zm48 32a22.88 22.88 0 0 0-7.06 1.09 124.76 124.76 0 0 1-81.89 0A22.82 22.82 0 0 0 432 352a112 112 0 0 0-112 112.62c.14 26.26 21.73 47.38 48 47.38h224c26.27 0 47.86-21.12 48-47.38A112 112 0 0 0 528 352zm-198.09 10.45A145.19 145.19 0 0 1 352 344.62V128a32 32 0 0 0-32-32h-32V32a32 32 0 0 0-32-32H96a32 32 0 0 0-32 32v64H32a32 32 0 0 0-32 32v368a16 16 0 0 0 16 16h288.31A78.62 78.62 0 0 1 288 464.79a143.06 143.06 0 0 1 41.91-102.34zM144 404a12 12 0 0 1-12 12H92a12 12 0 0 1-12-12v-40a12 12 0 0 1 12-12h40a12 12 0 0 1 12 12zm0-128a12 12 0 0 1-12 12H92a12 12 0 0 1-12-12v-40a12 12 0 0 1 12-12h40a12 12 0 0 1 12 12zm48-122a6 6 0 0 1-6 6h-20a6 6 0 0 1-6-6v-26h-26a6 6 0 0 1-6-6v-20a6 6 0 0 1 6-6h26V70a6 6 0 0 1 6-6h20a6 6 0 0 1 6 6v26h26a6 6 0 0 1 6 6v20a6 6 0 0 1-6 6h-26zm80 250a12 12 0 0 1-12 12h-40a12 12 0 0 1-12-12v-40a12 12 0 0 1 12-12h40a12 12 0 0 1 12 12zm0-128a12 12 0 0 1-12 12h-40a12 12 0 0 1-12-12v-40a12 12 0 0 1 12-12h40a12 12 0 0 1 12 12z\"]\n};\nvar faHotTub = {\n  prefix: 'fas',\n  iconName: 'hot-tub',\n  icon: [512, 512, [], \"f593\", \"M414.21 177.65c1.02 8.21 7.75 14.35 15.75 14.35h16.12c9.51 0 17.08-8.57 16-18.35-4.34-39.11-22.4-74.53-50.13-97.16-17.37-14.17-28.82-36.75-31.98-62.15C378.96 6.14 372.22 0 364.23 0h-16.12c-9.51 0-17.09 8.57-16 18.35 4.34 39.11 22.4 74.53 50.13 97.16 17.36 14.17 28.82 36.75 31.97 62.14zm-108 0c1.02 8.21 7.75 14.35 15.75 14.35h16.12c9.51 0 17.08-8.57 16-18.35-4.34-39.11-22.4-74.53-50.13-97.16-17.37-14.17-28.82-36.75-31.98-62.15C270.96 6.14 264.22 0 256.23 0h-16.12c-9.51 0-17.09 8.57-16 18.35 4.34 39.11 22.4 74.53 50.13 97.16 17.36 14.17 28.82 36.75 31.97 62.14zM480 256H256l-110.93-83.2a63.99 63.99 0 0 0-38.4-12.8H64c-35.35 0-64 28.65-64 64v224c0 35.35 28.65 64 64 64h384c35.35 0 64-28.65 64-64V288c0-17.67-14.33-32-32-32zM128 440c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8V328c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v112zm96 0c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8V328c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v112zm96 0c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8V328c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v112zm96 0c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8V328c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v112zM64 128c35.35 0 64-28.65 64-64S99.35 0 64 0 0 28.65 0 64s28.65 64 64 64z\"]\n};\nvar faHotdog = {\n  prefix: 'fas',\n  iconName: 'hotdog',\n  icon: [512, 512, [], \"f80f\", \"M488.56 23.44a80 80 0 0 0-113.12 0l-352 352a80 80 0 1 0 113.12 113.12l352-352a80 80 0 0 0 0-113.12zm-49.93 95.19c-19.6 19.59-37.52 22.67-51.93 25.14C373.76 146 364.4 147.6 352 160s-14 21.76-16.23 34.71c-2.48 14.4-5.55 32.33-25.15 51.92s-37.52 22.67-51.92 25.15C245.75 274 236.4 275.6 224 288s-14 21.75-16.23 34.7c-2.47 14.4-5.54 32.33-25.14 51.92s-37.53 22.68-51.93 25.15C117.76 402 108.4 403.6 96 416a16 16 0 0 1-22.63-22.63c19.6-19.59 37.52-22.67 51.92-25.14 13-2.22 22.3-3.82 34.71-16.23s14-21.75 16.22-34.7c2.48-14.4 5.55-32.33 25.15-51.92s37.52-22.67 51.92-25.14c13-2.22 22.3-3.83 34.7-16.23s14-21.76 16.24-34.71c2.47-14.4 5.54-32.33 25.14-51.92s37.52-22.68 51.92-25.15C394.24 110 403.59 108.41 416 96a16 16 0 0 1 22.63 22.63zM31.44 322.18L322.18 31.44l-11.54-11.55c-25-25-63.85-26.66-86.79-3.72L16.17 223.85c-22.94 22.94-21.27 61.79 3.72 86.78zm449.12-132.36L189.82 480.56l11.54 11.55c25 25 63.85 26.66 86.79 3.72l207.68-207.68c22.94-22.94 21.27-61.79-3.72-86.79z\"]\n};\nvar faHotel = {\n  prefix: 'fas',\n  iconName: 'hotel',\n  icon: [576, 512, [], \"f594\", \"M560 64c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16H16C7.16 0 0 7.16 0 16v32c0 8.84 7.16 16 16 16h15.98v384H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h240v-80c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v80h240c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16h-16V64h16zm-304 44.8c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4zm0 96c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4zm-128-96c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4zM179.2 256h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4c0 6.4-6.4 12.8-12.8 12.8zM192 384c0-53.02 42.98-96 96-96s96 42.98 96 96H192zm256-140.8c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm0-96c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4z\"]\n};\nvar faHourglass = {\n  prefix: 'fas',\n  iconName: 'hourglass',\n  icon: [384, 512, [], \"f254\", \"M360 64c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24 0 90.965 51.016 167.734 120.842 192C75.016 280.266 24 357.035 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24 0-90.965-51.016-167.734-120.842-192C308.984 231.734 360 154.965 360 64z\"]\n};\nvar faHourglassEnd = {\n  prefix: 'fas',\n  iconName: 'hourglass-end',\n  icon: [384, 512, [], \"f253\", \"M360 64c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24 0 90.965 51.016 167.734 120.842 192C75.016 280.266 24 357.035 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24 0-90.965-51.016-167.734-120.842-192C308.984 231.734 360 154.965 360 64zM192 208c-57.787 0-104-66.518-104-144h208c0 77.945-46.51 144-104 144z\"]\n};\nvar faHourglassHalf = {\n  prefix: 'fas',\n  iconName: 'hourglass-half',\n  icon: [384, 512, [], \"f252\", \"M360 0H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24 0 90.965 51.016 167.734 120.842 192C75.016 280.266 24 357.035 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24 0-90.965-51.016-167.734-120.842-192C308.984 231.734 360 154.965 360 64c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24zm-75.078 384H99.08c17.059-46.797 52.096-80 92.92-80 40.821 0 75.862 33.196 92.922 80zm.019-256H99.078C91.988 108.548 88 86.748 88 64h208c0 22.805-3.987 44.587-11.059 64z\"]\n};\nvar faHourglassStart = {\n  prefix: 'fas',\n  iconName: 'hourglass-start',\n  icon: [384, 512, [], \"f251\", \"M360 0H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24 0 90.965 51.016 167.734 120.842 192C75.016 280.266 24 357.035 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24 0-90.965-51.016-167.734-120.842-192C308.984 231.734 360 154.965 360 64c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24zm-64 448H88c0-77.458 46.204-144 104-144 57.786 0 104 66.517 104 144z\"]\n};\nvar faHouseDamage = {\n  prefix: 'fas',\n  iconName: 'house-damage',\n  icon: [576, 512, [], \"f6f1\", \"M288 114.96L69.47 307.71c-1.62 1.46-3.69 2.14-5.47 3.35V496c0 8.84 7.16 16 16 16h149.23L192 439.19l104.11-64-60.16-119.22L384 392.75l-104.11 64L319.81 512H496c8.84 0 16-7.16 16-16V311.1c-1.7-1.16-3.72-1.82-5.26-3.2L288 114.96zm282.69 121.32L512 184.45V48c0-8.84-7.16-16-16-16h-64c-8.84 0-16 7.16-16 16v51.69L314.75 10.31C307.12 3.45 297.56.01 288 0s-19.1 3.41-26.7 10.27L5.31 236.28c-6.57 5.91-7.12 16.02-1.21 22.6l21.4 23.82c5.9 6.57 16.02 7.12 22.6 1.21L277.42 81.63c6.05-5.33 15.12-5.33 21.17 0L527.91 283.9c6.57 5.9 16.69 5.36 22.6-1.21l21.4-23.82c5.9-6.57 5.36-16.69-1.22-22.59z\"]\n};\nvar faHouseUser = {\n  prefix: 'fas',\n  iconName: 'house-user',\n  icon: [576, 512, [], \"e065\", \"M570.69,236.27,512,184.44V48a16,16,0,0,0-16-16H432a16,16,0,0,0-16,16V99.67L314.78,10.3C308.5,4.61,296.53,0,288,0s-20.46,4.61-26.74,10.3l-256,226A18.27,18.27,0,0,0,0,248.2a18.64,18.64,0,0,0,4.09,10.71L25.5,282.7a21.14,21.14,0,0,0,12,5.3,21.67,21.67,0,0,0,10.69-4.11l15.9-14V480a32,32,0,0,0,32,32H480a32,32,0,0,0,32-32V269.88l15.91,14A21.94,21.94,0,0,0,538.63,288a20.89,20.89,0,0,0,11.87-5.31l21.41-23.81A21.64,21.64,0,0,0,576,248.19,21,21,0,0,0,570.69,236.27ZM288,176a64,64,0,1,1-64,64A64,64,0,0,1,288,176ZM400,448H176a16,16,0,0,1-16-16,96,96,0,0,1,96-96h64a96,96,0,0,1,96,96A16,16,0,0,1,400,448Z\"]\n};\nvar faHryvnia = {\n  prefix: 'fas',\n  iconName: 'hryvnia',\n  icon: [384, 512, [], \"f6f2\", \"M368 240c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16h-41.86c13.41-28.63 13.74-63.33-4.13-94.05C303.34 49.84 267.1 32 229.96 32h-78.82c-24.32 0-47.86 8.53-66.54 24.09L72.83 65.9c-10.18 8.49-11.56 23.62-3.07 33.8l20.49 24.59c8.49 10.19 23.62 11.56 33.81 3.07l11.73-9.78c4.32-3.6 9.77-5.57 15.39-5.57h83.62c11.69 0 21.2 9.52 21.2 21.2 0 5.91-2.48 11.58-6.81 15.58L219.7 176H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h134.37l-34.67 32H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h41.86c-13.41 28.63-13.74 63.33 4.13 94.05C80.66 462.15 116.9 480 154.04 480h78.82c24.32 0 47.86-8.53 66.54-24.09l11.77-9.81c10.18-8.49 11.56-23.62 3.07-33.8l-20.49-24.59c-8.49-10.19-23.62-11.56-33.81-3.07l-11.75 9.8a23.992 23.992 0 0 1-15.36 5.56H149.2c-11.69 0-21.2-9.52-21.2-21.2 0-5.91 2.48-11.58 6.81-15.58L164.3 336H368c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16H233.63l34.67-32H368z\"]\n};\nvar faICursor = {\n  prefix: 'fas',\n  iconName: 'i-cursor',\n  icon: [256, 512, [], \"f246\", \"M256 52.048V12.065C256 5.496 250.726.148 244.158.066 211.621-.344 166.469.011 128 37.959 90.266.736 46.979-.114 11.913.114 5.318.157 0 5.519 0 12.114v39.645c0 6.687 5.458 12.078 12.145 11.998C38.111 63.447 96 67.243 96 112.182V224H60c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h36v112c0 44.932-56.075 48.031-83.95 47.959C5.404 447.942 0 453.306 0 459.952v39.983c0 6.569 5.274 11.917 11.842 11.999 32.537.409 77.689.054 116.158-37.894 37.734 37.223 81.021 38.073 116.087 37.845 6.595-.043 11.913-5.405 11.913-12V460.24c0-6.687-5.458-12.078-12.145-11.998C217.889 448.553 160 444.939 160 400V288h36c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-36V112.182c0-44.932 56.075-48.213 83.95-48.142 6.646.018 12.05-5.346 12.05-11.992z\"]\n};\nvar faIceCream = {\n  prefix: 'fas',\n  iconName: 'ice-cream',\n  icon: [448, 512, [], \"f810\", \"M368 160h-.94a144 144 0 1 0-286.12 0H80a48 48 0 0 0 0 96h288a48 48 0 0 0 0-96zM195.38 493.69a31.52 31.52 0 0 0 57.24 0L352 288H96z\"]\n};\nvar faIcicles = {\n  prefix: 'fas',\n  iconName: 'icicles',\n  icon: [512, 512, [], \"f7ad\", \"M511.4 37.9C515.1 18.2 500 0 480 0H32C10.6 0-4.8 20.7 1.4 41.2l87.1 273.4c2.5 7.2 12.7 7.2 15.1 0L140 190.5l44.2 187.3c1.9 8.3 13.7 8.3 15.6 0l46.5-196.9 34.1 133.4c2.3 7.6 13 7.6 15.3 0l45.8-172.5 66.7 363.8c1.7 8.6 14 8.6 15.7 0l87.5-467.7z\"]\n};\nvar faIcons = {\n  prefix: 'fas',\n  iconName: 'icons',\n  icon: [512, 512, [], \"f86d\", \"M116.65 219.35a15.68 15.68 0 0 0 22.65 0l96.75-99.83c28.15-29 26.5-77.1-4.91-103.88C203.75-7.7 163-3.5 137.86 22.44L128 32.58l-9.85-10.14C93.05-3.5 52.25-7.7 24.86 15.64c-31.41 26.78-33 74.85-5 103.88zm143.92 100.49h-48l-7.08-14.24a27.39 27.39 0 0 0-25.66-17.78h-71.71a27.39 27.39 0 0 0-25.66 17.78l-7 14.24h-48A27.45 27.45 0 0 0 0 347.3v137.25A27.44 27.44 0 0 0 27.43 512h233.14A27.45 27.45 0 0 0 288 484.55V347.3a27.45 27.45 0 0 0-27.43-27.46zM144 468a52 52 0 1 1 52-52 52 52 0 0 1-52 52zm355.4-115.9h-60.58l22.36-50.75c2.1-6.65-3.93-13.21-12.18-13.21h-75.59c-6.3 0-11.66 3.9-12.5 9.1l-16.8 106.93c-1 6.3 4.88 11.89 12.5 11.89h62.31l-24.2 83c-1.89 6.65 4.2 12.9 12.23 12.9a13.26 13.26 0 0 0 10.92-5.25l92.4-138.91c4.88-6.91-1.16-15.7-10.87-15.7zM478.08.33L329.51 23.17C314.87 25.42 304 38.92 304 54.83V161.6a83.25 83.25 0 0 0-16-1.7c-35.35 0-64 21.48-64 48s28.65 48 64 48c35.2 0 63.73-21.32 64-47.66V99.66l112-17.22v47.18a83.25 83.25 0 0 0-16-1.7c-35.35 0-64 21.48-64 48s28.65 48 64 48c35.2 0 63.73-21.32 64-47.66V32c0-19.48-16-34.42-33.92-31.67z\"]\n};\nvar faIdBadge = {\n  prefix: 'fas',\n  iconName: 'id-badge',\n  icon: [384, 512, [], \"f2c1\", \"M336 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM144 32h96c8.8 0 16 7.2 16 16s-7.2 16-16 16h-96c-8.8 0-16-7.2-16-16s7.2-16 16-16zm48 128c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H102.4C90 416 80 407.4 80 396.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2z\"]\n};\nvar faIdCard = {\n  prefix: 'fas',\n  iconName: 'id-card',\n  icon: [576, 512, [], \"f2c2\", \"M528 32H48C21.5 32 0 53.5 0 80v16h576V80c0-26.5-21.5-48-48-48zM0 432c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V128H0v304zm352-232c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16zm0 64c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16zm0 64c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16zM176 192c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zM67.1 396.2C75.5 370.5 99.6 352 128 352h8.2c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h8.2c28.4 0 52.5 18.5 60.9 44.2 3.2 9.9-5.2 19.8-15.6 19.8H82.7c-10.4 0-18.8-10-15.6-19.8z\"]\n};\nvar faIdCardAlt = {\n  prefix: 'fas',\n  iconName: 'id-card-alt',\n  icon: [576, 512, [], \"f47f\", \"M528 64H384v96H192V64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM288 224c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm93.3 224H194.7c-10.4 0-18.8-10-15.6-19.8 8.3-25.6 32.4-44.2 60.9-44.2h8.2c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h8.2c28.4 0 52.5 18.5 60.9 44.2 3.2 9.8-5.2 19.8-15.6 19.8zM352 32c0-17.7-14.3-32-32-32h-64c-17.7 0-32 14.3-32 32v96h128V32z\"]\n};\nvar faIgloo = {\n  prefix: 'fas',\n  iconName: 'igloo',\n  icon: [576, 512, [], \"f7ae\", \"M320 33.9c-10.5-1.2-21.2-1.9-32-1.9-99.8 0-187.8 50.8-239.4 128H320V33.9zM96 192H30.3C11.1 230.6 0 274 0 320h96V192zM352 39.4V160h175.4C487.2 99.9 424.8 55.9 352 39.4zM480 320h96c0-46-11.1-89.4-30.3-128H480v128zm-64 64v96h128c17.7 0 32-14.3 32-32v-96H411.5c2.6 10.3 4.5 20.9 4.5 32zm32-192H128v128h49.8c22.2-38.1 63-64 110.2-64s88 25.9 110.2 64H448V192zM0 448c0 17.7 14.3 32 32 32h128v-96c0-11.1 1.9-21.7 4.5-32H0v96zm288-160c-53 0-96 43-96 96v96h192v-96c0-53-43-96-96-96z\"]\n};\nvar faImage = {\n  prefix: 'fas',\n  iconName: 'image',\n  icon: [512, 512, [], \"f03e\", \"M464 448H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48zM112 120c-30.928 0-56 25.072-56 56s25.072 56 56 56 56-25.072 56-56-25.072-56-56-56zM64 384h384V272l-87.515-87.515c-4.686-4.686-12.284-4.686-16.971 0L208 320l-55.515-55.515c-4.686-4.686-12.284-4.686-16.971 0L64 336v48z\"]\n};\nvar faImages = {\n  prefix: 'fas',\n  iconName: 'images',\n  icon: [576, 512, [], \"f302\", \"M480 416v16c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V176c0-26.51 21.49-48 48-48h16v208c0 44.112 35.888 80 80 80h336zm96-80V80c0-26.51-21.49-48-48-48H144c-26.51 0-48 21.49-48 48v256c0 26.51 21.49 48 48 48h384c26.51 0 48-21.49 48-48zM256 128c0 26.51-21.49 48-48 48s-48-21.49-48-48 21.49-48 48-48 48 21.49 48 48zm-96 144l55.515-55.515c4.686-4.686 12.284-4.686 16.971 0L272 256l135.515-135.515c4.686-4.686 12.284-4.686 16.971 0L512 208v112H160v-48z\"]\n};\nvar faInbox = {\n  prefix: 'fas',\n  iconName: 'inbox',\n  icon: [576, 512, [], \"f01c\", \"M567.938 243.908L462.25 85.374A48.003 48.003 0 0 0 422.311 64H153.689a48 48 0 0 0-39.938 21.374L8.062 243.908A47.994 47.994 0 0 0 0 270.533V400c0 26.51 21.49 48 48 48h480c26.51 0 48-21.49 48-48V270.533a47.994 47.994 0 0 0-8.062-26.625zM162.252 128h251.497l85.333 128H376l-32 64H232l-32-64H76.918l85.334-128z\"]\n};\nvar faIndent = {\n  prefix: 'fas',\n  iconName: 'indent',\n  icon: [448, 512, [], \"f03c\", \"M27.31 363.3l96-96a16 16 0 0 0 0-22.62l-96-96C17.27 138.66 0 145.78 0 160v192c0 14.31 17.33 21.3 27.31 11.3zM432 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm3.17-128H204.83A12.82 12.82 0 0 0 192 300.83v38.34A12.82 12.82 0 0 0 204.83 352h230.34A12.82 12.82 0 0 0 448 339.17v-38.34A12.82 12.82 0 0 0 435.17 288zm0-128H204.83A12.82 12.82 0 0 0 192 172.83v38.34A12.82 12.82 0 0 0 204.83 224h230.34A12.82 12.82 0 0 0 448 211.17v-38.34A12.82 12.82 0 0 0 435.17 160zM432 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faIndustry = {\n  prefix: 'fas',\n  iconName: 'industry',\n  icon: [512, 512, [], \"f275\", \"M475.115 163.781L336 252.309v-68.28c0-18.916-20.931-30.399-36.885-20.248L160 252.309V56c0-13.255-10.745-24-24-24H24C10.745 32 0 42.745 0 56v400c0 13.255 10.745 24 24 24h464c13.255 0 24-10.745 24-24V184.029c0-18.917-20.931-30.399-36.885-20.248z\"]\n};\nvar faInfinity = {\n  prefix: 'fas',\n  iconName: 'infinity',\n  icon: [640, 512, [], \"f534\", \"M471.1 96C405 96 353.3 137.3 320 174.6 286.7 137.3 235 96 168.9 96 75.8 96 0 167.8 0 256s75.8 160 168.9 160c66.1 0 117.8-41.3 151.1-78.6 33.3 37.3 85 78.6 151.1 78.6 93.1 0 168.9-71.8 168.9-160S564.2 96 471.1 96zM168.9 320c-40.2 0-72.9-28.7-72.9-64s32.7-64 72.9-64c38.2 0 73.4 36.1 94 64-20.4 27.6-55.9 64-94 64zm302.2 0c-38.2 0-73.4-36.1-94-64 20.4-27.6 55.9-64 94-64 40.2 0 72.9 28.7 72.9 64s-32.7 64-72.9 64z\"]\n};\nvar faInfo = {\n  prefix: 'fas',\n  iconName: 'info',\n  icon: [192, 512, [], \"f129\", \"M20 424.229h20V279.771H20c-11.046 0-20-8.954-20-20V212c0-11.046 8.954-20 20-20h112c11.046 0 20 8.954 20 20v212.229h20c11.046 0 20 8.954 20 20V492c0 11.046-8.954 20-20 20H20c-11.046 0-20-8.954-20-20v-47.771c0-11.046 8.954-20 20-20zM96 0C56.235 0 24 32.235 24 72s32.235 72 72 72 72-32.235 72-72S135.764 0 96 0z\"]\n};\nvar faInfoCircle = {\n  prefix: 'fas',\n  iconName: 'info-circle',\n  icon: [512, 512, [], \"f05a\", \"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z\"]\n};\nvar faItalic = {\n  prefix: 'fas',\n  iconName: 'italic',\n  icon: [320, 512, [], \"f033\", \"M320 48v32a16 16 0 0 1-16 16h-62.76l-80 320H208a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16H16a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h62.76l80-320H112a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16h192a16 16 0 0 1 16 16z\"]\n};\nvar faJedi = {\n  prefix: 'fas',\n  iconName: 'jedi',\n  icon: [576, 512, [], \"f669\", \"M535.95308,352c-42.64069,94.17188-137.64086,160-247.9848,160q-6.39844,0-12.84377-.29688C171.15558,506.9375,81.26481,442.23438,40.01474,352H79.93668L21.3272,293.40625a264.82522,264.82522,0,0,1-5.10938-39.42187,273.6653,273.6653,0,0,1,.5-29.98438H63.93665L22.546,182.625A269.79782,269.79782,0,0,1,130.51489,20.54688a16.06393,16.06393,0,0,1,9.28127-3,16.36332,16.36332,0,0,1,13.5,7.25,16.02739,16.02739,0,0,1,1.625,15.09374,138.387,138.387,0,0,0-9.84376,51.26563c0,45.10937,21.04691,86.57813,57.71884,113.73437a16.29989,16.29989,0,0,1,1.20313,25.39063c-26.54692,23.98437-41.17194,56.5-41.17194,91.57813,0,60.03124,42.95319,110.28124,99.89079,121.92187l2.5-65.26563L238.062,397a8.33911,8.33911,0,0,1-10-.75,8.025,8.025,0,0,1-1.39063-9.9375l20.125-33.76562-42.06257-8.73438a7.9898,7.9898,0,0,1,0-15.65625l42.06257-8.71875-20.10941-33.73438a7.99122,7.99122,0,0,1,11.35939-10.71874L268.437,295.64062,279.95265,7.67188a7.97138,7.97138,0,0,1,8-7.67188h.04687a8.02064,8.02064,0,0,1,7.95314,7.70312L307.48394,295.625l30.39068-20.67188a8.08327,8.08327,0,0,1,10,.8125,7.99866,7.99866,0,0,1,1.39062,9.90626L329.12461,319.4375l42.07819,8.73438a7.99373,7.99373,0,0,1,0,15.65624l-42.07819,8.71876,20.1094,33.73437a7.97791,7.97791,0,0,1-1.32812,9.92187A8.25739,8.25739,0,0,1,337.87462,397L310.7027,378.53125l2.5,65.34375c48.48446-9.40625,87.57828-48.15625,97.31267-96.5A123.52652,123.52652,0,0,0,371.9528,230.29688a16.30634,16.30634,0,0,1,1.20313-25.42188c36.65631-27.17188,57.6876-68.60938,57.6876-113.73438a138.01689,138.01689,0,0,0-9.85939-51.3125,15.98132,15.98132,0,0,1,1.60937-15.09374,16.36914,16.36914,0,0,1,13.5-7.23438,16.02453,16.02453,0,0,1,9.25,2.98438A271.26947,271.26947,0,0,1,553.25,182.76562L511.99992,224h46.9532C559.3125,229.76562,560,235.45312,560,241.26562a270.092,270.092,0,0,1-5.125,51.85938L495.98427,352Z\"]\n};\nvar faJoint = {\n  prefix: 'fas',\n  iconName: 'joint',\n  icon: [640, 512, [], \"f595\", \"M444.34 181.1c22.38 15.68 35.66 41.16 35.66 68.59V280c0 4.42 3.58 8 8 8h48c4.42 0 8-3.58 8-8v-30.31c0-43.24-21.01-83.41-56.34-108.06C463.85 125.02 448 99.34 448 70.31V8c0-4.42-3.58-8-8-8h-48c-4.42 0-8 3.58-8 8v66.4c0 43.69 24.56 81.63 60.34 106.7zM194.97 358.98C126.03 370.07 59.69 394.69 0 432c83.65 52.28 180.3 80 278.94 80h88.57L254.79 380.49c-14.74-17.2-37.45-25.11-59.82-21.51zM553.28 87.09c-5.67-3.8-9.28-9.96-9.28-16.78V8c0-4.42-3.58-8-8-8h-48c-4.42 0-8 3.58-8 8v62.31c0 22.02 10.17 43.41 28.64 55.39C550.79 153.04 576 199.54 576 249.69V280c0 4.42 3.58 8 8 8h48c4.42 0 8-3.58 8-8v-30.31c0-65.44-32.41-126.19-86.72-162.6zM360.89 352.05c-34.4.06-86.81.15-88.21.17l117.8 137.43A63.987 63.987 0 0 0 439.07 512h88.45L409.57 374.4a63.955 63.955 0 0 0-48.68-22.35zM616 352H432l117.99 137.65A63.987 63.987 0 0 0 598.58 512H616c13.25 0 24-10.75 24-24V376c0-13.26-10.75-24-24-24z\"]\n};\nvar faJournalWhills = {\n  prefix: 'fas',\n  iconName: 'journal-whills',\n  icon: [448, 512, [], \"f66a\", \"M438.40625,377.59375c-3.20313,12.8125-3.20313,57.60937,0,73.60937Q447.9922,460.78907,448,470.40625v16c0,16-12.79688,25.59375-25.59375,25.59375H96c-54.40625,0-96-41.59375-96-96V96C0,41.59375,41.59375,0,96,0H422.40625C438.40625,0,448,9.59375,448,25.59375v332.8125Q448,372.79688,438.40625,377.59375ZM380.79688,384H96c-16,0-32,12.79688-32,32s12.79688,32,32,32H380.79688ZM128.01562,176.01562c0,.51563.14063.98438.14063,1.5l37.10937,32.46876A7.99954,7.99954,0,0,1,160,224h-.01562a9.17678,9.17678,0,0,1-5.25-1.98438L131.14062,201.375C142.6875,250.95312,186.90625,288,240,288s97.3125-37.04688,108.875-86.625l-23.59375,20.64062a8.02516,8.02516,0,0,1-5.26563,1.96876H320a9.14641,9.14641,0,0,1-6.01562-2.71876A9.26508,9.26508,0,0,1,312,216a9.097,9.097,0,0,1,2.73438-6.01562l37.10937-32.46876c.01563-.53124.15625-1,.15625-1.51562,0-11.04688-2.09375-21.51562-5.06251-31.59375l-21.26562,21.25a8.00467,8.00467,0,0,1-11.32812-11.3125l26.42187-26.40625a111.81517,111.81517,0,0,0-46.35937-49.26562,63.02336,63.02336,0,0,1-14.0625,82.64062A55.83846,55.83846,0,0,1,251.625,254.73438l-1.42188-34.28126,12.67188,8.625a3.967,3.967,0,0,0,2.25.6875,3.98059,3.98059,0,0,0,3.43749-6.03124l-8.53124-14.3125,17.90625-3.71876a4.00647,4.00647,0,0,0,0-7.84374l-17.90625-3.71876,8.53124-14.3125a3.98059,3.98059,0,0,0-3.43749-6.03124,4.726,4.726,0,0,0-2.25.67187L248.6875,184.125,244,71.82812a4.00386,4.00386,0,0,0-8,0l-4.625,110.8125-12-8.15624a4.003,4.003,0,0,0-5.68751,5.35937l8.53126,14.3125L204.3125,197.875a3.99686,3.99686,0,0,0,0,7.82812l17.90625,3.73438-8.53126,14.29688a4.72469,4.72469,0,0,0-.56249,2.04687,4.59547,4.59547,0,0,0,1.25,2.90625,4.01059,4.01059,0,0,0,2.75,1.09375,4.09016,4.09016,0,0,0,2.25-.6875l10.35937-7.04687L228.375,254.76562a55.86414,55.86414,0,0,1-28.71875-93.45312,63.01119,63.01119,0,0,1-14.04688-82.65625,111.93158,111.93158,0,0,0-46.375,49.26563l26.42187,26.42187a7.99917,7.99917,0,0,1-11.3125,11.3125l-21.26563-21.26563C130.09375,154.48438,128,164.95312,128.01562,176.01562Z\"]\n};\nvar faKaaba = {\n  prefix: 'fas',\n  iconName: 'kaaba',\n  icon: [576, 512, [], \"f66b\", \"M554.12 83.51L318.36 4.93a95.962 95.962 0 0 0-60.71 0L21.88 83.51A32.006 32.006 0 0 0 0 113.87v49.01l265.02-79.51c15.03-4.5 30.92-4.5 45.98 0l265 79.51v-49.01c0-13.77-8.81-26-21.88-30.36zm-279.9 30.52L0 196.3v228.38c0 15 10.42 27.98 25.06 31.24l242.12 53.8a95.937 95.937 0 0 0 41.65 0l242.12-53.8c14.64-3.25 25.06-16.24 25.06-31.24V196.29l-274.2-82.26c-9.04-2.72-18.59-2.72-27.59 0zM128 230.11c0 3.61-2.41 6.77-5.89 7.72l-80 21.82C37.02 261.03 32 257.2 32 251.93v-16.58c0-3.61 2.41-6.77 5.89-7.72l80-21.82c5.09-1.39 10.11 2.44 10.11 7.72v16.58zm144-39.28c0 3.61-2.41 6.77-5.89 7.72l-96 26.18c-5.09 1.39-10.11-2.44-10.11-7.72v-16.58c0-3.61 2.41-6.77 5.89-7.72l96-26.18c5.09-1.39 10.11 2.44 10.11 7.72v16.58zm176 22.7c0-5.28 5.02-9.11 10.11-7.72l80 21.82c3.48.95 5.89 4.11 5.89 7.72v16.58c0 5.28-5.02 9.11-10.11 7.72l-80-21.82a7.997 7.997 0 0 1-5.89-7.72v-16.58zm-144-39.27c0-5.28 5.02-9.11 10.11-7.72l96 26.18c3.48.95 5.89 4.11 5.89 7.72v16.58c0 5.28-5.02 9.11-10.11 7.72l-96-26.18a7.997 7.997 0 0 1-5.89-7.72v-16.58z\"]\n};\nvar faKey = {\n  prefix: 'fas',\n  iconName: 'key',\n  icon: [512, 512, [], \"f084\", \"M512 176.001C512 273.203 433.202 352 336 352c-11.22 0-22.19-1.062-32.827-3.069l-24.012 27.014A23.999 23.999 0 0 1 261.223 384H224v40c0 13.255-10.745 24-24 24h-40v40c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24v-78.059c0-6.365 2.529-12.47 7.029-16.971l161.802-161.802C163.108 213.814 160 195.271 160 176 160 78.798 238.797.001 335.999 0 433.488-.001 512 78.511 512 176.001zM336 128c0 26.51 21.49 48 48 48s48-21.49 48-48-21.49-48-48-48-48 21.49-48 48z\"]\n};\nvar faKeyboard = {\n  prefix: 'fas',\n  iconName: 'keyboard',\n  icon: [576, 512, [], \"f11c\", \"M528 448H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h480c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48zM128 180v-40c0-6.627-5.373-12-12-12H76c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm-336 96v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm-336 96v-40c0-6.627-5.373-12-12-12H76c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm288 0v-40c0-6.627-5.373-12-12-12H172c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h232c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12z\"]\n};\nvar faKhanda = {\n  prefix: 'fas',\n  iconName: 'khanda',\n  icon: [512, 512, [], \"f66d\", \"M415.81 66c-6.37-3.5-14.37-2.33-19.36 3.02a15.974 15.974 0 0 0-1.91 19.52c16.49 26.16 25.2 56.39 25.2 87.41-.19 53.25-26.77 102.69-71.27 132.41l-76.63 53.35v-20.1l44.05-36.09c3.92-4.2 5-10.09 2.81-15.28L310.85 273c33.84-19.26 56.94-55.25 56.94-96.99 0-40.79-22.02-76.13-54.59-95.71l5.22-11.44c2.34-5.53.93-11.83-3.57-16.04L255.86 0l-58.99 52.81c-4.5 4.21-5.9 10.51-3.57 16.04l5.22 11.44c-32.57 19.58-54.59 54.93-54.59 95.72 0 41.75 23.09 77.73 56.94 96.99l-7.85 17.24c-2.19 5.18-1.1 11.07 2.81 15.28l44.05 36.09v19.9l-76.59-53.33C119.02 278.62 92.44 229.19 92.26 176c0-31.08 8.71-61.31 25.2-87.47 3.87-6.16 2.4-13.77-2.59-19.08-5-5.34-13.68-6.2-20.02-2.7C16.32 109.6-22.3 205.3 13.36 295.99c7.07 17.99 17.89 34.38 30.46 49.06l55.97 65.36c4.87 5.69 13.04 7.24 19.65 3.72l79.35-42.23L228 392.23l-47.08 32.78c-1.67-.37-3.23-1.01-5.01-1.01-13.25 0-23.99 10.74-23.99 24 0 13.25 10.74 24 23.99 24 12.1 0 21.69-9.11 23.33-20.76l40.63-28.28v29.95c-9.39 5.57-15.99 15.38-15.99 27.1 0 17.67 14.32 32 31.98 32s31.98-14.33 31.98-32c0-11.71-6.61-21.52-15.99-27.1v-30.15l40.91 28.48C314.41 462.89 324 472 336.09 472c13.25 0 23.99-10.75 23.99-24 0-13.26-10.74-24-23.99-24-1.78 0-3.34.64-5.01 1.01L284 392.23l29.21-20.34 79.35 42.23c6.61 3.52 14.78 1.97 19.65-3.71l52.51-61.31c18.87-22.02 34-47.5 41.25-75.59 21.62-83.66-16.45-167.27-90.16-207.51zm-95.99 110c0 22.3-11.49 41.92-28.83 53.38l-5.65-12.41c-8.75-24.52-8.75-51.04 0-75.56l7.83-17.18c16.07 11.65 26.65 30.45 26.65 51.77zm-127.93 0c0-21.32 10.58-40.12 26.66-51.76l7.83 17.18c8.75 24.52 8.75 51.03 0 75.56l-5.65 12.41c-17.34-11.46-28.84-31.09-28.84-53.39z\"]\n};\nvar faKiss = {\n  prefix: 'fas',\n  iconName: 'kiss',\n  icon: [496, 512, [], \"f596\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-80 232c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm136 156c0 19.2-28.7 41.5-71.5 44-8.5.8-12.1-11.8-3.6-15.4l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-6-2.5-6.1-12.2 0-14.8l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-8.6-3.6-4.8-16.5 3.6-15.4 42.8 2.5 71.5 24.8 71.5 44 0 13-13.4 27.3-35.2 36C290.6 368.7 304 383 304 396zm24-156c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faKissBeam = {\n  prefix: 'fas',\n  iconName: 'kiss-beam',\n  icon: [496, 512, [], \"f597\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-39 219.9l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.5 8.5-10.9 12-15.1 4.5zM304 396c0 19.2-28.7 41.5-71.5 44-8.5.8-12.1-11.8-3.6-15.4l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-6-2.5-6.1-12.2 0-14.8l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-8.6-3.6-4.8-16.5 3.6-15.4 42.8 2.5 71.5 24.8 71.5 44 0 13-13.4 27.3-35.2 36C290.6 368.7 304 383 304 396zm65-168.1l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.1 7.3-15.6 4-14.9-4.5 3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.5 8.5-10.9 12-15.1 4.5z\"]\n};\nvar faKissWinkHeart = {\n  prefix: 'fas',\n  iconName: 'kiss-wink-heart',\n  icon: [504, 512, [], \"f598\", \"M501.1 402.5c-8-20.8-31.5-31.5-53.1-25.9l-8.4 2.2-2.3-8.4c-5.9-21.4-27-36.5-49-33-25.2 4-40.6 28.6-34 52.6l22.9 82.6c1.5 5.3 7 8.5 12.4 7.1l83-21.5c24.1-6.3 37.7-31.8 28.5-55.7zm-177.6-4c-5.6-20.3-2.3-42 9-59.7 29.7-46.3 98.7-45.5 127.8 4.3 6.4.1 12.6 1.4 18.6 2.9 10.9-27.9 17.1-58.2 17.1-90C496 119 385 8 248 8S0 119 0 256s111 248 248 248c35.4 0 68.9-7.5 99.4-20.9-.3-.7-23.9-84.6-23.9-84.6zM168 240c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm120 156c0 19.2-28.7 41.5-71.5 44-8.5.8-12.1-11.8-3.6-15.4l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-6-2.5-5.7-12.3 0-14.8l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-8.8-3.7-4.6-16.6 3.6-15.4 42.8 2.5 71.5 24.8 71.5 44 0 13-13.4 27.3-35.2 36C274.6 368.7 288 383 288 396zm16-179c-8.3 7.4-21.6.4-19.8-10.8 4-25.2 34.2-42.1 59.9-42.1S400 181 404 206.2c1.7 11.1-11.3 18.3-19.8 10.8l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L304 217z\"]\n};\nvar faKiwiBird = {\n  prefix: 'fas',\n  iconName: 'kiwi-bird',\n  icon: [576, 512, [], \"f535\", \"M575.81 217.98C572.64 157.41 518.28 112 457.63 112h-9.37c-52.82 0-104.25-16.25-147.74-46.24-41.99-28.96-96.04-41.62-153.21-28.7C129.3 41.12-.08 78.24 0 224c.04 70.95 38.68 132.8 95.99 166.01V464c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-54.26c15.36 3.96 31.4 6.26 48 6.26 5.44 0 10.68-.73 16-1.18V464c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-59.43c14.24-5.06 27.88-11.39 40.34-19.51C342.07 355.25 393.86 336 448.46 336c25.48 0 16.01-.31 23.05-.78l74.41 136.44c2.86 5.23 8.3 8.34 14.05 8.34 1.31 0 2.64-.16 3.95-.5 7.09-1.8 12.05-8.19 12.05-15.5 0 0 .14-240.24-.16-246.02zM463.97 248c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm80 153.25l-39.86-73.08c15.12-5.83 28.73-14.6 39.86-25.98v99.06z\"]\n};\nvar faLandmark = {\n  prefix: 'fas',\n  iconName: 'landmark',\n  icon: [512, 512, [], \"f66f\", \"M501.62 92.11L267.24 2.04a31.958 31.958 0 0 0-22.47 0L10.38 92.11A16.001 16.001 0 0 0 0 107.09V144c0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16v-36.91c0-6.67-4.14-12.64-10.38-14.98zM64 192v160H48c-8.84 0-16 7.16-16 16v48h448v-48c0-8.84-7.16-16-16-16h-16V192h-64v160h-96V192h-64v160h-96V192H64zm432 256H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z\"]\n};\nvar faLanguage = {\n  prefix: 'fas',\n  iconName: 'language',\n  icon: [640, 512, [], \"f1ab\", \"M152.1 236.2c-3.5-12.1-7.8-33.2-7.8-33.2h-.5s-4.3 21.1-7.8 33.2l-11.1 37.5H163zM616 96H336v320h280c13.3 0 24-10.7 24-24V120c0-13.3-10.7-24-24-24zm-24 120c0 6.6-5.4 12-12 12h-11.4c-6.9 23.6-21.7 47.4-42.7 69.9 8.4 6.4 17.1 12.5 26.1 18 5.5 3.4 7.3 10.5 4.1 16.2l-7.9 13.9c-3.4 5.9-10.9 7.8-16.7 4.3-12.6-7.8-24.5-16.1-35.4-24.9-10.9 8.7-22.7 17.1-35.4 24.9-5.8 3.5-13.3 1.6-16.7-4.3l-7.9-13.9c-3.2-5.6-1.4-12.8 4.2-16.2 9.3-5.7 18-11.7 26.1-18-7.9-8.4-14.9-17-21-25.7-4-5.7-2.2-13.6 3.7-17.1l6.5-3.9 7.3-4.3c5.4-3.2 12.4-1.7 16 3.4 5 7 10.8 14 17.4 20.9 13.5-14.2 23.8-28.9 30-43.2H412c-6.6 0-12-5.4-12-12v-16c0-6.6 5.4-12 12-12h64v-16c0-6.6 5.4-12 12-12h16c6.6 0 12 5.4 12 12v16h64c6.6 0 12 5.4 12 12zM0 120v272c0 13.3 10.7 24 24 24h280V96H24c-13.3 0-24 10.7-24 24zm58.9 216.1L116.4 167c1.7-4.9 6.2-8.1 11.4-8.1h32.5c5.1 0 9.7 3.3 11.4 8.1l57.5 169.1c2.6 7.8-3.1 15.9-11.4 15.9h-22.9a12 12 0 0 1-11.5-8.6l-9.4-31.9h-60.2l-9.1 31.8c-1.5 5.1-6.2 8.7-11.5 8.7H70.3c-8.2 0-14-8.1-11.4-15.9z\"]\n};\nvar faLaptop = {\n  prefix: 'fas',\n  iconName: 'laptop',\n  icon: [640, 512, [], \"f109\", \"M624 416H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33.02-17.47-32.77-32H16c-8.8 0-16 7.2-16 16v16c0 35.2 28.8 64 64 64h512c35.2 0 64-28.8 64-64v-16c0-8.8-7.2-16-16-16zM576 48c0-26.4-21.6-48-48-48H112C85.6 0 64 21.6 64 48v336h512V48zm-64 272H128V64h384v256z\"]\n};\nvar faLaptopCode = {\n  prefix: 'fas',\n  iconName: 'laptop-code',\n  icon: [640, 512, [], \"f5fc\", \"M255.03 261.65c6.25 6.25 16.38 6.25 22.63 0l11.31-11.31c6.25-6.25 6.25-16.38 0-22.63L253.25 192l35.71-35.72c6.25-6.25 6.25-16.38 0-22.63l-11.31-11.31c-6.25-6.25-16.38-6.25-22.63 0l-58.34 58.34c-6.25 6.25-6.25 16.38 0 22.63l58.35 58.34zm96.01-11.3l11.31 11.31c6.25 6.25 16.38 6.25 22.63 0l58.34-58.34c6.25-6.25 6.25-16.38 0-22.63l-58.34-58.34c-6.25-6.25-16.38-6.25-22.63 0l-11.31 11.31c-6.25 6.25-6.25 16.38 0 22.63L386.75 192l-35.71 35.72c-6.25 6.25-6.25 16.38 0 22.63zM624 416H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33.02-17.47-32.77-32H16c-8.8 0-16 7.2-16 16v16c0 35.2 28.8 64 64 64h512c35.2 0 64-28.8 64-64v-16c0-8.8-7.2-16-16-16zM576 48c0-26.4-21.6-48-48-48H112C85.6 0 64 21.6 64 48v336h512V48zm-64 272H128V64h384v256z\"]\n};\nvar faLaptopHouse = {\n  prefix: 'fas',\n  iconName: 'laptop-house',\n  icon: [640, 512, [], \"e066\", \"M272,288H208a16,16,0,0,1-16-16V208a16,16,0,0,1,16-16h64a16,16,0,0,1,16,16v37.12C299.11,232.24,315,224,332.8,224H469.74l6.65-7.53A16.51,16.51,0,0,0,480,207a16.31,16.31,0,0,0-4.75-10.61L416,144V48a16,16,0,0,0-16-16H368a16,16,0,0,0-16,16V87.3L263.5,8.92C258,4,247.45,0,240.05,0s-17.93,4-23.47,8.92L4.78,196.42A16.15,16.15,0,0,0,0,207a16.4,16.4,0,0,0,3.55,9.39L22.34,237.7A16.22,16.22,0,0,0,33,242.48,16.51,16.51,0,0,0,42.34,239L64,219.88V384a32,32,0,0,0,32,32H272ZM629.33,448H592V288c0-17.67-12.89-32-28.8-32H332.8c-15.91,0-28.8,14.33-28.8,32V448H266.67A10.67,10.67,0,0,0,256,458.67v10.66A42.82,42.82,0,0,0,298.6,512H597.4A42.82,42.82,0,0,0,640,469.33V458.67A10.67,10.67,0,0,0,629.33,448ZM544,448H352V304H544Z\"]\n};\nvar faLaptopMedical = {\n  prefix: 'fas',\n  iconName: 'laptop-medical',\n  icon: [640, 512, [], \"f812\", \"M232 224h56v56a8 8 0 0 0 8 8h48a8 8 0 0 0 8-8v-56h56a8 8 0 0 0 8-8v-48a8 8 0 0 0-8-8h-56v-56a8 8 0 0 0-8-8h-48a8 8 0 0 0-8 8v56h-56a8 8 0 0 0-8 8v48a8 8 0 0 0 8 8zM576 48a48.14 48.14 0 0 0-48-48H112a48.14 48.14 0 0 0-48 48v336h512zm-64 272H128V64h384zm112 96H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33-17.47-32.77-32H16a16 16 0 0 0-16 16v16a64.19 64.19 0 0 0 64 64h512a64.19 64.19 0 0 0 64-64v-16a16 16 0 0 0-16-16z\"]\n};\nvar faLaugh = {\n  prefix: 'fas',\n  iconName: 'laugh',\n  icon: [496, 512, [], \"f599\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 152c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm88 272h-16c-73.4 0-134-55-142.9-126-1.2-9.5 6.3-18 15.9-18h270c9.6 0 17.1 8.4 15.9 18-8.9 71-69.5 126-142.9 126z\"]\n};\nvar faLaughBeam = {\n  prefix: 'fas',\n  iconName: 'laugh-beam',\n  icon: [496, 512, [], \"f59a\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm24 199.4c3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.8 4.1-15.1-4.5zm-160 0c3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.3 7.4-15.8 4-15.1-4.5zM398.9 306C390 377 329.4 432 256 432h-16c-73.4 0-134-55-142.9-126-1.2-9.5 6.3-18 15.9-18h270c9.6 0 17.1 8.4 15.9 18z\"]\n};\nvar faLaughSquint = {\n  prefix: 'fas',\n  iconName: 'laugh-squint',\n  icon: [496, 512, [], \"f59b\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm33.8 161.7l80-48c11.6-6.9 24 7.7 15.4 18L343.6 180l33.6 40.3c8.7 10.4-3.9 24.8-15.4 18l-80-48c-7.7-4.7-7.7-15.9 0-20.6zm-163-30c-8.6-10.3 3.8-24.9 15.4-18l80 48c7.8 4.7 7.8 15.9 0 20.6l-80 48c-11.5 6.8-24-7.6-15.4-18l33.6-40.3-33.6-40.3zM398.9 306C390 377 329.4 432 256 432h-16c-73.4 0-134-55-142.9-126-1.2-9.5 6.3-18 15.9-18h270c9.6 0 17.1 8.4 15.9 18z\"]\n};\nvar faLaughWink = {\n  prefix: 'fas',\n  iconName: 'laugh-wink',\n  icon: [496, 512, [], \"f59c\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm20.1 198.1c4-25.2 34.2-42.1 59.9-42.1s55.9 16.9 59.9 42.1c1.7 11.1-11.4 18.3-19.8 10.8l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L288 217c-8.4 7.4-21.6.3-19.9-10.9zM168 160c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm230.9 146C390 377 329.4 432 256 432h-16c-73.4 0-134-55-142.9-126-1.2-9.5 6.3-18 15.9-18h270c9.6 0 17.1 8.4 15.9 18z\"]\n};\nvar faLayerGroup = {\n  prefix: 'fas',\n  iconName: 'layer-group',\n  icon: [512, 512, [], \"f5fd\", \"M12.41 148.02l232.94 105.67c6.8 3.09 14.49 3.09 21.29 0l232.94-105.67c16.55-7.51 16.55-32.52 0-40.03L266.65 2.31a25.607 25.607 0 0 0-21.29 0L12.41 107.98c-16.55 7.51-16.55 32.53 0 40.04zm487.18 88.28l-58.09-26.33-161.64 73.27c-7.56 3.43-15.59 5.17-23.86 5.17s-16.29-1.74-23.86-5.17L70.51 209.97l-58.1 26.33c-16.55 7.5-16.55 32.5 0 40l232.94 105.59c6.8 3.08 14.49 3.08 21.29 0L499.59 276.3c16.55-7.5 16.55-32.5 0-40zm0 127.8l-57.87-26.23-161.86 73.37c-7.56 3.43-15.59 5.17-23.86 5.17s-16.29-1.74-23.86-5.17L70.29 337.87 12.41 364.1c-16.55 7.5-16.55 32.5 0 40l232.94 105.59c6.8 3.08 14.49 3.08 21.29 0L499.59 404.1c16.55-7.5 16.55-32.5 0-40z\"]\n};\nvar faLeaf = {\n  prefix: 'fas',\n  iconName: 'leaf',\n  icon: [576, 512, [], \"f06c\", \"M546.2 9.7c-5.6-12.5-21.6-13-28.3-1.2C486.9 62.4 431.4 96 368 96h-80C182 96 96 182 96 288c0 7 .8 13.7 1.5 20.5C161.3 262.8 253.4 224 384 224c8.8 0 16 7.2 16 16s-7.2 16-16 16C132.6 256 26 410.1 2.4 468c-6.6 16.3 1.2 34.9 17.5 41.6 16.4 6.8 35-1.1 41.8-17.3 1.5-3.6 20.9-47.9 71.9-90.6 32.4 43.9 94 85.8 174.9 77.2C465.5 467.5 576 326.7 576 154.3c0-50.2-10.8-102.2-29.8-144.6z\"]\n};\nvar faLemon = {\n  prefix: 'fas',\n  iconName: 'lemon',\n  icon: [512, 512, [], \"f094\", \"M489.038 22.963C465.944-.13 434.648-5.93 413.947 6.129c-58.906 34.312-181.25-53.077-321.073 86.746S40.441 355.041 6.129 413.945c-12.059 20.702-6.26 51.999 16.833 75.093 23.095 23.095 54.392 28.891 75.095 16.832 58.901-34.31 181.246 53.079 321.068-86.743S471.56 156.96 505.871 98.056c12.059-20.702 6.261-51.999-16.833-75.093zM243.881 95.522c-58.189 14.547-133.808 90.155-148.358 148.358-1.817 7.27-8.342 12.124-15.511 12.124-1.284 0-2.59-.156-3.893-.481-8.572-2.144-13.784-10.83-11.642-19.403C81.901 166.427 166.316 81.93 236.119 64.478c8.575-2.143 17.261 3.069 19.403 11.642s-3.069 17.259-11.641 19.402z\"]\n};\nvar faLessThan = {\n  prefix: 'fas',\n  iconName: 'less-than',\n  icon: [384, 512, [], \"f536\", \"M365.46 357.74L147.04 255.89l218.47-101.88c16.02-7.47 22.95-26.51 15.48-42.53l-13.52-29C360 66.46 340.96 59.53 324.94 67L18.48 209.91a32.014 32.014 0 0 0-18.48 29v34.24c0 12.44 7.21 23.75 18.48 29l306.31 142.83c16.06 7.49 35.15.54 42.64-15.52l13.56-29.08c7.49-16.06.54-35.15-15.53-42.64z\"]\n};\nvar faLessThanEqual = {\n  prefix: 'fas',\n  iconName: 'less-than-equal',\n  icon: [448, 512, [], \"f537\", \"M54.98 214.2l301.41 119.87c18.39 6.03 38.71-2.54 45.38-19.15l12.09-30.08c6.68-16.61-2.82-34.97-21.21-41l-175.44-68.05 175.56-68.09c18.29-6 27.74-24.27 21.1-40.79l-12.03-29.92c-6.64-16.53-26.86-25.06-45.15-19.06L54.98 137.89C41.21 142.41 32 154.5 32 168.07v15.96c0 13.56 9.21 25.65 22.98 30.17zM424 400H24c-13.25 0-24 10.74-24 24v48c0 13.25 10.75 24 24 24h400c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24z\"]\n};\nvar faLevelDownAlt = {\n  prefix: 'fas',\n  iconName: 'level-down-alt',\n  icon: [320, 512, [], \"f3be\", \"M313.553 392.331L209.587 504.334c-9.485 10.214-25.676 10.229-35.174 0L70.438 392.331C56.232 377.031 67.062 352 88.025 352H152V80H68.024a11.996 11.996 0 0 1-8.485-3.515l-56-56C-4.021 12.926 1.333 0 12.024 0H208c13.255 0 24 10.745 24 24v328h63.966c20.878 0 31.851 24.969 17.587 40.331z\"]\n};\nvar faLevelUpAlt = {\n  prefix: 'fas',\n  iconName: 'level-up-alt',\n  icon: [320, 512, [], \"f3bf\", \"M313.553 119.669L209.587 7.666c-9.485-10.214-25.676-10.229-35.174 0L70.438 119.669C56.232 134.969 67.062 160 88.025 160H152v272H68.024a11.996 11.996 0 0 0-8.485 3.515l-56 56C-4.021 499.074 1.333 512 12.024 512H208c13.255 0 24-10.745 24-24V160h63.966c20.878 0 31.851-24.969 17.587-40.331z\"]\n};\nvar faLifeRing = {\n  prefix: 'fas',\n  iconName: 'life-ring',\n  icon: [512, 512, [], \"f1cd\", \"M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm173.696 119.559l-63.399 63.399c-10.987-18.559-26.67-34.252-45.255-45.255l63.399-63.399a218.396 218.396 0 0 1 45.255 45.255zM256 352c-53.019 0-96-42.981-96-96s42.981-96 96-96 96 42.981 96 96-42.981 96-96 96zM127.559 82.304l63.399 63.399c-18.559 10.987-34.252 26.67-45.255 45.255l-63.399-63.399a218.372 218.372 0 0 1 45.255-45.255zM82.304 384.441l63.399-63.399c10.987 18.559 26.67 34.252 45.255 45.255l-63.399 63.399a218.396 218.396 0 0 1-45.255-45.255zm302.137 45.255l-63.399-63.399c18.559-10.987 34.252-26.67 45.255-45.255l63.399 63.399a218.403 218.403 0 0 1-45.255 45.255z\"]\n};\nvar faLightbulb = {\n  prefix: 'fas',\n  iconName: 'lightbulb',\n  icon: [352, 512, [], \"f0eb\", \"M96.06 454.35c.01 6.29 1.87 12.45 5.36 17.69l17.09 25.69a31.99 31.99 0 0 0 26.64 14.28h61.71a31.99 31.99 0 0 0 26.64-14.28l17.09-25.69a31.989 31.989 0 0 0 5.36-17.69l.04-38.35H96.01l.05 38.35zM0 176c0 44.37 16.45 84.85 43.56 115.78 16.52 18.85 42.36 58.23 52.21 91.45.04.26.07.52.11.78h160.24c.04-.26.07-.51.11-.78 9.85-33.22 35.69-72.6 52.21-91.45C335.55 260.85 352 220.37 352 176 352 78.61 272.91-.3 175.45 0 73.44.31 0 82.97 0 176zm176-80c-44.11 0-80 35.89-80 80 0 8.84-7.16 16-16 16s-16-7.16-16-16c0-61.76 50.24-112 112-112 8.84 0 16 7.16 16 16s-7.16 16-16 16z\"]\n};\nvar faLink = {\n  prefix: 'fas',\n  iconName: 'link',\n  icon: [512, 512, [], \"f0c1\", \"M326.612 185.391c59.747 59.809 58.927 155.698.36 214.59-.11.12-.24.25-.36.37l-67.2 67.2c-59.27 59.27-155.699 59.262-214.96 0-59.27-59.26-59.27-155.7 0-214.96l37.106-37.106c9.84-9.84 26.786-3.3 27.294 10.606.648 17.722 3.826 35.527 9.69 52.721 1.986 5.822.567 12.262-3.783 16.612l-13.087 13.087c-28.026 28.026-28.905 73.66-1.155 101.96 28.024 28.579 74.086 28.749 102.325.51l67.2-67.19c28.191-28.191 28.073-73.757 0-101.83-3.701-3.694-7.429-6.564-10.341-8.569a16.037 16.037 0 0 1-6.947-12.606c-.396-10.567 3.348-21.456 11.698-29.806l21.054-21.055c5.521-5.521 14.182-6.199 20.584-1.731a152.482 152.482 0 0 1 20.522 17.197zM467.547 44.449c-59.261-59.262-155.69-59.27-214.96 0l-67.2 67.2c-.12.12-.25.25-.36.37-58.566 58.892-59.387 154.781.36 214.59a152.454 152.454 0 0 0 20.521 17.196c6.402 4.468 15.064 3.789 20.584-1.731l21.054-21.055c8.35-8.35 12.094-19.239 11.698-29.806a16.037 16.037 0 0 0-6.947-12.606c-2.912-2.005-6.64-4.875-10.341-8.569-28.073-28.073-28.191-73.639 0-101.83l67.2-67.19c28.239-28.239 74.3-28.069 102.325.51 27.75 28.3 26.872 73.934-1.155 101.96l-13.087 13.087c-4.35 4.35-5.769 10.79-3.783 16.612 5.864 17.194 9.042 34.999 9.69 52.721.509 13.906 17.454 20.446 27.294 10.606l37.106-37.106c59.271-59.259 59.271-155.699.001-214.959z\"]\n};\nvar faLiraSign = {\n  prefix: 'fas',\n  iconName: 'lira-sign',\n  icon: [384, 512, [], \"f195\", \"M371.994 256h-48.019C317.64 256 312 260.912 312 267.246 312 368 230.179 416 144 416V256.781l134.603-29.912A12 12 0 0 0 288 215.155v-40.976c0-7.677-7.109-13.38-14.603-11.714L144 191.219V160.78l134.603-29.912A12 12 0 0 0 288 119.154V78.179c0-7.677-7.109-13.38-14.603-11.714L144 95.219V44c0-6.627-5.373-12-12-12H76c-6.627 0-12 5.373-12 12v68.997L9.397 125.131A12 12 0 0 0 0 136.845v40.976c0 7.677 7.109 13.38 14.603 11.714L64 178.558v30.439L9.397 221.131A12 12 0 0 0 0 232.845v40.976c0 7.677 7.109 13.38 14.603 11.714L64 274.558V468c0 6.627 5.373 12 12 12h79.583c134.091 0 223.255-77.834 228.408-211.592.261-6.782-5.211-12.408-11.997-12.408z\"]\n};\nvar faList = {\n  prefix: 'fas',\n  iconName: 'list',\n  icon: [512, 512, [], \"f03a\", \"M80 368H16a16 16 0 0 0-16 16v64a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-64a16 16 0 0 0-16-16zm0-320H16A16 16 0 0 0 0 64v64a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16V64a16 16 0 0 0-16-16zm0 160H16a16 16 0 0 0-16 16v64a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-64a16 16 0 0 0-16-16zm416 176H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faListAlt = {\n  prefix: 'fas',\n  iconName: 'list-alt',\n  icon: [512, 512, [], \"f022\", \"M464 480H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48zM128 120c-22.091 0-40 17.909-40 40s17.909 40 40 40 40-17.909 40-40-17.909-40-40-40zm0 96c-22.091 0-40 17.909-40 40s17.909 40 40 40 40-17.909 40-40-17.909-40-40-40zm0 96c-22.091 0-40 17.909-40 40s17.909 40 40 40 40-17.909 40-40-17.909-40-40-40zm288-136v-32c0-6.627-5.373-12-12-12H204c-6.627 0-12 5.373-12 12v32c0 6.627 5.373 12 12 12h200c6.627 0 12-5.373 12-12zm0 96v-32c0-6.627-5.373-12-12-12H204c-6.627 0-12 5.373-12 12v32c0 6.627 5.373 12 12 12h200c6.627 0 12-5.373 12-12zm0 96v-32c0-6.627-5.373-12-12-12H204c-6.627 0-12 5.373-12 12v32c0 6.627 5.373 12 12 12h200c6.627 0 12-5.373 12-12z\"]\n};\nvar faListOl = {\n  prefix: 'fas',\n  iconName: 'list-ol',\n  icon: [512, 512, [], \"f0cb\", \"M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z\"]\n};\nvar faListUl = {\n  prefix: 'fas',\n  iconName: 'list-ul',\n  icon: [512, 512, [], \"f0ca\", \"M48 48a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm448 16H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faLocationArrow = {\n  prefix: 'fas',\n  iconName: 'location-arrow',\n  icon: [512, 512, [], \"f124\", \"M444.52 3.52L28.74 195.42c-47.97 22.39-31.98 92.75 19.19 92.75h175.91v175.91c0 51.17 70.36 67.17 92.75 19.19l191.9-415.78c15.99-38.39-25.59-79.97-63.97-63.97z\"]\n};\nvar faLock = {\n  prefix: 'fas',\n  iconName: 'lock',\n  icon: [448, 512, [], \"f023\", \"M400 224h-24v-72C376 68.2 307.8 0 224 0S72 68.2 72 152v72H48c-26.5 0-48 21.5-48 48v192c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V272c0-26.5-21.5-48-48-48zm-104 0H152v-72c0-39.7 32.3-72 72-72s72 32.3 72 72v72z\"]\n};\nvar faLockOpen = {\n  prefix: 'fas',\n  iconName: 'lock-open',\n  icon: [576, 512, [], \"f3c1\", \"M423.5 0C339.5.3 272 69.5 272 153.5V224H48c-26.5 0-48 21.5-48 48v192c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V272c0-26.5-21.5-48-48-48h-48v-71.1c0-39.6 31.7-72.5 71.3-72.9 40-.4 72.7 32.1 72.7 72v80c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24v-80C576 68 507.5-.3 423.5 0z\"]\n};\nvar faLongArrowAltDown = {\n  prefix: 'fas',\n  iconName: 'long-arrow-alt-down',\n  icon: [256, 512, [], \"f309\", \"M168 345.941V44c0-6.627-5.373-12-12-12h-56c-6.627 0-12 5.373-12 12v301.941H41.941c-21.382 0-32.09 25.851-16.971 40.971l86.059 86.059c9.373 9.373 24.569 9.373 33.941 0l86.059-86.059c15.119-15.119 4.411-40.971-16.971-40.971H168z\"]\n};\nvar faLongArrowAltLeft = {\n  prefix: 'fas',\n  iconName: 'long-arrow-alt-left',\n  icon: [448, 512, [], \"f30a\", \"M134.059 296H436c6.627 0 12-5.373 12-12v-56c0-6.627-5.373-12-12-12H134.059v-46.059c0-21.382-25.851-32.09-40.971-16.971L7.029 239.029c-9.373 9.373-9.373 24.569 0 33.941l86.059 86.059c15.119 15.119 40.971 4.411 40.971-16.971V296z\"]\n};\nvar faLongArrowAltRight = {\n  prefix: 'fas',\n  iconName: 'long-arrow-alt-right',\n  icon: [448, 512, [], \"f30b\", \"M313.941 216H12c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12h301.941v46.059c0 21.382 25.851 32.09 40.971 16.971l86.059-86.059c9.373-9.373 9.373-24.569 0-33.941l-86.059-86.059c-15.119-15.119-40.971-4.411-40.971 16.971V216z\"]\n};\nvar faLongArrowAltUp = {\n  prefix: 'fas',\n  iconName: 'long-arrow-alt-up',\n  icon: [256, 512, [], \"f30c\", \"M88 166.059V468c0 6.627 5.373 12 12 12h56c6.627 0 12-5.373 12-12V166.059h46.059c21.382 0 32.09-25.851 16.971-40.971l-86.059-86.059c-9.373-9.373-24.569-9.373-33.941 0l-86.059 86.059c-15.119 15.119-4.411 40.971 16.971 40.971H88z\"]\n};\nvar faLowVision = {\n  prefix: 'fas',\n  iconName: 'low-vision',\n  icon: [576, 512, [], \"f2a8\", \"M569.344 231.631C512.96 135.949 407.81 72 288 72c-28.468 0-56.102 3.619-82.451 10.409L152.778 10.24c-7.601-10.858-22.564-13.5-33.423-5.9l-13.114 9.178c-10.86 7.601-13.502 22.566-5.9 33.426l43.131 58.395C89.449 131.73 40.228 174.683 6.682 231.581c-.01.017-.023.033-.034.05-8.765 14.875-8.964 33.528 0 48.739 38.5 65.332 99.742 115.862 172.859 141.349L55.316 244.302A272.194 272.194 0 0 1 83.61 208.39l119.4 170.58h.01l40.63 58.04a330.055 330.055 0 0 0 78.94 1.17l-189.98-271.4a277.628 277.628 0 0 1 38.777-21.563l251.836 356.544c7.601 10.858 22.564 13.499 33.423 5.9l13.114-9.178c10.86-7.601 13.502-22.567 5.9-33.426l-43.12-58.377-.007-.009c57.161-27.978 104.835-72.04 136.81-126.301a47.938 47.938 0 0 0 .001-48.739zM390.026 345.94l-19.066-27.23c24.682-32.567 27.711-76.353 8.8-111.68v.03c0 23.65-19.17 42.82-42.82 42.82-23.828 0-42.82-19.349-42.82-42.82 0-23.65 19.17-42.82 42.82-42.82h.03c-24.75-13.249-53.522-15.643-79.51-7.68l-19.068-27.237C253.758 123.306 270.488 120 288 120c75.162 0 136 60.826 136 136 0 34.504-12.833 65.975-33.974 89.94z\"]\n};\nvar faLuggageCart = {\n  prefix: 'fas',\n  iconName: 'luggage-cart',\n  icon: [640, 512, [], \"f59d\", \"M224 320h32V96h-32c-17.67 0-32 14.33-32 32v160c0 17.67 14.33 32 32 32zm352-32V128c0-17.67-14.33-32-32-32h-32v224h32c17.67 0 32-14.33 32-32zm48 96H128V16c0-8.84-7.16-16-16-16H16C7.16 0 0 7.16 0 16v32c0 8.84 7.16 16 16 16h48v368c0 8.84 7.16 16 16 16h82.94c-1.79 5.03-2.94 10.36-2.94 16 0 26.51 21.49 48 48 48s48-21.49 48-48c0-5.64-1.15-10.97-2.94-16h197.88c-1.79 5.03-2.94 10.36-2.94 16 0 26.51 21.49 48 48 48s48-21.49 48-48c0-5.64-1.15-10.97-2.94-16H624c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM480 96V48c0-26.51-21.49-48-48-48h-96c-26.51 0-48 21.49-48 48v272h192V96zm-48 0h-96V48h96v48z\"]\n};\nvar faLungs = {\n  prefix: 'fas',\n  iconName: 'lungs',\n  icon: [640, 512, [], \"f604\", \"M636.11 390.15C614.44 308.85 580.07 231 534.1 159.13 511.98 124.56 498.03 96 454.05 96 415.36 96 384 125.42 384 161.71v60.11l-32.88-21.92a15.996 15.996 0 0 1-7.12-13.31V16c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v170.59c0 5.35-2.67 10.34-7.12 13.31L256 221.82v-60.11C256 125.42 224.64 96 185.95 96c-43.98 0-57.93 28.56-80.05 63.13C59.93 231 25.56 308.85 3.89 390.15 1.3 399.84 0 409.79 0 419.78c0 61.23 62.48 105.44 125.24 88.62l59.5-15.95c42.18-11.3 71.26-47.47 71.26-88.62v-87.49l-85.84 57.23a7.992 7.992 0 0 1-11.09-2.22l-8.88-13.31a7.992 7.992 0 0 1 2.22-11.09L320 235.23l167.59 111.72a7.994 7.994 0 0 1 2.22 11.09l-8.88 13.31a7.994 7.994 0 0 1-11.09 2.22L384 316.34v87.49c0 41.15 29.08 77.31 71.26 88.62l59.5 15.95C577.52 525.22 640 481.01 640 419.78c0-9.99-1.3-19.94-3.89-29.63z\"]\n};\nvar faLungsVirus = {\n  prefix: 'fas',\n  iconName: 'lungs-virus',\n  icon: [640, 512, [], \"e067\", \"M344,150.68V16A16,16,0,0,0,328,0H312a16,16,0,0,0-16,16V150.68a46.45,46.45,0,0,1,48,0ZM195.54,444.46a48.06,48.06,0,0,1,0-67.88l8.58-8.58H192a48,48,0,0,1,0-96h12.12l-8.58-8.57a48,48,0,0,1,60.46-74V161.75C256,125.38,224.62,96,186,96c-44,0-58,28.5-80.12,63.13a819.52,819.52,0,0,0-102,231A113.16,113.16,0,0,0,0,419.75C0,481,62.5,525.26,125.25,508.38l59.5-15.87a98.51,98.51,0,0,0,52.5-34.75,46.49,46.49,0,0,1-41.71-13.3Zm226.29-22.63a16,16,0,0,0,0-22.62l-8.58-8.58C393.09,370.47,407.37,336,435.88,336H448a16,16,0,0,0,0-32H435.88c-28.51,0-42.79-34.47-22.63-54.62l8.58-8.58a16,16,0,0,0-22.63-22.63l-8.57,8.58C370.47,246.91,336,232.63,336,204.12V192a16,16,0,0,0-32,0v12.12c0,28.51-34.47,42.79-54.63,22.63l-8.57-8.58a16,16,0,0,0-22.63,22.63l8.58,8.58c20.16,20.15,5.88,54.62-22.63,54.62H192a16,16,0,0,0,0,32h12.12c28.51,0,42.79,34.47,22.63,54.63l-8.58,8.58a16,16,0,1,0,22.63,22.62l8.57-8.57C269.53,393.1,304,407.38,304,435.88V448a16,16,0,0,0,32,0V435.88c0-28.5,34.47-42.78,54.63-22.62l8.57,8.57a16,16,0,0,0,22.63,0ZM288,304a16,16,0,1,1,16-16A16,16,0,0,1,288,304Zm64,64a16,16,0,1,1,16-16A16,16,0,0,1,352,368Zm284.12,22.13a819.52,819.52,0,0,0-102-231C512,124.5,498,96,454,96c-38.62,0-70,29.38-70,65.75v27.72a48,48,0,0,1,60.46,74L435.88,272H448a48,48,0,0,1,0,96H435.88l8.58,8.58a47.7,47.7,0,0,1-41.71,81.18,98.51,98.51,0,0,0,52.5,34.75l59.5,15.87C577.5,525.26,640,481,640,419.75A113.16,113.16,0,0,0,636.12,390.13Z\"]\n};\nvar faMagic = {\n  prefix: 'fas',\n  iconName: 'magic',\n  icon: [512, 512, [], \"f0d0\", \"M224 96l16-32 32-16-32-16-16-32-16 32-32 16 32 16 16 32zM80 160l26.66-53.33L160 80l-53.34-26.67L80 0 53.34 53.33 0 80l53.34 26.67L80 160zm352 128l-26.66 53.33L352 368l53.34 26.67L432 448l26.66-53.33L512 368l-53.34-26.67L432 288zm70.62-193.77L417.77 9.38C411.53 3.12 403.34 0 395.15 0c-8.19 0-16.38 3.12-22.63 9.38L9.38 372.52c-12.5 12.5-12.5 32.76 0 45.25l84.85 84.85c6.25 6.25 14.44 9.37 22.62 9.37 8.19 0 16.38-3.12 22.63-9.37l363.14-363.15c12.5-12.48 12.5-32.75 0-45.24zM359.45 203.46l-50.91-50.91 86.6-86.6 50.91 50.91-86.6 86.6z\"]\n};\nvar faMagnet = {\n  prefix: 'fas',\n  iconName: 'magnet',\n  icon: [512, 512, [], \"f076\", \"M164.07 148.1H12a12 12 0 0 1-12-12v-80a36 36 0 0 1 36-36h104a36 36 0 0 1 36 36v80a11.89 11.89 0 0 1-11.93 12zm347.93-12V56a36 36 0 0 0-36-36H372a36 36 0 0 0-36 36v80a12 12 0 0 0 12 12h152a11.89 11.89 0 0 0 12-11.9zm-164 44a12 12 0 0 0-12 12v52c0 128.1-160 127.9-160 0v-52a12 12 0 0 0-12-12H12.1a12 12 0 0 0-12 12.1c.1 21.4.6 40.3 0 53.3 0 150.6 136.17 246.6 256.75 246.6s255-96 255-246.7c-.6-12.8-.2-33 0-53.2a12 12 0 0 0-12-12.1z\"]\n};\nvar faMailBulk = {\n  prefix: 'fas',\n  iconName: 'mail-bulk',\n  icon: [576, 512, [], \"f674\", \"M160 448c-25.6 0-51.2-22.4-64-32-64-44.8-83.2-60.8-96-70.4V480c0 17.67 14.33 32 32 32h256c17.67 0 32-14.33 32-32V345.6c-12.8 9.6-32 25.6-96 70.4-12.8 9.6-38.4 32-64 32zm128-192H32c-17.67 0-32 14.33-32 32v16c25.6 19.2 22.4 19.2 115.2 86.4 9.6 6.4 28.8 25.6 44.8 25.6s35.2-19.2 44.8-22.4c92.8-67.2 89.6-67.2 115.2-86.4V288c0-17.67-14.33-32-32-32zm256-96H224c-17.67 0-32 14.33-32 32v32h96c33.21 0 60.59 25.42 63.71 57.82l.29-.22V416h192c17.67 0 32-14.33 32-32V192c0-17.67-14.33-32-32-32zm-32 128h-64v-64h64v64zm-352-96c0-35.29 28.71-64 64-64h224V32c0-17.67-14.33-32-32-32H96C78.33 0 64 14.33 64 32v192h96v-32z\"]\n};\nvar faMale = {\n  prefix: 'fas',\n  iconName: 'male',\n  icon: [192, 512, [], \"f183\", \"M96 0c35.346 0 64 28.654 64 64s-28.654 64-64 64-64-28.654-64-64S60.654 0 96 0m48 144h-11.36c-22.711 10.443-49.59 10.894-73.28 0H48c-26.51 0-48 21.49-48 48v136c0 13.255 10.745 24 24 24h16v136c0 13.255 10.745 24 24 24h64c13.255 0 24-10.745 24-24V352h16c13.255 0 24-10.745 24-24V192c0-26.51-21.49-48-48-48z\"]\n};\nvar faMap = {\n  prefix: 'fas',\n  iconName: 'map',\n  icon: [576, 512, [], \"f279\", \"M0 117.66v346.32c0 11.32 11.43 19.06 21.94 14.86L160 416V32L20.12 87.95A32.006 32.006 0 0 0 0 117.66zM192 416l192 64V96L192 32v384zM554.06 33.16L416 96v384l139.88-55.95A31.996 31.996 0 0 0 576 394.34V48.02c0-11.32-11.43-19.06-21.94-14.86z\"]\n};\nvar faMapMarked = {\n  prefix: 'fas',\n  iconName: 'map-marked',\n  icon: [576, 512, [], \"f59f\", \"M288 0c-69.59 0-126 56.41-126 126 0 56.26 82.35 158.8 113.9 196.02 6.39 7.54 17.82 7.54 24.2 0C331.65 284.8 414 182.26 414 126 414 56.41 357.59 0 288 0zM20.12 215.95A32.006 32.006 0 0 0 0 245.66v250.32c0 11.32 11.43 19.06 21.94 14.86L160 448V214.92c-8.84-15.98-16.07-31.54-21.25-46.42L20.12 215.95zM288 359.67c-14.07 0-27.38-6.18-36.51-16.96-19.66-23.2-40.57-49.62-59.49-76.72v182l192 64V266c-18.92 27.09-39.82 53.52-59.49 76.72-9.13 10.77-22.44 16.95-36.51 16.95zm266.06-198.51L416 224v288l139.88-55.95A31.996 31.996 0 0 0 576 426.34V176.02c0-11.32-11.43-19.06-21.94-14.86z\"]\n};\nvar faMapMarkedAlt = {\n  prefix: 'fas',\n  iconName: 'map-marked-alt',\n  icon: [576, 512, [], \"f5a0\", \"M288 0c-69.59 0-126 56.41-126 126 0 56.26 82.35 158.8 113.9 196.02 6.39 7.54 17.82 7.54 24.2 0C331.65 284.8 414 182.26 414 126 414 56.41 357.59 0 288 0zm0 168c-23.2 0-42-18.8-42-42s18.8-42 42-42 42 18.8 42 42-18.8 42-42 42zM20.12 215.95A32.006 32.006 0 0 0 0 245.66v250.32c0 11.32 11.43 19.06 21.94 14.86L160 448V214.92c-8.84-15.98-16.07-31.54-21.25-46.42L20.12 215.95zM288 359.67c-14.07 0-27.38-6.18-36.51-16.96-19.66-23.2-40.57-49.62-59.49-76.72v182l192 64V266c-18.92 27.09-39.82 53.52-59.49 76.72-9.13 10.77-22.44 16.95-36.51 16.95zm266.06-198.51L416 224v288l139.88-55.95A31.996 31.996 0 0 0 576 426.34V176.02c0-11.32-11.43-19.06-21.94-14.86z\"]\n};\nvar faMapMarker = {\n  prefix: 'fas',\n  iconName: 'map-marker',\n  icon: [384, 512, [], \"f041\", \"M172.268 501.67C26.97 291.031 0 269.413 0 192 0 85.961 85.961 0 192 0s192 85.961 192 192c0 77.413-26.97 99.031-172.268 309.67-9.535 13.774-29.93 13.773-39.464 0z\"]\n};\nvar faMapMarkerAlt = {\n  prefix: 'fas',\n  iconName: 'map-marker-alt',\n  icon: [384, 512, [], \"f3c5\", \"M172.268 501.67C26.97 291.031 0 269.413 0 192 0 85.961 85.961 0 192 0s192 85.961 192 192c0 77.413-26.97 99.031-172.268 309.67-9.535 13.774-29.93 13.773-39.464 0zM192 272c44.183 0 80-35.817 80-80s-35.817-80-80-80-80 35.817-80 80 35.817 80 80 80z\"]\n};\nvar faMapPin = {\n  prefix: 'fas',\n  iconName: 'map-pin',\n  icon: [288, 512, [], \"f276\", \"M112 316.94v156.69l22.02 33.02c4.75 7.12 15.22 7.12 19.97 0L176 473.63V316.94c-10.39 1.92-21.06 3.06-32 3.06s-21.61-1.14-32-3.06zM144 0C64.47 0 0 64.47 0 144s64.47 144 144 144 144-64.47 144-144S223.53 0 144 0zm0 76c-37.5 0-68 30.5-68 68 0 6.62-5.38 12-12 12s-12-5.38-12-12c0-50.73 41.28-92 92-92 6.62 0 12 5.38 12 12s-5.38 12-12 12z\"]\n};\nvar faMapSigns = {\n  prefix: 'fas',\n  iconName: 'map-signs',\n  icon: [512, 512, [], \"f277\", \"M507.31 84.69L464 41.37c-6-6-14.14-9.37-22.63-9.37H288V16c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v16H56c-13.25 0-24 10.75-24 24v80c0 13.25 10.75 24 24 24h385.37c8.49 0 16.62-3.37 22.63-9.37l43.31-43.31c6.25-6.26 6.25-16.38 0-22.63zM224 496c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V384h-64v112zm232-272H288v-32h-64v32H70.63c-8.49 0-16.62 3.37-22.63 9.37L4.69 276.69c-6.25 6.25-6.25 16.38 0 22.63L48 342.63c6 6 14.14 9.37 22.63 9.37H456c13.25 0 24-10.75 24-24v-80c0-13.25-10.75-24-24-24z\"]\n};\nvar faMarker = {\n  prefix: 'fas',\n  iconName: 'marker',\n  icon: [512, 512, [], \"f5a1\", \"M93.95 290.03A327.038 327.038 0 0 0 .17 485.11l-.03.23c-1.7 15.28 11.21 28.2 26.49 26.51a327.02 327.02 0 0 0 195.34-93.8l75.4-75.4-128.02-128.02-75.4 75.4zM485.49 26.51c-35.35-35.35-92.67-35.35-128.02 0l-21.76 21.76-36.56-36.55c-15.62-15.62-40.95-15.62-56.56 0L138.47 115.84c-6.25 6.25-6.25 16.38 0 22.63l22.62 22.62c6.25 6.25 16.38 6.25 22.63 0l87.15-87.15 19.59 19.59L191.98 192 320 320.02l165.49-165.49c35.35-35.35 35.35-92.66 0-128.02z\"]\n};\nvar faMars = {\n  prefix: 'fas',\n  iconName: 'mars',\n  icon: [384, 512, [], \"f222\", \"M372 64h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-80.7 80.7c-22.2-14-48.5-22.1-76.7-22.1C64.5 160 0 224.5 0 304s64.5 144 144 144 144-64.5 144-144c0-28.2-8.1-54.5-22.1-76.7l80.7-80.7 16.9 16.9c7.6 7.6 20.5 2.2 20.5-8.5V76c0-6.6-5.4-12-12-12zM144 384c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\"]\n};\nvar faMarsDouble = {\n  prefix: 'fas',\n  iconName: 'mars-double',\n  icon: [512, 512, [], \"f227\", \"M340 0h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-48.7 48.7C198.5 72.1 172.2 64 144 64 64.5 64 0 128.5 0 208s64.5 144 144 144 144-64.5 144-144c0-28.2-8.1-54.5-22.1-76.7l48.7-48.7 16.9 16.9c2.4 2.4 5.5 3.5 8.4 3.5 6.2 0 12.1-4.8 12.1-12V12c0-6.6-5.4-12-12-12zM144 288c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80zm356-128.1h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-48.7 48.7c-18.2-11.4-39-18.9-61.5-21.3-2.1 21.8-8.2 43.3-18.4 63.3 1.1 0 2.2-.1 3.2-.1 44.1 0 80 35.9 80 80s-35.9 80-80 80-80-35.9-80-80c0-1.1 0-2.2.1-3.2-20 10.2-41.5 16.4-63.3 18.4C168.4 455.6 229.6 512 304 512c79.5 0 144-64.5 144-144 0-28.2-8.1-54.5-22.1-76.7l48.7-48.7 16.9 16.9c2.4 2.4 5.4 3.5 8.4 3.5 6.2 0 12.1-4.8 12.1-12v-79c0-6.7-5.4-12.1-12-12.1z\"]\n};\nvar faMarsStroke = {\n  prefix: 'fas',\n  iconName: 'mars-stroke',\n  icon: [384, 512, [], \"f229\", \"M372 64h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-17.5 17.5-14.1-14.1c-4.7-4.7-12.3-4.7-17 0L224.5 133c-4.7 4.7-4.7 12.3 0 17l14.1 14.1-18 18c-22.2-14-48.5-22.1-76.7-22.1C64.5 160 0 224.5 0 304s64.5 144 144 144 144-64.5 144-144c0-28.2-8.1-54.5-22.1-76.7l18-18 14.1 14.1c4.7 4.7 12.3 4.7 17 0l28.3-28.3c4.7-4.7 4.7-12.3 0-17L329.2 164l17.5-17.5 16.9 16.9c7.6 7.6 20.5 2.2 20.5-8.5V76c-.1-6.6-5.5-12-12.1-12zM144 384c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\"]\n};\nvar faMarsStrokeH = {\n  prefix: 'fas',\n  iconName: 'mars-stroke-h',\n  icon: [480, 512, [], \"f22b\", \"M476.2 247.5l-55.9-55.9c-7.6-7.6-20.5-2.2-20.5 8.5V224H376v-20c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v20h-27.6c-5.8-25.6-18.7-49.9-38.6-69.8C189.6 98 98.4 98 42.2 154.2c-56.2 56.2-56.2 147.4 0 203.6 56.2 56.2 147.4 56.2 203.6 0 19.9-19.9 32.8-44.2 38.6-69.8H312v20c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-20h23.9v23.9c0 10.7 12.9 16 20.5 8.5l55.9-55.9c4.6-4.7 4.6-12.3-.1-17zm-275.6 65.1c-31.2 31.2-81.9 31.2-113.1 0-31.2-31.2-31.2-81.9 0-113.1 31.2-31.2 81.9-31.2 113.1 0 31.2 31.1 31.2 81.9 0 113.1z\"]\n};\nvar faMarsStrokeV = {\n  prefix: 'fas',\n  iconName: 'mars-stroke-v',\n  icon: [288, 512, [], \"f22a\", \"M245.8 234.2c-19.9-19.9-44.2-32.8-69.8-38.6v-25.4h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20V81.4h23.9c10.7 0 16-12.9 8.5-20.5L152.5 5.1c-4.7-4.7-12.3-4.7-17 0L79.6 61c-7.6 7.6-2.2 20.5 8.5 20.5H112v24.7H92c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h20v25.4c-25.6 5.8-49.9 18.7-69.8 38.6-56.2 56.2-56.2 147.4 0 203.6 56.2 56.2 147.4 56.2 203.6 0 56.3-56.2 56.3-147.4 0-203.6zm-45.2 158.4c-31.2 31.2-81.9 31.2-113.1 0-31.2-31.2-31.2-81.9 0-113.1 31.2-31.2 81.9-31.2 113.1 0 31.2 31.1 31.2 81.9 0 113.1z\"]\n};\nvar faMask = {\n  prefix: 'fas',\n  iconName: 'mask',\n  icon: [640, 512, [], \"f6fa\", \"M320.67 64c-442.6 0-357.57 384-158.46 384 39.9 0 77.47-20.69 101.42-55.86l25.73-37.79c15.66-22.99 46.97-22.99 62.63 0l25.73 37.79C401.66 427.31 439.23 448 479.13 448c189.86 0 290.63-384-158.46-384zM184 308.36c-41.06 0-67.76-25.66-80.08-41.05-5.23-6.53-5.23-16.09 0-22.63 12.32-15.4 39.01-41.05 80.08-41.05s67.76 25.66 80.08 41.05c5.23 6.53 5.23 16.09 0 22.63-12.32 15.4-39.02 41.05-80.08 41.05zm272 0c-41.06 0-67.76-25.66-80.08-41.05-5.23-6.53-5.23-16.09 0-22.63 12.32-15.4 39.01-41.05 80.08-41.05s67.76 25.66 80.08 41.05c5.23 6.53 5.23 16.09 0 22.63-12.32 15.4-39.02 41.05-80.08 41.05z\"]\n};\nvar faMedal = {\n  prefix: 'fas',\n  iconName: 'medal',\n  icon: [512, 512, [], \"f5a2\", \"M223.75 130.75L154.62 15.54A31.997 31.997 0 0 0 127.18 0H16.03C3.08 0-4.5 14.57 2.92 25.18l111.27 158.96c29.72-27.77 67.52-46.83 109.56-53.39zM495.97 0H384.82c-11.24 0-21.66 5.9-27.44 15.54l-69.13 115.21c42.04 6.56 79.84 25.62 109.56 53.38L509.08 25.18C516.5 14.57 508.92 0 495.97 0zM256 160c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm92.52 157.26l-37.93 36.96 8.97 52.22c1.6 9.36-8.26 16.51-16.65 12.09L256 393.88l-46.9 24.65c-8.4 4.45-18.25-2.74-16.65-12.09l8.97-52.22-37.93-36.96c-6.82-6.64-3.05-18.23 6.35-19.59l52.43-7.64 23.43-47.52c2.11-4.28 6.19-6.39 10.28-6.39 4.11 0 8.22 2.14 10.33 6.39l23.43 47.52 52.43 7.64c9.4 1.36 13.17 12.95 6.35 19.59z\"]\n};\nvar faMedkit = {\n  prefix: 'fas',\n  iconName: 'medkit',\n  icon: [512, 512, [], \"f0fa\", \"M96 480h320V128h-32V80c0-26.51-21.49-48-48-48H176c-26.51 0-48 21.49-48 48v48H96v352zm96-384h128v32H192V96zm320 80v256c0 26.51-21.49 48-48 48h-16V128h16c26.51 0 48 21.49 48 48zM64 480H48c-26.51 0-48-21.49-48-48V176c0-26.51 21.49-48 48-48h16v352zm288-208v32c0 8.837-7.163 16-16 16h-48v48c0 8.837-7.163 16-16 16h-32c-8.837 0-16-7.163-16-16v-48h-48c-8.837 0-16-7.163-16-16v-32c0-8.837 7.163-16 16-16h48v-48c0-8.837 7.163-16 16-16h32c8.837 0 16 7.163 16 16v48h48c8.837 0 16 7.163 16 16z\"]\n};\nvar faMeh = {\n  prefix: 'fas',\n  iconName: 'meh',\n  icon: [496, 512, [], \"f11a\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm176 192H152c-21.2 0-21.2-32 0-32h192c21.2 0 21.2 32 0 32zm-16-128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faMehBlank = {\n  prefix: 'fas',\n  iconName: 'meh-blank',\n  icon: [496, 512, [], \"f5a4\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-80 232c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm160 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faMehRollingEyes = {\n  prefix: 'fas',\n  iconName: 'meh-rolling-eyes',\n  icon: [496, 512, [], \"f5a5\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM88 224c0-24.3 13.7-45.2 33.6-56-.7 2.6-1.6 5.2-1.6 8 0 17.7 14.3 32 32 32s32-14.3 32-32c0-2.8-.9-5.4-1.6-8 19.9 10.8 33.6 31.7 33.6 56 0 35.3-28.7 64-64 64s-64-28.7-64-64zm224 176H184c-21.2 0-21.2-32 0-32h128c21.2 0 21.2 32 0 32zm32-112c-35.3 0-64-28.7-64-64 0-24.3 13.7-45.2 33.6-56-.7 2.6-1.6 5.2-1.6 8 0 17.7 14.3 32 32 32s32-14.3 32-32c0-2.8-.9-5.4-1.6-8 19.9 10.8 33.6 31.7 33.6 56 0 35.3-28.7 64-64 64z\"]\n};\nvar faMemory = {\n  prefix: 'fas',\n  iconName: 'memory',\n  icon: [640, 512, [], \"f538\", \"M640 130.94V96c0-17.67-14.33-32-32-32H32C14.33 64 0 78.33 0 96v34.94c18.6 6.61 32 24.19 32 45.06s-13.4 38.45-32 45.06V320h640v-98.94c-18.6-6.61-32-24.19-32-45.06s13.4-38.45 32-45.06zM224 256h-64V128h64v128zm128 0h-64V128h64v128zm128 0h-64V128h64v128zM0 448h64v-26.67c0-8.84 7.16-16 16-16s16 7.16 16 16V448h128v-26.67c0-8.84 7.16-16 16-16s16 7.16 16 16V448h128v-26.67c0-8.84 7.16-16 16-16s16 7.16 16 16V448h128v-26.67c0-8.84 7.16-16 16-16s16 7.16 16 16V448h64v-96H0v96z\"]\n};\nvar faMenorah = {\n  prefix: 'fas',\n  iconName: 'menorah',\n  icon: [640, 512, [], \"f676\", \"M144 128h-32c-8.84 0-16 7.16-16 16v144h64V144c0-8.84-7.16-16-16-16zm96 0h-32c-8.84 0-16 7.16-16 16v144h64V144c0-8.84-7.16-16-16-16zm192 0h-32c-8.84 0-16 7.16-16 16v144h64V144c0-8.84-7.16-16-16-16zm96 0h-32c-8.84 0-16 7.16-16 16v144h64V144c0-8.84-7.16-16-16-16zm80-32c17.67 0 32-14.33 32-32S608 0 608 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S512 0 512 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S416 0 416 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S320 0 320 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S224 0 224 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S128 0 128 0 96 46.33 96 64s14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S32 0 32 0 0 46.33 0 64s14.33 32 32 32zm544 192c0 17.67-14.33 32-32 32H352V144c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v176H96c-17.67 0-32-14.33-32-32V144c0-8.84-7.16-16-16-16H16c-8.84 0-16 7.16-16 16v144c0 53.02 42.98 96 96 96h192v64H112c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16H352v-64h192c53.02 0 96-42.98 96-96V144c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v144z\"]\n};\nvar faMercury = {\n  prefix: 'fas',\n  iconName: 'mercury',\n  icon: [288, 512, [], \"f223\", \"M288 208c0-44.2-19.9-83.7-51.2-110.1 2.5-1.8 4.9-3.8 7.2-5.8 24.7-21.2 39.8-48.8 43.2-78.8.9-7.1-4.7-13.3-11.9-13.3h-40.5C229 0 224.1 4.1 223 9.8c-2.4 12.5-9.6 24.3-20.7 33.8C187 56.8 166.3 64 144 64s-43-7.2-58.4-20.4C74.5 34.1 67.4 22.3 64.9 9.8 63.8 4.1 58.9 0 53.2 0H12.7C5.5 0-.1 6.2.8 13.3 4.2 43.4 19.2 71 44 92.2c2.3 2 4.7 3.9 7.2 5.8C19.9 124.3 0 163.8 0 208c0 68.5 47.9 125.9 112 140.4V400H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v36c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-36h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-51.6c64.1-14.5 112-71.9 112-140.4zm-224 0c0-44.1 35.9-80 80-80s80 35.9 80 80-35.9 80-80 80-80-35.9-80-80z\"]\n};\nvar faMeteor = {\n  prefix: 'fas',\n  iconName: 'meteor',\n  icon: [512, 512, [], \"f753\", \"M511.328,20.8027c-11.60759,38.70264-34.30724,111.70173-61.30311,187.70077,6.99893,2.09372,13.4042,4,18.60653,5.59368a16.06158,16.06158,0,0,1,9.49854,22.906c-22.106,42.29635-82.69047,152.795-142.47819,214.40356-.99984,1.09373-1.99969,2.5-2.99954,3.49995A194.83046,194.83046,0,1,1,57.085,179.41009c.99985-1,2.40588-2,3.49947-3,61.59994-59.90549,171.97367-120.40473,214.37343-142.4982a16.058,16.058,0,0,1,22.90274,9.49988c1.59351,5.09368,3.49947,11.5936,5.5929,18.59351C379.34818,35.00565,452.43074,12.30281,491.12794.70921A16.18325,16.18325,0,0,1,511.328,20.8027ZM319.951,320.00207A127.98041,127.98041,0,1,0,191.97061,448.00046,127.97573,127.97573,0,0,0,319.951,320.00207Zm-127.98041-31.9996a31.9951,31.9951,0,1,1-31.9951-31.9996A31.959,31.959,0,0,1,191.97061,288.00247Zm31.9951,79.999a15.99755,15.99755,0,1,1-15.99755-15.9998A16.04975,16.04975,0,0,1,223.96571,368.00147Z\"]\n};\nvar faMicrochip = {\n  prefix: 'fas',\n  iconName: 'microchip',\n  icon: [512, 512, [], \"f2db\", \"M416 48v416c0 26.51-21.49 48-48 48H144c-26.51 0-48-21.49-48-48V48c0-26.51 21.49-48 48-48h224c26.51 0 48 21.49 48 48zm96 58v12a6 6 0 0 1-6 6h-18v6a6 6 0 0 1-6 6h-42V88h42a6 6 0 0 1 6 6v6h18a6 6 0 0 1 6 6zm0 96v12a6 6 0 0 1-6 6h-18v6a6 6 0 0 1-6 6h-42v-48h42a6 6 0 0 1 6 6v6h18a6 6 0 0 1 6 6zm0 96v12a6 6 0 0 1-6 6h-18v6a6 6 0 0 1-6 6h-42v-48h42a6 6 0 0 1 6 6v6h18a6 6 0 0 1 6 6zm0 96v12a6 6 0 0 1-6 6h-18v6a6 6 0 0 1-6 6h-42v-48h42a6 6 0 0 1 6 6v6h18a6 6 0 0 1 6 6zM30 376h42v48H30a6 6 0 0 1-6-6v-6H6a6 6 0 0 1-6-6v-12a6 6 0 0 1 6-6h18v-6a6 6 0 0 1 6-6zm0-96h42v48H30a6 6 0 0 1-6-6v-6H6a6 6 0 0 1-6-6v-12a6 6 0 0 1 6-6h18v-6a6 6 0 0 1 6-6zm0-96h42v48H30a6 6 0 0 1-6-6v-6H6a6 6 0 0 1-6-6v-12a6 6 0 0 1 6-6h18v-6a6 6 0 0 1 6-6zm0-96h42v48H30a6 6 0 0 1-6-6v-6H6a6 6 0 0 1-6-6v-12a6 6 0 0 1 6-6h18v-6a6 6 0 0 1 6-6z\"]\n};\nvar faMicrophone = {\n  prefix: 'fas',\n  iconName: 'microphone',\n  icon: [352, 512, [], \"f130\", \"M176 352c53.02 0 96-42.98 96-96V96c0-53.02-42.98-96-96-96S80 42.98 80 96v160c0 53.02 42.98 96 96 96zm160-160h-16c-8.84 0-16 7.16-16 16v48c0 74.8-64.49 134.82-140.79 127.38C96.71 376.89 48 317.11 48 250.3V208c0-8.84-7.16-16-16-16H16c-8.84 0-16 7.16-16 16v40.16c0 89.64 63.97 169.55 152 181.69V464H96c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16h-56v-33.77C285.71 418.47 352 344.9 352 256v-48c0-8.84-7.16-16-16-16z\"]\n};\nvar faMicrophoneAlt = {\n  prefix: 'fas',\n  iconName: 'microphone-alt',\n  icon: [352, 512, [], \"f3c9\", \"M336 192h-16c-8.84 0-16 7.16-16 16v48c0 74.8-64.49 134.82-140.79 127.38C96.71 376.89 48 317.11 48 250.3V208c0-8.84-7.16-16-16-16H16c-8.84 0-16 7.16-16 16v40.16c0 89.64 63.97 169.55 152 181.69V464H96c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16h-56v-33.77C285.71 418.47 352 344.9 352 256v-48c0-8.84-7.16-16-16-16zM176 352c53.02 0 96-42.98 96-96h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H272v-32h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H272v-32h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H272c0-53.02-42.98-96-96-96S80 42.98 80 96v160c0 53.02 42.98 96 96 96z\"]\n};\nvar faMicrophoneAltSlash = {\n  prefix: 'fas',\n  iconName: 'microphone-alt-slash',\n  icon: [640, 512, [], \"f539\", \"M633.82 458.1L476.26 336.33C488.74 312.21 496 284.98 496 256v-48c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v48c0 17.92-3.96 34.8-10.72 50.2l-26.55-20.52c3.1-9.4 5.28-19.22 5.28-29.67h-43.67l-41.4-32H416v-32h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H416v-32h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H416c0-53.02-42.98-96-96-96s-96 42.98-96 96v45.36L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.36 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.41-6.97 4.16-17.02-2.82-22.45zM400 464h-56v-33.78c11.71-1.62 23.1-4.28 33.96-8.08l-50.4-38.96c-6.71.4-13.41.87-20.35.2-55.85-5.45-98.74-48.63-111.18-101.85L144 241.31v6.85c0 89.64 63.97 169.55 152 181.69V464h-56c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16z\"]\n};\nvar faMicrophoneSlash = {\n  prefix: 'fas',\n  iconName: 'microphone-slash',\n  icon: [640, 512, [], \"f131\", \"M633.82 458.1l-157.8-121.96C488.61 312.13 496 285.01 496 256v-48c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v48c0 17.92-3.96 34.8-10.72 50.2l-26.55-20.52c3.1-9.4 5.28-19.22 5.28-29.67V96c0-53.02-42.98-96-96-96s-96 42.98-96 96v45.36L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.36 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.41-6.97 4.16-17.02-2.82-22.45zM400 464h-56v-33.77c11.66-1.6 22.85-4.54 33.67-8.31l-50.11-38.73c-6.71.4-13.41.87-20.35.2-55.85-5.45-98.74-48.63-111.18-101.85L144 241.31v6.85c0 89.64 63.97 169.55 152 181.69V464h-56c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16z\"]\n};\nvar faMicroscope = {\n  prefix: 'fas',\n  iconName: 'microscope',\n  icon: [512, 512, [], \"f610\", \"M160 320h12v16c0 8.84 7.16 16 16 16h40c8.84 0 16-7.16 16-16v-16h12c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32V16c0-8.84-7.16-16-16-16h-64c-8.84 0-16 7.16-16 16v16c-17.67 0-32 14.33-32 32v224c0 17.67 14.33 32 32 32zm304 128h-1.29C493.24 413.99 512 369.2 512 320c0-105.88-86.12-192-192-192v64c70.58 0 128 57.42 128 128s-57.42 128-128 128H48c-26.51 0-48 21.49-48 48 0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16 0-26.51-21.49-48-48-48zm-360-32h208c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8H104c-4.42 0-8 3.58-8 8v16c0 4.42 3.58 8 8 8z\"]\n};\nvar faMinus = {\n  prefix: 'fas',\n  iconName: 'minus',\n  icon: [448, 512, [], \"f068\", \"M416 208H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z\"]\n};\nvar faMinusCircle = {\n  prefix: 'fas',\n  iconName: 'minus-circle',\n  icon: [512, 512, [], \"f056\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zM124 296c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h264c6.6 0 12 5.4 12 12v56c0 6.6-5.4 12-12 12H124z\"]\n};\nvar faMinusSquare = {\n  prefix: 'fas',\n  iconName: 'minus-square',\n  icon: [448, 512, [], \"f146\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM92 296c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h264c6.6 0 12 5.4 12 12v56c0 6.6-5.4 12-12 12H92z\"]\n};\nvar faMitten = {\n  prefix: 'fas',\n  iconName: 'mitten',\n  icon: [448, 512, [], \"f7b5\", \"M368 416H48c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h320c8.8 0 16-7.2 16-16v-64c0-8.8-7.2-16-16-16zm57-209.1c-27.2-22.6-67.5-19-90.1 8.2l-20.9 25-29.6-128.4c-18-77.5-95.4-125.9-172.8-108C34.2 21.6-14.2 98.9 3.7 176.4L51.6 384h309l72.5-87c22.7-27.2 19-67.5-8.1-90.1z\"]\n};\nvar faMobile = {\n  prefix: 'fas',\n  iconName: 'mobile',\n  icon: [320, 512, [], \"f10b\", \"M272 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h224c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM160 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faMobileAlt = {\n  prefix: 'fas',\n  iconName: 'mobile-alt',\n  icon: [320, 512, [], \"f3cd\", \"M272 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h224c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM160 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm112-108c0 6.6-5.4 12-12 12H60c-6.6 0-12-5.4-12-12V60c0-6.6 5.4-12 12-12h200c6.6 0 12 5.4 12 12v312z\"]\n};\nvar faMoneyBill = {\n  prefix: 'fas',\n  iconName: 'money-bill',\n  icon: [640, 512, [], \"f0d6\", \"M608 64H32C14.33 64 0 78.33 0 96v320c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V96c0-17.67-14.33-32-32-32zM48 400v-64c35.35 0 64 28.65 64 64H48zm0-224v-64h64c0 35.35-28.65 64-64 64zm272 176c-44.19 0-80-42.99-80-96 0-53.02 35.82-96 80-96s80 42.98 80 96c0 53.03-35.83 96-80 96zm272 48h-64c0-35.35 28.65-64 64-64v64zm0-224c-35.35 0-64-28.65-64-64h64v64z\"]\n};\nvar faMoneyBillAlt = {\n  prefix: 'fas',\n  iconName: 'money-bill-alt',\n  icon: [640, 512, [], \"f3d1\", \"M352 288h-16v-88c0-4.42-3.58-8-8-8h-13.58c-4.74 0-9.37 1.4-13.31 4.03l-15.33 10.22a7.994 7.994 0 0 0-2.22 11.09l8.88 13.31a7.994 7.994 0 0 0 11.09 2.22l.47-.31V288h-16c-4.42 0-8 3.58-8 8v16c0 4.42 3.58 8 8 8h64c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8zM608 64H32C14.33 64 0 78.33 0 96v320c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V96c0-17.67-14.33-32-32-32zM48 400v-64c35.35 0 64 28.65 64 64H48zm0-224v-64h64c0 35.35-28.65 64-64 64zm272 192c-53.02 0-96-50.15-96-112 0-61.86 42.98-112 96-112s96 50.14 96 112c0 61.87-43 112-96 112zm272 32h-64c0-35.35 28.65-64 64-64v64zm0-224c-35.35 0-64-28.65-64-64h64v64z\"]\n};\nvar faMoneyBillWave = {\n  prefix: 'fas',\n  iconName: 'money-bill-wave',\n  icon: [640, 512, [], \"f53a\", \"M621.16 54.46C582.37 38.19 543.55 32 504.75 32c-123.17-.01-246.33 62.34-369.5 62.34-30.89 0-61.76-3.92-92.65-13.72-3.47-1.1-6.95-1.62-10.35-1.62C15.04 79 0 92.32 0 110.81v317.26c0 12.63 7.23 24.6 18.84 29.46C57.63 473.81 96.45 480 135.25 480c123.17 0 246.34-62.35 369.51-62.35 30.89 0 61.76 3.92 92.65 13.72 3.47 1.1 6.95 1.62 10.35 1.62 17.21 0 32.25-13.32 32.25-31.81V83.93c-.01-12.64-7.24-24.6-18.85-29.47zM48 132.22c20.12 5.04 41.12 7.57 62.72 8.93C104.84 170.54 79 192.69 48 192.69v-60.47zm0 285v-47.78c34.37 0 62.18 27.27 63.71 61.4-22.53-1.81-43.59-6.31-63.71-13.62zM320 352c-44.19 0-80-42.99-80-96 0-53.02 35.82-96 80-96s80 42.98 80 96c0 53.03-35.83 96-80 96zm272 27.78c-17.52-4.39-35.71-6.85-54.32-8.44 5.87-26.08 27.5-45.88 54.32-49.28v57.72zm0-236.11c-30.89-3.91-54.86-29.7-55.81-61.55 19.54 2.17 38.09 6.23 55.81 12.66v48.89z\"]\n};\nvar faMoneyBillWaveAlt = {\n  prefix: 'fas',\n  iconName: 'money-bill-wave-alt',\n  icon: [640, 512, [], \"f53b\", \"M621.16 54.46C582.37 38.19 543.55 32 504.75 32c-123.17-.01-246.33 62.34-369.5 62.34-30.89 0-61.76-3.92-92.65-13.72-3.47-1.1-6.95-1.62-10.35-1.62C15.04 79 0 92.32 0 110.81v317.26c0 12.63 7.23 24.6 18.84 29.46C57.63 473.81 96.45 480 135.25 480c123.17 0 246.34-62.35 369.51-62.35 30.89 0 61.76 3.92 92.65 13.72 3.47 1.1 6.95 1.62 10.35 1.62 17.21 0 32.25-13.32 32.25-31.81V83.93c-.01-12.64-7.24-24.6-18.85-29.47zM320 352c-44.19 0-80-42.99-80-96 0-53.02 35.82-96 80-96s80 42.98 80 96c0 53.03-35.83 96-80 96z\"]\n};\nvar faMoneyCheck = {\n  prefix: 'fas',\n  iconName: 'money-check',\n  icon: [640, 512, [], \"f53c\", \"M0 448c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V128H0v320zm448-208c0-8.84 7.16-16 16-16h96c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16h-96c-8.84 0-16-7.16-16-16v-32zm0 120c0-4.42 3.58-8 8-8h112c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H456c-4.42 0-8-3.58-8-8v-16zM64 264c0-4.42 3.58-8 8-8h304c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16zm0 96c0-4.42 3.58-8 8-8h176c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16zM624 32H16C7.16 32 0 39.16 0 48v48h640V48c0-8.84-7.16-16-16-16z\"]\n};\nvar faMoneyCheckAlt = {\n  prefix: 'fas',\n  iconName: 'money-check-alt',\n  icon: [640, 512, [], \"f53d\", \"M608 32H32C14.33 32 0 46.33 0 64v384c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32zM176 327.88V344c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-16.29c-11.29-.58-22.27-4.52-31.37-11.35-3.9-2.93-4.1-8.77-.57-12.14l11.75-11.21c2.77-2.64 6.89-2.76 10.13-.73 3.87 2.42 8.26 3.72 12.82 3.72h28.11c6.5 0 11.8-5.92 11.8-13.19 0-5.95-3.61-11.19-8.77-12.73l-45-13.5c-18.59-5.58-31.58-23.42-31.58-43.39 0-24.52 19.05-44.44 42.67-45.07V152c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16.29c11.29.58 22.27 4.51 31.37 11.35 3.9 2.93 4.1 8.77.57 12.14l-11.75 11.21c-2.77 2.64-6.89 2.76-10.13.73-3.87-2.43-8.26-3.72-12.82-3.72h-28.11c-6.5 0-11.8 5.92-11.8 13.19 0 5.95 3.61 11.19 8.77 12.73l45 13.5c18.59 5.58 31.58 23.42 31.58 43.39 0 24.53-19.05 44.44-42.67 45.07zM416 312c0 4.42-3.58 8-8 8H296c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h112c4.42 0 8 3.58 8 8v16zm160 0c0 4.42-3.58 8-8 8h-80c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16zm0-96c0 4.42-3.58 8-8 8H296c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h272c4.42 0 8 3.58 8 8v16z\"]\n};\nvar faMonument = {\n  prefix: 'fas',\n  iconName: 'monument',\n  icon: [384, 512, [], \"f5a6\", \"M368 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h352c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-78.86-347.26a31.97 31.97 0 0 0-9.21-19.44L203.31 4.69c-6.25-6.25-16.38-6.25-22.63 0l-76.6 76.61a31.97 31.97 0 0 0-9.21 19.44L64 416h256l-30.86-315.26zM240 307.2c0 6.4-6.4 12.8-12.8 12.8h-70.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h70.4c6.4 0 12.8 6.4 12.8 12.8v38.4z\"]\n};\nvar faMoon = {\n  prefix: 'fas',\n  iconName: 'moon',\n  icon: [512, 512, [], \"f186\", \"M283.211 512c78.962 0 151.079-35.925 198.857-94.792 7.068-8.708-.639-21.43-11.562-19.35-124.203 23.654-238.262-71.576-238.262-196.954 0-72.222 38.662-138.635 101.498-174.394 9.686-5.512 7.25-20.197-3.756-22.23A258.156 258.156 0 0 0 283.211 0c-141.309 0-256 114.511-256 256 0 141.309 114.511 256 256 256z\"]\n};\nvar faMortarPestle = {\n  prefix: 'fas',\n  iconName: 'mortar-pestle',\n  icon: [512, 512, [], \"f5a7\", \"M501.54 60.91c17.22-17.22 12.51-46.25-9.27-57.14a35.696 35.696 0 0 0-37.37 3.37L251.09 160h151.37l99.08-99.09zM496 192H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h16c0 80.98 50.2 150.11 121.13 178.32-12.76 16.87-21.72 36.8-24.95 58.69-1.46 9.92 6.04 18.98 16.07 18.98h223.5c10.03 0 17.53-9.06 16.07-18.98-3.22-21.89-12.18-41.82-24.95-58.69C429.8 406.11 480 336.98 480 256h16c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z\"]\n};\nvar faMosque = {\n  prefix: 'fas',\n  iconName: 'mosque',\n  icon: [640, 512, [], \"f678\", \"M0 480c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V160H0v320zm579.16-192c17.86-17.39 28.84-37.34 28.84-58.91 0-52.86-41.79-93.79-87.92-122.9-41.94-26.47-80.63-57.77-111.96-96.22L400 0l-8.12 9.97c-31.33 38.45-70.01 69.76-111.96 96.22C233.79 135.3 192 176.23 192 229.09c0 21.57 10.98 41.52 28.84 58.91h358.32zM608 320H192c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h32v-64c0-17.67 14.33-32 32-32s32 14.33 32 32v64h64v-72c0-48 48-72 48-72s48 24 48 72v72h64v-64c0-17.67 14.33-32 32-32s32 14.33 32 32v64h32c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32zM64 0S0 32 0 96v32h128V96c0-64-64-96-64-96z\"]\n};\nvar faMotorcycle = {\n  prefix: 'fas',\n  iconName: 'motorcycle',\n  icon: [640, 512, [], \"f21c\", \"M512.9 192c-14.9-.1-29.1 2.3-42.4 6.9L437.6 144H520c13.3 0 24-10.7 24-24V88c0-13.3-10.7-24-24-24h-45.3c-6.8 0-13.3 2.9-17.8 7.9l-37.5 41.7-22.8-38C392.2 68.4 384.4 64 376 64h-80c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h66.4l19.2 32H227.9c-17.7-23.1-44.9-40-99.9-40H72.5C59 104 47.7 115 48 128.5c.2 13 10.9 23.5 24 23.5h56c24.5 0 38.7 10.9 47.8 24.8l-11.3 20.5c-13-3.9-26.9-5.7-41.3-5.2C55.9 194.5 1.6 249.6 0 317c-1.6 72.1 56.3 131 128 131 59.6 0 109.7-40.8 124-96h84.2c13.7 0 24.6-11.4 24-25.1-2.1-47.1 17.5-93.7 56.2-125l12.5 20.8c-27.6 23.7-45.1 58.9-44.8 98.2.5 69.6 57.2 126.5 126.8 127.1 71.6.7 129.8-57.5 129.2-129.1-.7-69.6-57.6-126.4-127.2-126.9zM128 400c-44.1 0-80-35.9-80-80s35.9-80 80-80c4.2 0 8.4.3 12.5 1L99 316.4c-8.8 16 2.8 35.6 21 35.6h81.3c-12.4 28.2-40.6 48-73.3 48zm463.9-75.6c-2.2 40.6-35 73.4-75.5 75.5-46.1 2.5-84.4-34.3-84.4-79.9 0-21.4 8.4-40.8 22.1-55.1l49.4 82.4c4.5 7.6 14.4 10 22 5.5l13.7-8.2c7.6-4.5 10-14.4 5.5-22l-48.6-80.9c5.2-1.1 10.5-1.6 15.9-1.6 45.6-.1 82.3 38.2 79.9 84.3z\"]\n};\nvar faMountain = {\n  prefix: 'fas',\n  iconName: 'mountain',\n  icon: [640, 512, [], \"f6fc\", \"M634.92 462.7l-288-448C341.03 5.54 330.89 0 320 0s-21.03 5.54-26.92 14.7l-288 448a32.001 32.001 0 0 0-1.17 32.64A32.004 32.004 0 0 0 32 512h576c11.71 0 22.48-6.39 28.09-16.67a31.983 31.983 0 0 0-1.17-32.63zM320 91.18L405.39 224H320l-64 64-38.06-38.06L320 91.18z\"]\n};\nvar faMouse = {\n  prefix: 'fas',\n  iconName: 'mouse',\n  icon: [384, 512, [], \"f8cc\", \"M0 352a160 160 0 0 0 160 160h64a160 160 0 0 0 160-160V224H0zM176 0h-16A160 160 0 0 0 0 160v32h176zm48 0h-16v192h176v-32A160 160 0 0 0 224 0z\"]\n};\nvar faMousePointer = {\n  prefix: 'fas',\n  iconName: 'mouse-pointer',\n  icon: [320, 512, [], \"f245\", \"M302.189 329.126H196.105l55.831 135.993c3.889 9.428-.555 19.999-9.444 23.999l-49.165 21.427c-9.165 4-19.443-.571-23.332-9.714l-53.053-129.136-86.664 89.138C18.729 472.71 0 463.554 0 447.977V18.299C0 1.899 19.921-6.096 30.277 5.443l284.412 292.542c11.472 11.179 3.007 31.141-12.5 31.141z\"]\n};\nvar faMugHot = {\n  prefix: 'fas',\n  iconName: 'mug-hot',\n  icon: [512, 512, [], \"f7b6\", \"M127.1 146.5c1.3 7.7 8 13.5 16 13.5h16.5c9.8 0 17.6-8.5 16.3-18-3.8-28.2-16.4-54.2-36.6-74.7-14.4-14.7-23.6-33.3-26.4-53.5C111.8 5.9 105 0 96.8 0H80.4C70.6 0 63 8.5 64.1 18c3.9 31.9 18 61.3 40.6 84.4 12 12.2 19.7 27.5 22.4 44.1zm112 0c1.3 7.7 8 13.5 16 13.5h16.5c9.8 0 17.6-8.5 16.3-18-3.8-28.2-16.4-54.2-36.6-74.7-14.4-14.7-23.6-33.3-26.4-53.5C223.8 5.9 217 0 208.8 0h-16.4c-9.8 0-17.5 8.5-16.3 18 3.9 31.9 18 61.3 40.6 84.4 12 12.2 19.7 27.5 22.4 44.1zM400 192H32c-17.7 0-32 14.3-32 32v192c0 53 43 96 96 96h192c53 0 96-43 96-96h16c61.8 0 112-50.2 112-112s-50.2-112-112-112zm0 160h-16v-96h16c26.5 0 48 21.5 48 48s-21.5 48-48 48z\"]\n};\nvar faMusic = {\n  prefix: 'fas',\n  iconName: 'music',\n  icon: [512, 512, [], \"f001\", \"M470.38 1.51L150.41 96A32 32 0 0 0 128 126.51v261.41A139 139 0 0 0 96 384c-53 0-96 28.66-96 64s43 64 96 64 96-28.66 96-64V214.32l256-75v184.61a138.4 138.4 0 0 0-32-3.93c-53 0-96 28.66-96 64s43 64 96 64 96-28.65 96-64V32a32 32 0 0 0-41.62-30.49z\"]\n};\nvar faNetworkWired = {\n  prefix: 'fas',\n  iconName: 'network-wired',\n  icon: [640, 512, [], \"f6ff\", \"M640 264v-16c0-8.84-7.16-16-16-16H344v-40h72c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32H224c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h72v40H16c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h104v40H64c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h160c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32h-56v-40h304v40h-56c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h160c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32h-56v-40h104c8.84 0 16-7.16 16-16zM256 128V64h128v64H256zm-64 320H96v-64h96v64zm352 0h-96v-64h96v64z\"]\n};\nvar faNeuter = {\n  prefix: 'fas',\n  iconName: 'neuter',\n  icon: [288, 512, [], \"f22c\", \"M288 176c0-79.5-64.5-144-144-144S0 96.5 0 176c0 68.5 47.9 125.9 112 140.4V468c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12V316.4c64.1-14.5 112-71.9 112-140.4zm-144 80c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\"]\n};\nvar faNewspaper = {\n  prefix: 'fas',\n  iconName: 'newspaper',\n  icon: [576, 512, [], \"f1ea\", \"M552 64H88c-13.255 0-24 10.745-24 24v8H24c-13.255 0-24 10.745-24 24v272c0 30.928 25.072 56 56 56h472c26.51 0 48-21.49 48-48V88c0-13.255-10.745-24-24-24zM56 400a8 8 0 0 1-8-8V144h16v248a8 8 0 0 1-8 8zm236-16H140c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm208 0H348c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm-208-96H140c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm208 0H348c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm0-96H140c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h360c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12z\"]\n};\nvar faNotEqual = {\n  prefix: 'fas',\n  iconName: 'not-equal',\n  icon: [448, 512, [], \"f53e\", \"M416 208c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32h-23.88l51.87-66.81c5.37-7.02 4.04-17.06-2.97-22.43L415.61 3.3c-7.02-5.38-17.06-4.04-22.44 2.97L311.09 112H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h204.56l-74.53 96H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h55.49l-51.87 66.81c-5.37 7.01-4.04 17.05 2.97 22.43L64 508.7c7.02 5.38 17.06 4.04 22.43-2.97L168.52 400H416c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32H243.05l74.53-96H416z\"]\n};\nvar faNotesMedical = {\n  prefix: 'fas',\n  iconName: 'notes-medical',\n  icon: [384, 512, [], \"f481\", \"M336 64h-80c0-35.3-28.7-64-64-64s-64 28.7-64 64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM192 40c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm96 304c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48zm0-192c0 4.4-3.6 8-8 8H104c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h176c4.4 0 8 3.6 8 8v16z\"]\n};\nvar faObjectGroup = {\n  prefix: 'fas',\n  iconName: 'object-group',\n  icon: [512, 512, [], \"f247\", \"M480 128V96h20c6.627 0 12-5.373 12-12V44c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v20H64V44c0-6.627-5.373-12-12-12H12C5.373 32 0 37.373 0 44v40c0 6.627 5.373 12 12 12h20v320H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-20h384v20c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-20V128zM96 276V140c0-6.627 5.373-12 12-12h168c6.627 0 12 5.373 12 12v136c0 6.627-5.373 12-12 12H108c-6.627 0-12-5.373-12-12zm320 96c0 6.627-5.373 12-12 12H236c-6.627 0-12-5.373-12-12v-52h72c13.255 0 24-10.745 24-24v-72h84c6.627 0 12 5.373 12 12v136z\"]\n};\nvar faObjectUngroup = {\n  prefix: 'fas',\n  iconName: 'object-ungroup',\n  icon: [576, 512, [], \"f248\", \"M64 320v26a6 6 0 0 1-6 6H6a6 6 0 0 1-6-6v-52a6 6 0 0 1 6-6h26V96H6a6 6 0 0 1-6-6V38a6 6 0 0 1 6-6h52a6 6 0 0 1 6 6v26h288V38a6 6 0 0 1 6-6h52a6 6 0 0 1 6 6v52a6 6 0 0 1-6 6h-26v192h26a6 6 0 0 1 6 6v52a6 6 0 0 1-6 6h-52a6 6 0 0 1-6-6v-26H64zm480-64v-32h26a6 6 0 0 0 6-6v-52a6 6 0 0 0-6-6h-52a6 6 0 0 0-6 6v26H408v72h8c13.255 0 24 10.745 24 24v64c0 13.255-10.745 24-24 24h-64c-13.255 0-24-10.745-24-24v-8H192v72h-26a6 6 0 0 0-6 6v52a6 6 0 0 0 6 6h52a6 6 0 0 0 6-6v-26h288v26a6 6 0 0 0 6 6h52a6 6 0 0 0 6-6v-52a6 6 0 0 0-6-6h-26V256z\"]\n};\nvar faOilCan = {\n  prefix: 'fas',\n  iconName: 'oil-can',\n  icon: [640, 512, [], \"f613\", \"M629.8 160.31L416 224l-50.49-25.24a64.07 64.07 0 0 0-28.62-6.76H280v-48h56c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16H176c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h56v48h-56L37.72 166.86a31.9 31.9 0 0 0-5.79-.53C14.67 166.33 0 180.36 0 198.34v94.95c0 15.46 11.06 28.72 26.28 31.48L96 337.46V384c0 17.67 14.33 32 32 32h274.63c8.55 0 16.75-3.42 22.76-9.51l212.26-214.75c1.5-1.5 2.34-3.54 2.34-5.66V168c.01-5.31-5.08-9.15-10.19-7.69zM96 288.67l-48-8.73v-62.43l48 8.73v62.43zm453.33 84.66c0 23.56 19.1 42.67 42.67 42.67s42.67-19.1 42.67-42.67S592 288 592 288s-42.67 61.77-42.67 85.33z\"]\n};\nvar faOm = {\n  prefix: 'fas',\n  iconName: 'om',\n  icon: [512, 512, [], \"f679\", \"M360.6 60.94a10.43 10.43 0 0 0 14.76 0l21.57-21.56a10.43 10.43 0 0 0 0-14.76L375.35 3.06c-4.08-4.07-10.68-4.07-14.76 0l-21.57 21.56a10.43 10.43 0 0 0 0 14.76l21.58 21.56zM412.11 192c-26.69 0-51.77 10.39-70.64 29.25l-24.25 24.25c-6.78 6.77-15.78 10.5-25.38 10.5H245c10.54-22.1 14.17-48.11 7.73-75.23-10.1-42.55-46.36-76.11-89.52-83.19-36.15-5.93-70.9 5.04-96.01 28.78-7.36 6.96-6.97 18.85 1.12 24.93l26.15 19.63c5.72 4.3 13.66 4.32 19.2-.21 8.45-6.9 19.02-10.71 30.27-10.71 26.47 0 48.01 21.53 48.01 48s-21.54 48-48.01 48h-31.9c-11.96 0-19.74 12.58-14.39 23.28l16.09 32.17c2.53 5.06 7.6 8.1 13.17 8.55h33.03c35.3 0 64.01 28.7 64.01 64s-28.71 64-64.01 64c-96.02 0-122.35-54.02-145.15-92.03-4.53-7.55-14.77-3.58-14.79 5.22C-.09 416 41.13 512 159.94 512c70.59 0 128.02-57.42 128.02-128 0-23.42-6.78-45.1-17.81-64h21.69c26.69 0 51.77-10.39 70.64-29.25l24.25-24.25c6.78-6.77 15.78-10.5 25.38-10.5 19.78 0 35.88 16.09 35.88 35.88V392c0 13.23-18.77 24-32.01 24-39.4 0-66.67-24.24-81.82-42.89-4.77-5.87-14.2-2.54-14.2 5.02V416s0 64 96.02 64c48.54 0 96.02-39.47 96.02-88V291.88c0-55.08-44.8-99.88-99.89-99.88zm42.18-124.73c-85.55 65.12-169.05 2.75-172.58.05-6.02-4.62-14.44-4.38-20.14.55-5.74 4.92-7.27 13.17-3.66 19.8 1.61 2.95 40.37 72.34 118.8 72.34 79.92 0 98.78-31.36 101.75-37.66 1.02-2.12 1.53-4.47 1.53-6.83V80c0-13.22-15.14-20.69-25.7-12.73z\"]\n};\nvar faOtter = {\n  prefix: 'fas',\n  iconName: 'otter',\n  icon: [640, 512, [], \"f700\", \"M608 32h-32l-13.25-13.25A63.97 63.97 0 0 0 517.49 0H497c-11.14 0-22.08 2.91-31.75 8.43L312 96h-56C149.96 96 64 181.96 64 288v1.61c0 32.75-16 62.14-39.56 84.89-18.19 17.58-28.1 43.68-23.19 71.8 6.76 38.8 42.9 65.7 82.28 65.7H192c17.67 0 32-14.33 32-32s-14.33-32-32-32H80c-8.83 0-16-7.17-16-16s7.17-16 16-16h224c8.84 0 16-7.16 16-16v-16c0-17.67-14.33-32-32-32h-64l149.49-80.5L448 416h80c8.84 0 16-7.16 16-16v-16c0-17.67-14.33-32-32-32h-28.22l-55.11-110.21L521.14 192H544c53.02 0 96-42.98 96-96V64c0-17.67-14.33-32-32-32zm-96 16c8.84 0 16 7.16 16 16s-7.16 16-16 16-16-7.16-16-16 7.16-16 16-16zm32 96h-34.96L407.2 198.84l-13.77-27.55L512 112h77.05c-6.62 18.58-24.22 32-45.05 32z\"]\n};\nvar faOutdent = {\n  prefix: 'fas',\n  iconName: 'outdent',\n  icon: [448, 512, [], \"f03b\", \"M100.69 363.29c10 10 27.31 2.93 27.31-11.31V160c0-14.32-17.33-21.31-27.31-11.31l-96 96a16 16 0 0 0 0 22.62zM432 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm3.17-128H204.83A12.82 12.82 0 0 0 192 300.83v38.34A12.82 12.82 0 0 0 204.83 352h230.34A12.82 12.82 0 0 0 448 339.17v-38.34A12.82 12.82 0 0 0 435.17 288zm0-128H204.83A12.82 12.82 0 0 0 192 172.83v38.34A12.82 12.82 0 0 0 204.83 224h230.34A12.82 12.82 0 0 0 448 211.17v-38.34A12.82 12.82 0 0 0 435.17 160zM432 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faPager = {\n  prefix: 'fas',\n  iconName: 'pager',\n  icon: [512, 512, [], \"f815\", \"M448 64H64a64 64 0 0 0-64 64v256a64 64 0 0 0 64 64h384a64 64 0 0 0 64-64V128a64 64 0 0 0-64-64zM160 368H80a16 16 0 0 1-16-16v-16a16 16 0 0 1 16-16h80zm128-16a16 16 0 0 1-16 16h-80v-48h80a16 16 0 0 1 16 16zm160-128a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32v-64a32 32 0 0 1 32-32h320a32 32 0 0 1 32 32z\"]\n};\nvar faPaintBrush = {\n  prefix: 'fas',\n  iconName: 'paint-brush',\n  icon: [512, 512, [], \"f1fc\", \"M167.02 309.34c-40.12 2.58-76.53 17.86-97.19 72.3-2.35 6.21-8 9.98-14.59 9.98-11.11 0-45.46-27.67-55.25-34.35C0 439.62 37.93 512 128 512c75.86 0 128-43.77 128-120.19 0-3.11-.65-6.08-.97-9.13l-88.01-73.34zM457.89 0c-15.16 0-29.37 6.71-40.21 16.45C213.27 199.05 192 203.34 192 257.09c0 13.7 3.25 26.76 8.73 38.7l63.82 53.18c7.21 1.8 14.64 3.03 22.39 3.03 62.11 0 98.11-45.47 211.16-256.46 7.38-14.35 13.9-29.85 13.9-45.99C512 20.64 486 0 457.89 0z\"]\n};\nvar faPaintRoller = {\n  prefix: 'fas',\n  iconName: 'paint-roller',\n  icon: [512, 512, [], \"f5aa\", \"M416 128V32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v96c0 17.67 14.33 32 32 32h352c17.67 0 32-14.33 32-32zm32-64v128c0 17.67-14.33 32-32 32H256c-35.35 0-64 28.65-64 64v32c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32v-32h160c53.02 0 96-42.98 96-96v-64c0-35.35-28.65-64-64-64z\"]\n};\nvar faPalette = {\n  prefix: 'fas',\n  iconName: 'palette',\n  icon: [512, 512, [], \"f53f\", \"M204.3 5C104.9 24.4 24.8 104.3 5.2 203.4c-37 187 131.7 326.4 258.8 306.7 41.2-6.4 61.4-54.6 42.5-91.7-23.1-45.4 9.9-98.4 60.9-98.4h79.7c35.8 0 64.8-29.6 64.9-65.3C511.5 97.1 368.1-26.9 204.3 5zM96 320c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm32-128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128-64c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128 64c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faPallet = {\n  prefix: 'fas',\n  iconName: 'pallet',\n  icon: [640, 512, [], \"f482\", \"M144 256h352c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16H384v128l-64-32-64 32V0H144c-8.8 0-16 7.2-16 16v224c0 8.8 7.2 16 16 16zm480 128c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v64H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16h-48v-64h48zm-336 64H128v-64h160v64zm224 0H352v-64h160v64z\"]\n};\nvar faPaperPlane = {\n  prefix: 'fas',\n  iconName: 'paper-plane',\n  icon: [512, 512, [], \"f1d8\", \"M476 3.2L12.5 270.6c-18.1 10.4-15.8 35.6 2.2 43.2L121 358.4l287.3-253.2c5.5-4.9 13.3 2.6 8.6 8.3L176 407v80.5c0 23.6 28.5 32.9 42.5 15.8L282 426l124.6 52.2c14.2 6 30.4-2.9 33-18.2l72-432C515 7.8 493.3-6.8 476 3.2z\"]\n};\nvar faPaperclip = {\n  prefix: 'fas',\n  iconName: 'paperclip',\n  icon: [448, 512, [], \"f0c6\", \"M43.246 466.142c-58.43-60.289-57.341-157.511 1.386-217.581L254.392 34c44.316-45.332 116.351-45.336 160.671 0 43.89 44.894 43.943 117.329 0 162.276L232.214 383.128c-29.855 30.537-78.633 30.111-107.982-.998-28.275-29.97-27.368-77.473 1.452-106.953l143.743-146.835c6.182-6.314 16.312-6.422 22.626-.241l22.861 22.379c6.315 6.182 6.422 16.312.241 22.626L171.427 319.927c-4.932 5.045-5.236 13.428-.648 18.292 4.372 4.634 11.245 4.711 15.688.165l182.849-186.851c19.613-20.062 19.613-52.725-.011-72.798-19.189-19.627-49.957-19.637-69.154 0L90.39 293.295c-34.763 35.56-35.299 93.12-1.191 128.313 34.01 35.093 88.985 35.137 123.058.286l172.06-175.999c6.177-6.319 16.307-6.433 22.626-.256l22.877 22.364c6.319 6.177 6.434 16.307.256 22.626l-172.06 175.998c-59.576 60.938-155.943 60.216-214.77-.485z\"]\n};\nvar faParachuteBox = {\n  prefix: 'fas',\n  iconName: 'parachute-box',\n  icon: [512, 512, [], \"f4cd\", \"M511.9 175c-9.1-75.6-78.4-132.4-158.3-158.7C390 55.7 416 116.9 416 192h28.1L327.5 321.5c-2.5-.6-4.8-1.5-7.5-1.5h-48V192h112C384 76.8 315.1 0 256 0S128 76.8 128 192h112v128h-48c-2.7 0-5 .9-7.5 1.5L67.9 192H96c0-75.1 26-136.3 62.4-175.7C78.5 42.7 9.2 99.5.1 175c-1.1 9.1 6.8 17 16 17h8.7l136.7 151.9c-.7 2.6-1.6 5.2-1.6 8.1v128c0 17.7 14.3 32 32 32h128c17.7 0 32-14.3 32-32V352c0-2.9-.9-5.4-1.6-8.1L487.1 192h8.7c9.3 0 17.2-7.8 16.1-17z\"]\n};\nvar faParagraph = {\n  prefix: 'fas',\n  iconName: 'paragraph',\n  icon: [448, 512, [], \"f1dd\", \"M448 48v32a16 16 0 0 1-16 16h-48v368a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16V96h-32v368a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16V352h-32a160 160 0 0 1 0-320h240a16 16 0 0 1 16 16z\"]\n};\nvar faParking = {\n  prefix: 'fas',\n  iconName: 'parking',\n  icon: [448, 512, [], \"f540\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM240 320h-48v48c0 8.8-7.2 16-16 16h-32c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16h96c52.9 0 96 43.1 96 96s-43.1 96-96 96zm0-128h-48v64h48c17.6 0 32-14.4 32-32s-14.4-32-32-32z\"]\n};\nvar faPassport = {\n  prefix: 'fas',\n  iconName: 'passport',\n  icon: [448, 512, [], \"f5ab\", \"M129.62 176h39.09c1.49-27.03 6.54-51.35 14.21-70.41-27.71 13.24-48.02 39.19-53.3 70.41zm0 32c5.29 31.22 25.59 57.17 53.3 70.41-7.68-19.06-12.72-43.38-14.21-70.41h-39.09zM224 286.69c7.69-7.45 20.77-34.42 23.43-78.69h-46.87c2.67 44.26 15.75 71.24 23.44 78.69zM200.57 176h46.87c-2.66-44.26-15.74-71.24-23.43-78.69-7.7 7.45-20.78 34.43-23.44 78.69zm64.51 102.41c27.71-13.24 48.02-39.19 53.3-70.41h-39.09c-1.49 27.03-6.53 51.35-14.21 70.41zM416 0H64C28.65 0 0 28.65 0 64v384c0 35.35 28.65 64 64 64h352c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32zm-80 416H112c-8.8 0-16-7.2-16-16s7.2-16 16-16h224c8.8 0 16 7.2 16 16s-7.2 16-16 16zm-112-96c-70.69 0-128-57.31-128-128S153.31 64 224 64s128 57.31 128 128-57.31 128-128 128zm41.08-214.41c7.68 19.06 12.72 43.38 14.21 70.41h39.09c-5.28-31.22-25.59-57.17-53.3-70.41z\"]\n};\nvar faPastafarianism = {\n  prefix: 'fas',\n  iconName: 'pastafarianism',\n  icon: [640, 512, [], \"f67b\", \"M624.54 347.67c-32.7-12.52-57.36 4.25-75.37 16.45-17.06 11.53-23.25 14.42-31.41 11.36-8.12-3.09-10.83-9.38-15.89-29.38-3.33-13.15-7.44-29.32-17.95-42.65 2.24-2.91 4.43-5.79 6.38-8.57C500.47 304.45 513.71 312 532 312c33.95 0 50.87-25.78 62.06-42.83 10.59-16.14 15-21.17 21.94-21.17 13.25 0 24-10.75 24-24s-10.75-24-24-24c-33.95 0-50.87 25.78-62.06 42.83-10.6 16.14-15 21.17-21.94 21.17-17.31 0-37.48-61.43-97.26-101.91l17.25-34.5C485.43 125.5 512 97.98 512 64c0-35.35-28.65-64-64-64s-64 28.65-64 64c0 13.02 3.94 25.1 10.62 35.21l-18.15 36.3c-16.98-4.6-35.6-7.51-56.46-7.51s-39.49 2.91-56.46 7.51l-18.15-36.3C252.06 89.1 256 77.02 256 64c0-35.35-28.65-64-64-64s-64 28.65-64 64c0 33.98 26.56 61.5 60.02 63.6l17.25 34.5C145.68 202.44 125.15 264 108 264c-6.94 0-11.34-5.03-21.94-21.17C74.88 225.78 57.96 200 24 200c-13.25 0-24 10.75-24 24s10.75 24 24 24c6.94 0 11.34 5.03 21.94 21.17C57.13 286.22 74.05 312 108 312c18.29 0 31.53-7.55 41.7-17.11 1.95 2.79 4.14 5.66 6.38 8.57-10.51 13.33-14.62 29.5-17.95 42.65-5.06 20-7.77 26.28-15.89 29.38-8.11 3.06-14.33.17-31.41-11.36-18.03-12.2-42.72-28.92-75.37-16.45-12.39 4.72-18.59 18.58-13.87 30.97 4.72 12.41 18.61 18.61 30.97 13.88 8.16-3.09 14.34-.19 31.39 11.36 13.55 9.16 30.83 20.86 52.42 20.84 7.17 0 14.83-1.28 22.97-4.39 32.66-12.44 39.98-41.33 45.33-62.44 2.21-8.72 3.99-14.49 5.95-18.87 16.62 13.61 36.95 25.88 61.64 34.17-9.96 37-32.18 90.8-60.26 90.8-13.25 0-24 10.75-24 24s10.75 24 24 24c66.74 0 97.05-88.63 107.42-129.14 6.69.6 13.42 1.14 20.58 1.14s13.89-.54 20.58-1.14C350.95 423.37 381.26 512 448 512c13.25 0 24-10.75 24-24s-10.75-24-24-24c-27.94 0-50.21-53.81-60.22-90.81 24.69-8.29 45-20.56 61.62-34.16 1.96 4.38 3.74 10.15 5.95 18.87 5.34 21.11 12.67 50 45.33 62.44 8.14 3.11 15.8 4.39 22.97 4.39 21.59 0 38.87-11.69 52.42-20.84 17.05-11.55 23.28-14.45 31.39-11.36 12.39 4.75 26.27-1.47 30.97-13.88 4.71-12.4-1.49-26.26-13.89-30.98zM448 48c8.82 0 16 7.18 16 16s-7.18 16-16 16-16-7.18-16-16 7.18-16 16-16zm-256 0c8.82 0 16 7.18 16 16s-7.18 16-16 16-16-7.18-16-16 7.18-16 16-16z\"]\n};\nvar faPaste = {\n  prefix: 'fas',\n  iconName: 'paste',\n  icon: [448, 512, [], \"f0ea\", \"M128 184c0-30.879 25.122-56 56-56h136V56c0-13.255-10.745-24-24-24h-80.61C204.306 12.89 183.637 0 160 0s-44.306 12.89-55.39 32H24C10.745 32 0 42.745 0 56v336c0 13.255 10.745 24 24 24h104V184zm32-144c13.255 0 24 10.745 24 24s-10.745 24-24 24-24-10.745-24-24 10.745-24 24-24zm184 248h104v200c0 13.255-10.745 24-24 24H184c-13.255 0-24-10.745-24-24V184c0-13.255 10.745-24 24-24h136v104c0 13.2 10.8 24 24 24zm104-38.059V256h-96v-96h6.059a24 24 0 0 1 16.97 7.029l65.941 65.941a24.002 24.002 0 0 1 7.03 16.971z\"]\n};\nvar faPause = {\n  prefix: 'fas',\n  iconName: 'pause',\n  icon: [448, 512, [], \"f04c\", \"M144 479H48c-26.5 0-48-21.5-48-48V79c0-26.5 21.5-48 48-48h96c26.5 0 48 21.5 48 48v352c0 26.5-21.5 48-48 48zm304-48V79c0-26.5-21.5-48-48-48h-96c-26.5 0-48 21.5-48 48v352c0 26.5 21.5 48 48 48h96c26.5 0 48-21.5 48-48z\"]\n};\nvar faPauseCircle = {\n  prefix: 'fas',\n  iconName: 'pause-circle',\n  icon: [512, 512, [], \"f28b\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm-16 328c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v160zm112 0c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v160z\"]\n};\nvar faPaw = {\n  prefix: 'fas',\n  iconName: 'paw',\n  icon: [512, 512, [], \"f1b0\", \"M256 224c-79.41 0-192 122.76-192 200.25 0 34.9 26.81 55.75 71.74 55.75 48.84 0 81.09-25.08 120.26-25.08 39.51 0 71.85 25.08 120.26 25.08 44.93 0 71.74-20.85 71.74-55.75C448 346.76 335.41 224 256 224zm-147.28-12.61c-10.4-34.65-42.44-57.09-71.56-50.13-29.12 6.96-44.29 40.69-33.89 75.34 10.4 34.65 42.44 57.09 71.56 50.13 29.12-6.96 44.29-40.69 33.89-75.34zm84.72-20.78c30.94-8.14 46.42-49.94 34.58-93.36s-46.52-72.01-77.46-63.87-46.42 49.94-34.58 93.36c11.84 43.42 46.53 72.02 77.46 63.87zm281.39-29.34c-29.12-6.96-61.15 15.48-71.56 50.13-10.4 34.65 4.77 68.38 33.89 75.34 29.12 6.96 61.15-15.48 71.56-50.13 10.4-34.65-4.77-68.38-33.89-75.34zm-156.27 29.34c30.94 8.14 65.62-20.45 77.46-63.87 11.84-43.42-3.64-85.21-34.58-93.36s-65.62 20.45-77.46 63.87c-11.84 43.42 3.64 85.22 34.58 93.36z\"]\n};\nvar faPeace = {\n  prefix: 'fas',\n  iconName: 'peace',\n  icon: [496, 512, [], \"f67c\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm184 248c0 31.93-8.2 61.97-22.57 88.17L280 240.63V74.97c86.23 15.21 152 90.5 152 181.03zM216 437.03c-33.86-5.97-64.49-21.2-89.29-43.02L216 322.57v114.46zm64-114.46L369.29 394c-24.8 21.82-55.43 37.05-89.29 43.02V322.57zm-64-247.6v165.66L86.57 344.17C72.2 317.97 64 287.93 64 256c0-90.53 65.77-165.82 152-181.03z\"]\n};\nvar faPen = {\n  prefix: 'fas',\n  iconName: 'pen',\n  icon: [512, 512, [], \"f304\", \"M290.74 93.24l128.02 128.02-277.99 277.99-114.14 12.6C11.35 513.54-1.56 500.62.14 485.34l12.7-114.22 277.9-277.88zm207.2-19.06l-60.11-60.11c-18.75-18.75-49.16-18.75-67.91 0l-56.55 56.55 128.02 128.02 56.55-56.55c18.75-18.76 18.75-49.16 0-67.91z\"]\n};\nvar faPenAlt = {\n  prefix: 'fas',\n  iconName: 'pen-alt',\n  icon: [512, 512, [], \"f305\", \"M497.94 74.17l-60.11-60.11c-18.75-18.75-49.16-18.75-67.91 0l-56.55 56.55 128.02 128.02 56.55-56.55c18.75-18.75 18.75-49.15 0-67.91zm-246.8-20.53c-15.62-15.62-40.94-15.62-56.56 0L75.8 172.43c-6.25 6.25-6.25 16.38 0 22.62l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l101.82-101.82 22.63 22.62L93.95 290.03A327.038 327.038 0 0 0 .17 485.11l-.03.23c-1.7 15.28 11.21 28.2 26.49 26.51a327.02 327.02 0 0 0 195.34-93.8l196.79-196.79-82.77-82.77-84.85-84.85z\"]\n};\nvar faPenFancy = {\n  prefix: 'fas',\n  iconName: 'pen-fancy',\n  icon: [512, 512, [], \"f5ac\", \"M79.18 282.94a32.005 32.005 0 0 0-20.24 20.24L0 480l4.69 4.69 92.89-92.89c-.66-2.56-1.57-5.03-1.57-7.8 0-17.67 14.33-32 32-32s32 14.33 32 32-14.33 32-32 32c-2.77 0-5.24-.91-7.8-1.57l-92.89 92.89L32 512l176.82-58.94a31.983 31.983 0 0 0 20.24-20.24l33.07-84.07-98.88-98.88-84.07 33.07zM369.25 28.32L186.14 227.81l97.85 97.85 199.49-183.11C568.4 67.48 443.73-55.94 369.25 28.32z\"]\n};\nvar faPenNib = {\n  prefix: 'fas',\n  iconName: 'pen-nib',\n  icon: [512, 512, [], \"f5ad\", \"M136.6 138.79a64.003 64.003 0 0 0-43.31 41.35L0 460l14.69 14.69L164.8 324.58c-2.99-6.26-4.8-13.18-4.8-20.58 0-26.51 21.49-48 48-48s48 21.49 48 48-21.49 48-48 48c-7.4 0-14.32-1.81-20.58-4.8L37.31 497.31 52 512l279.86-93.29a64.003 64.003 0 0 0 41.35-43.31L416 224 288 96l-151.4 42.79zm361.34-64.62l-60.11-60.11c-18.75-18.75-49.16-18.75-67.91 0l-56.55 56.55 128.02 128.02 56.55-56.55c18.75-18.75 18.75-49.15 0-67.91z\"]\n};\nvar faPenSquare = {\n  prefix: 'fas',\n  iconName: 'pen-square',\n  icon: [448, 512, [], \"f14b\", \"M400 480H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48v352c0 26.5-21.5 48-48 48zM238.1 177.9L102.4 313.6l-6.3 57.1c-.8 7.6 5.6 14.1 13.3 13.3l57.1-6.3L302.2 242c2.3-2.3 2.3-6.1 0-8.5L246.7 178c-2.5-2.4-6.3-2.4-8.6-.1zM345 165.1L314.9 135c-9.4-9.4-24.6-9.4-33.9 0l-23.1 23.1c-2.3 2.3-2.3 6.1 0 8.5l55.5 55.5c2.3 2.3 6.1 2.3 8.5 0L345 199c9.3-9.3 9.3-24.5 0-33.9z\"]\n};\nvar faPencilAlt = {\n  prefix: 'fas',\n  iconName: 'pencil-alt',\n  icon: [512, 512, [], \"f303\", \"M497.9 142.1l-46.1 46.1c-4.7 4.7-12.3 4.7-17 0l-111-111c-4.7-4.7-4.7-12.3 0-17l46.1-46.1c18.7-18.7 49.1-18.7 67.9 0l60.1 60.1c18.8 18.7 18.8 49.1 0 67.9zM284.2 99.8L21.6 362.4.4 483.9c-2.9 16.4 11.4 30.6 27.8 27.8l121.5-21.3 262.6-262.6c4.7-4.7 4.7-12.3 0-17l-111-111c-4.8-4.7-12.4-4.7-17.1 0zM124.1 339.9c-5.5-5.5-5.5-14.3 0-19.8l154-154c5.5-5.5 14.3-5.5 19.8 0s5.5 14.3 0 19.8l-154 154c-5.5 5.5-14.3 5.5-19.8 0zM88 424h48v36.3l-64.5 11.3-31.1-31.1L51.7 376H88v48z\"]\n};\nvar faPencilRuler = {\n  prefix: 'fas',\n  iconName: 'pencil-ruler',\n  icon: [512, 512, [], \"f5ae\", \"M109.46 244.04l134.58-134.56-44.12-44.12-61.68 61.68a7.919 7.919 0 0 1-11.21 0l-11.21-11.21c-3.1-3.1-3.1-8.12 0-11.21l61.68-61.68-33.64-33.65C131.47-3.1 111.39-3.1 99 9.29L9.29 99c-12.38 12.39-12.39 32.47 0 44.86l100.17 100.18zm388.47-116.8c18.76-18.76 18.75-49.17 0-67.93l-45.25-45.25c-18.76-18.76-49.18-18.76-67.95 0l-46.02 46.01 113.2 113.2 46.02-46.03zM316.08 82.71l-297 296.96L.32 487.11c-2.53 14.49 10.09 27.11 24.59 24.56l107.45-18.84L429.28 195.9 316.08 82.71zm186.63 285.43l-33.64-33.64-61.68 61.68c-3.1 3.1-8.12 3.1-11.21 0l-11.21-11.21c-3.09-3.1-3.09-8.12 0-11.21l61.68-61.68-44.14-44.14L267.93 402.5l100.21 100.2c12.39 12.39 32.47 12.39 44.86 0l89.71-89.7c12.39-12.39 12.39-32.47 0-44.86z\"]\n};\nvar faPeopleArrows = {\n  prefix: 'fas',\n  iconName: 'people-arrows',\n  icon: [576, 512, [], \"e068\", \"M96,128A64,64,0,1,0,32,64,64,64,0,0,0,96,128Zm0,176.08a44.11,44.11,0,0,1,13.64-32L181.77,204c1.65-1.55,3.77-2.31,5.61-3.57A63.91,63.91,0,0,0,128,160H64A64,64,0,0,0,0,224v96a32,32,0,0,0,32,32V480a32,32,0,0,0,32,32h64a32,32,0,0,0,32-32V383.61l-50.36-47.53A44.08,44.08,0,0,1,96,304.08ZM480,128a64,64,0,1,0-64-64A64,64,0,0,0,480,128Zm32,32H448a63.91,63.91,0,0,0-59.38,40.42c1.84,1.27,4,2,5.62,3.59l72.12,68.06a44.37,44.37,0,0,1,0,64L416,383.62V480a32,32,0,0,0,32,32h64a32,32,0,0,0,32-32V352a32,32,0,0,0,32-32V224A64,64,0,0,0,512,160ZM444.4,295.34l-72.12-68.06A12,12,0,0,0,352,236v36H224V236a12,12,0,0,0-20.28-8.73L131.6,295.34a12.4,12.4,0,0,0,0,17.47l72.12,68.07A12,12,0,0,0,224,372.14V336H352v36.14a12,12,0,0,0,20.28,8.74l72.12-68.07A12.4,12.4,0,0,0,444.4,295.34Z\"]\n};\nvar faPeopleCarry = {\n  prefix: 'fas',\n  iconName: 'people-carry',\n  icon: [640, 512, [], \"f4ce\", \"M128 96c26.5 0 48-21.5 48-48S154.5 0 128 0 80 21.5 80 48s21.5 48 48 48zm384 0c26.5 0 48-21.5 48-48S538.5 0 512 0s-48 21.5-48 48 21.5 48 48 48zm125.7 372.1l-44-110-41.1 46.4-2 18.2 27.7 69.2c5 12.5 17 20.1 29.7 20.1 4 0 8-.7 11.9-2.3 16.4-6.6 24.4-25.2 17.8-41.6zm-34.2-209.8L585 178.1c-4.6-20-18.6-36.8-37.5-44.9-18.5-8-39-6.7-56.1 3.3-22.7 13.4-39.7 34.5-48.1 59.4L432 229.8 416 240v-96c0-8.8-7.2-16-16-16H240c-8.8 0-16 7.2-16 16v96l-16.1-10.2-11.3-33.9c-8.3-25-25.4-46-48.1-59.4-17.2-10-37.6-11.3-56.1-3.3-18.9 8.1-32.9 24.9-37.5 44.9l-18.4 80.2c-4.6 20 .7 41.2 14.4 56.7l67.2 75.9 10.1 92.6C130 499.8 143.8 512 160 512c1.2 0 2.3-.1 3.5-.2 17.6-1.9 30.2-17.7 28.3-35.3l-10.1-92.8c-1.5-13-6.9-25.1-15.6-35l-43.3-49 17.6-70.3 6.8 20.4c4.1 12.5 11.9 23.4 24.5 32.6l51.1 32.5c4.6 2.9 12.1 4.6 17.2 5h160c5.1-.4 12.6-2.1 17.2-5l51.1-32.5c12.6-9.2 20.4-20 24.5-32.6l6.8-20.4 17.6 70.3-43.3 49c-8.7 9.9-14.1 22-15.6 35l-10.1 92.8c-1.9 17.6 10.8 33.4 28.3 35.3 1.2.1 2.3.2 3.5.2 16.1 0 30-12.1 31.8-28.5l10.1-92.6 67.2-75.9c13.6-15.5 19-36.7 14.4-56.7zM46.3 358.1l-44 110c-6.6 16.4 1.4 35 17.8 41.6 16.8 6.6 35.1-1.7 41.6-17.8l27.7-69.2-2-18.2-41.1-46.4z\"]\n};\nvar faPepperHot = {\n  prefix: 'fas',\n  iconName: 'pepper-hot',\n  icon: [512, 512, [], \"f816\", \"M330.67 263.12V173.4l-52.75-24.22C219.44 218.76 197.58 400 56 400a56 56 0 0 0 0 112c212.64 0 370.65-122.87 419.18-210.34l-37.05-38.54zm131.09-128.37C493.92 74.91 477.18 26.48 458.62 3a8 8 0 0 0-11.93-.59l-22.9 23a8.06 8.06 0 0 0-.89 10.23c6.86 10.36 17.05 35.1-1.4 72.32A142.85 142.85 0 0 0 364.34 96c-28 0-54 8.54-76.34 22.59l74.67 34.29v78.24h89.09L506.44 288c3.26-12.62 5.56-25.63 5.56-39.31a154 154 0 0 0-50.24-113.94z\"]\n};\nvar faPercent = {\n  prefix: 'fas',\n  iconName: 'percent',\n  icon: [448, 512, [], \"f295\", \"M112 224c61.9 0 112-50.1 112-112S173.9 0 112 0 0 50.1 0 112s50.1 112 112 112zm0-160c26.5 0 48 21.5 48 48s-21.5 48-48 48-48-21.5-48-48 21.5-48 48-48zm224 224c-61.9 0-112 50.1-112 112s50.1 112 112 112 112-50.1 112-112-50.1-112-112-112zm0 160c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zM392.3.2l31.6-.1c19.4-.1 30.9 21.8 19.7 37.8L77.4 501.6a23.95 23.95 0 0 1-19.6 10.2l-33.4.1c-19.5 0-30.9-21.9-19.7-37.8l368-463.7C377.2 4 384.5.2 392.3.2z\"]\n};\nvar faPercentage = {\n  prefix: 'fas',\n  iconName: 'percentage',\n  icon: [384, 512, [], \"f541\", \"M109.25 173.25c24.99-24.99 24.99-65.52 0-90.51-24.99-24.99-65.52-24.99-90.51 0-24.99 24.99-24.99 65.52 0 90.51 25 25 65.52 25 90.51 0zm256 165.49c-24.99-24.99-65.52-24.99-90.51 0-24.99 24.99-24.99 65.52 0 90.51 24.99 24.99 65.52 24.99 90.51 0 25-24.99 25-65.51 0-90.51zm-1.94-231.43l-22.62-22.62c-12.5-12.5-32.76-12.5-45.25 0L20.69 359.44c-12.5 12.5-12.5 32.76 0 45.25l22.62 22.62c12.5 12.5 32.76 12.5 45.25 0l274.75-274.75c12.5-12.49 12.5-32.75 0-45.25z\"]\n};\nvar faPersonBooth = {\n  prefix: 'fas',\n  iconName: 'person-booth',\n  icon: [576, 512, [], \"f756\", \"M192 496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320h-64v176zm32-272h-50.9l-45.2-45.3C115.8 166.6 99.7 160 82.7 160H64c-17.1 0-33.2 6.7-45.3 18.8C6.7 190.9 0 207 0 224.1L.2 320 0 480c0 17.7 14.3 32 31.9 32 17.6 0 32-14.3 32-32l.1-100.7c.9.5 1.6 1.3 2.5 1.7l29.1 43v56c0 17.7 14.3 32 32 32s32-14.3 32-32v-56.5c0-9.9-2.3-19.8-6.7-28.6l-41.2-61.3V253l20.9 20.9c9.1 9.1 21.1 14.1 33.9 14.1H224c17.7 0 32-14.3 32-32s-14.3-32-32-32zM64 128c26.5 0 48-21.5 48-48S90.5 32 64 32 16 53.5 16 80s21.5 48 48 48zm224-96l31.5 223.1-30.9 154.6c-4.3 21.6 13 38.3 31.4 38.3 15.2 0 28-9.1 32.3-30.4.9 16.9 14.6 30.4 31.7 30.4 17.7 0 32-14.3 32-32 0 17.7 14.3 32 32 32s32-14.3 32-32V0H288v32zm-96 0v160h64V0h-32c-17.7 0-32 14.3-32 32zM544 0h-32v496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V32c0-17.7-14.3-32-32-32z\"]\n};\nvar faPhone = {\n  prefix: 'fas',\n  iconName: 'phone',\n  icon: [512, 512, [], \"f095\", \"M493.4 24.6l-104-24c-11.3-2.6-22.9 3.3-27.5 13.9l-48 112c-4.2 9.8-1.4 21.3 6.9 28l60.6 49.6c-36 76.7-98.9 140.5-177.2 177.2l-49.6-60.6c-6.8-8.3-18.2-11.1-28-6.9l-112 48C3.9 366.5-2 378.1.6 389.4l24 104C27.1 504.2 36.7 512 48 512c256.1 0 464-207.5 464-464 0-11.2-7.7-20.9-18.6-23.4z\"]\n};\nvar faPhoneAlt = {\n  prefix: 'fas',\n  iconName: 'phone-alt',\n  icon: [512, 512, [], \"f879\", \"M497.39 361.8l-112-48a24 24 0 0 0-28 6.9l-49.6 60.6A370.66 370.66 0 0 1 130.6 204.11l60.6-49.6a23.94 23.94 0 0 0 6.9-28l-48-112A24.16 24.16 0 0 0 122.6.61l-104 24A24 24 0 0 0 0 48c0 256.5 207.9 464 464 464a24 24 0 0 0 23.4-18.6l24-104a24.29 24.29 0 0 0-14.01-27.6z\"]\n};\nvar faPhoneSlash = {\n  prefix: 'fas',\n  iconName: 'phone-slash',\n  icon: [640, 512, [], \"f3dd\", \"M268.2 381.4l-49.6-60.6c-6.8-8.3-18.2-11.1-28-6.9l-112 48c-10.7 4.6-16.5 16.1-13.9 27.5l24 104c2.5 10.8 12.1 18.6 23.4 18.6 100.7 0 193.7-32.4 269.7-86.9l-80-61.8c-10.9 6.5-22.1 12.7-33.6 18.1zm365.6 76.7L475.1 335.5C537.9 256.4 576 156.9 576 48c0-11.2-7.7-20.9-18.6-23.4l-104-24c-11.3-2.6-22.9 3.3-27.5 13.9l-48 112c-4.2 9.8-1.4 21.3 6.9 28l60.6 49.6c-12.2 26.1-27.9 50.3-46 72.8L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4l588.4 454.7c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.4-6.8 4.1-16.9-2.9-22.3z\"]\n};\nvar faPhoneSquare = {\n  prefix: 'fas',\n  iconName: 'phone-square',\n  icon: [448, 512, [], \"f098\", \"M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM94 416c-7.033 0-13.057-4.873-14.616-11.627l-14.998-65a15 15 0 0 1 8.707-17.16l69.998-29.999a15 15 0 0 1 17.518 4.289l30.997 37.885c48.944-22.963 88.297-62.858 110.781-110.78l-37.886-30.997a15.001 15.001 0 0 1-4.289-17.518l30-69.998a15 15 0 0 1 17.16-8.707l65 14.998A14.997 14.997 0 0 1 384 126c0 160.292-129.945 290-290 290z\"]\n};\nvar faPhoneSquareAlt = {\n  prefix: 'fas',\n  iconName: 'phone-square-alt',\n  icon: [448, 512, [], \"f87b\", \"M400 32H48A48 48 0 0 0 0 80v352a48 48 0 0 0 48 48h352a48 48 0 0 0 48-48V80a48 48 0 0 0-48-48zm-16.39 307.37l-15 65A15 15 0 0 1 354 416C194 416 64 286.29 64 126a15.7 15.7 0 0 1 11.63-14.61l65-15A18.23 18.23 0 0 1 144 96a16.27 16.27 0 0 1 13.79 9.09l30 70A17.9 17.9 0 0 1 189 181a17 17 0 0 1-5.5 11.61l-37.89 31a231.91 231.91 0 0 0 110.78 110.78l31-37.89A17 17 0 0 1 299 291a17.85 17.85 0 0 1 5.91 1.21l70 30A16.25 16.25 0 0 1 384 336a17.41 17.41 0 0 1-.39 3.37z\"]\n};\nvar faPhoneVolume = {\n  prefix: 'fas',\n  iconName: 'phone-volume',\n  icon: [384, 512, [], \"f2a0\", \"M97.333 506.966c-129.874-129.874-129.681-340.252 0-469.933 5.698-5.698 14.527-6.632 21.263-2.422l64.817 40.513a17.187 17.187 0 0 1 6.849 20.958l-32.408 81.021a17.188 17.188 0 0 1-17.669 10.719l-55.81-5.58c-21.051 58.261-20.612 122.471 0 179.515l55.811-5.581a17.188 17.188 0 0 1 17.669 10.719l32.408 81.022a17.188 17.188 0 0 1-6.849 20.958l-64.817 40.513a17.19 17.19 0 0 1-21.264-2.422zM247.126 95.473c11.832 20.047 11.832 45.008 0 65.055-3.95 6.693-13.108 7.959-18.718 2.581l-5.975-5.726c-3.911-3.748-4.793-9.622-2.261-14.41a32.063 32.063 0 0 0 0-29.945c-2.533-4.788-1.65-10.662 2.261-14.41l5.975-5.726c5.61-5.378 14.768-4.112 18.718 2.581zm91.787-91.187c60.14 71.604 60.092 175.882 0 247.428-4.474 5.327-12.53 5.746-17.552.933l-5.798-5.557c-4.56-4.371-4.977-11.529-.93-16.379 49.687-59.538 49.646-145.933 0-205.422-4.047-4.85-3.631-12.008.93-16.379l5.798-5.557c5.022-4.813 13.078-4.394 17.552.933zm-45.972 44.941c36.05 46.322 36.108 111.149 0 157.546-4.39 5.641-12.697 6.251-17.856 1.304l-5.818-5.579c-4.4-4.219-4.998-11.095-1.285-15.931 26.536-34.564 26.534-82.572 0-117.134-3.713-4.836-3.115-11.711 1.285-15.931l5.818-5.579c5.159-4.947 13.466-4.337 17.856 1.304z\"]\n};\nvar faPhotoVideo = {\n  prefix: 'fas',\n  iconName: 'photo-video',\n  icon: [640, 512, [], \"f87c\", \"M608 0H160a32 32 0 0 0-32 32v96h160V64h192v320h128a32 32 0 0 0 32-32V32a32 32 0 0 0-32-32zM232 103a9 9 0 0 1-9 9h-30a9 9 0 0 1-9-9V73a9 9 0 0 1 9-9h30a9 9 0 0 1 9 9zm352 208a9 9 0 0 1-9 9h-30a9 9 0 0 1-9-9v-30a9 9 0 0 1 9-9h30a9 9 0 0 1 9 9zm0-104a9 9 0 0 1-9 9h-30a9 9 0 0 1-9-9v-30a9 9 0 0 1 9-9h30a9 9 0 0 1 9 9zm0-104a9 9 0 0 1-9 9h-30a9 9 0 0 1-9-9V73a9 9 0 0 1 9-9h30a9 9 0 0 1 9 9zm-168 57H32a32 32 0 0 0-32 32v288a32 32 0 0 0 32 32h384a32 32 0 0 0 32-32V192a32 32 0 0 0-32-32zM96 224a32 32 0 1 1-32 32 32 32 0 0 1 32-32zm288 224H64v-32l64-64 32 32 128-128 96 96z\"]\n};\nvar faPiggyBank = {\n  prefix: 'fas',\n  iconName: 'piggy-bank',\n  icon: [576, 512, [], \"f4d3\", \"M560 224h-29.5c-8.8-20-21.6-37.7-37.4-52.5L512 96h-32c-29.4 0-55.4 13.5-73 34.3-7.6-1.1-15.1-2.3-23-2.3H256c-77.4 0-141.9 55-156.8 128H56c-14.8 0-26.5-13.5-23.5-28.8C34.7 215.8 45.4 208 57 208h1c3.3 0 6-2.7 6-6v-20c0-3.3-2.7-6-6-6-28.5 0-53.9 20.4-57.5 48.6C-3.9 258.8 22.7 288 56 288h40c0 52.2 25.4 98.1 64 127.3V496c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-48h128v48c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-80.7c11.8-8.9 22.3-19.4 31.3-31.3H560c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16zm-128 64c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zM256 96h128c5.4 0 10.7.4 15.9.8 0-.3.1-.5.1-.8 0-53-43-96-96-96s-96 43-96 96c0 2.1.5 4.1.6 6.2 15.2-3.9 31-6.2 47.4-6.2z\"]\n};\nvar faPills = {\n  prefix: 'fas',\n  iconName: 'pills',\n  icon: [576, 512, [], \"f484\", \"M112 32C50.1 32 0 82.1 0 144v224c0 61.9 50.1 112 112 112s112-50.1 112-112V144c0-61.9-50.1-112-112-112zm48 224H64V144c0-26.5 21.5-48 48-48s48 21.5 48 48v112zm139.7-29.7c-3.5-3.5-9.4-3.1-12.3.8-45.3 62.5-40.4 150.1 15.9 206.4 56.3 56.3 143.9 61.2 206.4 15.9 4-2.9 4.3-8.8.8-12.3L299.7 226.3zm229.8-19c-56.3-56.3-143.9-61.2-206.4-15.9-4 2.9-4.3 8.8-.8 12.3l210.8 210.8c3.5 3.5 9.4 3.1 12.3-.8 45.3-62.6 40.5-150.1-15.9-206.4z\"]\n};\nvar faPizzaSlice = {\n  prefix: 'fas',\n  iconName: 'pizza-slice',\n  icon: [512, 512, [], \"f818\", \"M158.87.15c-16.16-1.52-31.2 8.42-35.33 24.12l-14.81 56.27c187.62 5.49 314.54 130.61 322.48 317l56.94-15.78c15.72-4.36 25.49-19.68 23.62-35.9C490.89 165.08 340.78 17.32 158.87.15zm-58.47 112L.55 491.64a16.21 16.21 0 0 0 20 19.75l379-105.1c-4.27-174.89-123.08-292.14-299.15-294.1zM128 416a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm48-152a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm104 104a32 32 0 1 1 32-32 32 32 0 0 1-32 32z\"]\n};\nvar faPlaceOfWorship = {\n  prefix: 'fas',\n  iconName: 'place-of-worship',\n  icon: [640, 512, [], \"f67f\", \"M620.61 366.55L512 320v192h112c8.84 0 16-7.16 16-16V395.96a32 32 0 0 0-19.39-29.41zM0 395.96V496c0 8.84 7.16 16 16 16h112V320L19.39 366.55A32 32 0 0 0 0 395.96zm464.46-149.28L416 217.6V102.63c0-8.49-3.37-16.62-9.38-22.63L331.31 4.69c-6.25-6.25-16.38-6.25-22.62 0L233.38 80c-6 6-9.38 14.14-9.38 22.63V217.6l-48.46 29.08A31.997 31.997 0 0 0 160 274.12V512h96v-96c0-35.35 28.66-64 64-64s64 28.65 64 64v96h96V274.12c0-11.24-5.9-21.66-15.54-27.44z\"]\n};\nvar faPlane = {\n  prefix: 'fas',\n  iconName: 'plane',\n  icon: [576, 512, [], \"f072\", \"M480 192H365.71L260.61 8.06A16.014 16.014 0 0 0 246.71 0h-65.5c-10.63 0-18.3 10.17-15.38 20.39L214.86 192H112l-43.2-57.6c-3.02-4.03-7.77-6.4-12.8-6.4H16.01C5.6 128-2.04 137.78.49 147.88L32 256 .49 364.12C-2.04 374.22 5.6 384 16.01 384H56c5.04 0 9.78-2.37 12.8-6.4L112 320h102.86l-49.03 171.6c-2.92 10.22 4.75 20.4 15.38 20.4h65.5c5.74 0 11.04-3.08 13.89-8.06L365.71 320H480c35.35 0 96-28.65 96-64s-60.65-64-96-64z\"]\n};\nvar faPlaneArrival = {\n  prefix: 'fas',\n  iconName: 'plane-arrival',\n  icon: [640, 512, [], \"f5af\", \"M624 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM44.81 205.66l88.74 80a62.607 62.607 0 0 0 25.47 13.93l287.6 78.35c26.48 7.21 54.56 8.72 81 1.36 29.67-8.27 43.44-21.21 47.25-35.71 3.83-14.5-1.73-32.71-23.37-54.96-19.28-19.82-44.35-32.79-70.83-40l-97.51-26.56L282.8 30.22c-1.51-5.81-5.95-10.35-11.66-11.91L206.05.58c-10.56-2.88-20.9 5.32-20.71 16.44l47.92 164.21-102.2-27.84-27.59-67.88c-1.93-4.89-6.01-8.57-11.02-9.93L52.72 64.75c-10.34-2.82-20.53 5-20.72 15.88l.23 101.78c.19 8.91 6.03 17.34 12.58 23.25z\"]\n};\nvar faPlaneDeparture = {\n  prefix: 'fas',\n  iconName: 'plane-departure',\n  icon: [640, 512, [], \"f5b0\", \"M624 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM80.55 341.27c6.28 6.84 15.1 10.72 24.33 10.71l130.54-.18a65.62 65.62 0 0 0 29.64-7.12l290.96-147.65c26.74-13.57 50.71-32.94 67.02-58.31 18.31-28.48 20.3-49.09 13.07-63.65-7.21-14.57-24.74-25.27-58.25-27.45-29.85-1.94-59.54 5.92-86.28 19.48l-98.51 49.99-218.7-82.06a17.799 17.799 0 0 0-18-1.11L90.62 67.29c-10.67 5.41-13.25 19.65-5.17 28.53l156.22 98.1-103.21 52.38-72.35-36.47a17.804 17.804 0 0 0-16.07.02L9.91 230.22c-10.44 5.3-13.19 19.12-5.57 28.08l76.21 82.97z\"]\n};\nvar faPlaneSlash = {\n  prefix: 'fas',\n  iconName: 'plane-slash',\n  icon: [640, 512, [], \"e069\", \"M32.48,147.88,64,256,32.48,364.13A16,16,0,0,0,48,384H88a16,16,0,0,0,12.8-6.41L144,320H246.85l-49,171.59A16,16,0,0,0,213.2,512h65.5a16,16,0,0,0,13.89-8.06l66.6-116.54L34.35,136.34A15.47,15.47,0,0,0,32.48,147.88ZM633.82,458.09,455.14,320H512c35.34,0,96-28.66,96-64s-60.66-64-96-64H397.7L292.61,8.06C290.06,3.61,283.84,0,278.71,0H213.2a16,16,0,0,0-15.38,20.39l36.94,129.29L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.45A16,16,0,0,0,6.18,53.91L594.54,508.63A16,16,0,0,0,617,505.81l19.64-25.26A16,16,0,0,0,633.82,458.09Z\"]\n};\nvar faPlay = {\n  prefix: 'fas',\n  iconName: 'play',\n  icon: [448, 512, [], \"f04b\", \"M424.4 214.7L72.4 6.6C43.8-10.3 0 6.1 0 47.9V464c0 37.5 40.7 60.1 72.4 41.3l352-208c31.4-18.5 31.5-64.1 0-82.6z\"]\n};\nvar faPlayCircle = {\n  prefix: 'fas',\n  iconName: 'play-circle',\n  icon: [512, 512, [], \"f144\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm115.7 272l-176 101c-15.8 8.8-35.7-2.5-35.7-21V152c0-18.4 19.8-29.8 35.7-21l176 107c16.4 9.2 16.4 32.9 0 42z\"]\n};\nvar faPlug = {\n  prefix: 'fas',\n  iconName: 'plug',\n  icon: [384, 512, [], \"f1e6\", \"M320,32a32,32,0,0,0-64,0v96h64Zm48,128H16A16,16,0,0,0,0,176v32a16,16,0,0,0,16,16H32v32A160.07,160.07,0,0,0,160,412.8V512h64V412.8A160.07,160.07,0,0,0,352,256V224h16a16,16,0,0,0,16-16V176A16,16,0,0,0,368,160ZM128,32a32,32,0,0,0-64,0v96h64Z\"]\n};\nvar faPlus = {\n  prefix: 'fas',\n  iconName: 'plus',\n  icon: [448, 512, [], \"f067\", \"M416 208H272V64c0-17.67-14.33-32-32-32h-32c-17.67 0-32 14.33-32 32v144H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h144v144c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V304h144c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z\"]\n};\nvar faPlusCircle = {\n  prefix: 'fas',\n  iconName: 'plus-circle',\n  icon: [512, 512, [], \"f055\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm144 276c0 6.6-5.4 12-12 12h-92v92c0 6.6-5.4 12-12 12h-56c-6.6 0-12-5.4-12-12v-92h-92c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h92v-92c0-6.6 5.4-12 12-12h56c6.6 0 12 5.4 12 12v92h92c6.6 0 12 5.4 12 12v56z\"]\n};\nvar faPlusSquare = {\n  prefix: 'fas',\n  iconName: 'plus-square',\n  icon: [448, 512, [], \"f0fe\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-32 252c0 6.6-5.4 12-12 12h-92v92c0 6.6-5.4 12-12 12h-56c-6.6 0-12-5.4-12-12v-92H92c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h92v-92c0-6.6 5.4-12 12-12h56c6.6 0 12 5.4 12 12v92h92c6.6 0 12 5.4 12 12v56z\"]\n};\nvar faPodcast = {\n  prefix: 'fas',\n  iconName: 'podcast',\n  icon: [448, 512, [], \"f2ce\", \"M267.429 488.563C262.286 507.573 242.858 512 224 512c-18.857 0-38.286-4.427-43.428-23.437C172.927 460.134 160 388.898 160 355.75c0-35.156 31.142-43.75 64-43.75s64 8.594 64 43.75c0 32.949-12.871 104.179-20.571 132.813zM156.867 288.554c-18.693-18.308-29.958-44.173-28.784-72.599 2.054-49.724 42.395-89.956 92.124-91.881C274.862 121.958 320 165.807 320 220c0 26.827-11.064 51.116-28.866 68.552-2.675 2.62-2.401 6.986.628 9.187 9.312 6.765 16.46 15.343 21.234 25.363 1.741 3.654 6.497 4.66 9.449 1.891 28.826-27.043 46.553-65.783 45.511-108.565-1.855-76.206-63.595-138.208-139.793-140.369C146.869 73.753 80 139.215 80 220c0 41.361 17.532 78.7 45.55 104.989 2.953 2.771 7.711 1.77 9.453-1.887 4.774-10.021 11.923-18.598 21.235-25.363 3.029-2.2 3.304-6.566.629-9.185zM224 0C100.204 0 0 100.185 0 224c0 89.992 52.602 165.647 125.739 201.408 4.333 2.118 9.267-1.544 8.535-6.31-2.382-15.512-4.342-30.946-5.406-44.339-.146-1.836-1.149-3.486-2.678-4.512-47.4-31.806-78.564-86.016-78.187-147.347.592-96.237 79.29-174.648 175.529-174.899C320.793 47.747 400 126.797 400 224c0 61.932-32.158 116.49-80.65 147.867-.999 14.037-3.069 30.588-5.624 47.23-.732 4.767 4.203 8.429 8.535 6.31C395.227 389.727 448 314.187 448 224 448 100.205 347.815 0 224 0zm0 160c-35.346 0-64 28.654-64 64s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64z\"]\n};\nvar faPoll = {\n  prefix: 'fas',\n  iconName: 'poll',\n  icon: [448, 512, [], \"f681\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM160 368c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16V240c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v128zm96 0c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16V144c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v224zm96 0c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-64c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v64z\"]\n};\nvar faPollH = {\n  prefix: 'fas',\n  iconName: 'poll-h',\n  icon: [448, 512, [], \"f682\", \"M448 432V80c0-26.5-21.5-48-48-48H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48zM112 192c-8.84 0-16-7.16-16-16v-32c0-8.84 7.16-16 16-16h128c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16H112zm0 96c-8.84 0-16-7.16-16-16v-32c0-8.84 7.16-16 16-16h224c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16H112zm0 96c-8.84 0-16-7.16-16-16v-32c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16h-64z\"]\n};\nvar faPoo = {\n  prefix: 'fas',\n  iconName: 'poo',\n  icon: [512, 512, [], \"f2fe\", \"M451.4 369.1C468.7 356 480 335.4 480 312c0-39.8-32.2-72-72-72h-14.1c13.4-11.7 22.1-28.8 22.1-48 0-35.3-28.7-64-64-64h-5.9c3.6-10.1 5.9-20.7 5.9-32 0-53-43-96-96-96-5.2 0-10.2.7-15.1 1.5C250.3 14.6 256 30.6 256 48c0 44.2-35.8 80-80 80h-16c-35.3 0-64 28.7-64 64 0 19.2 8.7 36.3 22.1 48H104c-39.8 0-72 32.2-72 72 0 23.4 11.3 44 28.6 57.1C26.3 374.6 0 404.1 0 440c0 39.8 32.2 72 72 72h368c39.8 0 72-32.2 72-72 0-35.9-26.3-65.4-60.6-70.9zM192 256c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm159.5 139C341 422.9 293 448 256 448s-85-25.1-95.5-53c-2-5.3 2-11 7.8-11h175.4c5.8 0 9.8 5.7 7.8 11zM320 320c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faPooStorm = {\n  prefix: 'fas',\n  iconName: 'poo-storm',\n  icon: [448, 512, [], \"f75a\", \"M308 336h-57.7l17.3-64.9c2-7.6-3.7-15.1-11.6-15.1h-68c-6 0-11.1 4.5-11.9 10.4l-16 120c-1 7.2 4.6 13.6 11.9 13.6h59.3l-23 97.2c-1.8 7.6 4 14.8 11.7 14.8 4.2 0 8.2-2.2 10.4-6l88-152c4.6-8-1.2-18-10.4-18zm66.4-111.3c5.9-9.6 9.6-20.6 9.6-32.7 0-35.3-28.7-64-64-64h-5.9c3.6-10.1 5.9-20.7 5.9-32 0-53-43-96-96-96-5.2 0-10.2.7-15.1 1.5C218.3 14.6 224 30.6 224 48c0 44.2-35.8 80-80 80h-16c-35.3 0-64 28.7-64 64 0 12.1 3.7 23.1 9.6 32.7C32.6 228 0 262.2 0 304c0 44 36 80 80 80h48.3c.1-.6 0-1.2 0-1.8l16-120c3-21.8 21.7-38.2 43.7-38.2h68c13.8 0 26.5 6.3 34.9 17.2s11.2 24.8 7.6 38.1l-6.6 24.7h16c15.7 0 30.3 8.4 38.1 22 7.8 13.6 7.8 30.5 0 44l-8.1 14h30c44 0 80-36 80-80 .1-41.8-32.5-76-73.5-79.3z\"]\n};\nvar faPoop = {\n  prefix: 'fas',\n  iconName: 'poop',\n  icon: [512, 512, [], \"f619\", \"M451.36 369.14C468.66 355.99 480 335.41 480 312c0-39.77-32.24-72-72-72h-14.07c13.42-11.73 22.07-28.78 22.07-48 0-35.35-28.65-64-64-64h-5.88c3.57-10.05 5.88-20.72 5.88-32 0-53.02-42.98-96-96-96-5.17 0-10.15.74-15.11 1.52C250.31 14.64 256 30.62 256 48c0 44.18-35.82 80-80 80h-16c-35.35 0-64 28.65-64 64 0 19.22 8.65 36.27 22.07 48H104c-39.76 0-72 32.23-72 72 0 23.41 11.34 43.99 28.64 57.14C26.31 374.62 0 404.12 0 440c0 39.76 32.24 72 72 72h368c39.76 0 72-32.24 72-72 0-35.88-26.31-65.38-60.64-70.86z\"]\n};\nvar faPortrait = {\n  prefix: 'fas',\n  iconName: 'portrait',\n  icon: [384, 512, [], \"f3e0\", \"M336 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM192 128c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H102.4C90 384 80 375.4 80 364.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2z\"]\n};\nvar faPoundSign = {\n  prefix: 'fas',\n  iconName: 'pound-sign',\n  icon: [320, 512, [], \"f154\", \"M308 352h-45.495c-6.627 0-12 5.373-12 12v50.848H128V288h84c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-84v-63.556c0-32.266 24.562-57.086 61.792-57.086 23.658 0 45.878 11.505 57.652 18.849 5.151 3.213 11.888 2.051 15.688-2.685l28.493-35.513c4.233-5.276 3.279-13.005-2.119-17.081C273.124 54.56 236.576 32 187.931 32 106.026 32 48 84.742 48 157.961V224H20c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h28v128H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h296c6.627 0 12-5.373 12-12V364c0-6.627-5.373-12-12-12z\"]\n};\nvar faPowerOff = {\n  prefix: 'fas',\n  iconName: 'power-off',\n  icon: [512, 512, [], \"f011\", \"M400 54.1c63 45 104 118.6 104 201.9 0 136.8-110.8 247.7-247.5 248C120 504.3 8.2 393 8 256.4 7.9 173.1 48.9 99.3 111.8 54.2c11.7-8.3 28-4.8 35 7.7L162.6 90c5.9 10.5 3.1 23.8-6.6 31-41.5 30.8-68 79.6-68 134.9-.1 92.3 74.5 168.1 168 168.1 91.6 0 168.6-74.2 168-169.1-.3-51.8-24.7-101.8-68.1-134-9.7-7.2-12.4-20.5-6.5-30.9l15.8-28.1c7-12.4 23.2-16.1 34.8-7.8zM296 264V24c0-13.3-10.7-24-24-24h-32c-13.3 0-24 10.7-24 24v240c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24z\"]\n};\nvar faPray = {\n  prefix: 'fas',\n  iconName: 'pray',\n  icon: [384, 512, [], \"f683\", \"M256 128c35.35 0 64-28.65 64-64S291.35 0 256 0s-64 28.65-64 64 28.65 64 64 64zm-30.63 169.75c14.06 16.72 39 19.09 55.97 5.22l88-72.02c17.09-13.98 19.59-39.19 5.62-56.28-13.97-17.11-39.19-19.59-56.31-5.62l-57.44 47-38.91-46.31c-15.44-18.39-39.22-27.92-64-25.33-24.19 2.48-45.25 16.27-56.37 36.92l-49.37 92.03c-23.4 43.64-8.69 96.37 34.19 123.75L131.56 432H40c-22.09 0-40 17.91-40 40s17.91 40 40 40h208c34.08 0 53.77-42.79 28.28-68.28L166.42 333.86l34.8-64.87 24.15 28.76z\"]\n};\nvar faPrayingHands = {\n  prefix: 'fas',\n  iconName: 'praying-hands',\n  icon: [640, 512, [], \"f684\", \"M272 191.91c-17.6 0-32 14.4-32 32v80c0 8.84-7.16 16-16 16s-16-7.16-16-16v-76.55c0-17.39 4.72-34.47 13.69-49.39l77.75-129.59c9.09-15.16 4.19-34.81-10.97-43.91-14.45-8.67-32.72-4.3-42.3 9.21-.2.23-.62.21-.79.48l-117.26 175.9C117.56 205.9 112 224.31 112 243.29v80.23l-90.12 30.04A31.974 31.974 0 0 0 0 383.91v96c0 10.82 8.52 32 32 32 2.69 0 5.41-.34 8.06-1.03l179.19-46.62C269.16 449.99 304 403.8 304 351.91v-128c0-17.6-14.4-32-32-32zm346.12 161.73L528 323.6v-80.23c0-18.98-5.56-37.39-16.12-53.23L394.62 14.25c-.18-.27-.59-.24-.79-.48-9.58-13.51-27.85-17.88-42.3-9.21-15.16 9.09-20.06 28.75-10.97 43.91l77.75 129.59c8.97 14.92 13.69 32 13.69 49.39V304c0 8.84-7.16 16-16 16s-16-7.16-16-16v-80c0-17.6-14.4-32-32-32s-32 14.4-32 32v128c0 51.89 34.84 98.08 84.75 112.34l179.19 46.62c2.66.69 5.38 1.03 8.06 1.03 23.48 0 32-21.18 32-32v-96c0-13.77-8.81-25.99-21.88-30.35z\"]\n};\nvar faPrescription = {\n  prefix: 'fas',\n  iconName: 'prescription',\n  icon: [384, 512, [], \"f5b1\", \"M301.26 352l78.06-78.06c6.25-6.25 6.25-16.38 0-22.63l-22.63-22.63c-6.25-6.25-16.38-6.25-22.63 0L256 306.74l-83.96-83.96C219.31 216.8 256 176.89 256 128c0-53.02-42.98-96-96-96H16C7.16 32 0 39.16 0 48v256c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-80h18.75l128 128-78.06 78.06c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0L256 397.25l78.06 78.06c6.25 6.25 16.38 6.25 22.63 0l22.63-22.63c6.25-6.25 6.25-16.38 0-22.63L301.26 352zM64 96h96c17.64 0 32 14.36 32 32s-14.36 32-32 32H64V96z\"]\n};\nvar faPrescriptionBottle = {\n  prefix: 'fas',\n  iconName: 'prescription-bottle',\n  icon: [384, 512, [], \"f485\", \"M32 192h120c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H32v64h120c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H32v64h120c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H32v64c0 17.6 14.4 32 32 32h256c17.6 0 32-14.4 32-32V128H32v64zM360 0H24C10.8 0 0 10.8 0 24v48c0 13.2 10.8 24 24 24h336c13.2 0 24-10.8 24-24V24c0-13.2-10.8-24-24-24z\"]\n};\nvar faPrescriptionBottleAlt = {\n  prefix: 'fas',\n  iconName: 'prescription-bottle-alt',\n  icon: [384, 512, [], \"f486\", \"M360 0H24C10.8 0 0 10.8 0 24v48c0 13.2 10.8 24 24 24h336c13.2 0 24-10.8 24-24V24c0-13.2-10.8-24-24-24zM32 480c0 17.6 14.4 32 32 32h256c17.6 0 32-14.4 32-32V128H32v352zm64-184c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48z\"]\n};\nvar faPrint = {\n  prefix: 'fas',\n  iconName: 'print',\n  icon: [512, 512, [], \"f02f\", \"M448 192V77.25c0-8.49-3.37-16.62-9.37-22.63L393.37 9.37c-6-6-14.14-9.37-22.63-9.37H96C78.33 0 64 14.33 64 32v160c-35.35 0-64 28.65-64 64v112c0 8.84 7.16 16 16 16h48v96c0 17.67 14.33 32 32 32h320c17.67 0 32-14.33 32-32v-96h48c8.84 0 16-7.16 16-16V256c0-35.35-28.65-64-64-64zm-64 256H128v-96h256v96zm0-224H128V64h192v48c0 8.84 7.16 16 16 16h48v96zm48 72c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z\"]\n};\nvar faProcedures = {\n  prefix: 'fas',\n  iconName: 'procedures',\n  icon: [640, 512, [], \"f487\", \"M528 224H272c-8.8 0-16 7.2-16 16v144H64V144c0-8.8-7.2-16-16-16H16c-8.8 0-16 7.2-16 16v352c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-48h512v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V336c0-61.9-50.1-112-112-112zM136 96h126.1l27.6 55.2c5.9 11.8 22.7 11.8 28.6 0L368 51.8 390.1 96H512c8.8 0 16-7.2 16-16s-7.2-16-16-16H409.9L382.3 8.8C376.4-3 359.6-3 353.7 8.8L304 108.2l-19.9-39.8c-1.4-2.7-4.1-4.4-7.2-4.4H136c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8zm24 256c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64z\"]\n};\nvar faProjectDiagram = {\n  prefix: 'fas',\n  iconName: 'project-diagram',\n  icon: [640, 512, [], \"f542\", \"M384 320H256c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h128c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32zM192 32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v128c0 17.67 14.33 32 32 32h95.72l73.16 128.04C211.98 300.98 232.4 288 256 288h.28L192 175.51V128h224V64H192V32zM608 0H480c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h128c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32z\"]\n};\nvar faPumpMedical = {\n  prefix: 'fas',\n  iconName: 'pump-medical',\n  icon: [384, 512, [], \"e06a\", \"M235.51,159.82H84.24A64,64,0,0,0,20.51,218L.14,442a64,64,0,0,0,63.74,69.8h192A64,64,0,0,0,319.61,442L299.24,218A64,64,0,0,0,235.51,159.82Zm4.37,173.33a13.35,13.35,0,0,1-13.34,13.34h-40v40a13.33,13.33,0,0,1-13.33,13.33H146.54a13.33,13.33,0,0,1-13.33-13.33v-40h-40a13.34,13.34,0,0,1-13.33-13.34V306.49a13.33,13.33,0,0,1,13.33-13.34h40v-40a13.33,13.33,0,0,1,13.33-13.33h26.67a13.33,13.33,0,0,1,13.33,13.33v40h40a13.34,13.34,0,0,1,13.34,13.34ZM379.19,93.88,335.87,50.56a64,64,0,0,0-45.24-18.74H223.88a32,32,0,0,0-32-32h-64a32,32,0,0,0-32,32v96h128v-32h66.75l43.31,43.31a16,16,0,0,0,22.63,0l22.62-22.62A16,16,0,0,0,379.19,93.88Z\"]\n};\nvar faPumpSoap = {\n  prefix: 'fas',\n  iconName: 'pump-soap',\n  icon: [384, 512, [], \"e06b\", \"M235.63,160H84.37a64,64,0,0,0-63.74,58.21L.27,442.21A64,64,0,0,0,64,512H256a64,64,0,0,0,63.74-69.79l-20.36-224A64,64,0,0,0,235.63,160ZM160,416c-33.12,0-60-26.33-60-58.75,0-25,35.7-75.47,52-97.27A10,10,0,0,1,168,260c16.33,21.8,52,72.27,52,97.27C220,389.67,193.12,416,160,416ZM379.31,94.06,336,50.74A64,64,0,0,0,290.75,32H224A32,32,0,0,0,192,0H128A32,32,0,0,0,96,32v96H224V96h66.75l43.31,43.31a16,16,0,0,0,22.63,0l22.62-22.62A16,16,0,0,0,379.31,94.06Z\"]\n};\nvar faPuzzlePiece = {\n  prefix: 'fas',\n  iconName: 'puzzle-piece',\n  icon: [576, 512, [], \"f12e\", \"M519.442 288.651c-41.519 0-59.5 31.593-82.058 31.593C377.409 320.244 432 144 432 144s-196.288 80-196.288-3.297c0-35.827 36.288-46.25 36.288-85.985C272 19.216 243.885 0 210.539 0c-34.654 0-66.366 18.891-66.366 56.346 0 41.364 31.711 59.277 31.711 81.75C175.885 207.719 0 166.758 0 166.758v333.237s178.635 41.047 178.635-28.662c0-22.473-40-40.107-40-81.471 0-37.456 29.25-56.346 63.577-56.346 33.673 0 61.788 19.216 61.788 54.717 0 39.735-36.288 50.158-36.288 85.985 0 60.803 129.675 25.73 181.23 25.73 0 0-34.725-120.101 25.827-120.101 35.962 0 46.423 36.152 86.308 36.152C556.712 416 576 387.99 576 354.443c0-34.199-18.962-65.792-56.558-65.792z\"]\n};\nvar faQrcode = {\n  prefix: 'fas',\n  iconName: 'qrcode',\n  icon: [448, 512, [], \"f029\", \"M0 224h192V32H0v192zM64 96h64v64H64V96zm192-64v192h192V32H256zm128 128h-64V96h64v64zM0 480h192V288H0v192zm64-128h64v64H64v-64zm352-64h32v128h-96v-32h-32v96h-64V288h96v32h64v-32zm0 160h32v32h-32v-32zm-64 0h32v32h-32v-32z\"]\n};\nvar faQuestion = {\n  prefix: 'fas',\n  iconName: 'question',\n  icon: [384, 512, [], \"f128\", \"M202.021 0C122.202 0 70.503 32.703 29.914 91.026c-7.363 10.58-5.093 25.086 5.178 32.874l43.138 32.709c10.373 7.865 25.132 6.026 33.253-4.148 25.049-31.381 43.63-49.449 82.757-49.449 30.764 0 68.816 19.799 68.816 49.631 0 22.552-18.617 34.134-48.993 51.164-35.423 19.86-82.299 44.576-82.299 106.405V320c0 13.255 10.745 24 24 24h72.471c13.255 0 24-10.745 24-24v-5.773c0-42.86 125.268-44.645 125.268-160.627C377.504 66.256 286.902 0 202.021 0zM192 373.459c-38.196 0-69.271 31.075-69.271 69.271 0 38.195 31.075 69.27 69.271 69.27s69.271-31.075 69.271-69.271-31.075-69.27-69.271-69.27z\"]\n};\nvar faQuestionCircle = {\n  prefix: 'fas',\n  iconName: 'question-circle',\n  icon: [512, 512, [], \"f059\", \"M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248zM262.655 90c-54.497 0-89.255 22.957-116.549 63.758-3.536 5.286-2.353 12.415 2.715 16.258l34.699 26.31c5.205 3.947 12.621 3.008 16.665-2.122 17.864-22.658 30.113-35.797 57.303-35.797 20.429 0 45.698 13.148 45.698 32.958 0 14.976-12.363 22.667-32.534 33.976C247.128 238.528 216 254.941 216 296v4c0 6.627 5.373 12 12 12h56c6.627 0 12-5.373 12-12v-1.333c0-28.462 83.186-29.647 83.186-106.667 0-58.002-60.165-102-116.531-102zM256 338c-25.365 0-46 20.635-46 46 0 25.364 20.635 46 46 46s46-20.636 46-46c0-25.365-20.635-46-46-46z\"]\n};\nvar faQuidditch = {\n  prefix: 'fas',\n  iconName: 'quidditch',\n  icon: [640, 512, [], \"f458\", \"M256.5 216.8L343.2 326s-16.6 102.4-76.6 150.1C206.7 523.8 0 510.2 0 510.2s3.8-23.1 11-55.4l94.6-112.2c4-4.7-.9-11.6-6.6-9.5l-60.4 22.1c14.4-41.7 32.7-80 54.6-97.5 59.9-47.8 163.3-40.9 163.3-40.9zm238 135c-44 0-79.8 35.8-79.8 79.9 0 44.1 35.7 79.9 79.8 79.9 44.1 0 79.8-35.8 79.8-79.9 0-44.2-35.8-79.9-79.8-79.9zM636.5 31L616.7 6c-5.5-6.9-15.5-8-22.4-2.6L361.8 181.3l-34.1-43c-5.1-6.4-15.1-5.2-18.6 2.2l-25.3 54.6 86.7 109.2 58.8-12.4c8-1.7 11.4-11.2 6.3-17.6l-34.1-42.9L634 53.5c6.9-5.5 8-15.6 2.5-22.5z\"]\n};\nvar faQuoteLeft = {\n  prefix: 'fas',\n  iconName: 'quote-left',\n  icon: [512, 512, [], \"f10d\", \"M464 256h-80v-64c0-35.3 28.7-64 64-64h8c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24h-8c-88.4 0-160 71.6-160 160v240c0 26.5 21.5 48 48 48h128c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48zm-288 0H96v-64c0-35.3 28.7-64 64-64h8c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24h-8C71.6 32 0 103.6 0 192v240c0 26.5 21.5 48 48 48h128c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48z\"]\n};\nvar faQuoteRight = {\n  prefix: 'fas',\n  iconName: 'quote-right',\n  icon: [512, 512, [], \"f10e\", \"M464 32H336c-26.5 0-48 21.5-48 48v128c0 26.5 21.5 48 48 48h80v64c0 35.3-28.7 64-64 64h-8c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h8c88.4 0 160-71.6 160-160V80c0-26.5-21.5-48-48-48zm-288 0H48C21.5 32 0 53.5 0 80v128c0 26.5 21.5 48 48 48h80v64c0 35.3-28.7 64-64 64h-8c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h8c88.4 0 160-71.6 160-160V80c0-26.5-21.5-48-48-48z\"]\n};\nvar faQuran = {\n  prefix: 'fas',\n  iconName: 'quran',\n  icon: [448, 512, [], \"f687\", \"M448 358.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM301.08 145.82c.6-1.21 1.76-1.82 2.92-1.82s2.32.61 2.92 1.82l11.18 22.65 25 3.63c2.67.39 3.74 3.67 1.81 5.56l-18.09 17.63 4.27 24.89c.36 2.11-1.31 3.82-3.21 3.82-.5 0-1.02-.12-1.52-.38L304 211.87l-22.36 11.75c-.5.26-1.02.38-1.52.38-1.9 0-3.57-1.71-3.21-3.82l4.27-24.89-18.09-17.63c-1.94-1.89-.87-5.17 1.81-5.56l24.99-3.63 11.19-22.65zm-57.89-69.01c13.67 0 27.26 2.49 40.38 7.41a6.775 6.775 0 1 1-2.38 13.12c-.67 0-3.09-.21-4.13-.21-52.31 0-94.86 42.55-94.86 94.86 0 52.3 42.55 94.86 94.86 94.86 1.03 0 3.48-.21 4.13-.21 3.93 0 6.8 3.14 6.8 6.78 0 2.98-1.94 5.51-4.62 6.42-13.07 4.87-26.59 7.34-40.19 7.34C179.67 307.19 128 255.51 128 192c0-63.52 51.67-115.19 115.19-115.19zM380.8 448H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8v64z\"]\n};\nvar faRadiation = {\n  prefix: 'fas',\n  iconName: 'radiation',\n  icon: [496, 512, [], \"f7b9\", \"M328.2 255.8h151.6c9.1 0 16.8-7.7 16.2-16.8-5.1-75.8-44.4-142.2-102.5-184.2-7.4-5.3-17.9-2.9-22.7 4.8L290.4 188c22.6 14.3 37.8 39.2 37.8 67.8zm-37.8 67.7c-12.3 7.7-26.8 12.4-42.4 12.4-15.6 0-30-4.7-42.4-12.4L125.2 452c-4.8 7.7-2.4 18.1 5.6 22.4C165.7 493.2 205.6 504 248 504s82.3-10.8 117.2-29.6c8-4.3 10.4-14.8 5.6-22.4l-80.4-128.5zM248 303.8c26.5 0 48-21.5 48-48s-21.5-48-48-48-48 21.5-48 48 21.5 48 48 48zm-231.8-48h151.6c0-28.6 15.2-53.5 37.8-67.7L125.2 59.7c-4.8-7.7-15.3-10.2-22.7-4.8C44.4 96.9 5.1 163.3 0 239.1c-.6 9 7.1 16.7 16.2 16.7z\"]\n};\nvar faRadiationAlt = {\n  prefix: 'fas',\n  iconName: 'radiation-alt',\n  icon: [496, 512, [], \"f7ba\", \"M312 256h79.1c9.2 0 16.9-7.7 16-16.8-4.6-43.6-27-81.8-59.5-107.8-7.6-6.1-18.8-4.5-24 3.8L281.9 202c18 11.2 30.1 31.2 30.1 54zm-97.8 54.1L172.4 377c-4.9 7.8-2.4 18.4 5.8 22.5 21.1 10.4 44.7 16.5 69.8 16.5s48.7-6.1 69.9-16.5c8.2-4.1 10.6-14.7 5.8-22.5l-41.8-66.9c-9.8 6.2-21.4 9.9-33.8 9.9s-24.1-3.7-33.9-9.9zM104.9 256H184c0-22.8 12.1-42.8 30.2-54.1l-41.7-66.8c-5.2-8.3-16.4-9.9-24-3.8-32.6 26-54.9 64.2-59.5 107.8-1.1 9.2 6.7 16.9 15.9 16.9zM248 504c137 0 248-111 248-248S385 8 248 8 0 119 0 256s111 248 248 248zm0-432c101.5 0 184 82.5 184 184s-82.5 184-184 184S64 357.5 64 256 146.5 72 248 72zm0 216c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32z\"]\n};\nvar faRainbow = {\n  prefix: 'fas',\n  iconName: 'rainbow',\n  icon: [576, 512, [], \"f75b\", \"M268.3 32.7C115.4 42.9 0 176.9 0 330.2V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320C64 186.8 180.9 80.3 317.5 97.9 430.4 112.4 512 214 512 327.8V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-165.3-140-298.6-307.7-287.3zm-5.6 96.9C166 142 96 229.1 96 326.7V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-74.8 64.5-134.8 140.8-127.4 66.5 6.5 115.2 66.2 115.2 133.1V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-114.2-100.2-205.4-217.3-190.4zm6.2 96.3c-45.6 8.9-76.9 51.5-76.9 97.9V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-17.6 14.3-32 32-32s32 14.4 32 32v144c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-59.2-53.8-106-115.1-94.1z\"]\n};\nvar faRandom = {\n  prefix: 'fas',\n  iconName: 'random',\n  icon: [512, 512, [], \"f074\", \"M504.971 359.029c9.373 9.373 9.373 24.569 0 33.941l-80 79.984c-15.01 15.01-40.971 4.49-40.971-16.971V416h-58.785a12.004 12.004 0 0 1-8.773-3.812l-70.556-75.596 53.333-57.143L352 336h32v-39.981c0-21.438 25.943-31.998 40.971-16.971l80 79.981zM12 176h84l52.781 56.551 53.333-57.143-70.556-75.596A11.999 11.999 0 0 0 122.785 96H12c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12zm372 0v39.984c0 21.46 25.961 31.98 40.971 16.971l80-79.984c9.373-9.373 9.373-24.569 0-33.941l-80-79.981C409.943 24.021 384 34.582 384 56.019V96h-58.785a12.004 12.004 0 0 0-8.773 3.812L96 336H12c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12h110.785c3.326 0 6.503-1.381 8.773-3.812L352 176h32z\"]\n};\nvar faReceipt = {\n  prefix: 'fas',\n  iconName: 'receipt',\n  icon: [384, 512, [], \"f543\", \"M358.4 3.2L320 48 265.6 3.2a15.9 15.9 0 0 0-19.2 0L192 48 137.6 3.2a15.9 15.9 0 0 0-19.2 0L64 48 25.6 3.2C15-4.7 0 2.8 0 16v480c0 13.2 15 20.7 25.6 12.8L64 464l54.4 44.8a15.9 15.9 0 0 0 19.2 0L192 464l54.4 44.8a15.9 15.9 0 0 0 19.2 0L320 464l38.4 44.8c10.5 7.9 25.6.4 25.6-12.8V16c0-13.2-15-20.7-25.6-12.8zM320 360c0 4.4-3.6 8-8 8H72c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h240c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H72c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h240c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H72c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h240c4.4 0 8 3.6 8 8v16z\"]\n};\nvar faRecordVinyl = {\n  prefix: 'fas',\n  iconName: 'record-vinyl',\n  icon: [512, 512, [], \"f8d9\", \"M256 152a104 104 0 1 0 104 104 104 104 0 0 0-104-104zm0 128a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm0-272C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 376a128 128 0 1 1 128-128 128 128 0 0 1-128 128z\"]\n};\nvar faRecycle = {\n  prefix: 'fas',\n  iconName: 'recycle',\n  icon: [512, 512, [], \"f1b8\", \"M184.561 261.903c3.232 13.997-12.123 24.635-24.068 17.168l-40.736-25.455-50.867 81.402C55.606 356.273 70.96 384 96.012 384H148c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12H96.115c-75.334 0-121.302-83.048-81.408-146.88l50.822-81.388-40.725-25.448c-12.081-7.547-8.966-25.961 4.879-29.158l110.237-25.45c8.611-1.988 17.201 3.381 19.189 11.99l25.452 110.237zm98.561-182.915l41.289 66.076-40.74 25.457c-12.051 7.528-9 25.953 4.879 29.158l110.237 25.45c8.672 1.999 17.215-3.438 19.189-11.99l25.45-110.237c3.197-13.844-11.99-24.719-24.068-17.168l-40.687 25.424-41.263-66.082c-37.521-60.033-125.209-60.171-162.816 0l-17.963 28.766c-3.51 5.62-1.8 13.021 3.82 16.533l33.919 21.195c5.62 3.512 13.024 1.803 16.536-3.817l17.961-28.743c12.712-20.341 41.973-19.676 54.257-.022zM497.288 301.12l-27.515-44.065c-3.511-5.623-10.916-7.334-16.538-3.821l-33.861 21.159c-5.62 3.512-7.33 10.915-3.818 16.536l27.564 44.112c13.257 21.211-2.057 48.96-27.136 48.96H320V336.02c0-14.213-17.242-21.383-27.313-11.313l-80 79.981c-6.249 6.248-6.249 16.379 0 22.627l80 79.989C302.689 517.308 320 510.3 320 495.989V448h95.88c75.274 0 121.335-82.997 81.408-146.88z\"]\n};\nvar faRedo = {\n  prefix: 'fas',\n  iconName: 'redo',\n  icon: [512, 512, [], \"f01e\", \"M500.33 0h-47.41a12 12 0 0 0-12 12.57l4 82.76A247.42 247.42 0 0 0 256 8C119.34 8 7.9 119.53 8 256.19 8.1 393.07 119.1 504 256 504a247.1 247.1 0 0 0 166.18-63.91 12 12 0 0 0 .48-17.43l-34-34a12 12 0 0 0-16.38-.55A176 176 0 1 1 402.1 157.8l-101.53-4.87a12 12 0 0 0-12.57 12v47.41a12 12 0 0 0 12 12h200.33a12 12 0 0 0 12-12V12a12 12 0 0 0-12-12z\"]\n};\nvar faRedoAlt = {\n  prefix: 'fas',\n  iconName: 'redo-alt',\n  icon: [512, 512, [], \"f2f9\", \"M256.455 8c66.269.119 126.437 26.233 170.859 68.685l35.715-35.715C478.149 25.851 504 36.559 504 57.941V192c0 13.255-10.745 24-24 24H345.941c-21.382 0-32.09-25.851-16.971-40.971l41.75-41.75c-30.864-28.899-70.801-44.907-113.23-45.273-92.398-.798-170.283 73.977-169.484 169.442C88.764 348.009 162.184 424 256 424c41.127 0 79.997-14.678 110.629-41.556 4.743-4.161 11.906-3.908 16.368.553l39.662 39.662c4.872 4.872 4.631 12.815-.482 17.433C378.202 479.813 319.926 504 256 504 119.034 504 8.001 392.967 8 256.002 7.999 119.193 119.646 7.755 256.455 8z\"]\n};\nvar faRegistered = {\n  prefix: 'fas',\n  iconName: 'registered',\n  icon: [512, 512, [], \"f25d\", \"M285.363 207.475c0 18.6-9.831 28.431-28.431 28.431h-29.876v-56.14h23.378c28.668 0 34.929 8.773 34.929 27.709zM504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zM363.411 360.414c-46.729-84.825-43.299-78.636-44.702-80.98 23.432-15.172 37.945-42.979 37.945-74.486 0-54.244-31.5-89.252-105.498-89.252h-70.667c-13.255 0-24 10.745-24 24V372c0 13.255 10.745 24 24 24h22.567c13.255 0 24-10.745 24-24v-71.663h25.556l44.129 82.937a24.001 24.001 0 0 0 21.188 12.727h24.464c18.261-.001 29.829-19.591 21.018-35.587z\"]\n};\nvar faRemoveFormat = {\n  prefix: 'fas',\n  iconName: 'remove-format',\n  icon: [640, 512, [], \"f87d\", \"M336 416h-11.17l9.26-27.77L267 336.4 240.49 416H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm297.82 42.1L377 259.59 426.17 112H544v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16H176a16 16 0 0 0-16 16v43.9L45.46 3.38A16 16 0 0 0 23 6.19L3.37 31.46a16 16 0 0 0 2.81 22.45l588.36 454.72a16 16 0 0 0 22.46-2.81l19.64-25.27a16 16 0 0 0-2.82-22.45zM309.91 207.76L224 141.36V112h117.83z\"]\n};\nvar faReply = {\n  prefix: 'fas',\n  iconName: 'reply',\n  icon: [512, 512, [], \"f3e5\", \"M8.309 189.836L184.313 37.851C199.719 24.546 224 35.347 224 56.015v80.053c160.629 1.839 288 34.032 288 186.258 0 61.441-39.581 122.309-83.333 154.132-13.653 9.931-33.111-2.533-28.077-18.631 45.344-145.012-21.507-183.51-176.59-185.742V360c0 20.7-24.3 31.453-39.687 18.164l-176.004-152c-11.071-9.562-11.086-26.753 0-36.328z\"]\n};\nvar faReplyAll = {\n  prefix: 'fas',\n  iconName: 'reply-all',\n  icon: [576, 512, [], \"f122\", \"M136.309 189.836L312.313 37.851C327.72 24.546 352 35.348 352 56.015v82.763c129.182 10.231 224 52.212 224 183.548 0 61.441-39.582 122.309-83.333 154.132-13.653 9.931-33.111-2.533-28.077-18.631 38.512-123.162-3.922-169.482-112.59-182.015v84.175c0 20.701-24.3 31.453-39.687 18.164L136.309 226.164c-11.071-9.561-11.086-26.753 0-36.328zm-128 36.328L184.313 378.15C199.7 391.439 224 380.687 224 359.986v-15.818l-108.606-93.785A55.96 55.96 0 0 1 96 207.998a55.953 55.953 0 0 1 19.393-42.38L224 71.832V56.015c0-20.667-24.28-31.469-39.687-18.164L8.309 189.836c-11.086 9.575-11.071 26.767 0 36.328z\"]\n};\nvar faRepublican = {\n  prefix: 'fas',\n  iconName: 'republican',\n  icon: [640, 512, [], \"f75e\", \"M544 192c0-88.4-71.6-160-160-160H160C71.6 32 0 103.6 0 192v64h544v-64zm-367.7-21.6l-19.8 19.3 4.7 27.3c.8 4.9-4.3 8.6-8.7 6.3L128 210.4l-24.5 12.9c-4.3 2.3-9.5-1.4-8.7-6.3l4.7-27.3-19.8-19.3c-3.6-3.5-1.6-9.5 3.3-10.2l27.4-4 12.2-24.8c2.2-4.5 8.6-4.4 10.7 0l12.2 24.8 27.4 4c5 .7 6.9 6.7 3.4 10.2zm144 0l-19.8 19.3 4.7 27.3c.8 4.9-4.3 8.6-8.7 6.3L272 210.4l-24.5 12.9c-4.3 2.3-9.5-1.4-8.7-6.3l4.7-27.3-19.8-19.3c-3.6-3.5-1.6-9.5 3.3-10.2l27.4-4 12.2-24.8c2.2-4.5 8.6-4.4 10.7 0l12.2 24.8 27.4 4c5 .7 6.9 6.7 3.4 10.2zm144 0l-19.8 19.3 4.7 27.3c.8 4.9-4.3 8.6-8.7 6.3L416 210.4l-24.5 12.9c-4.3 2.3-9.5-1.4-8.7-6.3l4.7-27.3-19.8-19.3c-3.6-3.5-1.6-9.5 3.3-10.2l27.4-4 12.2-24.8c2.2-4.5 8.6-4.4 10.7 0l12.2 24.8 27.4 4c5 .7 6.9 6.7 3.4 10.2zM624 320h-32c-8.8 0-16 7.2-16 16v64c0 8.8-7.2 16-16 16s-16-7.2-16-16V288H0v176c0 8.8 7.2 16 16 16h96c8.8 0 16-7.2 16-16v-80h192v80c0 8.8 7.2 16 16 16h96c8.8 0 16-7.2 16-16V352h32v43.3c0 41.8 30 80.1 71.6 84.3 47.8 4.9 88.4-32.7 88.4-79.6v-64c0-8.8-7.2-16-16-16z\"]\n};\nvar faRestroom = {\n  prefix: 'fas',\n  iconName: 'restroom',\n  icon: [640, 512, [], \"f7bd\", \"M128 128c35.3 0 64-28.7 64-64S163.3 0 128 0 64 28.7 64 64s28.7 64 64 64zm384 0c35.3 0 64-28.7 64-64S547.3 0 512 0s-64 28.7-64 64 28.7 64 64 64zm127.3 226.5l-45.6-185.8c-3.3-13.5-15.5-23-29.8-24.2-15 9.7-32.8 15.5-52 15.5-19.2 0-37-5.8-52-15.5-14.3 1.2-26.5 10.7-29.8 24.2l-45.6 185.8C381 369.6 393 384 409.2 384H464v104c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V384h54.8c16.2 0 28.2-14.4 24.5-29.5zM336 0h-32c-8.8 0-16 7.2-16 16v480c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16zM180.1 144.4c-15 9.8-32.9 15.6-52.1 15.6-19.2 0-37.1-5.8-52.1-15.6C51.3 146.5 32 166.9 32 192v136c0 13.3 10.7 24 24 24h8v136c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24V352h8c13.3 0 24-10.7 24-24V192c0-25.1-19.3-45.5-43.9-47.6z\"]\n};\nvar faRetweet = {\n  prefix: 'fas',\n  iconName: 'retweet',\n  icon: [640, 512, [], \"f079\", \"M629.657 343.598L528.971 444.284c-9.373 9.372-24.568 9.372-33.941 0L394.343 343.598c-9.373-9.373-9.373-24.569 0-33.941l10.823-10.823c9.562-9.562 25.133-9.34 34.419.492L480 342.118V160H292.451a24.005 24.005 0 0 1-16.971-7.029l-16-16C244.361 121.851 255.069 96 276.451 96H520c13.255 0 24 10.745 24 24v222.118l40.416-42.792c9.285-9.831 24.856-10.054 34.419-.492l10.823 10.823c9.372 9.372 9.372 24.569-.001 33.941zm-265.138 15.431A23.999 23.999 0 0 0 347.548 352H160V169.881l40.416 42.792c9.286 9.831 24.856 10.054 34.419.491l10.822-10.822c9.373-9.373 9.373-24.569 0-33.941L144.971 67.716c-9.373-9.373-24.569-9.373-33.941 0L10.343 168.402c-9.373 9.373-9.373 24.569 0 33.941l10.822 10.822c9.562 9.562 25.133 9.34 34.419-.491L96 169.881V392c0 13.255 10.745 24 24 24h243.549c21.382 0 32.09-25.851 16.971-40.971l-16.001-16z\"]\n};\nvar faRibbon = {\n  prefix: 'fas',\n  iconName: 'ribbon',\n  icon: [448, 512, [], \"f4d6\", \"M6.1 444.3c-9.6 10.8-7.5 27.6 4.5 35.7l68.8 27.9c9.9 6.7 23.3 5 31.3-3.8l91.8-101.9-79.2-87.9-117.2 130zm435.8 0s-292-324.6-295.4-330.1c15.4-8.4 40.2-17.9 77.5-17.9s62.1 9.5 77.5 17.9c-3.3 5.6-56 64.6-56 64.6l79.1 87.7 34.2-38c28.7-31.9 33.3-78.6 11.4-115.5l-43.7-73.5c-4.3-7.2-9.9-13.3-16.8-18-40.7-27.6-127.4-29.7-171.4 0-6.9 4.7-12.5 10.8-16.8 18l-43.6 73.2c-1.5 2.5-37.1 62.2 11.5 116L337.5 504c8 8.9 21.4 10.5 31.3 3.8l68.8-27.9c11.9-8 14-24.8 4.3-35.6z\"]\n};\nvar faRing = {\n  prefix: 'fas',\n  iconName: 'ring',\n  icon: [512, 512, [], \"f70b\", \"M256 64C110.06 64 0 125.91 0 208v98.13C0 384.48 114.62 448 256 448s256-63.52 256-141.87V208c0-82.09-110.06-144-256-144zm0 64c106.04 0 192 35.82 192 80 0 9.26-3.97 18.12-10.91 26.39C392.15 208.21 328.23 192 256 192s-136.15 16.21-181.09 42.39C67.97 226.12 64 217.26 64 208c0-44.18 85.96-80 192-80zM120.43 264.64C155.04 249.93 201.64 240 256 240s100.96 9.93 135.57 24.64C356.84 279.07 308.93 288 256 288s-100.84-8.93-135.57-23.36z\"]\n};\nvar faRoad = {\n  prefix: 'fas',\n  iconName: 'road',\n  icon: [576, 512, [], \"f018\", \"M573.19 402.67l-139.79-320C428.43 71.29 417.6 64 405.68 64h-97.59l2.45 23.16c.5 4.72-3.21 8.84-7.96 8.84h-29.16c-4.75 0-8.46-4.12-7.96-8.84L267.91 64h-97.59c-11.93 0-22.76 7.29-27.73 18.67L2.8 402.67C-6.45 423.86 8.31 448 30.54 448h196.84l10.31-97.68c.86-8.14 7.72-14.32 15.91-14.32h68.8c8.19 0 15.05 6.18 15.91 14.32L348.62 448h196.84c22.23 0 36.99-24.14 27.73-45.33zM260.4 135.16a8 8 0 0 1 7.96-7.16h39.29c4.09 0 7.53 3.09 7.96 7.16l4.6 43.58c.75 7.09-4.81 13.26-11.93 13.26h-40.54c-7.13 0-12.68-6.17-11.93-13.26l4.59-43.58zM315.64 304h-55.29c-9.5 0-16.91-8.23-15.91-17.68l5.07-48c.86-8.14 7.72-14.32 15.91-14.32h45.15c8.19 0 15.05 6.18 15.91 14.32l5.07 48c1 9.45-6.41 17.68-15.91 17.68z\"]\n};\nvar faRobot = {\n  prefix: 'fas',\n  iconName: 'robot',\n  icon: [640, 512, [], \"f544\", \"M32,224H64V416H32A31.96166,31.96166,0,0,1,0,384V256A31.96166,31.96166,0,0,1,32,224Zm512-48V448a64.06328,64.06328,0,0,1-64,64H160a64.06328,64.06328,0,0,1-64-64V176a79.974,79.974,0,0,1,80-80H288V32a32,32,0,0,1,64,0V96H464A79.974,79.974,0,0,1,544,176ZM264,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,264,256Zm-8,128H192v32h64Zm96,0H288v32h64ZM456,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,456,256Zm-8,128H384v32h64ZM640,256V384a31.96166,31.96166,0,0,1-32,32H576V224h32A31.96166,31.96166,0,0,1,640,256Z\"]\n};\nvar faRocket = {\n  prefix: 'fas',\n  iconName: 'rocket',\n  icon: [512, 512, [], \"f135\", \"M505.12019,19.09375c-1.18945-5.53125-6.65819-11-12.207-12.1875C460.716,0,435.507,0,410.40747,0,307.17523,0,245.26909,55.20312,199.05238,128H94.83772c-16.34763.01562-35.55658,11.875-42.88664,26.48438L2.51562,253.29688A28.4,28.4,0,0,0,0,264a24.00867,24.00867,0,0,0,24.00582,24H127.81618l-22.47457,22.46875c-11.36521,11.36133-12.99607,32.25781,0,45.25L156.24582,406.625c11.15623,11.1875,32.15619,13.15625,45.27726,0l22.47457-22.46875V488a24.00867,24.00867,0,0,0,24.00581,24,28.55934,28.55934,0,0,0,10.707-2.51562l98.72834-49.39063c14.62888-7.29687,26.50776-26.5,26.50776-42.85937V312.79688c72.59753-46.3125,128.03493-108.40626,128.03493-211.09376C512.07526,76.5,512.07526,51.29688,505.12019,19.09375ZM384.04033,168A40,40,0,1,1,424.05,128,40.02322,40.02322,0,0,1,384.04033,168Z\"]\n};\nvar faRoute = {\n  prefix: 'fas',\n  iconName: 'route',\n  icon: [512, 512, [], \"f4d7\", \"M416 320h-96c-17.6 0-32-14.4-32-32s14.4-32 32-32h96s96-107 96-160-43-96-96-96-96 43-96 96c0 25.5 22.2 63.4 45.3 96H320c-52.9 0-96 43.1-96 96s43.1 96 96 96h96c17.6 0 32 14.4 32 32s-14.4 32-32 32H185.5c-16 24.8-33.8 47.7-47.3 64H416c52.9 0 96-43.1 96-96s-43.1-96-96-96zm0-256c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zM96 256c-53 0-96 43-96 96s96 160 96 160 96-107 96-160-43-96-96-96zm0 128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faRss = {\n  prefix: 'fas',\n  iconName: 'rss',\n  icon: [448, 512, [], \"f09e\", \"M128.081 415.959c0 35.369-28.672 64.041-64.041 64.041S0 451.328 0 415.959s28.672-64.041 64.041-64.041 64.04 28.673 64.04 64.041zm175.66 47.25c-8.354-154.6-132.185-278.587-286.95-286.95C7.656 175.765 0 183.105 0 192.253v48.069c0 8.415 6.49 15.472 14.887 16.018 111.832 7.284 201.473 96.702 208.772 208.772.547 8.397 7.604 14.887 16.018 14.887h48.069c9.149.001 16.489-7.655 15.995-16.79zm144.249.288C439.596 229.677 251.465 40.445 16.503 32.01 7.473 31.686 0 38.981 0 48.016v48.068c0 8.625 6.835 15.645 15.453 15.999 191.179 7.839 344.627 161.316 352.465 352.465.353 8.618 7.373 15.453 15.999 15.453h48.068c9.034-.001 16.329-7.474 16.005-16.504z\"]\n};\nvar faRssSquare = {\n  prefix: 'fas',\n  iconName: 'rss-square',\n  icon: [448, 512, [], \"f143\", \"M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM112 416c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm157.533 0h-34.335c-6.011 0-11.051-4.636-11.442-10.634-5.214-80.05-69.243-143.92-149.123-149.123-5.997-.39-10.633-5.431-10.633-11.441v-34.335c0-6.535 5.468-11.777 11.994-11.425 110.546 5.974 198.997 94.536 204.964 204.964.352 6.526-4.89 11.994-11.425 11.994zm103.027 0h-34.334c-6.161 0-11.175-4.882-11.427-11.038-5.598-136.535-115.204-246.161-251.76-251.76C68.882 152.949 64 147.935 64 141.774V107.44c0-6.454 5.338-11.664 11.787-11.432 167.83 6.025 302.21 141.191 308.205 308.205.232 6.449-4.978 11.787-11.432 11.787z\"]\n};\nvar faRubleSign = {\n  prefix: 'fas',\n  iconName: 'ruble-sign',\n  icon: [384, 512, [], \"f158\", \"M239.36 320C324.48 320 384 260.542 384 175.071S324.48 32 239.36 32H76c-6.627 0-12 5.373-12 12v206.632H12c-6.627 0-12 5.373-12 12V308c0 6.627 5.373 12 12 12h52v32H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h52v52c0 6.627 5.373 12 12 12h58.56c6.627 0 12-5.373 12-12v-52H308c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12H146.56v-32h92.8zm-92.8-219.252h78.72c46.72 0 74.88 29.11 74.88 74.323 0 45.832-28.16 75.561-76.16 75.561h-77.44V100.748z\"]\n};\nvar faRuler = {\n  prefix: 'fas',\n  iconName: 'ruler',\n  icon: [640, 512, [], \"f545\", \"M635.7 167.2L556.1 31.7c-8.8-15-28.3-20.1-43.5-11.5l-69 39.1L503.3 161c2.2 3.8.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9L416 75l-55.2 31.3 27.9 47.4c2.2 3.8.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9L333.2 122 278 153.3 337.8 255c2.2 3.7.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9l-59.7-101.7-55.2 31.3 27.9 47.4c2.2 3.8.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9l-27.9-47.5-55.2 31.3 59.7 101.7c2.2 3.7.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9L84.9 262.9l-69 39.1C.7 310.7-4.6 329.8 4.2 344.8l79.6 135.6c8.8 15 28.3 20.1 43.5 11.5L624.1 210c15.2-8.6 20.4-27.8 11.6-42.8z\"]\n};\nvar faRulerCombined = {\n  prefix: 'fas',\n  iconName: 'ruler-combined',\n  icon: [512, 512, [], \"f546\", \"M160 288h-56c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h56v-64h-56c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h56V96h-56c-4.42 0-8-3.58-8-8V72c0-4.42 3.58-8 8-8h56V32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v448c0 2.77.91 5.24 1.57 7.8L160 329.38V288zm320 64h-32v56c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-56h-64v56c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-56h-64v56c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-56h-41.37L24.2 510.43c2.56.66 5.04 1.57 7.8 1.57h448c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32z\"]\n};\nvar faRulerHorizontal = {\n  prefix: 'fas',\n  iconName: 'ruler-horizontal',\n  icon: [576, 512, [], \"f547\", \"M544 128h-48v88c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-88h-64v88c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-88h-64v88c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-88h-64v88c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-88h-64v88c0 4.42-3.58 8-8 8H88c-4.42 0-8-3.58-8-8v-88H32c-17.67 0-32 14.33-32 32v192c0 17.67 14.33 32 32 32h512c17.67 0 32-14.33 32-32V160c0-17.67-14.33-32-32-32z\"]\n};\nvar faRulerVertical = {\n  prefix: 'fas',\n  iconName: 'ruler-vertical',\n  icon: [256, 512, [], \"f548\", \"M168 416c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88v-64h-88c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88v-64h-88c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88v-64h-88c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88V32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v448c0 17.67 14.33 32 32 32h192c17.67 0 32-14.33 32-32v-64h-88z\"]\n};\nvar faRunning = {\n  prefix: 'fas',\n  iconName: 'running',\n  icon: [416, 512, [], \"f70c\", \"M272 96c26.51 0 48-21.49 48-48S298.51 0 272 0s-48 21.49-48 48 21.49 48 48 48zM113.69 317.47l-14.8 34.52H32c-17.67 0-32 14.33-32 32s14.33 32 32 32h77.45c19.25 0 36.58-11.44 44.11-29.09l8.79-20.52-10.67-6.3c-17.32-10.23-30.06-25.37-37.99-42.61zM384 223.99h-44.03l-26.06-53.25c-12.5-25.55-35.45-44.23-61.78-50.94l-71.08-21.14c-28.3-6.8-57.77-.55-80.84 17.14l-39.67 30.41c-14.03 10.75-16.69 30.83-5.92 44.86s30.84 16.66 44.86 5.92l39.69-30.41c7.67-5.89 17.44-8 25.27-6.14l14.7 4.37-37.46 87.39c-12.62 29.48-1.31 64.01 26.3 80.31l84.98 50.17-27.47 87.73c-5.28 16.86 4.11 34.81 20.97 40.09 3.19 1 6.41 1.48 9.58 1.48 13.61 0 26.23-8.77 30.52-22.45l31.64-101.06c5.91-20.77-2.89-43.08-21.64-54.39l-61.24-36.14 31.31-78.28 20.27 41.43c8 16.34 24.92 26.89 43.11 26.89H384c17.67 0 32-14.33 32-32s-14.33-31.99-32-31.99z\"]\n};\nvar faRupeeSign = {\n  prefix: 'fas',\n  iconName: 'rupee-sign',\n  icon: [320, 512, [], \"f156\", \"M308 96c6.627 0 12-5.373 12-12V44c0-6.627-5.373-12-12-12H12C5.373 32 0 37.373 0 44v44.748c0 6.627 5.373 12 12 12h85.28c27.308 0 48.261 9.958 60.97 27.252H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h158.757c-6.217 36.086-32.961 58.632-74.757 58.632H12c-6.627 0-12 5.373-12 12v53.012c0 3.349 1.4 6.546 3.861 8.818l165.052 152.356a12.001 12.001 0 0 0 8.139 3.182h82.562c10.924 0 16.166-13.408 8.139-20.818L116.871 319.906c76.499-2.34 131.144-53.395 138.318-127.906H308c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-58.69c-3.486-11.541-8.28-22.246-14.252-32H308z\"]\n};\nvar faSadCry = {\n  prefix: 'fas',\n  iconName: 'sad-cry',\n  icon: [496, 512, [], \"f5b3\", \"M248 8C111 8 0 119 0 256c0 90.1 48.2 168.7 120 212.1V288c0-8.8 7.2-16 16-16s16 7.2 16 16v196.7c29.5 12.4 62 19.3 96 19.3s66.5-6.9 96-19.3V288c0-8.8 7.2-16 16-16s16 7.2 16 16v180.1C447.8 424.7 496 346 496 256 496 119 385 8 248 8zm-65.5 216.5c-14.8-13.2-46.2-13.2-61 0L112 233c-3.8 3.3-9.3 4-13.7 1.6-4.4-2.4-6.9-7.4-6.1-12.4 4-25.2 34.2-42.1 59.9-42.1S208 197 212 222.2c.8 5-1.7 10-6.1 12.4-5.8 3.1-11.2.7-13.7-1.6l-9.7-8.5zM248 416c-26.5 0-48-28.7-48-64s21.5-64 48-64 48 28.7 48 64-21.5 64-48 64zm149.8-181.5c-5.8 3.1-11.2.7-13.7-1.6l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L304 233c-3.8 3.3-9.3 4-13.7 1.6-4.4-2.4-6.9-7.4-6.1-12.4 4-25.2 34.2-42.1 59.9-42.1S400 197 404 222.2c.6 4.9-1.8 9.9-6.2 12.3z\"]\n};\nvar faSadTear = {\n  prefix: 'fas',\n  iconName: 'sad-tear',\n  icon: [496, 512, [], \"f5b4\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zM152 416c-26.5 0-48-21-48-47 0-20 28.5-60.4 41.6-77.8 3.2-4.3 9.6-4.3 12.8 0C171.5 308.6 200 349 200 369c0 26-21.5 47-48 47zm16-176c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm170.2 154.2C315.8 367.4 282.9 352 248 352c-21.2 0-21.2-32 0-32 44.4 0 86.3 19.6 114.7 53.8 13.8 16.4-11.2 36.5-24.5 20.4z\"]\n};\nvar faSatellite = {\n  prefix: 'fas',\n  iconName: 'satellite',\n  icon: [512, 512, [], \"f7bf\", \"M502.60969,310.04206l-96.70393,96.71625a31.88151,31.88151,0,0,1-45.00765,0L280.572,326.34115l-9.89231,9.90759a190.56343,190.56343,0,0,1-5.40716,168.52287c-4.50077,8.50115-16.39342,9.59505-23.20707,2.79725L134.54715,400.05428l-17.7999,17.79929c.70324,2.60972,1.60965,5.00067,1.60965,7.79793a32.00544,32.00544,0,1,1-32.00544-32.00434c2.79735,0,5.18838.90637,7.7982,1.60959l17.7999-17.79929L4.43129,269.94287c-6.798-6.81342-5.70409-18.6119,2.79735-23.20627a190.58161,190.58161,0,0,1,168.52864-5.407l9.79854-9.79821-80.31053-80.41716a32.002,32.002,0,0,1,0-45.09987L201.96474,9.29814A31.62639,31.62639,0,0,1,224.46868,0a31.99951,31.99951,0,0,1,22.59759,9.29814l80.32615,80.30777,47.805-47.89713a33.6075,33.6075,0,0,1,47.50808,0l47.50807,47.50645a33.63308,33.63308,0,0,1,0,47.50644l-47.805,47.89713L502.71908,265.036A31.78938,31.78938,0,0,1,502.60969,310.04206ZM219.56159,197.433l73.82505-73.82252-68.918-68.9-73.80942,73.80689Zm237.74352,90.106-68.90233-68.9156-73.825,73.82252,68.918,68.9Z\"]\n};\nvar faSatelliteDish = {\n  prefix: 'fas',\n  iconName: 'satellite-dish',\n  icon: [512, 512, [], \"f7c0\", \"M305.44954,462.59c7.39157,7.29792,6.18829,20.09661-3.00038,25.00356-77.713,41.80281-176.72559,29.9105-242.34331-35.7082C-5.49624,386.28227-17.404,287.362,24.41381,209.554c4.89125-9.095,17.68975-10.29834,25.00318-3.00043L166.22872,323.36708l27.39411-27.39452c-.68759-2.60974-1.594-5.00071-1.594-7.81361a32.00407,32.00407,0,1,1,32.00407,32.00455c-2.79723,0-5.20378-.89075-7.79786-1.594l-27.40974,27.41015ZM511.9758,303.06732a16.10336,16.10336,0,0,1-16.002,17.00242H463.86031a15.96956,15.96956,0,0,1-15.89265-15.00213C440.46671,175.5492,336.45348,70.53427,207.03078,63.53328a15.84486,15.84486,0,0,1-15.00191-15.90852V16.02652A16.09389,16.09389,0,0,1,209.031.02425C372.25491,8.61922,503.47472,139.841,511.9758,303.06732Zm-96.01221-.29692a16.21093,16.21093,0,0,1-16.11142,17.29934H367.645a16.06862,16.06862,0,0,1-15.89265-14.70522c-6.90712-77.01094-68.118-138.91037-144.92467-145.22376a15.94,15.94,0,0,1-14.79876-15.89289V112.13393a16.134,16.134,0,0,1,17.29908-16.096C319.45132,104.5391,407.55627,192.64538,415.96359,302.7704Z\"]\n};\nvar faSave = {\n  prefix: 'fas',\n  iconName: 'save',\n  icon: [448, 512, [], \"f0c7\", \"M433.941 129.941l-83.882-83.882A48 48 0 0 0 316.118 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V163.882a48 48 0 0 0-14.059-33.941zM224 416c-35.346 0-64-28.654-64-64 0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64zm96-304.52V212c0 6.627-5.373 12-12 12H76c-6.627 0-12-5.373-12-12V108c0-6.627 5.373-12 12-12h228.52c3.183 0 6.235 1.264 8.485 3.515l3.48 3.48A11.996 11.996 0 0 1 320 111.48z\"]\n};\nvar faSchool = {\n  prefix: 'fas',\n  iconName: 'school',\n  icon: [640, 512, [], \"f549\", \"M0 224v272c0 8.84 7.16 16 16 16h80V192H32c-17.67 0-32 14.33-32 32zm360-48h-24v-40c0-4.42-3.58-8-8-8h-16c-4.42 0-8 3.58-8 8v64c0 4.42 3.58 8 8 8h48c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8zm137.75-63.96l-160-106.67a32.02 32.02 0 0 0-35.5 0l-160 106.67A32.002 32.002 0 0 0 128 138.66V512h128V368c0-8.84 7.16-16 16-16h96c8.84 0 16 7.16 16 16v144h128V138.67c0-10.7-5.35-20.7-14.25-26.63zM320 256c-44.18 0-80-35.82-80-80s35.82-80 80-80 80 35.82 80 80-35.82 80-80 80zm288-64h-64v320h80c8.84 0 16-7.16 16-16V224c0-17.67-14.33-32-32-32z\"]\n};\nvar faScrewdriver = {\n  prefix: 'fas',\n  iconName: 'screwdriver',\n  icon: [512, 512, [], \"f54a\", \"M448 0L320 96v62.06l-83.03 83.03c6.79 4.25 13.27 9.06 19.07 14.87 5.8 5.8 10.62 12.28 14.87 19.07L353.94 192H416l96-128-64-64zM128 278.59L10.92 395.67c-14.55 14.55-14.55 38.15 0 52.71l52.7 52.7c14.56 14.56 38.15 14.56 52.71 0L233.41 384c29.11-29.11 29.11-76.3 0-105.41s-76.3-29.11-105.41 0z\"]\n};\nvar faScroll = {\n  prefix: 'fas',\n  iconName: 'scroll',\n  icon: [640, 512, [], \"f70e\", \"M48 0C21.53 0 0 21.53 0 48v64c0 8.84 7.16 16 16 16h80V48C96 21.53 74.47 0 48 0zm208 412.57V352h288V96c0-52.94-43.06-96-96-96H111.59C121.74 13.41 128 29.92 128 48v368c0 38.87 34.65 69.65 74.75 63.12C234.22 474 256 444.46 256 412.57zM288 384v32c0 52.93-43.06 96-96 96h336c61.86 0 112-50.14 112-112 0-8.84-7.16-16-16-16H288z\"]\n};\nvar faSdCard = {\n  prefix: 'fas',\n  iconName: 'sd-card',\n  icon: [384, 512, [], \"f7c2\", \"M320 0H128L0 128v320c0 35.3 28.7 64 64 64h256c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64zM160 160h-48V64h48v96zm80 0h-48V64h48v96zm80 0h-48V64h48v96z\"]\n};\nvar faSearch = {\n  prefix: 'fas',\n  iconName: 'search',\n  icon: [512, 512, [], \"f002\", \"M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z\"]\n};\nvar faSearchDollar = {\n  prefix: 'fas',\n  iconName: 'search-dollar',\n  icon: [512, 512, [], \"f688\", \"M505.04 442.66l-99.71-99.69c-4.5-4.5-10.6-7-17-7h-16.3c27.6-35.3 44-79.69 44-127.99C416.03 93.09 322.92 0 208.02 0S0 93.09 0 207.98s93.11 207.98 208.02 207.98c48.3 0 92.71-16.4 128.01-44v16.3c0 6.4 2.5 12.5 7 17l99.71 99.69c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.59.1-33.99zm-297.02-90.7c-79.54 0-144-64.34-144-143.98 0-79.53 64.35-143.98 144-143.98 79.54 0 144 64.34 144 143.98 0 79.53-64.35 143.98-144 143.98zm27.11-152.54l-45.01-13.5c-5.16-1.55-8.77-6.78-8.77-12.73 0-7.27 5.3-13.19 11.8-13.19h28.11c4.56 0 8.96 1.29 12.82 3.72 3.24 2.03 7.36 1.91 10.13-.73l11.75-11.21c3.53-3.37 3.33-9.21-.57-12.14-9.1-6.83-20.08-10.77-31.37-11.35V112c0-4.42-3.58-8-8-8h-16c-4.42 0-8 3.58-8 8v16.12c-23.63.63-42.68 20.55-42.68 45.07 0 19.97 12.99 37.81 31.58 43.39l45.01 13.5c5.16 1.55 8.77 6.78 8.77 12.73 0 7.27-5.3 13.19-11.8 13.19h-28.1c-4.56 0-8.96-1.29-12.82-3.72-3.24-2.03-7.36-1.91-10.13.73l-11.75 11.21c-3.53 3.37-3.33 9.21.57 12.14 9.1 6.83 20.08 10.77 31.37 11.35V304c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8v-16.12c23.63-.63 42.68-20.54 42.68-45.07 0-19.97-12.99-37.81-31.59-43.39z\"]\n};\nvar faSearchLocation = {\n  prefix: 'fas',\n  iconName: 'search-location',\n  icon: [512, 512, [], \"f689\", \"M505.04 442.66l-99.71-99.69c-4.5-4.5-10.6-7-17-7h-16.3c27.6-35.3 44-79.69 44-127.99C416.03 93.09 322.92 0 208.02 0S0 93.09 0 207.98s93.11 207.98 208.02 207.98c48.3 0 92.71-16.4 128.01-44v16.3c0 6.4 2.5 12.5 7 17l99.71 99.69c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.59.1-33.99zm-297.02-90.7c-79.54 0-144-64.34-144-143.98 0-79.53 64.35-143.98 144-143.98 79.54 0 144 64.34 144 143.98 0 79.53-64.35 143.98-144 143.98zm.02-239.96c-40.78 0-73.84 33.05-73.84 73.83 0 32.96 48.26 93.05 66.75 114.86a9.24 9.24 0 0 0 14.18 0c18.49-21.81 66.75-81.89 66.75-114.86 0-40.78-33.06-73.83-73.84-73.83zm0 96c-13.26 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z\"]\n};\nvar faSearchMinus = {\n  prefix: 'fas',\n  iconName: 'search-minus',\n  icon: [512, 512, [], \"f010\", \"M304 192v32c0 6.6-5.4 12-12 12H124c-6.6 0-12-5.4-12-12v-32c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12zm201 284.7L476.7 505c-9.4 9.4-24.6 9.4-33.9 0L343 405.3c-4.5-4.5-7-10.6-7-17V372c-35.3 27.6-79.7 44-128 44C93.1 416 0 322.9 0 208S93.1 0 208 0s208 93.1 208 208c0 48.3-16.4 92.7-44 128h16.3c6.4 0 12.5 2.5 17 7l99.7 99.7c9.3 9.4 9.3 24.6 0 34zM344 208c0-75.2-60.8-136-136-136S72 132.8 72 208s60.8 136 136 136 136-60.8 136-136z\"]\n};\nvar faSearchPlus = {\n  prefix: 'fas',\n  iconName: 'search-plus',\n  icon: [512, 512, [], \"f00e\", \"M304 192v32c0 6.6-5.4 12-12 12h-56v56c0 6.6-5.4 12-12 12h-32c-6.6 0-12-5.4-12-12v-56h-56c-6.6 0-12-5.4-12-12v-32c0-6.6 5.4-12 12-12h56v-56c0-6.6 5.4-12 12-12h32c6.6 0 12 5.4 12 12v56h56c6.6 0 12 5.4 12 12zm201 284.7L476.7 505c-9.4 9.4-24.6 9.4-33.9 0L343 405.3c-4.5-4.5-7-10.6-7-17V372c-35.3 27.6-79.7 44-128 44C93.1 416 0 322.9 0 208S93.1 0 208 0s208 93.1 208 208c0 48.3-16.4 92.7-44 128h16.3c6.4 0 12.5 2.5 17 7l99.7 99.7c9.3 9.4 9.3 24.6 0 34zM344 208c0-75.2-60.8-136-136-136S72 132.8 72 208s60.8 136 136 136 136-60.8 136-136z\"]\n};\nvar faSeedling = {\n  prefix: 'fas',\n  iconName: 'seedling',\n  icon: [512, 512, [], \"f4d8\", \"M64 96H0c0 123.7 100.3 224 224 224v144c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320C288 196.3 187.7 96 64 96zm384-64c-84.2 0-157.4 46.5-195.7 115.2 27.7 30.2 48.2 66.9 59 107.6C424 243.1 512 147.9 512 32h-64z\"]\n};\nvar faServer = {\n  prefix: 'fas',\n  iconName: 'server',\n  icon: [512, 512, [], \"f233\", \"M480 160H32c-17.673 0-32-14.327-32-32V64c0-17.673 14.327-32 32-32h448c17.673 0 32 14.327 32 32v64c0 17.673-14.327 32-32 32zm-48-88c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm-64 0c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm112 248H32c-17.673 0-32-14.327-32-32v-64c0-17.673 14.327-32 32-32h448c17.673 0 32 14.327 32 32v64c0 17.673-14.327 32-32 32zm-48-88c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm-64 0c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm112 248H32c-17.673 0-32-14.327-32-32v-64c0-17.673 14.327-32 32-32h448c17.673 0 32 14.327 32 32v64c0 17.673-14.327 32-32 32zm-48-88c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm-64 0c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24z\"]\n};\nvar faShapes = {\n  prefix: 'fas',\n  iconName: 'shapes',\n  icon: [512, 512, [], \"f61f\", \"M128,256A128,128,0,1,0,256,384,128,128,0,0,0,128,256Zm379-54.86L400.07,18.29a37.26,37.26,0,0,0-64.14,0L229,201.14C214.76,225.52,232.58,256,261.09,256H474.91C503.42,256,521.24,225.52,507,201.14ZM480,288H320a32,32,0,0,0-32,32V480a32,32,0,0,0,32,32H480a32,32,0,0,0,32-32V320A32,32,0,0,0,480,288Z\"]\n};\nvar faShare = {\n  prefix: 'fas',\n  iconName: 'share',\n  icon: [512, 512, [], \"f064\", \"M503.691 189.836L327.687 37.851C312.281 24.546 288 35.347 288 56.015v80.053C127.371 137.907 0 170.1 0 322.326c0 61.441 39.581 122.309 83.333 154.132 13.653 9.931 33.111-2.533 28.077-18.631C66.066 312.814 132.917 274.316 288 272.085V360c0 20.7 24.3 31.453 39.687 18.164l176.004-152c11.071-9.562 11.086-26.753 0-36.328z\"]\n};\nvar faShareAlt = {\n  prefix: 'fas',\n  iconName: 'share-alt',\n  icon: [448, 512, [], \"f1e0\", \"M352 320c-22.608 0-43.387 7.819-59.79 20.895l-102.486-64.054a96.551 96.551 0 0 0 0-41.683l102.486-64.054C308.613 184.181 329.392 192 352 192c53.019 0 96-42.981 96-96S405.019 0 352 0s-96 42.981-96 96c0 7.158.79 14.13 2.276 20.841L155.79 180.895C139.387 167.819 118.608 160 96 160c-53.019 0-96 42.981-96 96s42.981 96 96 96c22.608 0 43.387-7.819 59.79-20.895l102.486 64.054A96.301 96.301 0 0 0 256 416c0 53.019 42.981 96 96 96s96-42.981 96-96-42.981-96-96-96z\"]\n};\nvar faShareAltSquare = {\n  prefix: 'fas',\n  iconName: 'share-alt-square',\n  icon: [448, 512, [], \"f1e1\", \"M448 80v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48zM304 296c-14.562 0-27.823 5.561-37.783 14.671l-67.958-40.775a56.339 56.339 0 0 0 0-27.793l67.958-40.775C276.177 210.439 289.438 216 304 216c30.928 0 56-25.072 56-56s-25.072-56-56-56-56 25.072-56 56c0 4.797.605 9.453 1.74 13.897l-67.958 40.775C171.823 205.561 158.562 200 144 200c-30.928 0-56 25.072-56 56s25.072 56 56 56c14.562 0 27.823-5.561 37.783-14.671l67.958 40.775a56.088 56.088 0 0 0-1.74 13.897c0 30.928 25.072 56 56 56s56-25.072 56-56C360 321.072 334.928 296 304 296z\"]\n};\nvar faShareSquare = {\n  prefix: 'fas',\n  iconName: 'share-square',\n  icon: [576, 512, [], \"f14d\", \"M568.482 177.448L424.479 313.433C409.3 327.768 384 317.14 384 295.985v-71.963c-144.575.97-205.566 35.113-164.775 171.353 4.483 14.973-12.846 26.567-25.006 17.33C155.252 383.105 120 326.488 120 269.339c0-143.937 117.599-172.5 264-173.312V24.012c0-21.174 25.317-31.768 40.479-17.448l144.003 135.988c10.02 9.463 10.028 25.425 0 34.896zM384 379.128V448H64V128h50.916a11.99 11.99 0 0 0 8.648-3.693c14.953-15.568 32.237-27.89 51.014-37.676C185.708 80.83 181.584 64 169.033 64H48C21.49 64 0 85.49 0 112v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48v-88.806c0-8.288-8.197-14.066-16.011-11.302a71.83 71.83 0 0 1-34.189 3.377c-7.27-1.046-13.8 4.514-13.8 11.859z\"]\n};\nvar faShekelSign = {\n  prefix: 'fas',\n  iconName: 'shekel-sign',\n  icon: [448, 512, [], \"f20b\", \"M248 168v168c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V168c0-75.11-60.89-136-136-136H24C10.75 32 0 42.74 0 56v408c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V112h112c30.93 0 56 25.07 56 56zM432 32h-48c-8.84 0-16 7.16-16 16v296c0 30.93-25.07 56-56 56H200V176c0-8.84-7.16-16-16-16h-48c-8.84 0-16 7.16-16 16v280c0 13.25 10.75 24 24 24h168c75.11 0 136-60.89 136-136V48c0-8.84-7.16-16-16-16z\"]\n};\nvar faShieldAlt = {\n  prefix: 'fas',\n  iconName: 'shield-alt',\n  icon: [512, 512, [], \"f3ed\", \"M466.5 83.7l-192-80a48.15 48.15 0 0 0-36.9 0l-192 80C27.7 91.1 16 108.6 16 128c0 198.5 114.5 335.7 221.5 380.3 11.8 4.9 25.1 4.9 36.9 0C360.1 472.6 496 349.3 496 128c0-19.4-11.7-36.9-29.5-44.3zM256.1 446.3l-.1-381 175.9 73.3c-3.3 151.4-82.1 261.1-175.8 307.7z\"]\n};\nvar faShieldVirus = {\n  prefix: 'fas',\n  iconName: 'shield-virus',\n  icon: [512, 512, [], \"e06c\", \"M224,192a16,16,0,1,0,16,16A16,16,0,0,0,224,192ZM466.5,83.68l-192-80A57.4,57.4,0,0,0,256.05,0a57.4,57.4,0,0,0-18.46,3.67l-192,80A47.93,47.93,0,0,0,16,128C16,326.5,130.5,463.72,237.5,508.32a48.09,48.09,0,0,0,36.91,0C360.09,472.61,496,349.3,496,128A48,48,0,0,0,466.5,83.68ZM384,256H371.88c-28.51,0-42.79,34.47-22.63,54.63l8.58,8.57a16,16,0,1,1-22.63,22.63l-8.57-8.58C306.47,313.09,272,327.37,272,355.88V368a16,16,0,0,1-32,0V355.88c0-28.51-34.47-42.79-54.63-22.63l-8.57,8.58a16,16,0,0,1-22.63-22.63l8.58-8.57c20.16-20.16,5.88-54.63-22.63-54.63H128a16,16,0,0,1,0-32h12.12c28.51,0,42.79-34.47,22.63-54.63l-8.58-8.57a16,16,0,0,1,22.63-22.63l8.57,8.58c20.16,20.16,54.63,5.88,54.63-22.63V112a16,16,0,0,1,32,0v12.12c0,28.51,34.47,42.79,54.63,22.63l8.57-8.58a16,16,0,0,1,22.63,22.63l-8.58,8.57C329.09,189.53,343.37,224,371.88,224H384a16,16,0,0,1,0,32Zm-96,0a16,16,0,1,0,16,16A16,16,0,0,0,288,256Z\"]\n};\nvar faShip = {\n  prefix: 'fas',\n  iconName: 'ship',\n  icon: [640, 512, [], \"f21a\", \"M496.616 372.639l70.012-70.012c16.899-16.9 9.942-45.771-12.836-53.092L512 236.102V96c0-17.673-14.327-32-32-32h-64V24c0-13.255-10.745-24-24-24H248c-13.255 0-24 10.745-24 24v40h-64c-17.673 0-32 14.327-32 32v140.102l-41.792 13.433c-22.753 7.313-29.754 36.173-12.836 53.092l70.012 70.012C125.828 416.287 85.587 448 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24 61.023 0 107.499-20.61 143.258-59.396C181.677 487.432 216.021 512 256 512h128c39.979 0 74.323-24.568 88.742-59.396C508.495 491.384 554.968 512 616 512c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24-60.817 0-101.542-31.001-119.384-75.361zM192 128h256v87.531l-118.208-37.995a31.995 31.995 0 0 0-19.584 0L192 215.531V128z\"]\n};\nvar faShippingFast = {\n  prefix: 'fas',\n  iconName: 'shipping-fast',\n  icon: [640, 512, [], \"f48b\", \"M624 352h-16V243.9c0-12.7-5.1-24.9-14.1-33.9L494 110.1c-9-9-21.2-14.1-33.9-14.1H416V48c0-26.5-21.5-48-48-48H112C85.5 0 64 21.5 64 48v48H8c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h272c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H40c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h208c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H8c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h208c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H64v128c0 53 43 96 96 96s96-43 96-96h128c0 53 43 96 96 96s96-43 96-96h48c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM160 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm320 0c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm80-208H416V144h44.1l99.9 99.9V256z\"]\n};\nvar faShoePrints = {\n  prefix: 'fas',\n  iconName: 'shoe-prints',\n  icon: [640, 512, [], \"f54b\", \"M192 160h32V32h-32c-35.35 0-64 28.65-64 64s28.65 64 64 64zM0 416c0 35.35 28.65 64 64 64h32V352H64c-35.35 0-64 28.65-64 64zm337.46-128c-34.91 0-76.16 13.12-104.73 32-24.79 16.38-44.52 32-104.73 32v128l57.53 15.97c26.21 7.28 53.01 13.12 80.31 15.05 32.69 2.31 65.6.67 97.58-6.2C472.9 481.3 512 429.22 512 384c0-64-84.18-96-174.54-96zM491.42 7.19C459.44.32 426.53-1.33 393.84.99c-27.3 1.93-54.1 7.77-80.31 15.04L256 32v128c60.2 0 79.94 15.62 104.73 32 28.57 18.88 69.82 32 104.73 32C555.82 224 640 192 640 128c0-45.22-39.1-97.3-148.58-120.81z\"]\n};\nvar faShoppingBag = {\n  prefix: 'fas',\n  iconName: 'shopping-bag',\n  icon: [448, 512, [], \"f290\", \"M352 160v-32C352 57.42 294.579 0 224 0 153.42 0 96 57.42 96 128v32H0v272c0 44.183 35.817 80 80 80h288c44.183 0 80-35.817 80-80V160h-96zm-192-32c0-35.29 28.71-64 64-64s64 28.71 64 64v32H160v-32zm160 120c-13.255 0-24-10.745-24-24s10.745-24 24-24 24 10.745 24 24-10.745 24-24 24zm-192 0c-13.255 0-24-10.745-24-24s10.745-24 24-24 24 10.745 24 24-10.745 24-24 24z\"]\n};\nvar faShoppingBasket = {\n  prefix: 'fas',\n  iconName: 'shopping-basket',\n  icon: [576, 512, [], \"f291\", \"M576 216v16c0 13.255-10.745 24-24 24h-8l-26.113 182.788C514.509 462.435 494.257 480 470.37 480H105.63c-23.887 0-44.139-17.565-47.518-41.212L32 256h-8c-13.255 0-24-10.745-24-24v-16c0-13.255 10.745-24 24-24h67.341l106.78-146.821c10.395-14.292 30.407-17.453 44.701-7.058 14.293 10.395 17.453 30.408 7.058 44.701L170.477 192h235.046L326.12 82.821c-10.395-14.292-7.234-34.306 7.059-44.701 14.291-10.395 34.306-7.235 44.701 7.058L484.659 192H552c13.255 0 24 10.745 24 24zM312 392V280c0-13.255-10.745-24-24-24s-24 10.745-24 24v112c0 13.255 10.745 24 24 24s24-10.745 24-24zm112 0V280c0-13.255-10.745-24-24-24s-24 10.745-24 24v112c0 13.255 10.745 24 24 24s24-10.745 24-24zm-224 0V280c0-13.255-10.745-24-24-24s-24 10.745-24 24v112c0 13.255 10.745 24 24 24s24-10.745 24-24z\"]\n};\nvar faShoppingCart = {\n  prefix: 'fas',\n  iconName: 'shopping-cart',\n  icon: [576, 512, [], \"f07a\", \"M528.12 301.319l47.273-208C578.806 78.301 567.391 64 551.99 64H159.208l-9.166-44.81C147.758 8.021 137.93 0 126.529 0H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24h69.883l70.248 343.435C147.325 417.1 136 435.222 136 456c0 30.928 25.072 56 56 56s56-25.072 56-56c0-15.674-6.447-29.835-16.824-40h209.647C430.447 426.165 424 440.326 424 456c0 30.928 25.072 56 56 56s56-25.072 56-56c0-22.172-12.888-41.332-31.579-50.405l5.517-24.276c3.413-15.018-8.002-29.319-23.403-29.319H218.117l-6.545-32h293.145c11.206 0 20.92-7.754 23.403-18.681z\"]\n};\nvar faShower = {\n  prefix: 'fas',\n  iconName: 'shower',\n  icon: [512, 512, [], \"f2cc\", \"M304,320a16,16,0,1,0,16,16A16,16,0,0,0,304,320Zm32-96a16,16,0,1,0,16,16A16,16,0,0,0,336,224Zm32,64a16,16,0,1,0-16-16A16,16,0,0,0,368,288Zm-32,32a16,16,0,1,0-16-16A16,16,0,0,0,336,320Zm-32-64a16,16,0,1,0,16,16A16,16,0,0,0,304,256Zm128-32a16,16,0,1,0-16-16A16,16,0,0,0,432,224Zm-48,16a16,16,0,1,0,16-16A16,16,0,0,0,384,240Zm-16-48a16,16,0,1,0,16,16A16,16,0,0,0,368,192Zm96,32a16,16,0,1,0,16,16A16,16,0,0,0,464,224Zm32-32a16,16,0,1,0,16,16A16,16,0,0,0,496,192Zm-64,64a16,16,0,1,0,16,16A16,16,0,0,0,432,256Zm-32,32a16,16,0,1,0,16,16A16,16,0,0,0,400,288Zm-64,64a16,16,0,1,0,16,16A16,16,0,0,0,336,352Zm-32,32a16,16,0,1,0,16,16A16,16,0,0,0,304,384Zm64-64a16,16,0,1,0,16,16A16,16,0,0,0,368,320Zm21.65-218.35-11.3-11.31a16,16,0,0,0-22.63,0L350.05,96A111.19,111.19,0,0,0,272,64c-19.24,0-37.08,5.3-52.9,13.85l-10-10A121.72,121.72,0,0,0,123.44,32C55.49,31.5,0,92.91,0,160.85V464a16,16,0,0,0,16,16H48a16,16,0,0,0,16-16V158.4c0-30.15,21-58.2,51-61.93a58.38,58.38,0,0,1,48.93,16.67l10,10C165.3,138.92,160,156.76,160,176a111.23,111.23,0,0,0,32,78.05l-5.66,5.67a16,16,0,0,0,0,22.62l11.3,11.31a16,16,0,0,0,22.63,0L389.65,124.28A16,16,0,0,0,389.65,101.65Z\"]\n};\nvar faShuttleVan = {\n  prefix: 'fas',\n  iconName: 'shuttle-van',\n  icon: [640, 512, [], \"f5b6\", \"M628.88 210.65L494.39 49.27A48.01 48.01 0 0 0 457.52 32H32C14.33 32 0 46.33 0 64v288c0 17.67 14.33 32 32 32h32c0 53.02 42.98 96 96 96s96-42.98 96-96h128c0 53.02 42.98 96 96 96s96-42.98 96-96h32c17.67 0 32-14.33 32-32V241.38c0-11.23-3.94-22.1-11.12-30.73zM64 192V96h96v96H64zm96 240c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm160-240h-96V96h96v96zm160 240c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm-96-240V96h66.02l80 96H384z\"]\n};\nvar faSign = {\n  prefix: 'fas',\n  iconName: 'sign',\n  icon: [512, 512, [], \"f4d9\", \"M496 64H128V16c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16v48H16C7.2 64 0 71.2 0 80v32c0 8.8 7.2 16 16 16h48v368c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V128h368c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16zM160 384h320V160H160v224z\"]\n};\nvar faSignInAlt = {\n  prefix: 'fas',\n  iconName: 'sign-in-alt',\n  icon: [512, 512, [], \"f2f6\", \"M416 448h-84c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h84c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32h-84c-6.6 0-12-5.4-12-12V76c0-6.6 5.4-12 12-12h84c53 0 96 43 96 96v192c0 53-43 96-96 96zm-47-201L201 79c-15-15-41-4.5-41 17v96H24c-13.3 0-24 10.7-24 24v96c0 13.3 10.7 24 24 24h136v96c0 21.5 26 32 41 17l168-168c9.3-9.4 9.3-24.6 0-34z\"]\n};\nvar faSignLanguage = {\n  prefix: 'fas',\n  iconName: 'sign-language',\n  icon: [448, 512, [], \"f2a7\", \"M91.434 483.987c-.307-16.018 13.109-29.129 29.13-29.129h62.293v-5.714H56.993c-16.021 0-29.437-13.111-29.13-29.129C28.16 404.491 40.835 392 56.428 392h126.429v-5.714H29.136c-16.021 0-29.437-13.111-29.13-29.129.297-15.522 12.973-28.013 28.566-28.013h154.286v-5.714H57.707c-16.021 0-29.437-13.111-29.13-29.129.297-15.522 12.973-28.013 28.566-28.013h168.566l-31.085-22.606c-12.762-9.281-15.583-27.149-6.302-39.912 9.281-12.761 27.15-15.582 39.912-6.302l123.361 89.715a34.287 34.287 0 0 1 14.12 27.728v141.136c0 15.91-10.946 29.73-26.433 33.374l-80.471 18.934a137.16 137.16 0 0 1-31.411 3.646H120c-15.593-.001-28.269-12.492-28.566-28.014zm73.249-225.701h36.423l-11.187-8.136c-18.579-13.511-20.313-40.887-3.17-56.536l-13.004-16.7c-9.843-12.641-28.43-15.171-40.88-5.088-12.065 9.771-14.133 27.447-4.553 39.75l36.371 46.71zm283.298-2.103l-5.003-152.452c-.518-15.771-13.722-28.136-29.493-27.619-15.773.518-28.137 13.722-27.619 29.493l1.262 38.415L283.565 11.019c-9.58-12.303-27.223-14.63-39.653-5.328-12.827 9.599-14.929 28.24-5.086 40.881l76.889 98.745-4.509 3.511-94.79-121.734c-9.58-12.303-27.223-14.63-39.653-5.328-12.827 9.599-14.929 28.24-5.086 40.881l94.443 121.288-4.509 3.511-77.675-99.754c-9.58-12.303-27.223-14.63-39.653-5.328-12.827 9.599-14.929 28.24-5.086 40.881l52.053 66.849c12.497-8.257 29.055-8.285 41.69.904l123.36 89.714c10.904 7.93 17.415 20.715 17.415 34.198v16.999l61.064-47.549a34.285 34.285 0 0 0 13.202-28.177z\"]\n};\nvar faSignOutAlt = {\n  prefix: 'fas',\n  iconName: 'sign-out-alt',\n  icon: [512, 512, [], \"f2f5\", \"M497 273L329 441c-15 15-41 4.5-41-17v-96H152c-13.3 0-24-10.7-24-24v-96c0-13.3 10.7-24 24-24h136V88c0-21.4 25.9-32 41-17l168 168c9.3 9.4 9.3 24.6 0 34zM192 436v-40c0-6.6-5.4-12-12-12H96c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32h84c6.6 0 12-5.4 12-12V76c0-6.6-5.4-12-12-12H96c-53 0-96 43-96 96v192c0 53 43 96 96 96h84c6.6 0 12-5.4 12-12z\"]\n};\nvar faSignal = {\n  prefix: 'fas',\n  iconName: 'signal',\n  icon: [640, 512, [], \"f012\", \"M216 288h-48c-8.84 0-16 7.16-16 16v192c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V304c0-8.84-7.16-16-16-16zM88 384H40c-8.84 0-16 7.16-16 16v96c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16v-96c0-8.84-7.16-16-16-16zm256-192h-48c-8.84 0-16 7.16-16 16v288c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V208c0-8.84-7.16-16-16-16zm128-96h-48c-8.84 0-16 7.16-16 16v384c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V112c0-8.84-7.16-16-16-16zM600 0h-48c-8.84 0-16 7.16-16 16v480c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16z\"]\n};\nvar faSignature = {\n  prefix: 'fas',\n  iconName: 'signature',\n  icon: [640, 512, [], \"f5b7\", \"M623.2 192c-51.8 3.5-125.7 54.7-163.1 71.5-29.1 13.1-54.2 24.4-76.1 24.4-22.6 0-26-16.2-21.3-51.9 1.1-8 11.7-79.2-42.7-76.1-25.1 1.5-64.3 24.8-169.5 126L192 182.2c30.4-75.9-53.2-151.5-129.7-102.8L7.4 116.3C0 121-2.2 130.9 2.5 138.4l17.2 27c4.7 7.5 14.6 9.7 22.1 4.9l58-38.9c18.4-11.7 40.7 7.2 32.7 27.1L34.3 404.1C27.5 421 37 448 64 448c8.3 0 16.5-3.2 22.6-9.4 42.2-42.2 154.7-150.7 211.2-195.8-2.2 28.5-2.1 58.9 20.6 83.8 15.3 16.8 37.3 25.3 65.5 25.3 35.6 0 68-14.6 102.3-30 33-14.8 99-62.6 138.4-65.8 8.5-.7 15.2-7.3 15.2-15.8v-32.1c.2-9.1-7.5-16.8-16.6-16.2z\"]\n};\nvar faSimCard = {\n  prefix: 'fas',\n  iconName: 'sim-card',\n  icon: [384, 512, [], \"f7c4\", \"M0 64v384c0 35.3 28.7 64 64 64h256c35.3 0 64-28.7 64-64V128L256 0H64C28.7 0 0 28.7 0 64zm224 192h-64v-64h64v64zm96 0h-64v-64h32c17.7 0 32 14.3 32 32v32zm-64 128h64v32c0 17.7-14.3 32-32 32h-32v-64zm-96 0h64v64h-64v-64zm-96 0h64v64H96c-17.7 0-32-14.3-32-32v-32zm0-96h256v64H64v-64zm0-64c0-17.7 14.3-32 32-32h32v64H64v-32z\"]\n};\nvar faSink = {\n  prefix: 'fas',\n  iconName: 'sink',\n  icon: [512, 512, [], \"e06d\", \"M32,416a96,96,0,0,0,96,96H384a96,96,0,0,0,96-96V384H32ZM496,288H400V256h64a16,16,0,0,0,16-16V224a16,16,0,0,0-16-16H384a32,32,0,0,0-32,32v48H288V96a32,32,0,0,1,64,0v16a16,16,0,0,0,16,16h32a16,16,0,0,0,16-16V96A96.16,96.16,0,0,0,300.87,1.86C255.29,10.71,224,53.36,224,99.79V288H160V240a32,32,0,0,0-32-32H48a16,16,0,0,0-16,16v16a16,16,0,0,0,16,16h64v32H16A16,16,0,0,0,0,304v32a16,16,0,0,0,16,16H496a16,16,0,0,0,16-16V304A16,16,0,0,0,496,288Z\"]\n};\nvar faSitemap = {\n  prefix: 'fas',\n  iconName: 'sitemap',\n  icon: [640, 512, [], \"f0e8\", \"M128 352H32c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32zm-24-80h192v48h48v-48h192v48h48v-57.59c0-21.17-17.23-38.41-38.41-38.41H344v-64h40c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32H256c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h40v64H94.41C73.23 224 56 241.23 56 262.41V320h48v-48zm264 80h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32zm240 0h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32z\"]\n};\nvar faSkating = {\n  prefix: 'fas',\n  iconName: 'skating',\n  icon: [448, 512, [], \"f7c5\", \"M400 0c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48zm0 448c-8.8 0-16 7.2-16 16s-7.2 16-16 16h-96c-8.8 0-16 7.2-16 16s7.2 16 16 16h96c26.5 0 48-21.5 48-48 0-8.8-7.2-16-16-16zm-282.2 8.6c-6.2 6.2-16.4 6.3-22.6 0l-67.9-67.9c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l67.9 67.9c9.4 9.4 21.7 14 34 14s24.6-4.7 33.9-14c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.3-22.7 0zm56.1-179.8l-93.7 93.7c-12.5 12.5-12.5 32.8 0 45.2 6.2 6.2 14.4 9.4 22.6 9.4s16.4-3.1 22.6-9.4l91.9-91.9-30.2-30.2c-5-5-9.4-10.7-13.2-16.8zM128 160h105.5l-20.1 17.2c-13.5 11.5-21.6 28.4-22.3 46.1-.7 17.8 6.1 35.2 18.7 47.7l78.2 78.2V432c0 17.7 14.3 32 32 32s32-14.3 32-32v-89.4c0-12.6-5.1-25-14.1-33.9l-61-61c.5-.4 1.2-.6 1.7-1.1l82.3-82.3c11.5-11.5 14.9-28.6 8.7-43.6-6.2-15-20.7-24.7-37-24.7H128c-17.7 0-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faSkiing = {\n  prefix: 'fas',\n  iconName: 'skiing',\n  icon: [512, 512, [], \"f7c9\", \"M432 96c26.5 0 48-21.5 48-48S458.5 0 432 0s-48 21.5-48 48 21.5 48 48 48zm73 356.1c-9.4-9.4-24.6-9.4-33.9 0-12.1 12.1-30.5 15.4-45.1 8.7l-135.8-70.2 49.2-73.8c12.7-19 10.2-44.5-6-60.6L293 215.7l-107-53.1c-2.9 19.9 3.4 40 17.7 54.4l75.1 75.2-45.9 68.8L35 258.7c-11.7-6-26.2-1.5-32.3 10.3-6.1 11.8-1.5 26.3 10.3 32.3l391.9 202.5c11.9 5.5 24.5 8.1 37.1 8.1 23.2 0 46-9 63-26 9.3-9.3 9.3-24.5 0-33.8zM120 91.6l-11.5 22.5c14.4 7.3 31.2 4.9 42.8-4.8l47.2 23.4c-.1.1-.1.2-.2.3l114.5 56.8 32.4-13 6.4 19.1c4 12.1 12.6 22 24 27.7l58.1 29c15.9 7.9 35 1.5 42.9-14.3 7.9-15.8 1.5-35-14.3-42.9l-52.1-26.1-17.1-51.2c-8.1-24.2-40.9-56.6-84.5-39.2l-81.2 32.5-62.5-31c.3-14.5-7.2-28.6-20.9-35.6l-11.1 21.7h-.2l-34.4-7c-1.8-.4-3.7.2-5 1.7-1.9 2.2-1.7 5.5.5 7.4l26.2 23z\"]\n};\nvar faSkiingNordic = {\n  prefix: 'fas',\n  iconName: 'skiing-nordic',\n  icon: [576, 512, [], \"f7ca\", \"M336 96c26.5 0 48-21.5 48-48S362.5 0 336 0s-48 21.5-48 48 21.5 48 48 48zm216 320c-13.2 0-24 10.7-24 24 0 13.2-10.8 24-24 24h-69.5L460 285.6c11.7-4.7 20.1-16.2 20.1-29.6 0-17.7-14.3-32-32-32h-44L378 170.8c-12.5-25.5-35.5-44.2-61.8-50.9L245 98.7c-28.3-6.8-57.8-.5-80.8 17.1l-39.7 30.4c-14 10.7-16.7 30.8-5.9 44.9.7.9 1.7 1.3 2.4 2.1L66.9 464H24c-13.2 0-24 10.7-24 24s10.8 24 24 24h480c39.7 0 72-32.3 72-72 0-13.2-10.8-24-24-24zm-260.5 48h-96.9l43.1-91-22-13c-12.1-7.2-21.9-16.9-29.5-27.8L123.7 464H99.5l52.3-261.4c4.1-1 8.1-2.9 11.7-5.6l39.7-30.4c7.7-5.9 17.4-8 25.3-6.1l14.7 4.4-37.5 87.4c-12.6 29.5-1.3 64 26.3 80.3l85 50.2-25.5 81.2zm110.6 0h-43.6l23.6-75.5c5.9-20.8-2.9-43.1-21.6-54.4L299.3 298l31.3-78.3 20.3 41.4c8 16.3 24.9 26.9 43.1 26.9h33.3l-25.2 176z\"]\n};\nvar faSkull = {\n  prefix: 'fas',\n  iconName: 'skull',\n  icon: [512, 512, [], \"f54c\", \"M256 0C114.6 0 0 100.3 0 224c0 70.1 36.9 132.6 94.5 173.7 9.6 6.9 15.2 18.1 13.5 29.9l-9.4 66.2c-1.4 9.6 6 18.2 15.7 18.2H192v-56c0-4.4 3.6-8 8-8h16c4.4 0 8 3.6 8 8v56h64v-56c0-4.4 3.6-8 8-8h16c4.4 0 8 3.6 8 8v56h77.7c9.7 0 17.1-8.6 15.7-18.2l-9.4-66.2c-1.7-11.7 3.8-23 13.5-29.9C475.1 356.6 512 294.1 512 224 512 100.3 397.4 0 256 0zm-96 320c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64zm192 0c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64z\"]\n};\nvar faSkullCrossbones = {\n  prefix: 'fas',\n  iconName: 'skull-crossbones',\n  icon: [448, 512, [], \"f714\", \"M439.15 453.06L297.17 384l141.99-69.06c7.9-3.95 11.11-13.56 7.15-21.46L432 264.85c-3.95-7.9-13.56-11.11-21.47-7.16L224 348.41 37.47 257.69c-7.9-3.95-17.51-.75-21.47 7.16L1.69 293.48c-3.95 7.9-.75 17.51 7.15 21.46L150.83 384 8.85 453.06c-7.9 3.95-11.11 13.56-7.15 21.47l14.31 28.63c3.95 7.9 13.56 11.11 21.47 7.15L224 419.59l186.53 90.72c7.9 3.95 17.51.75 21.47-7.15l14.31-28.63c3.95-7.91.74-17.52-7.16-21.47zM150 237.28l-5.48 25.87c-2.67 12.62 5.42 24.85 16.45 24.85h126.08c11.03 0 19.12-12.23 16.45-24.85l-5.5-25.87c41.78-22.41 70-62.75 70-109.28C368 57.31 303.53 0 224 0S80 57.31 80 128c0 46.53 28.22 86.87 70 109.28zM280 112c17.65 0 32 14.35 32 32s-14.35 32-32 32-32-14.35-32-32 14.35-32 32-32zm-112 0c17.65 0 32 14.35 32 32s-14.35 32-32 32-32-14.35-32-32 14.35-32 32-32z\"]\n};\nvar faSlash = {\n  prefix: 'fas',\n  iconName: 'slash',\n  icon: [640, 512, [], \"f715\", \"M594.53 508.63L6.18 53.9c-6.97-5.42-8.23-15.47-2.81-22.45L23.01 6.18C28.43-.8 38.49-2.06 45.47 3.37L633.82 458.1c6.97 5.42 8.23 15.47 2.81 22.45l-19.64 25.27c-5.42 6.98-15.48 8.23-22.46 2.81z\"]\n};\nvar faSleigh = {\n  prefix: 'fas',\n  iconName: 'sleigh',\n  icon: [640, 512, [], \"f7cc\", \"M612.7 350.7l-9.3-7.4c-6.9-5.5-17-4.4-22.5 2.5l-10 12.5c-5.5 6.9-4.4 17 2.5 22.5l9.3 7.4c5.9 4.7 9.2 11.7 9.2 19.2 0 13.6-11 24.6-24.6 24.6H48c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h516c39 0 73.7-29.3 75.9-68.3 1.4-23.8-8.7-46.3-27.2-61zM32 224c0 59.6 40.9 109.2 96 123.5V400h64v-48h192v48h64v-48c53 0 96-43 96-96v-96c17.7 0 32-14.3 32-32s-14.3-32-32-32h-96v64c0 35.3-28.7 64-64 64h-20.7c-65.8 0-125.9-37.2-155.3-96-29.4-58.8-89.6-96-155.3-96H32C14.3 32 0 46.3 0 64s14.3 32 32 32v128z\"]\n};\nvar faSlidersH = {\n  prefix: 'fas',\n  iconName: 'sliders-h',\n  icon: [512, 512, [], \"f1de\", \"M496 384H160v-16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h80v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h336c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm0-160h-80v-16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h336v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h80c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm0-160H288V48c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16C7.2 64 0 71.2 0 80v32c0 8.8 7.2 16 16 16h208v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h208c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16z\"]\n};\nvar faSmile = {\n  prefix: 'fas',\n  iconName: 'smile',\n  icon: [496, 512, [], \"f118\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm194.8 170.2C334.3 380.4 292.5 400 248 400s-86.3-19.6-114.8-53.8c-13.6-16.3 11-36.7 24.6-20.5 22.4 26.9 55.2 42.2 90.2 42.2s67.8-15.4 90.2-42.2c13.4-16.2 38.1 4.2 24.6 20.5z\"]\n};\nvar faSmileBeam = {\n  prefix: 'fas',\n  iconName: 'smile-beam',\n  icon: [496, 512, [], \"f5b8\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM112 223.4c3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.3 7.4-15.8 4-15.1-4.5zm250.8 122.8C334.3 380.4 292.5 400 248 400s-86.3-19.6-114.8-53.8c-13.5-16.3 11-36.7 24.6-20.5 22.4 26.9 55.2 42.2 90.2 42.2s67.8-15.4 90.2-42.2c13.6-16.2 38.1 4.3 24.6 20.5zm6.2-118.3l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.1 7.3-15.6 4-14.9-4.5 3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.6 8.6-11 11.9-15.1 4.5z\"]\n};\nvar faSmileWink = {\n  prefix: 'fas',\n  iconName: 'smile-wink',\n  icon: [496, 512, [], \"f4da\", \"M0 256c0 137 111 248 248 248s248-111 248-248S385 8 248 8 0 119 0 256zm200-48c0 17.7-14.3 32-32 32s-32-14.3-32-32 14.3-32 32-32 32 14.3 32 32zm158.5 16.5c-14.8-13.2-46.2-13.2-61 0L288 233c-8.3 7.4-21.6.4-19.8-10.8 4-25.2 34.2-42.1 59.9-42.1S384 197 388 222.2c1.7 11.1-11.4 18.3-19.8 10.8l-9.7-8.5zM157.8 325.8C180.2 352.7 213 368 248 368s67.8-15.4 90.2-42.2c13.6-16.2 38.1 4.2 24.6 20.5C334.3 380.4 292.5 400 248 400s-86.3-19.6-114.8-53.8c-13.5-16.3 11.2-36.7 24.6-20.4z\"]\n};\nvar faSmog = {\n  prefix: 'fas',\n  iconName: 'smog',\n  icon: [640, 512, [], \"f75f\", \"M624 368H80c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h544c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zm-480 96H16c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h128c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zm416 0H224c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h336c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zM144 288h156.1c22.5 19.7 51.6 32 83.9 32s61.3-12.3 83.9-32H528c61.9 0 112-50.1 112-112S589.9 64 528 64c-18 0-34.7 4.6-49.7 12.1C454 31 406.8 0 352 0c-41 0-77.8 17.3-104 44.8C221.8 17.3 185 0 144 0 64.5 0 0 64.5 0 144s64.5 144 144 144z\"]\n};\nvar faSmoking = {\n  prefix: 'fas',\n  iconName: 'smoking',\n  icon: [640, 512, [], \"f48d\", \"M632 352h-48c-4.4 0-8 3.6-8 8v144c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V360c0-4.4-3.6-8-8-8zM553.3 87.1c-5.7-3.8-9.3-10-9.3-16.8V8c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v62.3c0 22 10.2 43.4 28.6 55.4 42.2 27.3 67.4 73.8 67.4 124V280c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-30.3c0-65.5-32.4-126.2-86.7-162.6zM432 352H48c-26.5 0-48 21.5-48 48v64c0 26.5 21.5 48 48 48h384c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16zm-32 112H224v-64h176v64zm87.7-322.4C463.8 125 448 99.3 448 70.3V8c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v66.4c0 43.7 24.6 81.6 60.3 106.7 22.4 15.7 35.7 41.2 35.7 68.6V280c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-30.3c0-43.3-21-83.4-56.3-108.1zM536 352h-48c-4.4 0-8 3.6-8 8v144c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V360c0-4.4-3.6-8-8-8z\"]\n};\nvar faSmokingBan = {\n  prefix: 'fas',\n  iconName: 'smoking-ban',\n  icon: [512, 512, [], \"f54d\", \"M96 304c0 8.8 7.2 16 16 16h117.5l-96-96H112c-8.8 0-16 7.2-16 16v64zM256 0C114.6 0 0 114.6 0 256s114.6 256 256 256 256-114.6 256-256S397.4 0 256 0zm0 448c-105.9 0-192-86.1-192-192 0-41.4 13.3-79.7 35.7-111.1l267.4 267.4C335.7 434.7 297.4 448 256 448zm45.2-192H384v32h-50.8l-32-32zm111.1 111.1L365.2 320H400c8.8 0 16-7.2 16-16v-64c0-8.8-7.2-16-16-16H269.2L144.9 99.7C176.3 77.3 214.6 64 256 64c105.9 0 192 86.1 192 192 0 41.4-13.3 79.7-35.7 111.1zM320.6 128c-15.6 0-28.6-11.2-31.4-25.9-.7-3.6-4-6.1-7.7-6.1h-16.2c-5 0-8.7 4.5-8 9.4 4.6 30.9 31.2 54.6 63.3 54.6 15.6 0 28.6 11.2 31.4 25.9.7 3.6 4 6.1 7.7 6.1h16.2c5 0 8.7-4.5 8-9.4-4.6-30.9-31.2-54.6-63.3-54.6z\"]\n};\nvar faSms = {\n  prefix: 'fas',\n  iconName: 'sms',\n  icon: [512, 512, [], \"f7cd\", \"M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5c-2.2 2.3-2.8 5.7-1.5 8.7 1.3 3 4.1 4.8 7.3 4.8 66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 141.4 0 256-93.1 256-208S397.4 32 256 32zM128.2 304H116c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h12.3c6 0 10.4-3.5 10.4-6.6 0-1.3-.8-2.7-2.1-3.8l-21.9-18.8c-8.5-7.2-13.3-17.5-13.3-28.1 0-21.3 19-38.6 42.4-38.6H156c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8h-12.3c-6 0-10.4 3.5-10.4 6.6 0 1.3.8 2.7 2.1 3.8l21.9 18.8c8.5 7.2 13.3 17.5 13.3 28.1.1 21.3-19 38.6-42.4 38.6zm191.8-8c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8v-68.2l-24.8 55.8c-2.9 5.9-11.4 5.9-14.3 0L224 227.8V296c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8V192c0-8.8 7.2-16 16-16h16c6.1 0 11.6 3.4 14.3 8.8l17.7 35.4 17.7-35.4c2.7-5.4 8.3-8.8 14.3-8.8h16c8.8 0 16 7.2 16 16v104zm48.3 8H356c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h12.3c6 0 10.4-3.5 10.4-6.6 0-1.3-.8-2.7-2.1-3.8l-21.9-18.8c-8.5-7.2-13.3-17.5-13.3-28.1 0-21.3 19-38.6 42.4-38.6H396c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8h-12.3c-6 0-10.4 3.5-10.4 6.6 0 1.3.8 2.7 2.1 3.8l21.9 18.8c8.5 7.2 13.3 17.5 13.3 28.1.1 21.3-18.9 38.6-42.3 38.6z\"]\n};\nvar faSnowboarding = {\n  prefix: 'fas',\n  iconName: 'snowboarding',\n  icon: [512, 512, [], \"f7ce\", \"M432 96c26.5 0 48-21.5 48-48S458.5 0 432 0s-48 21.5-48 48 21.5 48 48 48zm28.8 153.6c5.8 4.3 12.5 6.4 19.2 6.4 9.7 0 19.3-4.4 25.6-12.8 10.6-14.1 7.8-34.2-6.4-44.8l-111.4-83.5c-13.8-10.3-29.1-18.4-45.4-23.8l-63.7-21.2-26.1-52.1C244.7 2 225.5-4.4 209.7 3.5c-15.8 7.9-22.2 27.1-14.3 42.9l29.1 58.1c5.7 11.4 15.6 19.9 27.7 24l16.4 5.5-41.2 20.6c-21.8 10.9-35.4 32.8-35.4 57.2v53.1l-74.1 24.7c-16.8 5.6-25.8 23.7-20.2 40.5 1.7 5.2 4.9 9.4 8.7 12.9l-38.7-14.1c-9.7-3.5-17.4-10.6-21.8-20-5.6-12-19.9-17.2-31.9-11.6s-17.2 19.9-11.6 31.9c9.8 21 27.1 36.9 48.9 44.8l364.8 132.7c9.7 3.5 19.7 5.3 29.7 5.3 12.5 0 24.9-2.7 36.5-8.2 12-5.6 17.2-19.9 11.6-31.9S474 454.7 462 460.3c-9.3 4.4-19.8 4.8-29.5 1.3l-90.8-33.1c8.7-4.1 15.6-11.8 17.8-21.9l21.9-102c3.9-18.2-3.2-37.2-18.1-48.4l-52-39 66-30.5 83.5 62.9zm-144.4 51.7l-19.7 92c-1.5 7.1-.1 13.9 2.8 20l-169.4-61.6c2.7-.2 5.4-.4 8-1.3l85-28.4c19.6-6.5 32.8-24.8 32.8-45.5V256l60.5 45.3z\"]\n};\nvar faSnowflake = {\n  prefix: 'fas',\n  iconName: 'snowflake',\n  icon: [448, 512, [], \"f2dc\", \"M440.3 345.2l-33.8-19.5 26-7c8.2-2.2 13.1-10.7 10.9-18.9l-4-14.9c-2.2-8.2-10.7-13.1-18.9-10.9l-70.8 19-63.9-37 63.8-36.9 70.8 19c8.2 2.2 16.7-2.7 18.9-10.9l4-14.9c2.2-8.2-2.7-16.7-10.9-18.9l-26-7 33.8-19.5c7.4-4.3 9.9-13.7 5.7-21.1L430.4 119c-4.3-7.4-13.7-9.9-21.1-5.7l-33.8 19.5 7-26c2.2-8.2-2.7-16.7-10.9-18.9l-14.9-4c-8.2-2.2-16.7 2.7-18.9 10.9l-19 70.8-62.8 36.2v-77.5l53.7-53.7c6.2-6.2 6.2-16.4 0-22.6l-11.3-11.3c-6.2-6.2-16.4-6.2-22.6 0L256 56.4V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v40.4l-19.7-19.7c-6.2-6.2-16.4-6.2-22.6 0L138.3 48c-6.3 6.2-6.3 16.4 0 22.6l53.7 53.7v77.5l-62.8-36.2-19-70.8c-2.2-8.2-10.7-13.1-18.9-10.9l-14.9 4c-8.2 2.2-13.1 10.7-10.9 18.9l7 26-33.8-19.5c-7.4-4.3-16.8-1.7-21.1 5.7L2.1 145.7c-4.3 7.4-1.7 16.8 5.7 21.1l33.8 19.5-26 7c-8.3 2.2-13.2 10.7-11 19l4 14.9c2.2 8.2 10.7 13.1 18.9 10.9l70.8-19 63.8 36.9-63.8 36.9-70.8-19c-8.2-2.2-16.7 2.7-18.9 10.9l-4 14.9c-2.2 8.2 2.7 16.7 10.9 18.9l26 7-33.8 19.6c-7.4 4.3-9.9 13.7-5.7 21.1l15.5 26.8c4.3 7.4 13.7 9.9 21.1 5.7l33.8-19.5-7 26c-2.2 8.2 2.7 16.7 10.9 18.9l14.9 4c8.2 2.2 16.7-2.7 18.9-10.9l19-70.8 62.8-36.2v77.5l-53.7 53.7c-6.3 6.2-6.3 16.4 0 22.6l11.3 11.3c6.2 6.2 16.4 6.2 22.6 0l19.7-19.7V496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-40.4l19.7 19.7c6.2 6.2 16.4 6.2 22.6 0l11.3-11.3c6.2-6.2 6.2-16.4 0-22.6L256 387.7v-77.5l62.8 36.2 19 70.8c2.2 8.2 10.7 13.1 18.9 10.9l14.9-4c8.2-2.2 13.1-10.7 10.9-18.9l-7-26 33.8 19.5c7.4 4.3 16.8 1.7 21.1-5.7l15.5-26.8c4.3-7.3 1.8-16.8-5.6-21z\"]\n};\nvar faSnowman = {\n  prefix: 'fas',\n  iconName: 'snowman',\n  icon: [512, 512, [], \"f7d0\", \"M510.9 152.3l-5.9-14.5c-3.3-8-12.6-11.9-20.8-8.7L456 140.6v-29c0-8.6-7.2-15.6-16-15.6h-16c-8.8 0-16 7-16 15.6v46.9c0 .5.3 1 .3 1.5l-56.4 23c-5.9-10-13.3-18.9-22-26.6 13.6-16.6 22-37.4 22-60.5 0-53-43-96-96-96s-96 43-96 96c0 23.1 8.5 43.9 22 60.5-8.7 7.7-16 16.6-22 26.6l-56.4-23c.1-.5.3-1 .3-1.5v-46.9C104 103 96.8 96 88 96H72c-8.8 0-16 7-16 15.6v29l-28.1-11.5c-8.2-3.2-17.5.7-20.8 8.7l-5.9 14.5c-3.3 8 .7 17.1 8.9 20.3l135.2 55.2c-.4 4-1.2 8-1.2 12.2 0 10.1 1.7 19.6 4.2 28.9C120.9 296.4 104 334.2 104 376c0 54 28.4 100.9 70.8 127.8 9.3 5.9 20.3 8.2 31.3 8.2h99.2c13.3 0 26.3-4.1 37.2-11.7 46.5-32.3 74.4-89.4 62.9-152.6-5.5-30.2-20.5-57.6-41.6-79 2.5-9.2 4.2-18.7 4.2-28.7 0-4.2-.8-8.1-1.2-12.2L502 172.6c8.1-3.1 12.1-12.2 8.9-20.3zM224 96c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm32 272c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-64c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-64c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-88s-16-23.2-16-32 7.2-16 16-16 16 7.2 16 16-16 32-16 32zm32-56c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z\"]\n};\nvar faSnowplow = {\n  prefix: 'fas',\n  iconName: 'snowplow',\n  icon: [640, 512, [], \"f7d2\", \"M120 376c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm80 0c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm80 0c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm80 0c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm238.6 49.4c-14.5-14.5-22.6-34.1-22.6-54.6V269.2c0-20.5 8.1-40.1 22.6-54.6l36.7-36.7c6.2-6.2 6.2-16.4 0-22.6l-22.6-22.6c-6.2-6.2-16.4-6.2-22.6 0l-36.7 36.7c-26.5 26.5-41.4 62.4-41.4 99.9V288h-64v-50.9c0-8.7-1.8-17.2-5.2-25.2L364.5 29.1C356.9 11.4 339.6 0 320.3 0H176c-26.5 0-48 21.5-48 48v112h-16c-26.5 0-48 21.5-48 48v91.2C26.3 317.2 0 355.4 0 400c0 61.9 50.1 112 112 112h256c61.9 0 112-50.1 112-112 0-17.3-4.2-33.4-11.2-48H512v18.7c0 37.5 14.9 73.4 41.4 99.9l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0l22.6-22.6c6.2-6.2 6.2-16.4 0-22.6l-36.7-36.7zM192 64h117.8l68.6 160H256l-64-64V64zm176 384H112c-26.5 0-48-21.5-48-48s21.5-48 48-48h256c26.5 0 48 21.5 48 48s-21.5 48-48 48z\"]\n};\nvar faSoap = {\n  prefix: 'fas',\n  iconName: 'soap',\n  icon: [512, 512, [], \"e06e\", \"M416,192a95.42,95.42,0,0,1-30.94,70.21A95.8,95.8,0,0,1,352,448H160a96,96,0,0,1,0-192h88.91A95.3,95.3,0,0,1,224,192H96A96,96,0,0,0,0,288V416a96,96,0,0,0,96,96H416a96,96,0,0,0,96-96V288A96,96,0,0,0,416,192Zm-96,64a64,64,0,1,0-64-64A64,64,0,0,0,320,256ZM208,96a48,48,0,1,0-48-48A48,48,0,0,0,208,96ZM384,64a32,32,0,1,0-32-32A32,32,0,0,0,384,64ZM160,288a64,64,0,0,0,0,128H352a64,64,0,0,0,0-128Z\"]\n};\nvar faSocks = {\n  prefix: 'fas',\n  iconName: 'socks',\n  icon: [512, 512, [], \"f696\", \"M214.66 311.01L288 256V96H128v176l-86.65 64.61c-39.4 29.56-53.86 84.42-29.21 127.06C30.39 495.25 63.27 512 96.08 512c20.03 0 40.25-6.25 57.52-19.2l21.86-16.39c-29.85-55.38-13.54-125.84 39.2-165.4zM288 32c0-11.05 3.07-21.3 8.02-30.38C293.4.92 290.85 0 288 0H160c-17.67 0-32 14.33-32 32v32h160V32zM480 0H352c-17.67 0-32 14.33-32 32v32h192V32c0-17.67-14.33-32-32-32zM320 272l-86.13 64.61c-39.4 29.56-53.86 84.42-29.21 127.06 18.25 31.58 50.61 48.33 83.42 48.33 20.03 0 40.25-6.25 57.52-19.2l115.2-86.4A127.997 127.997 0 0 0 512 304V96H320v176z\"]\n};\nvar faSolarPanel = {\n  prefix: 'fas',\n  iconName: 'solar-panel',\n  icon: [640, 512, [], \"f5ba\", \"M431.98 448.01l-47.97.05V416h-128v32.21l-47.98.05c-8.82.01-15.97 7.16-15.98 15.99l-.05 31.73c-.01 8.85 7.17 16.03 16.02 16.02l223.96-.26c8.82-.01 15.97-7.16 15.98-15.98l.04-31.73c.01-8.85-7.17-16.03-16.02-16.02zM585.2 26.74C582.58 11.31 568.99 0 553.06 0H86.93C71 0 57.41 11.31 54.79 26.74-3.32 369.16.04 348.08.03 352c-.03 17.32 14.29 32 32.6 32h574.74c18.23 0 32.51-14.56 32.59-31.79.02-4.08 3.35 16.95-54.76-325.47zM259.83 64h120.33l9.77 96H250.06l9.77-96zm-75.17 256H71.09L90.1 208h105.97l-11.41 112zm16.29-160H98.24l16.29-96h96.19l-9.77 96zm32.82 160l11.4-112h149.65l11.4 112H233.77zm195.5-256h96.19l16.29 96H439.04l-9.77-96zm26.06 256l-11.4-112H549.9l19.01 112H455.33z\"]\n};\nvar faSort = {\n  prefix: 'fas',\n  iconName: 'sort',\n  icon: [320, 512, [], \"f0dc\", \"M41 288h238c21.4 0 32.1 25.9 17 41L177 448c-9.4 9.4-24.6 9.4-33.9 0L24 329c-15.1-15.1-4.4-41 17-41zm255-105L177 64c-9.4-9.4-24.6-9.4-33.9 0L24 183c-15.1 15.1-4.4 41 17 41h238c21.4 0 32.1-25.9 17-41z\"]\n};\nvar faSortAlphaDown = {\n  prefix: 'fas',\n  iconName: 'sort-alpha-down',\n  icon: [448, 512, [], \"f15d\", \"M176 352h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.36 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zm240-64H288a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h56l-61.26 70.45A32 32 0 0 0 272 446.37V464a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-56l61.26-70.45A32 32 0 0 0 432 321.63V304a16 16 0 0 0-16-16zm31.06-85.38l-59.27-160A16 16 0 0 0 372.72 32h-41.44a16 16 0 0 0-15.07 10.62l-59.27 160A16 16 0 0 0 272 224h24.83a16 16 0 0 0 15.23-11.08l4.42-12.92h71l4.41 12.92A16 16 0 0 0 407.16 224H432a16 16 0 0 0 15.06-21.38zM335.61 144L352 96l16.39 48z\"]\n};\nvar faSortAlphaDownAlt = {\n  prefix: 'fas',\n  iconName: 'sort-alpha-down-alt',\n  icon: [448, 512, [], \"f881\", \"M176 352h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.36 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zm112-128h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-56l61.26-70.45A32 32 0 0 0 432 65.63V48a16 16 0 0 0-16-16H288a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h56l-61.26 70.45A32 32 0 0 0 272 190.37V208a16 16 0 0 0 16 16zm159.06 234.62l-59.27-160A16 16 0 0 0 372.72 288h-41.44a16 16 0 0 0-15.07 10.62l-59.27 160A16 16 0 0 0 272 480h24.83a16 16 0 0 0 15.23-11.08l4.42-12.92h71l4.41 12.92A16 16 0 0 0 407.16 480H432a16 16 0 0 0 15.06-21.38zM335.61 400L352 352l16.39 48z\"]\n};\nvar faSortAlphaUp = {\n  prefix: 'fas',\n  iconName: 'sort-alpha-up',\n  icon: [448, 512, [], \"f15e\", \"M16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31l-80-96a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160zm400 128H288a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h56l-61.26 70.45A32 32 0 0 0 272 446.37V464a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-56l61.26-70.45A32 32 0 0 0 432 321.63V304a16 16 0 0 0-16-16zm31.06-85.38l-59.27-160A16 16 0 0 0 372.72 32h-41.44a16 16 0 0 0-15.07 10.62l-59.27 160A16 16 0 0 0 272 224h24.83a16 16 0 0 0 15.23-11.08l4.42-12.92h71l4.41 12.92A16 16 0 0 0 407.16 224H432a16 16 0 0 0 15.06-21.38zM335.61 144L352 96l16.39 48z\"]\n};\nvar faSortAlphaUpAlt = {\n  prefix: 'fas',\n  iconName: 'sort-alpha-up-alt',\n  icon: [448, 512, [], \"f882\", \"M16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31l-80-96a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160zm272 64h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-56l61.26-70.45A32 32 0 0 0 432 65.63V48a16 16 0 0 0-16-16H288a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h56l-61.26 70.45A32 32 0 0 0 272 190.37V208a16 16 0 0 0 16 16zm159.06 234.62l-59.27-160A16 16 0 0 0 372.72 288h-41.44a16 16 0 0 0-15.07 10.62l-59.27 160A16 16 0 0 0 272 480h24.83a16 16 0 0 0 15.23-11.08l4.42-12.92h71l4.41 12.92A16 16 0 0 0 407.16 480H432a16 16 0 0 0 15.06-21.38zM335.61 400L352 352l16.39 48z\"]\n};\nvar faSortAmountDown = {\n  prefix: 'fas',\n  iconName: 'sort-amount-down',\n  icon: [512, 512, [], \"f160\", \"M304 416h-64a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-128-64h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.37 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zm256-192H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-64 128H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM496 32H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h256a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faSortAmountDownAlt = {\n  prefix: 'fas',\n  iconName: 'sort-amount-down-alt',\n  icon: [512, 512, [], \"f884\", \"M240 96h64a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16h-64a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm0 128h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm256 192H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h256a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-256-64h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm-64 0h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.37 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352z\"]\n};\nvar faSortAmountUp = {\n  prefix: 'fas',\n  iconName: 'sort-amount-up',\n  icon: [512, 512, [], \"f161\", \"M304 416h-64a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31l-80-96a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.77 160 16 160zm416 0H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-64 128H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM496 32H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h256a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faSortAmountUpAlt = {\n  prefix: 'fas',\n  iconName: 'sort-amount-up-alt',\n  icon: [512, 512, [], \"f885\", \"M240 96h64a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16h-64a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm0 128h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm256 192H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h256a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-256-64h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zM16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.39-17.24 11.31-27.31l-80-96a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160z\"]\n};\nvar faSortDown = {\n  prefix: 'fas',\n  iconName: 'sort-down',\n  icon: [320, 512, [], \"f0dd\", \"M41 288h238c21.4 0 32.1 25.9 17 41L177 448c-9.4 9.4-24.6 9.4-33.9 0L24 329c-15.1-15.1-4.4-41 17-41z\"]\n};\nvar faSortNumericDown = {\n  prefix: 'fas',\n  iconName: 'sort-numeric-down',\n  icon: [448, 512, [], \"f162\", \"M304 96h16v64h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-16V48a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 304 96zm26.15 162.91a79 79 0 0 0-55 54.17c-14.25 51.05 21.21 97.77 68.85 102.53a84.07 84.07 0 0 1-20.85 12.91c-7.57 3.4-10.8 12.47-8.18 20.34l9.9 20c2.87 8.63 12.53 13.49 20.9 9.91 58-24.76 86.25-61.61 86.25-132V336c-.02-51.21-48.4-91.34-101.85-77.09zM352 356a20 20 0 1 1 20-20 20 20 0 0 1-20 20zm-176-4h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.36 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352z\"]\n};\nvar faSortNumericDownAlt = {\n  prefix: 'fas',\n  iconName: 'sort-numeric-down-alt',\n  icon: [448, 512, [], \"f886\", \"M176 352h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.36 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zm224 64h-16V304a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 304 352h16v64h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM330.17 34.91a79 79 0 0 0-55 54.17c-14.27 51.05 21.19 97.77 68.83 102.53a84.07 84.07 0 0 1-20.85 12.91c-7.57 3.4-10.8 12.47-8.18 20.34l9.9 20c2.87 8.63 12.53 13.49 20.9 9.91 58-24.77 86.25-61.61 86.25-132V112c-.02-51.21-48.4-91.34-101.85-77.09zM352 132a20 20 0 1 1 20-20 20 20 0 0 1-20 20z\"]\n};\nvar faSortNumericUp = {\n  prefix: 'fas',\n  iconName: 'sort-numeric-up',\n  icon: [448, 512, [], \"f163\", \"M330.17 258.91a79 79 0 0 0-55 54.17c-14.27 51.05 21.19 97.77 68.83 102.53a84.07 84.07 0 0 1-20.85 12.91c-7.57 3.4-10.8 12.47-8.18 20.34l9.9 20c2.87 8.63 12.53 13.49 20.9 9.91 58-24.76 86.25-61.61 86.25-132V336c-.02-51.21-48.4-91.34-101.85-77.09zM352 356a20 20 0 1 1 20-20 20 20 0 0 1-20 20zM304 96h16v64h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-16V48a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 304 96zM107.31 36.69a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31z\"]\n};\nvar faSortNumericUpAlt = {\n  prefix: 'fas',\n  iconName: 'sort-numeric-up-alt',\n  icon: [448, 512, [], \"f887\", \"M107.31 36.69a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31zM400 416h-16V304a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 304 352h16v64h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM330.17 34.91a79 79 0 0 0-55 54.17c-14.27 51.05 21.19 97.77 68.83 102.53a84.07 84.07 0 0 1-20.85 12.91c-7.57 3.4-10.8 12.47-8.18 20.34l9.9 20c2.87 8.63 12.53 13.49 20.9 9.91 58-24.77 86.25-61.61 86.25-132V112c-.02-51.21-48.4-91.34-101.85-77.09zM352 132a20 20 0 1 1 20-20 20 20 0 0 1-20 20z\"]\n};\nvar faSortUp = {\n  prefix: 'fas',\n  iconName: 'sort-up',\n  icon: [320, 512, [], \"f0de\", \"M279 224H41c-21.4 0-32.1-25.9-17-41L143 64c9.4-9.4 24.6-9.4 33.9 0l119 119c15.2 15.1 4.5 41-16.9 41z\"]\n};\nvar faSpa = {\n  prefix: 'fas',\n  iconName: 'spa',\n  icon: [576, 512, [], \"f5bb\", \"M568.25 192c-29.04.13-135.01 6.16-213.84 83-33.12 29.63-53.36 63.3-66.41 94.86-13.05-31.56-33.29-65.23-66.41-94.86-78.83-76.84-184.8-82.87-213.84-83-4.41-.02-7.79 3.4-7.75 7.82.23 27.92 7.14 126.14 88.77 199.3C172.79 480.94 256 480 288 480s115.19.95 199.23-80.88c81.64-73.17 88.54-171.38 88.77-199.3.04-4.42-3.34-7.84-7.75-7.82zM287.98 302.6c12.82-18.85 27.6-35.78 44.09-50.52 19.09-18.61 39.58-33.3 60.26-45.18-16.44-70.5-51.72-133.05-96.73-172.22-4.11-3.58-11.02-3.58-15.14 0-44.99 39.14-80.27 101.63-96.74 172.07 20.37 11.7 40.5 26.14 59.22 44.39a282.768 282.768 0 0 1 45.04 51.46z\"]\n};\nvar faSpaceShuttle = {\n  prefix: 'fas',\n  iconName: 'space-shuttle',\n  icon: [640, 512, [], \"f197\", \"M592.604 208.244C559.735 192.836 515.777 184 472 184H186.327c-4.952-6.555-10.585-11.978-16.72-16H376C229.157 137.747 219.403 32 96.003 32H96v128H80V32c-26.51 0-48 28.654-48 64v64c-23.197 0-32 10.032-32 24v40c0 13.983 8.819 24 32 24v16c-23.197 0-32 10.032-32 24v40c0 13.983 8.819 24 32 24v64c0 35.346 21.49 64 48 64V352h16v128h.003c123.4 0 133.154-105.747 279.997-136H169.606c6.135-4.022 11.768-9.445 16.72-16H472c43.777 0 87.735-8.836 120.604-24.244C622.282 289.845 640 271.992 640 256s-17.718-33.845-47.396-47.756zM488 296a8 8 0 0 1-8-8v-64a8 8 0 0 1 8-8c31.909 0 31.942 80 0 80z\"]\n};\nvar faSpellCheck = {\n  prefix: 'fas',\n  iconName: 'spell-check',\n  icon: [576, 512, [], \"f891\", \"M272 256h91.36c43.2 0 82-32.2 84.51-75.34a79.82 79.82 0 0 0-25.26-63.07 79.81 79.81 0 0 0 9.06-44.91C427.9 30.57 389.3 0 347 0h-75a16 16 0 0 0-16 16v224a16 16 0 0 0 16 16zm40-200h40a24 24 0 0 1 0 48h-40zm0 96h56a24 24 0 0 1 0 48h-56zM155.12 22.25A32 32 0 0 0 124.64 0H99.36a32 32 0 0 0-30.48 22.25L.59 235.73A16 16 0 0 0 16 256h24.93a16 16 0 0 0 15.42-11.73L68.29 208h87.42l11.94 36.27A16 16 0 0 0 183.07 256H208a16 16 0 0 0 15.42-20.27zM89.37 144L112 75.3l22.63 68.7zm482 132.48l-45.21-45.3a15.88 15.88 0 0 0-22.59 0l-151.5 151.5-55.41-55.5a15.88 15.88 0 0 0-22.59 0l-45.3 45.3a16 16 0 0 0 0 22.59l112 112.21a15.89 15.89 0 0 0 22.6 0l208-208.21a16 16 0 0 0-.02-22.59z\"]\n};\nvar faSpider = {\n  prefix: 'fas',\n  iconName: 'spider',\n  icon: [576, 512, [], \"f717\", \"M151.17 167.35L177.1 176h4.67l5.22-26.12c.72-3.58 1.8-7.58 3.21-11.79l-20.29-40.58 23.8-71.39c2.79-8.38-1.73-17.44-10.12-20.24L168.42.82c-8.38-2.8-17.45 1.73-20.24 10.12l-25.89 77.68a32.04 32.04 0 0 0 1.73 24.43l27.15 54.3zm422.14 182.03l-52.75-79.12a32.002 32.002 0 0 0-26.62-14.25H416l68.99-24.36a32.03 32.03 0 0 0 16.51-12.61l53.6-80.41c4.9-7.35 2.91-17.29-4.44-22.19l-13.31-8.88c-7.35-4.9-17.29-2.91-22.19 4.44l-50.56 75.83L404.1 208H368l-10.37-51.85C355.44 145.18 340.26 96 288 96c-52.26 0-67.44 49.18-69.63 60.15L208 208h-36.1l-60.49-20.17L60.84 112c-4.9-7.35-14.83-9.34-22.19-4.44l-13.31 8.88c-7.35 4.9-9.34 14.83-4.44 22.19l53.6 80.41a32.03 32.03 0 0 0 16.51 12.61L160 256H82.06a32.02 32.02 0 0 0-26.63 14.25L2.69 349.38c-4.9 7.35-2.92 17.29 4.44 22.19l13.31 8.88c7.35 4.9 17.29 2.91 22.19-4.44l48-72h47.06l-60.83 97.33A31.988 31.988 0 0 0 72 418.3V496c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-73.11l74.08-118.53c-1.01 14.05-2.08 28.11-2.08 42.21C192 399.64 232.76 448 288 448s96-48.36 96-101.43c0-14.1-1.08-28.16-2.08-42.21L456 422.89V496c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-77.71c0-6-1.69-11.88-4.86-16.96L438.31 304h47.06l48 72c4.9 7.35 14.84 9.34 22.19 4.44l13.31-8.88c7.36-4.9 9.34-14.83 4.44-22.18zM406.09 97.51l-20.29 40.58c1.41 4.21 2.49 8.21 3.21 11.79l5.22 26.12h4.67l25.93-8.65 27.15-54.3a31.995 31.995 0 0 0 1.73-24.43l-25.89-77.68C425.03 2.56 415.96-1.98 407.58.82l-15.17 5.06c-8.38 2.8-12.91 11.86-10.12 20.24l23.8 71.39z\"]\n};\nvar faSpinner = {\n  prefix: 'fas',\n  iconName: 'spinner',\n  icon: [512, 512, [], \"f110\", \"M304 48c0 26.51-21.49 48-48 48s-48-21.49-48-48 21.49-48 48-48 48 21.49 48 48zm-48 368c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zm208-208c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zM96 256c0-26.51-21.49-48-48-48S0 229.49 0 256s21.49 48 48 48 48-21.49 48-48zm12.922 99.078c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48c0-26.509-21.491-48-48-48zm294.156 0c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48c0-26.509-21.49-48-48-48zM108.922 60.922c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.491-48-48-48z\"]\n};\nvar faSplotch = {\n  prefix: 'fas',\n  iconName: 'splotch',\n  icon: [512, 512, [], \"f5bc\", \"M472.29 195.89l-67.06-22.95c-19.28-6.6-33.54-20.92-38.14-38.3L351.1 74.19c-11.58-43.77-76.57-57.13-109.98-22.62l-46.14 47.67c-13.26 13.71-33.54 20.93-54.2 19.31l-71.88-5.62c-52.05-4.07-86.93 44.88-59.03 82.83l38.54 52.42c11.08 15.07 12.82 33.86 4.64 50.24L24.62 355.4c-20.59 41.25 22.84 84.87 73.49 73.81l69.96-15.28c20.11-4.39 41.45 0 57.07 11.73l54.32 40.83c39.32 29.56 101.04 7.57 104.45-37.22l4.7-61.86c1.35-17.79 12.8-33.86 30.63-42.99l62-31.74c44.88-22.96 39.59-80.17-8.95-96.79z\"]\n};\nvar faSprayCan = {\n  prefix: 'fas',\n  iconName: 'spray-can',\n  icon: [512, 512, [], \"f5bd\", \"M224 32c0-17.67-14.33-32-32-32h-64c-17.67 0-32 14.33-32 32v96h128V32zm256 96c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm-256 32H96c-53.02 0-96 42.98-96 96v224c0 17.67 14.33 32 32 32h256c17.67 0 32-14.33 32-32V256c0-53.02-42.98-96-96-96zm-64 256c-44.18 0-80-35.82-80-80s35.82-80 80-80 80 35.82 80 80-35.82 80-80 80zM480 96c17.67 0 32-14.33 32-32s-14.33-32-32-32-32 14.33-32 32 14.33 32 32 32zm-96 32c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm-96-96c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm96 0c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm96 192c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32z\"]\n};\nvar faSquare = {\n  prefix: 'fas',\n  iconName: 'square',\n  icon: [448, 512, [], \"f0c8\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48z\"]\n};\nvar faSquareFull = {\n  prefix: 'fas',\n  iconName: 'square-full',\n  icon: [512, 512, [], \"f45c\", \"M512 512H0V0h512v512z\"]\n};\nvar faSquareRootAlt = {\n  prefix: 'fas',\n  iconName: 'square-root-alt',\n  icon: [576, 512, [], \"f698\", \"M571.31 251.31l-22.62-22.62c-6.25-6.25-16.38-6.25-22.63 0L480 274.75l-46.06-46.06c-6.25-6.25-16.38-6.25-22.63 0l-22.62 22.62c-6.25 6.25-6.25 16.38 0 22.63L434.75 320l-46.06 46.06c-6.25 6.25-6.25 16.38 0 22.63l22.62 22.62c6.25 6.25 16.38 6.25 22.63 0L480 365.25l46.06 46.06c6.25 6.25 16.38 6.25 22.63 0l22.62-22.62c6.25-6.25 6.25-16.38 0-22.63L525.25 320l46.06-46.06c6.25-6.25 6.25-16.38 0-22.63zM552 0H307.65c-14.54 0-27.26 9.8-30.95 23.87l-84.79 322.8-58.41-106.1A32.008 32.008 0 0 0 105.47 224H24c-13.25 0-24 10.74-24 24v48c0 13.25 10.75 24 24 24h43.62l88.88 163.73C168.99 503.5 186.3 512 204.94 512c17.27 0 44.44-9 54.28-41.48L357.03 96H552c13.25 0 24-10.75 24-24V24c0-13.26-10.75-24-24-24z\"]\n};\nvar faStamp = {\n  prefix: 'fas',\n  iconName: 'stamp',\n  icon: [512, 512, [], \"f5bf\", \"M32 512h448v-64H32v64zm384-256h-66.56c-16.26 0-29.44-13.18-29.44-29.44v-9.46c0-27.37 8.88-53.41 21.46-77.72 9.11-17.61 12.9-38.39 9.05-60.42-6.77-38.78-38.47-70.7-77.26-77.45C212.62-9.04 160 37.33 160 96c0 14.16 3.12 27.54 8.69 39.58C182.02 164.43 192 194.7 192 226.49v.07c0 16.26-13.18 29.44-29.44 29.44H96c-53.02 0-96 42.98-96 96v32c0 17.67 14.33 32 32 32h448c17.67 0 32-14.33 32-32v-32c0-53.02-42.98-96-96-96z\"]\n};\nvar faStar = {\n  prefix: 'fas',\n  iconName: 'star',\n  icon: [576, 512, [], \"f005\", \"M259.3 17.8L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0z\"]\n};\nvar faStarAndCrescent = {\n  prefix: 'fas',\n  iconName: 'star-and-crescent',\n  icon: [512, 512, [], \"f699\", \"M340.47 466.36c-1.45 0-6.89.46-9.18.46-116.25 0-210.82-94.57-210.82-210.82S215.04 45.18 331.29 45.18c2.32 0 7.7.46 9.18.46 7.13 0 13.33-5.03 14.75-12.07 1.46-7.25-2.55-14.49-9.47-17.09C316.58 5.54 286.39 0 256 0 114.84 0 0 114.84 0 256s114.84 256 256 256c30.23 0 60.28-5.49 89.32-16.32 5.96-2.02 10.28-7.64 10.28-14.26 0-8.09-6.39-15.06-15.13-15.06zm162.99-252.5l-76.38-11.1-34.16-69.21c-1.83-3.7-5.38-5.55-8.93-5.55s-7.1 1.85-8.93 5.55l-34.16 69.21-76.38 11.1c-8.17 1.18-11.43 11.22-5.52 16.99l55.27 53.87-13.05 76.07c-1.11 6.44 4.01 11.66 9.81 11.66 1.53 0 3.11-.36 4.64-1.17L384 335.37l68.31 35.91c1.53.8 3.11 1.17 4.64 1.17 5.8 0 10.92-5.23 9.81-11.66l-13.05-76.07 55.27-53.87c5.91-5.77 2.65-15.81-5.52-16.99z\"]\n};\nvar faStarHalf = {\n  prefix: 'fas',\n  iconName: 'star-half',\n  icon: [576, 512, [], \"f089\", \"M288 0c-11.4 0-22.8 5.9-28.7 17.8L194 150.2 47.9 171.4c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.1 23 46 46.4 33.7L288 439.6V0z\"]\n};\nvar faStarHalfAlt = {\n  prefix: 'fas',\n  iconName: 'star-half-alt',\n  icon: [536, 512, [], \"f5c0\", \"M508.55 171.51L362.18 150.2 296.77 17.81C290.89 5.98 279.42 0 267.95 0c-11.4 0-22.79 5.9-28.69 17.81l-65.43 132.38-146.38 21.29c-26.25 3.8-36.77 36.09-17.74 54.59l105.89 103-25.06 145.48C86.98 495.33 103.57 512 122.15 512c4.93 0 10-1.17 14.87-3.75l130.95-68.68 130.94 68.7c4.86 2.55 9.92 3.71 14.83 3.71 18.6 0 35.22-16.61 31.66-37.4l-25.03-145.49 105.91-102.98c19.04-18.5 8.52-50.8-17.73-54.6zm-121.74 123.2l-18.12 17.62 4.28 24.88 19.52 113.45-102.13-53.59-22.38-11.74.03-317.19 51.03 103.29 11.18 22.63 25.01 3.64 114.23 16.63-82.65 80.38z\"]\n};\nvar faStarOfDavid = {\n  prefix: 'fas',\n  iconName: 'star-of-david',\n  icon: [464, 512, [], \"f69a\", \"M405.68 256l53.21-89.39C473.3 142.4 455.48 112 426.88 112H319.96l-55.95-93.98C256.86 6.01 244.43 0 232 0s-24.86 6.01-32.01 18.02L144.04 112H37.11c-28.6 0-46.42 30.4-32.01 54.61L58.32 256 5.1 345.39C-9.31 369.6 8.51 400 37.11 400h106.93l55.95 93.98C207.14 505.99 219.57 512 232 512s24.86-6.01 32.01-18.02L319.96 400h106.93c28.6 0 46.42-30.4 32.01-54.61L405.68 256zm-12.78-88l-19.8 33.26L353.3 168h39.6zm-52.39 88l-52.39 88H175.88l-52.39-88 52.38-88h112.25l52.39 88zM232 73.72L254.79 112h-45.57L232 73.72zM71.1 168h39.6l-19.8 33.26L71.1 168zm0 176l19.8-33.26L110.7 344H71.1zM232 438.28L209.21 400h45.57L232 438.28zM353.29 344l19.8-33.26L392.9 344h-39.61z\"]\n};\nvar faStarOfLife = {\n  prefix: 'fas',\n  iconName: 'star-of-life',\n  icon: [480, 512, [], \"f621\", \"M471.99 334.43L336.06 256l135.93-78.43c7.66-4.42 10.28-14.2 5.86-21.86l-32.02-55.43c-4.42-7.65-14.21-10.28-21.87-5.86l-135.93 78.43V16c0-8.84-7.17-16-16.01-16h-64.04c-8.84 0-16.01 7.16-16.01 16v156.86L56.04 94.43c-7.66-4.42-17.45-1.79-21.87 5.86L2.15 155.71c-4.42 7.65-1.8 17.44 5.86 21.86L143.94 256 8.01 334.43c-7.66 4.42-10.28 14.21-5.86 21.86l32.02 55.43c4.42 7.65 14.21 10.27 21.87 5.86l135.93-78.43V496c0 8.84 7.17 16 16.01 16h64.04c8.84 0 16.01-7.16 16.01-16V339.14l135.93 78.43c7.66 4.42 17.45 1.8 21.87-5.86l32.02-55.43c4.42-7.65 1.8-17.43-5.86-21.85z\"]\n};\nvar faStepBackward = {\n  prefix: 'fas',\n  iconName: 'step-backward',\n  icon: [448, 512, [], \"f048\", \"M64 468V44c0-6.6 5.4-12 12-12h48c6.6 0 12 5.4 12 12v176.4l195.5-181C352.1 22.3 384 36.6 384 64v384c0 27.4-31.9 41.7-52.5 24.6L136 292.7V468c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12z\"]\n};\nvar faStepForward = {\n  prefix: 'fas',\n  iconName: 'step-forward',\n  icon: [448, 512, [], \"f051\", \"M384 44v424c0 6.6-5.4 12-12 12h-48c-6.6 0-12-5.4-12-12V291.6l-195.5 181C95.9 489.7 64 475.4 64 448V64c0-27.4 31.9-41.7 52.5-24.6L312 219.3V44c0-6.6 5.4-12 12-12h48c6.6 0 12 5.4 12 12z\"]\n};\nvar faStethoscope = {\n  prefix: 'fas',\n  iconName: 'stethoscope',\n  icon: [512, 512, [], \"f0f1\", \"M447.1 112c-34.2.5-62.3 28.4-63 62.6-.5 24.3 12.5 45.6 32 56.8V344c0 57.3-50.2 104-112 104-60 0-109.2-44.1-111.9-99.2C265 333.8 320 269.2 320 192V36.6c0-11.4-8.1-21.3-19.3-23.5L237.8.5c-13-2.6-25.6 5.8-28.2 18.8L206.4 35c-2.6 13 5.8 25.6 18.8 28.2l30.7 6.1v121.4c0 52.9-42.2 96.7-95.1 97.2-53.4.5-96.9-42.7-96.9-96V69.4l30.7-6.1c13-2.6 21.4-15.2 18.8-28.2l-3.1-15.7C107.7 6.4 95.1-2 82.1.6L19.3 13C8.1 15.3 0 25.1 0 36.6V192c0 77.3 55.1 142 128.1 156.8C130.7 439.2 208.6 512 304 512c97 0 176-75.4 176-168V231.4c19.1-11.1 32-31.7 32-55.4 0-35.7-29.2-64.5-64.9-64zm.9 80c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z\"]\n};\nvar faStickyNote = {\n  prefix: 'fas',\n  iconName: 'sticky-note',\n  icon: [448, 512, [], \"f249\", \"M312 320h136V56c0-13.3-10.7-24-24-24H24C10.7 32 0 42.7 0 56v400c0 13.3 10.7 24 24 24h264V344c0-13.2 10.8-24 24-24zm129 55l-98 98c-4.5 4.5-10.6 7-17 7h-6V352h128v6.1c0 6.3-2.5 12.4-7 16.9z\"]\n};\nvar faStop = {\n  prefix: 'fas',\n  iconName: 'stop',\n  icon: [448, 512, [], \"f04d\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48z\"]\n};\nvar faStopCircle = {\n  prefix: 'fas',\n  iconName: 'stop-circle',\n  icon: [512, 512, [], \"f28d\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm96 328c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h160c8.8 0 16 7.2 16 16v160z\"]\n};\nvar faStopwatch = {\n  prefix: 'fas',\n  iconName: 'stopwatch',\n  icon: [448, 512, [], \"f2f2\", \"M432 304c0 114.9-93.1 208-208 208S16 418.9 16 304c0-104 76.3-190.2 176-205.5V64h-28c-6.6 0-12-5.4-12-12V12c0-6.6 5.4-12 12-12h120c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-28v34.5c37.5 5.8 71.7 21.6 99.7 44.6l27.5-27.5c4.7-4.7 12.3-4.7 17 0l28.3 28.3c4.7 4.7 4.7 12.3 0 17l-29.4 29.4-.6.6C419.7 223.3 432 262.2 432 304zm-176 36V188.5c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12V340c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12z\"]\n};\nvar faStopwatch20 = {\n  prefix: 'fas',\n  iconName: 'stopwatch-20',\n  icon: [448, 512, [], \"e06f\", \"M398.5,190.91l.59-.61,26.59-26.58a16,16,0,0,0,0-22.63L403,118.41a16,16,0,0,0-22.63,0l-24.68,24.68A206.68,206.68,0,0,0,256,98.5V64h32a16,16,0,0,0,16-16V16A16,16,0,0,0,288,0H160a16.05,16.05,0,0,0-16,16V48a16.05,16.05,0,0,0,16,16h32V98.5A207.92,207.92,0,0,0,16.09,297.57C12.64,411.5,106.76,510.22,220.72,512,337.13,513.77,432,420,432,304A206,206,0,0,0,398.5,190.91ZM204.37,377.55a8.2,8.2,0,0,1,8.32,8.07v22.31a8.2,8.2,0,0,1-8.32,8.07H121.52a16.46,16.46,0,0,1-16.61-17.62c2.78-35.22,14.67-57.41,38.45-91.37,20.42-29.19,27.1-37.32,27.1-62.34,0-16.92-1.79-24.27-12.21-24.27-9.39,0-12.69,7.4-12.69,22.68v5.23a8.2,8.2,0,0,1-8.33,8.07h-24.9a8.2,8.2,0,0,1-8.33-8.07v-4.07c0-27.3,8.48-60.24,56.43-60.24,43,0,55.57,25.85,55.57,61,0,35.58-12.44,51.21-34.35,81.31-11.56,15-24.61,35.57-26.41,51.2ZM344,352.32c0,35.16-12.3,63.68-57.23,63.68C243.19,416,232,386.48,232,352.55V247.22c0-40.73,19.58-63.22,56.2-63.22C325,184,344,206.64,344,245.3ZM287.87,221.73c-9.41,0-13.23,7.5-13.23,20V357.68c0,13.11,3.59,20.59,13.23,20.59s13-8,13-21.27V241.06C300.89,229.79,297.88,221.73,287.87,221.73Z\"]\n};\nvar faStore = {\n  prefix: 'fas',\n  iconName: 'store',\n  icon: [616, 512, [], \"f54e\", \"M602 118.6L537.1 15C531.3 5.7 521 0 510 0H106C95 0 84.7 5.7 78.9 15L14 118.6c-33.5 53.5-3.8 127.9 58.8 136.4 4.5.6 9.1.9 13.7.9 29.6 0 55.8-13 73.8-33.1 18 20.1 44.3 33.1 73.8 33.1 29.6 0 55.8-13 73.8-33.1 18 20.1 44.3 33.1 73.8 33.1 29.6 0 55.8-13 73.8-33.1 18.1 20.1 44.3 33.1 73.8 33.1 4.7 0 9.2-.3 13.7-.9 62.8-8.4 92.6-82.8 59-136.4zM529.5 288c-10 0-19.9-1.5-29.5-3.8V384H116v-99.8c-9.6 2.2-19.5 3.8-29.5 3.8-6 0-12.1-.4-18-1.2-5.6-.8-11.1-2.1-16.4-3.6V480c0 17.7 14.3 32 32 32h448c17.7 0 32-14.3 32-32V283.2c-5.4 1.6-10.8 2.9-16.4 3.6-6.1.8-12.1 1.2-18.2 1.2z\"]\n};\nvar faStoreAlt = {\n  prefix: 'fas',\n  iconName: 'store-alt',\n  icon: [640, 512, [], \"f54f\", \"M320 384H128V224H64v256c0 17.7 14.3 32 32 32h256c17.7 0 32-14.3 32-32V224h-64v160zm314.6-241.8l-85.3-128c-6-8.9-16-14.2-26.7-14.2H117.4c-10.7 0-20.7 5.3-26.6 14.2l-85.3 128c-14.2 21.3 1 49.8 26.6 49.8H608c25.5 0 40.7-28.5 26.6-49.8zM512 496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V224h-64v272z\"]\n};\nvar faStoreAltSlash = {\n  prefix: 'fas',\n  iconName: 'store-alt-slash',\n  icon: [640, 512, [], \"e070\", \"M17.89,123.62,5.51,142.2c-14.2,21.3,1,49.8,26.59,49.8h74.26ZM576,413.42V224H512V364L384,265V224H330.92l-41.4-32H608c25.5,0,40.7-28.5,26.59-49.8l-85.29-128A32.18,32.18,0,0,0,522.6,0H117.42A31.87,31.87,0,0,0,90.81,14.2l-10.66,16L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.46A16,16,0,0,0,6.18,53.91L594.53,508.63A16,16,0,0,0,617,505.81l19.64-25.26a16,16,0,0,0-2.81-22.45ZM320,384H128V224H64V480a32,32,0,0,0,32,32H352a32,32,0,0,0,32-32V406.59l-64-49.47Z\"]\n};\nvar faStoreSlash = {\n  prefix: 'fas',\n  iconName: 'store-slash',\n  icon: [640, 512, [], \"e071\", \"M121.51,384V284.2a119.43,119.43,0,0,1-28,3.8,123.46,123.46,0,0,1-17.1-1.2,114.88,114.88,0,0,1-15.58-3.6V480c0,17.7,13.59,32,30.4,32H505.75L348.42,384Zm-28-128.09c25.1,0,47.29-10.72,64-27.24L24,120.05c-30.52,53.39-2.45,126.53,56.49,135A95.68,95.68,0,0,0,93.48,255.91ZM602.13,458.09,547.2,413.41V283.2a93.5,93.5,0,0,1-15.57,3.6,127.31,127.31,0,0,1-17.29,1.2,114.89,114.89,0,0,1-28-3.8v79.68L348.52,251.77a88.06,88.06,0,0,0,25.41,4.14c28.11,0,53-13,70.11-33.11,17.19,20.11,42.08,33.11,70.11,33.11a94.31,94.31,0,0,0,13-.91c59.66-8.41,88-82.8,56.06-136.4L521.55,15A30.1,30.1,0,0,0,495.81,0H112A30.11,30.11,0,0,0,86.27,15L76.88,30.78,43.19,3.38A14.68,14.68,0,0,0,21.86,6.19L3.2,31.45A16.58,16.58,0,0,0,5.87,53.91L564.81,508.63a14.69,14.69,0,0,0,21.33-2.82l18.66-25.26A16.58,16.58,0,0,0,602.13,458.09Z\"]\n};\nvar faStream = {\n  prefix: 'fas',\n  iconName: 'stream',\n  icon: [512, 512, [], \"f550\", \"M16 128h416c8.84 0 16-7.16 16-16V48c0-8.84-7.16-16-16-16H16C7.16 32 0 39.16 0 48v64c0 8.84 7.16 16 16 16zm480 80H80c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zm-64 176H16c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16z\"]\n};\nvar faStreetView = {\n  prefix: 'fas',\n  iconName: 'street-view',\n  icon: [512, 512, [], \"f21d\", \"M367.9 329.76c-4.62 5.3-9.78 10.1-15.9 13.65v22.94c66.52 9.34 112 28.05 112 49.65 0 30.93-93.12 56-208 56S48 446.93 48 416c0-21.6 45.48-40.3 112-49.65v-22.94c-6.12-3.55-11.28-8.35-15.9-13.65C58.87 345.34 0 378.05 0 416c0 53.02 114.62 96 256 96s256-42.98 256-96c0-37.95-58.87-70.66-144.1-86.24zM256 128c35.35 0 64-28.65 64-64S291.35 0 256 0s-64 28.65-64 64 28.65 64 64 64zm-64 192v96c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-96c17.67 0 32-14.33 32-32v-96c0-26.51-21.49-48-48-48h-11.8c-11.07 5.03-23.26 8-36.2 8s-25.13-2.97-36.2-8H208c-26.51 0-48 21.49-48 48v96c0 17.67 14.33 32 32 32z\"]\n};\nvar faStrikethrough = {\n  prefix: 'fas',\n  iconName: 'strikethrough',\n  icon: [512, 512, [], \"f0cc\", \"M496 224H293.9l-87.17-26.83A43.55 43.55 0 0 1 219.55 112h66.79A49.89 49.89 0 0 1 331 139.58a16 16 0 0 0 21.46 7.15l42.94-21.47a16 16 0 0 0 7.16-21.46l-.53-1A128 128 0 0 0 287.51 32h-68a123.68 123.68 0 0 0-123 135.64c2 20.89 10.1 39.83 21.78 56.36H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h480a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-180.24 96A43 43 0 0 1 336 356.45 43.59 43.59 0 0 1 292.45 400h-66.79A49.89 49.89 0 0 1 181 372.42a16 16 0 0 0-21.46-7.15l-42.94 21.47a16 16 0 0 0-7.16 21.46l.53 1A128 128 0 0 0 224.49 480h68a123.68 123.68 0 0 0 123-135.64 114.25 114.25 0 0 0-5.34-24.36z\"]\n};\nvar faStroopwafel = {\n  prefix: 'fas',\n  iconName: 'stroopwafel',\n  icon: [512, 512, [], \"f551\", \"M188.12 210.74L142.86 256l45.25 45.25L233.37 256l-45.25-45.26zm113.13-22.62L256 142.86l-45.25 45.25L256 233.37l45.25-45.25zm-90.5 135.76L256 369.14l45.26-45.26L256 278.63l-45.25 45.25zM256 0C114.62 0 0 114.62 0 256s114.62 256 256 256 256-114.62 256-256S397.38 0 256 0zm186.68 295.6l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0l-28.29-28.29-45.25 45.25 33.94 33.94 16.97-16.97c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31l-16.97 16.97 16.97 16.97c3.12 3.12 3.12 8.19 0 11.31l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0l-16.97-16.97-16.97 16.97c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l16.97-16.97-33.94-33.94-45.26 45.26 28.29 28.29c3.12 3.12 3.12 8.19 0 11.31l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0L256 414.39l-28.29 28.29c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l28.29-28.29-45.25-45.26-33.94 33.94 16.97 16.97c3.12 3.12 3.12 8.19 0 11.31l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0l-16.97-16.97-16.97 16.97c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l16.97-16.97-16.97-16.97c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0l16.97 16.97 33.94-33.94-45.25-45.25-28.29 28.29c-3.12 3.12-8.19 3.12-11.31 0L69.32 295.6c-3.12-3.12-3.12-8.19 0-11.31L97.61 256l-28.29-28.29c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0l28.29 28.29 45.25-45.26-33.94-33.94-16.97 16.97c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l16.97-16.97-16.97-16.97c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0l16.97 16.97 16.97-16.97c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31l-16.97 16.97 33.94 33.94 45.26-45.25-28.29-28.29c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0L256 97.61l28.29-28.29c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31l-28.29 28.29 45.26 45.25 33.94-33.94-16.97-16.97c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0l16.97 16.97 16.97-16.97c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31l-16.97 16.97 16.97 16.97c3.12 3.12 3.12 8.19 0 11.31l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0l-16.97-16.97-33.94 33.94 45.25 45.26 28.29-28.29c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31L414.39 256l28.29 28.28a8.015 8.015 0 0 1 0 11.32zM278.63 256l45.26 45.25L369.14 256l-45.25-45.26L278.63 256z\"]\n};\nvar faSubscript = {\n  prefix: 'fas',\n  iconName: 'subscript',\n  icon: [512, 512, [], \"f12c\", \"M496 448h-16V304a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 400 352h16v96h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM336 64h-67a16 16 0 0 0-13.14 6.87l-79.9 115-79.9-115A16 16 0 0 0 83 64H16A16 16 0 0 0 0 80v48a16 16 0 0 0 16 16h33.48l77.81 112-77.81 112H16a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h67a16 16 0 0 0 13.14-6.87l79.9-115 79.9 115A16 16 0 0 0 269 448h67a16 16 0 0 0 16-16v-48a16 16 0 0 0-16-16h-33.48l-77.81-112 77.81-112H336a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16z\"]\n};\nvar faSubway = {\n  prefix: 'fas',\n  iconName: 'subway',\n  icon: [448, 512, [], \"f239\", \"M448 96v256c0 51.815-61.624 96-130.022 96l62.98 49.721C386.905 502.417 383.562 512 376 512H72c-7.578 0-10.892-9.594-4.957-14.279L130.022 448C61.82 448 0 403.954 0 352V96C0 42.981 64 0 128 0h192c65 0 128 42.981 128 96zM200 232V120c0-13.255-10.745-24-24-24H72c-13.255 0-24 10.745-24 24v112c0 13.255 10.745 24 24 24h104c13.255 0 24-10.745 24-24zm200 0V120c0-13.255-10.745-24-24-24H272c-13.255 0-24 10.745-24 24v112c0 13.255 10.745 24 24 24h104c13.255 0 24-10.745 24-24zm-48 56c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zm-256 0c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48z\"]\n};\nvar faSuitcase = {\n  prefix: 'fas',\n  iconName: 'suitcase',\n  icon: [512, 512, [], \"f0f2\", \"M128 480h256V80c0-26.5-21.5-48-48-48H176c-26.5 0-48 21.5-48 48v400zm64-384h128v32H192V96zm320 80v256c0 26.5-21.5 48-48 48h-48V128h48c26.5 0 48 21.5 48 48zM96 480H48c-26.5 0-48-21.5-48-48V176c0-26.5 21.5-48 48-48h48v352z\"]\n};\nvar faSuitcaseRolling = {\n  prefix: 'fas',\n  iconName: 'suitcase-rolling',\n  icon: [384, 512, [], \"f5c1\", \"M336 160H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h16v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16h128v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16h16c26.51 0 48-21.49 48-48V208c0-26.51-21.49-48-48-48zm-16 216c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h240c4.42 0 8 3.58 8 8v16zm0-96c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h240c4.42 0 8 3.58 8 8v16zM144 48h96v80h48V48c0-26.51-21.49-48-48-48h-96c-26.51 0-48 21.49-48 48v80h48V48z\"]\n};\nvar faSun = {\n  prefix: 'fas',\n  iconName: 'sun',\n  icon: [512, 512, [], \"f185\", \"M256 160c-52.9 0-96 43.1-96 96s43.1 96 96 96 96-43.1 96-96-43.1-96-96-96zm246.4 80.5l-94.7-47.3 33.5-100.4c4.5-13.6-8.4-26.5-21.9-21.9l-100.4 33.5-47.4-94.8c-6.4-12.8-24.6-12.8-31 0l-47.3 94.7L92.7 70.8c-13.6-4.5-26.5 8.4-21.9 21.9l33.5 100.4-94.7 47.4c-12.8 6.4-12.8 24.6 0 31l94.7 47.3-33.5 100.5c-4.5 13.6 8.4 26.5 21.9 21.9l100.4-33.5 47.3 94.7c6.4 12.8 24.6 12.8 31 0l47.3-94.7 100.4 33.5c13.6 4.5 26.5-8.4 21.9-21.9l-33.5-100.4 94.7-47.3c13-6.5 13-24.7.2-31.1zm-155.9 106c-49.9 49.9-131.1 49.9-181 0-49.9-49.9-49.9-131.1 0-181 49.9-49.9 131.1-49.9 181 0 49.9 49.9 49.9 131.1 0 181z\"]\n};\nvar faSuperscript = {\n  prefix: 'fas',\n  iconName: 'superscript',\n  icon: [512, 512, [], \"f12b\", \"M496 160h-16V16a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 400 64h16v96h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM336 64h-67a16 16 0 0 0-13.14 6.87l-79.9 115-79.9-115A16 16 0 0 0 83 64H16A16 16 0 0 0 0 80v48a16 16 0 0 0 16 16h33.48l77.81 112-77.81 112H16a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h67a16 16 0 0 0 13.14-6.87l79.9-115 79.9 115A16 16 0 0 0 269 448h67a16 16 0 0 0 16-16v-48a16 16 0 0 0-16-16h-33.48l-77.81-112 77.81-112H336a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16z\"]\n};\nvar faSurprise = {\n  prefix: 'fas',\n  iconName: 'surprise',\n  icon: [496, 512, [], \"f5c2\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM136 208c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm112 208c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64zm80-176c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faSwatchbook = {\n  prefix: 'fas',\n  iconName: 'swatchbook',\n  icon: [512, 512, [], \"f5c3\", \"M434.66,167.71h0L344.5,77.36a31.83,31.83,0,0,0-45-.07h0l-.07.07L224,152.88V424L434.66,212.9A32,32,0,0,0,434.66,167.71ZM480,320H373.09L186.68,506.51c-2.06,2.07-4.5,3.58-6.68,5.49H480a32,32,0,0,0,32-32V352A32,32,0,0,0,480,320ZM192,32A32,32,0,0,0,160,0H32A32,32,0,0,0,0,32V416a96,96,0,0,0,192,0ZM96,440a24,24,0,1,1,24-24A24,24,0,0,1,96,440Zm32-184H64V192h64Zm0-128H64V64h64Z\"]\n};\nvar faSwimmer = {\n  prefix: 'fas',\n  iconName: 'swimmer',\n  icon: [640, 512, [], \"f5c4\", \"M189.61 310.58c3.54 3.26 15.27 9.42 34.39 9.42s30.86-6.16 34.39-9.42c16.02-14.77 34.5-22.58 53.46-22.58h16.3c18.96 0 37.45 7.81 53.46 22.58 3.54 3.26 15.27 9.42 34.39 9.42s30.86-6.16 34.39-9.42c14.86-13.71 31.88-21.12 49.39-22.16l-112.84-80.6 18-12.86c3.64-2.58 8.28-3.52 12.62-2.61l100.35 21.53c25.91 5.53 51.44-10.97 57-36.88 5.55-25.92-10.95-51.44-36.88-57L437.68 98.47c-30.73-6.58-63.02.12-88.56 18.38l-80.02 57.17c-10.38 7.39-19.36 16.44-26.72 26.94L173.75 299c5.47 3.23 10.82 6.93 15.86 11.58zM624 352h-16c-26.04 0-45.8-8.42-56.09-17.9-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C461.8 343.58 442.04 352 416 352s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C269.8 343.58 250.04 352 224 352s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C77.8 343.58 58.04 352 32 352H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h16c38.62 0 72.72-12.19 96-31.84 23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84h16c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-512-96c44.18 0 80-35.82 80-80s-35.82-80-80-80-80 35.82-80 80 35.82 80 80 80z\"]\n};\nvar faSwimmingPool = {\n  prefix: 'fas',\n  iconName: 'swimming-pool',\n  icon: [640, 512, [], \"f5c5\", \"M624 416h-16c-26.04 0-45.8-8.42-56.09-17.9-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C461.8 407.58 442.04 416 416 416s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C269.8 407.58 250.04 416 224 416s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C77.8 407.58 58.04 416 32 416H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h16c38.62 0 72.72-12.19 96-31.84 23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84h16c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-400-32v-96h192v96c19.12 0 30.86-6.16 34.39-9.42 9.17-8.46 19.2-14.34 29.61-18.07V128c0-17.64 14.36-32 32-32s32 14.36 32 32v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16c0-52.94-43.06-96-96-96s-96 43.06-96 96v96H224v-96c0-17.64 14.36-32 32-32s32 14.36 32 32v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16c0-52.94-43.06-96-96-96s-96 43.06-96 96v228.5c10.41 3.73 20.44 9.62 29.61 18.07 3.53 3.27 15.27 9.43 34.39 9.43z\"]\n};\nvar faSynagogue = {\n  prefix: 'fas',\n  iconName: 'synagogue',\n  icon: [640, 512, [], \"f69b\", \"M70 196.51L6.67 268.29A26.643 26.643 0 0 0 0 285.93V512h128V239.58l-38-43.07c-5.31-6.01-14.69-6.01-20 0zm563.33 71.78L570 196.51c-5.31-6.02-14.69-6.02-20 0l-38 43.07V512h128V285.93c0-6.5-2.37-12.77-6.67-17.64zM339.99 7.01c-11.69-9.35-28.29-9.35-39.98 0l-128 102.4A32.005 32.005 0 0 0 160 134.4V512h96v-92.57c0-31.88 21.78-61.43 53.25-66.55C349.34 346.35 384 377.13 384 416v96h96V134.4c0-9.72-4.42-18.92-12.01-24.99l-128-102.4zm52.07 215.55c1.98 3.15-.29 7.24-4 7.24h-38.94L324 269.79c-1.85 2.95-6.15 2.95-8 0l-25.12-39.98h-38.94c-3.72 0-5.98-4.09-4-7.24l19.2-30.56-19.2-30.56c-1.98-3.15.29-7.24 4-7.24h38.94l25.12-40c1.85-2.95 6.15-2.95 8 0l25.12 39.98h38.95c3.71 0 5.98 4.09 4 7.24L372.87 192l19.19 30.56z\"]\n};\nvar faSync = {\n  prefix: 'fas',\n  iconName: 'sync',\n  icon: [512, 512, [], \"f021\", \"M440.65 12.57l4 82.77A247.16 247.16 0 0 0 255.83 8C134.73 8 33.91 94.92 12.29 209.82A12 12 0 0 0 24.09 224h49.05a12 12 0 0 0 11.67-9.26 175.91 175.91 0 0 1 317-56.94l-101.46-4.86a12 12 0 0 0-12.57 12v47.41a12 12 0 0 0 12 12H500a12 12 0 0 0 12-12V12a12 12 0 0 0-12-12h-47.37a12 12 0 0 0-11.98 12.57zM255.83 432a175.61 175.61 0 0 1-146-77.8l101.8 4.87a12 12 0 0 0 12.57-12v-47.4a12 12 0 0 0-12-12H12a12 12 0 0 0-12 12V500a12 12 0 0 0 12 12h47.35a12 12 0 0 0 12-12.6l-4.15-82.57A247.17 247.17 0 0 0 255.83 504c121.11 0 221.93-86.92 243.55-201.82a12 12 0 0 0-11.8-14.18h-49.05a12 12 0 0 0-11.67 9.26A175.86 175.86 0 0 1 255.83 432z\"]\n};\nvar faSyncAlt = {\n  prefix: 'fas',\n  iconName: 'sync-alt',\n  icon: [512, 512, [], \"f2f1\", \"M370.72 133.28C339.458 104.008 298.888 87.962 255.848 88c-77.458.068-144.328 53.178-162.791 126.85-1.344 5.363-6.122 9.15-11.651 9.15H24.103c-7.498 0-13.194-6.807-11.807-14.176C33.933 94.924 134.813 8 256 8c66.448 0 126.791 26.136 171.315 68.685L463.03 40.97C478.149 25.851 504 36.559 504 57.941V192c0 13.255-10.745 24-24 24H345.941c-21.382 0-32.09-25.851-16.971-40.971l41.75-41.749zM32 296h134.059c21.382 0 32.09 25.851 16.971 40.971l-41.75 41.75c31.262 29.273 71.835 45.319 114.876 45.28 77.418-.07 144.315-53.144 162.787-126.849 1.344-5.363 6.122-9.15 11.651-9.15h57.304c7.498 0 13.194 6.807 11.807 14.176C478.067 417.076 377.187 504 256 504c-66.448 0-126.791-26.136-171.315-68.685L48.97 471.03C33.851 486.149 8 475.441 8 454.059V320c0-13.255 10.745-24 24-24z\"]\n};\nvar faSyringe = {\n  prefix: 'fas',\n  iconName: 'syringe',\n  icon: [512, 512, [], \"f48e\", \"M201.5 174.8l55.7 55.8c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-55.7-55.8-45.3 45.3 55.8 55.8c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0L111 265.2l-26.4 26.4c-17.3 17.3-25.6 41.1-23 65.4l7.1 63.6L2.3 487c-3.1 3.1-3.1 8.2 0 11.3l11.3 11.3c3.1 3.1 8.2 3.1 11.3 0l66.3-66.3 63.6 7.1c23.9 2.6 47.9-5.4 65.4-23l181.9-181.9-135.7-135.7-64.9 65zm308.2-93.3L430.5 2.3c-3.1-3.1-8.2-3.1-11.3 0l-11.3 11.3c-3.1 3.1-3.1 8.2 0 11.3l28.3 28.3-45.3 45.3-56.6-56.6-17-17c-3.1-3.1-8.2-3.1-11.3 0l-33.9 33.9c-3.1 3.1-3.1 8.2 0 11.3l17 17L424.8 223l17 17c3.1 3.1 8.2 3.1 11.3 0l33.9-34c3.1-3.1 3.1-8.2 0-11.3l-73.5-73.5 45.3-45.3 28.3 28.3c3.1 3.1 8.2 3.1 11.3 0l11.3-11.3c3.1-3.2 3.1-8.2 0-11.4z\"]\n};\nvar faTable = {\n  prefix: 'fas',\n  iconName: 'table',\n  icon: [512, 512, [], \"f0ce\", \"M464 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM224 416H64v-96h160v96zm0-160H64v-96h160v96zm224 160H288v-96h160v96zm0-160H288v-96h160v96z\"]\n};\nvar faTableTennis = {\n  prefix: 'fas',\n  iconName: 'table-tennis',\n  icon: [512, 512, [], \"f45d\", \"M496.2 296.5C527.7 218.7 512 126.2 449 63.1 365.1-21 229-21 145.1 63.1l-56 56.1 211.5 211.5c46.1-62.1 131.5-77.4 195.6-34.2zm-217.9 79.7L57.9 155.9c-27.3 45.3-21.7 105 17.3 144.1l34.5 34.6L6.7 424c-8.6 7.5-9.1 20.7-1 28.8l53.4 53.5c8 8.1 21.2 7.6 28.7-1L177.1 402l35.7 35.7c19.7 19.7 44.6 30.5 70.3 33.3-7.1-17-11-35.6-11-55.1-.1-13.8 2.5-27 6.2-39.7zM416 320c-53 0-96 43-96 96s43 96 96 96 96-43 96-96-43-96-96-96z\"]\n};\nvar faTablet = {\n  prefix: 'fas',\n  iconName: 'tablet',\n  icon: [448, 512, [], \"f10a\", \"M400 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM224 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faTabletAlt = {\n  prefix: 'fas',\n  iconName: 'tablet-alt',\n  icon: [448, 512, [], \"f3fa\", \"M400 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM224 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm176-108c0 6.6-5.4 12-12 12H60c-6.6 0-12-5.4-12-12V60c0-6.6 5.4-12 12-12h328c6.6 0 12 5.4 12 12v312z\"]\n};\nvar faTablets = {\n  prefix: 'fas',\n  iconName: 'tablets',\n  icon: [640, 512, [], \"f490\", \"M160 192C78.9 192 12.5 250.5.1 326.7c-.8 4.8 3.3 9.3 8.3 9.3h303.3c5 0 9.1-4.5 8.3-9.3C307.5 250.5 241.1 192 160 192zm151.6 176H8.4c-5 0-9.1 4.5-8.3 9.3C12.5 453.5 78.9 512 160 512s147.5-58.5 159.9-134.7c.8-4.8-3.3-9.3-8.3-9.3zM593.4 46.6c-56.5-56.5-144.2-61.4-206.9-16-4 2.9-4.3 8.9-.8 12.3L597 254.3c3.5 3.5 9.5 3.2 12.3-.8 45.5-62.7 40.6-150.4-15.9-206.9zM363 65.7c-3.5-3.5-9.5-3.2-12.3.8-45.4 62.7-40.5 150.4 15.9 206.9 56.5 56.5 144.2 61.4 206.9 15.9 4-2.9 4.3-8.9.8-12.3L363 65.7z\"]\n};\nvar faTachometerAlt = {\n  prefix: 'fas',\n  iconName: 'tachometer-alt',\n  icon: [576, 512, [], \"f3fd\", \"M288 32C128.94 32 0 160.94 0 320c0 52.8 14.25 102.26 39.06 144.8 5.61 9.62 16.3 15.2 27.44 15.2h443c11.14 0 21.83-5.58 27.44-15.2C561.75 422.26 576 372.8 576 320c0-159.06-128.94-288-288-288zm0 64c14.71 0 26.58 10.13 30.32 23.65-1.11 2.26-2.64 4.23-3.45 6.67l-9.22 27.67c-5.13 3.49-10.97 6.01-17.64 6.01-17.67 0-32-14.33-32-32S270.33 96 288 96zM96 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm48-160c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm246.77-72.41l-61.33 184C343.13 347.33 352 364.54 352 384c0 11.72-3.38 22.55-8.88 32H232.88c-5.5-9.45-8.88-20.28-8.88-32 0-33.94 26.5-61.43 59.9-63.59l61.34-184.01c4.17-12.56 17.73-19.45 30.36-15.17 12.57 4.19 19.35 17.79 15.17 30.36zm14.66 57.2l15.52-46.55c3.47-1.29 7.13-2.23 11.05-2.23 17.67 0 32 14.33 32 32s-14.33 32-32 32c-11.38-.01-20.89-6.28-26.57-15.22zM480 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faTag = {\n  prefix: 'fas',\n  iconName: 'tag',\n  icon: [512, 512, [], \"f02b\", \"M0 252.118V48C0 21.49 21.49 0 48 0h204.118a48 48 0 0 1 33.941 14.059l211.882 211.882c18.745 18.745 18.745 49.137 0 67.882L293.823 497.941c-18.745 18.745-49.137 18.745-67.882 0L14.059 286.059A48 48 0 0 1 0 252.118zM112 64c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48z\"]\n};\nvar faTags = {\n  prefix: 'fas',\n  iconName: 'tags',\n  icon: [640, 512, [], \"f02c\", \"M497.941 225.941L286.059 14.059A48 48 0 0 0 252.118 0H48C21.49 0 0 21.49 0 48v204.118a48 48 0 0 0 14.059 33.941l211.882 211.882c18.744 18.745 49.136 18.746 67.882 0l204.118-204.118c18.745-18.745 18.745-49.137 0-67.882zM112 160c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm513.941 133.823L421.823 497.941c-18.745 18.745-49.137 18.745-67.882 0l-.36-.36L527.64 323.522c16.999-16.999 26.36-39.6 26.36-63.64s-9.362-46.641-26.36-63.64L331.397 0h48.721a48 48 0 0 1 33.941 14.059l211.882 211.882c18.745 18.745 18.745 49.137 0 67.882z\"]\n};\nvar faTape = {\n  prefix: 'fas',\n  iconName: 'tape',\n  icon: [640, 512, [], \"f4db\", \"M224 192c-35.3 0-64 28.7-64 64s28.7 64 64 64 64-28.7 64-64-28.7-64-64-64zm400 224H380.6c41.5-40.7 67.4-97.3 67.4-160 0-123.7-100.3-224-224-224S0 132.3 0 256s100.3 224 224 224h400c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm-400-64c-53 0-96-43-96-96s43-96 96-96 96 43 96 96-43 96-96 96z\"]\n};\nvar faTasks = {\n  prefix: 'fas',\n  iconName: 'tasks',\n  icon: [512, 512, [], \"f0ae\", \"M139.61 35.5a12 12 0 0 0-17 0L58.93 98.81l-22.7-22.12a12 12 0 0 0-17 0L3.53 92.41a12 12 0 0 0 0 17l47.59 47.4a12.78 12.78 0 0 0 17.61 0l15.59-15.62L156.52 69a12.09 12.09 0 0 0 .09-17zm0 159.19a12 12 0 0 0-17 0l-63.68 63.72-22.7-22.1a12 12 0 0 0-17 0L3.53 252a12 12 0 0 0 0 17L51 316.5a12.77 12.77 0 0 0 17.6 0l15.7-15.69 72.2-72.22a12 12 0 0 0 .09-16.9zM64 368c-26.49 0-48.59 21.5-48.59 48S37.53 464 64 464a48 48 0 0 0 0-96zm432 16H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faTaxi = {\n  prefix: 'fas',\n  iconName: 'taxi',\n  icon: [512, 512, [], \"f1ba\", \"M462 241.64l-22-84.84c-9.6-35.2-41.6-60.8-76.8-60.8H352V64c0-17.67-14.33-32-32-32H192c-17.67 0-32 14.33-32 32v32h-11.2c-35.2 0-67.2 25.6-76.8 60.8l-22 84.84C21.41 248.04 0 273.47 0 304v48c0 23.63 12.95 44.04 32 55.12V448c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h256v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-40.88c19.05-11.09 32-31.5 32-55.12v-48c0-30.53-21.41-55.96-50-62.36zM96 352c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm20.55-112l17.2-66.36c2.23-8.16 9.59-13.64 15.06-13.64h214.4c5.47 0 12.83 5.48 14.85 12.86L395.45 240h-278.9zM416 352c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faTeeth = {\n  prefix: 'fas',\n  iconName: 'teeth',\n  icon: [640, 512, [], \"f62e\", \"M544 0H96C42.98 0 0 42.98 0 96v320c0 53.02 42.98 96 96 96h448c53.02 0 96-42.98 96-96V96c0-53.02-42.98-96-96-96zM160 368c0 26.51-21.49 48-48 48s-48-21.49-48-48v-64c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v64zm0-128c0 8.84-7.16 16-16 16H80c-8.84 0-16-7.16-16-16v-64c0-26.51 21.49-48 48-48s48 21.49 48 48v64zm144 120c0 30.93-25.07 56-56 56s-56-25.07-56-56v-56c0-8.84 7.16-16 16-16h80c8.84 0 16 7.16 16 16v56zm0-120c0 8.84-7.16 16-16 16h-80c-8.84 0-16-7.16-16-16v-88c0-30.93 25.07-56 56-56s56 25.07 56 56v88zm144 120c0 30.93-25.07 56-56 56s-56-25.07-56-56v-56c0-8.84 7.16-16 16-16h80c8.84 0 16 7.16 16 16v56zm0-120c0 8.84-7.16 16-16 16h-80c-8.84 0-16-7.16-16-16v-88c0-30.93 25.07-56 56-56s56 25.07 56 56v88zm128 128c0 26.51-21.49 48-48 48s-48-21.49-48-48v-64c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v64zm0-128c0 8.84-7.16 16-16 16h-64c-8.84 0-16-7.16-16-16v-64c0-26.51 21.49-48 48-48s48 21.49 48 48v64z\"]\n};\nvar faTeethOpen = {\n  prefix: 'fas',\n  iconName: 'teeth-open',\n  icon: [640, 512, [], \"f62f\", \"M544 0H96C42.98 0 0 42.98 0 96v64c0 35.35 28.66 64 64 64h512c35.34 0 64-28.65 64-64V96c0-53.02-42.98-96-96-96zM160 176c0 8.84-7.16 16-16 16H80c-8.84 0-16-7.16-16-16v-32c0-26.51 21.49-48 48-48s48 21.49 48 48v32zm144 0c0 8.84-7.16 16-16 16h-80c-8.84 0-16-7.16-16-16v-56c0-30.93 25.07-56 56-56s56 25.07 56 56v56zm144 0c0 8.84-7.16 16-16 16h-80c-8.84 0-16-7.16-16-16v-56c0-30.93 25.07-56 56-56s56 25.07 56 56v56zm128 0c0 8.84-7.16 16-16 16h-64c-8.84 0-16-7.16-16-16v-32c0-26.51 21.49-48 48-48s48 21.49 48 48v32zm0 144H64c-35.34 0-64 28.65-64 64v32c0 53.02 42.98 96 96 96h448c53.02 0 96-42.98 96-96v-32c0-35.35-28.66-64-64-64zm-416 80c0 26.51-21.49 48-48 48s-48-21.49-48-48v-32c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v32zm144-8c0 30.93-25.07 56-56 56s-56-25.07-56-56v-24c0-8.84 7.16-16 16-16h80c8.84 0 16 7.16 16 16v24zm144 0c0 30.93-25.07 56-56 56s-56-25.07-56-56v-24c0-8.84 7.16-16 16-16h80c8.84 0 16 7.16 16 16v24zm128 8c0 26.51-21.49 48-48 48s-48-21.49-48-48v-32c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v32z\"]\n};\nvar faTemperatureHigh = {\n  prefix: 'fas',\n  iconName: 'temperature-high',\n  icon: [512, 512, [], \"f769\", \"M416 0c-52.9 0-96 43.1-96 96s43.1 96 96 96 96-43.1 96-96-43.1-96-96-96zm0 128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm-160-16C256 50.1 205.9 0 144 0S32 50.1 32 112v166.5C12.3 303.2 0 334 0 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-34-12.3-64.9-32-89.5V112zM144 448c-44.1 0-80-35.9-80-80 0-25.5 12.2-48.9 32-63.8V112c0-26.5 21.5-48 48-48s48 21.5 48 48v192.2c19.8 14.8 32 38.3 32 63.8 0 44.1-35.9 80-80 80zm16-125.1V112c0-8.8-7.2-16-16-16s-16 7.2-16 16v210.9c-18.6 6.6-32 24.2-32 45.1 0 26.5 21.5 48 48 48s48-21.5 48-48c0-20.9-13.4-38.5-32-45.1z\"]\n};\nvar faTemperatureLow = {\n  prefix: 'fas',\n  iconName: 'temperature-low',\n  icon: [512, 512, [], \"f76b\", \"M416 0c-52.9 0-96 43.1-96 96s43.1 96 96 96 96-43.1 96-96-43.1-96-96-96zm0 128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm-160-16C256 50.1 205.9 0 144 0S32 50.1 32 112v166.5C12.3 303.2 0 334 0 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-34-12.3-64.9-32-89.5V112zM144 448c-44.1 0-80-35.9-80-80 0-25.5 12.2-48.9 32-63.8V112c0-26.5 21.5-48 48-48s48 21.5 48 48v192.2c19.8 14.8 32 38.3 32 63.8 0 44.1-35.9 80-80 80zm16-125.1V304c0-8.8-7.2-16-16-16s-16 7.2-16 16v18.9c-18.6 6.6-32 24.2-32 45.1 0 26.5 21.5 48 48 48s48-21.5 48-48c0-20.9-13.4-38.5-32-45.1z\"]\n};\nvar faTenge = {\n  prefix: 'fas',\n  iconName: 'tenge',\n  icon: [384, 512, [], \"f7d7\", \"M372 160H12c-6.6 0-12 5.4-12 12v56c0 6.6 5.4 12 12 12h140v228c0 6.6 5.4 12 12 12h56c6.6 0 12-5.4 12-12V240h140c6.6 0 12-5.4 12-12v-56c0-6.6-5.4-12-12-12zm0-128H12C5.4 32 0 37.4 0 44v56c0 6.6 5.4 12 12 12h360c6.6 0 12-5.4 12-12V44c0-6.6-5.4-12-12-12z\"]\n};\nvar faTerminal = {\n  prefix: 'fas',\n  iconName: 'terminal',\n  icon: [640, 512, [], \"f120\", \"M257.981 272.971L63.638 467.314c-9.373 9.373-24.569 9.373-33.941 0L7.029 444.647c-9.357-9.357-9.375-24.522-.04-33.901L161.011 256 6.99 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L257.981 239.03c9.373 9.372 9.373 24.568 0 33.941zM640 456v-32c0-13.255-10.745-24-24-24H312c-13.255 0-24 10.745-24 24v32c0 13.255 10.745 24 24 24h304c13.255 0 24-10.745 24-24z\"]\n};\nvar faTextHeight = {\n  prefix: 'fas',\n  iconName: 'text-height',\n  icon: [576, 512, [], \"f034\", \"M304 32H16A16 16 0 0 0 0 48v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32h56v304H80a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h160a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-40V112h56v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm256 336h-48V144h48c14.31 0 21.33-17.31 11.31-27.31l-80-80a16 16 0 0 0-22.62 0l-80 80C379.36 126 384.36 144 400 144h48v224h-48c-14.31 0-21.32 17.31-11.31 27.31l80 80a16 16 0 0 0 22.62 0l80-80C580.64 386 575.64 368 560 368z\"]\n};\nvar faTextWidth = {\n  prefix: 'fas',\n  iconName: 'text-width',\n  icon: [448, 512, [], \"f035\", \"M432 32H16A16 16 0 0 0 0 48v80a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-16h120v112h-24a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-24V112h120v16a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm-68.69 260.69C354 283.36 336 288.36 336 304v48H112v-48c0-14.31-17.31-21.32-27.31-11.31l-80 80a16 16 0 0 0 0 22.62l80 80C94 484.64 112 479.64 112 464v-48h224v48c0 14.31 17.31 21.33 27.31 11.31l80-80a16 16 0 0 0 0-22.62z\"]\n};\nvar faTh = {\n  prefix: 'fas',\n  iconName: 'th',\n  icon: [512, 512, [], \"f00a\", \"M149.333 56v80c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24V56c0-13.255 10.745-24 24-24h101.333c13.255 0 24 10.745 24 24zm181.334 240v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.256 0 24.001-10.745 24.001-24zm32-240v80c0 13.255 10.745 24 24 24H488c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24zm-32 80V56c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.256 0 24.001-10.745 24.001-24zm-205.334 56H24c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24zM0 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H24c-13.255 0-24 10.745-24 24zm386.667-56H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24zm0 160H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24zM181.333 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24z\"]\n};\nvar faThLarge = {\n  prefix: 'fas',\n  iconName: 'th-large',\n  icon: [512, 512, [], \"f009\", \"M296 32h192c13.255 0 24 10.745 24 24v160c0 13.255-10.745 24-24 24H296c-13.255 0-24-10.745-24-24V56c0-13.255 10.745-24 24-24zm-80 0H24C10.745 32 0 42.745 0 56v160c0 13.255 10.745 24 24 24h192c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24zM0 296v160c0 13.255 10.745 24 24 24h192c13.255 0 24-10.745 24-24V296c0-13.255-10.745-24-24-24H24c-13.255 0-24 10.745-24 24zm296 184h192c13.255 0 24-10.745 24-24V296c0-13.255-10.745-24-24-24H296c-13.255 0-24 10.745-24 24v160c0 13.255 10.745 24 24 24z\"]\n};\nvar faThList = {\n  prefix: 'fas',\n  iconName: 'th-list',\n  icon: [512, 512, [], \"f00b\", \"M149.333 216v80c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24v-80c0-13.255 10.745-24 24-24h101.333c13.255 0 24 10.745 24 24zM0 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H24c-13.255 0-24 10.745-24 24zM125.333 32H24C10.745 32 0 42.745 0 56v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24zm80 448H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24zm-24-424v80c0 13.255 10.745 24 24 24H488c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24zm24 264H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24z\"]\n};\nvar faTheaterMasks = {\n  prefix: 'fas',\n  iconName: 'theater-masks',\n  icon: [640, 512, [], \"f630\", \"M206.86 245.15c-35.88 10.45-59.95 41.2-57.53 74.1 11.4-12.72 28.81-23.7 49.9-30.92l7.63-43.18zM95.81 295L64.08 115.49c-.29-1.62.28-2.62.24-2.65 57.76-32.06 123.12-49.01 189.01-49.01 1.61 0 3.23.17 4.85.19 13.95-13.47 31.73-22.83 51.59-26 18.89-3.02 38.05-4.55 57.18-5.32-9.99-13.95-24.48-24.23-41.77-27C301.27 1.89 277.24 0 253.32 0 176.66 0 101.02 19.42 33.2 57.06 9.03 70.48-3.92 98.48 1.05 126.58l31.73 179.51c14.23 80.52 136.33 142.08 204.45 142.08 3.59 0 6.75-.46 10.01-.8-13.52-17.08-28.94-40.48-39.5-67.58-47.61-12.98-106.06-51.62-111.93-84.79zm97.55-137.46c-.73-4.12-2.23-7.87-4.07-11.4-8.25 8.91-20.67 15.75-35.32 18.32-14.65 2.58-28.67.4-39.48-5.17-.52 3.94-.64 7.98.09 12.1 3.84 21.7 24.58 36.19 46.34 32.37 21.75-3.82 36.28-24.52 32.44-46.22zM606.8 120.9c-88.98-49.38-191.43-67.41-291.98-51.35-27.31 4.36-49.08 26.26-54.04 54.36l-31.73 179.51c-15.39 87.05 95.28 196.27 158.31 207.35 63.03 11.09 204.47-53.79 219.86-140.84l31.73-179.51c4.97-28.11-7.98-56.11-32.15-69.52zm-273.24 96.8c3.84-21.7 24.58-36.19 46.34-32.36 21.76 3.83 36.28 24.52 32.45 46.22-.73 4.12-2.23 7.87-4.07 11.4-8.25-8.91-20.67-15.75-35.32-18.32-14.65-2.58-28.67-.4-39.48 5.17-.53-3.95-.65-7.99.08-12.11zm70.47 198.76c-55.68-9.79-93.52-59.27-89.04-112.9 20.6 25.54 56.21 46.17 99.49 53.78 43.28 7.61 83.82.37 111.93-16.6-14.18 51.94-66.71 85.51-122.38 75.72zm130.3-151.34c-8.25-8.91-20.68-15.75-35.33-18.32-14.65-2.58-28.67-.4-39.48 5.17-.52-3.94-.64-7.98.09-12.1 3.84-21.7 24.58-36.19 46.34-32.37 21.75 3.83 36.28 24.52 32.45 46.22-.73 4.13-2.23 7.88-4.07 11.4z\"]\n};\nvar faThermometer = {\n  prefix: 'fas',\n  iconName: 'thermometer',\n  icon: [512, 512, [], \"f491\", \"M476.8 20.4c-37.5-30.7-95.5-26.3-131.9 10.2l-45.7 46 50.5 50.5c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-50.4-50.5-45.1 45.4 50.3 50.4c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0L209 167.4l-45.1 45.4L214 263c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-50.1-50.2L96 281.1V382L7 471c-9.4 9.4-9.4 24.6 0 33.9 9.4 9.4 24.6 9.4 33.9 0l89-89h99.9L484 162.6c34.9-34.9 42.2-101.5-7.2-142.2z\"]\n};\nvar faThermometerEmpty = {\n  prefix: 'fas',\n  iconName: 'thermometer-empty',\n  icon: [256, 512, [], \"f2cb\", \"M192 384c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-35.346 28.654-64 64-64s64 28.654 64 64zm32-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.303 128-128 128-.299 0-.609-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.755 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM208 384c0-34.339-19.37-52.19-32-66.502V96c0-26.467-21.533-48-48-48S80 69.533 80 96v221.498c-12.732 14.428-31.825 32.1-31.999 66.08-.224 43.876 35.563 80.116 79.423 80.42L128 464c44.112 0 80-35.888 80-80z\"]\n};\nvar faThermometerFull = {\n  prefix: 'fas',\n  iconName: 'thermometer-full',\n  icon: [256, 512, [], \"f2c7\", \"M224 96c0-53.019-42.981-96-96-96S32 42.981 32 96v203.347C12.225 321.756.166 351.136.002 383.333c-.359 70.303 56.787 128.176 127.089 128.664.299.002.61.003.909.003 70.698 0 128-57.304 128-128 0-32.459-12.088-62.09-32-84.653V96zm-96 368l-.576-.002c-43.86-.304-79.647-36.544-79.423-80.42.173-33.98 19.266-51.652 31.999-66.08V96c0-26.467 21.533-48 48-48s48 21.533 48 48v221.498c12.63 14.312 32 32.164 32 66.502 0 44.112-35.888 80-80 80zm64-80c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-23.685 12.876-44.349 32-55.417V96c0-17.673 14.327-32 32-32s32 14.327 32 32v232.583c19.124 11.068 32 31.732 32 55.417z\"]\n};\nvar faThermometerHalf = {\n  prefix: 'fas',\n  iconName: 'thermometer-half',\n  icon: [256, 512, [], \"f2c9\", \"M192 384c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-23.685 12.876-44.349 32-55.417V224c0-17.673 14.327-32 32-32s32 14.327 32 32v104.583c19.124 11.068 32 31.732 32 55.417zm32-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.303 128-128 128-.299 0-.609-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.755 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM208 384c0-34.339-19.37-52.19-32-66.502V96c0-26.467-21.533-48-48-48S80 69.533 80 96v221.498c-12.732 14.428-31.825 32.1-31.999 66.08-.224 43.876 35.563 80.116 79.423 80.42L128 464c44.112 0 80-35.888 80-80z\"]\n};\nvar faThermometerQuarter = {\n  prefix: 'fas',\n  iconName: 'thermometer-quarter',\n  icon: [256, 512, [], \"f2ca\", \"M192 384c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-23.685 12.876-44.349 32-55.417V288c0-17.673 14.327-32 32-32s32 14.327 32 32v40.583c19.124 11.068 32 31.732 32 55.417zm32-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.303 128-128 128-.299 0-.609-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.755 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM208 384c0-34.339-19.37-52.19-32-66.502V96c0-26.467-21.533-48-48-48S80 69.533 80 96v221.498c-12.732 14.428-31.825 32.1-31.999 66.08-.224 43.876 35.563 80.116 79.423 80.42L128 464c44.112 0 80-35.888 80-80z\"]\n};\nvar faThermometerThreeQuarters = {\n  prefix: 'fas',\n  iconName: 'thermometer-three-quarters',\n  icon: [256, 512, [], \"f2c8\", \"M192 384c0 35.346-28.654 64-64 64-35.346 0-64-28.654-64-64 0-23.685 12.876-44.349 32-55.417V160c0-17.673 14.327-32 32-32s32 14.327 32 32v168.583c19.124 11.068 32 31.732 32 55.417zm32-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.303 128-128 128-.299 0-.609-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.755 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM208 384c0-34.339-19.37-52.19-32-66.502V96c0-26.467-21.533-48-48-48S80 69.533 80 96v221.498c-12.732 14.428-31.825 32.1-31.999 66.08-.224 43.876 35.563 80.116 79.423 80.42L128 464c44.112 0 80-35.888 80-80z\"]\n};\nvar faThumbsDown = {\n  prefix: 'fas',\n  iconName: 'thumbs-down',\n  icon: [512, 512, [], \"f165\", \"M0 56v240c0 13.255 10.745 24 24 24h80c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24H24C10.745 32 0 42.745 0 56zm40 200c0-13.255 10.745-24 24-24s24 10.745 24 24-10.745 24-24 24-24-10.745-24-24zm272 256c-20.183 0-29.485-39.293-33.931-57.795-5.206-21.666-10.589-44.07-25.393-58.902-32.469-32.524-49.503-73.967-89.117-113.111a11.98 11.98 0 0 1-3.558-8.521V59.901c0-6.541 5.243-11.878 11.783-11.998 15.831-.29 36.694-9.079 52.651-16.178C256.189 17.598 295.709.017 343.995 0h2.844c42.777 0 93.363.413 113.774 29.737 8.392 12.057 10.446 27.034 6.148 44.632 16.312 17.053 25.063 48.863 16.382 74.757 17.544 23.432 19.143 56.132 9.308 79.469l.11.11c11.893 11.949 19.523 31.259 19.439 49.197-.156 30.352-26.157 58.098-59.553 58.098H350.723C358.03 364.34 384 388.132 384 430.548 384 504 336 512 312 512z\"]\n};\nvar faThumbsUp = {\n  prefix: 'fas',\n  iconName: 'thumbs-up',\n  icon: [512, 512, [], \"f164\", \"M104 224H24c-13.255 0-24 10.745-24 24v240c0 13.255 10.745 24 24 24h80c13.255 0 24-10.745 24-24V248c0-13.255-10.745-24-24-24zM64 472c-13.255 0-24-10.745-24-24s10.745-24 24-24 24 10.745 24 24-10.745 24-24 24zM384 81.452c0 42.416-25.97 66.208-33.277 94.548h101.723c33.397 0 59.397 27.746 59.553 58.098.084 17.938-7.546 37.249-19.439 49.197l-.11.11c9.836 23.337 8.237 56.037-9.308 79.469 8.681 25.895-.069 57.704-16.382 74.757 4.298 17.598 2.244 32.575-6.148 44.632C440.202 511.587 389.616 512 346.839 512l-2.845-.001c-48.287-.017-87.806-17.598-119.56-31.725-15.957-7.099-36.821-15.887-52.651-16.178-6.54-.12-11.783-5.457-11.783-11.998v-213.77c0-3.2 1.282-6.271 3.558-8.521 39.614-39.144 56.648-80.587 89.117-113.111 14.804-14.832 20.188-37.236 25.393-58.902C282.515 39.293 291.817 0 312 0c24 0 72 8 72 81.452z\"]\n};\nvar faThumbtack = {\n  prefix: 'fas',\n  iconName: 'thumbtack',\n  icon: [384, 512, [], \"f08d\", \"M298.028 214.267L285.793 96H328c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24H56C42.745 0 32 10.745 32 24v48c0 13.255 10.745 24 24 24h42.207L85.972 214.267C37.465 236.82 0 277.261 0 328c0 13.255 10.745 24 24 24h136v104.007c0 1.242.289 2.467.845 3.578l24 48c2.941 5.882 11.364 5.893 14.311 0l24-48a8.008 8.008 0 0 0 .845-3.578V352h136c13.255 0 24-10.745 24-24-.001-51.183-37.983-91.42-85.973-113.733z\"]\n};\nvar faTicketAlt = {\n  prefix: 'fas',\n  iconName: 'ticket-alt',\n  icon: [576, 512, [], \"f3ff\", \"M128 160h320v192H128V160zm400 96c0 26.51 21.49 48 48 48v96c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48v-96c26.51 0 48-21.49 48-48s-21.49-48-48-48v-96c0-26.51 21.49-48 48-48h480c26.51 0 48 21.49 48 48v96c-26.51 0-48 21.49-48 48zm-48-104c0-13.255-10.745-24-24-24H120c-13.255 0-24 10.745-24 24v208c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V152z\"]\n};\nvar faTimes = {\n  prefix: 'fas',\n  iconName: 'times',\n  icon: [352, 512, [], \"f00d\", \"M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z\"]\n};\nvar faTimesCircle = {\n  prefix: 'fas',\n  iconName: 'times-circle',\n  icon: [512, 512, [], \"f057\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm121.6 313.1c4.7 4.7 4.7 12.3 0 17L338 377.6c-4.7 4.7-12.3 4.7-17 0L256 312l-65.1 65.6c-4.7 4.7-12.3 4.7-17 0L134.4 338c-4.7-4.7-4.7-12.3 0-17l65.6-65-65.6-65.1c-4.7-4.7-4.7-12.3 0-17l39.6-39.6c4.7-4.7 12.3-4.7 17 0l65 65.7 65.1-65.6c4.7-4.7 12.3-4.7 17 0l39.6 39.6c4.7 4.7 4.7 12.3 0 17L312 256l65.6 65.1z\"]\n};\nvar faTint = {\n  prefix: 'fas',\n  iconName: 'tint',\n  icon: [352, 512, [], \"f043\", \"M205.22 22.09c-7.94-28.78-49.44-30.12-58.44 0C100.01 179.85 0 222.72 0 333.91 0 432.35 78.72 512 176 512s176-79.65 176-178.09c0-111.75-99.79-153.34-146.78-311.82zM176 448c-61.75 0-112-50.25-112-112 0-8.84 7.16-16 16-16s16 7.16 16 16c0 44.11 35.89 80 80 80 8.84 0 16 7.16 16 16s-7.16 16-16 16z\"]\n};\nvar faTintSlash = {\n  prefix: 'fas',\n  iconName: 'tint-slash',\n  icon: [640, 512, [], \"f5c7\", \"M633.82 458.1L494.97 350.78c.52-5.57 1.03-11.16 1.03-16.87 0-111.76-99.79-153.34-146.78-311.82-7.94-28.78-49.44-30.12-58.44 0-15.52 52.34-36.87 91.96-58.49 125.68L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.36 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.41-6.97 4.16-17.02-2.82-22.45zM144 333.91C144 432.35 222.72 512 320 512c44.71 0 85.37-16.96 116.4-44.7L162.72 255.78c-11.41 23.5-18.72 48.35-18.72 78.13z\"]\n};\nvar faTired = {\n  prefix: 'fas',\n  iconName: 'tired',\n  icon: [496, 512, [], \"f5c8\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm33.8 189.7l80-48c11.6-6.9 24 7.7 15.4 18L343.6 208l33.6 40.3c8.7 10.4-3.9 24.8-15.4 18l-80-48c-7.7-4.7-7.7-15.9 0-20.6zm-163-30c-8.6-10.3 3.8-24.9 15.4-18l80 48c7.8 4.7 7.8 15.9 0 20.6l-80 48c-11.5 6.8-24-7.6-15.4-18l33.6-40.3-33.6-40.3zM248 288c51.9 0 115.3 43.8 123.2 106.7 1.7 13.6-8 24.6-17.7 20.4-25.9-11.1-64.4-17.4-105.5-17.4s-79.6 6.3-105.5 17.4c-9.8 4.2-19.4-7-17.7-20.4C132.7 331.8 196.1 288 248 288z\"]\n};\nvar faToggleOff = {\n  prefix: 'fas',\n  iconName: 'toggle-off',\n  icon: [576, 512, [], \"f204\", \"M384 64H192C85.961 64 0 149.961 0 256s85.961 192 192 192h192c106.039 0 192-85.961 192-192S490.039 64 384 64zM64 256c0-70.741 57.249-128 128-128 70.741 0 128 57.249 128 128 0 70.741-57.249 128-128 128-70.741 0-128-57.249-128-128zm320 128h-48.905c65.217-72.858 65.236-183.12 0-256H384c70.741 0 128 57.249 128 128 0 70.74-57.249 128-128 128z\"]\n};\nvar faToggleOn = {\n  prefix: 'fas',\n  iconName: 'toggle-on',\n  icon: [576, 512, [], \"f205\", \"M384 64H192C86 64 0 150 0 256s86 192 192 192h192c106 0 192-86 192-192S490 64 384 64zm0 320c-70.8 0-128-57.3-128-128 0-70.8 57.3-128 128-128 70.8 0 128 57.3 128 128 0 70.8-57.3 128-128 128z\"]\n};\nvar faToilet = {\n  prefix: 'fas',\n  iconName: 'toilet',\n  icon: [384, 512, [], \"f7d8\", \"M368 48c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16H16C7.2 0 0 7.2 0 16v16c0 8.8 7.2 16 16 16h16v156.7C11.8 214.8 0 226.9 0 240c0 67.2 34.6 126.2 86.8 160.5l-21.4 70.2C59.1 491.2 74.5 512 96 512h192c21.5 0 36.9-20.8 30.6-41.3l-21.4-70.2C349.4 366.2 384 307.2 384 240c0-13.1-11.8-25.2-32-35.3V48h16zM80 72c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H88c-4.4 0-8-3.6-8-8V72zm112 200c-77.1 0-139.6-14.3-139.6-32s62.5-32 139.6-32 139.6 14.3 139.6 32-62.5 32-139.6 32z\"]\n};\nvar faToiletPaper = {\n  prefix: 'fas',\n  iconName: 'toilet-paper',\n  icon: [576, 512, [], \"f71e\", \"M128 0C74.98 0 32 85.96 32 192v172.07c0 41.12-9.8 62.77-31.17 126.87C-2.62 501.3 5.09 512 16.01 512h280.92c13.77 0 26-8.81 30.36-21.88 12.83-38.48 24.71-72.4 24.71-126.05V192c0-83.6 23.67-153.52 60.44-192H128zM96 224c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zm64 0c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zm64 0c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zm64 0c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zM480 0c-53.02 0-96 85.96-96 192s42.98 192 96 192 96-85.96 96-192S533.02 0 480 0zm0 256c-17.67 0-32-28.65-32-64s14.33-64 32-64 32 28.65 32 64-14.33 64-32 64z\"]\n};\nvar faToiletPaperSlash = {\n  prefix: 'fas',\n  iconName: 'toilet-paper-slash',\n  icon: [640, 512, [], \"e072\", \"M64,192V364.13c0,41.12-9.75,62.75-31.12,126.87A16,16,0,0,0,48,512H328.86a31.87,31.87,0,0,0,30.38-21.87c9.31-27.83,18-53.35,22.18-85.55l-316-244.25C64.53,170.66,64,181.19,64,192ZM633.82,458.09l-102-78.81C575.28,360.91,608,284.32,608,192,608,86,565,0,512,0s-96,86-96,192c0,42,7,80.4,18.43,112L384,265V192c0-83.62,23.63-153.5,60.5-192H160c-23.33,0-44.63,16.83-61.26,44.53L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.45A16,16,0,0,0,6.18,53.91L594.54,508.63A16,16,0,0,0,617,505.81l19.64-25.26A16,16,0,0,0,633.82,458.09ZM512,256c-17.63,0-32-28.62-32-64s14.37-64,32-64,32,28.63,32,64S529.62,256,512,256Z\"]\n};\nvar faToolbox = {\n  prefix: 'fas',\n  iconName: 'toolbox',\n  icon: [512, 512, [], \"f552\", \"M502.63 214.63l-45.25-45.25c-6-6-14.14-9.37-22.63-9.37H384V80c0-26.51-21.49-48-48-48H176c-26.51 0-48 21.49-48 48v80H77.25c-8.49 0-16.62 3.37-22.63 9.37L9.37 214.63c-6 6-9.37 14.14-9.37 22.63V320h128v-16c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v16h128v-16c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v16h128v-82.75c0-8.48-3.37-16.62-9.37-22.62zM320 160H192V96h128v64zm64 208c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-16H192v16c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-16H0v96c0 17.67 14.33 32 32 32h448c17.67 0 32-14.33 32-32v-96H384v16z\"]\n};\nvar faTools = {\n  prefix: 'fas',\n  iconName: 'tools',\n  icon: [512, 512, [], \"f7d9\", \"M501.1 395.7L384 278.6c-23.1-23.1-57.6-27.6-85.4-13.9L192 158.1V96L64 0 0 64l96 128h62.1l106.6 106.6c-13.6 27.8-9.2 62.3 13.9 85.4l117.1 117.1c14.6 14.6 38.2 14.6 52.7 0l52.7-52.7c14.5-14.6 14.5-38.2 0-52.7zM331.7 225c28.3 0 54.9 11 74.9 31l19.4 19.4c15.8-6.9 30.8-16.5 43.8-29.5 37.1-37.1 49.7-89.3 37.9-136.7-2.2-9-13.5-12.1-20.1-5.5l-74.4 74.4-67.9-11.3L334 98.9l74.4-74.4c6.6-6.6 3.4-17.9-5.7-20.2-47.4-11.7-99.6.9-136.6 37.9-28.5 28.5-41.9 66.1-41.2 103.6l82.1 82.1c8.1-1.9 16.5-2.9 24.7-2.9zm-103.9 82l-56.7-56.7L18.7 402.8c-25 25-25 65.5 0 90.5s65.5 25 90.5 0l123.6-123.6c-7.6-19.9-9.9-41.6-5-62.7zM64 472c-13.2 0-24-10.8-24-24 0-13.3 10.7-24 24-24s24 10.7 24 24c0 13.2-10.7 24-24 24z\"]\n};\nvar faTooth = {\n  prefix: 'fas',\n  iconName: 'tooth',\n  icon: [448, 512, [], \"f5c9\", \"M443.98 96.25c-11.01-45.22-47.11-82.06-92.01-93.72-32.19-8.36-63 5.1-89.14 24.33-3.25 2.39-6.96 3.73-10.5 5.48l28.32 18.21c7.42 4.77 9.58 14.67 4.8 22.11-4.46 6.95-14.27 9.86-22.11 4.8L162.83 12.84c-20.7-10.85-43.38-16.4-66.81-10.31-44.9 11.67-81 48.5-92.01 93.72-10.13 41.62-.42 80.81 21.5 110.43 23.36 31.57 32.68 68.66 36.29 107.35 4.4 47.16 10.33 94.16 20.94 140.32l7.8 33.95c3.19 13.87 15.49 23.7 29.67 23.7 13.97 0 26.15-9.55 29.54-23.16l34.47-138.42c4.56-18.32 20.96-31.16 39.76-31.16s35.2 12.85 39.76 31.16l34.47 138.42c3.39 13.61 15.57 23.16 29.54 23.16 14.18 0 26.48-9.83 29.67-23.7l7.8-33.95c10.61-46.15 16.53-93.16 20.94-140.32 3.61-38.7 12.93-75.78 36.29-107.35 21.95-29.61 31.66-68.8 21.53-110.43z\"]\n};\nvar faTorah = {\n  prefix: 'fas',\n  iconName: 'torah',\n  icon: [640, 512, [], \"f6a0\", \"M320.05 366.48l17.72-29.64h-35.46zm99.21-166H382.4l18.46 30.82zM48 0C21.49 0 0 14.33 0 32v448c0 17.67 21.49 32 48 32s48-14.33 48-32V32C96 14.33 74.51 0 48 0zm172.74 311.5h36.85l-18.46-30.82zm161.71 0h36.86l-18.45-30.8zM128 464h384V48H128zm66.77-278.13a21.22 21.22 0 0 1 18.48-10.71h59.45l29.13-48.71a21.13 21.13 0 0 1 18.22-10.37A20.76 20.76 0 0 1 338 126.29l29.25 48.86h59.52a21.12 21.12 0 0 1 18.1 32L415.63 256 445 305a20.69 20.69 0 0 1 .24 21.12 21.25 21.25 0 0 1-18.48 10.72h-59.47l-29.13 48.7a21.13 21.13 0 0 1-18.16 10.4 20.79 20.79 0 0 1-18-10.22l-29.25-48.88h-59.5a21.11 21.11 0 0 1-18.1-32L224.36 256 195 207a20.7 20.7 0 0 1-.23-21.13zM592 0c-26.51 0-48 14.33-48 32v448c0 17.67 21.49 32 48 32s48-14.33 48-32V32c0-17.67-21.49-32-48-32zM320 145.53l-17.78 29.62h35.46zm-62.45 55h-36.81l18.44 30.8zm29.58 111h65.79L386.09 256l-33.23-55.52h-65.79L253.9 256z\"]\n};\nvar faToriiGate = {\n  prefix: 'fas',\n  iconName: 'torii-gate',\n  icon: [512, 512, [], \"f6a1\", \"M376.45 32h-240.9A303.17 303.17 0 0 1 0 0v96c0 17.67 14.33 32 32 32h32v64H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h48v240c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V256h256v240c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V256h48c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16h-48v-64h32c17.67 0 32-14.33 32-32V0a303.17 303.17 0 0 1-135.55 32zM128 128h96v64h-96v-64zm256 64h-96v-64h96v64z\"]\n};\nvar faTractor = {\n  prefix: 'fas',\n  iconName: 'tractor',\n  icon: [640, 512, [], \"f722\", \"M528 336c-48.6 0-88 39.4-88 88s39.4 88 88 88 88-39.4 88-88-39.4-88-88-88zm0 112c-13.23 0-24-10.77-24-24s10.77-24 24-24 24 10.77 24 24-10.77 24-24 24zm80-288h-64v-40.2c0-14.12 4.7-27.76 13.15-38.84 4.42-5.8 3.55-14.06-1.32-19.49L534.2 37.3c-6.66-7.45-18.32-6.92-24.7.78C490.58 60.9 480 89.81 480 119.8V160H377.67L321.58 29.14A47.914 47.914 0 0 0 277.45 0H144c-26.47 0-48 21.53-48 48v146.52c-8.63-6.73-20.96-6.46-28.89 1.47L36 227.1c-8.59 8.59-8.59 22.52 0 31.11l5.06 5.06c-4.99 9.26-8.96 18.82-11.91 28.72H22c-12.15 0-22 9.85-22 22v44c0 12.15 9.85 22 22 22h7.14c2.96 9.91 6.92 19.46 11.91 28.73l-5.06 5.06c-8.59 8.59-8.59 22.52 0 31.11L67.1 476c8.59 8.59 22.52 8.59 31.11 0l5.06-5.06c9.26 4.99 18.82 8.96 28.72 11.91V490c0 12.15 9.85 22 22 22h44c12.15 0 22-9.85 22-22v-7.14c9.9-2.95 19.46-6.92 28.72-11.91l5.06 5.06c8.59 8.59 22.52 8.59 31.11 0l31.11-31.11c8.59-8.59 8.59-22.52 0-31.11l-5.06-5.06c4.99-9.26 8.96-18.82 11.91-28.72H330c12.15 0 22-9.85 22-22v-6h80.54c21.91-28.99 56.32-48 95.46-48 18.64 0 36.07 4.61 51.8 12.2l50.82-50.82c6-6 9.37-14.14 9.37-22.63V192c.01-17.67-14.32-32-31.99-32zM176 416c-44.18 0-80-35.82-80-80s35.82-80 80-80 80 35.82 80 80-35.82 80-80 80zm22-256h-38V64h106.89l41.15 96H198z\"]\n};\nvar faTrademark = {\n  prefix: 'fas',\n  iconName: 'trademark',\n  icon: [640, 512, [], \"f25c\", \"M260.6 96H12c-6.6 0-12 5.4-12 12v43.1c0 6.6 5.4 12 12 12h85.1V404c0 6.6 5.4 12 12 12h54.3c6.6 0 12-5.4 12-12V163.1h85.1c6.6 0 12-5.4 12-12V108c.1-6.6-5.3-12-11.9-12zM640 403l-24-296c-.5-6.2-5.7-11-12-11h-65.4c-5.1 0-9.7 3.3-11.3 8.1l-43.8 127.1c-7.2 20.6-16.1 52.8-16.1 52.8h-.9s-8.9-32.2-16.1-52.8l-43.8-127.1c-1.7-4.8-6.2-8.1-11.3-8.1h-65.4c-6.2 0-11.4 4.8-12 11l-24.4 296c-.6 7 4.9 13 12 13H360c6.3 0 11.5-4.9 12-11.2l9.1-132.9c1.8-24.2 0-53.7 0-53.7h.9s10.7 33.6 17.9 53.7l30.7 84.7c1.7 4.7 6.2 7.9 11.3 7.9h50.3c5.1 0 9.6-3.2 11.3-7.9l30.7-84.7c7.2-20.1 17.9-53.7 17.9-53.7h.9s-1.8 29.5 0 53.7l9.1 132.9c.4 6.3 5.7 11.2 12 11.2H628c7 0 12.5-6 12-13z\"]\n};\nvar faTrafficLight = {\n  prefix: 'fas',\n  iconName: 'traffic-light',\n  icon: [384, 512, [], \"f637\", \"M384 192h-64v-37.88c37.2-13.22 64-48.38 64-90.12h-64V32c0-17.67-14.33-32-32-32H96C78.33 0 64 14.33 64 32v32H0c0 41.74 26.8 76.9 64 90.12V192H0c0 41.74 26.8 76.9 64 90.12V320H0c0 42.84 28.25 78.69 66.99 91.05C79.42 468.72 130.6 512 192 512s112.58-43.28 125.01-100.95C355.75 398.69 384 362.84 384 320h-64v-37.88c37.2-13.22 64-48.38 64-90.12zM192 416c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm0-128c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm0-128c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48z\"]\n};\nvar faTrailer = {\n  prefix: 'fas',\n  iconName: 'trailer',\n  icon: [640, 512, [], \"e041\", \"M624,320H544V80a16,16,0,0,0-16-16H16A16,16,0,0,0,0,80V368a16,16,0,0,0,16,16H65.61c7.83-54.21,54-96,110.39-96s102.56,41.79,110.39,96H624a16,16,0,0,0,16-16V336A16,16,0,0,0,624,320ZM96,243.68a176.29,176.29,0,0,0-32,20.71V136a8,8,0,0,1,8-8H88a8,8,0,0,1,8,8Zm96-18.54c-5.31-.49-10.57-1.14-16-1.14s-10.69.65-16,1.14V136a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8Zm96,39.25a176.29,176.29,0,0,0-32-20.71V136a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8ZM384,320H352V136a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8Zm96,0H448V136a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8Zm-304,0a80,80,0,1,0,80,80A80,80,0,0,0,176,320Zm0,112a32,32,0,1,1,32-32A32,32,0,0,1,176,432Z\"]\n};\nvar faTrain = {\n  prefix: 'fas',\n  iconName: 'train',\n  icon: [448, 512, [], \"f238\", \"M448 96v256c0 51.815-61.624 96-130.022 96l62.98 49.721C386.905 502.417 383.562 512 376 512H72c-7.578 0-10.892-9.594-4.957-14.279L130.022 448C61.82 448 0 403.954 0 352V96C0 42.981 64 0 128 0h192c65 0 128 42.981 128 96zm-48 136V120c0-13.255-10.745-24-24-24H72c-13.255 0-24 10.745-24 24v112c0 13.255 10.745 24 24 24h304c13.255 0 24-10.745 24-24zm-176 64c-30.928 0-56 25.072-56 56s25.072 56 56 56 56-25.072 56-56-25.072-56-56-56z\"]\n};\nvar faTram = {\n  prefix: 'fas',\n  iconName: 'tram',\n  icon: [512, 512, [], \"f7da\", \"M288 64c17.7 0 32-14.3 32-32S305.7 0 288 0s-32 14.3-32 32 14.3 32 32 32zm223.5-12.1c-2.3-8.6-11-13.6-19.6-11.3l-480 128c-8.5 2.3-13.6 11-11.3 19.6C2.5 195.3 8.9 200 16 200c1.4 0 2.8-.2 4.1-.5L240 140.8V224H64c-17.7 0-32 14.3-32 32v224c0 17.7 14.3 32 32 32h384c17.7 0 32-14.3 32-32V256c0-17.7-14.3-32-32-32H272v-91.7l228.1-60.8c8.6-2.3 13.6-11.1 11.4-19.6zM176 384H80v-96h96v96zm160-96h96v96h-96v-96zm-32 0v96h-96v-96h96zM192 96c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32z\"]\n};\nvar faTransgender = {\n  prefix: 'fas',\n  iconName: 'transgender',\n  icon: [384, 512, [], \"f224\", \"M372 0h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-80.7 80.7C198.5 104.1 172.2 96 144 96 64.5 96 0 160.5 0 240c0 68.5 47.9 125.9 112 140.4V408H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v28c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-28h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-27.6c64.1-14.6 112-71.9 112-140.4 0-28.2-8.1-54.5-22.1-76.7l80.7-80.7 16.9 16.9c7.6 7.6 20.5 2.2 20.5-8.5V12c0-6.6-5.4-12-12-12zM144 320c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\"]\n};\nvar faTransgenderAlt = {\n  prefix: 'fas',\n  iconName: 'transgender-alt',\n  icon: [480, 512, [], \"f225\", \"M468 0h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-80.7 80.7C294.5 104.1 268.2 96 240 96c-28.2 0-54.5 8.1-76.7 22.1l-16.5-16.5 19.8-19.8c4.7-4.7 4.7-12.3 0-17l-28.3-28.3c-4.7-4.7-12.3-4.7-17 0l-19.8 19.8-19-19 16.9-16.9C107.1 12.9 101.7 0 91 0H12C5.4 0 0 5.4 0 12v79c0 10.7 12.9 16 20.5 8.5l16.9-16.9 19 19-19.8 19.8c-4.7 4.7-4.7 12.3 0 17l28.3 28.3c4.7 4.7 12.3 4.7 17 0l19.8-19.8 16.5 16.5C104.1 185.5 96 211.8 96 240c0 68.5 47.9 125.9 112 140.4V408h-36c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v28c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-28h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-27.6c64.1-14.6 112-71.9 112-140.4 0-28.2-8.1-54.5-22.1-76.7l80.7-80.7 16.9 16.9c7.6 7.6 20.5 2.2 20.5-8.5V12c0-6.6-5.4-12-12-12zM240 320c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\"]\n};\nvar faTrash = {\n  prefix: 'fas',\n  iconName: 'trash',\n  icon: [448, 512, [], \"f1f8\", \"M432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM53.2 467a48 48 0 0 0 47.9 45h245.8a48 48 0 0 0 47.9-45L416 128H32z\"]\n};\nvar faTrashAlt = {\n  prefix: 'fas',\n  iconName: 'trash-alt',\n  icon: [448, 512, [], \"f2ed\", \"M32 464a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48V128H32zm272-256a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zm-96 0a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zm-96 0a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zM432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faTrashRestore = {\n  prefix: 'fas',\n  iconName: 'trash-restore',\n  icon: [448, 512, [], \"f829\", \"M53.2 467a48 48 0 0 0 47.9 45h245.8a48 48 0 0 0 47.9-45L416 128H32zm70.11-175.8l89.38-94.26a15.41 15.41 0 0 1 22.62 0l89.38 94.26c10.08 10.62 2.94 28.8-11.32 28.8H256v112a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16V320h-57.37c-14.26 0-21.4-18.18-11.32-28.8zM432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faTrashRestoreAlt = {\n  prefix: 'fas',\n  iconName: 'trash-restore-alt',\n  icon: [448, 512, [], \"f82a\", \"M32 464a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48V128H32zm91.31-172.8l89.38-94.26a15.41 15.41 0 0 1 22.62 0l89.38 94.26c10.08 10.62 2.94 28.8-11.32 28.8H256v112a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16V320h-57.37c-14.26 0-21.4-18.18-11.32-28.8zM432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faTree = {\n  prefix: 'fas',\n  iconName: 'tree',\n  icon: [384, 512, [], \"f1bb\", \"M378.31 378.49L298.42 288h30.63c9.01 0 16.98-5 20.78-13.06 3.8-8.04 2.55-17.26-3.28-24.05L268.42 160h28.89c9.1 0 17.3-5.35 20.86-13.61 3.52-8.13 1.86-17.59-4.24-24.08L203.66 4.83c-6.03-6.45-17.28-6.45-23.32 0L70.06 122.31c-6.1 6.49-7.75 15.95-4.24 24.08C69.38 154.65 77.59 160 86.69 160h28.89l-78.14 90.91c-5.81 6.78-7.06 15.99-3.27 24.04C37.97 283 45.93 288 54.95 288h30.63L5.69 378.49c-6 6.79-7.36 16.09-3.56 24.26 3.75 8.05 12 13.25 21.01 13.25H160v24.45l-30.29 48.4c-5.32 10.64 2.42 23.16 14.31 23.16h95.96c11.89 0 19.63-12.52 14.31-23.16L224 440.45V416h136.86c9.01 0 17.26-5.2 21.01-13.25 3.8-8.17 2.44-17.47-3.56-24.26z\"]\n};\nvar faTrophy = {\n  prefix: 'fas',\n  iconName: 'trophy',\n  icon: [576, 512, [], \"f091\", \"M552 64H448V24c0-13.3-10.7-24-24-24H152c-13.3 0-24 10.7-24 24v40H24C10.7 64 0 74.7 0 88v56c0 35.7 22.5 72.4 61.9 100.7 31.5 22.7 69.8 37.1 110 41.7C203.3 338.5 240 360 240 360v72h-48c-35.3 0-64 20.7-64 56v12c0 6.6 5.4 12 12 12h296c6.6 0 12-5.4 12-12v-12c0-35.3-28.7-56-64-56h-48v-72s36.7-21.5 68.1-73.6c40.3-4.6 78.6-19 110-41.7 39.3-28.3 61.9-65 61.9-100.7V88c0-13.3-10.7-24-24-24zM99.3 192.8C74.9 175.2 64 155.6 64 144v-16h64.2c1 32.6 5.8 61.2 12.8 86.2-15.1-5.2-29.2-12.4-41.7-21.4zM512 144c0 16.1-17.7 36.1-35.3 48.8-12.5 9-26.7 16.2-41.8 21.4 7-25 11.8-53.6 12.8-86.2H512v16z\"]\n};\nvar faTruck = {\n  prefix: 'fas',\n  iconName: 'truck',\n  icon: [640, 512, [], \"f0d1\", \"M624 352h-16V243.9c0-12.7-5.1-24.9-14.1-33.9L494 110.1c-9-9-21.2-14.1-33.9-14.1H416V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h16c0 53 43 96 96 96s96-43 96-96h128c0 53 43 96 96 96s96-43 96-96h48c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM160 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm320 0c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm80-208H416V144h44.1l99.9 99.9V256z\"]\n};\nvar faTruckLoading = {\n  prefix: 'fas',\n  iconName: 'truck-loading',\n  icon: [640, 512, [], \"f4de\", \"M50.2 375.6c2.3 8.5 11.1 13.6 19.6 11.3l216.4-58c8.5-2.3 13.6-11.1 11.3-19.6l-49.7-185.5c-2.3-8.5-11.1-13.6-19.6-11.3L151 133.3l24.8 92.7-61.8 16.5-24.8-92.7-77.3 20.7C3.4 172.8-1.7 181.6.6 190.1l49.6 185.5zM384 0c-17.7 0-32 14.3-32 32v323.6L5.9 450c-4.3 1.2-6.8 5.6-5.6 9.8l12.6 46.3c1.2 4.3 5.6 6.8 9.8 5.6l393.7-107.4C418.8 464.1 467.6 512 528 512c61.9 0 112-50.1 112-112V0H384zm144 448c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48z\"]\n};\nvar faTruckMonster = {\n  prefix: 'fas',\n  iconName: 'truck-monster',\n  icon: [640, 512, [], \"f63b\", \"M624 224h-16v-64c0-17.67-14.33-32-32-32h-73.6L419.22 24.02A64.025 64.025 0 0 0 369.24 0H256c-17.67 0-32 14.33-32 32v96H48c-8.84 0-16 7.16-16 16v80H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h16.72c29.21-38.65 75.1-64 127.28-64s98.07 25.35 127.28 64h65.45c29.21-38.65 75.1-64 127.28-64s98.07 25.35 127.28 64H624c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-336-96V64h81.24l51.2 64H288zm304 224h-5.2c-2.2-7.33-5.07-14.28-8.65-20.89l3.67-3.67c6.25-6.25 6.25-16.38 0-22.63l-22.63-22.63c-6.25-6.25-16.38-6.25-22.63 0l-3.67 3.67A110.85 110.85 0 0 0 512 277.2V272c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v5.2c-7.33 2.2-14.28 5.07-20.89 8.65l-3.67-3.67c-6.25-6.25-16.38-6.25-22.63 0l-22.63 22.63c-6.25 6.25-6.25 16.38 0 22.63l3.67 3.67A110.85 110.85 0 0 0 373.2 352H368c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h5.2c2.2 7.33 5.07 14.28 8.65 20.89l-3.67 3.67c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l3.67-3.67c6.61 3.57 13.57 6.45 20.9 8.65v5.2c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-5.2c7.33-2.2 14.28-5.07 20.9-8.65l3.67 3.67c6.25 6.25 16.38 6.25 22.63 0l22.63-22.63c6.25-6.25 6.25-16.38 0-22.63l-3.67-3.67a110.85 110.85 0 0 0 8.65-20.89h5.2c8.84 0 16-7.16 16-16v-32c-.02-8.84-7.18-16-16.02-16zm-112 80c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm-208-80h-5.2c-2.2-7.33-5.07-14.28-8.65-20.89l3.67-3.67c6.25-6.25 6.25-16.38 0-22.63l-22.63-22.63c-6.25-6.25-16.38-6.25-22.63 0l-3.67 3.67A110.85 110.85 0 0 0 192 277.2V272c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v5.2c-7.33 2.2-14.28 5.07-20.89 8.65l-3.67-3.67c-6.25-6.25-16.38-6.25-22.63 0L58.18 304.8c-6.25 6.25-6.25 16.38 0 22.63l3.67 3.67a110.85 110.85 0 0 0-8.65 20.89H48c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h5.2c2.2 7.33 5.07 14.28 8.65 20.89l-3.67 3.67c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l3.67-3.67c6.61 3.57 13.57 6.45 20.9 8.65v5.2c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-5.2c7.33-2.2 14.28-5.07 20.9-8.65l3.67 3.67c6.25 6.25 16.38 6.25 22.63 0l22.63-22.63c6.25-6.25 6.25-16.38 0-22.63l-3.67-3.67a110.85 110.85 0 0 0 8.65-20.89h5.2c8.84 0 16-7.16 16-16v-32C288 359.16 280.84 352 272 352zm-112 80c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48z\"]\n};\nvar faTruckMoving = {\n  prefix: 'fas',\n  iconName: 'truck-moving',\n  icon: [640, 512, [], \"f4df\", \"M621.3 237.3l-58.5-58.5c-12-12-28.3-18.7-45.3-18.7H480V64c0-17.7-14.3-32-32-32H32C14.3 32 0 46.3 0 64v336c0 44.2 35.8 80 80 80 26.3 0 49.4-12.9 64-32.4 14.6 19.6 37.7 32.4 64 32.4 44.2 0 80-35.8 80-80 0-5.5-.6-10.8-1.6-16h163.2c-1.1 5.2-1.6 10.5-1.6 16 0 44.2 35.8 80 80 80s80-35.8 80-80c0-5.5-.6-10.8-1.6-16H624c8.8 0 16-7.2 16-16v-85.5c0-17-6.7-33.2-18.7-45.2zM80 432c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32zm128 0c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32zm272-224h37.5c4.3 0 8.3 1.7 11.3 4.7l43.3 43.3H480v-48zm48 224c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32z\"]\n};\nvar faTruckPickup = {\n  prefix: 'fas',\n  iconName: 'truck-pickup',\n  icon: [640, 512, [], \"f63c\", \"M624 288h-16v-64c0-17.67-14.33-32-32-32h-48L419.22 56.02A64.025 64.025 0 0 0 369.24 32H256c-17.67 0-32 14.33-32 32v128H64c-17.67 0-32 14.33-32 32v64H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h49.61c-.76 5.27-1.61 10.52-1.61 16 0 61.86 50.14 112 112 112s112-50.14 112-112c0-5.48-.85-10.73-1.61-16h67.23c-.76 5.27-1.61 10.52-1.61 16 0 61.86 50.14 112 112 112s112-50.14 112-112c0-5.48-.85-10.73-1.61-16H624c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM288 96h81.24l76.8 96H288V96zM176 416c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48zm288 0c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48z\"]\n};\nvar faTshirt = {\n  prefix: 'fas',\n  iconName: 'tshirt',\n  icon: [640, 512, [], \"f553\", \"M631.2 96.5L436.5 0C416.4 27.8 371.9 47.2 320 47.2S223.6 27.8 203.5 0L8.8 96.5c-7.9 4-11.1 13.6-7.2 21.5l57.2 114.5c4 7.9 13.6 11.1 21.5 7.2l56.6-27.7c10.6-5.2 23 2.5 23 14.4V480c0 17.7 14.3 32 32 32h256c17.7 0 32-14.3 32-32V226.3c0-11.8 12.4-19.6 23-14.4l56.6 27.7c7.9 4 17.5.8 21.5-7.2L638.3 118c4-7.9.8-17.6-7.1-21.5z\"]\n};\nvar faTty = {\n  prefix: 'fas',\n  iconName: 'tty',\n  icon: [512, 512, [], \"f1e4\", \"M5.37 103.822c138.532-138.532 362.936-138.326 501.262 0 6.078 6.078 7.074 15.496 2.583 22.681l-43.214 69.138a18.332 18.332 0 0 1-22.356 7.305l-86.422-34.569a18.335 18.335 0 0 1-11.434-18.846L351.741 90c-62.145-22.454-130.636-21.986-191.483 0l5.953 59.532a18.331 18.331 0 0 1-11.434 18.846l-86.423 34.568a18.334 18.334 0 0 1-22.356-7.305L2.787 126.502a18.333 18.333 0 0 1 2.583-22.68zM96 308v-40c0-6.627-5.373-12-12-12H44c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm-336 96v-40c0-6.627-5.373-12-12-12H92c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zM96 500v-40c0-6.627-5.373-12-12-12H44c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm288 0v-40c0-6.627-5.373-12-12-12H140c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h232c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12z\"]\n};\nvar faTv = {\n  prefix: 'fas',\n  iconName: 'tv',\n  icon: [640, 512, [], \"f26c\", \"M592 0H48A48 48 0 0 0 0 48v320a48 48 0 0 0 48 48h240v32H112a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H352v-32h240a48 48 0 0 0 48-48V48a48 48 0 0 0-48-48zm-16 352H64V64h512z\"]\n};\nvar faUmbrella = {\n  prefix: 'fas',\n  iconName: 'umbrella',\n  icon: [576, 512, [], \"f0e9\", \"M575.7 280.8C547.1 144.5 437.3 62.6 320 49.9V32c0-17.7-14.3-32-32-32s-32 14.3-32 32v17.9C138.3 62.6 29.5 144.5.3 280.8c-2.2 10.1 8.5 21.3 18.7 11.4 52-55 107.7-52.4 158.6 37 5.3 9.5 14.9 8.6 19.7 0 20.2-35.4 44.9-73.2 90.7-73.2 58.5 0 88.2 68.8 90.7 73.2 4.8 8.6 14.4 9.5 19.7 0 51-89.5 107.1-91.4 158.6-37 10.3 10 20.9-1.3 18.7-11.4zM256 301.7V432c0 8.8-7.2 16-16 16-7.8 0-13.2-5.3-15.1-10.7-5.9-16.7-24.1-25.4-40.8-19.5-16.7 5.9-25.4 24.2-19.5 40.8 11.2 31.9 41.6 53.3 75.4 53.3 44.1 0 80-35.9 80-80V301.6c-9.1-7.9-19.8-13.6-32-13.6-12.3.1-22.4 4.8-32 13.7z\"]\n};\nvar faUmbrellaBeach = {\n  prefix: 'fas',\n  iconName: 'umbrella-beach',\n  icon: [640, 512, [], \"f5ca\", \"M115.38 136.9l102.11 37.18c35.19-81.54 86.21-144.29 139-173.7-95.88-4.89-188.78 36.96-248.53 111.8-6.69 8.4-2.66 21.05 7.42 24.72zm132.25 48.16l238.48 86.83c35.76-121.38 18.7-231.66-42.63-253.98-7.4-2.7-15.13-4-23.09-4-58.02.01-128.27 69.17-172.76 171.15zM521.48 60.5c6.22 16.3 10.83 34.6 13.2 55.19 5.74 49.89-1.42 108.23-18.95 166.98l102.62 37.36c10.09 3.67 21.31-3.43 21.57-14.17 2.32-95.69-41.91-187.44-118.44-245.36zM560 447.98H321.06L386 269.5l-60.14-21.9-72.9 200.37H16c-8.84 0-16 7.16-16 16.01v32.01C0 504.83 7.16 512 16 512h544c8.84 0 16-7.17 16-16.01v-32.01c0-8.84-7.16-16-16-16z\"]\n};\nvar faUnderline = {\n  prefix: 'fas',\n  iconName: 'underline',\n  icon: [448, 512, [], \"f0cd\", \"M32 64h32v160c0 88.22 71.78 160 160 160s160-71.78 160-160V64h32a16 16 0 0 0 16-16V16a16 16 0 0 0-16-16H272a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32v160a80 80 0 0 1-160 0V64h32a16 16 0 0 0 16-16V16a16 16 0 0 0-16-16H32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm400 384H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faUndo = {\n  prefix: 'fas',\n  iconName: 'undo',\n  icon: [512, 512, [], \"f0e2\", \"M212.333 224.333H12c-6.627 0-12-5.373-12-12V12C0 5.373 5.373 0 12 0h48c6.627 0 12 5.373 12 12v78.112C117.773 39.279 184.26 7.47 258.175 8.007c136.906.994 246.448 111.623 246.157 248.532C504.041 393.258 393.12 504 256.333 504c-64.089 0-122.496-24.313-166.51-64.215-5.099-4.622-5.334-12.554-.467-17.42l33.967-33.967c4.474-4.474 11.662-4.717 16.401-.525C170.76 415.336 211.58 432 256.333 432c97.268 0 176-78.716 176-176 0-97.267-78.716-176-176-176-58.496 0-110.28 28.476-142.274 72.333h98.274c6.627 0 12 5.373 12 12v48c0 6.627-5.373 12-12 12z\"]\n};\nvar faUndoAlt = {\n  prefix: 'fas',\n  iconName: 'undo-alt',\n  icon: [512, 512, [], \"f2ea\", \"M255.545 8c-66.269.119-126.438 26.233-170.86 68.685L48.971 40.971C33.851 25.851 8 36.559 8 57.941V192c0 13.255 10.745 24 24 24h134.059c21.382 0 32.09-25.851 16.971-40.971l-41.75-41.75c30.864-28.899 70.801-44.907 113.23-45.273 92.398-.798 170.283 73.977 169.484 169.442C423.236 348.009 349.816 424 256 424c-41.127 0-79.997-14.678-110.63-41.556-4.743-4.161-11.906-3.908-16.368.553L89.34 422.659c-4.872 4.872-4.631 12.815.482 17.433C133.798 479.813 192.074 504 256 504c136.966 0 247.999-111.033 248-247.998C504.001 119.193 392.354 7.755 255.545 8z\"]\n};\nvar faUniversalAccess = {\n  prefix: 'fas',\n  iconName: 'universal-access',\n  icon: [512, 512, [], \"f29a\", \"M256 48c114.953 0 208 93.029 208 208 0 114.953-93.029 208-208 208-114.953 0-208-93.029-208-208 0-114.953 93.029-208 208-208m0-40C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 56C149.961 64 64 149.961 64 256s85.961 192 192 192 192-85.961 192-192S362.039 64 256 64zm0 44c19.882 0 36 16.118 36 36s-16.118 36-36 36-36-16.118-36-36 16.118-36 36-36zm117.741 98.023c-28.712 6.779-55.511 12.748-82.14 15.807.851 101.023 12.306 123.052 25.037 155.621 3.617 9.26-.957 19.698-10.217 23.315-9.261 3.617-19.699-.957-23.316-10.217-8.705-22.308-17.086-40.636-22.261-78.549h-9.686c-5.167 37.851-13.534 56.208-22.262 78.549-3.615 9.255-14.05 13.836-23.315 10.217-9.26-3.617-13.834-14.056-10.217-23.315 12.713-32.541 24.185-54.541 25.037-155.621-26.629-3.058-53.428-9.027-82.141-15.807-8.6-2.031-13.926-10.648-11.895-19.249s10.647-13.926 19.249-11.895c96.686 22.829 124.283 22.783 220.775 0 8.599-2.03 17.218 3.294 19.249 11.895 2.029 8.601-3.297 17.219-11.897 19.249z\"]\n};\nvar faUniversity = {\n  prefix: 'fas',\n  iconName: 'university',\n  icon: [512, 512, [], \"f19c\", \"M496 128v16a8 8 0 0 1-8 8h-24v12c0 6.627-5.373 12-12 12H60c-6.627 0-12-5.373-12-12v-12H24a8 8 0 0 1-8-8v-16a8 8 0 0 1 4.941-7.392l232-88a7.996 7.996 0 0 1 6.118 0l232 88A8 8 0 0 1 496 128zm-24 304H40c-13.255 0-24 10.745-24 24v16a8 8 0 0 0 8 8h464a8 8 0 0 0 8-8v-16c0-13.255-10.745-24-24-24zM96 192v192H60c-6.627 0-12 5.373-12 12v20h416v-20c0-6.627-5.373-12-12-12h-36V192h-64v192h-64V192h-64v192h-64V192H96z\"]\n};\nvar faUnlink = {\n  prefix: 'fas',\n  iconName: 'unlink',\n  icon: [512, 512, [], \"f127\", \"M304.083 405.907c4.686 4.686 4.686 12.284 0 16.971l-44.674 44.674c-59.263 59.262-155.693 59.266-214.961 0-59.264-59.265-59.264-155.696 0-214.96l44.675-44.675c4.686-4.686 12.284-4.686 16.971 0l39.598 39.598c4.686 4.686 4.686 12.284 0 16.971l-44.675 44.674c-28.072 28.073-28.072 73.75 0 101.823 28.072 28.072 73.75 28.073 101.824 0l44.674-44.674c4.686-4.686 12.284-4.686 16.971 0l39.597 39.598zm-56.568-260.216c4.686 4.686 12.284 4.686 16.971 0l44.674-44.674c28.072-28.075 73.75-28.073 101.824 0 28.072 28.073 28.072 73.75 0 101.823l-44.675 44.674c-4.686 4.686-4.686 12.284 0 16.971l39.598 39.598c4.686 4.686 12.284 4.686 16.971 0l44.675-44.675c59.265-59.265 59.265-155.695 0-214.96-59.266-59.264-155.695-59.264-214.961 0l-44.674 44.674c-4.686 4.686-4.686 12.284 0 16.971l39.597 39.598zm234.828 359.28l22.627-22.627c9.373-9.373 9.373-24.569 0-33.941L63.598 7.029c-9.373-9.373-24.569-9.373-33.941 0L7.029 29.657c-9.373 9.373-9.373 24.569 0 33.941l441.373 441.373c9.373 9.372 24.569 9.372 33.941 0z\"]\n};\nvar faUnlock = {\n  prefix: 'fas',\n  iconName: 'unlock',\n  icon: [448, 512, [], \"f09c\", \"M400 256H152V152.9c0-39.6 31.7-72.5 71.3-72.9 40-.4 72.7 32.1 72.7 72v16c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24v-16C376 68 307.5-.3 223.5 0 139.5.3 72 69.5 72 153.5V256H48c-26.5 0-48 21.5-48 48v160c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48z\"]\n};\nvar faUnlockAlt = {\n  prefix: 'fas',\n  iconName: 'unlock-alt',\n  icon: [448, 512, [], \"f13e\", \"M400 256H152V152.9c0-39.6 31.7-72.5 71.3-72.9 40-.4 72.7 32.1 72.7 72v16c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24v-16C376 68 307.5-.3 223.5 0 139.5.3 72 69.5 72 153.5V256H48c-26.5 0-48 21.5-48 48v160c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48zM264 408c0 22.1-17.9 40-40 40s-40-17.9-40-40v-48c0-22.1 17.9-40 40-40s40 17.9 40 40v48z\"]\n};\nvar faUpload = {\n  prefix: 'fas',\n  iconName: 'upload',\n  icon: [512, 512, [], \"f093\", \"M296 384h-80c-13.3 0-24-10.7-24-24V192h-87.7c-17.8 0-26.7-21.5-14.1-34.1L242.3 5.7c7.5-7.5 19.8-7.5 27.3 0l152.2 152.2c12.6 12.6 3.7 34.1-14.1 34.1H320v168c0 13.3-10.7 24-24 24zm216-8v112c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V376c0-13.3 10.7-24 24-24h136v8c0 30.9 25.1 56 56 56h80c30.9 0 56-25.1 56-56v-8h136c13.3 0 24 10.7 24 24zm-124 88c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20zm64 0c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20z\"]\n};\nvar faUser = {\n  prefix: 'fas',\n  iconName: 'user',\n  icon: [448, 512, [], \"f007\", \"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z\"]\n};\nvar faUserAlt = {\n  prefix: 'fas',\n  iconName: 'user-alt',\n  icon: [512, 512, [], \"f406\", \"M256 288c79.5 0 144-64.5 144-144S335.5 0 256 0 112 64.5 112 144s64.5 144 144 144zm128 32h-55.1c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16H128C57.3 320 0 377.3 0 448v16c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48v-16c0-70.7-57.3-128-128-128z\"]\n};\nvar faUserAltSlash = {\n  prefix: 'fas',\n  iconName: 'user-alt-slash',\n  icon: [640, 512, [], \"f4fa\", \"M633.8 458.1L389.6 269.3C433.8 244.7 464 198.1 464 144 464 64.5 399.5 0 320 0c-67.1 0-123 46.1-139 108.2L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4l588.4 454.7c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.4-6.8 4.1-16.9-2.9-22.3zM198.4 320C124.2 320 64 380.2 64 454.4v9.6c0 26.5 21.5 48 48 48h382.2L245.8 320h-47.4z\"]\n};\nvar faUserAstronaut = {\n  prefix: 'fas',\n  iconName: 'user-astronaut',\n  icon: [448, 512, [], \"f4fb\", \"M64 224h13.5c24.7 56.5 80.9 96 146.5 96s121.8-39.5 146.5-96H384c8.8 0 16-7.2 16-16v-96c0-8.8-7.2-16-16-16h-13.5C345.8 39.5 289.6 0 224 0S102.2 39.5 77.5 96H64c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16zm40-88c0-22.1 21.5-40 48-40h144c26.5 0 48 17.9 48 40v24c0 53-43 96-96 96h-48c-53 0-96-43-96-96v-24zm72 72l12-36 36-12-36-12-12-36-12 36-36 12 36 12 12 36zm151.6 113.4C297.7 340.7 262.2 352 224 352s-73.7-11.3-103.6-30.6C52.9 328.5 0 385 0 454.4v9.6c0 26.5 21.5 48 48 48h80v-64c0-17.7 14.3-32 32-32h128c17.7 0 32 14.3 32 32v64h80c26.5 0 48-21.5 48-48v-9.6c0-69.4-52.9-125.9-120.4-133zM272 448c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm-96 0c-8.8 0-16 7.2-16 16v48h32v-48c0-8.8-7.2-16-16-16z\"]\n};\nvar faUserCheck = {\n  prefix: 'fas',\n  iconName: 'user-check',\n  icon: [640, 512, [], \"f4fc\", \"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4zm323-128.4l-27.8-28.1c-4.6-4.7-12.1-4.7-16.8-.1l-104.8 104-45.5-45.8c-4.6-4.7-12.1-4.7-16.8-.1l-28.1 27.9c-4.7 4.6-4.7 12.1-.1 16.8l81.7 82.3c4.6 4.7 12.1 4.7 16.8.1l141.3-140.2c4.6-4.7 4.7-12.2.1-16.8z\"]\n};\nvar faUserCircle = {\n  prefix: 'fas',\n  iconName: 'user-circle',\n  icon: [496, 512, [], \"f2bd\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 96c48.6 0 88 39.4 88 88s-39.4 88-88 88-88-39.4-88-88 39.4-88 88-88zm0 344c-58.7 0-111.3-26.6-146.5-68.2 18.8-35.4 55.6-59.8 98.5-59.8 2.4 0 4.8.4 7.1 1.1 13 4.2 26.6 6.9 40.9 6.9 14.3 0 28-2.7 40.9-6.9 2.3-.7 4.7-1.1 7.1-1.1 42.9 0 79.7 24.4 98.5 59.8C359.3 421.4 306.7 448 248 448z\"]\n};\nvar faUserClock = {\n  prefix: 'fas',\n  iconName: 'user-clock',\n  icon: [640, 512, [], \"f4fd\", \"M496 224c-79.6 0-144 64.4-144 144s64.4 144 144 144 144-64.4 144-144-64.4-144-144-144zm64 150.3c0 5.3-4.4 9.7-9.7 9.7h-60.6c-5.3 0-9.7-4.4-9.7-9.7v-76.6c0-5.3 4.4-9.7 9.7-9.7h12.6c5.3 0 9.7 4.4 9.7 9.7V352h38.3c5.3 0 9.7 4.4 9.7 9.7v12.6zM320 368c0-27.8 6.7-54.1 18.2-77.5-8-1.5-16.2-2.5-24.6-2.5h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h347.1c-45.3-31.9-75.1-84.5-75.1-144zm-96-112c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128z\"]\n};\nvar faUserCog = {\n  prefix: 'fas',\n  iconName: 'user-cog',\n  icon: [640, 512, [], \"f4fe\", \"M610.5 373.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 400.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5zM224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm201.2 226.5c-2.3-1.2-4.6-2.6-6.8-3.9l-7.9 4.6c-6 3.4-12.8 5.3-19.6 5.3-10.9 0-21.4-4.6-28.9-12.6-18.3-19.8-32.3-43.9-40.2-69.6-5.5-17.7 1.9-36.4 17.9-45.7l7.9-4.6c-.1-2.6-.1-5.2 0-7.8l-7.9-4.6c-16-9.2-23.4-28-17.9-45.7.9-2.9 2.2-5.8 3.2-8.7-3.8-.3-7.5-1.2-11.4-1.2h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c10.1 0 19.5-3.2 27.2-8.5-1.2-3.8-2-7.7-2-11.8v-9.2z\"]\n};\nvar faUserEdit = {\n  prefix: 'fas',\n  iconName: 'user-edit',\n  icon: [640, 512, [], \"f4ff\", \"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h274.9c-2.4-6.8-3.4-14-2.6-21.3l6.8-60.9 1.2-11.1 7.9-7.9 77.3-77.3c-24.5-27.7-60-45.5-99.9-45.5zm45.3 145.3l-6.8 61c-1.1 10.2 7.5 18.8 17.6 17.6l60.9-6.8 137.9-137.9-71.7-71.7-137.9 137.8zM633 268.9L595.1 231c-9.3-9.3-24.5-9.3-33.8 0l-37.8 37.8-4.1 4.1 71.8 71.7 41.8-41.8c9.3-9.4 9.3-24.5 0-33.9z\"]\n};\nvar faUserFriends = {\n  prefix: 'fas',\n  iconName: 'user-friends',\n  icon: [640, 512, [], \"f500\", \"M192 256c61.9 0 112-50.1 112-112S253.9 32 192 32 80 82.1 80 144s50.1 112 112 112zm76.8 32h-8.3c-20.8 10-43.9 16-68.5 16s-47.6-6-68.5-16h-8.3C51.6 288 0 339.6 0 403.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-28.8c0-63.6-51.6-115.2-115.2-115.2zM480 256c53 0 96-43 96-96s-43-96-96-96-96 43-96 96 43 96 96 96zm48 32h-3.8c-13.9 4.8-28.6 8-44.2 8s-30.3-3.2-44.2-8H432c-20.4 0-39.2 5.9-55.7 15.4 24.4 26.3 39.7 61.2 39.7 99.8v38.4c0 2.2-.5 4.3-.6 6.4H592c26.5 0 48-21.5 48-48 0-61.9-50.1-112-112-112z\"]\n};\nvar faUserGraduate = {\n  prefix: 'fas',\n  iconName: 'user-graduate',\n  icon: [448, 512, [], \"f501\", \"M319.4 320.6L224 416l-95.4-95.4C57.1 323.7 0 382.2 0 454.4v9.6c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-9.6c0-72.2-57.1-130.7-128.6-133.8zM13.6 79.8l6.4 1.5v58.4c-7 4.2-12 11.5-12 20.3 0 8.4 4.6 15.4 11.1 19.7L3.5 242c-1.7 6.9 2.1 14 7.6 14h41.8c5.5 0 9.3-7.1 7.6-14l-15.6-62.3C51.4 175.4 56 168.4 56 160c0-8.8-5-16.1-12-20.3V87.1l66 15.9c-8.6 17.2-14 36.4-14 57 0 70.7 57.3 128 128 128s128-57.3 128-128c0-20.6-5.3-39.8-14-57l96.3-23.2c18.2-4.4 18.2-27.1 0-31.5l-190.4-46c-13-3.1-26.7-3.1-39.7 0L13.6 48.2c-18.1 4.4-18.1 27.2 0 31.6z\"]\n};\nvar faUserInjured = {\n  prefix: 'fas',\n  iconName: 'user-injured',\n  icon: [448, 512, [], \"f728\", \"M277.37 11.98C261.08 4.47 243.11 0 224 0c-53.69 0-99.5 33.13-118.51 80h81.19l90.69-68.02zM342.51 80c-7.9-19.47-20.67-36.2-36.49-49.52L239.99 80h102.52zM224 256c70.69 0 128-57.31 128-128 0-5.48-.95-10.7-1.61-16H97.61c-.67 5.3-1.61 10.52-1.61 16 0 70.69 57.31 128 128 128zM80 299.7V512h128.26l-98.45-221.52A132.835 132.835 0 0 0 80 299.7zM0 464c0 26.51 21.49 48 48 48V320.24C18.88 344.89 0 381.26 0 422.4V464zm256-48h-55.38l42.67 96H256c26.47 0 48-21.53 48-48s-21.53-48-48-48zm57.6-128h-16.71c-22.24 10.18-46.88 16-72.89 16s-50.65-5.82-72.89-16h-7.37l42.67 96H256c44.11 0 80 35.89 80 80 0 18.08-6.26 34.59-16.41 48H400c26.51 0 48-21.49 48-48v-41.6c0-74.23-60.17-134.4-134.4-134.4z\"]\n};\nvar faUserLock = {\n  prefix: 'fas',\n  iconName: 'user-lock',\n  icon: [640, 512, [], \"f502\", \"M224 256A128 128 0 1 0 96 128a128 128 0 0 0 128 128zm96 64a63.08 63.08 0 0 1 8.1-30.5c-4.8-.5-9.5-1.5-14.5-1.5h-16.7a174.08 174.08 0 0 1-145.8 0h-16.7A134.43 134.43 0 0 0 0 422.4V464a48 48 0 0 0 48 48h280.9a63.54 63.54 0 0 1-8.9-32zm288-32h-32v-80a80 80 0 0 0-160 0v80h-32a32 32 0 0 0-32 32v160a32 32 0 0 0 32 32h224a32 32 0 0 0 32-32V320a32 32 0 0 0-32-32zM496 432a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm32-144h-64v-80a32 32 0 0 1 64 0z\"]\n};\nvar faUserMd = {\n  prefix: 'fas',\n  iconName: 'user-md',\n  icon: [448, 512, [], \"f0f0\", \"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zM104 424c0 13.3 10.7 24 24 24s24-10.7 24-24-10.7-24-24-24-24 10.7-24 24zm216-135.4v49c36.5 7.4 64 39.8 64 78.4v41.7c0 7.6-5.4 14.2-12.9 15.7l-32.2 6.4c-4.3.9-8.5-1.9-9.4-6.3l-3.1-15.7c-.9-4.3 1.9-8.6 6.3-9.4l19.3-3.9V416c0-62.8-96-65.1-96 1.9v26.7l19.3 3.9c4.3.9 7.1 5.1 6.3 9.4l-3.1 15.7c-.9 4.3-5.1 7.1-9.4 6.3l-31.2-4.2c-7.9-1.1-13.8-7.8-13.8-15.9V416c0-38.6 27.5-70.9 64-78.4v-45.2c-2.2.7-4.4 1.1-6.6 1.9-18 6.3-37.3 9.8-57.4 9.8s-39.4-3.5-57.4-9.8c-7.4-2.6-14.9-4.2-22.6-5.2v81.6c23.1 6.9 40 28.1 40 53.4 0 30.9-25.1 56-56 56s-56-25.1-56-56c0-25.3 16.9-46.5 40-53.4v-80.4C48.5 301 0 355.8 0 422.4v44.8C0 491.9 20.1 512 44.8 512h358.4c24.7 0 44.8-20.1 44.8-44.8v-44.8c0-72-56.8-130.3-128-133.8z\"]\n};\nvar faUserMinus = {\n  prefix: 'fas',\n  iconName: 'user-minus',\n  icon: [640, 512, [], \"f503\", \"M624 208H432c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h192c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm-400 48c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z\"]\n};\nvar faUserNinja = {\n  prefix: 'fas',\n  iconName: 'user-ninja',\n  icon: [448, 512, [], \"f504\", \"M325.4 289.2L224 390.6 122.6 289.2C54 295.3 0 352.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-70.2-54-127.1-122.6-133.2zM32 192c27.3 0 51.8-11.5 69.2-29.7 15.1 53.9 64 93.7 122.8 93.7 70.7 0 128-57.3 128-128S294.7 0 224 0c-50.4 0-93.6 29.4-114.5 71.8C92.1 47.8 64 32 32 32c0 33.4 17.1 62.8 43.1 80-26 17.2-43.1 46.6-43.1 80zm144-96h96c17.7 0 32 14.3 32 32H144c0-17.7 14.3-32 32-32z\"]\n};\nvar faUserNurse = {\n  prefix: 'fas',\n  iconName: 'user-nurse',\n  icon: [448, 512, [], \"f82f\", \"M319.41,320,224,415.39,128.59,320C57.1,323.1,0,381.6,0,453.79A58.21,58.21,0,0,0,58.21,512H389.79A58.21,58.21,0,0,0,448,453.79C448,381.6,390.9,323.1,319.41,320ZM224,304A128,128,0,0,0,352,176V65.82a32,32,0,0,0-20.76-30L246.47,4.07a64,64,0,0,0-44.94,0L116.76,35.86A32,32,0,0,0,96,65.82V176A128,128,0,0,0,224,304ZM184,71.67a5,5,0,0,1,5-5h21.67V45a5,5,0,0,1,5-5h16.66a5,5,0,0,1,5,5V66.67H259a5,5,0,0,1,5,5V88.33a5,5,0,0,1-5,5H237.33V115a5,5,0,0,1-5,5H215.67a5,5,0,0,1-5-5V93.33H189a5,5,0,0,1-5-5ZM144,160H304v16a80,80,0,0,1-160,0Z\"]\n};\nvar faUserPlus = {\n  prefix: 'fas',\n  iconName: 'user-plus',\n  icon: [640, 512, [], \"f234\", \"M624 208h-64v-64c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v64h-64c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h64v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-64h64c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm-400 48c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z\"]\n};\nvar faUserSecret = {\n  prefix: 'fas',\n  iconName: 'user-secret',\n  icon: [448, 512, [], \"f21b\", \"M383.9 308.3l23.9-62.6c4-10.5-3.7-21.7-15-21.7h-58.5c11-18.9 17.8-40.6 17.8-64v-.3c39.2-7.8 64-19.1 64-31.7 0-13.3-27.3-25.1-70.1-33-9.2-32.8-27-65.8-40.6-82.8-9.5-11.9-25.9-15.6-39.5-8.8l-27.6 13.8c-9 4.5-19.6 4.5-28.6 0L182.1 3.4c-13.6-6.8-30-3.1-39.5 8.8-13.5 17-31.4 50-40.6 82.8-42.7 7.9-70 19.7-70 33 0 12.6 24.8 23.9 64 31.7v.3c0 23.4 6.8 45.1 17.8 64H56.3c-11.5 0-19.2 11.7-14.7 22.3l25.8 60.2C27.3 329.8 0 372.7 0 422.4v44.8C0 491.9 20.1 512 44.8 512h358.4c24.7 0 44.8-20.1 44.8-44.8v-44.8c0-48.4-25.8-90.4-64.1-114.1zM176 480l-41.6-192 49.6 32 24 40-32 120zm96 0l-32-120 24-40 49.6-32L272 480zm41.7-298.5c-3.9 11.9-7 24.6-16.5 33.4-10.1 9.3-48 22.4-64-25-2.8-8.4-15.4-8.4-18.3 0-17 50.2-56 32.4-64 25-9.5-8.8-12.7-21.5-16.5-33.4-.8-2.5-6.3-5.7-6.3-5.8v-10.8c28.3 3.6 61 5.8 96 5.8s67.7-2.1 96-5.8v10.8c-.1.1-5.6 3.2-6.4 5.8z\"]\n};\nvar faUserShield = {\n  prefix: 'fas',\n  iconName: 'user-shield',\n  icon: [640, 512, [], \"f505\", \"M622.3 271.1l-115.2-45c-4.1-1.6-12.6-3.7-22.2 0l-115.2 45c-10.7 4.2-17.7 14-17.7 24.9 0 111.6 68.7 188.8 132.9 213.9 9.6 3.7 18 1.6 22.2 0C558.4 489.9 640 420.5 640 296c0-10.9-7-20.7-17.7-24.9zM496 462.4V273.3l95.5 37.3c-5.6 87.1-60.9 135.4-95.5 151.8zM224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm96 40c0-2.5.8-4.8 1.1-7.2-2.5-.1-4.9-.8-7.5-.8h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c6.8 0 13.3-1.5 19.2-4-54-42.9-99.2-116.7-99.2-212z\"]\n};\nvar faUserSlash = {\n  prefix: 'fas',\n  iconName: 'user-slash',\n  icon: [640, 512, [], \"f506\", \"M633.8 458.1L362.3 248.3C412.1 230.7 448 183.8 448 128 448 57.3 390.7 0 320 0c-67.1 0-121.5 51.8-126.9 117.4L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4l588.4 454.7c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.4-6.8 4.1-16.9-2.9-22.3zM96 422.4V464c0 26.5 21.5 48 48 48h350.2L207.4 290.3C144.2 301.3 96 356 96 422.4z\"]\n};\nvar faUserTag = {\n  prefix: 'fas',\n  iconName: 'user-tag',\n  icon: [640, 512, [], \"f507\", \"M630.6 364.9l-90.3-90.2c-12-12-28.3-18.7-45.3-18.7h-79.3c-17.7 0-32 14.3-32 32v79.2c0 17 6.7 33.2 18.7 45.2l90.3 90.2c12.5 12.5 32.8 12.5 45.3 0l92.5-92.5c12.6-12.5 12.6-32.7.1-45.2zm-182.8-21c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24c0 13.2-10.7 24-24 24zm-223.8-88c70.7 0 128-57.3 128-128C352 57.3 294.7 0 224 0S96 57.3 96 128c0 70.6 57.3 127.9 128 127.9zm127.8 111.2V294c-12.2-3.6-24.9-6.2-38.2-6.2h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 287.9 0 348.1 0 422.3v41.6c0 26.5 21.5 48 48 48h352c15.5 0 29.1-7.5 37.9-18.9l-58-58c-18.1-18.1-28.1-42.2-28.1-67.9z\"]\n};\nvar faUserTie = {\n  prefix: 'fas',\n  iconName: 'user-tie',\n  icon: [448, 512, [], \"f508\", \"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm95.8 32.6L272 480l-32-136 32-56h-96l32 56-32 136-47.8-191.4C56.9 292 0 350.3 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-72.1-56.9-130.4-128.2-133.8z\"]\n};\nvar faUserTimes = {\n  prefix: 'fas',\n  iconName: 'user-times',\n  icon: [640, 512, [], \"f235\", \"M589.6 240l45.6-45.6c6.3-6.3 6.3-16.5 0-22.8l-22.8-22.8c-6.3-6.3-16.5-6.3-22.8 0L544 194.4l-45.6-45.6c-6.3-6.3-16.5-6.3-22.8 0l-22.8 22.8c-6.3 6.3-6.3 16.5 0 22.8l45.6 45.6-45.6 45.6c-6.3 6.3-6.3 16.5 0 22.8l22.8 22.8c6.3 6.3 16.5 6.3 22.8 0l45.6-45.6 45.6 45.6c6.3 6.3 16.5 6.3 22.8 0l22.8-22.8c6.3-6.3 6.3-16.5 0-22.8L589.6 240zM224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z\"]\n};\nvar faUsers = {\n  prefix: 'fas',\n  iconName: 'users',\n  icon: [640, 512, [], \"f0c0\", \"M96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm448 0c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm32 32h-64c-17.6 0-33.5 7.1-45.1 18.6 40.3 22.1 68.9 62 75.1 109.4h66c17.7 0 32-14.3 32-32v-32c0-35.3-28.7-64-64-64zm-256 0c61.9 0 112-50.1 112-112S381.9 32 320 32 208 82.1 208 144s50.1 112 112 112zm76.8 32h-8.3c-20.8 10-43.9 16-68.5 16s-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-28.8c0-63.6-51.6-115.2-115.2-115.2zm-223.7-13.4C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z\"]\n};\nvar faUsersCog = {\n  prefix: 'fas',\n  iconName: 'users-cog',\n  icon: [640, 512, [], \"f509\", \"M610.5 341.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 368.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5zM96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm224 32c1.9 0 3.7-.5 5.6-.6 8.3-21.7 20.5-42.1 36.3-59.2 7.4-8 17.9-12.6 28.9-12.6 6.9 0 13.7 1.8 19.6 5.3l7.9 4.6c.8-.5 1.6-.9 2.4-1.4 7-14.6 11.2-30.8 11.2-48 0-61.9-50.1-112-112-112S208 82.1 208 144c0 61.9 50.1 112 112 112zm105.2 194.5c-2.3-1.2-4.6-2.6-6.8-3.9-8.2 4.8-15.3 9.8-27.5 9.8-10.9 0-21.4-4.6-28.9-12.6-18.3-19.8-32.3-43.9-40.2-69.6-10.7-34.5 24.9-49.7 25.8-50.3-.1-2.6-.1-5.2 0-7.8l-7.9-4.6c-3.8-2.2-7-5-9.8-8.1-3.3.2-6.5.6-9.8.6-24.6 0-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h255.4c-3.7-6-6.2-12.8-6.2-20.3v-9.2zM173.1 274.6C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z\"]\n};\nvar faUsersSlash = {\n  prefix: 'fas',\n  iconName: 'users-slash',\n  icon: [640, 512, [], \"e073\", \"M132.65,212.32,36.21,137.78A63.4,63.4,0,0,0,32,160a63.84,63.84,0,0,0,100.65,52.32Zm40.44,62.28A63.79,63.79,0,0,0,128,256H64A64.06,64.06,0,0,0,0,320v32a32,32,0,0,0,32,32H97.91A146.62,146.62,0,0,1,173.09,274.6ZM544,224a64,64,0,1,0-64-64A64.06,64.06,0,0,0,544,224ZM500.56,355.11a114.24,114.24,0,0,0-84.47-65.28L361,247.23c41.46-16.3,71-55.92,71-103.23A111.93,111.93,0,0,0,320,32c-57.14,0-103.69,42.83-110.6,98.08L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.46A16,16,0,0,0,6.18,53.91L594.53,508.63A16,16,0,0,0,617,505.82l19.64-25.27a16,16,0,0,0-2.81-22.45ZM128,403.21V432a48,48,0,0,0,48,48H464a47.45,47.45,0,0,0,12.57-1.87L232,289.13C173.74,294.83,128,343.42,128,403.21ZM576,256H512a63.79,63.79,0,0,0-45.09,18.6A146.29,146.29,0,0,1,542,384h66a32,32,0,0,0,32-32V320A64.06,64.06,0,0,0,576,256Z\"]\n};\nvar faUtensilSpoon = {\n  prefix: 'fas',\n  iconName: 'utensil-spoon',\n  icon: [512, 512, [], \"f2e5\", \"M480.1 31.9c-55-55.1-164.9-34.5-227.8 28.5-49.3 49.3-55.1 110-28.8 160.4L9 413.2c-11.6 10.5-12.1 28.5-1 39.5L59.3 504c11 11 29.1 10.5 39.5-1.1l192.4-214.4c50.4 26.3 111.1 20.5 160.4-28.8 63-62.9 83.6-172.8 28.5-227.8z\"]\n};\nvar faUtensils = {\n  prefix: 'fas',\n  iconName: 'utensils',\n  icon: [416, 512, [], \"f2e7\", \"M207.9 15.2c.8 4.7 16.1 94.5 16.1 128.8 0 52.3-27.8 89.6-68.9 104.6L168 486.7c.7 13.7-10.2 25.3-24 25.3H80c-13.7 0-24.7-11.5-24-25.3l12.9-238.1C27.7 233.6 0 196.2 0 144 0 109.6 15.3 19.9 16.1 15.2 19.3-5.1 61.4-5.4 64 16.3v141.2c1.3 3.4 15.1 3.2 16 0 1.4-25.3 7.9-139.2 8-141.8 3.3-20.8 44.7-20.8 47.9 0 .2 2.7 6.6 116.5 8 141.8.9 3.2 14.8 3.4 16 0V16.3c2.6-21.6 44.8-21.4 48-1.1zm119.2 285.7l-15 185.1c-1.2 14 9.9 26 23.9 26h56c13.3 0 24-10.7 24-24V24c0-13.2-10.7-24-24-24-82.5 0-221.4 178.5-64.9 300.9z\"]\n};\nvar faVectorSquare = {\n  prefix: 'fas',\n  iconName: 'vector-square',\n  icon: [512, 512, [], \"f5cb\", \"M512 128V32c0-17.67-14.33-32-32-32h-96c-17.67 0-32 14.33-32 32H160c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v96c0 17.67 14.33 32 32 32v192c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32h192c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32V160c17.67 0 32-14.33 32-32zm-96-64h32v32h-32V64zM64 64h32v32H64V64zm32 384H64v-32h32v32zm352 0h-32v-32h32v32zm-32-96h-32c-17.67 0-32 14.33-32 32v32H160v-32c0-17.67-14.33-32-32-32H96V160h32c17.67 0 32-14.33 32-32V96h192v32c0 17.67 14.33 32 32 32h32v192z\"]\n};\nvar faVenus = {\n  prefix: 'fas',\n  iconName: 'venus',\n  icon: [288, 512, [], \"f221\", \"M288 176c0-79.5-64.5-144-144-144S0 96.5 0 176c0 68.5 47.9 125.9 112 140.4V368H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v36c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-36h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-51.6c64.1-14.5 112-71.9 112-140.4zm-224 0c0-44.1 35.9-80 80-80s80 35.9 80 80-35.9 80-80 80-80-35.9-80-80z\"]\n};\nvar faVenusDouble = {\n  prefix: 'fas',\n  iconName: 'venus-double',\n  icon: [512, 512, [], \"f226\", \"M288 176c0-79.5-64.5-144-144-144S0 96.5 0 176c0 68.5 47.9 125.9 112 140.4V368H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v36c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-36h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-51.6c64.1-14.5 112-71.9 112-140.4zm-224 0c0-44.1 35.9-80 80-80s80 35.9 80 80-35.9 80-80 80-80-35.9-80-80zm336 140.4V368h36c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-36v36c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-36h-36c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h36v-51.6c-21.2-4.8-40.6-14.3-57.2-27.3 14-16.7 25-36 32.1-57.1 14.5 14.8 34.7 24 57.1 24 44.1 0 80-35.9 80-80s-35.9-80-80-80c-22.3 0-42.6 9.2-57.1 24-7.1-21.1-18-40.4-32.1-57.1C303.4 43.6 334.3 32 368 32c79.5 0 144 64.5 144 144 0 68.5-47.9 125.9-112 140.4z\"]\n};\nvar faVenusMars = {\n  prefix: 'fas',\n  iconName: 'venus-mars',\n  icon: [576, 512, [], \"f228\", \"M564 0h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-48.7 48.7C422.5 72.1 396.2 64 368 64c-33.7 0-64.6 11.6-89.2 30.9 14 16.7 25 36 32.1 57.1 14.5-14.8 34.7-24 57.1-24 44.1 0 80 35.9 80 80s-35.9 80-80 80c-22.3 0-42.6-9.2-57.1-24-7.1 21.1-18 40.4-32.1 57.1 24.5 19.4 55.5 30.9 89.2 30.9 79.5 0 144-64.5 144-144 0-28.2-8.1-54.5-22.1-76.7l48.7-48.7 16.9 16.9c2.4 2.4 5.4 3.5 8.4 3.5 6.2 0 12.1-4.8 12.1-12V12c0-6.6-5.4-12-12-12zM144 64C64.5 64 0 128.5 0 208c0 68.5 47.9 125.9 112 140.4V400H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v36c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-36h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-51.6c64.1-14.6 112-71.9 112-140.4 0-79.5-64.5-144-144-144zm0 224c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\"]\n};\nvar faVest = {\n  prefix: 'fas',\n  iconName: 'vest',\n  icon: [448, 512, [], \"e085\", \"M437.252,239.877,384,160V32A32,32,0,0,0,352,0H320a24.021,24.021,0,0,0-13.312,4.031l-25,16.672a103.794,103.794,0,0,1-115.376,0l-25-16.672A24.021,24.021,0,0,0,128,0H96A32,32,0,0,0,64,32V160L10.748,239.877A64,64,0,0,0,0,275.377V480a32,32,0,0,0,32,32H192V288a31.987,31.987,0,0,1,1.643-10.119L207.135,237.4,150.188,66.564A151.518,151.518,0,0,0,224,86.234a151.55,151.55,0,0,0,73.812-19.672L224,288V512H416a32,32,0,0,0,32-32V275.377A64,64,0,0,0,437.252,239.877ZM131.312,371.312l-48,48a16,16,0,0,1-22.624-22.624l48-48a16,16,0,0,1,22.624,22.624Zm256,48a15.992,15.992,0,0,1-22.624,0l-48-48a16,16,0,0,1,22.624-22.624l48,48A15.993,15.993,0,0,1,387.312,419.312Z\"]\n};\nvar faVestPatches = {\n  prefix: 'fas',\n  iconName: 'vest-patches',\n  icon: [448, 512, [], \"e086\", \"M437.252,239.877,384,160V32A32,32,0,0,0,352,0H320a23.982,23.982,0,0,0-13.312,4.031l-25,16.672a103.794,103.794,0,0,1-115.376,0l-25-16.672A23.982,23.982,0,0,0,128,0H96A32,32,0,0,0,64,32V160L10.748,239.877A64,64,0,0,0,0,275.377V480a32,32,0,0,0,32,32H192V288a31.987,31.987,0,0,1,1.643-10.119L207.135,237.4,150.188,66.561A151.579,151.579,0,0,0,224,86.234a151.565,151.565,0,0,0,73.811-19.668L224,288V512H416a32,32,0,0,0,32-32V275.377A64,64,0,0,0,437.252,239.877ZM63.5,272.484a12.01,12.01,0,0,1,17-16.968l15.5,15.5,15.5-15.5a12.01,12.01,0,0,1,17,16.968L112.984,288,128.5,303.516a12.01,12.01,0,0,1-17,16.968L96,304.984l-15.5,15.5a12.01,12.01,0,0,1-17-16.968L79.016,288ZM96,456a40,40,0,1,1,40-40A40,40,0,0,1,96,456ZM359.227,335.785,310.7,336a6.671,6.671,0,0,1-6.7-6.7l.215-48.574A24.987,24.987,0,0,1,331.43,256.1c12.789,1.162,22.129,12.619,22.056,25.419l-.037,5.057,5.051-.037c12.826-.035,24.236,9.275,25.4,22.076A24.948,24.948,0,0,1,359.227,335.785Z\"]\n};\nvar faVial = {\n  prefix: 'fas',\n  iconName: 'vial',\n  icon: [480, 512, [], \"f492\", \"M477.7 186.1L309.5 18.3c-3.1-3.1-8.2-3.1-11.3 0l-34 33.9c-3.1 3.1-3.1 8.2 0 11.3l11.2 11.1L33 316.5c-38.8 38.7-45.1 102-9.4 143.5 20.6 24 49.5 36 78.4 35.9 26.4 0 52.8-10 72.9-30.1l246.3-245.7 11.2 11.1c3.1 3.1 8.2 3.1 11.3 0l34-33.9c3.1-3 3.1-8.1 0-11.2zM318 256H161l148-147.7 78.5 78.3L318 256z\"]\n};\nvar faVials = {\n  prefix: 'fas',\n  iconName: 'vials',\n  icon: [640, 512, [], \"f493\", \"M72 64h24v240c0 44.1 35.9 80 80 80s80-35.9 80-80V64h24c4.4 0 8-3.6 8-8V8c0-4.4-3.6-8-8-8H72c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm72 0h64v96h-64V64zm480 384H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM360 64h24v240c0 44.1 35.9 80 80 80s80-35.9 80-80V64h24c4.4 0 8-3.6 8-8V8c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm72 0h64v96h-64V64z\"]\n};\nvar faVideo = {\n  prefix: 'fas',\n  iconName: 'video',\n  icon: [576, 512, [], \"f03d\", \"M336.2 64H47.8C21.4 64 0 85.4 0 111.8v288.4C0 426.6 21.4 448 47.8 448h288.4c26.4 0 47.8-21.4 47.8-47.8V111.8c0-26.4-21.4-47.8-47.8-47.8zm189.4 37.7L416 177.3v157.4l109.6 75.5c21.2 14.6 50.4-.3 50.4-25.8V127.5c0-25.4-29.1-40.4-50.4-25.8z\"]\n};\nvar faVideoSlash = {\n  prefix: 'fas',\n  iconName: 'video-slash',\n  icon: [640, 512, [], \"f4e2\", \"M633.8 458.1l-55-42.5c15.4-1.4 29.2-13.7 29.2-31.1v-257c0-25.5-29.1-40.4-50.4-25.8L448 177.3v137.2l-32-24.7v-178c0-26.4-21.4-47.8-47.8-47.8H123.9L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4L42.7 82 416 370.6l178.5 138c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.5-6.9 4.2-17-2.8-22.4zM32 400.2c0 26.4 21.4 47.8 47.8 47.8h288.4c11.2 0 21.4-4 29.6-10.5L32 154.7v245.5z\"]\n};\nvar faVihara = {\n  prefix: 'fas',\n  iconName: 'vihara',\n  icon: [640, 512, [], \"f6a7\", \"M632.88 400.71L544 352v-64l55.16-17.69c11.79-5.9 11.79-22.72 0-28.62L480 192v-64l27.31-16.3c7.72-7.72 5.61-20.74-4.16-25.62L320 0 136.85 86.07c-9.77 4.88-11.88 17.9-4.16 25.62L160 128v64L40.84 241.69c-11.79 5.9-11.79 22.72 0 28.62L96 288v64L7.12 400.71c-5.42 3.62-7.7 9.63-7 15.29.62 5.01 3.57 9.75 8.72 12.33L64 448v48c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-48h160v48c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-48h160v48c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-48l55.15-19.67c5.16-2.58 8.1-7.32 8.72-12.33.71-5.67-1.57-11.68-6.99-15.29zM224 128h192v64H224v-64zm-64 224v-64h320v64H160z\"]\n};\nvar faVirus = {\n  prefix: 'fas',\n  iconName: 'virus',\n  icon: [512, 512, [], \"e074\", \"M483.55,227.55H462c-50.68,0-76.07-61.27-40.23-97.11L437,115.19A28.44,28.44,0,0,0,396.8,75L381.56,90.22c-35.84,35.83-97.11,10.45-97.11-40.23V28.44a28.45,28.45,0,0,0-56.9,0V50c0,50.68-61.27,76.06-97.11,40.23L115.2,75A28.44,28.44,0,0,0,75,115.19l15.25,15.25c35.84,35.84,10.45,97.11-40.23,97.11H28.45a28.45,28.45,0,1,0,0,56.89H50c50.68,0,76.07,61.28,40.23,97.12L75,396.8A28.45,28.45,0,0,0,115.2,437l15.24-15.25c35.84-35.84,97.11-10.45,97.11,40.23v21.54a28.45,28.45,0,0,0,56.9,0V462c0-50.68,61.27-76.07,97.11-40.23L396.8,437A28.45,28.45,0,0,0,437,396.8l-15.25-15.24c-35.84-35.84-10.45-97.12,40.23-97.12h21.54a28.45,28.45,0,1,0,0-56.89ZM224,272a48,48,0,1,1,48-48A48,48,0,0,1,224,272Zm80,56a24,24,0,1,1,24-24A24,24,0,0,1,304,328Z\"]\n};\nvar faVirusSlash = {\n  prefix: 'fas',\n  iconName: 'virus-slash',\n  icon: [640, 512, [], \"e075\", \"M114,227.6H92.4C76.7,227.6,64,240.3,64,256s12.7,28.4,28.4,28.4H114c50.7,0,76.1,61.3,40.2,97.1L139,396.8 c-11.5,10.7-12.2,28.7-1.6,40.2s28.7,12.2,40.2,1.6c0.5-0.5,1.1-1,1.6-1.6l15.2-15.2c35.8-35.8,97.1-10.5,97.1,40.2v21.5 c0,15.7,12.8,28.4,28.5,28.4c15.7,0,28.4-12.7,28.4-28.4V462c0-26.6,17-45.9,38.2-53.4l-244.5-189 C133.7,224.7,123.9,227.5,114,227.6z M617,505.8l19.6-25.3c5.4-7,4.2-17-2.8-22.5L470.6,332c4.2-25.4,24.9-47.5,55.4-47.5h21.5 c15.7,0,28.4-12.7,28.4-28.4s-12.7-28.4-28.4-28.4H526c-50.7,0-76.1-61.3-40.2-97.1l15.2-15.3c10.7-11.5,10-29.5-1.6-40.2 c-10.9-10.1-27.7-10.1-38.6,0l-15.2,15.2c-35.8,35.8-97.1,10.5-97.1-40.2V28.5C348.4,12.7,335.7,0,320,0 c-15.7,0-28.4,12.7-28.4,28.4V50c0,50.7-61.3,76.1-97.1,40.2L179.2,75c-11.1-11.1-29.4-10.6-40.5,0.5L45.5,3.4 c-7-5.4-17-4.2-22.5,2.8L3.4,31.5c-5.4,7-4.2,17,2.8,22.5l588.4,454.7C601.5,514.1,611.6,512.8,617,505.8z M335.4,227.5l-62.9-48.6 c4.9-1.8,10.2-2.8,15.4-2.9c26.5,0,48,21.5,48,48C336,225.2,335.5,226.3,335.4,227.5z\"]\n};\nvar faViruses = {\n  prefix: 'fas',\n  iconName: 'viruses',\n  icon: [640, 512, [], \"e076\", \"M624,352H611.88c-28.51,0-42.79-34.47-22.63-54.63l8.58-8.57a16,16,0,1,0-22.63-22.63l-8.57,8.58C546.47,294.91,512,280.63,512,252.12V240a16,16,0,0,0-32,0v12.12c0,28.51-34.47,42.79-54.63,22.63l-8.57-8.58a16,16,0,0,0-22.63,22.63l8.58,8.57c20.16,20.16,5.88,54.63-22.63,54.63H368a16,16,0,0,0,0,32h12.12c28.51,0,42.79,34.47,22.63,54.63l-8.58,8.57a16,16,0,1,0,22.63,22.63l8.57-8.58c20.16-20.16,54.63-5.88,54.63,22.63V496a16,16,0,0,0,32,0V483.88c0-28.51,34.47-42.79,54.63-22.63l8.57,8.58a16,16,0,1,0,22.63-22.63l-8.58-8.57C569.09,418.47,583.37,384,611.88,384H624a16,16,0,0,0,0-32ZM480,384a32,32,0,1,1,32-32A32,32,0,0,1,480,384ZM346.51,213.33h16.16a21.33,21.33,0,0,0,0-42.66H346.51c-38,0-57.05-46-30.17-72.84l11.43-11.44A21.33,21.33,0,0,0,297.6,56.23L286.17,67.66c-26.88,26.88-72.84,7.85-72.84-30.17V21.33a21.33,21.33,0,0,0-42.66,0V37.49c0,38-46,57.05-72.84,30.17L86.4,56.23A21.33,21.33,0,0,0,56.23,86.39L67.66,97.83c26.88,26.88,7.85,72.84-30.17,72.84H21.33a21.33,21.33,0,0,0,0,42.66H37.49c38,0,57.05,46,30.17,72.84L56.23,297.6A21.33,21.33,0,1,0,86.4,327.77l11.43-11.43c26.88-26.88,72.84-7.85,72.84,30.17v16.16a21.33,21.33,0,0,0,42.66,0V346.51c0-38,46-57.05,72.84-30.17l11.43,11.43a21.33,21.33,0,0,0,30.17-30.17l-11.43-11.43C289.46,259.29,308.49,213.33,346.51,213.33ZM160,192a32,32,0,1,1,32-32A32,32,0,0,1,160,192Zm80,32a16,16,0,1,1,16-16A16,16,0,0,1,240,224Z\"]\n};\nvar faVoicemail = {\n  prefix: 'fas',\n  iconName: 'voicemail',\n  icon: [640, 512, [], \"f897\", \"M496 128a144 144 0 0 0-119.74 224H263.74A144 144 0 1 0 144 416h352a144 144 0 0 0 0-288zM64 272a80 80 0 1 1 80 80 80 80 0 0 1-80-80zm432 80a80 80 0 1 1 80-80 80 80 0 0 1-80 80z\"]\n};\nvar faVolleyballBall = {\n  prefix: 'fas',\n  iconName: 'volleyball-ball',\n  icon: [512, 512, [], \"f45f\", \"M231.39 243.48a285.56 285.56 0 0 0-22.7-105.7c-90.8 42.4-157.5 122.4-180.3 216.8a249 249 0 0 0 56.9 81.1 333.87 333.87 0 0 1 146.1-192.2zm-36.9-134.4a284.23 284.23 0 0 0-57.4-70.7c-91 49.8-144.8 152.9-125 262.2 33.4-83.1 98.4-152 182.4-191.5zm187.6 165.1c8.6-99.8-27.3-197.5-97.5-264.4-14.7-1.7-51.6-5.5-98.9 8.5A333.87 333.87 0 0 1 279.19 241a285 285 0 0 0 102.9 33.18zm-124.7 9.5a286.33 286.33 0 0 0-80.2 72.6c82 57.3 184.5 75.1 277.5 47.8a247.15 247.15 0 0 0 42.2-89.9 336.1 336.1 0 0 1-80.9 10.4c-54.6-.1-108.9-14.1-158.6-40.9zm-98.3 99.7c-15.2 26-25.7 54.4-32.1 84.2a247.07 247.07 0 0 0 289-22.1c-112.9 16.1-203.3-24.8-256.9-62.1zm180.3-360.6c55.3 70.4 82.5 161.2 74.6 253.6a286.59 286.59 0 0 0 89.7-14.2c0-2 .3-4 .3-6 0-107.8-68.7-199.1-164.6-233.4z\"]\n};\nvar faVolumeDown = {\n  prefix: 'fas',\n  iconName: 'volume-down',\n  icon: [384, 512, [], \"f027\", \"M215.03 72.04L126.06 161H24c-13.26 0-24 10.74-24 24v144c0 13.25 10.74 24 24 24h102.06l88.97 88.95c15.03 15.03 40.97 4.47 40.97-16.97V89.02c0-21.47-25.96-31.98-40.97-16.98zm123.2 108.08c-11.58-6.33-26.19-2.16-32.61 9.45-6.39 11.61-2.16 26.2 9.45 32.61C327.98 229.28 336 242.62 336 257c0 14.38-8.02 27.72-20.92 34.81-11.61 6.41-15.84 21-9.45 32.61 6.43 11.66 21.05 15.8 32.61 9.45 28.23-15.55 45.77-45 45.77-76.88s-17.54-61.32-45.78-76.87z\"]\n};\nvar faVolumeMute = {\n  prefix: 'fas',\n  iconName: 'volume-mute',\n  icon: [512, 512, [], \"f6a9\", \"M215.03 71.05L126.06 160H24c-13.26 0-24 10.74-24 24v144c0 13.25 10.74 24 24 24h102.06l88.97 88.95c15.03 15.03 40.97 4.47 40.97-16.97V88.02c0-21.46-25.96-31.98-40.97-16.97zM461.64 256l45.64-45.64c6.3-6.3 6.3-16.52 0-22.82l-22.82-22.82c-6.3-6.3-16.52-6.3-22.82 0L416 210.36l-45.64-45.64c-6.3-6.3-16.52-6.3-22.82 0l-22.82 22.82c-6.3 6.3-6.3 16.52 0 22.82L370.36 256l-45.63 45.63c-6.3 6.3-6.3 16.52 0 22.82l22.82 22.82c6.3 6.3 16.52 6.3 22.82 0L416 301.64l45.64 45.64c6.3 6.3 16.52 6.3 22.82 0l22.82-22.82c6.3-6.3 6.3-16.52 0-22.82L461.64 256z\"]\n};\nvar faVolumeOff = {\n  prefix: 'fas',\n  iconName: 'volume-off',\n  icon: [256, 512, [], \"f026\", \"M215 71l-89 89H24a24 24 0 0 0-24 24v144a24 24 0 0 0 24 24h102.06L215 441c15 15 41 4.47 41-17V88c0-21.47-26-32-41-17z\"]\n};\nvar faVolumeUp = {\n  prefix: 'fas',\n  iconName: 'volume-up',\n  icon: [576, 512, [], \"f028\", \"M215.03 71.05L126.06 160H24c-13.26 0-24 10.74-24 24v144c0 13.25 10.74 24 24 24h102.06l88.97 88.95c15.03 15.03 40.97 4.47 40.97-16.97V88.02c0-21.46-25.96-31.98-40.97-16.97zm233.32-51.08c-11.17-7.33-26.18-4.24-33.51 6.95-7.34 11.17-4.22 26.18 6.95 33.51 66.27 43.49 105.82 116.6 105.82 195.58 0 78.98-39.55 152.09-105.82 195.58-11.17 7.32-14.29 22.34-6.95 33.5 7.04 10.71 21.93 14.56 33.51 6.95C528.27 439.58 576 351.33 576 256S528.27 72.43 448.35 19.97zM480 256c0-63.53-32.06-121.94-85.77-156.24-11.19-7.14-26.03-3.82-33.12 7.46s-3.78 26.21 7.41 33.36C408.27 165.97 432 209.11 432 256s-23.73 90.03-63.48 115.42c-11.19 7.14-14.5 22.07-7.41 33.36 6.51 10.36 21.12 15.14 33.12 7.46C447.94 377.94 480 319.54 480 256zm-141.77-76.87c-11.58-6.33-26.19-2.16-32.61 9.45-6.39 11.61-2.16 26.2 9.45 32.61C327.98 228.28 336 241.63 336 256c0 14.38-8.02 27.72-20.92 34.81-11.61 6.41-15.84 21-9.45 32.61 6.43 11.66 21.05 15.8 32.61 9.45 28.23-15.55 45.77-45 45.77-76.88s-17.54-61.32-45.78-76.86z\"]\n};\nvar faVoteYea = {\n  prefix: 'fas',\n  iconName: 'vote-yea',\n  icon: [640, 512, [], \"f772\", \"M608 320h-64v64h22.4c5.3 0 9.6 3.6 9.6 8v16c0 4.4-4.3 8-9.6 8H73.6c-5.3 0-9.6-3.6-9.6-8v-16c0-4.4 4.3-8 9.6-8H96v-64H32c-17.7 0-32 14.3-32 32v96c0 17.7 14.3 32 32 32h576c17.7 0 32-14.3 32-32v-96c0-17.7-14.3-32-32-32zm-96 64V64.3c0-17.9-14.5-32.3-32.3-32.3H160.4C142.5 32 128 46.5 128 64.3V384h384zM211.2 202l25.5-25.3c4.2-4.2 11-4.2 15.2.1l41.3 41.6 95.2-94.4c4.2-4.2 11-4.2 15.2.1l25.3 25.5c4.2 4.2 4.2 11-.1 15.2L300.5 292c-4.2 4.2-11 4.2-15.2-.1l-74.1-74.7c-4.3-4.2-4.2-11 0-15.2z\"]\n};\nvar faVrCardboard = {\n  prefix: 'fas',\n  iconName: 'vr-cardboard',\n  icon: [640, 512, [], \"f729\", \"M608 64H32C14.33 64 0 78.33 0 96v320c0 17.67 14.33 32 32 32h160.22c25.19 0 48.03-14.77 58.36-37.74l27.74-61.64C286.21 331.08 302.35 320 320 320s33.79 11.08 41.68 28.62l27.74 61.64C399.75 433.23 422.6 448 447.78 448H608c17.67 0 32-14.33 32-32V96c0-17.67-14.33-32-32-32zM160 304c-35.35 0-64-28.65-64-64s28.65-64 64-64 64 28.65 64 64-28.65 64-64 64zm320 0c-35.35 0-64-28.65-64-64s28.65-64 64-64 64 28.65 64 64-28.65 64-64 64z\"]\n};\nvar faWalking = {\n  prefix: 'fas',\n  iconName: 'walking',\n  icon: [320, 512, [], \"f554\", \"M208 96c26.5 0 48-21.5 48-48S234.5 0 208 0s-48 21.5-48 48 21.5 48 48 48zm94.5 149.1l-23.3-11.8-9.7-29.4c-14.7-44.6-55.7-75.8-102.2-75.9-36-.1-55.9 10.1-93.3 25.2-21.6 8.7-39.3 25.2-49.7 46.2L17.6 213c-7.8 15.8-1.5 35 14.2 42.9 15.6 7.9 34.6 1.5 42.5-14.3L81 228c3.5-7 9.3-12.5 16.5-15.4l26.8-10.8-15.2 60.7c-5.2 20.8.4 42.9 14.9 58.8l59.9 65.4c7.2 7.9 12.3 17.4 14.9 27.7l18.3 73.3c4.3 17.1 21.7 27.6 38.8 23.3 17.1-4.3 27.6-21.7 23.3-38.8l-22.2-89c-2.6-10.3-7.7-19.9-14.9-27.7l-45.5-49.7 17.2-68.7 5.5 16.5c5.3 16.1 16.7 29.4 31.7 37l23.3 11.8c15.6 7.9 34.6 1.5 42.5-14.3 7.7-15.7 1.4-35.1-14.3-43zM73.6 385.8c-3.2 8.1-8 15.4-14.2 21.5l-50 50.1c-12.5 12.5-12.5 32.8 0 45.3s32.7 12.5 45.2 0l59.4-59.4c6.1-6.1 10.9-13.4 14.2-21.5l13.5-33.8c-55.3-60.3-38.7-41.8-47.4-53.7l-20.7 51.5z\"]\n};\nvar faWallet = {\n  prefix: 'fas',\n  iconName: 'wallet',\n  icon: [512, 512, [], \"f555\", \"M461.2 128H80c-8.84 0-16-7.16-16-16s7.16-16 16-16h384c8.84 0 16-7.16 16-16 0-26.51-21.49-48-48-48H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h397.2c28.02 0 50.8-21.53 50.8-48V176c0-26.47-22.78-48-50.8-48zM416 336c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faWarehouse = {\n  prefix: 'fas',\n  iconName: 'warehouse',\n  icon: [640, 512, [], \"f494\", \"M504 352H136.4c-4.4 0-8 3.6-8 8l-.1 48c0 4.4 3.6 8 8 8H504c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm0 96H136.1c-4.4 0-8 3.6-8 8l-.1 48c0 4.4 3.6 8 8 8h368c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm0-192H136.6c-4.4 0-8 3.6-8 8l-.1 48c0 4.4 3.6 8 8 8H504c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm106.5-139L338.4 3.7a48.15 48.15 0 0 0-36.9 0L29.5 117C11.7 124.5 0 141.9 0 161.3V504c0 4.4 3.6 8 8 8h80c4.4 0 8-3.6 8-8V256c0-17.6 14.6-32 32.6-32h382.8c18 0 32.6 14.4 32.6 32v248c0 4.4 3.6 8 8 8h80c4.4 0 8-3.6 8-8V161.3c0-19.4-11.7-36.8-29.5-44.3z\"]\n};\nvar faWater = {\n  prefix: 'fas',\n  iconName: 'water',\n  icon: [576, 512, [], \"f773\", \"M562.1 383.9c-21.5-2.4-42.1-10.5-57.9-22.9-14.1-11.1-34.2-11.3-48.2 0-37.9 30.4-107.2 30.4-145.7-1.5-13.5-11.2-33-9.1-46.7 1.8-38 30.1-106.9 30-145.2-1.7-13.5-11.2-33.3-8.9-47.1 2-15.5 12.2-36 20.1-57.7 22.4-7.9.8-13.6 7.8-13.6 15.7v32.2c0 9.1 7.6 16.8 16.7 16 28.8-2.5 56.1-11.4 79.4-25.9 56.5 34.6 137 34.1 192 0 56.5 34.6 137 34.1 192 0 23.3 14.2 50.9 23.3 79.1 25.8 9.1.8 16.7-6.9 16.7-16v-31.6c.1-8-5.7-15.4-13.8-16.3zm0-144c-21.5-2.4-42.1-10.5-57.9-22.9-14.1-11.1-34.2-11.3-48.2 0-37.9 30.4-107.2 30.4-145.7-1.5-13.5-11.2-33-9.1-46.7 1.8-38 30.1-106.9 30-145.2-1.7-13.5-11.2-33.3-8.9-47.1 2-15.5 12.2-36 20.1-57.7 22.4-7.9.8-13.6 7.8-13.6 15.7v32.2c0 9.1 7.6 16.8 16.7 16 28.8-2.5 56.1-11.4 79.4-25.9 56.5 34.6 137 34.1 192 0 56.5 34.6 137 34.1 192 0 23.3 14.2 50.9 23.3 79.1 25.8 9.1.8 16.7-6.9 16.7-16v-31.6c.1-8-5.7-15.4-13.8-16.3zm0-144C540.6 93.4 520 85.4 504.2 73 490.1 61.9 470 61.7 456 73c-37.9 30.4-107.2 30.4-145.7-1.5-13.5-11.2-33-9.1-46.7 1.8-38 30.1-106.9 30-145.2-1.7-13.5-11.2-33.3-8.9-47.1 2-15.5 12.2-36 20.1-57.7 22.4-7.9.8-13.6 7.8-13.6 15.7v32.2c0 9.1 7.6 16.8 16.7 16 28.8-2.5 56.1-11.4 79.4-25.9 56.5 34.6 137 34.1 192 0 56.5 34.6 137 34.1 192 0 23.3 14.2 50.9 23.3 79.1 25.8 9.1.8 16.7-6.9 16.7-16v-31.6c.1-8-5.7-15.4-13.8-16.3z\"]\n};\nvar faWaveSquare = {\n  prefix: 'fas',\n  iconName: 'wave-square',\n  icon: [640, 512, [], \"f83e\", \"M476 480H324a36 36 0 0 1-36-36V96h-96v156a36 36 0 0 1-36 36H16a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h112V68a36 36 0 0 1 36-36h152a36 36 0 0 1 36 36v348h96V260a36 36 0 0 1 36-36h140a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16H512v156a36 36 0 0 1-36 36z\"]\n};\nvar faWeight = {\n  prefix: 'fas',\n  iconName: 'weight',\n  icon: [512, 512, [], \"f496\", \"M448 64h-25.98C438.44 92.28 448 125.01 448 160c0 105.87-86.13 192-192 192S64 265.87 64 160c0-34.99 9.56-67.72 25.98-96H64C28.71 64 0 92.71 0 128v320c0 35.29 28.71 64 64 64h384c35.29 0 64-28.71 64-64V128c0-35.29-28.71-64-64-64zM256 320c88.37 0 160-71.63 160-160S344.37 0 256 0 96 71.63 96 160s71.63 160 160 160zm-.3-151.94l33.58-78.36c3.5-8.17 12.94-11.92 21.03-8.41 8.12 3.48 11.88 12.89 8.41 21l-33.67 78.55C291.73 188 296 197.45 296 208c0 22.09-17.91 40-40 40s-40-17.91-40-40c0-21.98 17.76-39.77 39.7-39.94z\"]\n};\nvar faWeightHanging = {\n  prefix: 'fas',\n  iconName: 'weight-hanging',\n  icon: [512, 512, [], \"f5cd\", \"M510.28 445.86l-73.03-292.13c-3.8-15.19-16.44-25.72-30.87-25.72h-60.25c3.57-10.05 5.88-20.72 5.88-32 0-53.02-42.98-96-96-96s-96 42.98-96 96c0 11.28 2.3 21.95 5.88 32h-60.25c-14.43 0-27.08 10.54-30.87 25.72L1.72 445.86C-6.61 479.17 16.38 512 48.03 512h415.95c31.64 0 54.63-32.83 46.3-66.14zM256 128c-17.64 0-32-14.36-32-32s14.36-32 32-32 32 14.36 32 32-14.36 32-32 32z\"]\n};\nvar faWheelchair = {\n  prefix: 'fas',\n  iconName: 'wheelchair',\n  icon: [512, 512, [], \"f193\", \"M496.101 385.669l14.227 28.663c3.929 7.915.697 17.516-7.218 21.445l-65.465 32.886c-16.049 7.967-35.556 1.194-43.189-15.055L331.679 320H192c-15.925 0-29.426-11.71-31.679-27.475C126.433 55.308 128.38 70.044 128 64c0-36.358 30.318-65.635 67.052-63.929 33.271 1.545 60.048 28.905 60.925 62.201.868 32.933-23.152 60.423-54.608 65.039l4.67 32.69H336c8.837 0 16 7.163 16 16v32c0 8.837-7.163 16-16 16H215.182l4.572 32H352a32 32 0 0 1 28.962 18.392L438.477 396.8l36.178-18.349c7.915-3.929 17.517-.697 21.446 7.218zM311.358 352h-24.506c-7.788 54.204-54.528 96-110.852 96-61.757 0-112-50.243-112-112 0-41.505 22.694-77.809 56.324-97.156-3.712-25.965-6.844-47.86-9.488-66.333C45.956 198.464 0 261.963 0 336c0 97.047 78.953 176 176 176 71.87 0 133.806-43.308 161.11-105.192L311.358 352z\"]\n};\nvar faWifi = {\n  prefix: 'fas',\n  iconName: 'wifi',\n  icon: [640, 512, [], \"f1eb\", \"M634.91 154.88C457.74-8.99 182.19-8.93 5.09 154.88c-6.66 6.16-6.79 16.59-.35 22.98l34.24 33.97c6.14 6.1 16.02 6.23 22.4.38 145.92-133.68 371.3-133.71 517.25 0 6.38 5.85 16.26 5.71 22.4-.38l34.24-33.97c6.43-6.39 6.3-16.82-.36-22.98zM320 352c-35.35 0-64 28.65-64 64s28.65 64 64 64 64-28.65 64-64-28.65-64-64-64zm202.67-83.59c-115.26-101.93-290.21-101.82-405.34 0-6.9 6.1-7.12 16.69-.57 23.15l34.44 33.99c6 5.92 15.66 6.32 22.05.8 83.95-72.57 209.74-72.41 293.49 0 6.39 5.52 16.05 5.13 22.05-.8l34.44-33.99c6.56-6.46 6.33-17.06-.56-23.15z\"]\n};\nvar faWind = {\n  prefix: 'fas',\n  iconName: 'wind',\n  icon: [512, 512, [], \"f72e\", \"M156.7 256H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h142.2c15.9 0 30.8 10.9 33.4 26.6 3.3 20-12.1 37.4-31.6 37.4-14.1 0-26.1-9.2-30.4-21.9-2.1-6.3-8.6-10.1-15.2-10.1H81.6c-9.8 0-17.7 8.8-15.9 18.4 8.6 44.1 47.6 77.6 94.2 77.6 57.1 0 102.7-50.1 95.2-108.6C249 291 205.4 256 156.7 256zM16 224h336c59.7 0 106.8-54.8 93.8-116.7-7.6-36.2-36.9-65.5-73.1-73.1-55.4-11.6-105.1 24.9-114.9 75.5-1.9 9.6 6.1 18.3 15.8 18.3h32.8c6.7 0 13.1-3.8 15.2-10.1C325.9 105.2 337.9 96 352 96c19.4 0 34.9 17.4 31.6 37.4-2.6 15.7-17.4 26.6-33.4 26.6H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16zm384 32H243.7c19.3 16.6 33.2 38.8 39.8 64H400c26.5 0 48 21.5 48 48s-21.5 48-48 48c-17.9 0-33.3-9.9-41.6-24.4-2.9-5-8.7-7.6-14.5-7.6h-33.8c-10.9 0-19 10.8-15.3 21.1 17.8 50.6 70.5 84.8 129.4 72.3 41.2-8.7 75.1-41.6 84.7-82.7C526 321.5 470.5 256 400 256z\"]\n};\nvar faWindowClose = {\n  prefix: 'fas',\n  iconName: 'window-close',\n  icon: [512, 512, [], \"f410\", \"M464 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-83.6 290.5c4.8 4.8 4.8 12.6 0 17.4l-40.5 40.5c-4.8 4.8-12.6 4.8-17.4 0L256 313.3l-66.5 67.1c-4.8 4.8-12.6 4.8-17.4 0l-40.5-40.5c-4.8-4.8-4.8-12.6 0-17.4l67.1-66.5-67.1-66.5c-4.8-4.8-4.8-12.6 0-17.4l40.5-40.5c4.8-4.8 12.6-4.8 17.4 0l66.5 67.1 66.5-67.1c4.8-4.8 12.6-4.8 17.4 0l40.5 40.5c4.8 4.8 4.8 12.6 0 17.4L313.3 256l67.1 66.5z\"]\n};\nvar faWindowMaximize = {\n  prefix: 'fas',\n  iconName: 'window-maximize',\n  icon: [512, 512, [], \"f2d0\", \"M464 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-16 160H64v-84c0-6.6 5.4-12 12-12h360c6.6 0 12 5.4 12 12v84z\"]\n};\nvar faWindowMinimize = {\n  prefix: 'fas',\n  iconName: 'window-minimize',\n  icon: [512, 512, [], \"f2d1\", \"M464 352H48c-26.5 0-48 21.5-48 48v32c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48v-32c0-26.5-21.5-48-48-48z\"]\n};\nvar faWindowRestore = {\n  prefix: 'fas',\n  iconName: 'window-restore',\n  icon: [512, 512, [], \"f2d2\", \"M512 48v288c0 26.5-21.5 48-48 48h-48V176c0-44.1-35.9-80-80-80H128V48c0-26.5 21.5-48 48-48h288c26.5 0 48 21.5 48 48zM384 176v288c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V176c0-26.5 21.5-48 48-48h288c26.5 0 48 21.5 48 48zm-68 28c0-6.6-5.4-12-12-12H76c-6.6 0-12 5.4-12 12v52h252v-52z\"]\n};\nvar faWineBottle = {\n  prefix: 'fas',\n  iconName: 'wine-bottle',\n  icon: [512, 512, [], \"f72f\", \"M507.31 72.57L439.43 4.69c-6.25-6.25-16.38-6.25-22.63 0l-22.63 22.63c-6.25 6.25-6.25 16.38 0 22.63l-76.67 76.67c-46.58-19.7-102.4-10.73-140.37 27.23L18.75 312.23c-24.99 24.99-24.99 65.52 0 90.51l90.51 90.51c24.99 24.99 65.52 24.99 90.51 0l158.39-158.39c37.96-37.96 46.93-93.79 27.23-140.37l76.67-76.67c6.25 6.25 16.38 6.25 22.63 0l22.63-22.63c6.24-6.24 6.24-16.37-.01-22.62zM179.22 423.29l-90.51-90.51 122.04-122.04 90.51 90.51-122.04 122.04z\"]\n};\nvar faWineGlass = {\n  prefix: 'fas',\n  iconName: 'wine-glass',\n  icon: [288, 512, [], \"f4e3\", \"M216 464h-40V346.81c68.47-15.89 118.05-79.91 111.4-154.16l-15.95-178.1C270.71 6.31 263.9 0 255.74 0H32.26c-8.15 0-14.97 6.31-15.7 14.55L.6 192.66C-6.05 266.91 43.53 330.93 112 346.82V464H72c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h208c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40z\"]\n};\nvar faWineGlassAlt = {\n  prefix: 'fas',\n  iconName: 'wine-glass-alt',\n  icon: [288, 512, [], \"f5ce\", \"M216 464h-40V346.81c68.47-15.89 118.05-79.91 111.4-154.16l-15.95-178.1C270.71 6.31 263.9 0 255.74 0H32.26c-8.15 0-14.97 6.31-15.7 14.55L.6 192.66C-6.05 266.91 43.53 330.93 112 346.82V464H72c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h208c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40zM61.75 48h164.5l7.17 80H54.58l7.17-80z\"]\n};\nvar faWonSign = {\n  prefix: 'fas',\n  iconName: 'won-sign',\n  icon: [576, 512, [], \"f159\", \"M564 192c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-48l18.6-80.6c1.7-7.5-4-14.7-11.7-14.7h-46.1c-5.7 0-10.6 4-11.7 9.5L450.7 128H340.8l-19.7-86c-1.3-5.5-6.1-9.3-11.7-9.3h-44c-5.6 0-10.4 3.8-11.7 9.3l-20 86H125l-17.5-85.7c-1.1-5.6-6.1-9.6-11.8-9.6H53.6c-7.7 0-13.4 7.1-11.7 14.6L60 128H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h62.3l7.2 32H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h83.9l40.9 182.6c1.2 5.5 6.1 9.4 11.7 9.4h56.8c5.6 0 10.4-3.9 11.7-9.3L259.3 288h55.1l42.4 182.7c1.3 5.4 6.1 9.3 11.7 9.3h56.8c5.6 0 10.4-3.9 11.7-9.3L479.1 288H564c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-70.1l7.4-32zM183.8 342c-6.2 25.8-6.8 47.2-7.3 47.2h-1.1s-1.7-22-6.8-47.2l-11-54h38.8zm27.5-118h-66.8l-6.5-32h80.8zm62.9 0l2-8.6c1.9-8 3.5-16 4.8-23.4h11.8c1.3 7.4 2.9 15.4 4.8 23.4l2 8.6zm130.9 118c-5.1 25.2-6.8 47.2-6.8 47.2h-1.1c-.6 0-1.1-21.4-7.3-47.2l-12.4-54h39.1zm25.2-118h-67.4l-7.3-32h81.6z\"]\n};\nvar faWrench = {\n  prefix: 'fas',\n  iconName: 'wrench',\n  icon: [512, 512, [], \"f0ad\", \"M507.73 109.1c-2.24-9.03-13.54-12.09-20.12-5.51l-74.36 74.36-67.88-11.31-11.31-67.88 74.36-74.36c6.62-6.62 3.43-17.9-5.66-20.16-47.38-11.74-99.55.91-136.58 37.93-39.64 39.64-50.55 97.1-34.05 147.2L18.74 402.76c-24.99 24.99-24.99 65.51 0 90.5 24.99 24.99 65.51 24.99 90.5 0l213.21-213.21c50.12 16.71 107.47 5.68 147.37-34.22 37.07-37.07 49.7-89.32 37.91-136.73zM64 472c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z\"]\n};\nvar faXRay = {\n  prefix: 'fas',\n  iconName: 'x-ray',\n  icon: [640, 512, [], \"f497\", \"M240 384c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm160 32c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zM624 0H16C7.2 0 0 7.2 0 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16zm0 448h-48V96H64v352H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM480 248c0 4.4-3.6 8-8 8H336v32h104c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H336v32h64c26.5 0 48 21.5 48 48s-21.5 48-48 48-48-21.5-48-48v-16h-64v16c0 26.5-21.5 48-48 48s-48-21.5-48-48 21.5-48 48-48h64v-32H200c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h104v-32H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h136v-32H200c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h104v-24c0-4.4 3.6-8 8-8h16c4.4 0 8 3.6 8 8v24h104c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H336v32h136c4.4 0 8 3.6 8 8v16z\"]\n};\nvar faYenSign = {\n  prefix: 'fas',\n  iconName: 'yen-sign',\n  icon: [384, 512, [], \"f157\", \"M351.2 32h-65.3c-4.6 0-8.8 2.6-10.8 6.7l-55.4 113.2c-14.5 34.7-27.1 71.9-27.1 71.9h-1.3s-12.6-37.2-27.1-71.9L108.8 38.7c-2-4.1-6.2-6.7-10.8-6.7H32.8c-9.1 0-14.8 9.7-10.6 17.6L102.3 200H44c-6.6 0-12 5.4-12 12v32c0 6.6 5.4 12 12 12h88.2l19.8 37.2V320H44c-6.6 0-12 5.4-12 12v32c0 6.6 5.4 12 12 12h108v92c0 6.6 5.4 12 12 12h56c6.6 0 12-5.4 12-12v-92h108c6.6 0 12-5.4 12-12v-32c0-6.6-5.4-12-12-12H232v-26.8l19.8-37.2H340c6.6 0 12-5.4 12-12v-32c0-6.6-5.4-12-12-12h-58.3l80.1-150.4c4.3-7.9-1.5-17.6-10.6-17.6z\"]\n};\nvar faYinYang = {\n  prefix: 'fas',\n  iconName: 'yin-yang',\n  icon: [496, 512, [], \"f6ad\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm0 376c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-128c-53.02 0-96 42.98-96 96s42.98 96 96 96c-106.04 0-192-85.96-192-192S141.96 64 248 64c53.02 0 96 42.98 96 96s-42.98 96-96 96zm0-128c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32z\"]\n};\nvar _iconsCache = {\n  faAd: faAd,\n  faAddressBook: faAddressBook,\n  faAddressCard: faAddressCard,\n  faAdjust: faAdjust,\n  faAirFreshener: faAirFreshener,\n  faAlignCenter: faAlignCenter,\n  faAlignJustify: faAlignJustify,\n  faAlignLeft: faAlignLeft,\n  faAlignRight: faAlignRight,\n  faAllergies: faAllergies,\n  faAmbulance: faAmbulance,\n  faAmericanSignLanguageInterpreting: faAmericanSignLanguageInterpreting,\n  faAnchor: faAnchor,\n  faAngleDoubleDown: faAngleDoubleDown,\n  faAngleDoubleLeft: faAngleDoubleLeft,\n  faAngleDoubleRight: faAngleDoubleRight,\n  faAngleDoubleUp: faAngleDoubleUp,\n  faAngleDown: faAngleDown,\n  faAngleLeft: faAngleLeft,\n  faAngleRight: faAngleRight,\n  faAngleUp: faAngleUp,\n  faAngry: faAngry,\n  faAnkh: faAnkh,\n  faAppleAlt: faAppleAlt,\n  faArchive: faArchive,\n  faArchway: faArchway,\n  faArrowAltCircleDown: faArrowAltCircleDown,\n  faArrowAltCircleLeft: faArrowAltCircleLeft,\n  faArrowAltCircleRight: faArrowAltCircleRight,\n  faArrowAltCircleUp: faArrowAltCircleUp,\n  faArrowCircleDown: faArrowCircleDown,\n  faArrowCircleLeft: faArrowCircleLeft,\n  faArrowCircleRight: faArrowCircleRight,\n  faArrowCircleUp: faArrowCircleUp,\n  faArrowDown: faArrowDown,\n  faArrowLeft: faArrowLeft,\n  faArrowRight: faArrowRight,\n  faArrowUp: faArrowUp,\n  faArrowsAlt: faArrowsAlt,\n  faArrowsAltH: faArrowsAltH,\n  faArrowsAltV: faArrowsAltV,\n  faAssistiveListeningSystems: faAssistiveListeningSystems,\n  faAsterisk: faAsterisk,\n  faAt: faAt,\n  faAtlas: faAtlas,\n  faAtom: faAtom,\n  faAudioDescription: faAudioDescription,\n  faAward: faAward,\n  faBaby: faBaby,\n  faBabyCarriage: faBabyCarriage,\n  faBackspace: faBackspace,\n  faBackward: faBackward,\n  faBacon: faBacon,\n  faBacteria: faBacteria,\n  faBacterium: faBacterium,\n  faBahai: faBahai,\n  faBalanceScale: faBalanceScale,\n  faBalanceScaleLeft: faBalanceScaleLeft,\n  faBalanceScaleRight: faBalanceScaleRight,\n  faBan: faBan,\n  faBandAid: faBandAid,\n  faBarcode: faBarcode,\n  faBars: faBars,\n  faBaseballBall: faBaseballBall,\n  faBasketballBall: faBasketballBall,\n  faBath: faBath,\n  faBatteryEmpty: faBatteryEmpty,\n  faBatteryFull: faBatteryFull,\n  faBatteryHalf: faBatteryHalf,\n  faBatteryQuarter: faBatteryQuarter,\n  faBatteryThreeQuarters: faBatteryThreeQuarters,\n  faBed: faBed,\n  faBeer: faBeer,\n  faBell: faBell,\n  faBellSlash: faBellSlash,\n  faBezierCurve: faBezierCurve,\n  faBible: faBible,\n  faBicycle: faBicycle,\n  faBiking: faBiking,\n  faBinoculars: faBinoculars,\n  faBiohazard: faBiohazard,\n  faBirthdayCake: faBirthdayCake,\n  faBlender: faBlender,\n  faBlenderPhone: faBlenderPhone,\n  faBlind: faBlind,\n  faBlog: faBlog,\n  faBold: faBold,\n  faBolt: faBolt,\n  faBomb: faBomb,\n  faBone: faBone,\n  faBong: faBong,\n  faBook: faBook,\n  faBookDead: faBookDead,\n  faBookMedical: faBookMedical,\n  faBookOpen: faBookOpen,\n  faBookReader: faBookReader,\n  faBookmark: faBookmark,\n  faBorderAll: faBorderAll,\n  faBorderNone: faBorderNone,\n  faBorderStyle: faBorderStyle,\n  faBowlingBall: faBowlingBall,\n  faBox: faBox,\n  faBoxOpen: faBoxOpen,\n  faBoxTissue: faBoxTissue,\n  faBoxes: faBoxes,\n  faBraille: faBraille,\n  faBrain: faBrain,\n  faBreadSlice: faBreadSlice,\n  faBriefcase: faBriefcase,\n  faBriefcaseMedical: faBriefcaseMedical,\n  faBroadcastTower: faBroadcastTower,\n  faBroom: faBroom,\n  faBrush: faBrush,\n  faBug: faBug,\n  faBuilding: faBuilding,\n  faBullhorn: faBullhorn,\n  faBullseye: faBullseye,\n  faBurn: faBurn,\n  faBus: faBus,\n  faBusAlt: faBusAlt,\n  faBusinessTime: faBusinessTime,\n  faCalculator: faCalculator,\n  faCalendar: faCalendar,\n  faCalendarAlt: faCalendarAlt,\n  faCalendarCheck: faCalendarCheck,\n  faCalendarDay: faCalendarDay,\n  faCalendarMinus: faCalendarMinus,\n  faCalendarPlus: faCalendarPlus,\n  faCalendarTimes: faCalendarTimes,\n  faCalendarWeek: faCalendarWeek,\n  faCamera: faCamera,\n  faCameraRetro: faCameraRetro,\n  faCampground: faCampground,\n  faCandyCane: faCandyCane,\n  faCannabis: faCannabis,\n  faCapsules: faCapsules,\n  faCar: faCar,\n  faCarAlt: faCarAlt,\n  faCarBattery: faCarBattery,\n  faCarCrash: faCarCrash,\n  faCarSide: faCarSide,\n  faCaravan: faCaravan,\n  faCaretDown: faCaretDown,\n  faCaretLeft: faCaretLeft,\n  faCaretRight: faCaretRight,\n  faCaretSquareDown: faCaretSquareDown,\n  faCaretSquareLeft: faCaretSquareLeft,\n  faCaretSquareRight: faCaretSquareRight,\n  faCaretSquareUp: faCaretSquareUp,\n  faCaretUp: faCaretUp,\n  faCarrot: faCarrot,\n  faCartArrowDown: faCartArrowDown,\n  faCartPlus: faCartPlus,\n  faCashRegister: faCashRegister,\n  faCat: faCat,\n  faCertificate: faCertificate,\n  faChair: faChair,\n  faChalkboard: faChalkboard,\n  faChalkboardTeacher: faChalkboardTeacher,\n  faChargingStation: faChargingStation,\n  faChartArea: faChartArea,\n  faChartBar: faChartBar,\n  faChartLine: faChartLine,\n  faChartPie: faChartPie,\n  faCheck: faCheck,\n  faCheckCircle: faCheckCircle,\n  faCheckDouble: faCheckDouble,\n  faCheckSquare: faCheckSquare,\n  faCheese: faCheese,\n  faChess: faChess,\n  faChessBishop: faChessBishop,\n  faChessBoard: faChessBoard,\n  faChessKing: faChessKing,\n  faChessKnight: faChessKnight,\n  faChessPawn: faChessPawn,\n  faChessQueen: faChessQueen,\n  faChessRook: faChessRook,\n  faChevronCircleDown: faChevronCircleDown,\n  faChevronCircleLeft: faChevronCircleLeft,\n  faChevronCircleRight: faChevronCircleRight,\n  faChevronCircleUp: faChevronCircleUp,\n  faChevronDown: faChevronDown,\n  faChevronLeft: faChevronLeft,\n  faChevronRight: faChevronRight,\n  faChevronUp: faChevronUp,\n  faChild: faChild,\n  faChurch: faChurch,\n  faCircle: faCircle,\n  faCircleNotch: faCircleNotch,\n  faCity: faCity,\n  faClinicMedical: faClinicMedical,\n  faClipboard: faClipboard,\n  faClipboardCheck: faClipboardCheck,\n  faClipboardList: faClipboardList,\n  faClock: faClock,\n  faClone: faClone,\n  faClosedCaptioning: faClosedCaptioning,\n  faCloud: faCloud,\n  faCloudDownloadAlt: faCloudDownloadAlt,\n  faCloudMeatball: faCloudMeatball,\n  faCloudMoon: faCloudMoon,\n  faCloudMoonRain: faCloudMoonRain,\n  faCloudRain: faCloudRain,\n  faCloudShowersHeavy: faCloudShowersHeavy,\n  faCloudSun: faCloudSun,\n  faCloudSunRain: faCloudSunRain,\n  faCloudUploadAlt: faCloudUploadAlt,\n  faCocktail: faCocktail,\n  faCode: faCode,\n  faCodeBranch: faCodeBranch,\n  faCoffee: faCoffee,\n  faCog: faCog,\n  faCogs: faCogs,\n  faCoins: faCoins,\n  faColumns: faColumns,\n  faComment: faComment,\n  faCommentAlt: faCommentAlt,\n  faCommentDollar: faCommentDollar,\n  faCommentDots: faCommentDots,\n  faCommentMedical: faCommentMedical,\n  faCommentSlash: faCommentSlash,\n  faComments: faComments,\n  faCommentsDollar: faCommentsDollar,\n  faCompactDisc: faCompactDisc,\n  faCompass: faCompass,\n  faCompress: faCompress,\n  faCompressAlt: faCompressAlt,\n  faCompressArrowsAlt: faCompressArrowsAlt,\n  faConciergeBell: faConciergeBell,\n  faCookie: faCookie,\n  faCookieBite: faCookieBite,\n  faCopy: faCopy,\n  faCopyright: faCopyright,\n  faCouch: faCouch,\n  faCreditCard: faCreditCard,\n  faCrop: faCrop,\n  faCropAlt: faCropAlt,\n  faCross: faCross,\n  faCrosshairs: faCrosshairs,\n  faCrow: faCrow,\n  faCrown: faCrown,\n  faCrutch: faCrutch,\n  faCube: faCube,\n  faCubes: faCubes,\n  faCut: faCut,\n  faDatabase: faDatabase,\n  faDeaf: faDeaf,\n  faDemocrat: faDemocrat,\n  faDesktop: faDesktop,\n  faDharmachakra: faDharmachakra,\n  faDiagnoses: faDiagnoses,\n  faDice: faDice,\n  faDiceD20: faDiceD20,\n  faDiceD6: faDiceD6,\n  faDiceFive: faDiceFive,\n  faDiceFour: faDiceFour,\n  faDiceOne: faDiceOne,\n  faDiceSix: faDiceSix,\n  faDiceThree: faDiceThree,\n  faDiceTwo: faDiceTwo,\n  faDigitalTachograph: faDigitalTachograph,\n  faDirections: faDirections,\n  faDisease: faDisease,\n  faDivide: faDivide,\n  faDizzy: faDizzy,\n  faDna: faDna,\n  faDog: faDog,\n  faDollarSign: faDollarSign,\n  faDolly: faDolly,\n  faDollyFlatbed: faDollyFlatbed,\n  faDonate: faDonate,\n  faDoorClosed: faDoorClosed,\n  faDoorOpen: faDoorOpen,\n  faDotCircle: faDotCircle,\n  faDove: faDove,\n  faDownload: faDownload,\n  faDraftingCompass: faDraftingCompass,\n  faDragon: faDragon,\n  faDrawPolygon: faDrawPolygon,\n  faDrum: faDrum,\n  faDrumSteelpan: faDrumSteelpan,\n  faDrumstickBite: faDrumstickBite,\n  faDumbbell: faDumbbell,\n  faDumpster: faDumpster,\n  faDumpsterFire: faDumpsterFire,\n  faDungeon: faDungeon,\n  faEdit: faEdit,\n  faEgg: faEgg,\n  faEject: faEject,\n  faEllipsisH: faEllipsisH,\n  faEllipsisV: faEllipsisV,\n  faEnvelope: faEnvelope,\n  faEnvelopeOpen: faEnvelopeOpen,\n  faEnvelopeOpenText: faEnvelopeOpenText,\n  faEnvelopeSquare: faEnvelopeSquare,\n  faEquals: faEquals,\n  faEraser: faEraser,\n  faEthernet: faEthernet,\n  faEuroSign: faEuroSign,\n  faExchangeAlt: faExchangeAlt,\n  faExclamation: faExclamation,\n  faExclamationCircle: faExclamationCircle,\n  faExclamationTriangle: faExclamationTriangle,\n  faExpand: faExpand,\n  faExpandAlt: faExpandAlt,\n  faExpandArrowsAlt: faExpandArrowsAlt,\n  faExternalLinkAlt: faExternalLinkAlt,\n  faExternalLinkSquareAlt: faExternalLinkSquareAlt,\n  faEye: faEye,\n  faEyeDropper: faEyeDropper,\n  faEyeSlash: faEyeSlash,\n  faFan: faFan,\n  faFastBackward: faFastBackward,\n  faFastForward: faFastForward,\n  faFaucet: faFaucet,\n  faFax: faFax,\n  faFeather: faFeather,\n  faFeatherAlt: faFeatherAlt,\n  faFemale: faFemale,\n  faFighterJet: faFighterJet,\n  faFile: faFile,\n  faFileAlt: faFileAlt,\n  faFileArchive: faFileArchive,\n  faFileAudio: faFileAudio,\n  faFileCode: faFileCode,\n  faFileContract: faFileContract,\n  faFileCsv: faFileCsv,\n  faFileDownload: faFileDownload,\n  faFileExcel: faFileExcel,\n  faFileExport: faFileExport,\n  faFileImage: faFileImage,\n  faFileImport: faFileImport,\n  faFileInvoice: faFileInvoice,\n  faFileInvoiceDollar: faFileInvoiceDollar,\n  faFileMedical: faFileMedical,\n  faFileMedicalAlt: faFileMedicalAlt,\n  faFilePdf: faFilePdf,\n  faFilePowerpoint: faFilePowerpoint,\n  faFilePrescription: faFilePrescription,\n  faFileSignature: faFileSignature,\n  faFileUpload: faFileUpload,\n  faFileVideo: faFileVideo,\n  faFileWord: faFileWord,\n  faFill: faFill,\n  faFillDrip: faFillDrip,\n  faFilm: faFilm,\n  faFilter: faFilter,\n  faFingerprint: faFingerprint,\n  faFire: faFire,\n  faFireAlt: faFireAlt,\n  faFireExtinguisher: faFireExtinguisher,\n  faFirstAid: faFirstAid,\n  faFish: faFish,\n  faFistRaised: faFistRaised,\n  faFlag: faFlag,\n  faFlagCheckered: faFlagCheckered,\n  faFlagUsa: faFlagUsa,\n  faFlask: faFlask,\n  faFlushed: faFlushed,\n  faFolder: faFolder,\n  faFolderMinus: faFolderMinus,\n  faFolderOpen: faFolderOpen,\n  faFolderPlus: faFolderPlus,\n  faFont: faFont,\n  faFontAwesomeLogoFull: faFontAwesomeLogoFull,\n  faFootballBall: faFootballBall,\n  faForward: faForward,\n  faFrog: faFrog,\n  faFrown: faFrown,\n  faFrownOpen: faFrownOpen,\n  faFunnelDollar: faFunnelDollar,\n  faFutbol: faFutbol,\n  faGamepad: faGamepad,\n  faGasPump: faGasPump,\n  faGavel: faGavel,\n  faGem: faGem,\n  faGenderless: faGenderless,\n  faGhost: faGhost,\n  faGift: faGift,\n  faGifts: faGifts,\n  faGlassCheers: faGlassCheers,\n  faGlassMartini: faGlassMartini,\n  faGlassMartiniAlt: faGlassMartiniAlt,\n  faGlassWhiskey: faGlassWhiskey,\n  faGlasses: faGlasses,\n  faGlobe: faGlobe,\n  faGlobeAfrica: faGlobeAfrica,\n  faGlobeAmericas: faGlobeAmericas,\n  faGlobeAsia: faGlobeAsia,\n  faGlobeEurope: faGlobeEurope,\n  faGolfBall: faGolfBall,\n  faGopuram: faGopuram,\n  faGraduationCap: faGraduationCap,\n  faGreaterThan: faGreaterThan,\n  faGreaterThanEqual: faGreaterThanEqual,\n  faGrimace: faGrimace,\n  faGrin: faGrin,\n  faGrinAlt: faGrinAlt,\n  faGrinBeam: faGrinBeam,\n  faGrinBeamSweat: faGrinBeamSweat,\n  faGrinHearts: faGrinHearts,\n  faGrinSquint: faGrinSquint,\n  faGrinSquintTears: faGrinSquintTears,\n  faGrinStars: faGrinStars,\n  faGrinTears: faGrinTears,\n  faGrinTongue: faGrinTongue,\n  faGrinTongueSquint: faGrinTongueSquint,\n  faGrinTongueWink: faGrinTongueWink,\n  faGrinWink: faGrinWink,\n  faGripHorizontal: faGripHorizontal,\n  faGripLines: faGripLines,\n  faGripLinesVertical: faGripLinesVertical,\n  faGripVertical: faGripVertical,\n  faGuitar: faGuitar,\n  faHSquare: faHSquare,\n  faHamburger: faHamburger,\n  faHammer: faHammer,\n  faHamsa: faHamsa,\n  faHandHolding: faHandHolding,\n  faHandHoldingHeart: faHandHoldingHeart,\n  faHandHoldingMedical: faHandHoldingMedical,\n  faHandHoldingUsd: faHandHoldingUsd,\n  faHandHoldingWater: faHandHoldingWater,\n  faHandLizard: faHandLizard,\n  faHandMiddleFinger: faHandMiddleFinger,\n  faHandPaper: faHandPaper,\n  faHandPeace: faHandPeace,\n  faHandPointDown: faHandPointDown,\n  faHandPointLeft: faHandPointLeft,\n  faHandPointRight: faHandPointRight,\n  faHandPointUp: faHandPointUp,\n  faHandPointer: faHandPointer,\n  faHandRock: faHandRock,\n  faHandScissors: faHandScissors,\n  faHandSparkles: faHandSparkles,\n  faHandSpock: faHandSpock,\n  faHands: faHands,\n  faHandsHelping: faHandsHelping,\n  faHandsWash: faHandsWash,\n  faHandshake: faHandshake,\n  faHandshakeAltSlash: faHandshakeAltSlash,\n  faHandshakeSlash: faHandshakeSlash,\n  faHanukiah: faHanukiah,\n  faHardHat: faHardHat,\n  faHashtag: faHashtag,\n  faHatCowboy: faHatCowboy,\n  faHatCowboySide: faHatCowboySide,\n  faHatWizard: faHatWizard,\n  faHdd: faHdd,\n  faHeadSideCough: faHeadSideCough,\n  faHeadSideCoughSlash: faHeadSideCoughSlash,\n  faHeadSideMask: faHeadSideMask,\n  faHeadSideVirus: faHeadSideVirus,\n  faHeading: faHeading,\n  faHeadphones: faHeadphones,\n  faHeadphonesAlt: faHeadphonesAlt,\n  faHeadset: faHeadset,\n  faHeart: faHeart,\n  faHeartBroken: faHeartBroken,\n  faHeartbeat: faHeartbeat,\n  faHelicopter: faHelicopter,\n  faHighlighter: faHighlighter,\n  faHiking: faHiking,\n  faHippo: faHippo,\n  faHistory: faHistory,\n  faHockeyPuck: faHockeyPuck,\n  faHollyBerry: faHollyBerry,\n  faHome: faHome,\n  faHorse: faHorse,\n  faHorseHead: faHorseHead,\n  faHospital: faHospital,\n  faHospitalAlt: faHospitalAlt,\n  faHospitalSymbol: faHospitalSymbol,\n  faHospitalUser: faHospitalUser,\n  faHotTub: faHotTub,\n  faHotdog: faHotdog,\n  faHotel: faHotel,\n  faHourglass: faHourglass,\n  faHourglassEnd: faHourglassEnd,\n  faHourglassHalf: faHourglassHalf,\n  faHourglassStart: faHourglassStart,\n  faHouseDamage: faHouseDamage,\n  faHouseUser: faHouseUser,\n  faHryvnia: faHryvnia,\n  faICursor: faICursor,\n  faIceCream: faIceCream,\n  faIcicles: faIcicles,\n  faIcons: faIcons,\n  faIdBadge: faIdBadge,\n  faIdCard: faIdCard,\n  faIdCardAlt: faIdCardAlt,\n  faIgloo: faIgloo,\n  faImage: faImage,\n  faImages: faImages,\n  faInbox: faInbox,\n  faIndent: faIndent,\n  faIndustry: faIndustry,\n  faInfinity: faInfinity,\n  faInfo: faInfo,\n  faInfoCircle: faInfoCircle,\n  faItalic: faItalic,\n  faJedi: faJedi,\n  faJoint: faJoint,\n  faJournalWhills: faJournalWhills,\n  faKaaba: faKaaba,\n  faKey: faKey,\n  faKeyboard: faKeyboard,\n  faKhanda: faKhanda,\n  faKiss: faKiss,\n  faKissBeam: faKissBeam,\n  faKissWinkHeart: faKissWinkHeart,\n  faKiwiBird: faKiwiBird,\n  faLandmark: faLandmark,\n  faLanguage: faLanguage,\n  faLaptop: faLaptop,\n  faLaptopCode: faLaptopCode,\n  faLaptopHouse: faLaptopHouse,\n  faLaptopMedical: faLaptopMedical,\n  faLaugh: faLaugh,\n  faLaughBeam: faLaughBeam,\n  faLaughSquint: faLaughSquint,\n  faLaughWink: faLaughWink,\n  faLayerGroup: faLayerGroup,\n  faLeaf: faLeaf,\n  faLemon: faLemon,\n  faLessThan: faLessThan,\n  faLessThanEqual: faLessThanEqual,\n  faLevelDownAlt: faLevelDownAlt,\n  faLevelUpAlt: faLevelUpAlt,\n  faLifeRing: faLifeRing,\n  faLightbulb: faLightbulb,\n  faLink: faLink,\n  faLiraSign: faLiraSign,\n  faList: faList,\n  faListAlt: faListAlt,\n  faListOl: faListOl,\n  faListUl: faListUl,\n  faLocationArrow: faLocationArrow,\n  faLock: faLock,\n  faLockOpen: faLockOpen,\n  faLongArrowAltDown: faLongArrowAltDown,\n  faLongArrowAltLeft: faLongArrowAltLeft,\n  faLongArrowAltRight: faLongArrowAltRight,\n  faLongArrowAltUp: faLongArrowAltUp,\n  faLowVision: faLowVision,\n  faLuggageCart: faLuggageCart,\n  faLungs: faLungs,\n  faLungsVirus: faLungsVirus,\n  faMagic: faMagic,\n  faMagnet: faMagnet,\n  faMailBulk: faMailBulk,\n  faMale: faMale,\n  faMap: faMap,\n  faMapMarked: faMapMarked,\n  faMapMarkedAlt: faMapMarkedAlt,\n  faMapMarker: faMapMarker,\n  faMapMarkerAlt: faMapMarkerAlt,\n  faMapPin: faMapPin,\n  faMapSigns: faMapSigns,\n  faMarker: faMarker,\n  faMars: faMars,\n  faMarsDouble: faMarsDouble,\n  faMarsStroke: faMarsStroke,\n  faMarsStrokeH: faMarsStrokeH,\n  faMarsStrokeV: faMarsStrokeV,\n  faMask: faMask,\n  faMedal: faMedal,\n  faMedkit: faMedkit,\n  faMeh: faMeh,\n  faMehBlank: faMehBlank,\n  faMehRollingEyes: faMehRollingEyes,\n  faMemory: faMemory,\n  faMenorah: faMenorah,\n  faMercury: faMercury,\n  faMeteor: faMeteor,\n  faMicrochip: faMicrochip,\n  faMicrophone: faMicrophone,\n  faMicrophoneAlt: faMicrophoneAlt,\n  faMicrophoneAltSlash: faMicrophoneAltSlash,\n  faMicrophoneSlash: faMicrophoneSlash,\n  faMicroscope: faMicroscope,\n  faMinus: faMinus,\n  faMinusCircle: faMinusCircle,\n  faMinusSquare: faMinusSquare,\n  faMitten: faMitten,\n  faMobile: faMobile,\n  faMobileAlt: faMobileAlt,\n  faMoneyBill: faMoneyBill,\n  faMoneyBillAlt: faMoneyBillAlt,\n  faMoneyBillWave: faMoneyBillWave,\n  faMoneyBillWaveAlt: faMoneyBillWaveAlt,\n  faMoneyCheck: faMoneyCheck,\n  faMoneyCheckAlt: faMoneyCheckAlt,\n  faMonument: faMonument,\n  faMoon: faMoon,\n  faMortarPestle: faMortarPestle,\n  faMosque: faMosque,\n  faMotorcycle: faMotorcycle,\n  faMountain: faMountain,\n  faMouse: faMouse,\n  faMousePointer: faMousePointer,\n  faMugHot: faMugHot,\n  faMusic: faMusic,\n  faNetworkWired: faNetworkWired,\n  faNeuter: faNeuter,\n  faNewspaper: faNewspaper,\n  faNotEqual: faNotEqual,\n  faNotesMedical: faNotesMedical,\n  faObjectGroup: faObjectGroup,\n  faObjectUngroup: faObjectUngroup,\n  faOilCan: faOilCan,\n  faOm: faOm,\n  faOtter: faOtter,\n  faOutdent: faOutdent,\n  faPager: faPager,\n  faPaintBrush: faPaintBrush,\n  faPaintRoller: faPaintRoller,\n  faPalette: faPalette,\n  faPallet: faPallet,\n  faPaperPlane: faPaperPlane,\n  faPaperclip: faPaperclip,\n  faParachuteBox: faParachuteBox,\n  faParagraph: faParagraph,\n  faParking: faParking,\n  faPassport: faPassport,\n  faPastafarianism: faPastafarianism,\n  faPaste: faPaste,\n  faPause: faPause,\n  faPauseCircle: faPauseCircle,\n  faPaw: faPaw,\n  faPeace: faPeace,\n  faPen: faPen,\n  faPenAlt: faPenAlt,\n  faPenFancy: faPenFancy,\n  faPenNib: faPenNib,\n  faPenSquare: faPenSquare,\n  faPencilAlt: faPencilAlt,\n  faPencilRuler: faPencilRuler,\n  faPeopleArrows: faPeopleArrows,\n  faPeopleCarry: faPeopleCarry,\n  faPepperHot: faPepperHot,\n  faPercent: faPercent,\n  faPercentage: faPercentage,\n  faPersonBooth: faPersonBooth,\n  faPhone: faPhone,\n  faPhoneAlt: faPhoneAlt,\n  faPhoneSlash: faPhoneSlash,\n  faPhoneSquare: faPhoneSquare,\n  faPhoneSquareAlt: faPhoneSquareAlt,\n  faPhoneVolume: faPhoneVolume,\n  faPhotoVideo: faPhotoVideo,\n  faPiggyBank: faPiggyBank,\n  faPills: faPills,\n  faPizzaSlice: faPizzaSlice,\n  faPlaceOfWorship: faPlaceOfWorship,\n  faPlane: faPlane,\n  faPlaneArrival: faPlaneArrival,\n  faPlaneDeparture: faPlaneDeparture,\n  faPlaneSlash: faPlaneSlash,\n  faPlay: faPlay,\n  faPlayCircle: faPlayCircle,\n  faPlug: faPlug,\n  faPlus: faPlus,\n  faPlusCircle: faPlusCircle,\n  faPlusSquare: faPlusSquare,\n  faPodcast: faPodcast,\n  faPoll: faPoll,\n  faPollH: faPollH,\n  faPoo: faPoo,\n  faPooStorm: faPooStorm,\n  faPoop: faPoop,\n  faPortrait: faPortrait,\n  faPoundSign: faPoundSign,\n  faPowerOff: faPowerOff,\n  faPray: faPray,\n  faPrayingHands: faPrayingHands,\n  faPrescription: faPrescription,\n  faPrescriptionBottle: faPrescriptionBottle,\n  faPrescriptionBottleAlt: faPrescriptionBottleAlt,\n  faPrint: faPrint,\n  faProcedures: faProcedures,\n  faProjectDiagram: faProjectDiagram,\n  faPumpMedical: faPumpMedical,\n  faPumpSoap: faPumpSoap,\n  faPuzzlePiece: faPuzzlePiece,\n  faQrcode: faQrcode,\n  faQuestion: faQuestion,\n  faQuestionCircle: faQuestionCircle,\n  faQuidditch: faQuidditch,\n  faQuoteLeft: faQuoteLeft,\n  faQuoteRight: faQuoteRight,\n  faQuran: faQuran,\n  faRadiation: faRadiation,\n  faRadiationAlt: faRadiationAlt,\n  faRainbow: faRainbow,\n  faRandom: faRandom,\n  faReceipt: faReceipt,\n  faRecordVinyl: faRecordVinyl,\n  faRecycle: faRecycle,\n  faRedo: faRedo,\n  faRedoAlt: faRedoAlt,\n  faRegistered: faRegistered,\n  faRemoveFormat: faRemoveFormat,\n  faReply: faReply,\n  faReplyAll: faReplyAll,\n  faRepublican: faRepublican,\n  faRestroom: faRestroom,\n  faRetweet: faRetweet,\n  faRibbon: faRibbon,\n  faRing: faRing,\n  faRoad: faRoad,\n  faRobot: faRobot,\n  faRocket: faRocket,\n  faRoute: faRoute,\n  faRss: faRss,\n  faRssSquare: faRssSquare,\n  faRubleSign: faRubleSign,\n  faRuler: faRuler,\n  faRulerCombined: faRulerCombined,\n  faRulerHorizontal: faRulerHorizontal,\n  faRulerVertical: faRulerVertical,\n  faRunning: faRunning,\n  faRupeeSign: faRupeeSign,\n  faSadCry: faSadCry,\n  faSadTear: faSadTear,\n  faSatellite: faSatellite,\n  faSatelliteDish: faSatelliteDish,\n  faSave: faSave,\n  faSchool: faSchool,\n  faScrewdriver: faScrewdriver,\n  faScroll: faScroll,\n  faSdCard: faSdCard,\n  faSearch: faSearch,\n  faSearchDollar: faSearchDollar,\n  faSearchLocation: faSearchLocation,\n  faSearchMinus: faSearchMinus,\n  faSearchPlus: faSearchPlus,\n  faSeedling: faSeedling,\n  faServer: faServer,\n  faShapes: faShapes,\n  faShare: faShare,\n  faShareAlt: faShareAlt,\n  faShareAltSquare: faShareAltSquare,\n  faShareSquare: faShareSquare,\n  faShekelSign: faShekelSign,\n  faShieldAlt: faShieldAlt,\n  faShieldVirus: faShieldVirus,\n  faShip: faShip,\n  faShippingFast: faShippingFast,\n  faShoePrints: faShoePrints,\n  faShoppingBag: faShoppingBag,\n  faShoppingBasket: faShoppingBasket,\n  faShoppingCart: faShoppingCart,\n  faShower: faShower,\n  faShuttleVan: faShuttleVan,\n  faSign: faSign,\n  faSignInAlt: faSignInAlt,\n  faSignLanguage: faSignLanguage,\n  faSignOutAlt: faSignOutAlt,\n  faSignal: faSignal,\n  faSignature: faSignature,\n  faSimCard: faSimCard,\n  faSink: faSink,\n  faSitemap: faSitemap,\n  faSkating: faSkating,\n  faSkiing: faSkiing,\n  faSkiingNordic: faSkiingNordic,\n  faSkull: faSkull,\n  faSkullCrossbones: faSkullCrossbones,\n  faSlash: faSlash,\n  faSleigh: faSleigh,\n  faSlidersH: faSlidersH,\n  faSmile: faSmile,\n  faSmileBeam: faSmileBeam,\n  faSmileWink: faSmileWink,\n  faSmog: faSmog,\n  faSmoking: faSmoking,\n  faSmokingBan: faSmokingBan,\n  faSms: faSms,\n  faSnowboarding: faSnowboarding,\n  faSnowflake: faSnowflake,\n  faSnowman: faSnowman,\n  faSnowplow: faSnowplow,\n  faSoap: faSoap,\n  faSocks: faSocks,\n  faSolarPanel: faSolarPanel,\n  faSort: faSort,\n  faSortAlphaDown: faSortAlphaDown,\n  faSortAlphaDownAlt: faSortAlphaDownAlt,\n  faSortAlphaUp: faSortAlphaUp,\n  faSortAlphaUpAlt: faSortAlphaUpAlt,\n  faSortAmountDown: faSortAmountDown,\n  faSortAmountDownAlt: faSortAmountDownAlt,\n  faSortAmountUp: faSortAmountUp,\n  faSortAmountUpAlt: faSortAmountUpAlt,\n  faSortDown: faSortDown,\n  faSortNumericDown: faSortNumericDown,\n  faSortNumericDownAlt: faSortNumericDownAlt,\n  faSortNumericUp: faSortNumericUp,\n  faSortNumericUpAlt: faSortNumericUpAlt,\n  faSortUp: faSortUp,\n  faSpa: faSpa,\n  faSpaceShuttle: faSpaceShuttle,\n  faSpellCheck: faSpellCheck,\n  faSpider: faSpider,\n  faSpinner: faSpinner,\n  faSplotch: faSplotch,\n  faSprayCan: faSprayCan,\n  faSquare: faSquare,\n  faSquareFull: faSquareFull,\n  faSquareRootAlt: faSquareRootAlt,\n  faStamp: faStamp,\n  faStar: faStar,\n  faStarAndCrescent: faStarAndCrescent,\n  faStarHalf: faStarHalf,\n  faStarHalfAlt: faStarHalfAlt,\n  faStarOfDavid: faStarOfDavid,\n  faStarOfLife: faStarOfLife,\n  faStepBackward: faStepBackward,\n  faStepForward: faStepForward,\n  faStethoscope: faStethoscope,\n  faStickyNote: faStickyNote,\n  faStop: faStop,\n  faStopCircle: faStopCircle,\n  faStopwatch: faStopwatch,\n  faStopwatch20: faStopwatch20,\n  faStore: faStore,\n  faStoreAlt: faStoreAlt,\n  faStoreAltSlash: faStoreAltSlash,\n  faStoreSlash: faStoreSlash,\n  faStream: faStream,\n  faStreetView: faStreetView,\n  faStrikethrough: faStrikethrough,\n  faStroopwafel: faStroopwafel,\n  faSubscript: faSubscript,\n  faSubway: faSubway,\n  faSuitcase: faSuitcase,\n  faSuitcaseRolling: faSuitcaseRolling,\n  faSun: faSun,\n  faSuperscript: faSuperscript,\n  faSurprise: faSurprise,\n  faSwatchbook: faSwatchbook,\n  faSwimmer: faSwimmer,\n  faSwimmingPool: faSwimmingPool,\n  faSynagogue: faSynagogue,\n  faSync: faSync,\n  faSyncAlt: faSyncAlt,\n  faSyringe: faSyringe,\n  faTable: faTable,\n  faTableTennis: faTableTennis,\n  faTablet: faTablet,\n  faTabletAlt: faTabletAlt,\n  faTablets: faTablets,\n  faTachometerAlt: faTachometerAlt,\n  faTag: faTag,\n  faTags: faTags,\n  faTape: faTape,\n  faTasks: faTasks,\n  faTaxi: faTaxi,\n  faTeeth: faTeeth,\n  faTeethOpen: faTeethOpen,\n  faTemperatureHigh: faTemperatureHigh,\n  faTemperatureLow: faTemperatureLow,\n  faTenge: faTenge,\n  faTerminal: faTerminal,\n  faTextHeight: faTextHeight,\n  faTextWidth: faTextWidth,\n  faTh: faTh,\n  faThLarge: faThLarge,\n  faThList: faThList,\n  faTheaterMasks: faTheaterMasks,\n  faThermometer: faThermometer,\n  faThermometerEmpty: faThermometerEmpty,\n  faThermometerFull: faThermometerFull,\n  faThermometerHalf: faThermometerHalf,\n  faThermometerQuarter: faThermometerQuarter,\n  faThermometerThreeQuarters: faThermometerThreeQuarters,\n  faThumbsDown: faThumbsDown,\n  faThumbsUp: faThumbsUp,\n  faThumbtack: faThumbtack,\n  faTicketAlt: faTicketAlt,\n  faTimes: faTimes,\n  faTimesCircle: faTimesCircle,\n  faTint: faTint,\n  faTintSlash: faTintSlash,\n  faTired: faTired,\n  faToggleOff: faToggleOff,\n  faToggleOn: faToggleOn,\n  faToilet: faToilet,\n  faToiletPaper: faToiletPaper,\n  faToiletPaperSlash: faToiletPaperSlash,\n  faToolbox: faToolbox,\n  faTools: faTools,\n  faTooth: faTooth,\n  faTorah: faTorah,\n  faToriiGate: faToriiGate,\n  faTractor: faTractor,\n  faTrademark: faTrademark,\n  faTrafficLight: faTrafficLight,\n  faTrailer: faTrailer,\n  faTrain: faTrain,\n  faTram: faTram,\n  faTransgender: faTransgender,\n  faTransgenderAlt: faTransgenderAlt,\n  faTrash: faTrash,\n  faTrashAlt: faTrashAlt,\n  faTrashRestore: faTrashRestore,\n  faTrashRestoreAlt: faTrashRestoreAlt,\n  faTree: faTree,\n  faTrophy: faTrophy,\n  faTruck: faTruck,\n  faTruckLoading: faTruckLoading,\n  faTruckMonster: faTruckMonster,\n  faTruckMoving: faTruckMoving,\n  faTruckPickup: faTruckPickup,\n  faTshirt: faTshirt,\n  faTty: faTty,\n  faTv: faTv,\n  faUmbrella: faUmbrella,\n  faUmbrellaBeach: faUmbrellaBeach,\n  faUnderline: faUnderline,\n  faUndo: faUndo,\n  faUndoAlt: faUndoAlt,\n  faUniversalAccess: faUniversalAccess,\n  faUniversity: faUniversity,\n  faUnlink: faUnlink,\n  faUnlock: faUnlock,\n  faUnlockAlt: faUnlockAlt,\n  faUpload: faUpload,\n  faUser: faUser,\n  faUserAlt: faUserAlt,\n  faUserAltSlash: faUserAltSlash,\n  faUserAstronaut: faUserAstronaut,\n  faUserCheck: faUserCheck,\n  faUserCircle: faUserCircle,\n  faUserClock: faUserClock,\n  faUserCog: faUserCog,\n  faUserEdit: faUserEdit,\n  faUserFriends: faUserFriends,\n  faUserGraduate: faUserGraduate,\n  faUserInjured: faUserInjured,\n  faUserLock: faUserLock,\n  faUserMd: faUserMd,\n  faUserMinus: faUserMinus,\n  faUserNinja: faUserNinja,\n  faUserNurse: faUserNurse,\n  faUserPlus: faUserPlus,\n  faUserSecret: faUserSecret,\n  faUserShield: faUserShield,\n  faUserSlash: faUserSlash,\n  faUserTag: faUserTag,\n  faUserTie: faUserTie,\n  faUserTimes: faUserTimes,\n  faUsers: faUsers,\n  faUsersCog: faUsersCog,\n  faUsersSlash: faUsersSlash,\n  faUtensilSpoon: faUtensilSpoon,\n  faUtensils: faUtensils,\n  faVectorSquare: faVectorSquare,\n  faVenus: faVenus,\n  faVenusDouble: faVenusDouble,\n  faVenusMars: faVenusMars,\n  faVest: faVest,\n  faVestPatches: faVestPatches,\n  faVial: faVial,\n  faVials: faVials,\n  faVideo: faVideo,\n  faVideoSlash: faVideoSlash,\n  faVihara: faVihara,\n  faVirus: faVirus,\n  faVirusSlash: faVirusSlash,\n  faViruses: faViruses,\n  faVoicemail: faVoicemail,\n  faVolleyballBall: faVolleyballBall,\n  faVolumeDown: faVolumeDown,\n  faVolumeMute: faVolumeMute,\n  faVolumeOff: faVolumeOff,\n  faVolumeUp: faVolumeUp,\n  faVoteYea: faVoteYea,\n  faVrCardboard: faVrCardboard,\n  faWalking: faWalking,\n  faWallet: faWallet,\n  faWarehouse: faWarehouse,\n  faWater: faWater,\n  faWaveSquare: faWaveSquare,\n  faWeight: faWeight,\n  faWeightHanging: faWeightHanging,\n  faWheelchair: faWheelchair,\n  faWifi: faWifi,\n  faWind: faWind,\n  faWindowClose: faWindowClose,\n  faWindowMaximize: faWindowMaximize,\n  faWindowMinimize: faWindowMinimize,\n  faWindowRestore: faWindowRestore,\n  faWineBottle: faWineBottle,\n  faWineGlass: faWineGlass,\n  faWineGlassAlt: faWineGlassAlt,\n  faWonSign: faWonSign,\n  faWrench: faWrench,\n  faXRay: faXRay,\n  faYenSign: faYenSign,\n  faYinYang: faYinYang\n};\n\nexport { _iconsCache as fas, prefix, faAd, faAddressBook, faAddressCard, faAdjust, faAirFreshener, faAlignCenter, faAlignJustify, faAlignLeft, faAlignRight, faAllergies, faAmbulance, faAmericanSignLanguageInterpreting, faAnchor, faAngleDoubleDown, faAngleDoubleLeft, faAngleDoubleRight, faAngleDoubleUp, faAngleDown, faAngleLeft, faAngleRight, faAngleUp, faAngry, faAnkh, faAppleAlt, faArchive, faArchway, faArrowAltCircleDown, faArrowAltCircleLeft, faArrowAltCircleRight, faArrowAltCircleUp, faArrowCircleDown, faArrowCircleLeft, faArrowCircleRight, faArrowCircleUp, faArrowDown, faArrowLeft, faArrowRight, faArrowUp, faArrowsAlt, faArrowsAltH, faArrowsAltV, faAssistiveListeningSystems, faAsterisk, faAt, faAtlas, faAtom, faAudioDescription, faAward, faBaby, faBabyCarriage, faBackspace, faBackward, faBacon, faBacteria, faBacterium, faBahai, faBalanceScale, faBalanceScaleLeft, faBalanceScaleRight, faBan, faBandAid, faBarcode, faBars, faBaseballBall, faBasketballBall, faBath, faBatteryEmpty, faBatteryFull, faBatteryHalf, faBatteryQuarter, faBatteryThreeQuarters, faBed, faBeer, faBell, faBellSlash, faBezierCurve, faBible, faBicycle, faBiking, faBinoculars, faBiohazard, faBirthdayCake, faBlender, faBlenderPhone, faBlind, faBlog, faBold, faBolt, faBomb, faBone, faBong, faBook, faBookDead, faBookMedical, faBookOpen, faBookReader, faBookmark, faBorderAll, faBorderNone, faBorderStyle, faBowlingBall, faBox, faBoxOpen, faBoxTissue, faBoxes, faBraille, faBrain, faBreadSlice, faBriefcase, faBriefcaseMedical, faBroadcastTower, faBroom, faBrush, faBug, faBuilding, faBullhorn, faBullseye, faBurn, faBus, faBusAlt, faBusinessTime, faCalculator, faCalendar, faCalendarAlt, faCalendarCheck, faCalendarDay, faCalendarMinus, faCalendarPlus, faCalendarTimes, faCalendarWeek, faCamera, faCameraRetro, faCampground, faCandyCane, faCannabis, faCapsules, faCar, faCarAlt, faCarBattery, faCarCrash, faCarSide, faCaravan, faCaretDown, faCaretLeft, faCaretRight, faCaretSquareDown, faCaretSquareLeft, faCaretSquareRight, faCaretSquareUp, faCaretUp, faCarrot, faCartArrowDown, faCartPlus, faCashRegister, faCat, faCertificate, faChair, faChalkboard, faChalkboardTeacher, faChargingStation, faChartArea, faChartBar, faChartLine, faChartPie, faCheck, faCheckCircle, faCheckDouble, faCheckSquare, faCheese, faChess, faChessBishop, faChessBoard, faChessKing, faChessKnight, faChessPawn, faChessQueen, faChessRook, faChevronCircleDown, faChevronCircleLeft, faChevronCircleRight, faChevronCircleUp, faChevronDown, faChevronLeft, faChevronRight, faChevronUp, faChild, faChurch, faCircle, faCircleNotch, faCity, faClinicMedical, faClipboard, faClipboardCheck, faClipboardList, faClock, faClone, faClosedCaptioning, faCloud, faCloudDownloadAlt, faCloudMeatball, faCloudMoon, faCloudMoonRain, faCloudRain, faCloudShowersHeavy, faCloudSun, faCloudSunRain, faCloudUploadAlt, faCocktail, faCode, faCodeBranch, faCoffee, faCog, faCogs, faCoins, faColumns, faComment, faCommentAlt, faCommentDollar, faCommentDots, faCommentMedical, faCommentSlash, faComments, faCommentsDollar, faCompactDisc, faCompass, faCompress, faCompressAlt, faCompressArrowsAlt, faConciergeBell, faCookie, faCookieBite, faCopy, faCopyright, faCouch, faCreditCard, faCrop, faCropAlt, faCross, faCrosshairs, faCrow, faCrown, faCrutch, faCube, faCubes, faCut, faDatabase, faDeaf, faDemocrat, faDesktop, faDharmachakra, faDiagnoses, faDice, faDiceD20, faDiceD6, faDiceFive, faDiceFour, faDiceOne, faDiceSix, faDiceThree, faDiceTwo, faDigitalTachograph, faDirections, faDisease, faDivide, faDizzy, faDna, faDog, faDollarSign, faDolly, faDollyFlatbed, faDonate, faDoorClosed, faDoorOpen, faDotCircle, faDove, faDownload, faDraftingCompass, faDragon, faDrawPolygon, faDrum, faDrumSteelpan, faDrumstickBite, faDumbbell, faDumpster, faDumpsterFire, faDungeon, faEdit, faEgg, faEject, faEllipsisH, faEllipsisV, faEnvelope, faEnvelopeOpen, faEnvelopeOpenText, faEnvelopeSquare, faEquals, faEraser, faEthernet, faEuroSign, faExchangeAlt, faExclamation, faExclamationCircle, faExclamationTriangle, faExpand, faExpandAlt, faExpandArrowsAlt, faExternalLinkAlt, faExternalLinkSquareAlt, faEye, faEyeDropper, faEyeSlash, faFan, faFastBackward, faFastForward, faFaucet, faFax, faFeather, faFeatherAlt, faFemale, faFighterJet, faFile, faFileAlt, faFileArchive, faFileAudio, faFileCode, faFileContract, faFileCsv, faFileDownload, faFileExcel, faFileExport, faFileImage, faFileImport, faFileInvoice, faFileInvoiceDollar, faFileMedical, faFileMedicalAlt, faFilePdf, faFilePowerpoint, faFilePrescription, faFileSignature, faFileUpload, faFileVideo, faFileWord, faFill, faFillDrip, faFilm, faFilter, faFingerprint, faFire, faFireAlt, faFireExtinguisher, faFirstAid, faFish, faFistRaised, faFlag, faFlagCheckered, faFlagUsa, faFlask, faFlushed, faFolder, faFolderMinus, faFolderOpen, faFolderPlus, faFont, faFontAwesomeLogoFull, faFootballBall, faForward, faFrog, faFrown, faFrownOpen, faFunnelDollar, faFutbol, faGamepad, faGasPump, faGavel, faGem, faGenderless, faGhost, faGift, faGifts, faGlassCheers, faGlassMartini, faGlassMartiniAlt, faGlassWhiskey, faGlasses, faGlobe, faGlobeAfrica, faGlobeAmericas, faGlobeAsia, faGlobeEurope, faGolfBall, faGopuram, faGraduationCap, faGreaterThan, faGreaterThanEqual, faGrimace, faGrin, faGrinAlt, faGrinBeam, faGrinBeamSweat, faGrinHearts, faGrinSquint, faGrinSquintTears, faGrinStars, faGrinTears, faGrinTongue, faGrinTongueSquint, faGrinTongueWink, faGrinWink, faGripHorizontal, faGripLines, faGripLinesVertical, faGripVertical, faGuitar, faHSquare, faHamburger, faHammer, faHamsa, faHandHolding, faHandHoldingHeart, faHandHoldingMedical, faHandHoldingUsd, faHandHoldingWater, faHandLizard, faHandMiddleFinger, faHandPaper, faHandPeace, faHandPointDown, faHandPointLeft, faHandPointRight, faHandPointUp, faHandPointer, faHandRock, faHandScissors, faHandSparkles, faHandSpock, faHands, faHandsHelping, faHandsWash, faHandshake, faHandshakeAltSlash, faHandshakeSlash, faHanukiah, faHardHat, faHashtag, faHatCowboy, faHatCowboySide, faHatWizard, faHdd, faHeadSideCough, faHeadSideCoughSlash, faHeadSideMask, faHeadSideVirus, faHeading, faHeadphones, faHeadphonesAlt, faHeadset, faHeart, faHeartBroken, faHeartbeat, faHelicopter, faHighlighter, faHiking, faHippo, faHistory, faHockeyPuck, faHollyBerry, faHome, faHorse, faHorseHead, faHospital, faHospitalAlt, faHospitalSymbol, faHospitalUser, faHotTub, faHotdog, faHotel, faHourglass, faHourglassEnd, faHourglassHalf, faHourglassStart, faHouseDamage, faHouseUser, faHryvnia, faICursor, faIceCream, faIcicles, faIcons, faIdBadge, faIdCard, faIdCardAlt, faIgloo, faImage, faImages, faInbox, faIndent, faIndustry, faInfinity, faInfo, faInfoCircle, faItalic, faJedi, faJoint, faJournalWhills, faKaaba, faKey, faKeyboard, faKhanda, faKiss, faKissBeam, faKissWinkHeart, faKiwiBird, faLandmark, faLanguage, faLaptop, faLaptopCode, faLaptopHouse, faLaptopMedical, faLaugh, faLaughBeam, faLaughSquint, faLaughWink, faLayerGroup, faLeaf, faLemon, faLessThan, faLessThanEqual, faLevelDownAlt, faLevelUpAlt, faLifeRing, faLightbulb, faLink, faLiraSign, faList, faListAlt, faListOl, faListUl, faLocationArrow, faLock, faLockOpen, faLongArrowAltDown, faLongArrowAltLeft, faLongArrowAltRight, faLongArrowAltUp, faLowVision, faLuggageCart, faLungs, faLungsVirus, faMagic, faMagnet, faMailBulk, faMale, faMap, faMapMarked, faMapMarkedAlt, faMapMarker, faMapMarkerAlt, faMapPin, faMapSigns, faMarker, faMars, faMarsDouble, faMarsStroke, faMarsStrokeH, faMarsStrokeV, faMask, faMedal, faMedkit, faMeh, faMehBlank, faMehRollingEyes, faMemory, faMenorah, faMercury, faMeteor, faMicrochip, faMicrophone, faMicrophoneAlt, faMicrophoneAltSlash, faMicrophoneSlash, faMicroscope, faMinus, faMinusCircle, faMinusSquare, faMitten, faMobile, faMobileAlt, faMoneyBill, faMoneyBillAlt, faMoneyBillWave, faMoneyBillWaveAlt, faMoneyCheck, faMoneyCheckAlt, faMonument, faMoon, faMortarPestle, faMosque, faMotorcycle, faMountain, faMouse, faMousePointer, faMugHot, faMusic, faNetworkWired, faNeuter, faNewspaper, faNotEqual, faNotesMedical, faObjectGroup, faObjectUngroup, faOilCan, faOm, faOtter, faOutdent, faPager, faPaintBrush, faPaintRoller, faPalette, faPallet, faPaperPlane, faPaperclip, faParachuteBox, faParagraph, faParking, faPassport, faPastafarianism, faPaste, faPause, faPauseCircle, faPaw, faPeace, faPen, faPenAlt, faPenFancy, faPenNib, faPenSquare, faPencilAlt, faPencilRuler, faPeopleArrows, faPeopleCarry, faPepperHot, faPercent, faPercentage, faPersonBooth, faPhone, faPhoneAlt, faPhoneSlash, faPhoneSquare, faPhoneSquareAlt, faPhoneVolume, faPhotoVideo, faPiggyBank, faPills, faPizzaSlice, faPlaceOfWorship, faPlane, faPlaneArrival, faPlaneDeparture, faPlaneSlash, faPlay, faPlayCircle, faPlug, faPlus, faPlusCircle, faPlusSquare, faPodcast, faPoll, faPollH, faPoo, faPooStorm, faPoop, faPortrait, faPoundSign, faPowerOff, faPray, faPrayingHands, faPrescription, faPrescriptionBottle, faPrescriptionBottleAlt, faPrint, faProcedures, faProjectDiagram, faPumpMedical, faPumpSoap, faPuzzlePiece, faQrcode, faQuestion, faQuestionCircle, faQuidditch, faQuoteLeft, faQuoteRight, faQuran, faRadiation, faRadiationAlt, faRainbow, faRandom, faReceipt, faRecordVinyl, faRecycle, faRedo, faRedoAlt, faRegistered, faRemoveFormat, faReply, faReplyAll, faRepublican, faRestroom, faRetweet, faRibbon, faRing, faRoad, faRobot, faRocket, faRoute, faRss, faRssSquare, faRubleSign, faRuler, faRulerCombined, faRulerHorizontal, faRulerVertical, faRunning, faRupeeSign, faSadCry, faSadTear, faSatellite, faSatelliteDish, faSave, faSchool, faScrewdriver, faScroll, faSdCard, faSearch, faSearchDollar, faSearchLocation, faSearchMinus, faSearchPlus, faSeedling, faServer, faShapes, faShare, faShareAlt, faShareAltSquare, faShareSquare, faShekelSign, faShieldAlt, faShieldVirus, faShip, faShippingFast, faShoePrints, faShoppingBag, faShoppingBasket, faShoppingCart, faShower, faShuttleVan, faSign, faSignInAlt, faSignLanguage, faSignOutAlt, faSignal, faSignature, faSimCard, faSink, faSitemap, faSkating, faSkiing, faSkiingNordic, faSkull, faSkullCrossbones, faSlash, faSleigh, faSlidersH, faSmile, faSmileBeam, faSmileWink, faSmog, faSmoking, faSmokingBan, faSms, faSnowboarding, faSnowflake, faSnowman, faSnowplow, faSoap, faSocks, faSolarPanel, faSort, faSortAlphaDown, faSortAlphaDownAlt, faSortAlphaUp, faSortAlphaUpAlt, faSortAmountDown, faSortAmountDownAlt, faSortAmountUp, faSortAmountUpAlt, faSortDown, faSortNumericDown, faSortNumericDownAlt, faSortNumericUp, faSortNumericUpAlt, faSortUp, faSpa, faSpaceShuttle, faSpellCheck, faSpider, faSpinner, faSplotch, faSprayCan, faSquare, faSquareFull, faSquareRootAlt, faStamp, faStar, faStarAndCrescent, faStarHalf, faStarHalfAlt, faStarOfDavid, faStarOfLife, faStepBackward, faStepForward, faStethoscope, faStickyNote, faStop, faStopCircle, faStopwatch, faStopwatch20, faStore, faStoreAlt, faStoreAltSlash, faStoreSlash, faStream, faStreetView, faStrikethrough, faStroopwafel, faSubscript, faSubway, faSuitcase, faSuitcaseRolling, faSun, faSuperscript, faSurprise, faSwatchbook, faSwimmer, faSwimmingPool, faSynagogue, faSync, faSyncAlt, faSyringe, faTable, faTableTennis, faTablet, faTabletAlt, faTablets, faTachometerAlt, faTag, faTags, faTape, faTasks, faTaxi, faTeeth, faTeethOpen, faTemperatureHigh, faTemperatureLow, faTenge, faTerminal, faTextHeight, faTextWidth, faTh, faThLarge, faThList, faTheaterMasks, faThermometer, faThermometerEmpty, faThermometerFull, faThermometerHalf, faThermometerQuarter, faThermometerThreeQuarters, faThumbsDown, faThumbsUp, faThumbtack, faTicketAlt, faTimes, faTimesCircle, faTint, faTintSlash, faTired, faToggleOff, faToggleOn, faToilet, faToiletPaper, faToiletPaperSlash, faToolbox, faTools, faTooth, faTorah, faToriiGate, faTractor, faTrademark, faTrafficLight, faTrailer, faTrain, faTram, faTransgender, faTransgenderAlt, faTrash, faTrashAlt, faTrashRestore, faTrashRestoreAlt, faTree, faTrophy, faTruck, faTruckLoading, faTruckMonster, faTruckMoving, faTruckPickup, faTshirt, faTty, faTv, faUmbrella, faUmbrellaBeach, faUnderline, faUndo, faUndoAlt, faUniversalAccess, faUniversity, faUnlink, faUnlock, faUnlockAlt, faUpload, faUser, faUserAlt, faUserAltSlash, faUserAstronaut, faUserCheck, faUserCircle, faUserClock, faUserCog, faUserEdit, faUserFriends, faUserGraduate, faUserInjured, faUserLock, faUserMd, faUserMinus, faUserNinja, faUserNurse, faUserPlus, faUserSecret, faUserShield, faUserSlash, faUserTag, faUserTie, faUserTimes, faUsers, faUsersCog, faUsersSlash, faUtensilSpoon, faUtensils, faVectorSquare, faVenus, faVenusDouble, faVenusMars, faVest, faVestPatches, faVial, faVials, faVideo, faVideoSlash, faVihara, faVirus, faVirusSlash, faViruses, faVoicemail, faVolleyballBall, faVolumeDown, faVolumeMute, faVolumeOff, faVolumeUp, faVoteYea, faVrCardboard, faWalking, faWallet, faWarehouse, faWater, faWaveSquare, faWeight, faWeightHanging, faWheelchair, faWifi, faWind, faWindowClose, faWindowMaximize, faWindowMinimize, faWindowRestore, faWineBottle, faWineGlass, faWineGlassAlt, faWonSign, faWrench, faXRay, faYenSign, faYinYang };\n","import {\n  WithModuleProps,\n  LinkedVisualConsoleProps,\n  AnyObject,\n  WithAgentProps\n} from \"../lib/types\";\nimport { modulePropsDecoder, linkedVCPropsDecoder, t } from \"../lib\";\nimport Item, { itemBasePropsDecoder, ItemType, ItemProps } from \"../Item\";\nimport { FormContainer, InputGroup } from \"../Form\";\nimport fontAwesomeIcon from \"../lib/FontAwesomeIcon\";\nimport { faTrashAlt, faPlusCircle } from \"@fortawesome/free-solid-svg-icons\";\n\nexport type ColorCloudProps = {\n  type: ItemType.COLOR_CLOUD;\n  color: string;\n  defaultColor: string;\n  colorRanges: {\n    color: string;\n    fromValue: number;\n    toValue: number;\n  }[];\n  // TODO: Add the rest of the color cloud values?\n} & ItemProps &\n  WithAgentProps &\n  WithModuleProps &\n  LinkedVisualConsoleProps;\n\n/**\n * Build a valid typed object from a raw object.\n * This will allow us to ensure the type safety.\n *\n * @param data Raw object.\n * @return An object representing the static graph props.\n * @throws Will throw a TypeError if some property\n * is missing from the raw object or have an invalid type.\n */\nexport function colorCloudPropsDecoder(\n  data: AnyObject\n): ColorCloudProps | never {\n  // TODO: Validate the color.\n  if (typeof data.color !== \"string\" || data.color.length === 0) {\n    throw new TypeError(\"invalid color.\");\n  }\n\n  return {\n    ...itemBasePropsDecoder(data), // Object spread. It will merge the properties of the two objects.\n    type: ItemType.COLOR_CLOUD,\n    color: data.color,\n    defaultColor: data.defaultColor,\n    colorRanges: data.colorRanges,\n    ...modulePropsDecoder(data), // Object spread. It will merge the properties of the two objects.\n    ...linkedVCPropsDecoder(data) // Object spread. It will merge the properties of the two objects.\n  };\n}\n\n/**\n * Class to add item to the Color cloud item form\n * This item consists of a label and a color type input color.\n * Element default color is stored in the color property\n */\nclass ColorInputGroup extends InputGroup<Partial<ColorCloudProps>> {\n  protected createContent(): HTMLElement | HTMLElement[] {\n    const generalDiv = document.createElement(\"div\");\n    generalDiv.className = \"div-input-group\";\n\n    const colorLabel = document.createElement(\"label\");\n    colorLabel.textContent = t(\"Default color\");\n\n    generalDiv.appendChild(colorLabel);\n\n    const ColorInput = document.createElement(\"input\");\n    ColorInput.type = \"color\";\n    ColorInput.required = true;\n\n    ColorInput.value = `${this.currentData.defaultColor ||\n      this.initialData.defaultColor ||\n      \"#000000\"}`;\n\n    ColorInput.addEventListener(\"change\", e => {\n      this.updateData({\n        defaultColor: (e.target as HTMLInputElement).value\n      });\n    });\n\n    generalDiv.appendChild(ColorInput);\n\n    return generalDiv;\n  }\n}\n\ntype ColorRanges = ColorCloudProps[\"colorRanges\"];\ntype ColorRange = ColorRanges[0];\n\nclass RangesInputGroup extends InputGroup<Partial<ColorCloudProps>> {\n  protected createContent(): HTMLElement | HTMLElement[] {\n    const generalDiv = document.createElement(\"div\");\n    generalDiv.className = \"div-input-group div-ranges-input-group\";\n\n    const rangesLabel = this.createLabel(\"Ranges\");\n\n    generalDiv.appendChild(rangesLabel);\n\n    const rangesControlsContainer = document.createElement(\"div\");\n    const createdRangesContainer = document.createElement(\"div\");\n\n    generalDiv.appendChild(createdRangesContainer);\n    generalDiv.appendChild(rangesControlsContainer);\n\n    const colorRanges =\n      this.currentData.colorRanges || this.initialData.colorRanges || [];\n\n    let buildRanges: (ranges: ColorRanges) => void;\n\n    const handleRangeUpdatePartial = (index: number) => (\n      range: ColorRange\n    ): void => {\n      const colorRanges =\n        this.currentData.colorRanges || this.initialData.colorRanges || [];\n      this.updateData({\n        colorRanges: [\n          ...colorRanges.slice(0, index),\n          range,\n          ...colorRanges.slice(index + 1)\n        ]\n      });\n    };\n\n    const handleDelete = (index: number) => () => {\n      const colorRanges =\n        this.currentData.colorRanges || this.initialData.colorRanges || [];\n      const newRanges = [\n        ...colorRanges.slice(0, index),\n        ...colorRanges.slice(index + 1)\n      ];\n\n      this.updateData({ colorRanges: newRanges });\n      buildRanges(newRanges);\n    };\n\n    const handleCreate = (range: ColorRange): void => {\n      const colorRanges =\n        this.currentData.colorRanges || this.initialData.colorRanges || [];\n      const newRanges = [...colorRanges, range];\n      this.updateData({ colorRanges: newRanges });\n      buildRanges(newRanges);\n    };\n\n    buildRanges = ranges => {\n      createdRangesContainer.innerHTML = \"\";\n      ranges.forEach((colorRange, index) =>\n        createdRangesContainer.appendChild(\n          this.rangeContainer(\n            colorRange,\n            handleRangeUpdatePartial(index),\n            handleDelete(index)\n          )\n        )\n      );\n    };\n\n    buildRanges(colorRanges);\n\n    rangesControlsContainer.appendChild(\n      this.initialRangeContainer(handleCreate)\n    );\n\n    return generalDiv;\n  }\n\n  private initialRangeContainer(onCreate: (range: ColorRange) => void) {\n    // TODO: Document\n    const initialState = { color: \"#ffffff\" };\n\n    let state: Partial<ColorRange> = { ...initialState };\n\n    const handleFromValue = (value: ColorRange[\"fromValue\"]): void => {\n      state.fromValue = value;\n    };\n    const handleToValue = (value: ColorRange[\"toValue\"]): void => {\n      state.toValue = value;\n    };\n    const handleColor = (value: ColorRange[\"color\"]): void => {\n      state.color = value;\n    };\n\n    // User defined type guard.\n    // Docs: https://www.typescriptlang.org/docs/handbook/advanced-types.html#user-defined-type-guards\n    const isValid = (range: Partial<ColorRange>): range is ColorRange =>\n      typeof range.color !== \"undefined\" &&\n      typeof range.toValue !== \"undefined\" &&\n      typeof range.fromValue !== \"undefined\";\n\n    const rangesContainer = document.createElement(\"div\");\n\n    // Div From value.\n    const rangesContainerFromValue = document.createElement(\"div\");\n    const rangesLabelFromValue = this.createLabel(\"From Value\");\n    const rangesInputFromValue = this.createInputNumber(null, handleFromValue);\n    rangesContainerFromValue.appendChild(rangesLabelFromValue);\n    rangesContainerFromValue.appendChild(rangesInputFromValue);\n    rangesContainer.appendChild(rangesContainerFromValue);\n\n    // Div To Value.\n    const rangesDivContainerToValue = document.createElement(\"div\");\n    const rangesLabelToValue = this.createLabel(\"To Value\");\n    const rangesInputToValue = this.createInputNumber(null, handleToValue);\n    rangesContainerFromValue.appendChild(rangesLabelToValue);\n    rangesContainerFromValue.appendChild(rangesInputToValue);\n    rangesContainer.appendChild(rangesDivContainerToValue);\n\n    // Div Color.\n    const rangesDivContainerColor = document.createElement(\"div\");\n    const rangesLabelColor = this.createLabel(\"Color\");\n    const rangesInputColor = this.createInputColor(\n      initialState.color,\n      handleColor\n    );\n    rangesContainerFromValue.appendChild(rangesLabelColor);\n    rangesContainerFromValue.appendChild(rangesInputColor);\n    rangesContainer.appendChild(rangesDivContainerColor);\n\n    // Button delete.\n    const createBtn = document.createElement(\"a\");\n    createBtn.appendChild(\n      fontAwesomeIcon(faPlusCircle, t(\"Create color range\"), {\n        size: \"small\",\n        color: \"#565656\"\n      })\n    );\n\n    const handleCreate = () => {\n      if (isValid(state)) onCreate(state);\n      state = initialState;\n      rangesInputFromValue.value = `${state.fromValue || \"\"}`;\n      rangesInputToValue.value = `${state.toValue || \"\"}`;\n      rangesInputColor.value = `${state.color}`;\n    };\n\n    createBtn.addEventListener(\"click\", handleCreate);\n\n    rangesContainer.appendChild(createBtn);\n\n    return rangesContainer;\n  }\n\n  private rangeContainer(\n    colorRange: ColorRange,\n    onUpdate: (range: ColorRange) => void,\n    onDelete: () => void\n  ): HTMLDivElement {\n    // TODO: Document\n    const state = { ...colorRange };\n\n    const handleFromValue = (value: ColorRange[\"fromValue\"]): void => {\n      state.fromValue = value;\n      onUpdate({ ...state });\n    };\n    const handleToValue = (value: ColorRange[\"toValue\"]): void => {\n      state.toValue = value;\n      onUpdate({ ...state });\n    };\n    const handleColor = (value: ColorRange[\"color\"]): void => {\n      state.color = value;\n      onUpdate({ ...state });\n    };\n\n    const rangesContainer = document.createElement(\"div\");\n\n    // Div From value.\n    const rangesContainerFromValue = document.createElement(\"div\");\n    const rangesLabelFromValue = this.createLabel(\"From Value\");\n    const rangesInputFromValue = this.createInputNumber(\n      colorRange.fromValue,\n      handleFromValue\n    );\n    rangesContainerFromValue.appendChild(rangesLabelFromValue);\n    rangesContainerFromValue.appendChild(rangesInputFromValue);\n    rangesContainer.appendChild(rangesContainerFromValue);\n\n    // Div To Value.\n    const rangesDivContainerToValue = document.createElement(\"div\");\n    const rangesLabelToValue = this.createLabel(\"To Value\");\n    const rangesInputToValue = this.createInputNumber(\n      colorRange.toValue,\n      handleToValue\n    );\n    rangesContainerFromValue.appendChild(rangesLabelToValue);\n    rangesContainerFromValue.appendChild(rangesInputToValue);\n    rangesContainer.appendChild(rangesDivContainerToValue);\n\n    // Div Color.\n    const rangesDivContainerColor = document.createElement(\"div\");\n    const rangesLabelColor = this.createLabel(\"Color\");\n    const rangesInputColor = this.createInputColor(\n      colorRange.color,\n      handleColor\n    );\n    rangesContainerFromValue.appendChild(rangesLabelColor);\n    rangesContainerFromValue.appendChild(rangesInputColor);\n    rangesContainer.appendChild(rangesDivContainerColor);\n\n    // Button delete.\n    const deleteBtn = document.createElement(\"a\");\n    deleteBtn.appendChild(\n      fontAwesomeIcon(faTrashAlt, t(\"Delete color range\"), {\n        size: \"small\",\n        color: \"#565656\"\n      })\n    );\n    deleteBtn.addEventListener(\"click\", onDelete);\n\n    rangesContainer.appendChild(deleteBtn);\n\n    return rangesContainer;\n  }\n\n  private createLabel(text: string): HTMLLabelElement {\n    const label = document.createElement(\"label\");\n    label.textContent = t(text);\n    return label;\n  }\n\n  private createInputNumber(\n    value: number | null,\n    onUpdate: (value: number) => void\n  ): HTMLInputElement {\n    const input = document.createElement(\"input\");\n    input.type = \"number\";\n    if (value !== null) input.value = `${value}`;\n    input.addEventListener(\"change\", e => {\n      const value = parseInt((e.target as HTMLInputElement).value);\n      if (!isNaN(value)) onUpdate(value);\n    });\n\n    return input;\n  }\n\n  private createInputColor(\n    value: string | null,\n    onUpdate: (value: string) => void\n  ): HTMLInputElement {\n    const input = document.createElement(\"input\");\n    input.type = \"color\";\n    if (value !== null) input.value = value;\n    input.addEventListener(\"change\", e =>\n      onUpdate((e.target as HTMLInputElement).value)\n    );\n\n    return input;\n  }\n}\n\nconst svgNS = \"http://www.w3.org/2000/svg\";\n\nexport default class ColorCloud extends Item<ColorCloudProps> {\n  protected createDomElement(): HTMLElement {\n    const container: HTMLDivElement = document.createElement(\"div\");\n    container.className = \"color-cloud\";\n\n    // Add the SVG.\n    container.append(this.createSvgElement());\n\n    return container;\n  }\n\n  public resizeElement(width: number): void {\n    super.resizeElement(width, width);\n  }\n\n  public createSvgElement(): SVGSVGElement {\n    const gradientId = `grad_${this.props.id}`;\n    // SVG container.\n    const svg = document.createElementNS(svgNS, \"svg\");\n    // Auto resize SVG using the view box magic: https://css-tricks.com/scale-svg/\n    svg.setAttribute(\"viewBox\", \"0 0 100 100\");\n\n    // Defs.\n    const defs = document.createElementNS(svgNS, \"defs\");\n    // Radial gradient.\n    const radialGradient = document.createElementNS(svgNS, \"radialGradient\");\n    radialGradient.setAttribute(\"id\", gradientId);\n    radialGradient.setAttribute(\"cx\", \"50%\");\n    radialGradient.setAttribute(\"cy\", \"50%\");\n    radialGradient.setAttribute(\"r\", \"50%\");\n    radialGradient.setAttribute(\"fx\", \"50%\");\n    radialGradient.setAttribute(\"fy\", \"50%\");\n    // Stops.\n    const stop0 = document.createElementNS(svgNS, \"stop\");\n    stop0.setAttribute(\"offset\", \"0%\");\n    stop0.setAttribute(\n      \"style\",\n      `stop-color:${this.props.color};stop-opacity:0.9`\n    );\n    const stop100 = document.createElementNS(svgNS, \"stop\");\n    stop100.setAttribute(\"offset\", \"100%\");\n    stop100.setAttribute(\n      \"style\",\n      `stop-color:${this.props.color};stop-opacity:0`\n    );\n    // Circle.\n    const circle = document.createElementNS(svgNS, \"circle\");\n    circle.setAttribute(\"fill\", `url(#${gradientId})`);\n    circle.setAttribute(\"cx\", \"50%\");\n    circle.setAttribute(\"cy\", \"50%\");\n    circle.setAttribute(\"r\", \"50%\");\n\n    // Append elements.\n    radialGradient.append(stop0, stop100);\n    defs.append(radialGradient);\n    svg.append(defs, circle);\n\n    if (\n      this.props.agentDisabled === true ||\n      this.props.moduleDisabled === true\n    ) {\n      svg.setAttribute(\"opacity\", \"0.2\");\n    }\n\n    return svg;\n  }\n\n  /**\n   * @override function to add or remove inputsGroups those that are not necessary.\n   * Add to:\n   * ColorInputGroup\n   * RangesInputGroup\n   */\n  public getFormContainer(): FormContainer {\n    return ColorCloud.getFormContainer(this.props);\n  }\n\n  public static getFormContainer(\n    props: Partial<ColorCloudProps>\n  ): FormContainer {\n    const formContainer = super.getFormContainer(props);\n    formContainer.removeInputGroup(\"label\");\n\n    formContainer.addInputGroup(new ColorInputGroup(\"color-cloud\", props), 3);\n    formContainer.addInputGroup(new RangesInputGroup(\"ranges-cloud\", props), 4);\n\n    return formContainer;\n  }\n}\n","import { AnyObject, Position, Size, ItemMeta } from \"../lib/types\";\nimport {\n  parseIntOr,\n  notEmptyStringOr,\n  debounce,\n  addMovementListener\n} from \"../lib\";\nimport Item, { ItemType, ItemProps, itemBasePropsDecoder } from \"../Item\";\nimport TypedEvent, { Listener, Disposable } from \"../lib/TypedEvent\";\n\nexport interface LineProps extends ItemProps {\n  // Overrided properties.\n  type: number;\n  label: null;\n  isLinkEnabled: false;\n  parentId: null;\n  aclGroupId: null;\n  // Custom properties.\n  startPosition: Position;\n  endPosition: Position;\n  lineWidth: number;\n  color: string | null;\n  viewportOffsetX: number;\n  viewportOffsetY: number;\n  labelEnd: string;\n  labelStart: string;\n  linkedEnd: number | null;\n  linkedStart: number | null;\n  labelEndWidth: number;\n  labelEndHeight: number;\n  labelStartWidth: number;\n  labelStartHeight: number;\n}\n\n/**\n * Build a valid typed object from a raw object.\n * This will allow us to ensure the type safety.\n *\n * @param data Raw object.\n * @return An object representing the item props.\n * @throws Will throw a TypeError if some property\n * is missing from the raw object or have an invalid type.\n */\nexport function linePropsDecoder(data: AnyObject): LineProps | never {\n  const props: LineProps = {\n    ...itemBasePropsDecoder({ ...data, width: 1, height: 1 }), // Object spread. It will merge the properties of the two objects.\n    type: ItemType.LINE_ITEM,\n    label: null,\n    isLinkEnabled: false,\n    parentId: null,\n    aclGroupId: null,\n    // Initialize Position & Size.\n    x: 0,\n    y: 0,\n    width: 0,\n    height: 0,\n    // Custom properties.\n    startPosition: {\n      x: parseIntOr(data.startX, 0),\n      y: parseIntOr(data.startY, 0)\n    },\n    endPosition: {\n      x: parseIntOr(data.endX, 0),\n      y: parseIntOr(data.endY, 0)\n    },\n    lineWidth: parseIntOr(data.lineWidth || data.borderWidth, 1),\n    color: notEmptyStringOr(data.borderColor || data.color, null),\n    viewportOffsetX: 0,\n    viewportOffsetY: 0,\n    labelEnd: notEmptyStringOr(data.labelEnd, \"\"),\n    labelEndWidth: parseIntOr(data.labelEndWidth, 0),\n    linkedEnd: data.linkedEnd,\n    linkedStart: data.linkedStart,\n    labelEndHeight: parseIntOr(data.labelEndHeight, 0),\n    labelStart: notEmptyStringOr(data.labelStart, \"\"),\n    labelStartWidth: parseIntOr(data.labelStartWidth, 0),\n    labelStartHeight: parseIntOr(data.labelStartHeight, 0)\n  };\n\n  /*\n   * We need to enhance the props with the extracted size and position\n   * of the box cause there are missing at the props update. A better\n   * solution would be overriding the props setter to do it there, but\n   * the language doesn't allow it while targetting ES5.\n   * TODO: We need to figure out a more consistent solution.\n   */\n\n  return {\n    ...props,\n    // Enhance the props extracting the box size and position.\n    // eslint-disable-next-line @typescript-eslint/no-use-before-define\n    ...Line.extractBoxSizeAndPosition(props.startPosition, props.endPosition)\n  };\n}\n\nconst svgNS = \"http://www.w3.org/2000/svg\";\n\nexport interface LineMovedEvent {\n  item: Line;\n  startPosition: LineProps[\"startPosition\"];\n  endPosition: LineProps[\"endPosition\"];\n}\n\nexport default class Line extends Item<LineProps> {\n  protected circleRadius = 8;\n  // To control if the line movement is enabled.\n  protected moveMode: boolean = false;\n  // To control if the line is moving.\n  protected isMoving: boolean = false;\n\n  // Event manager for moved events.\n  public readonly lineMovedEventManager = new TypedEvent<LineMovedEvent>();\n  // List of references to clean the event listeners.\n  protected readonly lineMovedEventDisposables: Disposable[] = [];\n\n  // This function will only run the 2nd arg function after the time\n  // of the first arg have passed after its last execution.\n  protected debouncedStartPositionMovementSave = debounce(\n    500, // ms.\n    (x: Position[\"x\"], y: Position[\"y\"]) => {\n      this.isMoving = false;\n      const startPosition = { x, y };\n      // Emit the movement event.\n      this.lineMovedEventManager.emit({\n        item: this,\n        startPosition,\n        endPosition: this.props.endPosition\n      });\n    }\n  );\n  // This property will store the function\n  // to clean the movement listener.\n  protected removeStartPositionMovement: Function | null = null;\n\n  /**\n   * Start the movement funtionality for the start position.\n   * @param element Element to move inside its container.\n   */\n  protected initStartPositionMovementListener(\n    element: HTMLElement,\n    container: HTMLElement\n  ): void {\n    this.removeStartPositionMovement = addMovementListener(\n      element,\n      (x: Position[\"x\"], y: Position[\"y\"]) => {\n        // Calculate the center of the circle.\n        x += this.circleRadius - this.props.viewportOffsetX / 2;\n        y += this.circleRadius - this.props.viewportOffsetY / 2;\n\n        const startPosition = { x, y };\n\n        this.isMoving = true;\n        this.props = {\n          ...this.props,\n          startPosition\n        };\n\n        // Run the end function.\n        this.debouncedStartPositionMovementSave(x, y);\n      },\n      container\n    );\n  }\n  /**\n   * Stop the movement fun\n   */\n  private stopStartPositionMovementListener(): void {\n    if (this.removeStartPositionMovement) {\n      this.removeStartPositionMovement();\n      this.removeStartPositionMovement = null;\n    }\n  }\n\n  // This function will only run the 2nd arg function after the time\n  // of the first arg have passed after its last execution.\n  protected debouncedEndPositionMovementSave = debounce(\n    500, // ms.\n    (x: Position[\"x\"], y: Position[\"y\"]) => {\n      this.isMoving = false;\n      const endPosition = { x, y };\n      // Emit the movement event.\n      this.lineMovedEventManager.emit({\n        item: this,\n        endPosition,\n        startPosition: this.props.startPosition\n      });\n    }\n  );\n  // This property will store the function\n  // to clean the movement listener.\n  protected removeEndPositionMovement: Function | null = null;\n\n  /**\n   * End the movement funtionality for the end position.\n   * @param element Element to move inside its container.\n   */\n  protected initEndPositionMovementListener(\n    element: HTMLElement,\n    container: HTMLElement\n  ): void {\n    this.removeEndPositionMovement = addMovementListener(\n      element,\n      (x: Position[\"x\"], y: Position[\"y\"]) => {\n        // Calculate the center of the circle.\n        x += this.circleRadius - this.props.viewportOffsetX / 2;\n        y += this.circleRadius - this.props.viewportOffsetY / 2;\n\n        this.isMoving = true;\n        this.props = {\n          ...this.props,\n          endPosition: { x, y }\n        };\n\n        // Run the end function.\n        this.debouncedEndPositionMovementSave(x, y);\n      },\n      container\n    );\n  }\n  /**\n   * Stop the movement function.\n   */\n  private stopEndPositionMovementListener(): void {\n    if (this.removeEndPositionMovement) {\n      this.removeEndPositionMovement();\n      this.removeEndPositionMovement = null;\n    }\n  }\n\n  /**\n   * @override\n   */\n  public constructor(props: LineProps, meta: ItemMeta) {\n    /*\n     * We need to override the constructor cause we need to obtain the\n     * box size and position from the start and finish points of the line.\n     */\n    super(\n      {\n        ...props,\n        ...Line.extractBoxSizeAndPosition(\n          props.startPosition,\n          props.endPosition\n        )\n      },\n      {\n        ...meta\n      },\n      true\n    );\n\n    this.moveMode = meta.editMode;\n    this.init();\n\n    super.resizeElement(\n      Math.max(props.width, props.viewportOffsetX),\n      Math.max(props.height, props.viewportOffsetY)\n    );\n  }\n\n  /**\n   * Classic and protected version of the setter of the `props` property.\n   * Useful to override it from children classes.\n   * @param newProps\n   * @override Item.setProps\n   */\n  public setProps(newProps: LineProps) {\n    super.setProps({\n      ...newProps,\n      ...Line.extractBoxSizeAndPosition(\n        newProps.startPosition,\n        newProps.endPosition\n      )\n    });\n  }\n\n  /**\n   * Classic and protected version of the setter of the `meta` property.\n   * Useful to override it from children classes.\n   * @param newMetadata\n   * @override Item.setMeta\n   */\n  public setMeta(newMetadata: ItemMeta) {\n    this.moveMode = newMetadata.editMode;\n    super.setMeta({\n      ...newMetadata,\n      lineMode: true\n    });\n  }\n\n  /**\n   * @override\n   * To create the item's DOM representation.\n   * @return Item.\n   */\n  protected createDomElement(): HTMLElement {\n    const element: HTMLDivElement = document.createElement(\"div\");\n    element.className = \"line\";\n\n    let {\n      x, // Box x\n      y, // Box y\n      width, // Box width\n      height, // Box height\n      lineWidth, // Line thickness,\n      viewportOffsetX, // viewport width,\n      viewportOffsetY, // viewport heigth,\n      startPosition, // Line start position\n      endPosition, // Line end position\n      color // Line color\n    } = this.props;\n\n    width = width + viewportOffsetX;\n    height = height + viewportOffsetY;\n\n    const x1 = startPosition.x - x + lineWidth / 2 + viewportOffsetX / 2;\n    const y1 = startPosition.y - y + lineWidth / 2 + viewportOffsetY / 2;\n    const x2 = endPosition.x - x + lineWidth / 2 + viewportOffsetX / 2;\n    const y2 = endPosition.y - y + lineWidth / 2 + viewportOffsetY / 2;\n\n    // SVG container.\n    const svg = document.createElementNS(svgNS, \"svg\");\n    // Set SVG size.\n    svg.setAttribute(\"width\", `${width + lineWidth}`);\n    svg.setAttribute(\"height\", `${height + lineWidth}`);\n\n    const line = document.createElementNS(svgNS, \"line\");\n    line.setAttribute(\"x1\", `${x1}`);\n    line.setAttribute(\"y1\", `${y1}`);\n    line.setAttribute(\"x2\", `${x2}`);\n    line.setAttribute(\"y2\", `${y2}`);\n    line.setAttribute(\"stroke\", color || \"black\");\n    line.setAttribute(\"stroke-width\", `${lineWidth}`);\n\n    svg.append(line);\n    element.append(svg);\n\n    return element;\n  }\n\n  protected updateDomElement(element: HTMLElement): void {\n    if (element.parentElement != null) {\n      element.parentElement.style.cursor = \"default\";\n    }\n\n    let {\n      x, // Box x\n      y, // Box y\n      width, // Box width\n      height, // Box height\n      lineWidth, // Line thickness\n      viewportOffsetX, // viewport width,\n      viewportOffsetY, // viewport heigth,\n      startPosition, // Line start position\n      endPosition, // Line end position\n      color // Line color\n    } = this.props;\n\n    width = width + viewportOffsetX;\n    height = height + viewportOffsetY;\n\n    const x1 = startPosition.x - x + lineWidth / 2 + viewportOffsetX / 2;\n    const y1 = startPosition.y - y + lineWidth / 2 + viewportOffsetY / 2;\n    const x2 = endPosition.x - x + lineWidth / 2 + viewportOffsetX / 2;\n    const y2 = endPosition.y - y + lineWidth / 2 + viewportOffsetY / 2;\n\n    const svgs = element.getElementsByTagName(\"svg\");\n\n    if (svgs.length > 0) {\n      const svg = svgs.item(0);\n\n      if (svg != null) {\n        // Set SVG size.\n        svg.setAttribute(\"width\", `${width + lineWidth}`);\n        svg.setAttribute(\"height\", `${height + lineWidth}`);\n\n        const lines = svg.getElementsByTagNameNS(svgNS, \"line\");\n\n        if (lines.length > 0) {\n          const line = lines.item(0);\n\n          if (line != null) {\n            line.setAttribute(\"x1\", `${x1}`);\n            line.setAttribute(\"y1\", `${y1}`);\n            line.setAttribute(\"x2\", `${x2}`);\n            line.setAttribute(\"y2\", `${y2}`);\n            line.setAttribute(\"stroke\", color || \"black\");\n            line.setAttribute(\"stroke-width\", `${lineWidth}`);\n          }\n        }\n      }\n    }\n\n    if (this.moveMode) {\n      let startCircle: HTMLElement = document.createElement(\"div\");\n      let endCircle: HTMLElement = document.createElement(\"div\");\n\n      if (this.isMoving) {\n        const circlesStart = element.getElementsByClassName(\n          \"visual-console-item-line-circle-start\"\n        );\n        if (circlesStart.length > 0) {\n          const circle = circlesStart.item(0) as HTMLElement;\n          if (circle) startCircle = circle;\n        }\n        const circlesEnd = element.getElementsByClassName(\n          \"visual-console-item-line-circle-end\"\n        );\n        if (circlesEnd.length > 0) {\n          const circle = circlesEnd.item(0) as HTMLElement;\n          if (circle) endCircle = circle;\n        }\n      }\n\n      startCircle.classList.add(\n        \"visual-console-item-line-circle\",\n        \"visual-console-item-line-circle-start\"\n      );\n      startCircle.style.width = `${this.circleRadius * 2}px`;\n      startCircle.style.height = `${this.circleRadius * 2}px`;\n      startCircle.style.borderRadius = \"50%\";\n      startCircle.style.backgroundColor = `${color}`;\n      startCircle.style.position = \"absolute\";\n      startCircle.style.left = `${x1 - this.circleRadius}px`;\n      startCircle.style.top = `${y1 - this.circleRadius}px`;\n      startCircle.style.cursor = `move`;\n\n      endCircle.classList.add(\n        \"visual-console-item-line-circle\",\n        \"visual-console-item-line-circle-end\"\n      );\n      endCircle.style.width = `${this.circleRadius * 2}px`;\n      endCircle.style.height = `${this.circleRadius * 2}px`;\n      endCircle.style.borderRadius = \"50%\";\n      endCircle.style.backgroundColor = `${color}`;\n      endCircle.style.position = \"absolute\";\n      endCircle.style.left = `${x2 - this.circleRadius}px`;\n      endCircle.style.top = `${y2 - this.circleRadius}px`;\n      endCircle.style.cursor = `move`;\n\n      if (element.parentElement !== null) {\n        const circles = element.parentElement.getElementsByClassName(\n          \"visual-console-item-line-circle\"\n        );\n        while (circles.length > 0) {\n          const circle = circles.item(0);\n          if (circle) circle.remove();\n        }\n\n        element.parentElement.appendChild(startCircle);\n        element.parentElement.appendChild(endCircle);\n      }\n\n      // Init the movement listeners.\n      this.initStartPositionMovementListener(\n        startCircle,\n        this.elementRef.parentElement as HTMLElement\n      );\n      this.initEndPositionMovementListener(\n        endCircle,\n        this.elementRef.parentElement as HTMLElement\n      );\n    } else if (!this.moveMode) {\n      this.stopStartPositionMovementListener();\n      // Remove circles.\n      if (element.parentElement !== null) {\n        const circles = element.parentElement.getElementsByClassName(\n          \"visual-console-item-line-circle\"\n        );\n\n        while (circles.length > 0) {\n          const circle = circles.item(0);\n          if (circle) circle.remove();\n        }\n      }\n    } else {\n      this.stopStartPositionMovementListener();\n    }\n  }\n\n  /**\n   * Extract the size and position of the box from\n   * the start and the finish of the line.\n   * @param props Item properties.\n   */\n  public static extractBoxSizeAndPosition(\n    startPosition: Position,\n    endPosition: Position\n  ): Size & Position {\n    return {\n      width: Math.abs(startPosition.x - endPosition.x),\n      height: Math.abs(startPosition.y - endPosition.y),\n      x: Math.min(startPosition.x, endPosition.x),\n      y: Math.min(startPosition.y, endPosition.y)\n    };\n  }\n\n  /**\n   * Update the position into the properties and move the DOM container.\n   * @param x Horizontal axis position.\n   * @param y Vertical axis position.\n   * @override item function\n   */\n  public move(x: number, y: number): void {\n    super.moveElement(x, y);\n    const startIsLeft =\n      this.props.startPosition.x - this.props.endPosition.x <= 0;\n    const startIsTop =\n      this.props.startPosition.y - this.props.endPosition.y <= 0;\n\n    const start = {\n      x: startIsLeft ? x : this.props.width + x,\n      y: startIsTop ? y : this.props.height + y\n    };\n\n    const end = {\n      x: startIsLeft ? this.props.width + x : x,\n      y: startIsTop ? this.props.height + y : y\n    };\n\n    this.props = {\n      ...this.props,\n      startPosition: start,\n      endPosition: end\n    };\n  }\n\n  /**\n   * To remove the event listeners and the elements from the DOM.\n   * @override Item.remove\n   */\n  public remove(): void {\n    // Clear the item's event listeners.\n    this.stopStartPositionMovementListener();\n    // Call the parent's .remove()\n    super.remove();\n  }\n\n  /**\n   * To add an event handler to the movement of visual console elements.\n   * @param listener Function which is going to be executed when a linked console is moved.\n   *\n   * @override Item.onMoved\n   */\n  public onLineMovementFinished(\n    listener: Listener<LineMovedEvent>\n  ): Disposable {\n    /*\n     * The '.on' function returns a function which will clean the event\n     * listener when executed. We store all the 'dispose' functions to\n     * call them when the item should be cleared.\n     */\n    const disposable = this.lineMovedEventManager.on(listener);\n    this.lineMovedEventDisposables.push(disposable);\n\n    return disposable;\n  }\n}\n","import { AnyObject, Position, ItemMeta } from \"../lib/types\";\nimport { debounce, notEmptyStringOr, parseIntOr } from \"../lib\";\nimport { ItemType } from \"../Item\";\nimport Line, { LineProps, linePropsDecoder } from \"./Line\";\n\nconst svgNS = \"http://www.w3.org/2000/svg\";\n\nexport interface NetworkLinkProps extends LineProps {\n  // Overrided properties.\n  type: number;\n  labelStart: string;\n  labelEnd: string;\n}\n\n/**\n * Build a valid typed object from a raw object.\n * This will allow us to ensure the type safety.\n *\n * @param data Raw object.\n * @return An object representing the item props.\n * @throws Will throw a TypeError if some property\n * is missing from the raw object or have an invalid type.\n */\nexport function networkLinkPropsDecoder(\n  data: AnyObject\n): NetworkLinkProps | never {\n  return {\n    ...linePropsDecoder(data), // Object spread. It will merge the properties of the two objects.\n    type: ItemType.NETWORK_LINK,\n    viewportOffsetX: 0,\n    viewportOffsetY: 0,\n    labelEnd: notEmptyStringOr(data.labelEnd, \"\"),\n    labelEndWidth: parseIntOr(data.labelEndWidth, 0),\n    labelEndHeight: parseIntOr(data.labelEndHeight, 0),\n    labelStart: notEmptyStringOr(data.labelStart, \"\"),\n    labelStartWidth: parseIntOr(data.labelStartWidth, 0),\n    labelStartHeight: parseIntOr(data.labelStartHeight, 0)\n  };\n}\n\nexport default class NetworkLink extends Line {\n  /**\n   * @override\n   */\n  public constructor(props: NetworkLinkProps, meta: ItemMeta) {\n    /*\n     * We need to override the constructor cause we need to obtain the\n     * box size and position from the start and finish points of the line.\n     */\n    super(\n      {\n        ...props\n      },\n      {\n        ...meta\n      }\n    );\n\n    this.render();\n  }\n\n  /**\n   * @override\n   */\n  protected debouncedStartPositionMovementSave = debounce(\n    50, // ms.\n    (x: Position[\"x\"], y: Position[\"y\"]) => {\n      this.isMoving = false;\n\n      const startPosition = { x, y };\n\n      // Re-Paint after move.\n      this.render();\n\n      // Emit the movement event.\n      this.lineMovedEventManager.emit({\n        item: this,\n        startPosition,\n        endPosition: this.props.endPosition\n      });\n    }\n  );\n\n  protected debouncedEndPositionMovementSave = debounce(\n    50, // ms.\n    (x: Position[\"x\"], y: Position[\"y\"]) => {\n      this.isMoving = false;\n      const endPosition = { x, y };\n\n      // Re-Paint after move.\n      this.render();\n\n      // Emit the movement event.\n      this.lineMovedEventManager.emit({\n        item: this,\n        endPosition,\n        startPosition: this.props.startPosition\n      });\n    }\n  );\n\n  protected updateDomElement(element: HTMLElement): void {\n    if (this.itemProps.ratio != null) {\n      this.itemProps.x /= this.itemProps.ratio;\n      this.itemProps.y /= this.itemProps.ratio;\n    }\n\n    super.updateDomElement(element);\n\n    let {\n      x, // Box x\n      y, // Box y\n      lineWidth, // Line thickness\n      viewportOffsetX, // viewport width,\n      viewportOffsetY, // viewport heigth,\n      startPosition, // Line start position\n      endPosition, // Line end position\n      color, // Line color\n      labelEnd,\n      labelStart,\n      labelEndWidth,\n      labelEndHeight,\n      labelStartWidth,\n      labelStartHeight\n    } = this.props;\n\n    if (this.itemProps.ratio != null) {\n      this.itemProps.x *= this.itemProps.ratio;\n      this.itemProps.y *= this.itemProps.ratio;\n    }\n\n    const svgs = element.getElementsByTagName(\"svg\");\n    let line;\n    let svg;\n\n    if (svgs.length > 0) {\n      svg = svgs.item(0);\n\n      if (svg != null) {\n        // Set SVG size.\n        const lines = svg.getElementsByTagNameNS(svgNS, \"line\");\n        let groups = svg.getElementsByTagNameNS(svgNS, \"g\");\n        while (groups.length > 0) {\n          groups[0].remove();\n        }\n\n        if (lines.length > 0) {\n          line = lines.item(0);\n        }\n      }\n    } else {\n      // No line or svg, no more actions are required.\n      return;\n    }\n\n    if (svg == null || line == null) {\n      // No more actionas are required.\n      return;\n    }\n\n    // Font size and text adjustments.\n    const fontsize = 10;\n    const adjustment = 25;\n\n    const lineX1 = startPosition.x - x + lineWidth / 2 + viewportOffsetX / 2;\n    const lineY1 = startPosition.y - y + lineWidth / 2 + viewportOffsetY / 2;\n    const lineX2 = endPosition.x - x + lineWidth / 2 + viewportOffsetX / 2;\n    const lineY2 = endPosition.y - y + lineWidth / 2 + viewportOffsetY / 2;\n\n    let x1 = startPosition.x - x + lineWidth / 2 + viewportOffsetX / 2;\n    let y1 = startPosition.y - y + lineWidth / 2 + viewportOffsetY / 2;\n    let x2 = endPosition.x - x + lineWidth / 2 + viewportOffsetX / 2;\n    let y2 = endPosition.y - y + lineWidth / 2 + viewportOffsetY / 2;\n\n    // Calculate angle (rotation).\n    let rad = Math.atan2(lineY2 - lineY1, lineX2 - lineX1);\n    let g = (rad * 180) / Math.PI;\n\n    // Calculate effective 'text' box sizes.\n    const fontheight = 25;\n    if (labelStartWidth <= 0) {\n      let lines = labelStart.split(\"<br>\");\n      labelStartWidth = 0;\n      lines.forEach(l => {\n        if (l.length > labelStartWidth) {\n          labelStartWidth = l.length * fontsize;\n        }\n      });\n      if (labelStartHeight <= 0) {\n        labelStartHeight = lines.length * fontheight;\n      }\n    }\n\n    if (labelEndWidth <= 0) {\n      let lines = labelEnd.split(\"<br>\");\n      labelEndWidth = 0;\n      lines.forEach(l => {\n        if (l.length > labelEndWidth) {\n          labelEndWidth = l.length * fontsize;\n        }\n      });\n      if (labelEndHeight <= 0) {\n        labelEndHeight = lines.length * fontheight;\n      }\n    }\n\n    if (x1 < x2) {\n      // x1 on left of x2.\n      x1 += adjustment;\n      x2 -= adjustment + labelEndWidth;\n    }\n\n    if (x1 > x2) {\n      // x1 on right of x2.\n      x1 -= adjustment + labelStartWidth;\n      x2 += adjustment;\n    }\n\n    if (y1 < y2) {\n      // y1 on y2.\n      y1 += adjustment;\n      y2 -= adjustment + labelEndHeight;\n    }\n\n    if (y1 > y2) {\n      // y1 under y2.\n      y1 -= adjustment + labelStartHeight;\n      y2 += adjustment;\n    }\n\n    if (typeof color == \"undefined\") {\n      color = \"#000\";\n    }\n\n    // Clean.\n    if (element.parentElement !== null) {\n      const labels = element.parentElement.getElementsByClassName(\n        \"vc-item-nl-label\"\n      );\n      while (labels.length > 0) {\n        const label = labels.item(0);\n        if (label) label.remove();\n      }\n\n      const arrows = element.parentElement.getElementsByClassName(\n        \"vc-item-nl-arrow\"\n      );\n      while (arrows.length > 0) {\n        const arrow = arrows.item(0);\n        if (arrow) arrow.remove();\n      }\n    }\n\n    let arrowSize = lineWidth * 2;\n\n    let arrowPosX = lineX1 + (lineX2 - lineX1) / 2 - arrowSize;\n    let arrowPosY = lineY1 + (lineY2 - lineY1) / 2 - arrowSize;\n\n    let arrowStart: HTMLElement = document.createElement(\"div\");\n    arrowStart.classList.add(\"vc-item-nl-arrow\");\n    arrowStart.style.position = \"absolute\";\n    arrowStart.style.border = `${arrowSize}px solid transparent`;\n    arrowStart.style.borderBottom = `${arrowSize}px solid ${color}`;\n    arrowStart.style.left = `${arrowPosX}px`;\n    arrowStart.style.top = `${arrowPosY}px`;\n    arrowStart.style.transform = `rotate(${90 + g}deg)`;\n\n    let arrowEnd: HTMLElement = document.createElement(\"div\");\n    arrowEnd.classList.add(\"vc-item-nl-arrow\");\n    arrowEnd.style.position = \"absolute\";\n    arrowEnd.style.border = `${arrowSize}px solid transparent`;\n    arrowEnd.style.borderBottom = `${arrowSize}px solid ${color}`;\n    arrowEnd.style.left = `${arrowPosX}px`;\n    arrowEnd.style.top = `${arrowPosY}px`;\n    arrowEnd.style.transform = `rotate(${270 + g}deg)`;\n\n    if (element.parentElement !== null) {\n      element.parentElement.appendChild(arrowStart);\n      element.parentElement.appendChild(arrowEnd);\n    }\n\n    if (labelStart != \"\") {\n      let htmlLabelStart: HTMLElement = document.createElement(\"div\");\n\n      try {\n        htmlLabelStart.innerHTML = labelStart;\n        htmlLabelStart.style.position = \"absolute\";\n        htmlLabelStart.style.left = `${x1}px`;\n        htmlLabelStart.style.top = `${y1}px`;\n        htmlLabelStart.style.width = `${labelStartWidth}px`;\n        htmlLabelStart.style.border = `2px solid ${color}`;\n\n        htmlLabelStart.classList.add(\"vc-item-nl-label\", \"label-start\");\n      } catch (error) {\n        console.error(error);\n      }\n\n      if (element.parentElement !== null) {\n        element.parentElement.appendChild(htmlLabelStart);\n      }\n    }\n\n    if (labelEnd != \"\") {\n      let htmlLabelEnd: HTMLElement = document.createElement(\"div\");\n\n      try {\n        htmlLabelEnd.innerHTML = labelEnd;\n        htmlLabelEnd.style.position = \"absolute\";\n        htmlLabelEnd.style.left = `${x2}px`;\n        htmlLabelEnd.style.top = `${y2}px`;\n        htmlLabelEnd.style.width = `${labelEndWidth}px`;\n        htmlLabelEnd.style.border = `2px solid ${color}`;\n\n        htmlLabelEnd.classList.add(\"vc-item-nl-label\", \"label-end\");\n      } catch (error) {\n        console.error(error);\n      }\n\n      if (element.parentElement !== null) {\n        element.parentElement.appendChild(htmlLabelEnd);\n      }\n    }\n  }\n}\n","import { LinkedVisualConsoleProps, AnyObject } from \"../lib/types\";\nimport {\n  linkedVCPropsDecoder,\n  parseIntOr,\n  notEmptyStringOr,\n  stringIsEmpty,\n  decodeBase64,\n  parseBoolean,\n  t\n} from \"../lib\";\nimport Item, { ItemProps, itemBasePropsDecoder, ItemType } from \"../Item\";\n\nexport type GroupProps = {\n  type: ItemType.GROUP_ITEM;\n  groupId: number;\n  imageSrc: string | null; // URL?\n  statusImageSrc: string | null;\n  showStatistics: boolean;\n  html?: string | null;\n} & ItemProps &\n  LinkedVisualConsoleProps;\n\nfunction extractHtml(data: AnyObject): string | null {\n  if (!stringIsEmpty(data.html)) return data.html;\n  if (!stringIsEmpty(data.encodedHtml)) return decodeBase64(data.encodedHtml);\n  return null;\n}\n\n/**\n * Build a valid typed object from a raw object.\n * This will allow us to ensure the type safety.\n *\n * @param data Raw object.\n * @return An object representing the group props.\n * @throws Will throw a TypeError if some property\n * is missing from the raw object or have an invalid type.\n */\nexport function groupPropsDecoder(data: AnyObject): GroupProps | never {\n  if (\n    (typeof data.imageSrc !== \"string\" || data.imageSrc.length === 0) &&\n    data.encodedHtml === null\n  ) {\n    throw new TypeError(\"invalid image src.\");\n  }\n  if (parseIntOr(data.groupId, null) === null) {\n    throw new TypeError(\"invalid group Id.\");\n  }\n\n  const showStatistics = parseBoolean(data.showStatistics);\n  const html = showStatistics ? extractHtml(data) : null;\n\n  return {\n    ...itemBasePropsDecoder(data), // Object spread. It will merge the properties of the two objects.\n    type: ItemType.GROUP_ITEM,\n    groupId: parseInt(data.groupId),\n    imageSrc: notEmptyStringOr(data.imageSrc, null),\n    statusImageSrc: notEmptyStringOr(data.statusImageSrc, null),\n    showStatistics,\n    html,\n    ...linkedVCPropsDecoder(data) // Object spread. It will merge the properties of the two objects.\n  };\n}\nexport default class Group extends Item<GroupProps> {\n  protected createDomElement(): HTMLElement {\n    const element = document.createElement(\"div\");\n    element.className = \"group\";\n\n    if (!this.props.showStatistics && this.props.statusImageSrc !== null) {\n      // Icon with status.\n      element.style.backgroundImage = `url(${this.props.statusImageSrc})`;\n      element.style.backgroundRepeat = \"no-repeat\";\n      element.style.backgroundSize = \"contain\";\n      element.style.backgroundPosition = \"center\";\n    } else if (this.props.showStatistics && this.props.html != null) {\n      // Stats table.\n      element.style.backgroundImage = \"none\";\n      element.innerHTML = this.props.html;\n    }\n\n    return element;\n  }\n\n  /**\n   * To update the content element.\n   * @override Item.updateDomElement\n   */\n  protected updateDomElement(element: HTMLElement): void {\n    if (!this.props.showStatistics && this.props.statusImageSrc !== null) {\n      // Icon with status.\n      element.style.backgroundImage = `url(${this.props.statusImageSrc})`;\n      element.style.backgroundRepeat = \"no-repeat\";\n      element.style.backgroundSize = \"contain\";\n      element.style.backgroundPosition = \"center\";\n      element.innerHTML = \"\";\n    } else if (this.props.showStatistics && this.props.html != null) {\n      // Stats table.\n      element.style.backgroundImage = \"none\";\n      element.innerHTML = this.props.html;\n    }\n  }\n}\n","import \"./styles.css\";\n\nimport {\n  LinkedVisualConsoleProps,\n  AnyObject,\n  Size,\n  ItemMeta\n} from \"../../lib/types\";\nimport {\n  linkedVCPropsDecoder,\n  parseIntOr,\n  parseBoolean,\n  prefixedCssRules,\n  notEmptyStringOr,\n  humanDate,\n  humanTime,\n  t\n} from \"../../lib\";\nimport Item, { ItemProps, itemBasePropsDecoder, ItemType } from \"../../Item\";\n\nexport type ClockProps = {\n  type: ItemType.CLOCK;\n  clockType: \"analogic\" | \"digital\";\n  clockFormat: \"datetime\" | \"time\";\n  clockTimezone: string;\n  clockTimezoneOffset: number; // Offset of the timezone to UTC in seconds.\n  showClockTimezone: boolean;\n  color?: string | null;\n} & ItemProps &\n  LinkedVisualConsoleProps;\n\n/**\n * Extract a valid enum value from a raw unknown value.\n * @param clockType Raw value.\n */\nconst parseClockType = (clockType: unknown): ClockProps[\"clockType\"] => {\n  switch (clockType) {\n    case \"analogic\":\n    case \"digital\":\n      return clockType;\n    default:\n      return \"analogic\";\n  }\n};\n\n/**\n * Extract a valid enum value from a raw unknown value.\n * @param clockFormat Raw value.\n */\nconst parseClockFormat = (clockFormat: unknown): ClockProps[\"clockFormat\"] => {\n  switch (clockFormat) {\n    case \"datetime\":\n    case \"time\":\n      return clockFormat;\n    default:\n      return \"datetime\";\n  }\n};\n\n/**\n * Build a valid typed object from a raw object.\n * This will allow us to ensure the type safety.\n *\n * @param data Raw object.\n * @return An object representing the clock props.\n * @throws Will throw a TypeError if some property\n * is missing from the raw object or have an invalid type.\n */\nexport function clockPropsDecoder(data: AnyObject): ClockProps | never {\n  if (\n    typeof data.clockTimezone !== \"string\" ||\n    data.clockTimezone.length === 0\n  ) {\n    throw new TypeError(\"invalid timezone.\");\n  }\n\n  return {\n    ...itemBasePropsDecoder(data), // Object spread. It will merge the properties of the two objects.\n    type: ItemType.CLOCK,\n    clockType: parseClockType(data.clockType),\n    clockFormat: parseClockFormat(data.clockFormat),\n    clockTimezone: data.clockTimezone,\n    clockTimezoneOffset: parseIntOr(data.clockTimezoneOffset, 0),\n    showClockTimezone: parseBoolean(data.showClockTimezone),\n    color: notEmptyStringOr(data.color, null),\n    ...linkedVCPropsDecoder(data) // Object spread. It will merge the properties of the two objects.\n  };\n}\n\nexport default class Clock extends Item<ClockProps> {\n  public static readonly TICK_INTERVAL = 1000; // In ms.\n  private intervalRef: number | null = null;\n\n  public constructor(props: ClockProps, meta: ItemMeta) {\n    // Call the superclass constructor.\n    super(props, meta);\n\n    /* The item is already loaded and inserted into the DOM.\n     * The class properties are now initialized.\n     * Now you can modify the item, add event handlers, timers, etc.\n     */\n\n    /* The use of the arrow function is important here. startTick will\n     * use the function passed as an argument to call the global setInterval\n     * function. The interval, timeout or event functions, among other, are\n     * called into another execution loop and using a different context.\n     * The arrow functions, unlike the classic functions, doesn't create\n     * their own context (this), so their context at execution time will be\n     * use the current context at the declaration time.\n     * http://es6-features.org/#Lexicalthis\n     */\n    this.startTick(\n      () => {\n        // Replace the old element with the updated date.\n        this.childElementRef.innerHTML = this.createClock().innerHTML;\n      },\n      /* The analogic clock doesn't need to tick,\n       * but it will be refreshed every 20 seconds\n       * to avoid a desync caused by page freezes.\n       */\n      this.props.clockType === \"analogic\" ? 20000 : Clock.TICK_INTERVAL\n    );\n  }\n\n  /**\n   * Wrap a window.clearInterval call.\n   */\n  private stopTick(): void {\n    if (this.intervalRef !== null) {\n      window.clearInterval(this.intervalRef);\n      this.intervalRef = null;\n    }\n  }\n\n  /**\n   * Wrap a window.setInterval call.\n   * @param handler Function to be called every time the interval\n   * timer is reached.\n   * @param interval Number in milliseconds for the interval timer.\n   */\n  private startTick(\n    handler: TimerHandler,\n    interval: number = Clock.TICK_INTERVAL\n  ): void {\n    this.stopTick();\n    this.intervalRef = window.setInterval(handler, interval);\n  }\n\n  /**\n   * Create a element which contains the DOM representation of the item.\n   * @return DOM Element.\n   * @override\n   */\n  protected createDomElement(): HTMLElement | never {\n    return this.createClock();\n  }\n\n  /**\n   * To update the content element.\n   * @override Item.updateDomElement\n   */\n  protected updateDomElement(element: HTMLElement): void {\n    // Destructuring assigment: http://es6-features.org/#ObjectMatchingShorthandNotation\n    const { width: newWidth, height: newHeight } = this.getElementSize(\n      this.props.width,\n      this.props.height\n    );\n\n    if (this.props.clockType === \"digital\") {\n      if (this.meta.isBeingResized === false) {\n        super.resizeElement(this.props.width, this.props.height);\n      }\n      element.classList.replace(\"analogic-clock\", \"digital-clock\");\n    } else {\n      if (this.meta.isBeingResized === false) {\n        super.resizeElement(newWidth, newHeight);\n      }\n      element.classList.replace(\"digital-clock\", \"analogic-clock\");\n    }\n    element.innerHTML = this.createDomElement().innerHTML;\n  }\n\n  /**\n   * To remove the event listeners and the elements from the DOM.\n   * @override\n   */\n  public remove(): void {\n    // Clear the interval.\n    this.stopTick();\n    // Call to the parent clean function.\n    super.remove();\n  }\n\n  /**\n   * @override Item.resizeElement\n   * Resize the DOM content container.\n   * @param width\n   * @param height\n   */\n  public resizeElement(width: number, height: number): void {\n    // Destructuring assigment: http://es6-features.org/#ObjectMatchingShorthandNotation\n    const { width: newWidth, height: newHeight } = this.getElementSize(\n      width,\n      height\n    );\n\n    // Re-render the item to force it calculate a new font size.\n    if (this.props.clockType === \"digital\") {\n      super.resizeElement(width, height);\n      // Replace the old element with the updated date.\n      //this.childElementRef.innerHTML = this.createClock().innerHTML;\n    } else {\n      super.resizeElement(newWidth, newHeight);\n    }\n  }\n\n  /**\n   * Create a element which contains a representation of a clock.\n   * It choose between the clock types.\n   * @return DOM Element.\n   * @throws Error.\n   */\n  private createClock(): HTMLElement | never {\n    switch (this.props.clockType) {\n      case \"analogic\":\n        return this.createAnalogicClock();\n      case \"digital\":\n        return this.createDigitalClock();\n      default:\n        throw new Error(\"invalid clock type.\");\n    }\n  }\n\n  /**\n   * Create a element which contains a representation of an analogic clock.\n   * @return DOM Element.\n   */\n  private createAnalogicClock(): HTMLElement {\n    const svgNS = \"http://www.w3.org/2000/svg\";\n    const colors = {\n      watchFace: \"#FFFFF0\",\n      watchFaceBorder: \"#242124\",\n      mark: \"#242124\",\n      handDark: \"#242124\",\n      handLight: \"#525252\",\n      secondHand: \"#DC143C\"\n    };\n\n    const { width, height } = this.getElementSize(); // Destructuring assigment: http://es6-features.org/#ObjectMatchingShorthandNotation\n\n    // Calculate font size to adapt the font to the item size.\n    const baseTimeFontSize = 20; // Per 100px of width.\n    const dateFontSizeMultiplier = 0.5;\n    const dateFontSize =\n      (baseTimeFontSize * dateFontSizeMultiplier * width) / 100;\n\n    const div = document.createElement(\"div\");\n    div.className = \"analogic-clock\";\n    div.style.width = `${width}px`;\n    div.style.height = `${height}px`;\n\n    // SVG container.\n    const svg = document.createElementNS(svgNS, \"svg\");\n    // Auto resize SVG using the view box magic: https://css-tricks.com/scale-svg/\n    svg.setAttribute(\"viewBox\", \"0 0 100 100\");\n\n    // Clock face.\n    const clockFace = document.createElementNS(svgNS, \"g\");\n    clockFace.setAttribute(\"class\", \"clockface\");\n    const clockFaceBackground = document.createElementNS(svgNS, \"circle\");\n    clockFaceBackground.setAttribute(\"cx\", \"50\");\n    clockFaceBackground.setAttribute(\"cy\", \"50\");\n    clockFaceBackground.setAttribute(\"r\", \"48\");\n    clockFaceBackground.setAttribute(\"fill\", colors.watchFace);\n    clockFaceBackground.setAttribute(\"stroke\", colors.watchFaceBorder);\n    clockFaceBackground.setAttribute(\"stroke-width\", \"2\");\n    clockFaceBackground.setAttribute(\"stroke-linecap\", \"round\");\n    // Insert the clockface background into the clockface group.\n    clockFace.append(clockFaceBackground);\n\n    // Timezone complication.\n    const city = this.getHumanTimezone();\n    if (city.length > 0) {\n      const timezoneComplication = document.createElementNS(svgNS, \"text\");\n      timezoneComplication.setAttribute(\"text-anchor\", \"middle\");\n      timezoneComplication.setAttribute(\"font-size\", \"8\");\n      timezoneComplication.setAttribute(\n        \"transform\",\n        \"translate(30 50) rotate(90)\" // Rotate to counter the clock rotation.\n      );\n      timezoneComplication.setAttribute(\"fill\", colors.mark);\n      timezoneComplication.textContent = city;\n      clockFace.append(timezoneComplication);\n    }\n\n    // Marks group.\n    const marksGroup = document.createElementNS(svgNS, \"g\");\n    marksGroup.setAttribute(\"class\", \"marks\");\n    // Build the 12 hours mark.\n    const mainMarkGroup = document.createElementNS(svgNS, \"g\");\n    mainMarkGroup.setAttribute(\"class\", \"mark\");\n    mainMarkGroup.setAttribute(\"transform\", \"translate(50 50)\");\n    const mark1a = document.createElementNS(svgNS, \"line\");\n    mark1a.setAttribute(\"x1\", \"36\");\n    mark1a.setAttribute(\"y1\", \"0\");\n    mark1a.setAttribute(\"x2\", \"46\");\n    mark1a.setAttribute(\"y2\", \"0\");\n    mark1a.setAttribute(\"stroke\", colors.mark);\n    mark1a.setAttribute(\"stroke-width\", \"5\");\n    const mark1b = document.createElementNS(svgNS, \"line\");\n    mark1b.setAttribute(\"x1\", \"36\");\n    mark1b.setAttribute(\"y1\", \"0\");\n    mark1b.setAttribute(\"x2\", \"46\");\n    mark1b.setAttribute(\"y2\", \"0\");\n    mark1b.setAttribute(\"stroke\", colors.watchFace);\n    mark1b.setAttribute(\"stroke-width\", \"1\");\n    // Insert the 12 mark lines into their group.\n    mainMarkGroup.append(mark1a, mark1b);\n    // Insert the main mark into the marks group.\n    marksGroup.append(mainMarkGroup);\n    // Build the rest of the marks.\n    for (let i = 1; i < 60; i++) {\n      const mark = document.createElementNS(svgNS, \"line\");\n      mark.setAttribute(\"y1\", \"0\");\n      mark.setAttribute(\"y2\", \"0\");\n      mark.setAttribute(\"stroke\", colors.mark);\n      mark.setAttribute(\"transform\", `translate(50 50) rotate(${i * 6})`);\n\n      if (i % 5 === 0) {\n        mark.setAttribute(\"x1\", \"38\");\n        mark.setAttribute(\"x2\", \"46\");\n        mark.setAttribute(\"stroke-width\", i % 15 === 0 ? \"2\" : \"1\");\n      } else {\n        mark.setAttribute(\"x1\", \"42\");\n        mark.setAttribute(\"x2\", \"46\");\n        mark.setAttribute(\"stroke-width\", \"0.5\");\n      }\n\n      // Insert the mark into the marks group.\n      marksGroup.append(mark);\n    }\n\n    /* Clock hands */\n\n    // Hour hand.\n    const hourHand = document.createElementNS(svgNS, \"g\");\n    hourHand.setAttribute(\"class\", \"hour-hand\");\n    hourHand.setAttribute(\"transform\", \"translate(50 50)\");\n    // This will go back and will act like a border.\n    const hourHandA = document.createElementNS(svgNS, \"line\");\n    hourHandA.setAttribute(\"class\", \"hour-hand-a\");\n    hourHandA.setAttribute(\"x1\", \"0\");\n    hourHandA.setAttribute(\"y1\", \"0\");\n    hourHandA.setAttribute(\"x2\", \"30\");\n    hourHandA.setAttribute(\"y2\", \"0\");\n    hourHandA.setAttribute(\"stroke\", colors.handLight);\n    hourHandA.setAttribute(\"stroke-width\", \"4\");\n    hourHandA.setAttribute(\"stroke-linecap\", \"round\");\n    // This will go in front of the previous line.\n    const hourHandB = document.createElementNS(svgNS, \"line\");\n    hourHandB.setAttribute(\"class\", \"hour-hand-b\");\n    hourHandB.setAttribute(\"x1\", \"0\");\n    hourHandB.setAttribute(\"y1\", \"0\");\n    hourHandB.setAttribute(\"x2\", \"29.9\");\n    hourHandB.setAttribute(\"y2\", \"0\");\n    hourHandB.setAttribute(\"stroke\", colors.handDark);\n    hourHandB.setAttribute(\"stroke-width\", \"3.1\");\n    hourHandB.setAttribute(\"stroke-linecap\", \"round\");\n    // Append the elements to finish the hour hand.\n    hourHand.append(hourHandA, hourHandB);\n\n    // Minute hand.\n    const minuteHand = document.createElementNS(svgNS, \"g\");\n    minuteHand.setAttribute(\"class\", \"minute-hand\");\n    minuteHand.setAttribute(\"transform\", \"translate(50 50)\");\n    // This will go back and will act like a border.\n    const minuteHandA = document.createElementNS(svgNS, \"line\");\n    minuteHandA.setAttribute(\"class\", \"minute-hand-a\");\n    minuteHandA.setAttribute(\"x1\", \"0\");\n    minuteHandA.setAttribute(\"y1\", \"0\");\n    minuteHandA.setAttribute(\"x2\", \"40\");\n    minuteHandA.setAttribute(\"y2\", \"0\");\n    minuteHandA.setAttribute(\"stroke\", colors.handLight);\n    minuteHandA.setAttribute(\"stroke-width\", \"2\");\n    minuteHandA.setAttribute(\"stroke-linecap\", \"round\");\n    // This will go in front of the previous line.\n    const minuteHandB = document.createElementNS(svgNS, \"line\");\n    minuteHandB.setAttribute(\"class\", \"minute-hand-b\");\n    minuteHandB.setAttribute(\"x1\", \"0\");\n    minuteHandB.setAttribute(\"y1\", \"0\");\n    minuteHandB.setAttribute(\"x2\", \"39.9\");\n    minuteHandB.setAttribute(\"y2\", \"0\");\n    minuteHandB.setAttribute(\"stroke\", colors.handDark);\n    minuteHandB.setAttribute(\"stroke-width\", \"1.5\");\n    minuteHandB.setAttribute(\"stroke-linecap\", \"round\");\n    const minuteHandPin = document.createElementNS(svgNS, \"circle\");\n    minuteHandPin.setAttribute(\"r\", \"3\");\n    minuteHandPin.setAttribute(\"fill\", colors.handDark);\n    // Append the elements to finish the minute hand.\n    minuteHand.append(minuteHandA, minuteHandB, minuteHandPin);\n\n    // Second hand.\n    const secondHand = document.createElementNS(svgNS, \"g\");\n    secondHand.setAttribute(\"class\", \"second-hand\");\n    secondHand.setAttribute(\"transform\", \"translate(50 50)\");\n    const secondHandBar = document.createElementNS(svgNS, \"line\");\n    secondHandBar.setAttribute(\"x1\", \"0\");\n    secondHandBar.setAttribute(\"y1\", \"0\");\n    secondHandBar.setAttribute(\"x2\", \"46\");\n    secondHandBar.setAttribute(\"y2\", \"0\");\n    secondHandBar.setAttribute(\"stroke\", colors.secondHand);\n    secondHandBar.setAttribute(\"stroke-width\", \"1\");\n    secondHandBar.setAttribute(\"stroke-linecap\", \"round\");\n    const secondHandPin = document.createElementNS(svgNS, \"circle\");\n    secondHandPin.setAttribute(\"r\", \"2\");\n    secondHandPin.setAttribute(\"fill\", colors.secondHand);\n    // Append the elements to finish the second hand.\n    secondHand.append(secondHandBar, secondHandPin);\n\n    // Pin.\n    const pin = document.createElementNS(svgNS, \"circle\");\n    pin.setAttribute(\"cx\", \"50\");\n    pin.setAttribute(\"cy\", \"50\");\n    pin.setAttribute(\"r\", \"0.3\");\n    pin.setAttribute(\"fill\", colors.handDark);\n\n    // Get the hand angles.\n    const date = this.getOriginDate();\n    const seconds = date.getSeconds();\n    const minutes = date.getMinutes();\n    const hours = date.getHours();\n    const secAngle = (360 / 60) * seconds;\n    const minuteAngle = (360 / 60) * minutes + (360 / 60) * (seconds / 60);\n    const hourAngle = (360 / 12) * hours + (360 / 12) * (minutes / 60);\n    // Set the clock time by moving the hands.\n    hourHand.setAttribute(\"transform\", `translate(50 50) rotate(${hourAngle})`);\n    minuteHand.setAttribute(\n      \"transform\",\n      `translate(50 50) rotate(${minuteAngle})`\n    );\n    secondHand.setAttribute(\n      \"transform\",\n      `translate(50 50) rotate(${secAngle})`\n    );\n\n    // Build the clock\n    svg.append(clockFace, marksGroup, hourHand, minuteHand, secondHand, pin);\n    // Rotate the clock to its normal position.\n    svg.setAttribute(\"transform\", \"rotate(-90)\");\n\n    /* Add the animation declaration to the container.\n     * Since the animation keyframes need to know the\n     * start angle, this angle is dynamic (current time),\n     * and we can't edit keyframes through javascript\n     * safely and with backwards compatibility, we need\n     * to inject it.\n     */\n    div.innerHTML = `\n      <style>\n        @keyframes rotate-hour {\n          from {\n            ${prefixedCssRules(\n              \"transform\",\n              `translate(50px, 50px) rotate(${hourAngle}deg)`\n            ).join(\"\\n\")}\n          }\n          to {\n            ${prefixedCssRules(\n              \"transform\",\n              `translate(50px, 50px) rotate(${hourAngle + 360}deg)`\n            ).join(\"\\n\")}\n          }\n        }\n        @keyframes rotate-minute {\n          from {\n            ${prefixedCssRules(\n              \"transform\",\n              `translate(50px, 50px) rotate(${minuteAngle}deg)`\n            ).join(\"\\n\")}\n          }\n          to {\n            ${prefixedCssRules(\n              \"transform\",\n              `translate(50px, 50px) rotate(${minuteAngle + 360}deg)`\n            ).join(\"\\n\")}\n          }\n        }\n        @keyframes rotate-second {\n          from {\n            ${prefixedCssRules(\n              \"transform\",\n              `translate(50px, 50px) rotate(${secAngle}deg)`\n            ).join(\"\\n\")}\n          }\n          to {\n            ${prefixedCssRules(\n              \"transform\",\n              `translate(50px, 50px) rotate(${secAngle + 360}deg)`\n            ).join(\"\\n\")}\n          }\n        }\n      </style>\n    `;\n    // Add the clock to the container\n    div.append(svg);\n\n    // Date.\n    if (this.props.clockFormat === \"datetime\") {\n      const dateElem: HTMLSpanElement = document.createElement(\"span\");\n      dateElem.className = \"date\";\n      dateElem.textContent = humanDate(date, \"default\");\n      dateElem.style.fontSize = `${dateFontSize}px`;\n      if (this.props.color) dateElem.style.color = this.props.color;\n      div.append(dateElem);\n    }\n\n    return div;\n  }\n\n  /**\n   * Create a element which contains a representation of a digital clock.\n   * @return DOM Element.\n   */\n  private createDigitalClock(): HTMLElement {\n    const element: HTMLDivElement = document.createElement(\"div\");\n    element.className = \"digital-clock\";\n\n    const { width, height } = this.getElementSize(); // Destructuring assigment: http://es6-features.org/#ObjectMatchingShorthandNotation\n    let modified = width;\n    if (height < width) {\n      modified = height;\n    }\n\n    // Calculate font size to adapt the font to the item size.\n    const baseTimeFontSize = 35; // Per 100px of width.\n    const dateFontSizeMultiplier = 0.5;\n    const tzFontSizeMultiplier = 6 / this.props.clockTimezone.length;\n    const timeFontSize = (baseTimeFontSize * modified) / 100;\n    const dateFontSize =\n      (baseTimeFontSize * dateFontSizeMultiplier * modified) / 100;\n    const tzFontSize = Math.min(\n      (baseTimeFontSize * tzFontSizeMultiplier * modified) / 100,\n      (width / 100) * 10\n    );\n\n    // Date calculated using the original timezone.\n    const date = this.getOriginDate();\n\n    // Date.\n    if (this.props.clockFormat === \"datetime\") {\n      const dateElem: HTMLSpanElement = document.createElement(\"span\");\n      dateElem.className = \"date\";\n      dateElem.textContent = humanDate(date, \"default\");\n      dateElem.style.fontSize = `${dateFontSize}px`;\n      if (this.props.color) dateElem.style.color = this.props.color;\n      element.append(dateElem);\n    }\n\n    // Time.\n    const timeElem: HTMLSpanElement = document.createElement(\"span\");\n    timeElem.className = \"time\";\n    timeElem.textContent = humanTime(date);\n    timeElem.style.fontSize = `${timeFontSize}px`;\n    if (this.props.color) timeElem.style.color = this.props.color;\n    element.append(timeElem);\n\n    // City name.\n    const city = this.getHumanTimezone();\n    if (city.length > 0) {\n      const tzElem: HTMLSpanElement = document.createElement(\"span\");\n      tzElem.className = \"timezone\";\n      tzElem.textContent = city;\n      tzElem.style.fontSize = `${tzFontSize}px`;\n      if (this.props.color) tzElem.style.color = this.props.color;\n      element.append(tzElem);\n    }\n\n    return element;\n  }\n\n  /**\n   * Generate the current date using the timezone offset stored into the properties.\n   * @return The current date.\n   */\n  private getOriginDate(initialDate: Date | null = null): Date {\n    const d = initialDate ? initialDate : new Date();\n    const targetTZOffset = this.props.clockTimezoneOffset * 1000; // In ms.\n    const localTZOffset = d.getTimezoneOffset() * 60 * 1000; // In ms.\n    const utimestamp = d.getTime() + targetTZOffset + localTZOffset;\n\n    return new Date(utimestamp);\n  }\n\n  /**\n   * Extract a human readable city name from the timezone text.\n   * @param timezone Timezone text.\n   */\n  public getHumanTimezone(timezone: string = this.props.clockTimezone): string {\n    const [, city = \"\"] = timezone.split(\"/\");\n    return city.replace(\"_\", \" \");\n  }\n\n  /**\n   * Generate a element size using the current size and the default values.\n   * @return The size.\n   */\n  private getElementSize(\n    width: number = this.props.width,\n    height: number = this.props.height\n  ): Size {\n    switch (this.props.clockType) {\n      case \"analogic\": {\n        let diameter = 100; // Default value.\n\n        if (width > 0 && height > 0) {\n          diameter = Math.min(width, height);\n        } else if (width > 0) {\n          diameter = width;\n        } else if (height > 0) {\n          diameter = height;\n        }\n\n        let extraHeigth = 0;\n        if (this.props.clockFormat === \"datetime\") {\n          extraHeigth = height / 8;\n        }\n\n        return {\n          width: diameter,\n          height: diameter + extraHeigth\n        };\n      }\n      case \"digital\": {\n        if (width > 0 && height > 0) {\n          // The proportion of the clock should be (width = height / 2) aproximately.\n          height = width / 2 < height ? width / 2 : height;\n        } else if (width > 0) {\n          height = width / 2;\n        } else if (height > 0) {\n          // The proportion of the clock should be (height * 2 = width) aproximately.\n          width = height * 2;\n        } else {\n          width = 100; // Default value.\n          height = 50; // Default value.\n        }\n\n        return {\n          width,\n          height\n        };\n      }\n      default:\n        throw new Error(\"invalid clock type.\");\n    }\n  }\n}\n","import { AnyObject } from \"../lib/types\";\nimport { parseIntOr, notEmptyStringOr, t } from \"../lib\";\nimport Item, { ItemType, ItemProps, itemBasePropsDecoder } from \"../Item\";\n\ninterface BoxProps extends ItemProps {\n  // Overrided properties.\n  readonly type: ItemType.BOX_ITEM;\n  label: null;\n  isLinkEnabled: false;\n  parentId: null;\n  aclGroupId: null;\n  // Custom properties.\n  borderWidth: number;\n  borderColor: string | null;\n  fillColor: string | null;\n  fillTransparent: boolean | null;\n}\n\n/**\n * Build a valid typed object from a raw object.\n * This will allow us to ensure the type safety.\n *\n * @param data Raw object.\n * @return An object representing the item props.\n * @throws Will throw a TypeError if some property\n * is missing from the raw object or have an invalid type.\n */\nexport function boxPropsDecoder(data: AnyObject): BoxProps | never {\n  return {\n    ...itemBasePropsDecoder(data), // Object spread. It will merge the properties of the two objects.\n    type: ItemType.BOX_ITEM,\n    label: null,\n    isLinkEnabled: false,\n    parentId: null,\n    aclGroupId: null,\n    // Custom properties.\n    borderWidth: parseIntOr(data.borderWidth, 0),\n    borderColor: notEmptyStringOr(data.borderColor, null),\n    fillColor: notEmptyStringOr(data.fillColor, null),\n    fillTransparent: data.fillTransparent\n  };\n}\n\nexport default class Box extends Item<BoxProps> {\n  protected createDomElement(): HTMLElement {\n    const box: HTMLDivElement = document.createElement(\"div\");\n    box.className = \"box\";\n    // To prevent this item to expand beyond its parent.\n    box.style.boxSizing = \"border-box\";\n\n    if (this.props.fillTransparent) {\n      box.style.backgroundColor = \"transparent\";\n    } else {\n      if (this.props.fillColor) {\n        box.style.backgroundColor = this.props.fillColor;\n      }\n    }\n\n    // Border.\n    if (this.props.borderWidth > 0) {\n      box.style.borderStyle = \"solid\";\n      // Control the max width to prevent this item to expand beyond its parent.\n      const maxBorderWidth = Math.min(this.props.width, this.props.height) / 2;\n      const borderWidth = Math.min(this.props.borderWidth, maxBorderWidth);\n      box.style.borderWidth = `${borderWidth}px`;\n\n      if (this.props.borderColor) {\n        box.style.borderColor = this.props.borderColor;\n      }\n    }\n\n    return box;\n  }\n\n  /**\n   * To update the content element.\n   * @override Item.updateDomElement\n   */\n  protected updateDomElement(element: HTMLElement): void {\n    if (this.props.fillTransparent) {\n      element.style.backgroundColor = \"transparent\";\n    } else {\n      if (this.props.fillColor) {\n        element.style.backgroundColor = this.props.fillColor;\n      }\n    }\n\n    // Border.\n    if (this.props.borderWidth > 0) {\n      element.style.borderStyle = \"solid\";\n      // Control the max width to prevent this item to expand beyond its parent.\n      const maxBorderWidth = Math.min(this.props.width, this.props.height) / 2;\n      const borderWidth = Math.min(this.props.borderWidth, maxBorderWidth);\n      element.style.borderWidth = `${borderWidth}px`;\n\n      if (this.props.borderColor) {\n        element.style.borderColor = this.props.borderColor;\n      }\n    }\n  }\n}\n","import { LinkedVisualConsoleProps, AnyObject } from \"../lib/types\";\nimport { linkedVCPropsDecoder } from \"../lib\";\nimport Item, { ItemType, ItemProps, itemBasePropsDecoder } from \"../Item\";\n\nexport type LabelProps = {\n  type: ItemType.LABEL;\n} & ItemProps &\n  LinkedVisualConsoleProps;\n\n/**\n * Build a valid typed object from a raw object.\n * This will allow us to ensure the type safety.\n *\n * @param data Raw object.\n * @return An object representing the label props.\n * @throws Will throw a TypeError if some property\n * is missing from the raw object or have an invalid type.\n */\nexport function labelPropsDecoder(data: AnyObject): LabelProps | never {\n  return {\n    ...itemBasePropsDecoder(data), // Object spread. It will merge the properties of the two objects.\n    type: ItemType.LABEL,\n    ...linkedVCPropsDecoder(data) // Object spread. It will merge the properties of the two objects.\n  };\n}\n\nexport default class Label extends Item<LabelProps> {\n  protected createDomElement(): HTMLElement {\n    const element = document.createElement(\"div\");\n    element.className = \"label\";\n    element.innerHTML = this.getLabelWithMacrosReplaced();\n\n    return element;\n  }\n\n  /**\n   * @override Item.createLabelDomElement\n   * Create a new label for the visual console item.\n   * @return Item label.\n   */\n  public createLabelDomElement(): HTMLElement {\n    const element = document.createElement(\"div\");\n    element.className = \"visual-console-item-label\";\n    // Always return an empty label.\n    return element;\n  }\n}\n","import {\n  LinkedVisualConsoleProps,\n  AnyObject,\n  WithModuleProps\n} from \"../lib/types\";\nimport {\n  linkedVCPropsDecoder,\n  parseIntOr,\n  modulePropsDecoder,\n  replaceMacros\n} from \"../lib\";\nimport Item, { ItemType, ItemProps, itemBasePropsDecoder } from \"../Item\";\n\nexport type SimpleValueProps = {\n  type: ItemType.SIMPLE_VALUE;\n  valueType: \"string\" | \"image\";\n  value: string;\n} & (\n  | {\n      processValue: \"none\";\n    }\n  | {\n      processValue: \"avg\" | \"max\" | \"min\";\n      period: number;\n    }\n) &\n  ItemProps &\n  WithModuleProps &\n  LinkedVisualConsoleProps;\n\n/**\n * Extract a valid enum value from a raw value type.\n * @param valueType Raw value.\n */\nconst parseValueType = (valueType: unknown): SimpleValueProps[\"valueType\"] => {\n  switch (valueType) {\n    case \"string\":\n    case \"image\":\n      return valueType;\n    default:\n      return \"string\";\n  }\n};\n\n/**\n * Extract a valid enum value from a raw process value.\n * @param processValue Raw value.\n */\nconst parseProcessValue = (\n  processValue: unknown\n): SimpleValueProps[\"processValue\"] => {\n  switch (processValue) {\n    case \"none\":\n    case \"avg\":\n    case \"max\":\n    case \"min\":\n      return processValue;\n    default:\n      return \"none\";\n  }\n};\n\n/**\n * Build a valid typed object from a raw object.\n * This will allow us to ensure the type safety.\n *\n * @param data Raw object.\n * @return An object representing the simple value props.\n * @throws Will throw a TypeError if some property\n * is missing from the raw object or have an invalid type.\n */\nexport function simpleValuePropsDecoder(\n  data: AnyObject\n): SimpleValueProps | never {\n  if (typeof data.value !== \"string\" || data.value.length === 0) {\n    throw new TypeError(\"invalid value\");\n  }\n\n  const processValue = parseProcessValue(data.processValue);\n\n  return {\n    ...itemBasePropsDecoder(data), // Object spread. It will merge the properties of the two objects.\n    type: ItemType.SIMPLE_VALUE,\n    valueType: parseValueType(data.valueType),\n    value: data.value,\n    ...(processValue === \"none\"\n      ? { processValue }\n      : { processValue, period: parseIntOr(data.period, 0) }), // Object spread. It will merge the properties of the two objects.\n    ...modulePropsDecoder(data), // Object spread. It will merge the properties of the two objects.\n    ...linkedVCPropsDecoder(data) // Object spread. It will merge the properties of the two objects.\n  };\n}\n\nexport default class SimpleValue extends Item<SimpleValueProps> {\n  protected createDomElement(): HTMLElement {\n    const element = document.createElement(\"div\");\n    element.className = \"simple-value\";\n\n    if (\n      this.props.agentDisabled === true ||\n      this.props.moduleDisabled === true\n    ) {\n      element.style.opacity = \"0.2\";\n    }\n\n    if (this.props.valueType === \"image\") {\n      const img = document.createElement(\"img\");\n      img.src = this.props.value;\n      element.append(img);\n    } else {\n      // Add the value to the label and show it.\n      let text = this.props.value;\n      let label = this.getLabelWithMacrosReplaced();\n      if (label.length > 0) {\n        text = replaceMacros([{ macro: /\\(?_VALUE_\\)?/i, value: text }], label);\n      }\n\n      element.innerHTML = text;\n    }\n\n    return element;\n  }\n\n  /**\n   * Generate a element size\n   * using the current size and the default values.\n   * @return The size.\n   */ protected createLabelDomElement(): HTMLElement {\n    const element = document.createElement(\"div\");\n    element.className = \"visual-console-item-label\";\n    // Always return an empty label.\n    return element;\n  }\n}\n","var pi = Math.PI,\n    tau = 2 * pi,\n    epsilon = 1e-6,\n    tauEpsilon = tau - epsilon;\n\nfunction Path() {\n  this._x0 = this._y0 = // start of current subpath\n  this._x1 = this._y1 = null; // end of current subpath\n  this._ = \"\";\n}\n\nfunction path() {\n  return new Path;\n}\n\nPath.prototype = path.prototype = {\n  constructor: Path,\n  moveTo: function(x, y) {\n    this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y);\n  },\n  closePath: function() {\n    if (this._x1 !== null) {\n      this._x1 = this._x0, this._y1 = this._y0;\n      this._ += \"Z\";\n    }\n  },\n  lineTo: function(x, y) {\n    this._ += \"L\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n  },\n  quadraticCurveTo: function(x1, y1, x, y) {\n    this._ += \"Q\" + (+x1) + \",\" + (+y1) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n  },\n  bezierCurveTo: function(x1, y1, x2, y2, x, y) {\n    this._ += \"C\" + (+x1) + \",\" + (+y1) + \",\" + (+x2) + \",\" + (+y2) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n  },\n  arcTo: function(x1, y1, x2, y2, r) {\n    x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n    var x0 = this._x1,\n        y0 = this._y1,\n        x21 = x2 - x1,\n        y21 = y2 - y1,\n        x01 = x0 - x1,\n        y01 = y0 - y1,\n        l01_2 = x01 * x01 + y01 * y01;\n\n    // Is the radius negative? Error.\n    if (r < 0) throw new Error(\"negative radius: \" + r);\n\n    // Is this path empty? Move to (x1,y1).\n    if (this._x1 === null) {\n      this._ += \"M\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n    }\n\n    // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n    else if (!(l01_2 > epsilon));\n\n    // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n    // Equivalently, is (x1,y1) coincident with (x2,y2)?\n    // Or, is the radius zero? Line to (x1,y1).\n    else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n      this._ += \"L\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n    }\n\n    // Otherwise, draw an arc!\n    else {\n      var x20 = x2 - x0,\n          y20 = y2 - y0,\n          l21_2 = x21 * x21 + y21 * y21,\n          l20_2 = x20 * x20 + y20 * y20,\n          l21 = Math.sqrt(l21_2),\n          l01 = Math.sqrt(l01_2),\n          l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n          t01 = l / l01,\n          t21 = l / l21;\n\n      // If the start tangent is not coincident with (x0,y0), line to.\n      if (Math.abs(t01 - 1) > epsilon) {\n        this._ += \"L\" + (x1 + t01 * x01) + \",\" + (y1 + t01 * y01);\n      }\n\n      this._ += \"A\" + r + \",\" + r + \",0,0,\" + (+(y01 * x20 > x01 * y20)) + \",\" + (this._x1 = x1 + t21 * x21) + \",\" + (this._y1 = y1 + t21 * y21);\n    }\n  },\n  arc: function(x, y, r, a0, a1, ccw) {\n    x = +x, y = +y, r = +r, ccw = !!ccw;\n    var dx = r * Math.cos(a0),\n        dy = r * Math.sin(a0),\n        x0 = x + dx,\n        y0 = y + dy,\n        cw = 1 ^ ccw,\n        da = ccw ? a0 - a1 : a1 - a0;\n\n    // Is the radius negative? Error.\n    if (r < 0) throw new Error(\"negative radius: \" + r);\n\n    // Is this path empty? Move to (x0,y0).\n    if (this._x1 === null) {\n      this._ += \"M\" + x0 + \",\" + y0;\n    }\n\n    // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n    else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n      this._ += \"L\" + x0 + \",\" + y0;\n    }\n\n    // Is this arc empty? We’re done.\n    if (!r) return;\n\n    // Does the angle go the wrong way? Flip the direction.\n    if (da < 0) da = da % tau + tau;\n\n    // Is this a complete circle? Draw two arcs to complete the circle.\n    if (da > tauEpsilon) {\n      this._ += \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (x - dx) + \",\" + (y - dy) + \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (this._x1 = x0) + \",\" + (this._y1 = y0);\n    }\n\n    // Is this arc non-empty? Draw an arc!\n    else if (da > epsilon) {\n      this._ += \"A\" + r + \",\" + r + \",0,\" + (+(da >= pi)) + \",\" + cw + \",\" + (this._x1 = x + r * Math.cos(a1)) + \",\" + (this._y1 = y + r * Math.sin(a1));\n    }\n  },\n  rect: function(x, y, w, h) {\n    this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y) + \"h\" + (+w) + \"v\" + (+h) + \"h\" + (-w) + \"Z\";\n  },\n  toString: function() {\n    return this._;\n  }\n};\n\nexport default path;\n","export default function(x) {\n  return function constant() {\n    return x;\n  };\n}\n","export var abs = Math.abs;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var max = Math.max;\nexport var min = Math.min;\nexport var sin = Math.sin;\nexport var sqrt = Math.sqrt;\n\nexport var epsilon = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = 2 * pi;\n\nexport function acos(x) {\n  return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n  return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant.js\";\nimport {abs, acos, asin, atan2, cos, epsilon, halfPi, max, min, pi, sin, sqrt, tau} from \"./math.js\";\n\nfunction arcInnerRadius(d) {\n  return d.innerRadius;\n}\n\nfunction arcOuterRadius(d) {\n  return d.outerRadius;\n}\n\nfunction arcStartAngle(d) {\n  return d.startAngle;\n}\n\nfunction arcEndAngle(d) {\n  return d.endAngle;\n}\n\nfunction arcPadAngle(d) {\n  return d && d.padAngle; // Note: optional!\n}\n\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n  var x10 = x1 - x0, y10 = y1 - y0,\n      x32 = x3 - x2, y32 = y3 - y2,\n      t = y32 * x10 - x32 * y10;\n  if (t * t < epsilon) return;\n  t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;\n  return [x0 + t * x10, y0 + t * y10];\n}\n\n// Compute perpendicular offset line of length rc.\n// http://mathworld.wolfram.com/Circle-LineIntersection.html\nfunction cornerTangents(x0, y0, x1, y1, r1, rc, cw) {\n  var x01 = x0 - x1,\n      y01 = y0 - y1,\n      lo = (cw ? rc : -rc) / sqrt(x01 * x01 + y01 * y01),\n      ox = lo * y01,\n      oy = -lo * x01,\n      x11 = x0 + ox,\n      y11 = y0 + oy,\n      x10 = x1 + ox,\n      y10 = y1 + oy,\n      x00 = (x11 + x10) / 2,\n      y00 = (y11 + y10) / 2,\n      dx = x10 - x11,\n      dy = y10 - y11,\n      d2 = dx * dx + dy * dy,\n      r = r1 - rc,\n      D = x11 * y10 - x10 * y11,\n      d = (dy < 0 ? -1 : 1) * sqrt(max(0, r * r * d2 - D * D)),\n      cx0 = (D * dy - dx * d) / d2,\n      cy0 = (-D * dx - dy * d) / d2,\n      cx1 = (D * dy + dx * d) / d2,\n      cy1 = (-D * dx + dy * d) / d2,\n      dx0 = cx0 - x00,\n      dy0 = cy0 - y00,\n      dx1 = cx1 - x00,\n      dy1 = cy1 - y00;\n\n  // Pick the closer of the two intersection points.\n  // TODO Is there a faster way to determine which intersection to use?\n  if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n\n  return {\n    cx: cx0,\n    cy: cy0,\n    x01: -ox,\n    y01: -oy,\n    x11: cx0 * (r1 / r - 1),\n    y11: cy0 * (r1 / r - 1)\n  };\n}\n\nexport default function() {\n  var innerRadius = arcInnerRadius,\n      outerRadius = arcOuterRadius,\n      cornerRadius = constant(0),\n      padRadius = null,\n      startAngle = arcStartAngle,\n      endAngle = arcEndAngle,\n      padAngle = arcPadAngle,\n      context = null;\n\n  function arc() {\n    var buffer,\n        r,\n        r0 = +innerRadius.apply(this, arguments),\n        r1 = +outerRadius.apply(this, arguments),\n        a0 = startAngle.apply(this, arguments) - halfPi,\n        a1 = endAngle.apply(this, arguments) - halfPi,\n        da = abs(a1 - a0),\n        cw = a1 > a0;\n\n    if (!context) context = buffer = path();\n\n    // Ensure that the outer radius is always larger than the inner radius.\n    if (r1 < r0) r = r1, r1 = r0, r0 = r;\n\n    // Is it a point?\n    if (!(r1 > epsilon)) context.moveTo(0, 0);\n\n    // Or is it a circle or annulus?\n    else if (da > tau - epsilon) {\n      context.moveTo(r1 * cos(a0), r1 * sin(a0));\n      context.arc(0, 0, r1, a0, a1, !cw);\n      if (r0 > epsilon) {\n        context.moveTo(r0 * cos(a1), r0 * sin(a1));\n        context.arc(0, 0, r0, a1, a0, cw);\n      }\n    }\n\n    // Or is it a circular or annular sector?\n    else {\n      var a01 = a0,\n          a11 = a1,\n          a00 = a0,\n          a10 = a1,\n          da0 = da,\n          da1 = da,\n          ap = padAngle.apply(this, arguments) / 2,\n          rp = (ap > epsilon) && (padRadius ? +padRadius.apply(this, arguments) : sqrt(r0 * r0 + r1 * r1)),\n          rc = min(abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),\n          rc0 = rc,\n          rc1 = rc,\n          t0,\n          t1;\n\n      // Apply padding? Note that since r1 ≥ r0, da1 ≥ da0.\n      if (rp > epsilon) {\n        var p0 = asin(rp / r0 * sin(ap)),\n            p1 = asin(rp / r1 * sin(ap));\n        if ((da0 -= p0 * 2) > epsilon) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0;\n        else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n        if ((da1 -= p1 * 2) > epsilon) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1;\n        else da1 = 0, a01 = a11 = (a0 + a1) / 2;\n      }\n\n      var x01 = r1 * cos(a01),\n          y01 = r1 * sin(a01),\n          x10 = r0 * cos(a10),\n          y10 = r0 * sin(a10);\n\n      // Apply rounded corners?\n      if (rc > epsilon) {\n        var x11 = r1 * cos(a11),\n            y11 = r1 * sin(a11),\n            x00 = r0 * cos(a00),\n            y00 = r0 * sin(a00),\n            oc;\n\n        // Restrict the corner radius according to the sector angle.\n        if (da < pi && (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10))) {\n          var ax = x01 - oc[0],\n              ay = y01 - oc[1],\n              bx = x11 - oc[0],\n              by = y11 - oc[1],\n              kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2),\n              lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n          rc0 = min(rc, (r0 - lc) / (kc - 1));\n          rc1 = min(rc, (r1 - lc) / (kc + 1));\n        }\n      }\n\n      // Is the sector collapsed to a line?\n      if (!(da1 > epsilon)) context.moveTo(x01, y01);\n\n      // Does the sector’s outer ring have rounded corners?\n      else if (rc1 > epsilon) {\n        t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);\n        t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);\n\n        context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n        // Have the corners merged?\n        if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n        // Otherwise, draw the two corners and the ring.\n        else {\n          context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n          context.arc(0, 0, r1, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), !cw);\n          context.arc(t1.cx, t1.cy, rc1, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n        }\n      }\n\n      // Or is the outer ring just a circular arc?\n      else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);\n\n      // Is there no inner ring, and it’s a circular sector?\n      // Or perhaps it’s an annular sector collapsed due to padding?\n      if (!(r0 > epsilon) || !(da0 > epsilon)) context.lineTo(x10, y10);\n\n      // Does the sector’s inner ring (or point) have rounded corners?\n      else if (rc0 > epsilon) {\n        t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);\n        t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);\n\n        context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n        // Have the corners merged?\n        if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n        // Otherwise, draw the two corners and the ring.\n        else {\n          context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n          context.arc(0, 0, r0, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), cw);\n          context.arc(t1.cx, t1.cy, rc0, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n        }\n      }\n\n      // Or is the inner ring just a circular arc?\n      else context.arc(0, 0, r0, a10, a00, cw);\n    }\n\n    context.closePath();\n\n    if (buffer) return context = null, buffer + \"\" || null;\n  }\n\n  arc.centroid = function() {\n    var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,\n        a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi / 2;\n    return [cos(a) * r, sin(a) * r];\n  };\n\n  arc.innerRadius = function(_) {\n    return arguments.length ? (innerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : innerRadius;\n  };\n\n  arc.outerRadius = function(_) {\n    return arguments.length ? (outerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : outerRadius;\n  };\n\n  arc.cornerRadius = function(_) {\n    return arguments.length ? (cornerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : cornerRadius;\n  };\n\n  arc.padRadius = function(_) {\n    return arguments.length ? (padRadius = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), arc) : padRadius;\n  };\n\n  arc.startAngle = function(_) {\n    return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : startAngle;\n  };\n\n  arc.endAngle = function(_) {\n    return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : endAngle;\n  };\n\n  arc.padAngle = function(_) {\n    return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : padAngle;\n  };\n\n  arc.context = function(_) {\n    return arguments.length ? ((context = _ == null ? null : _), arc) : context;\n  };\n\n  return arc;\n}\n","import { arc as arcFactory } from \"d3-shape\";\n\nimport {\n  LinkedVisualConsoleProps,\n  AnyObject,\n  WithModuleProps\n} from \"../lib/types\";\nimport {\n  linkedVCPropsDecoder,\n  modulePropsDecoder,\n  notEmptyStringOr,\n  parseIntOr,\n  parseFloatOr\n} from \"../lib\";\nimport Item, { ItemType, ItemProps, itemBasePropsDecoder } from \"../Item\";\n\nexport type PercentileProps = {\n  type: ItemType.PERCENTILE_BAR;\n  percentileType:\n    | \"progress-bar\"\n    | \"bubble\"\n    | \"circular-progress-bar\"\n    | \"circular-progress-bar-alt\";\n  valueType: \"percent\" | \"value\";\n  minValue: number | null;\n  maxValue: number | null;\n  color: string | null;\n  labelColor: string | null;\n  value: number | null;\n  unit: string | null;\n} & ItemProps &\n  WithModuleProps &\n  LinkedVisualConsoleProps;\n\n/**\n * Extract a valid enum value from a raw type value.\n * @param type Raw value.\n */\nfunction extractPercentileType(\n  type: unknown\n): PercentileProps[\"percentileType\"] {\n  switch (type) {\n    case \"progress-bar\":\n    case \"bubble\":\n    case \"circular-progress-bar\":\n    case \"circular-progress-bar-alt\":\n      return type;\n    default:\n    case ItemType.PERCENTILE_BAR:\n      return \"progress-bar\";\n    case ItemType.PERCENTILE_BUBBLE:\n      return \"bubble\";\n    case ItemType.CIRCULAR_PROGRESS_BAR:\n      return \"circular-progress-bar\";\n    case ItemType.CIRCULAR_INTERIOR_PROGRESS_BAR:\n      return \"circular-progress-bar-alt\";\n  }\n}\n\n/**\n * Extract a valid enum value from a raw value type value.\n * @param type Raw value.\n */\nfunction extractValueType(valueType: unknown): PercentileProps[\"valueType\"] {\n  switch (valueType) {\n    case \"percent\":\n    case \"value\":\n      return valueType;\n    default:\n      return \"percent\";\n  }\n}\n\n/**\n * Build a valid typed object from a raw object.\n * This will allow us to ensure the type safety.\n *\n * @param data Raw object.\n * @return An object representing the percentile props.\n * @throws Will throw a TypeError if some property\n * is missing from the raw object or have an invalid type.\n */\nexport function percentilePropsDecoder(\n  data: AnyObject\n): PercentileProps | never {\n  return {\n    ...itemBasePropsDecoder(data), // Object spread. It will merge the properties of the two objects.\n    type: ItemType.PERCENTILE_BAR,\n    percentileType: extractPercentileType(data.percentileType || data.type),\n    valueType: extractValueType(data.valueType),\n    minValue: parseIntOr(data.minValue, null),\n    maxValue: parseIntOr(data.maxValue, null),\n    color: notEmptyStringOr(data.color, null),\n    labelColor: notEmptyStringOr(data.labelColor, null),\n    value: parseFloatOr(data.value, null),\n    unit: notEmptyStringOr(data.unit, null),\n    ...modulePropsDecoder(data), // Object spread. It will merge the properties of the two objects.\n    ...linkedVCPropsDecoder(data) // Object spread. It will merge the properties of the two objects.\n  };\n}\n\nconst svgNS = \"http://www.w3.org/2000/svg\";\n\nexport default class Percentile extends Item<PercentileProps> {\n  protected createDomElement(): HTMLElement {\n    const colors = {\n      background: \"#000000\",\n      progress: this.props.color || \"#000000\",\n      text: this.props.labelColor || \"#bcbcbc\"\n    };\n    // Progress.\n    const progress = this.getProgress();\n    // Main element.\n    const element = document.createElement(\"div\");\n\n    var formatValue;\n    if (this.props.value != null) {\n      if (Intl) {\n        formatValue = Intl.NumberFormat(\"en-EN\").format(this.props.value);\n      } else {\n        formatValue = this.props.value;\n      }\n    }\n\n    // SVG container.\n    const svg = document.createElementNS(svgNS, \"svg\");\n\n    switch (this.props.percentileType) {\n      case \"progress-bar\":\n        {\n          const backgroundRect = document.createElementNS(svgNS, \"rect\");\n          backgroundRect.setAttribute(\"fill\", colors.background);\n          backgroundRect.setAttribute(\"fill-opacity\", \"0.5\");\n          backgroundRect.setAttribute(\"width\", \"100%\");\n          backgroundRect.setAttribute(\"height\", \"100%\");\n          backgroundRect.setAttribute(\"rx\", \"5\");\n          backgroundRect.setAttribute(\"ry\", \"5\");\n          const progressRect = document.createElementNS(svgNS, \"rect\");\n          progressRect.setAttribute(\"fill\", colors.progress);\n          progressRect.setAttribute(\"fill-opacity\", \"1\");\n          progressRect.setAttribute(\"width\", `${progress}%`);\n          progressRect.setAttribute(\"height\", \"100%\");\n          progressRect.setAttribute(\"rx\", \"5\");\n          progressRect.setAttribute(\"ry\", \"5\");\n          const text = document.createElementNS(svgNS, \"text\");\n          text.setAttribute(\"text-anchor\", \"middle\");\n          text.setAttribute(\"alignment-baseline\", \"middle\");\n          text.setAttribute(\"font-size\", \"15\");\n          text.setAttribute(\"font-family\", \"lato\");\n          text.setAttribute(\"font-weight\", \"bold\");\n          text.setAttribute(\"text-anchor\", `middle`);\n          text.setAttribute(\"alignment-baseline\", `middle`);\n          text.setAttribute(\"x\", `50%`);\n          text.setAttribute(\"y\", `50%`);\n          text.setAttribute(\"fill\", colors.text);\n\n          if (this.props.valueType === \"value\") {\n            text.style.fontSize = \"6pt\";\n\n            text.textContent = this.props.unit\n              ? `${formatValue} ${this.props.unit}`\n              : `${formatValue}`;\n          } else {\n            text.textContent = `${progress}%`;\n          }\n\n          svg.setAttribute(\"width\", \"100%\");\n          svg.setAttribute(\"height\", \"100%\");\n          svg.append(backgroundRect, progressRect, text);\n        }\n        break;\n      case \"bubble\":\n      case \"circular-progress-bar\":\n      case \"circular-progress-bar-alt\":\n        {\n          // Auto resize SVG using the view box magic: https://css-tricks.com/scale-svg/\n          svg.setAttribute(\"viewBox\", \"0 0 100 100\");\n\n          if (this.props.percentileType === \"bubble\") {\n            // Create and append the circles.\n            const backgroundCircle = document.createElementNS(svgNS, \"circle\");\n            backgroundCircle.setAttribute(\"transform\", \"translate(50 50)\");\n            backgroundCircle.setAttribute(\"fill\", colors.background);\n            backgroundCircle.setAttribute(\"fill-opacity\", \"0.5\");\n            backgroundCircle.setAttribute(\"r\", \"50\");\n            const progressCircle = document.createElementNS(svgNS, \"circle\");\n            progressCircle.setAttribute(\"transform\", \"translate(50 50)\");\n            progressCircle.setAttribute(\"fill\", colors.progress);\n            progressCircle.setAttribute(\"fill-opacity\", \"1\");\n            progressCircle.setAttribute(\"r\", `${progress / 2}`);\n\n            svg.append(backgroundCircle, progressCircle);\n          } else {\n            // Create and append the circles.\n            const arcProps = {\n              innerRadius:\n                this.props.percentileType === \"circular-progress-bar\" ? 30 : 0,\n              outerRadius: 50,\n              startAngle: 0,\n              endAngle: Math.PI * 2\n            };\n            const arc = arcFactory();\n\n            const backgroundCircle = document.createElementNS(svgNS, \"path\");\n            backgroundCircle.setAttribute(\"transform\", \"translate(50 50)\");\n            backgroundCircle.setAttribute(\"fill\", colors.background);\n            backgroundCircle.setAttribute(\"fill-opacity\", \"0.5\");\n            backgroundCircle.setAttribute(\"d\", `${arc(arcProps)}`);\n            const progressCircle = document.createElementNS(svgNS, \"path\");\n            progressCircle.setAttribute(\"transform\", \"translate(50 50)\");\n            progressCircle.setAttribute(\"fill\", colors.progress);\n            progressCircle.setAttribute(\"fill-opacity\", \"1\");\n            progressCircle.setAttribute(\n              \"d\",\n              `${arc({\n                ...arcProps,\n                endAngle: arcProps.endAngle * (progress / 100)\n              })}`\n            );\n\n            svg.append(backgroundCircle, progressCircle);\n          }\n\n          // Create and append the text.\n          const text = document.createElementNS(svgNS, \"text\");\n          text.setAttribute(\"text-anchor\", \"middle\");\n          text.setAttribute(\"alignment-baseline\", \"middle\");\n          text.setAttribute(\"font-size\", \"16\");\n          text.setAttribute(\"font-family\", \"lato\");\n          text.setAttribute(\"font-weight\", \"bold\");\n          text.setAttribute(\"fill\", colors.text);\n\n          if (this.props.valueType === \"value\" && this.props.value != null) {\n            // Show value and unit in 1 (no unit) or 2 lines.\n            if (this.props.unit && this.props.unit.length > 0) {\n              const value = document.createElementNS(svgNS, \"tspan\");\n              value.setAttribute(\"x\", \"0\");\n              value.setAttribute(\"dy\", \"1em\");\n              value.textContent = `${formatValue}`;\n              value.style.fontSize = \"8pt\";\n              const unit = document.createElementNS(svgNS, \"tspan\");\n              unit.setAttribute(\"x\", \"0\");\n              unit.setAttribute(\"dy\", \"1em\");\n              unit.textContent = `${this.props.unit}`;\n              unit.style.fontSize = \"8pt\";\n              text.append(value, unit);\n              text.setAttribute(\"transform\", \"translate(50 33)\");\n            } else {\n              text.textContent = `${formatValue}`;\n              text.style.fontSize = \"8pt\";\n              text.setAttribute(\"transform\", \"translate(50 50)\");\n            }\n          } else {\n            // Percentage.\n            text.textContent = `${progress}%`;\n            text.setAttribute(\"transform\", \"translate(50 50)\");\n          }\n\n          svg.append(text);\n        }\n        break;\n    }\n\n    if (\n      this.props.agentDisabled === true ||\n      this.props.moduleDisabled === true\n    ) {\n      svg.setAttribute(\"opacity\", \"0.2\");\n    }\n\n    if (svg !== null) element.append(svg);\n\n    return element;\n  }\n\n  /**\n   * To update the content element.\n   * @override Item.updateDomElement\n   */\n  protected updateDomElement(element: HTMLElement): void {\n    if (this.meta.isBeingResized === false) {\n      this.resizeElement(this.props.width, this.props.height);\n    }\n    element.innerHTML = this.createDomElement().innerHTML;\n  }\n\n  /**\n   * To update the content element.\n   * @override resizeElement\n   */\n  public resizeElement(width: number, height: number): void {\n    if (this.props.percentileType === \"progress-bar\") {\n      super.resizeElement(width, 35);\n    } else {\n      super.resizeElement(width, width);\n    }\n  }\n\n  /**\n   * To update the content element.\n   * @override resize\n   */\n  public resize(width: number): void {\n    this.resizeElement(width, width);\n    let height = this.props.maxValue || 0;\n    if (this.props.percentileType === \"progress-bar\") {\n      height = 35;\n    }\n    super.setProps({\n      ...this.props, // Object spread: http://es6-features.org/#SpreadOperator\n      width,\n      height\n    });\n  }\n\n  private getProgress(): number {\n    const minValue = this.props.minValue || 0;\n    const maxValue = this.props.maxValue || 100;\n    const value = this.props.value == null ? 0 : this.props.value;\n\n    if (value <= minValue) return 0;\n    else if (value >= maxValue) return 100;\n    else return Math.trunc(((value - minValue) / (maxValue - minValue)) * 100);\n  }\n}\n","import { AnyObject } from \"../lib/types\";\nimport {\n  stringIsEmpty,\n  notEmptyStringOr,\n  decodeBase64,\n  parseIntOr,\n  t\n} from \"../lib\";\nimport Item, { ItemType, ItemProps, itemBasePropsDecoder } from \"../Item\";\nimport { FormContainer, InputGroup } from \"../Form\";\nimport fontAwesomeIcon from \"../lib/FontAwesomeIcon\";\nimport {\n  faCircleNotch,\n  faExclamationCircle\n} from \"@fortawesome/free-solid-svg-icons\";\n\nexport type ServiceProps = {\n  type: ItemType.SERVICE;\n  serviceId: number;\n  imageSrc: string | null;\n  statusImageSrc: string | null;\n  encodedTitle: string | null;\n} & ItemProps;\n\n/**\n * Build a valid typed object from a raw object.\n * This will allow us to ensure the type safety.\n *\n * @param data Raw object.\n * @return An object representing the service props.\n * @throws Will throw a TypeError if some property\n * is missing from the raw object or have an invalid type.\n */\nexport function servicePropsDecoder(data: AnyObject): ServiceProps | never {\n  if (data.imageSrc !== null) {\n    if (\n      typeof data.statusImageSrc !== \"string\" ||\n      data.imageSrc.statusImageSrc === 0\n    ) {\n      throw new TypeError(\"invalid status image src.\");\n    }\n  } else {\n    if (stringIsEmpty(data.encodedTitle)) {\n      throw new TypeError(\"missing encode tittle content.\");\n    }\n  }\n\n  if (parseIntOr(data.serviceId, null) === null) {\n    throw new TypeError(\"invalid service id.\");\n  }\n\n  return {\n    ...itemBasePropsDecoder(data), // Object spread. It will merge the properties of the two objects.\n    type: ItemType.SERVICE,\n    serviceId: data.serviceId,\n    imageSrc: notEmptyStringOr(data.imageSrc, null),\n    statusImageSrc: notEmptyStringOr(data.statusImageSrc, null),\n    encodedTitle: notEmptyStringOr(data.encodedTitle, null)\n  };\n}\n\nexport default class Service extends Item<ServiceProps> {\n  public createDomElement(): HTMLElement {\n    const element = document.createElement(\"div\");\n    element.className = \"service\";\n\n    if (this.props.statusImageSrc !== null) {\n      element.style.background = `url(${this.props.statusImageSrc}) no-repeat`;\n      element.style.backgroundSize = \"contain\";\n      element.style.backgroundPosition = \"center\";\n      if (this.props.encodedTitle !== null) {\n        element.className = \"service image forced_title\";\n        element.setAttribute(\"data-use_title_for_force_title\", \"1\");\n        element.setAttribute(\n          \"data-title\",\n          decodeBase64(this.props.encodedTitle)\n        );\n      }\n    } else if (this.props.encodedTitle !== null) {\n      element.innerHTML = decodeBase64(this.props.encodedTitle);\n    }\n\n    return element;\n  }\n\n  /**\n   * To update the content element.\n   * @override Item.updateDomElement\n   */\n  protected updateDomElement(element: HTMLElement): void {\n    if (this.props.statusImageSrc !== null) {\n      element.style.background = `url(${this.props.statusImageSrc}) no-repeat`;\n      element.style.backgroundSize = \"contain\";\n      element.style.backgroundPosition = \"center\";\n      if (this.props.encodedTitle !== null) {\n        element.className = \"service image forced_title\";\n        element.setAttribute(\"data-use_title_for_force_title\", \"1\");\n        element.setAttribute(\n          \"data-title\",\n          decodeBase64(this.props.encodedTitle)\n        );\n      }\n      element.innerHTML = \"\";\n    } else if (this.props.encodedTitle !== null) {\n      element.innerHTML = decodeBase64(this.props.encodedTitle);\n    }\n  }\n}\n","import { AnyObject, WithModuleProps } from \"../lib/types\";\n\nimport { modulePropsDecoder, parseIntOr, stringIsEmpty, t } from \"../lib\";\nimport Item, { ItemType, ItemProps, itemBasePropsDecoder } from \"../Item\";\n\nexport type OdometerProps = {\n  type: ItemType.ODOMETER;\n  value: number;\n  status: string;\n  title: string | null;\n  titleModule: string;\n  titleColor: string;\n  odometerType: string;\n  thresholds: string | any;\n  minMaxValue: string;\n} & ItemProps &\n  WithModuleProps;\n\n/**\n * Build a valid typed object from a raw object.\n * This will allow us to ensure the type safety.\n *\n * @param data Raw object.\n * @return An object representing the events history props.\n * @throws Will throw a TypeError if some property\n * is missing from the raw object or have an invalid type.\n */\nexport function odometerPropsDecoder(data: AnyObject): OdometerProps | never {\n  return {\n    ...itemBasePropsDecoder(data), // Object spread. It will merge the properties of the two objects.\n    type: ItemType.ODOMETER,\n    value: parseIntOr(data.value, 0),\n    status: stringIsEmpty(data.status) ? \"#B2B2B2\" : data.status,\n    titleColor: stringIsEmpty(data.titleColor) ? \"#3f3f3f\" : data.titleColor,\n    title: stringIsEmpty(data.title) ? \"\" : data.title,\n    titleModule: stringIsEmpty(data.titleModule) ? \"\" : data.titleModule,\n    thresholds: stringIsEmpty(data.thresholds) ? \"\" : data.thresholds,\n    minMaxValue: stringIsEmpty(data.minMaxValue) ? \"\" : data.minMaxValue,\n    odometerType: stringIsEmpty(data.odometerType)\n      ? \"percent\"\n      : data.odometerType,\n    ...modulePropsDecoder(data) // Object spread. It will merge the properties of the two objects.\n  };\n}\n\nexport default class Odometer extends Item<OdometerProps> {\n  protected createDomElement(): HTMLElement {\n    let lineWarning = \"\";\n    let lineWarning2 = \"\";\n    let lineCritical = \"\";\n    let lineCritical2 = \"\";\n\n    if (this.props.thresholds !== \"\") {\n      const thresholds = JSON.parse(this.props.thresholds);\n\n      if (thresholds !== null) {\n        if (thresholds.min_warning != 0 || thresholds.max_warning != 0) {\n          lineWarning = this.getCoords(\n            thresholds.min_warning,\n            this.props.width / 2\n          );\n          if (thresholds.max_warning == 0) {\n            lineWarning2 = this.getCoords(100, this.props.width / 2);\n          } else {\n            lineWarning2 = this.getCoords(\n              thresholds.max_warning,\n              this.props.width / 2\n            );\n          }\n        }\n\n        if (thresholds.min_critical != 0 || thresholds.max_critical != 0) {\n          lineCritical = this.getCoords(\n            thresholds.min_critical,\n            this.props.width / 2\n          );\n          if (thresholds.max_critical == 0) {\n            lineCritical2 = this.getCoords(100, this.props.width / 2);\n          } else {\n            lineCritical2 = this.getCoords(\n              thresholds.max_critical,\n              this.props.width / 2\n            );\n          }\n        }\n      }\n    }\n\n    let percent = \"\";\n    let number;\n    // Float\n    if (\n      Number(this.props.value) === this.props.value &&\n      this.props.value % 1 !== 0\n    ) {\n      number = this.props.value.toFixed(1);\n    } else {\n      if (this.props.minMaxValue === \"\") {\n        percent = \" %\";\n      } else {\n        percent = this.getSubfix(this.props.value);\n      }\n      number = new Intl.NumberFormat(\"es\", {\n        maximumSignificantDigits: 4,\n        maximumFractionDigits: 3\n      }).format(this.props.value);\n    }\n\n    var numb = number.match(/\\d*\\.\\d/);\n    if (numb !== null) {\n      number = numb[0];\n    }\n\n    const rotate = this.getRotate(this.props.value);\n\n    let backgroundColor = document.getElementById(\n      \"visual-console-container\"\n    ) as HTMLElement;\n\n    if (backgroundColor === null) {\n      backgroundColor = document.getElementById(\n        `visual-console-container-${this.props.cellId}`\n      ) as HTMLElement;\n    }\n\n    if (backgroundColor.style.backgroundColor == \"\") {\n      backgroundColor.style.backgroundColor = \"#fff\";\n    }\n\n    const anchoB = this.props.width * 0.7;\n\n    const element = document.createElement(\"div\");\n    element.className = \"odometer\";\n\n    if (\n      this.props.agentDisabled === true ||\n      this.props.moduleDisabled === true\n    ) {\n      element.style.opacity = \"0.2\";\n    }\n\n    // Odometer container.\n    const odometerContainer = document.createElement(\"div\");\n    odometerContainer.className = \"odometer-container\";\n\n    // Central semicircle.\n    const odometerA = document.createElement(\"div\");\n    odometerA.className = \"odometer-a\";\n    odometerA.style.backgroundColor = `${backgroundColor.style.backgroundColor}`;\n\n    // Semicircle rotating with the value.\n    const odometerB = document.createElement(\"div\");\n    odometerB.className = \"odometer-b\";\n    odometerB.id = `odometerB-${this.props.id}`;\n    odometerB.style.backgroundColor = `${this.props.status}`;\n\n    // Dark semicircle.\n    const odometerC = document.createElement(\"div\");\n    odometerC.className = \"odometer-c\";\n\n    // Green outer semicircle.\n    const gaugeE = document.createElement(\"div\");\n    gaugeE.className = \"odometer-d\";\n\n    const SVG_NS = \"http://www.w3.org/2000/svg\";\n    // Portion of threshold warning\n    if (lineWarning != \"\") {\n      const svgWarning = document.createElementNS(SVG_NS, \"svg\");\n      svgWarning.setAttributeNS(null, \"width\", \"100%\");\n      svgWarning.setAttributeNS(null, \"height\", \"100%\");\n      svgWarning.setAttributeNS(null, \"style\", \"position:absolute;z-index:1\");\n      const pathWarning = document.createElementNS(SVG_NS, \"path\");\n      pathWarning.setAttributeNS(null, \"id\", `svgWarning-${this.props.id}`);\n      pathWarning.setAttributeNS(\n        null,\n        \"d\",\n        `M${this.props.width / 2},${this.props.width / 2}L${lineWarning}A${this\n          .props.width / 2},${this.props.width / 2},0,0,1,${lineWarning2}Z`\n      );\n      pathWarning.setAttributeNS(null, \"class\", \"svg_warning\");\n      svgWarning.appendChild(pathWarning);\n      odometerContainer.appendChild(svgWarning);\n    }\n\n    // Portion of threshold critical\n    if (lineCritical != \"\") {\n      const svgCritical = document.createElementNS(SVG_NS, \"svg\");\n      svgCritical.setAttributeNS(null, \"width\", \"100%\");\n      svgCritical.setAttributeNS(null, \"height\", \"100%\");\n      svgCritical.setAttributeNS(null, \"style\", \"position:absolute;z-index:2\");\n      const pathCritical = document.createElementNS(SVG_NS, \"path\");\n      pathCritical.setAttributeNS(null, \"id\", `svgCritical-${this.props.id}`);\n      pathCritical.setAttributeNS(\n        null,\n        \"d\",\n        `M${this.props.width / 2},${this.props.width / 2}L${lineCritical}A${this\n          .props.width / 2},${this.props.width / 2},0,0,1,${lineCritical2}Z`\n      );\n      pathCritical.setAttributeNS(null, \"fill\", \"#E63C52\");\n      svgCritical.appendChild(pathCritical);\n      odometerContainer.appendChild(svgCritical);\n    }\n\n    // Text.\n    const h1 = document.createElement(\"h1\");\n    h1.innerText = number + percent;\n    h1.style.fontSize = `${anchoB * 0.17}px`;\n    h1.style.color = `${this.props.status}`;\n    h1.style.lineHeight = \"0\";\n\n    const h2 = document.createElement(\"h2\");\n    if (this.props.title == \"\") {\n      h2.textContent = this.truncateTitle(this.props.moduleName);\n    } else {\n      h2.textContent = this.truncateTitle(this.props.title);\n    }\n    h2.title = this.props.titleModule;\n    h2.setAttribute(\"title\", this.props.titleModule);\n\n    h2.style.fontSize = `${anchoB * 0.06}px`;\n    h2.style.color = `${this.props.titleColor}`;\n    h2.style.lineHeight = \"0\";\n\n    let script = document.createElement(\"script\");\n    script.type = \"text/javascript\";\n    script.onload = () => {\n      odometerB.style.transform = `rotate(${rotate}turn)`;\n    };\n    var urlPandora = window.location.pathname.split(\"/\")[1];\n    script.src = `${document.dir}/${urlPandora}/include/javascript/pandora_alerts.js`;\n    odometerA.appendChild(h1);\n    odometerA.appendChild(h2);\n    odometerContainer.appendChild(odometerB);\n    odometerContainer.appendChild(odometerC);\n    odometerContainer.appendChild(gaugeE);\n    odometerContainer.appendChild(odometerA);\n    odometerContainer.appendChild(script);\n    element.appendChild(odometerContainer);\n\n    return element;\n  }\n\n  protected updateDomElement(element: HTMLElement): void {\n    element.innerHTML = this.createDomElement().innerHTML;\n\n    let rotate = this.getRotate(this.props.value);\n\n    const svgWarning = document.getElementById(`svgWarning-${this.props.id}`);\n    if (svgWarning != null) {\n      svgWarning.style.display = \"none\";\n    }\n\n    const svgCritical = document.getElementById(`svgCritical-${this.props.id}`);\n    if (svgCritical != null) {\n      svgCritical.style.display = \"none\";\n    }\n\n    setTimeout(() => {\n      if (svgWarning != null) {\n        svgWarning.style.display = \"block\";\n      }\n\n      if (svgCritical != null) {\n        svgCritical.style.display = \"block\";\n      }\n\n      var odometerB = document.getElementById(`odometerB-${this.props.id}`);\n      if (odometerB) {\n        odometerB.style.transform = `rotate(${rotate}turn)`;\n      }\n    }, 500);\n  }\n\n  public resizeElement(width: number): void {\n    super.resizeElement(width, width / 2);\n  }\n\n  /**\n   * To update the content element.\n   * @override resize\n   */\n  public resize(width: number): void {\n    this.resizeElement(this.props.width);\n  }\n\n  private getRotate(value: number): number {\n    let rotate = 0;\n    if (this.props.minMaxValue === \"\") {\n      rotate = value / 2 / 100;\n    } else {\n      const minMax = JSON.parse(this.props.minMaxValue);\n      if (minMax[\"min\"] === value) {\n        rotate = 0;\n      } else if (minMax[\"max\"] === value) {\n        rotate = 0.5;\n      } else {\n        const limit = minMax[\"max\"] - minMax[\"min\"];\n        const valueMax = minMax[\"max\"] - value;\n        rotate = (100 - (valueMax * 100) / limit) / 100 / 2;\n      }\n    }\n\n    return rotate;\n  }\n\n  private getSubfix(value: number): string {\n    let subfix = \"\";\n    const length = (value + \"\").length;\n    if (length > 3 && length <= 6) {\n      subfix = \" K\";\n    } else if (length > 6 && length <= 9) {\n      subfix = \" M\";\n    } else if (length > 9 && length <= 12) {\n      subfix = \" G\";\n    } else if (length > 12 && length <= 15) {\n      subfix = \" T\";\n    }\n\n    return subfix;\n  }\n\n  private getCoords(percent: number, radio: number): string {\n    if (this.props.minMaxValue !== \"\") {\n      const minMax = JSON.parse(this.props.minMaxValue);\n      if (minMax[\"min\"] === percent) {\n        percent = 0;\n      } else if (minMax[\"max\"] === percent || percent === 100) {\n        percent = 100;\n      } else {\n        const limit = minMax[\"max\"] - minMax[\"min\"];\n        let valueMax = minMax[\"max\"] - percent;\n        percent = 100 - (valueMax * 100) / limit;\n      }\n    }\n\n    percent = 180 - percent * 1.8;\n    const x = radio + Math.cos((percent * Math.PI) / 180) * radio;\n    const y = radio - Math.sin((percent * Math.PI) / 180) * radio;\n    return `${x},${y}`;\n  }\n\n  private truncateTitle(title: any): string {\n    if (title != null && title.length > 22) {\n      const halfLength = title.length / 2;\n      const diff = halfLength - 9;\n      const stringBefore = title.substr(0, halfLength - diff);\n      const stringAfter = title.substr(halfLength + diff);\n\n      return `${stringBefore}...${stringAfter}`;\n    } else {\n      return title;\n    }\n  }\n}\n","import { AnyObject, Size, Position, WithModuleProps } from \"./lib/types\";\nimport {\n  parseBoolean,\n  sizePropsDecoder,\n  parseIntOr,\n  notEmptyStringOr,\n  itemMetaDecoder,\n  t,\n  ellipsize,\n  debounce\n} from \"./lib\";\nimport Item, {\n  ItemType,\n  ItemProps,\n  ItemClickEvent,\n  ItemRemoveEvent,\n  ItemMovedEvent,\n  ItemResizedEvent,\n  ItemSelectionChangedEvent\n} from \"./Item\";\nimport StaticGraph, { staticGraphPropsDecoder } from \"./items/StaticGraph\";\nimport Icon, { iconPropsDecoder } from \"./items/Icon\";\nimport ColorCloud, { colorCloudPropsDecoder } from \"./items/ColorCloud\";\nimport NetworkLink, { networkLinkPropsDecoder } from \"./items/NetworkLink\";\nimport Group, { groupPropsDecoder } from \"./items/Group\";\nimport Clock, { clockPropsDecoder } from \"./items/Clock\";\nimport Box, { boxPropsDecoder } from \"./items/Box\";\nimport Line, { linePropsDecoder, LineMovedEvent } from \"./items/Line\";\nimport Label, { labelPropsDecoder } from \"./items/Label\";\nimport SimpleValue, { simpleValuePropsDecoder } from \"./items/SimpleValue\";\nimport EventsHistory, {\n  eventsHistoryPropsDecoder\n} from \"./items/EventsHistory\";\nimport Percentile, { percentilePropsDecoder } from \"./items/Percentile\";\nimport TypedEvent, { Disposable, Listener } from \"./lib/TypedEvent\";\nimport DonutGraph, { donutGraphPropsDecoder } from \"./items/DonutGraph\";\nimport BarsGraph, { barsGraphPropsDecoder } from \"./items/BarsGraph\";\nimport ModuleGraph, { moduleGraphPropsDecoder } from \"./items/ModuleGraph\";\nimport Service, { servicePropsDecoder } from \"./items/Service\";\nimport Odometer, { odometerPropsDecoder } from \"./items/Odometer\";\nimport BasicChart, { basicChartPropsDecoder } from \"./items/BasicChart\";\n\n// TODO: Document.\n// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\nfunction itemInstanceFrom(data: AnyObject) {\n  const type = parseIntOr(data.type, null);\n  if (type == null) throw new TypeError(\"missing item type.\");\n\n  const meta = itemMetaDecoder(data);\n\n  switch (type as ItemType) {\n    case ItemType.STATIC_GRAPH:\n      return new StaticGraph(staticGraphPropsDecoder(data), meta);\n    case ItemType.MODULE_GRAPH:\n      return new ModuleGraph(moduleGraphPropsDecoder(data), meta);\n    case ItemType.SIMPLE_VALUE:\n    case ItemType.SIMPLE_VALUE_MAX:\n    case ItemType.SIMPLE_VALUE_MIN:\n    case ItemType.SIMPLE_VALUE_AVG:\n      return new SimpleValue(simpleValuePropsDecoder(data), meta);\n    case ItemType.PERCENTILE_BAR:\n    case ItemType.PERCENTILE_BUBBLE:\n    case ItemType.CIRCULAR_PROGRESS_BAR:\n    case ItemType.CIRCULAR_INTERIOR_PROGRESS_BAR:\n      return new Percentile(percentilePropsDecoder(data), meta);\n    case ItemType.LABEL:\n      return new Label(labelPropsDecoder(data), meta);\n    case ItemType.ICON:\n      return new Icon(iconPropsDecoder(data), meta);\n    case ItemType.SERVICE:\n      return new Service(servicePropsDecoder(data), meta);\n    case ItemType.GROUP_ITEM:\n      return new Group(groupPropsDecoder(data), meta);\n    case ItemType.BOX_ITEM:\n      return new Box(boxPropsDecoder(data), meta);\n    case ItemType.LINE_ITEM:\n      return new Line(linePropsDecoder(data), meta);\n    case ItemType.AUTO_SLA_GRAPH:\n      return new EventsHistory(eventsHistoryPropsDecoder(data), meta);\n    case ItemType.DONUT_GRAPH:\n      return new DonutGraph(donutGraphPropsDecoder(data), meta);\n    case ItemType.BARS_GRAPH:\n      return new BarsGraph(barsGraphPropsDecoder(data), meta);\n    case ItemType.CLOCK:\n      return new Clock(clockPropsDecoder(data), meta);\n    case ItemType.COLOR_CLOUD:\n      return new ColorCloud(colorCloudPropsDecoder(data), meta);\n    case ItemType.NETWORK_LINK:\n      return new NetworkLink(networkLinkPropsDecoder(data), meta);\n    case ItemType.ODOMETER:\n      return new Odometer(odometerPropsDecoder(data), meta);\n    case ItemType.BASIC_CHART:\n      return new BasicChart(basicChartPropsDecoder(data), meta);\n    default:\n      throw new TypeError(\"item not found\");\n  }\n}\n\n// TODO: Document.\n// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\nfunction decodeProps(data: AnyObject) {\n  const type = parseIntOr(data.type, null);\n  if (type == null) throw new TypeError(\"missing item type.\");\n\n  switch (type as ItemType) {\n    case ItemType.STATIC_GRAPH:\n      return staticGraphPropsDecoder(data);\n    case ItemType.MODULE_GRAPH:\n      return moduleGraphPropsDecoder(data);\n    case ItemType.SIMPLE_VALUE:\n    case ItemType.SIMPLE_VALUE_MAX:\n    case ItemType.SIMPLE_VALUE_MIN:\n    case ItemType.SIMPLE_VALUE_AVG:\n      return simpleValuePropsDecoder(data);\n    case ItemType.PERCENTILE_BAR:\n    case ItemType.PERCENTILE_BUBBLE:\n    case ItemType.CIRCULAR_PROGRESS_BAR:\n    case ItemType.CIRCULAR_INTERIOR_PROGRESS_BAR:\n      return percentilePropsDecoder(data);\n    case ItemType.LABEL:\n      return labelPropsDecoder(data);\n    case ItemType.ICON:\n      return iconPropsDecoder(data);\n    case ItemType.SERVICE:\n      return servicePropsDecoder(data);\n    case ItemType.GROUP_ITEM:\n      return groupPropsDecoder(data);\n    case ItemType.BOX_ITEM:\n      return boxPropsDecoder(data);\n    case ItemType.LINE_ITEM:\n      return linePropsDecoder(data);\n    case ItemType.AUTO_SLA_GRAPH:\n      return eventsHistoryPropsDecoder(data);\n    case ItemType.DONUT_GRAPH:\n      return donutGraphPropsDecoder(data);\n    case ItemType.BARS_GRAPH:\n      return barsGraphPropsDecoder(data);\n    case ItemType.CLOCK:\n      return clockPropsDecoder(data);\n    case ItemType.COLOR_CLOUD:\n      return colorCloudPropsDecoder(data);\n    case ItemType.NETWORK_LINK:\n      return networkLinkPropsDecoder(data);\n    case ItemType.ODOMETER:\n      return odometerPropsDecoder(data);\n    case ItemType.BASIC_CHART:\n      return basicChartPropsDecoder(data);\n    default:\n      throw new TypeError(\"decoder not found\");\n  }\n}\n\n// Base properties.\nexport interface VisualConsoleProps extends Size {\n  readonly id: number;\n  name: string;\n  groupId: number;\n  backgroundURL: string | null; // URL?\n  backgroundColor: string | null;\n  isFavorite: boolean;\n  relationLineWidth: number;\n  maintenanceMode: MaintenanceModeInterface | null;\n  gridSize: number | 10;\n  gridSelected: boolean | false | false;\n}\n\nexport interface MaintenanceModeInterface {\n  user: string;\n  timestamp: number;\n}\n\n/**\n * Build a valid typed object from a raw object.\n * This will allow us to ensure the type safety.\n *\n * @param data Raw object.\n * @return An object representing the Visual Console props.\n * @throws Will throw a TypeError if some property\n * is missing from the raw object or have an invalid type.\n */\nexport function visualConsolePropsDecoder(\n  data: AnyObject\n): VisualConsoleProps | never {\n  // Object destructuring: http://es6-features.org/#ObjectMatchingShorthandNotation\n  const {\n    id,\n    name,\n    groupId,\n    backgroundURL,\n    backgroundColor,\n    isFavorite,\n    relationLineWidth,\n    maintenanceMode,\n    gridSize,\n    gridSelected\n  } = data;\n\n  if (id == null || isNaN(parseInt(id))) {\n    throw new TypeError(\"invalid Id.\");\n  }\n  if (typeof name !== \"string\" || name.length === 0) {\n    throw new TypeError(\"invalid name.\");\n  }\n  if (groupId == null || isNaN(parseInt(groupId))) {\n    throw new TypeError(\"invalid group Id.\");\n  }\n\n  return {\n    id: parseInt(id),\n    name,\n    groupId: parseInt(groupId),\n    backgroundURL: notEmptyStringOr(backgroundURL, null),\n    backgroundColor: notEmptyStringOr(backgroundColor, null),\n    isFavorite: parseBoolean(isFavorite),\n    relationLineWidth: parseIntOr(relationLineWidth, 0),\n    maintenanceMode: maintenanceMode,\n    gridSize: parseIntOr(gridSize, 10),\n    gridSelected: false,\n    ...sizePropsDecoder(data)\n  };\n}\n\nexport default class VisualConsole {\n  // Reference to the DOM element which will contain the items.\n  private readonly containerRef: HTMLElement;\n  // Properties.\n  private _props: VisualConsoleProps;\n  // Visual Console Item instances by their Id.\n  private elementsById: {\n    [key: number]: Item<ItemProps>;\n  } = {};\n  // Visual Console Item Ids.\n  private elementIds: ItemProps[\"id\"][] = [];\n  // Dictionary which store the created lines.\n  private relations: {\n    [key: string]: Line;\n  } = {};\n\n  // Dictionary which store the related items (by ID).\n  private lineLinks: {\n    [key: number]: { [key: number]: { [key: string]: number } };\n  } = {};\n\n  private lines: {\n    [key: number]: { [key: string]: number };\n  } = {};\n\n  // Event manager for click events.\n  private readonly clickEventManager = new TypedEvent<ItemClickEvent>();\n  // Event manager for double click events.\n  private readonly dblClickEventManager = new TypedEvent<ItemClickEvent>();\n  // Event manager for move events.\n  private readonly movedEventManager = new TypedEvent<ItemMovedEvent>();\n  // Event manager for line move events.\n  private readonly lineMovedEventManager = new TypedEvent<LineMovedEvent>();\n  // Event manager for resize events.\n  private readonly resizedEventManager = new TypedEvent<ItemResizedEvent>();\n  // Event manager for remove events.\n  private readonly selectionChangedEventManager = new TypedEvent<\n    ItemSelectionChangedEvent\n  >();\n  // List of references to clean the event listeners.\n  private readonly disposables: Disposable[] = [];\n\n  /**\n   * React to a click on an element.\n   * @param e Event object.\n   */\n  private handleElementClick: (e: ItemClickEvent) => void = e => {\n    this.clickEventManager.emit(e);\n    // console.log(`Clicked element #${e.data.id}`, e);\n  };\n\n  /**\n   * React to a double click on an element.\n   * @param e Event object.\n   */\n  private handleElementDblClick: (e: ItemClickEvent) => void = e => {\n    this.dblClickEventManager.emit(e);\n    // console.log(`Double clicked element #${e.data.id}`, e);\n  };\n\n  /**\n   * React to a movement on an element.\n   * @param e Event object.\n   */\n  private handleElementMovement: (e: ItemMovedEvent) => void = e => {\n    var type = e.item.itemProps.type;\n\n    if (\n      type !== 13 &&\n      type !== 21 &&\n      (typeof this.props.gridSelected === \"undefined\" ||\n        this.props.gridSelected === false)\n    ) {\n      this.elements.forEach(item => {\n        if (\n          item.meta.isSelected === true &&\n          e.item.itemProps.id !== item.itemProps.id &&\n          item.props.type !== 13 &&\n          item.props.type !== 21\n        ) {\n          const movementX = e.newPosition.x - e.item.props.x;\n          const movementY = e.newPosition.y - e.item.props.y;\n\n          let newX = item.props.x + movementX;\n          let newY = item.props.y + movementY;\n\n          if (newX > this.props.width) {\n            newX = this.props.width;\n          } else if (newX <= 0) {\n            newX = 0;\n          }\n\n          if (newY > this.props.height) {\n            newY = this.props.height;\n          } else if (newY <= 0) {\n            newY = 0;\n          }\n\n          item.moveElement(newX, newY);\n          item.debouncedMovementSave(newX, newY);\n        }\n      });\n    }\n\n    if (type !== 13 && type !== 21 && this.props.gridSelected === true) {\n      var gridSize = this.props.gridSize;\n      var positionX = e.newPosition.x;\n      var positionY = e.newPosition.y;\n      if (positionX % gridSize !== 0 || positionY % gridSize !== 0) {\n        var x = Math.floor(positionX / gridSize) * gridSize;\n        var y = Math.floor(positionY / gridSize) * gridSize;\n        let elemntSelected = document.getElementById(\n          \"item-selected-move\"\n        ) as HTMLElement;\n        elemntSelected.setAttribute(\n          \"style\",\n          \"top:\" + y + \"px !important; left:\" + x + \"px !important\"\n        );\n        return;\n      }\n    }\n    // Move their relation lines.\n    const itemId = e.item.props.id;\n    const relations = this.getItemRelations(itemId);\n\n    relations.forEach(relation => {\n      if (relation.parentId === itemId) {\n        // Move the line start.\n        relation.line.props = {\n          ...relation.line.props,\n          startPosition: this.getVisualCenter(e.newPosition, e.item)\n        };\n      } else if (relation.childId === itemId) {\n        // Move the line end.\n        relation.line.props = {\n          ...relation.line.props,\n          endPosition: this.getVisualCenter(e.newPosition, e.item)\n        };\n      }\n    });\n\n    // Move lines conneted with this item.\n    this.updateLinesConnected(e.item.props, e.newPosition, false);\n\n    // console.log(`Moved element #${e.item.props.id}`, e);\n  };\n\n  /**\n   * React to a movement finished on an element.\n   * @param e Event object.\n   */\n  private handleElementMovementFinished: (e: ItemMovedEvent) => void = e => {\n    this.movedEventManager.emit(e);\n    // Move lines conneted with this item.\n    this.updateLinesConnected(e.item.props, e.newPosition, true);\n    // console.log(`Movement finished for element #${e.item.props.id}`, e);\n  };\n\n  /**\n   * Verifies if x,y are inside item coordinates.\n   * @param x Coordinate X\n   * @param y Coordinate Y\n   * @param item ItemProps instance.\n   */\n  private coordinatesInItem(x: number, y: number, props: ItemProps) {\n    if (\n      props.type == ItemType.LINE_ITEM ||\n      props.type == ItemType.NETWORK_LINK\n    ) {\n      return false;\n    }\n\n    if (\n      x > props.x &&\n      x < props.x + props.width &&\n      y > props.y &&\n      y < props.y + props.height\n    ) {\n      return true;\n    }\n    return false;\n  }\n\n  /**\n   * React to a line movement.\n   * @param e Event object.\n   */\n  private handleLineElementMovementFinished: (\n    e: LineMovedEvent\n  ) => void = e => {\n    // Update links.\n    this.refreshLink(e.item);\n\n    // Build line relationships between items and lines.\n    this.lineMovedEventManager.emit(e);\n\n    // console.log(`Movement finished for element #${e.item.props.id}`, e);\n  };\n\n  /**\n   * React to a resizement on an element.\n   * @param e Event object.\n   */\n  private handleElementResizement: (e: ItemResizedEvent) => void = e => {\n    if (\n      e.item.props.type !== 13 &&\n      e.item.props.type !== 21 &&\n      (typeof this.props.gridSelected === \"undefined\" ||\n        this.props.gridSelected === false)\n    ) {\n      this.elements.forEach(item => {\n        if (\n          item.meta.isSelected === true &&\n          e.item.itemProps.id !== item.itemProps.id &&\n          item.props.type !== 13 &&\n          item.props.type !== 21\n        ) {\n          item.setMeta({ isUpdating: true });\n          // Resize the DOM element.\n          item.resizeElement(e.newSize.width, e.newSize.height);\n          // Run the save function.\n          item.debouncedResizementSave(e.newSize.width, e.newSize.height);\n        }\n      });\n    }\n    // Move their relation lines.\n    const item = e.item;\n    const props = item.props;\n    const itemId = props.id;\n    const relations = this.getItemRelations(itemId);\n\n    const position = {\n      x: props.x,\n      y: props.y\n    };\n\n    const meta = this.elementsById[itemId].meta;\n\n    this.elementsById[itemId].meta = {\n      ...meta,\n      isUpdating: true\n    };\n\n    relations.forEach(relation => {\n      if (relation.parentId === itemId) {\n        // Move the line start.\n        relation.line.props = {\n          ...relation.line.props,\n          startPosition: this.getVisualCenter(position, item)\n        };\n      } else if (relation.childId === itemId) {\n        // Move the line end.\n        relation.line.props = {\n          ...relation.line.props,\n          endPosition: this.getVisualCenter(position, item)\n        };\n      }\n    });\n\n    // console.log(`Resized element #${e.item.props.id}`, e);\n  };\n\n  /**\n   * React to a finished resizement on an element.\n   * @param e Event object.\n   */\n  private handleElementResizementFinished: (\n    e: ItemResizedEvent\n  ) => void = e => {\n    this.resizedEventManager.emit(e);\n    // console.log(`Resize  fonished for element #${e.item.props.id}`, e);\n  };\n\n  /**\n   * Clear some element references.\n   * @param e Event object.\n   */\n  private handleElementRemove: (e: ItemRemoveEvent) => void = e => {\n    // Remove the element from the list and its relations.\n    this.elementIds = this.elementIds.filter(id => id !== e.item.props.id);\n    delete this.elementsById[e.item.props.id];\n    this.clearRelations(e.item.props.id);\n  };\n\n  /**\n   * React to element selection change\n   * @param e Event object.\n   */\n  private handleElementSelectionChanged: (\n    e: ItemSelectionChangedEvent\n  ) => void = e => {\n    if (this.elements.filter(item => item.meta.isSelected == true).length > 0) {\n      e.selected = true;\n    } else {\n      e.selected = false;\n    }\n    this.selectionChangedEventManager.emit(e);\n  };\n\n  // TODO: Document\n  private handleContainerClick: (e: MouseEvent) => void = () => {\n    this.unSelectItems();\n  };\n\n  /**\n   * Refresh link for given line.\n   *\n   * @param line Line.\n   */\n  protected refreshLink(l: Line) {\n    let line: number = l.props.id;\n    let itemAtStart = 0;\n    let itemAtEnd = 0;\n\n    try {\n      for (let i in this.elementsById) {\n        if (\n          this.coordinatesInItem(\n            l.props.startPosition.x,\n            l.props.startPosition.y,\n            this.elementsById[i].props\n          )\n        ) {\n          // Start position at element i.\n          itemAtStart = parseInt(i);\n        }\n\n        if (\n          this.coordinatesInItem(\n            l.props.endPosition.x,\n            l.props.endPosition.y,\n            this.elementsById[i].props\n          )\n        ) {\n          // Start position at element i.\n          itemAtEnd = parseInt(i);\n        }\n      }\n\n      if (this.lineLinks == null) {\n        this.lineLinks = {};\n      }\n\n      if (this.lines == null) {\n        this.lines = {};\n      }\n\n      if (itemAtStart == line) {\n        itemAtStart = 0;\n      }\n\n      if (itemAtEnd == line) {\n        itemAtEnd = 0;\n      }\n\n      // Initialize line if not registered.\n      if (this.lines[line] == null) {\n        this.lines[line] = {\n          start: itemAtStart,\n          end: itemAtEnd\n        };\n      }\n\n      // Register 'start' side of the line.\n      if (itemAtStart > 0) {\n        // Initialize.\n        if (this.lineLinks[itemAtStart] == null) {\n          this.lineLinks[itemAtStart] = {};\n        }\n\n        // Assign.\n        this.lineLinks[itemAtStart][line] = {\n          start: itemAtStart,\n          end: itemAtEnd\n        };\n\n        // Register line if not exists prviously.\n      } else {\n        // Clean previous line relationship.\n        if (this.lines[line][\"start\"] > 0) {\n          this.lineLinks[this.lines[line][\"start\"]][line][\"start\"] = 0;\n          this.lines[line][\"start\"] = 0;\n        }\n      }\n\n      if (itemAtEnd > 0) {\n        if (this.lineLinks[itemAtEnd] == null) {\n          this.lineLinks[itemAtEnd] = {};\n        }\n\n        this.lineLinks[itemAtEnd][line] = {\n          start: itemAtStart,\n          end: itemAtEnd\n        };\n      } else {\n        // Clean previous line relationship.\n        if (this.lines[line][\"end\"] > 0) {\n          this.lineLinks[this.lines[line][\"end\"]][line][\"end\"] = 0;\n          this.lines[line][\"end\"] = 0;\n        }\n      }\n\n      this.lines[line] = {\n        start: itemAtStart,\n        end: itemAtEnd\n      };\n\n      // Cleanup.\n      for (let i in this.lineLinks) {\n        if (this.lineLinks[i][line]) {\n          if (\n            this.lineLinks[i][line].start == 0 &&\n            this.lineLinks[i][line].end == 0\n          ) {\n            // Object not connected to a line.\n            delete this.lineLinks[i][line];\n\n            if (Object.keys(this.lineLinks[i]).length === 0) {\n              delete this.lineLinks[i];\n            }\n          }\n\n          if (\n            (this.lineLinks[i][line].start != itemAtStart &&\n              this.lineLinks[i][line].end == itemAtEnd) ||\n            (this.lineLinks[i][line].start == itemAtStart &&\n              this.lineLinks[i][line].end != itemAtEnd)\n          ) {\n            // Object not connected to a line.\n            delete this.lineLinks[i][line];\n\n            if (Object.keys(this.lineLinks[i]).length === 0) {\n              delete this.lineLinks[i];\n            }\n          }\n        }\n      }\n    } catch (error) {\n      console.error(error);\n    }\n  }\n\n  /**\n   * Updates lines connected to this item.\n   *\n   * @param item Item moved.\n   * @param newPosition New location for item.\n   * @param oldPosition Old location for item.\n   * @param save Save to ajax or not.\n   */\n  protected updateLinesConnected(item: ItemProps, to: Position, save: boolean) {\n    if (this.lineLinks[item.id] == null) {\n      return;\n    }\n\n    Object.keys(this.lineLinks[item.id]).forEach(i => {\n      let lineId = parseInt(i);\n      const found = this.elementIds.indexOf(lineId);\n      if (found === -1) {\n        return;\n      }\n      let line = this.elementsById[lineId] as Line;\n\n      if (line.props) {\n        let startX = line.props.startPosition.x;\n        let startY = line.props.startPosition.y;\n        let endX = line.props.endPosition.x;\n        let endY = line.props.endPosition.y;\n\n        if (item.id == this.lineLinks[item.id][lineId][\"start\"]) {\n          startX = to.x + item.width / 2;\n          startY = to.y + item.height / 2;\n        }\n\n        if (item.id == this.lineLinks[item.id][lineId][\"end\"]) {\n          endX = to.x + item.width / 2;\n          endY = to.y + item.height / 2;\n        }\n\n        // Update line movement.\n        this.updateElement({\n          ...line.props,\n          startX: startX,\n          startY: startY,\n          endX: endX,\n          endY: endY\n        });\n\n        if (save) {\n          let debouncedLinePositionSave = debounce(\n            500,\n            (options: AnyObject) => {\n              this.lineMovedEventManager.emit({\n                item: options.line,\n                startPosition: {\n                  x: options.startX,\n                  y: options.startY\n                },\n                endPosition: {\n                  x: options.endX,\n                  y: options.endY\n                }\n              });\n            }\n          );\n\n          // Save line positon.\n          debouncedLinePositionSave({\n            line: line,\n            startX: startX,\n            startY: startY,\n            endX: endX,\n            endY: endY\n          });\n        }\n      }\n    });\n\n    // Update parents...\n    this.buildRelations(item.id, to.x + item.width / 2, to.y + item.height / 2);\n  }\n\n  public constructor(\n    container: HTMLElement,\n    props: AnyObject,\n    items: AnyObject[]\n  ) {\n    this.containerRef = container;\n    this._props = visualConsolePropsDecoder(props);\n\n    // Force the first render.\n    this.render();\n\n    // Sort by id ASC\n    items = items.sort(function(a, b) {\n      if (a.id == null || b.id == null) return 0;\n      else if (a.id > b.id) return 1;\n      else return -1;\n    });\n\n    // Initialize the items.\n    items.forEach(item => this.addElement(item, this));\n\n    // Create lines.\n    this.buildRelations();\n\n    // Re-attach all connected lines if any.\n    this.elements.forEach(item => {\n      if (item instanceof Line) {\n        this.refreshLink(item);\n      }\n    });\n\n    this.containerRef.addEventListener(\"click\", this.handleContainerClick);\n  }\n\n  /**\n   * Public accessor of the `elements` property.\n   * @return Properties.\n   */\n  public get elements(): Item<ItemProps>[] {\n    // Ensure the type cause Typescript doesn't know the filter removes null items.\n    return this.elementIds\n      .map(id => this.elementsById[id])\n      .filter(_ => _ != null) as Item<ItemProps>[];\n  }\n\n  /**\n   * To create a new element add it to the DOM.\n   * @param item. Raw representation of the item's data.\n   */\n  public addElement(item: AnyObject, context: this = this) {\n    try {\n      if (item.ratio == null) {\n        item.ratio = 1;\n      }\n\n      item.x *= item.ratio;\n      item.y *= item.ratio;\n      if (item.type == ItemType.LINE_ITEM) {\n        item.startX *= item.ratio;\n        item.startY *= item.ratio;\n        item.endX *= item.ratio;\n        item.endY *= item.ratio;\n      }\n      const itemInstance = itemInstanceFrom(item);\n\n      // Add the item to the list.\n      context.elementsById[itemInstance.props.id] = itemInstance;\n      context.elementIds.push(itemInstance.props.id);\n      // Item event handlers.\n      itemInstance.onRemove(context.handleElementRemove);\n      itemInstance.onSelectionChanged(context.handleElementSelectionChanged);\n      itemInstance.onClick(context.handleElementClick);\n      itemInstance.onDblClick(context.handleElementDblClick);\n\n      // TODO:Continue\n      if (itemInstance instanceof Line) {\n        itemInstance.onLineMovementFinished(\n          context.handleLineElementMovementFinished\n        );\n        this.refreshLink(itemInstance);\n      } else {\n        itemInstance.onMoved(context.handleElementMovement);\n        itemInstance.onMovementFinished(context.handleElementMovementFinished);\n        itemInstance.onResized(context.handleElementResizement);\n        itemInstance.onResizeFinished(context.handleElementResizementFinished);\n      }\n\n      if (item.ratio !== 1 && item.type != ItemType.LINE_ITEM) {\n        itemInstance.elementRef.style.transform = `scale(${\n          item.ratio ? item.ratio : 1\n        })`;\n        itemInstance.elementRef.style.transformOrigin = \"left top\";\n        itemInstance.elementRef.style.minWidth = \"max-content\";\n        itemInstance.elementRef.style.minHeight = \"max-content\";\n      }\n\n      // Add the item to the DOM.\n      context.containerRef.append(itemInstance.elementRef);\n      return itemInstance;\n    } catch (error) {\n      console.error(\"Error creating a new element:\", (error as Error).message);\n    }\n    return;\n  }\n\n  /**\n   * Public setter of the `elements` property.\n   * @param items.\n   */\n  public updateElements(items: AnyObject[]): void {\n    // Ensure the type cause Typescript doesn't know the filter removes null items.\n    const itemIds = items\n      .map(item => item.id || null)\n      .filter(id => id != null) as number[];\n    // Get the elements we should delete.\n    const deletedIds = this.elementIds.filter(id => itemIds.indexOf(id) < 0);\n    // Delete the elements.\n    deletedIds.forEach(id => {\n      if (this.elementsById[id] != null) {\n        this.elementsById[id].remove();\n        delete this.elementsById[id];\n      }\n    });\n    // Replace the element ids.\n    this.elementIds = itemIds;\n\n    // Initialize the items.\n    items.forEach(item => {\n      if (item.id) {\n        if (this.elementsById[item.id] == null) {\n          // New item.\n          this.addElement(item);\n        } else {\n          // Update item.\n          try {\n            if (item.ratio != null) {\n              item.x *= item.ratio;\n              item.y *= item.ratio;\n              if (item.type == ItemType.LINE_ITEM) {\n                item.startX *= item.ratio;\n                item.startY *= item.ratio;\n                item.endX *= item.ratio;\n                item.endY *= item.ratio;\n              }\n            }\n            this.elementsById[item.id].props = decodeProps(item);\n          } catch (error) {\n            console.error(\n              \"Error updating an element:\",\n              (error as Error).message\n            );\n          }\n        }\n      }\n    });\n\n    // Re-build relations.\n    this.buildRelations();\n  }\n\n  /**\n   * Public setter of the `element` property.\n   * @param item.\n   */\n  public updateElement(item: AnyObject): void {\n    // Update item.\n    try {\n      this.elementsById[item.id].props = {\n        ...decodeProps(item)\n      };\n    } catch (error) {\n      console.error(\"Error updating element:\", (error as Error).message);\n    }\n\n    // Re-build relations.\n    this.buildRelations();\n  }\n\n  /**\n   * Public accessor of the `props` property.\n   * @return Properties.\n   */\n  public get props(): VisualConsoleProps {\n    return { ...this._props }; // Return a copy.\n  }\n\n  /**\n   * Public setter of the `props` property.\n   * If the new props are different enough than the\n   * stored props, a render would be fired.\n   * @param newProps\n   */\n  public set props(newProps: VisualConsoleProps) {\n    const prevProps = this.props;\n    // Update the internal props.\n    this._props = newProps;\n\n    // From this point, things which rely on this.props can access to the changes.\n\n    // Re-render.\n    this.render(prevProps);\n  }\n\n  /**\n   * Recreate or update the HTMLElement which represents the Visual Console into the DOM.\n   * @param prevProps If exists it will be used to only DOM updates instead of a full replace.\n   */\n  public render(prevProps: VisualConsoleProps | null = null): void {\n    if (prevProps) {\n      if (prevProps.backgroundURL !== this.props.backgroundURL) {\n        this.containerRef.style.backgroundImage =\n          this.props.backgroundURL !== null\n            ? `url(${this.props.backgroundURL})`\n            : \"\";\n      }\n      if (this.props.backgroundColor != null)\n        if (prevProps.backgroundColor !== this.props.backgroundColor) {\n          this.containerRef.style.backgroundColor = this.props.backgroundColor;\n        }\n      if (this.sizeChanged(prevProps, this.props)) {\n        this.resizeElement(this.props.width, this.props.height);\n      }\n    } else {\n      if (this.props.backgroundURL)\n        this.containerRef.style.backgroundImage =\n          this.props.backgroundURL !== null\n            ? `url(${this.props.backgroundURL})`\n            : \"\";\n\n      if (this.props.backgroundColor)\n        this.containerRef.style.backgroundColor = this.props.backgroundColor;\n      this.resizeElement(this.props.width, this.props.height);\n    }\n  }\n\n  /**\n   * Compare the previous and the new size and return\n   * a boolean value in case the size changed.\n   * @param prevSize\n   * @param newSize\n   * @return Whether the size changed or not.\n   */\n  public sizeChanged(prevSize: Size, newSize: Size): boolean {\n    return (\n      prevSize.width !== newSize.width || prevSize.height !== newSize.height\n    );\n  }\n\n  /**\n   * Resize the DOM container.\n   * @param width\n   * @param height\n   */\n  public resizeElement(width: number, height: number): void {\n    this.containerRef.style.width = `${width}px`;\n    this.containerRef.style.height = `${height}px`;\n  }\n\n  /**\n   * Update the size into the properties and resize the DOM container.\n   * @param width\n   * @param height\n   */\n  public resize(width: number, height: number): void {\n    this.props = {\n      ...this.props, // Object spread: http://es6-features.org/#SpreadOperator\n      width,\n      height\n    };\n  }\n\n  /**\n   * To remove the event listeners and the elements from the DOM.\n   */\n  public remove(): void {\n    this.disposables.forEach(d => d.dispose()); // Arrow function.\n    this.elements.forEach(e => e.remove()); // Arrow function.\n    this.elementsById = {};\n    this.elementIds = [];\n    // Clear relations.\n    this.clearRelations();\n    // Remove the click event listener.\n    this.containerRef.removeEventListener(\"click\", this.handleContainerClick);\n    // Clean container.\n    this.containerRef.innerHTML = \"\";\n  }\n\n  /**\n   * Create line elements which connect the elements with their parents.\n   *\n   * When itemId is being moved, overwrite position of the 'parent' or 'child'\n   * endpoints of the line, using X and Y values.\n   */\n  public buildRelations(itemId?: number, x?: number, y?: number): void {\n    // Clear relations.\n    this.clearRelations();\n    // Add relations.\n    this.elements.forEach(item => {\n      if (item.props.parentId !== null) {\n        const parent = this.elementsById[item.props.parentId];\n        const child = this.elementsById[item.props.id];\n\n        if (parent && child) {\n          if (itemId != undefined) {\n            if (item.props.parentId == itemId) {\n              // Update parent line position.\n              this.addRelationLine(parent, child, x, y);\n            } else if (item.props.id == itemId) {\n              // Update child line position.\n              this.addRelationLine(parent, child, undefined, undefined, x, y);\n            } else {\n              this.addRelationLine(parent, child);\n            }\n          } else {\n            // No movements default behaviour.\n            this.addRelationLine(parent, child);\n          }\n        }\n      }\n    });\n  }\n\n  /**\n   * @param itemId Optional identifier of a parent or child item.\n   * Remove the line elements which connect the elements with their parents.\n   */\n  private clearRelations(itemId?: number): void {\n    if (itemId != null) {\n      for (let key in this.relations) {\n        const ids = key.split(\"|\");\n        const parentId = Number.parseInt(ids[0]);\n        const childId = Number.parseInt(ids[1]);\n\n        if (itemId === parentId || itemId === childId) {\n          this.relations[key].remove();\n          delete this.relations[key];\n        }\n      }\n    } else {\n      for (let key in this.relations) {\n        this.relations[key].remove();\n        delete this.relations[key];\n      }\n    }\n  }\n\n  /**\n   * Retrieve the line element which represent the relation between items.\n   * @param parentId Identifier of the parent item.\n   * @param childId Itentifier of the child item.\n   * @return The line element or nothing.\n   */\n  private getRelationLine(parentId: number, childId: number): Line | null {\n    const identifier = `${parentId}|${childId}`;\n    return this.relations[identifier] || null;\n  }\n\n  // TODO: Document.\n  private getItemRelations(\n    itemId: number\n  ): {\n    parentId: number;\n    childId: number;\n    line: Line;\n  }[] {\n    const itemRelations = [];\n\n    for (let key in this.relations) {\n      const ids = key.split(\"|\");\n      const parentId = Number.parseInt(ids[0]);\n      const childId = Number.parseInt(ids[1]);\n\n      if (itemId === parentId || itemId === childId) {\n        itemRelations.push({\n          parentId,\n          childId,\n          line: this.relations[key]\n        });\n      }\n    }\n\n    return itemRelations;\n  }\n\n  /**\n   * Retrieve the visual center of the item. It's ussually the center of the\n   * content, like the label doesn't exist.\n   * @param position Initial position.\n   * @param element Element we want to use.\n   */\n  private getVisualCenter(\n    position: Position,\n    element: Item<ItemProps>\n  ): Position {\n    let ratio = 1;\n    if (element.props.ratio != null) {\n      ratio = element.props.ratio;\n    }\n\n    let x = position.x + (element.elementRef.clientWidth / 2) * ratio;\n    let y = position.y + (element.elementRef.clientHeight / 2) * ratio;\n\n    if (\n      typeof element.props.label !== \"undefined\" ||\n      element.props.label !== \"\" ||\n      element.props.label !== null\n    ) {\n      switch (element.props.labelPosition) {\n        case \"up\":\n          y =\n            position.y +\n            ((element.elementRef.clientHeight +\n              element.labelElementRef.clientHeight) /\n              2) *\n              ratio;\n          break;\n        case \"down\":\n          y =\n            position.y +\n            ((element.elementRef.clientHeight -\n              element.labelElementRef.clientHeight) /\n              2) *\n              ratio;\n          break;\n        case \"right\":\n          x =\n            position.x +\n            ((element.elementRef.clientWidth -\n              element.labelElementRef.clientWidth) /\n              2) *\n              ratio;\n          break;\n        case \"left\":\n          x =\n            position.x +\n            ((element.elementRef.clientWidth +\n              element.labelElementRef.clientWidth) /\n              2) *\n              ratio;\n          break;\n      }\n    }\n\n    return { x, y };\n  }\n\n  /**\n   * Add a new line item to represent a relation between the items.\n   * @param parent Parent item.\n   * @param child Child item.\n   * @return Whether the line was added or not.\n   */\n  private addRelationLine(\n    parent: Item<ItemProps>,\n    child: Item<ItemProps>,\n    parentX?: number,\n    parentY?: number,\n    childX?: number,\n    childY?: number\n  ): Line {\n    const identifier = `${parent.props.id}|${child.props.id}`;\n    if (this.relations[identifier] != null) {\n      this.relations[identifier].remove();\n    }\n\n    // Get the items center.\n    let { x: startX, y: startY } = this.getVisualCenter(parent.props, parent);\n    let { x: endX, y: endY } = this.getVisualCenter(child.props, child);\n\n    // Overwrite positions if needed (while moving it!).\n    if (parentX != null) {\n      startX = parentX;\n    }\n\n    if (parentY != null) {\n      startY = parentY;\n    }\n\n    if (childX != null) {\n      endX = childX;\n    }\n\n    if (childY != null) {\n      endY = childY;\n    }\n\n    // Line inherits child element status.\n    const line = new Line(\n      linePropsDecoder({\n        id: 0,\n        type: ItemType.LINE_ITEM,\n        startX,\n        startY,\n        endX,\n        endY,\n        width: 0,\n        height: 0,\n        lineWidth: this.props.relationLineWidth,\n        color: notEmptyStringOr(child.props.colorStatus, \"#CCC\"),\n        ratio: parent.props.ratio\n      }),\n      itemMetaDecoder({\n        receivedAt: new Date()\n      })\n    );\n\n    // Save a reference to the line item.\n    this.relations[identifier] = line;\n\n    // Add the line to the DOM.\n    line.elementRef.style.zIndex = \"0\";\n    this.containerRef.append(line.elementRef);\n\n    return line;\n  }\n\n  /**\n   * Add an event handler to the click of the linked visual console elements.\n   * @param listener Function which is going to be executed when a linked console is clicked.\n   */\n  public onItemClick(listener: Listener<ItemClickEvent>): Disposable {\n    /*\n     * The '.on' function returns a function which will clean the event\n     * listener when executed. We store all the 'dispose' functions to\n     * call them when the item should be cleared.\n     */\n    const disposable = this.clickEventManager.on(listener);\n    this.disposables.push(disposable);\n\n    return disposable;\n  }\n\n  /**\n   * Add an event handler to the double click of the linked visual console elements.\n   * @param listener Function which is going to be executed when a linked console is double clicked.\n   */\n  public onItemDblClick(listener: Listener<ItemClickEvent>): Disposable {\n    /*\n     * The '.on' function returns a function which will clean the event\n     * listener when executed. We store all the 'dispose' functions to\n     * call them when the item should be cleared.\n     */\n    const disposable = this.dblClickEventManager.on(listener);\n    this.disposables.push(disposable);\n\n    return disposable;\n  }\n\n  /**\n   * Add an event handler to the movement of the visual console elements.\n   * @param listener Function which is going to be executed when a linked console is moved.\n   */\n  public onItemMoved(listener: Listener<ItemMovedEvent>): Disposable {\n    /*\n     * The '.on' function returns a function which will clean the event\n     * listener when executed. We store all the 'dispose' functions to\n     * call them when the item should be cleared.\n     */\n    const disposable = this.movedEventManager.on(listener);\n    this.disposables.push(disposable);\n\n    return disposable;\n  }\n\n  /**\n   * Add an event handler to the movement of the visual console line elements.\n   * @param listener Function which is going to be executed when a linked console is moved.\n   */\n  public onLineMoved(listener: Listener<LineMovedEvent>): Disposable {\n    /*\n     * The '.on' function returns a function which will clean the event\n     * listener when executed. We store all the 'dispose' functions to\n     * call them when the item should be cleared.\n     */\n    const disposable = this.lineMovedEventManager.on(listener);\n    this.disposables.push(disposable);\n\n    return disposable;\n  }\n\n  /**\n   * Add an event handler to the resizement of the visual console elements.\n   * @param listener Function which is going to be executed when a linked console is moved.\n   */\n  public onItemResized(listener: Listener<ItemResizedEvent>): Disposable {\n    /*\n     * The '.on' function returns a function which will clean the event\n     * listener when executed. We store all the 'dispose' functions to\n     * call them when the item should be cleared.\n     */\n    const disposable = this.resizedEventManager.on(listener);\n    this.disposables.push(disposable);\n\n    return disposable;\n  }\n\n  /**\n   * Add an event handler to the elements selection change of the visual console .\n   * @param listener Function which is going to be executed when a linked console is moved.\n   */\n  public onItemSelectionChanged(\n    listener: Listener<ItemSelectionChangedEvent>\n  ): Disposable {\n    /*\n     * The '.on' function returns a function which will clean the event\n     * listener when executed. We store all the 'dispose' functions to\n     * call them when the item should be cleared.\n     */\n    const disposable = this.selectionChangedEventManager.on(listener);\n    this.disposables.push(disposable);\n\n    return disposable;\n  }\n\n  /**\n   * Enable the edition mode.\n   */\n  public enableEditMode(): void {\n    this.elements.forEach(item => {\n      item.meta = { ...item.meta, editMode: true };\n    });\n    this.containerRef.classList.add(\"is-editing\");\n  }\n\n  /**\n   * Disable the edition mode.\n   */\n  public disableEditMode(): void {\n    this.elements.forEach(item => {\n      item.meta = { ...item.meta, editMode: false };\n    });\n    this.containerRef.classList.remove(\"is-editing\");\n  }\n\n  /**\n   * Enable the maintenance mode.\n   */\n  public enableMaintenanceMode(): void {\n    this.elements.forEach(item => {\n      item.meta = { ...item.meta, maintenanceMode: true };\n    });\n    this.containerRef.classList.add(\"is-maintenance\");\n    this.containerRef.classList.remove(\"is-editing\");\n  }\n\n  /**\n   * Disable the maintenance mode.\n   */\n  public disableMaintenanceMode(): void {\n    this.elements.forEach(item => {\n      item.meta = { ...item.meta, maintenanceMode: false };\n    });\n    this.containerRef.classList.remove(\"is-maintenance\");\n    this.containerRef.classList.add(\"is-editing\");\n  }\n\n  /**\n   * Update the gridSize.\n   */\n  public updateGridSize(gridSize: string): void {\n    this._props.gridSize = parseInt(gridSize);\n    this.props.gridSize = parseInt(gridSize);\n  }\n\n  /**\n   * Update the gridSize.\n   */\n  public updateGridSelected(gridSelected: boolean): void {\n    this._props.gridSelected = gridSelected;\n    this.props.gridSelected = gridSelected;\n  }\n\n  /**\n   * Select an item.\n   * @param itemId Item Id.\n   * @param unique To remove the selection of other items or not.\n   */\n  public selectItem(itemId: number, unique: boolean = false): void {\n    if (unique) {\n      this.elementIds.forEach(currentItemId => {\n        const meta = this.elementsById[currentItemId].meta;\n\n        if (currentItemId !== itemId && meta.isSelected) {\n          this.elementsById[currentItemId].unSelectItem();\n        } else if (currentItemId === itemId && !meta.isSelected) {\n          this.elementsById[currentItemId].selectItem();\n        }\n      });\n    } else if (this.elementsById[itemId]) {\n      this.elementsById[itemId].selectItem();\n    }\n  }\n\n  /**\n   * Unselect an item.\n   * @param itemId Item Id.\n   */\n  public unSelectItem(itemId: number): void {\n    if (this.elementsById[itemId]) {\n      const meta = this.elementsById[itemId].meta;\n\n      if (meta.isSelected) {\n        this.elementsById[itemId].unSelectItem();\n      }\n    }\n  }\n\n  /**\n   * Unselect all items.\n   */\n  public unSelectItems(): void {\n    this.elementIds.forEach(itemId => {\n      if (this.elementsById[itemId]) {\n        this.elementsById[itemId].unSelectItem();\n      }\n    });\n  }\n\n  // TODO: Document.\n  public static items = {\n    [ItemType.STATIC_GRAPH]: StaticGraph,\n    [ItemType.MODULE_GRAPH]: ModuleGraph,\n    [ItemType.SIMPLE_VALUE]: SimpleValue,\n    [ItemType.SIMPLE_VALUE_MAX]: SimpleValue,\n    [ItemType.SIMPLE_VALUE_MIN]: SimpleValue,\n    [ItemType.SIMPLE_VALUE_AVG]: SimpleValue,\n    [ItemType.PERCENTILE_BAR]: Percentile,\n    [ItemType.PERCENTILE_BUBBLE]: Percentile,\n    [ItemType.CIRCULAR_PROGRESS_BAR]: Percentile,\n    [ItemType.CIRCULAR_INTERIOR_PROGRESS_BAR]: Percentile,\n    [ItemType.LABEL]: Label,\n    [ItemType.ICON]: Icon,\n    [ItemType.SERVICE]: Service,\n    [ItemType.GROUP_ITEM]: Group,\n    [ItemType.BOX_ITEM]: Box,\n    [ItemType.LINE_ITEM]: Line,\n    [ItemType.AUTO_SLA_GRAPH]: EventsHistory,\n    [ItemType.DONUT_GRAPH]: DonutGraph,\n    [ItemType.BARS_GRAPH]: BarsGraph,\n    [ItemType.CLOCK]: Clock,\n    [ItemType.COLOR_CLOUD]: ColorCloud,\n    [ItemType.NETWORK_LINK]: NetworkLink,\n    [ItemType.ODOMETER]: Odometer,\n    [ItemType.BASIC_CHART]: BasicChart\n  };\n\n  /**\n   * Relying type item and srcimg and agent and module\n   * name convert name item representative.\n   *\n   * @param item Instance item from extract name.\n   *\n   * @return Name item.\n   */\n  public static itemDescriptiveName(item: Item<ItemProps>): string {\n    let text: string;\n    switch (item.props.type) {\n      case ItemType.STATIC_GRAPH:\n        text = `${t(\"Static graph\")} - ${(item as StaticGraph).props.imageSrc}`;\n        break;\n      case ItemType.MODULE_GRAPH:\n        text = t(\"Module graph\");\n        break;\n      case ItemType.CLOCK:\n        text = t(\"Clock\");\n        break;\n      case ItemType.BARS_GRAPH:\n        text = t(\"Bars graph\");\n        break;\n      case ItemType.AUTO_SLA_GRAPH:\n        text = t(\"Event history graph\");\n        break;\n      case ItemType.PERCENTILE_BAR:\n        text = t(\"Percentile bar\");\n        break;\n      case ItemType.CIRCULAR_PROGRESS_BAR:\n        text = t(\"Circular progress bar\");\n        break;\n      case ItemType.CIRCULAR_INTERIOR_PROGRESS_BAR:\n        text = t(\"Circular progress bar (interior)\");\n        break;\n      case ItemType.SIMPLE_VALUE:\n        text = t(\"Simple Value\");\n        break;\n      case ItemType.LABEL:\n        text = t(\"Label\");\n        break;\n      case ItemType.GROUP_ITEM:\n        text = t(\"Group\");\n        break;\n      case ItemType.COLOR_CLOUD:\n        text = t(\"Color cloud\");\n        break;\n      case ItemType.ICON:\n        text = `${t(\"Icon\")} - ${(item as Icon).props.imageSrc}`;\n        break;\n      case ItemType.ODOMETER:\n        text = t(\"Odometer\");\n        break;\n      case ItemType.BASIC_CHART:\n        text = t(\"BasicChart\");\n        break;\n      default:\n        text = t(\"Item\");\n        break;\n    }\n\n    const linkedAgentAndModuleProps = item.props as Partial<WithModuleProps>;\n    if (\n      linkedAgentAndModuleProps.agentAlias != null &&\n      linkedAgentAndModuleProps.moduleName != null\n    ) {\n      text += ` (${ellipsize(\n        linkedAgentAndModuleProps.agentAlias,\n        18\n      )} - ${ellipsize(linkedAgentAndModuleProps.moduleName, 25)})`;\n    } else if (linkedAgentAndModuleProps.agentAlias != null) {\n      text += ` (${ellipsize(linkedAgentAndModuleProps.agentAlias, 25)})`;\n    }\n\n    return text;\n  }\n}\n","import TypedEvent, { Disposable, Listener } from \"./TypedEvent\";\n\ninterface Cancellable {\n  cancel(): void;\n}\n\ntype AsyncTaskStatus = \"waiting\" | \"started\" | \"cancelled\" | \"finished\";\ntype AsyncTaskInitiator = (done: () => void) => Cancellable;\n\n/**\n * Defines an async task which can be started and cancelled.\n * It's possible to observe the status changes of the task.\n */\nclass AsyncTask {\n  private readonly taskInitiator: AsyncTaskInitiator;\n  private cancellable: Cancellable = { cancel: () => {} };\n  private _status: AsyncTaskStatus = \"waiting\";\n\n  // Event manager for status change events.\n  private readonly statusChangeEventManager = new TypedEvent<AsyncTaskStatus>();\n  // List of references to clean the event listeners.\n  private readonly disposables: Disposable[] = [];\n\n  public constructor(taskInitiator: AsyncTaskInitiator) {\n    this.taskInitiator = taskInitiator;\n  }\n\n  /**\n   * Public setter of the `status` property.\n   * @param status.\n   */\n  public set status(status: AsyncTaskStatus) {\n    this._status = status;\n    this.statusChangeEventManager.emit(status);\n  }\n\n  /**\n   * Public accessor of the `status` property.\n   * @return status.\n   */\n  public get status() {\n    return this._status;\n  }\n\n  /**\n   * Start the async task.\n   */\n  public init(): void {\n    this.cancellable = this.taskInitiator(() => {\n      this.status = \"finished\";\n    });\n    this.status = \"started\";\n  }\n\n  /**\n   * Cancel the async task.\n   */\n  public cancel(): void {\n    this.cancellable.cancel();\n    this.status = \"cancelled\";\n  }\n\n  /**\n   * Add an event handler to the status change.\n   * @param listener Function which is going to be executed when the status changes.\n   */\n  public onStatusChange(listener: Listener<AsyncTaskStatus>): Disposable {\n    /*\n     * The '.on' function returns a function which will clean the event\n     * listener when executed. We store all the 'dispose' functions to\n     * call them when the item should be cleared.\n     */\n    const disposable = this.statusChangeEventManager.on(listener);\n    this.disposables.push(disposable);\n\n    return disposable;\n  }\n}\n\n/**\n * Wrap an async task into another which will execute that task indefinitely\n * every time the tash finnish and the chosen period ends.\n * Will last until cancellation.\n *\n * @param task Async task to execute.\n * @param period Time in milliseconds to wait until the next async esecution.\n *\n * @return A new async task.\n */\nfunction asyncPeriodic(task: AsyncTask, period: number): AsyncTask {\n  return new AsyncTask(() => {\n    let ref: number | null = null;\n\n    task.onStatusChange(status => {\n      if (status === \"finished\") {\n        ref = window.setTimeout(() => {\n          task.init();\n        }, period);\n      }\n    });\n\n    task.init();\n\n    return {\n      cancel: () => {\n        if (ref) clearTimeout(ref);\n        task.cancel();\n      }\n    };\n  });\n}\n\n/**\n * Manages a list of async tasks.\n */\nexport default class AsyncTaskManager {\n  private tasks: { [identifier: string]: AsyncTask } = {};\n\n  /**\n   * Adds an async task to the manager.\n   *\n   * @param identifier Unique identifier.\n   * @param taskInitiator Function to initialize the async task.\n   * Should return a structure to cancel the task.\n   * @param period Optional period to repeat the task indefinitely.\n   */\n  public add(\n    identifier: string,\n    taskInitiator: AsyncTaskInitiator,\n    period: number = 0\n  ): AsyncTask {\n    if (this.tasks[identifier] && this.tasks[identifier].status === \"started\") {\n      this.tasks[identifier].cancel();\n    }\n\n    const asyncTask =\n      period > 0\n        ? asyncPeriodic(new AsyncTask(taskInitiator), period)\n        : new AsyncTask(taskInitiator);\n\n    this.tasks[identifier] = asyncTask;\n\n    return this.tasks[identifier];\n  }\n\n  /**\n   * Starts an async task.\n   *\n   * @param identifier Unique identifier.\n   */\n  public init(identifier: string) {\n    if (\n      this.tasks[identifier] &&\n      (this.tasks[identifier].status === \"waiting\" ||\n        this.tasks[identifier].status === \"cancelled\" ||\n        this.tasks[identifier].status === \"finished\")\n    ) {\n      this.tasks[identifier].init();\n    }\n  }\n\n  /**\n   * Cancel a running async task.\n   *\n   * @param identifier Unique identifier.\n   */\n  public cancel(identifier: string) {\n    if (this.tasks[identifier] && this.tasks[identifier].status === \"started\") {\n      this.tasks[identifier].cancel();\n    }\n  }\n}\n","/*\n * Useful resources.\n * http://es6-features.org/\n * http://exploringjs.com/es6\n * https://www.typescriptlang.org/\n */\n\nimport \"./main.css\"; // CSS import.\nimport VisualConsole from \"./VisualConsole\";\nimport * as Form from \"./Form\";\nimport AsyncTaskManager from \"./lib/AsyncTaskManager\";\n\n// Export the VisualConsole class to the global object.\n// eslint-disable-next-line\n(window as any).VisualConsole = VisualConsole;\n\n// Export the VisualConsole's Form classes to the global object.\n// eslint-disable-next-line\n(window as any).VisualConsole.Form = Form;\n\n// Export the AsyncTaskManager class to the global object.\n// eslint-disable-next-line\n(window as any).AsyncTaskManager = AsyncTaskManager;\n"],"names":["name","initialData","_name","currentData","dataRequestedEventManager","this","length","RangeError","_element","element","document","createElement","className","content","createContent","Array","forEach","appendChild","reset","updateData","data","requestData","identifier","params","done","emit","onDataRequested","listener","on","title","inputGroups","enabledInputGroups","inputGroupsByName","enabledInputGroupNames","submitEventManager","itemDataRequestedEventManager","handleItemDataRequested","reduce","prevVal","inputGroup","filter","getInputGroup","inputGroupName","addInputGroup","index","slice","removeInputGroup","getFormElement","type","form","id","addEventListener","e","preventDefault","nativeEvent","formContent","onSubmit","onInputGroupDataRequested","parseLabelPosition","labelPosition","itemBasePropsDecoder","isNaN","parseInt","TypeError","label","isLinkEnabled","link","isOnTop","parentId","aclGroupId","cacheExpiration","colorStatus","cellId","alertOutline","ratio","props","metadata","deferInit","elementRef","labelElementRef","childElementRef","clickEventManager","dblClickEventManager","movedEventManager","movementFinishedEventManager","resizedEventManager","resizeFinishedEventManager","removeEventManager","selectionChangedEventManager","disposables","debouncedMovementSave","x","y","_metadata","isBeingMoved","prevPosition","newPosition","positionChanged","move","item","removeMovement","debouncedResizementSave","width","height","isBeingResized","prevSize","newSize","sizeChanged","resize","removeResizement","itemProps","init","initMovementListener","meta","isSelected","moveElement","stopMovementListener","initResizementListener","getBoundingClientRect","labelWidth","labelHeight","resizeElement","stopResizementListener","createContainerDomElement","createLabelDomElement","createDomElement","changeLabelPosition","box","href","classList","add","style","left","top","unSelectItem","selectItem","editMode","stopPropagation","divParent","divSpinner","path","composedPath","containerId","undefined","includes","containerVC","getElementById","maintenanceMode","isFetching","isUpdating","getLabelWithMacrosReplaced","table","row","emptyRow1","emptyRow2","cell","innerHTML","textAlign","macro","value","Date","agentAlias","agentDescription","agentAddress","moduleName","moduleDescription","updateDomElement","newProps","setProps","prevProps","shouldBeUpdated","render","newMetadata","setMeta","prevMetadata","selected","prevMeta","transform","transformOrigin","minWidth","minHeight","oldLabelHtml","newLabelHtml","remove","container","attrs","attributes","i","nodeName","cloneIsNeeded","getAttributeNode","cloneAttr","cloneNode","setAttributeNode","parentNode","replaceChild","setAttribute","div","querySelector","parentElement","removeChild","removeAttribute","disposable","dispose","ignored","position","flexDirection","tables","getElementsByTagName","onClick","push","onDblClick","onMoved","onMovementFinished","onResized","onResizeFinished","onRemove","onSelectionChanged","getFormContainer","VisualConsoleItem","t","titleItem","FormContainer","parseBarsGraphProps","backgroundColor","parseTypeGraph","typeGraph","barsGraphPropsDecoder","html","encodedHtml","gridColor","agentDisabled","moduleDisabled","opacity","scripts","src","setTimeout","eval","trim","basicChartPropsDecoder","period","parseFloat","status","moduleNameColor","header","textContent","color","numberFormat","moduleValue","legendP","margin","overviewGraphs","getElementsByClassName","insertBefore","firstChild","number","forceInteger","unit","shortData","divisor","Math","round","auxDecimals","pad","Number","pos","abs","input","padding","str","donutGraphPropsDecoder","legendBackgroundColor","eventsHistoryPropsDecoder","maxTime","legendColor","flotText","aux","parseBackgroundType","backgroundType","parseGraphType","graphType","moduleGraphPropsDecoder","customGraphId","svgNS","iconDefinition","size","spin","pulse","iconName","icon","createElementNS","pathData","listeners","listenersOncer","off","once","callbackIndex","indexOf","splice","event","pipe","te","parseIntOr","defaultValue","parseFloatOr","stringIsEmpty","notEmptyStringOr","parseBoolean","leftPad","diffLength","substr","substring","repeatTimes","floor","restLength","newPad","positionPropsDecoder","sizePropsDecoder","modulePropsDecoder","moduleId","agentProps","agentId","agentName","metaconsoleId","agentPropsDecoder","linkedVCPropsDecoder","linkedLayoutStatusProps","linkedLayoutStatusType","weight","linkedLayoutStatusTypeWeight","warningThreshold","linkedLayoutStatusTypeWarningThreshold","criticalThreshold","linkedLayoutStatusTypeCriticalThreshold","linkedLayoutId","linkedLayoutNodeId","itemMetaDecoder","receivedAt","getTime","error","Error","isFromCache","lineMode","prefixedCssRules","ruleName","ruleValue","rule","decodeBase64","decodeURIComponent","escape","window","atob","humanDate","date","locale","Intl","DateTimeFormat","day","month","year","format","getDate","getMonth","getFullYear","humanTime","hours","getHours","minutes","getMinutes","seconds","getSeconds","replaceMacros","macros","text","acc","replace","throttle","delay","fn","last","now","args","debounce","timerRef","clearTimeout","getOffset","el","parent","offsetLeft","offsetTop","scrollLeft","scrollTop","offsetParent","addMovementListener","altContainer","isDraggable","draggable","lastX","lastY","lastMouseX","lastMouseY","mouseElementOffsetX","mouseElementOffsetY","containerBounds","containerOffset","containerTop","containerBottom","containerLeft","containerRight","elementBounds","borderWidth","getComputedStyle","borderFix","debouncedMovement","throttledMovement","handleMove","mouseX","pageX","mouseY","pageY","mouseDeltaX","mouseDeltaY","maxX","maxY","outOfBoundsLeft","outOfBoundsRight","outOfBoundsTop","outOfBoundsBottom","handleEnd","removeEventListener","body","userSelect","handleStart","button","elementOffset","offsetX","offsetY","addResizementListener","resizeDraggable","lastWidth","lastHeight","elementTop","elementLeft","debouncedResizement","throttledResizement","handleResize","ellipsize","max","ellipse","__webpack_module_cache__","__webpack_require__","cachedModule","exports","module","__webpack_modules__","d","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","r","Symbol","toStringTag","parseShowLastValueTooltip","showLastValueTooltip","staticGraphPropsDecoder","imageSrc","statusImageSrc","lastValue","imgSrc","backgroundImage","backgroundRepeat","backgroundSize","backgroundPosition","Item","iconPropsDecoder","image","faPlusCircle","prefix","faTrashAlt","colorCloudPropsDecoder","defaultColor","colorRanges","generalDiv","colorLabel","ColorInput","required","target","InputGroup","rangesLabel","createLabel","rangesControlsContainer","createdRangesContainer","buildRanges","ranges","colorRange","rangeContainer","range","handleRangeUpdatePartial","newRanges","handleDelete","initialRangeContainer","onCreate","initialState","state","rangesContainer","rangesContainerFromValue","rangesLabelFromValue","rangesInputFromValue","createInputNumber","fromValue","rangesDivContainerToValue","rangesLabelToValue","rangesInputToValue","toValue","rangesDivContainerColor","rangesLabelColor","rangesInputColor","createInputColor","createBtn","onUpdate","onDelete","deleteBtn","append","createSvgElement","gradientId","svg","defs","radialGradient","stop0","stop100","circle","ColorCloud","formContainer","ColorInputGroup","RangesInputGroup","linePropsDecoder","startPosition","startX","startY","endPosition","endX","endY","lineWidth","borderColor","viewportOffsetX","viewportOffsetY","labelEnd","labelEndWidth","linkedEnd","linkedStart","labelEndHeight","labelStart","labelStartWidth","labelStartHeight","Line","extractBoxSizeAndPosition","circleRadius","moveMode","isMoving","lineMovedEventManager","TypedEvent","lineMovedEventDisposables","debouncedStartPositionMovementSave","removeStartPositionMovement","debouncedEndPositionMovementSave","removeEndPositionMovement","initStartPositionMovementListener","stopStartPositionMovementListener","initEndPositionMovementListener","stopEndPositionMovementListener","x1","y1","x2","y2","line","cursor","svgs","lines","getElementsByTagNameNS","startCircle","endCircle","circlesStart","circlesEnd","borderRadius","circles","min","startIsLeft","startIsTop","start","end","onLineMovementFinished","networkLinkPropsDecoder","groups","adjustment","lineX1","lineY1","lineX2","lineY2","g","atan2","PI","split","l","labels","arrows","arrow","arrowSize","arrowPosX","arrowPosY","arrowStart","border","borderBottom","arrowEnd","htmlLabelStart","console","htmlLabelEnd","groupPropsDecoder","groupId","showStatistics","extractHtml","parseClockType","clockType","parseClockFormat","clockFormat","clockPropsDecoder","clockTimezone","clockTimezoneOffset","showClockTimezone","intervalRef","startTick","createClock","Clock","TICK_INTERVAL","stopTick","clearInterval","handler","interval","setInterval","getElementSize","newWidth","newHeight","createAnalogicClock","createDigitalClock","colors","dateFontSize","baseTimeFontSize","clockFace","clockFaceBackground","city","getHumanTimezone","timezoneComplication","marksGroup","mainMarkGroup","mark1a","mark1b","mark","hourHand","hourHandA","hourHandB","minuteHand","minuteHandA","minuteHandB","minuteHandPin","secondHand","secondHandBar","secondHandPin","pin","getOriginDate","secAngle","minuteAngle","hourAngle","join","dateElem","fontSize","modified","tzFontSizeMultiplier","timeFontSize","tzFontSize","timeElem","tzElem","initialDate","targetTZOffset","localTZOffset","getTimezoneOffset","utimestamp","timezone","diameter","extraHeigth","boxPropsDecoder","fillColor","fillTransparent","boxSizing","borderStyle","maxBorderWidth","labelPropsDecoder","parseValueType","valueType","simpleValuePropsDecoder","processValue","parseProcessValue","img","pi","tau","epsilon","tauEpsilon","Path","_x0","_y0","_x1","_y1","_","constructor","moveTo","closePath","lineTo","quadraticCurveTo","bezierCurveTo","arcTo","x0","y0","x21","y21","x01","y01","l01_2","x20","y20","l21_2","l20_2","l21","sqrt","l01","tan","acos","t01","t21","arc","a0","a1","ccw","dx","cos","dy","sin","cw","da","rect","w","h","toString","halfPi","asin","arcInnerRadius","innerRadius","arcOuterRadius","outerRadius","arcStartAngle","startAngle","arcEndAngle","endAngle","arcPadAngle","padAngle","intersect","x3","y3","x10","y10","x32","y32","cornerTangents","r1","rc","lo","ox","oy","x11","y11","x00","y00","d2","D","cx0","cy0","cx1","cy1","dx0","dy0","dx1","dy1","cx","cy","extractPercentileType","extractValueType","percentilePropsDecoder","percentileType","minValue","maxValue","labelColor","formatValue","background","progress","getProgress","NumberFormat","backgroundRect","progressRect","backgroundCircle","progressCircle","arcProps","cornerRadius","constant","padRadius","context","buffer","r0","apply","arguments","t0","t1","a01","a11","a00","a10","da0","da1","ap","rp","rc0","rc1","p0","p1","oc","ax","ay","bx","by","kc","lc","centroid","a","trunc","servicePropsDecoder","encodedTitle","serviceId","odometerPropsDecoder","titleColor","titleModule","thresholds","minMaxValue","odometerType","lineWarning","lineWarning2","lineCritical","lineCritical2","JSON","parse","min_warning","max_warning","getCoords","min_critical","max_critical","percent","toFixed","getSubfix","maximumSignificantDigits","maximumFractionDigits","numb","match","rotate","getRotate","anchoB","odometerContainer","odometerA","odometerB","odometerC","gaugeE","SVG_NS","svgWarning","setAttributeNS","pathWarning","svgCritical","pathCritical","h1","innerText","lineHeight","h2","truncateTitle","script","onload","urlPandora","location","pathname","dir","display","minMax","limit","subfix","radio","halfLength","diff","stringBefore","stringAfter","decodeProps","items","elementsById","elementIds","relations","lineLinks","handleElementClick","handleElementDblClick","handleElementMovement","gridSelected","elements","movementX","movementY","newX","newY","gridSize","positionX","positionY","itemId","getItemRelations","relation","getVisualCenter","childId","updateLinesConnected","handleElementMovementFinished","handleLineElementMovementFinished","refreshLink","handleElementResizement","handleElementResizementFinished","handleElementRemove","clearRelations","handleElementSelectionChanged","handleContainerClick","unSelectItems","containerRef","_props","backgroundURL","isFavorite","relationLineWidth","visualConsolePropsDecoder","sort","b","addElement","buildRelations","coordinatesInItem","itemAtStart","itemAtEnd","keys","to","save","lineId","updateElement","options","debouncedLinePositionSave","map","itemInstance","ModuleGraph","EventsHistory","DonutGraph","BarsGraph","BasicChart","itemInstanceFrom","message","updateElements","itemIds","child","addRelationLine","ids","getRelationLine","itemRelations","clientWidth","clientHeight","parentX","parentY","childX","childY","zIndex","onItemClick","onItemDblClick","onItemMoved","onLineMoved","onItemResized","onItemSelectionChanged","enableEditMode","disableEditMode","enableMaintenanceMode","disableMaintenanceMode","updateGridSize","updateGridSelected","unique","currentItemId","itemDescriptiveName","linkedAgentAndModuleProps","taskInitiator","cancellable","cancel","_status","statusChangeEventManager","onStatusChange","tasks","asyncTask","task","AsyncTask","ref","asyncPeriodic","VisualConsole","Form","AsyncTaskManager"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"file":"vc.main.min.js","mappings":"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","sources":["webpack://pandora-fms-visual-console/./src/Form.ts","webpack://pandora-fms-visual-console/./src/Item.ts","webpack://pandora-fms-visual-console/./src/items/BarsGraph.ts","webpack://pandora-fms-visual-console/./src/items/BasicChart.ts","webpack://pandora-fms-visual-console/./src/items/DonutGraph.ts","webpack://pandora-fms-visual-console/./src/items/EventsHistory.ts","webpack://pandora-fms-visual-console/./src/items/ModuleGraph.ts","webpack://pandora-fms-visual-console/./src/lib/FontAwesomeIcon.ts","webpack://pandora-fms-visual-console/./src/lib/TypedEvent.ts","webpack://pandora-fms-visual-console/./src/lib/index.ts","webpack://pandora-fms-visual-console/webpack/bootstrap","webpack://pandora-fms-visual-console/webpack/runtime/define property getters","webpack://pandora-fms-visual-console/webpack/runtime/hasOwnProperty shorthand","webpack://pandora-fms-visual-console/webpack/runtime/make namespace object","webpack://pandora-fms-visual-console/./src/items/StaticGraph.ts","webpack://pandora-fms-visual-console/./src/items/Icon.ts","webpack://pandora-fms-visual-console/./node_modules/@fortawesome/free-solid-svg-icons/index.es.js","webpack://pandora-fms-visual-console/./src/items/ColorCloud.ts","webpack://pandora-fms-visual-console/./src/items/Line.ts","webpack://pandora-fms-visual-console/./src/items/NetworkLink.ts","webpack://pandora-fms-visual-console/./src/items/Group.ts","webpack://pandora-fms-visual-console/./src/items/Clock/index.ts","webpack://pandora-fms-visual-console/./src/items/Box.ts","webpack://pandora-fms-visual-console/./src/items/Label.ts","webpack://pandora-fms-visual-console/./src/items/SimpleValue.ts","webpack://pandora-fms-visual-console/./node_modules/d3-path/src/path.js","webpack://pandora-fms-visual-console/./node_modules/d3-shape/src/constant.js","webpack://pandora-fms-visual-console/./node_modules/d3-shape/src/math.js","webpack://pandora-fms-visual-console/./node_modules/d3-shape/src/arc.js","webpack://pandora-fms-visual-console/./src/items/Percentile.ts","webpack://pandora-fms-visual-console/./src/items/Service.ts","webpack://pandora-fms-visual-console/./src/items/Odometer.ts","webpack://pandora-fms-visual-console/./src/VisualConsole.ts","webpack://pandora-fms-visual-console/./src/lib/AsyncTaskManager.ts","webpack://pandora-fms-visual-console/./src/index.ts"],"sourcesContent":["import TypedEvent, { Listener, Disposable } from \"./lib/TypedEvent\";\nimport { AnyObject, UnknownObject } from \"./lib/types\";\nimport { t } from \"./lib\";\n\ninterface InputGroupDataRequestedEvent {\n  identifier: string;\n  params: UnknownObject;\n  done: (error: Error | null, data?: unknown) => void;\n}\n\n// TODO: Document\nexport abstract class InputGroup<Data extends {} = {}> {\n  private _name: string = \"\";\n  private _element?: HTMLElement;\n  public readonly initialData: Data;\n  protected currentData: Partial<Data> = {};\n  // Event manager for data requests.\n  private readonly dataRequestedEventManager = new TypedEvent<\n    InputGroupDataRequestedEvent\n  >();\n\n  public constructor(name: string, initialData: Data) {\n    this.name = name;\n    this.initialData = initialData;\n  }\n\n  public set name(name: string) {\n    if (name.length === 0) throw new RangeError(\"empty name\");\n    this._name = name;\n  }\n\n  public get name(): string {\n    return this._name;\n  }\n\n  public get data(): Partial<Data> {\n    return { ...this.currentData };\n  }\n\n  public get element(): HTMLElement {\n    if (this._element == null) {\n      const element = document.createElement(\"div\");\n      element.className = `input-group input-group-${this.name}`;\n\n      const content = this.createContent();\n\n      if (content instanceof Array) {\n        content.forEach(element.appendChild);\n      } else {\n        element.appendChild(content);\n      }\n\n      this._element = element;\n    }\n\n    return this._element;\n  }\n\n  public reset(): void {\n    this.currentData = {};\n  }\n\n  protected updateData(data: Partial<Data>): void {\n    this.currentData = {\n      ...this.currentData,\n      ...data\n    };\n    // TODO: Update item.\n  }\n\n  protected requestData(\n    identifier: string,\n    params: UnknownObject,\n    done: (error: Error | null, data?: unknown) => void\n  ): void {\n    this.dataRequestedEventManager.emit({ identifier, params, done });\n  }\n\n  public onDataRequested(\n    listener: Listener<InputGroupDataRequestedEvent>\n  ): Disposable {\n    return this.dataRequestedEventManager.on(listener);\n  }\n\n  protected abstract createContent(): HTMLElement | HTMLElement[];\n\n  // public abstract get isValid(): boolean;\n}\n\nexport interface SubmitFormEvent {\n  nativeEvent: Event;\n  data: AnyObject;\n}\n\n// TODO: Document\nexport class FormContainer {\n  public readonly title: string;\n  private inputGroupsByName: { [name: string]: InputGroup } = {};\n  private enabledInputGroupNames: string[] = [];\n  // Event manager for submit events.\n  private readonly submitEventManager = new TypedEvent<SubmitFormEvent>();\n  // Event manager for item data requests.\n  private readonly itemDataRequestedEventManager = new TypedEvent<\n    InputGroupDataRequestedEvent\n  >();\n  private handleItemDataRequested = this.itemDataRequestedEventManager.emit;\n\n  public constructor(\n    title: string,\n    inputGroups: InputGroup[] = [],\n    enabledInputGroups: string[] = []\n  ) {\n    this.title = title;\n\n    if (inputGroups.length > 0) {\n      this.inputGroupsByName = inputGroups.reduce((prevVal, inputGroup) => {\n        // Add event handlers.\n        inputGroup.onDataRequested(this.handleItemDataRequested);\n        prevVal[inputGroup.name] = inputGroup;\n        return prevVal;\n      }, this.inputGroupsByName);\n    }\n\n    if (enabledInputGroups.length > 0) {\n      this.enabledInputGroupNames = [\n        ...this.enabledInputGroupNames,\n        ...enabledInputGroups.filter(\n          name => this.inputGroupsByName[name] != null\n        )\n      ];\n    }\n  }\n\n  public getInputGroup(inputGroupName: string): InputGroup | null {\n    return this.inputGroupsByName[inputGroupName] || null;\n  }\n\n  public addInputGroup(\n    inputGroup: InputGroup,\n    index: number | null = null\n  ): FormContainer {\n    // Add event handlers.\n    inputGroup.onDataRequested(this.handleItemDataRequested);\n    this.inputGroupsByName[inputGroup.name] = inputGroup;\n\n    // Remove the current stored name if exist.\n    this.enabledInputGroupNames = this.enabledInputGroupNames.filter(\n      name => name !== inputGroup.name\n    );\n\n    if (index !== null) {\n      if (index <= 0) {\n        this.enabledInputGroupNames = [\n          inputGroup.name,\n          ...this.enabledInputGroupNames\n        ];\n      } else if (index >= this.enabledInputGroupNames.length) {\n        this.enabledInputGroupNames = [\n          ...this.enabledInputGroupNames,\n          inputGroup.name\n        ];\n      } else {\n        this.enabledInputGroupNames = [\n          // part of the array before the specified index\n          ...this.enabledInputGroupNames.slice(0, index),\n          // inserted item\n          inputGroup.name,\n          // part of the array after the specified index\n          ...this.enabledInputGroupNames.slice(index)\n        ];\n      }\n    } else {\n      this.enabledInputGroupNames = [\n        ...this.enabledInputGroupNames,\n        inputGroup.name\n      ];\n    }\n\n    return this;\n  }\n\n  public removeInputGroup(inputGroupName: string): FormContainer {\n    delete this.inputGroupsByName[inputGroupName];\n    // Remove the current stored name.\n    this.enabledInputGroupNames = this.enabledInputGroupNames.filter(\n      name => name !== inputGroupName\n    );\n\n    return this;\n  }\n\n  public getFormElement(\n    type: \"creation\" | \"update\" = \"update\"\n  ): HTMLFormElement {\n    const form = document.createElement(\"form\");\n    form.id = \"visual-console-item-edition\";\n    form.className = \"visual-console-item-edition\";\n    form.addEventListener(\"submit\", e => {\n      e.preventDefault();\n      this.submitEventManager.emit({\n        nativeEvent: e,\n        data: this.enabledInputGroupNames.reduce((data, name) => {\n          if (this.inputGroupsByName[name]) {\n            data = {\n              ...data,\n              ...this.inputGroupsByName[name].data\n            };\n          }\n          return data;\n        }, {})\n      });\n    });\n\n    const formContent = document.createElement(\"div\");\n    formContent.className = \"input-groups\";\n\n    this.enabledInputGroupNames.forEach(name => {\n      if (this.inputGroupsByName[name]) {\n        formContent.appendChild(this.inputGroupsByName[name].element);\n      }\n    });\n\n    form.appendChild(formContent);\n\n    return form;\n  }\n\n  public reset(): void {\n    this.enabledInputGroupNames.forEach(name => {\n      if (this.inputGroupsByName[name]) {\n        this.inputGroupsByName[name].reset();\n      }\n    });\n  }\n\n  // public get isValid(): boolean {\n  //   for (let i = 0; i < this.enabledInputGroupNames.length; i++) {\n  //     const inputGroup = this.inputGroupsByName[this.enabledInputGroupNames[i]];\n  //     if (inputGroup && !inputGroup.isValid) return false;\n  //   }\n\n  //   return true;\n  // }\n\n  public onSubmit(listener: Listener<SubmitFormEvent>): Disposable {\n    return this.submitEventManager.on(listener);\n  }\n\n  public onInputGroupDataRequested(\n    listener: Listener<InputGroupDataRequestedEvent>\n  ): Disposable {\n    return this.itemDataRequestedEventManager.on(listener);\n  }\n}\n","import {\n  Position,\n  Size,\n  AnyObject,\n  WithModuleProps,\n  ItemMeta,\n  LinkedVisualConsoleProps,\n  WithAgentProps\n} from \"./lib/types\";\nimport {\n  sizePropsDecoder,\n  positionPropsDecoder,\n  parseIntOr,\n  parseBoolean,\n  notEmptyStringOr,\n  replaceMacros,\n  humanDate,\n  humanTime,\n  addMovementListener,\n  debounce,\n  addResizementListener,\n  t,\n  parseFloatOr\n} from \"./lib\";\nimport TypedEvent, { Listener, Disposable } from \"./lib/TypedEvent\";\nimport { FormContainer, InputGroup } from \"./Form\";\n\n// Enum: https://www.typescriptlang.org/docs/handbook/enums.html.\nexport const enum ItemType {\n  STATIC_GRAPH = 0,\n  MODULE_GRAPH = 1,\n  SIMPLE_VALUE = 2,\n  PERCENTILE_BAR = 3,\n  LABEL = 4,\n  ICON = 5,\n  SIMPLE_VALUE_MAX = 6,\n  SIMPLE_VALUE_MIN = 7,\n  SIMPLE_VALUE_AVG = 8,\n  PERCENTILE_BUBBLE = 9,\n  SERVICE = 10,\n  GROUP_ITEM = 11,\n  BOX_ITEM = 12,\n  LINE_ITEM = 13,\n  AUTO_SLA_GRAPH = 14,\n  CIRCULAR_PROGRESS_BAR = 15,\n  CIRCULAR_INTERIOR_PROGRESS_BAR = 16,\n  DONUT_GRAPH = 17,\n  BARS_GRAPH = 18,\n  CLOCK = 19,\n  COLOR_CLOUD = 20,\n  NETWORK_LINK = 21,\n  ODOMETER = 22,\n  BASIC_CHART = 23\n}\n\n// Base item properties. This interface should be extended by the item implementations.\nexport interface ItemProps extends Position, Size {\n  readonly id: number;\n  readonly type: ItemType;\n  label: string | null;\n  labelPosition: \"up\" | \"right\" | \"down\" | \"left\";\n  isLinkEnabled: boolean;\n  link: string | null;\n  isOnTop: boolean;\n  parentId: number | null;\n  aclGroupId: number | null;\n  cacheExpiration: number | null;\n  colorStatus: string;\n  cellId: string | null;\n  alertOutline: boolean;\n  ratio: number | null;\n}\n\nexport interface ItemClickEvent {\n  item: VisualConsoleItem<ItemProps>;\n  nativeEvent: Event;\n}\n\n// FIXME: Fix type compatibility.\nexport interface ItemRemoveEvent {\n  // data: Props;\n  item: VisualConsoleItem<ItemProps>;\n}\n\nexport interface ItemMovedEvent {\n  item: VisualConsoleItem<ItemProps>;\n  prevPosition: Position;\n  newPosition: Position;\n}\n\nexport interface ItemResizedEvent {\n  item: VisualConsoleItem<ItemProps>;\n  prevSize: Size;\n  newSize: Size;\n}\n\nexport interface ItemSelectionChangedEvent {\n  selected: boolean;\n}\n\n/**\n * Extract a valid enum value from a raw label position value.\n * @param labelPosition Raw value.\n */\nconst parseLabelPosition = (\n  labelPosition: unknown\n): ItemProps[\"labelPosition\"] => {\n  switch (labelPosition) {\n    case \"up\":\n    case \"right\":\n    case \"down\":\n    case \"left\":\n      return labelPosition;\n    default:\n      return \"down\";\n  }\n};\n\n/**\n * Build a valid typed object from a raw object.\n * This will allow us to ensure the type safety.\n *\n * @param data Raw object.\n * @return An object representing the item props.\n * @throws Will throw a TypeError if some property\n * is missing from the raw object or have an invalid type.\n */\nexport function itemBasePropsDecoder(data: AnyObject): ItemProps | never {\n  if (data.id == null || isNaN(parseInt(data.id))) {\n    throw new TypeError(\"invalid id.\");\n  }\n  if (data.type == null || isNaN(parseInt(data.type))) {\n    throw new TypeError(\"invalid type.\");\n  }\n\n  return {\n    id: parseInt(data.id),\n    type: parseInt(data.type),\n    label: notEmptyStringOr(data.label, null),\n    labelPosition: parseLabelPosition(data.labelPosition),\n    isLinkEnabled: parseBoolean(data.isLinkEnabled),\n    link: notEmptyStringOr(data.link, null),\n    isOnTop: parseBoolean(data.isOnTop),\n    parentId: parseIntOr(data.parentId, null),\n    aclGroupId: parseIntOr(data.aclGroupId, null),\n    cacheExpiration: parseIntOr(data.cacheExpiration, null),\n    colorStatus: notEmptyStringOr(data.colorStatus, \"#CCC\"),\n    cellId: notEmptyStringOr(data.cellId, \"\"),\n    alertOutline: parseBoolean(data.alertOutline),\n    ratio: parseFloatOr(data.ratio, null),\n    ...sizePropsDecoder(data), // Object spread. It will merge the properties of the two objects.\n    ...positionPropsDecoder(data) // Object spread. It will merge the properties of the two objects.\n  };\n}\n\n//TODO: Document\nexport function titleItem(id: number): string {\n  let title = \"\";\n  switch (id) {\n    case ItemType.STATIC_GRAPH:\n      title = t(\"Static image\");\n      break;\n    case ItemType.MODULE_GRAPH:\n      title = t(\"Module graph\");\n      break;\n    case ItemType.SIMPLE_VALUE:\n      title = t(\"Simple value\");\n      break;\n    case ItemType.PERCENTILE_BAR:\n      title = t(\"Percentile item\");\n      break;\n    case ItemType.LABEL:\n      title = t(\"Label\");\n      break;\n    case ItemType.ICON:\n      title = t(\"Icon\");\n      break;\n    case ItemType.SIMPLE_VALUE_MAX:\n      title = t(\"Simple value\");\n      break;\n    case ItemType.SIMPLE_VALUE_MIN:\n      title = t(\"Simple value\");\n      break;\n    case ItemType.SIMPLE_VALUE_AVG:\n      title = t(\"Simple value\");\n      break;\n    case ItemType.PERCENTILE_BUBBLE:\n      title = t(\"Percentile item\");\n      break;\n    case ItemType.SERVICE:\n      title = t(\"Service\");\n      break;\n    case ItemType.GROUP_ITEM:\n      title = t(\"Group\");\n      break;\n    case ItemType.BOX_ITEM:\n      title = t(\"Box\");\n      break;\n    case ItemType.LINE_ITEM:\n      title = t(\"Line\");\n      break;\n    case ItemType.AUTO_SLA_GRAPH:\n      title = t(\"Event history graph\");\n      break;\n    case ItemType.CIRCULAR_PROGRESS_BAR:\n      title = t(\"Percentile item\");\n      break;\n    case ItemType.CIRCULAR_INTERIOR_PROGRESS_BAR:\n      title = t(\"Percentile item\");\n      break;\n    case ItemType.DONUT_GRAPH:\n      title = t(\"Serialized pie graph\");\n      break;\n    case ItemType.BARS_GRAPH:\n      title = t(\"Bars graph\");\n      break;\n    case ItemType.CLOCK:\n      title = t(\"Clock\");\n      break;\n    case ItemType.COLOR_CLOUD:\n      title = t(\"Color cloud\");\n      break;\n    case ItemType.NETWORK_LINK:\n      title = t(\"Network link\");\n      break;\n    case ItemType.ODOMETER:\n      title = t(\"Odometer\");\n      break;\n    case ItemType.BASIC_CHART:\n      title = t(\"Basic chart\");\n      break;\n    default:\n      title = t(\"Item\");\n      break;\n  }\n\n  return title;\n}\n\n/**\n * Base class of the visual console items. Should be extended to use its capabilities.\n */\nabstract class VisualConsoleItem<Props extends ItemProps> {\n  // Properties of the item.\n  public itemProps: Props;\n  // Metadata of the item.\n  private _metadata: ItemMeta;\n  // Reference to the DOM element which will contain the item.\n  public elementRef: HTMLElement = document.createElement(\"div\");\n  public labelElementRef: HTMLElement = document.createElement(\"div\");\n  // Reference to the DOM element which will contain the view of the item which extends this class.\n  protected childElementRef: HTMLElement = document.createElement(\"div\");\n  // Event manager for click events.\n  private readonly clickEventManager = new TypedEvent<ItemClickEvent>();\n  // Event manager for double click events.\n  private readonly dblClickEventManager = new TypedEvent<ItemClickEvent>();\n  // Event manager for moved events.\n  private readonly movedEventManager = new TypedEvent<ItemMovedEvent>();\n  // Event manager for stopped movement events.\n  private readonly movementFinishedEventManager = new TypedEvent<\n    ItemMovedEvent\n  >();\n  // Event manager for resized events.\n  private readonly resizedEventManager = new TypedEvent<ItemResizedEvent>();\n  // Event manager for resize finished events.\n  private readonly resizeFinishedEventManager = new TypedEvent<\n    ItemResizedEvent\n  >();\n  // Event manager for remove events.\n  private readonly removeEventManager = new TypedEvent<ItemRemoveEvent>();\n  // Event manager for selection change events.\n  private readonly selectionChangedEventManager = new TypedEvent<\n    ItemSelectionChangedEvent\n  >();\n  // List of references to clean the event listeners.\n  private readonly disposables: Disposable[] = [];\n\n  // This function will only run the 2nd arg function after the time\n  // of the first arg have passed after its last execution.\n  public debouncedMovementSave = debounce(\n    500, // ms.\n    (x: Position[\"x\"], y: Position[\"y\"]) => {\n      // Update the metadata information.\n      // Don't use the .meta property cause we don't need DOM updates.\n      this._metadata.isBeingMoved = false;\n\n      const prevPosition = {\n        x: this.props.x,\n        y: this.props.y\n      };\n      const newPosition = {\n        x: x,\n        y: y\n      };\n\n      if (!this.positionChanged(prevPosition, newPosition)) return;\n\n      // Save the new position to the props.\n      this.move(x, y);\n      // Emit the movement event.\n      this.movementFinishedEventManager.emit({\n        item: this,\n        prevPosition: prevPosition,\n        newPosition: newPosition\n      });\n    }\n  );\n  // This property will store the function\n  // to clean the movement listener.\n  private removeMovement: Function | null = null;\n\n  /**\n   * Start the movement funtionality.\n   * @param element Element to move inside its container.\n   */\n  private initMovementListener(element: HTMLElement): void {\n    // Avoid line movement as 'block' force using circles.\n    if (\n      this.props.type == ItemType.LINE_ITEM ||\n      this.props.type == ItemType.NETWORK_LINK\n    ) {\n      return;\n    }\n\n    this.removeMovement = addMovementListener(\n      element,\n      (x: Position[\"x\"], y: Position[\"y\"]) => {\n        const prevPosition = {\n          x: this.props.x,\n          y: this.props.y\n        };\n        const newPosition = { x, y };\n\n        this.meta = {\n          ...this.meta,\n          isSelected: true\n        };\n\n        if (!this.positionChanged(prevPosition, newPosition)) return;\n\n        // Update the metadata information.\n        // Don't use the .meta property cause we don't need DOM updates.\n        this._metadata.isBeingMoved = true;\n        // Move the DOM element.\n        this.moveElement(x, y);\n        // Emit the movement event.\n        this.movedEventManager.emit({\n          item: this,\n          prevPosition: prevPosition,\n          newPosition: newPosition\n        });\n        // Run the save function.\n        this.debouncedMovementSave(x, y);\n      }\n    );\n  }\n  /**\n   * Stop the movement fun\n   */\n  private stopMovementListener(): void {\n    if (this.removeMovement) {\n      this.removeMovement();\n      this.removeMovement = null;\n    }\n  }\n\n  // This function will only run the 2nd arg function after the time\n  // of the first arg have passed after its last execution.\n  public debouncedResizementSave = debounce(\n    500, // ms.\n    (width: Size[\"width\"], height: Size[\"height\"]) => {\n      // Update the metadata information.\n      // Don't use the .meta property cause we don't need DOM updates.\n      this._metadata.isBeingResized = false;\n\n      const prevSize = {\n        width: this.props.width,\n        height: this.props.height\n      };\n      const newSize = { width, height };\n\n      if (!this.sizeChanged(prevSize, newSize)) return;\n\n      // Save the new position to the props.\n      this.resize(width, height);\n\n      // Emit the resize finished event.\n      this.resizeFinishedEventManager.emit({\n        item: this,\n        prevSize: prevSize,\n        newSize: newSize\n      });\n    }\n  );\n  // This property will store the function\n  // to clean the resizement listener.\n  private removeResizement: Function | null = null;\n\n  /**\n   * Start the resizement funtionality.\n   * @param element Element to move inside its container.\n   */\n  protected initResizementListener(element: HTMLElement): void {\n    if (\n      this.props.type == ItemType.LINE_ITEM ||\n      this.props.type == ItemType.NETWORK_LINK\n    ) {\n      return;\n    }\n    this.removeResizement = addResizementListener(\n      element,\n      (width: Size[\"width\"], height: Size[\"height\"]) => {\n        // Update the metadata information.\n        // Don't use the .meta property cause we don't need DOM updates.\n        this._metadata.isBeingResized = true;\n\n        // The label it's outside the item's size, so we need\n        // to get rid of its size to get the real size of the\n        // item's content.\n        if (this.props.label && this.props.label.length > 0) {\n          const {\n            width: labelWidth,\n            height: labelHeight\n          } = this.labelElementRef.getBoundingClientRect();\n\n          switch (this.props.labelPosition) {\n            case \"up\":\n            case \"down\":\n              height -= labelHeight;\n              break;\n            case \"left\":\n            case \"right\":\n              width -= labelWidth;\n              break;\n          }\n        }\n\n        const prevSize = {\n          width: this.props.width,\n          height: this.props.height\n        };\n        const newSize = { width, height };\n\n        if (!this.sizeChanged(prevSize, newSize)) return;\n\n        // Move the DOM element.\n        this.resizeElement(width, height);\n        // Emit the resizement event.\n        this.resizedEventManager.emit({\n          item: this,\n          prevSize,\n          newSize\n        });\n        // Run the save function.\n        this.debouncedResizementSave(width, height);\n      }\n    );\n  }\n  /**\n   * Stop the resizement functionality.\n   */\n  private stopResizementListener(): void {\n    if (this.removeResizement) {\n      this.removeResizement();\n      this.removeResizement = null;\n    }\n  }\n\n  /**\n   * To create a new element which will be inside the item box.\n   * @return Item.\n   */\n  protected abstract createDomElement(): HTMLElement;\n\n  public constructor(\n    props: Props,\n    metadata: ItemMeta,\n    deferInit: boolean = false\n  ) {\n    this.itemProps = props;\n    this._metadata = metadata;\n\n    if (!deferInit) this.init();\n  }\n\n  /**\n   * To create and append the DOM elements.\n   */\n  protected init(): void {\n    /*\n     * Get a HTMLElement which represents the container box\n     * of the Visual Console item. This element will manage\n     * all the common things like click events, show a border\n     * when hovered, etc.\n     */\n    this.elementRef = this.createContainerDomElement();\n    this.labelElementRef = this.createLabelDomElement();\n\n    /*\n     * Get a HTMLElement which represents the custom view\n     * of the Visual Console item. This element will be\n     * different depending on the item implementation.\n     */\n    this.childElementRef = this.createDomElement();\n\n    // Insert the elements into the container.\n    this.elementRef.appendChild(this.childElementRef);\n    this.elementRef.appendChild(this.labelElementRef);\n\n    // Resize element.\n    this.resizeElement(this.itemProps.width, this.itemProps.height);\n\n    // Set label position.\n    this.changeLabelPosition(this.itemProps.labelPosition);\n  }\n\n  /**\n   * To create a new box for the visual console item.\n   * @return Item box.\n   */\n  private createContainerDomElement(): HTMLElement {\n    let box;\n    if (this.props.isLinkEnabled) {\n      box = document.createElement(\"a\") as HTMLAnchorElement;\n\n      if (this.props.link) {\n        box.href = this.props.link;\n      } else {\n        box.className = \"textDecorationNone\";\n      }\n    } else {\n      box = document.createElement(\"div\") as HTMLDivElement;\n      box.className = \"textDecorationNone\";\n    }\n\n    box.classList.add(\"visual-console-item\");\n    if (this.props.isOnTop) {\n      box.classList.add(\"is-on-top\");\n    }\n\n    box.style.left = `${this.props.x}px`;\n    box.style.top = `${this.props.y}px`;\n\n    if (this.props.alertOutline) {\n      box.classList.add(\"is-alert-triggered\");\n    }\n\n    // Init the click listeners.\n    box.addEventListener(\"dblclick\", e => {\n      if (!this.meta.isBeingMoved && !this.meta.isBeingResized) {\n        this.unSelectItem();\n        this.selectItem();\n\n        this.dblClickEventManager.emit({\n          item: this,\n          nativeEvent: e\n        });\n      }\n    });\n    box.addEventListener(\"click\", e => {\n      if (this.meta.editMode) {\n        e.preventDefault();\n        e.stopPropagation();\n      } else {\n        // Add loading click item.\n        if (this.itemProps.isLinkEnabled && this.itemProps.link != null) {\n          const divParent = document.createElement(\"div\");\n          divParent.className = \"div-visual-console-spinner\";\n          const divSpinner = document.createElement(\"div\");\n          divSpinner.className = \"visual-console-spinner\";\n          divParent.appendChild(divSpinner);\n          let path = e.composedPath();\n          let containerId = \"visual-console-container\";\n          for (let index = 0; index < path.length; index++) {\n            const element = path[index] as HTMLInputElement;\n            if (\n              element.id != undefined &&\n              element.id != null &&\n              element.id != \"\"\n            ) {\n              if (element.id.includes(containerId) === true) {\n                containerId = element.id;\n                break;\n              }\n            }\n          }\n\n          const containerVC = document.getElementById(containerId);\n          if (containerVC != null) {\n            containerVC.classList.add(\"is-updating\");\n            containerVC.appendChild(divParent);\n          }\n        }\n      }\n\n      if (!this.meta.isBeingMoved && !this.meta.isBeingResized) {\n        this.clickEventManager.emit({\n          item: this,\n          nativeEvent: e\n        });\n      }\n    });\n\n    // Metadata state.\n    if (this.meta.maintenanceMode) {\n      box.classList.add(\"is-maintenance\");\n    }\n    if (this.meta.editMode) {\n      box.classList.add(\"is-editing\");\n    }\n    if (this.meta.isFetching) {\n      box.classList.add(\"is-fetching\");\n    }\n    if (this.meta.isUpdating) {\n      box.classList.add(\"is-updating\");\n    }\n    if (this.meta.isSelected) {\n      box.classList.add(\"is-selected\");\n    }\n\n    return box;\n  }\n\n  /**\n   * To create a new label for the visual console item.\n   * @return Item label.\n   */\n  protected createLabelDomElement(): HTMLElement {\n    const element = document.createElement(\"div\");\n    element.className = \"visual-console-item-label\";\n    // Add the label if it exists.\n    const label = this.getLabelWithMacrosReplaced();\n    if (label.length > 0) {\n      // Ugly table we need to use to replicate the legacy style.\n      const table = document.createElement(\"table\");\n      const row = document.createElement(\"tr\");\n      const emptyRow1 = document.createElement(\"tr\");\n      const emptyRow2 = document.createElement(\"tr\");\n      const cell = document.createElement(\"td\");\n\n      cell.innerHTML = label;\n      row.appendChild(cell);\n      table.appendChild(emptyRow1);\n      table.appendChild(row);\n      table.appendChild(emptyRow2);\n      table.style.textAlign = \"center\";\n      element.appendChild(table);\n    }\n\n    return element;\n  }\n\n  /**\n   * Return the label stored into the props with some macros replaced.\n   */\n  protected getLabelWithMacrosReplaced(): string {\n    // We assert that the props may have some needed properties.\n    const props = this.props as Partial<WithModuleProps>;\n\n    return replaceMacros(\n      [\n        {\n          macro: \"_date_\",\n          value: humanDate(new Date())\n        },\n        {\n          macro: \"_time_\",\n          value: humanTime(new Date())\n        },\n        {\n          macro: \"_agent_\",\n          value: props.agentAlias != null ? props.agentAlias : \"\"\n        },\n        {\n          macro: \"_agentdescription_\",\n          value: props.agentDescription != null ? props.agentDescription : \"\"\n        },\n        {\n          macro: \"_address_\",\n          value: props.agentAddress != null ? props.agentAddress : \"\"\n        },\n        {\n          macro: \"_module_\",\n          value: props.moduleName != null ? props.moduleName : \"\"\n        },\n        {\n          macro: \"_moduledescription_\",\n          value: props.moduleDescription != null ? props.moduleDescription : \"\"\n        }\n      ],\n      this.props.label || \"\"\n    );\n  }\n\n  /**\n   * To update the content element.\n   * @return Item.\n   */\n  protected updateDomElement(element: HTMLElement): void {\n    element.innerHTML = this.createDomElement().innerHTML;\n  }\n\n  /**\n   * Public accessor of the `props` property.\n   * @return Properties.\n   */\n  public get props(): Props {\n    return { ...this.itemProps }; // Return a copy.\n  }\n\n  /**\n   * Public setter of the `props` property.\n   * If the new props are different enough than the\n   * stored props, a render would be fired.\n   * @param newProps\n   */\n  public set props(newProps: Props) {\n    this.setProps(newProps);\n  }\n\n  /**\n   * Clasic and protected version of the setter of the `props` property.\n   * Useful to override it from children classes.\n   * @param newProps\n   */\n  protected setProps(newProps: Props) {\n    const prevProps = this.props;\n    // Update the internal props.\n    this.itemProps = newProps;\n\n    // From this point, things which rely on this.props can access to the changes.\n\n    // Check if we should re-render.\n    if (this.shouldBeUpdated(prevProps, newProps))\n      this.render(prevProps, this._metadata);\n  }\n\n  /**\n   * Public accessor of the `meta` property.\n   * @return Properties.\n   */\n  public get meta(): ItemMeta {\n    return { ...this._metadata }; // Return a copy.\n  }\n\n  /**\n   * Public setter of the `meta` property.\n   * If the new meta are different enough than the\n   * stored meta, a render would be fired.\n   * @param newProps\n   */\n  public set meta(newMetadata: ItemMeta) {\n    this.setMeta(newMetadata);\n  }\n\n  /**\n   * Classic version of the setter of the `meta` property.\n   * Useful to override it from children classes.\n   * @param newProps\n   */\n  public setMeta(newMetadata: Partial<ItemMeta>): void {\n    const prevMetadata = this._metadata;\n    // Update the internal meta.\n    this._metadata = {\n      ...prevMetadata,\n      ...newMetadata\n    };\n\n    if (\n      typeof newMetadata.isSelected !== \"undefined\" &&\n      prevMetadata.isSelected !== newMetadata.isSelected\n    ) {\n      this.selectionChangedEventManager.emit({\n        selected: newMetadata.isSelected\n      });\n    }\n\n    // From this point, things which rely on this.props can access to the changes.\n\n    // Check if we should re-render.\n    // if (this.shouldBeUpdated(prevMetadata, newMetadata))\n    this.render(this.itemProps, prevMetadata);\n  }\n\n  /**\n   * To compare the previous and the new props and returns a boolean value\n   * in case the difference is meaningfull enough to perform DOM changes.\n   *\n   * Here, the only comparision is done by reference.\n   *\n   * Override this function to perform a different comparision depending on the item needs.\n   *\n   * @param prevProps\n   * @param newProps\n   * @return Whether the difference is meaningful enough to perform DOM changes or not.\n   */\n  protected shouldBeUpdated(prevProps: Props, newProps: Props): boolean {\n    return prevProps !== newProps;\n  }\n\n  /**\n   * To recreate or update the HTMLElement which represents the item into the DOM.\n   * @param prevProps If exists it will be used to only perform DOM updates instead of a full replace.\n   */\n  public render(\n    prevProps: Props | null = null,\n    prevMeta: ItemMeta | null = null\n  ): void {\n    if (prevProps) {\n      if (this.props.ratio !== 1 && this.props.type != ItemType.LINE_ITEM) {\n        this.elementRef.style.transform = `scale(${\n          this.props.ratio ? this.props.ratio : 1\n        })`;\n        this.elementRef.style.transformOrigin = \"left top\";\n        this.elementRef.style.minWidth = \"max-content\";\n        this.elementRef.style.minHeight = \"max-content\";\n      }\n\n      if (\n        prevProps.type == ItemType.LINE_ITEM ||\n        prevProps.type == ItemType.NETWORK_LINK\n      ) {\n        this.updateDomElement(this.childElementRef);\n      }\n    }\n    // Move box.\n    if (!prevProps || this.positionChanged(prevProps, this.props)) {\n      this.moveElement(this.props.x, this.props.y);\n      if (\n        prevProps &&\n        prevProps.type != ItemType.LINE_ITEM &&\n        prevProps.type != ItemType.NETWORK_LINK\n      ) {\n        this.updateDomElement(this.childElementRef);\n      }\n    }\n\n    // Resize box.\n    if (!prevProps || this.sizeChanged(prevProps, this.props)) {\n      this.resizeElement(this.props.width, this.props.height);\n      if (\n        prevProps &&\n        prevProps.type != ItemType.LINE_ITEM &&\n        prevProps.type != ItemType.NETWORK_LINK\n      ) {\n        this.updateDomElement(this.childElementRef);\n      }\n    }\n    // Change label.\n    const oldLabelHtml = this.labelElementRef.innerHTML;\n    const newLabelHtml = this.createLabelDomElement().innerHTML;\n    if (oldLabelHtml !== newLabelHtml) {\n      this.labelElementRef.innerHTML = newLabelHtml;\n      this.changeLabelPosition(this.itemProps.labelPosition);\n    } else {\n      // Change label position.\n      if (!prevProps || prevProps.labelPosition !== this.props.labelPosition) {\n        this.changeLabelPosition(this.props.labelPosition);\n      }\n    }\n\n    //Change z-index class is-on-top\n    if (!prevProps || prevProps.isOnTop !== this.props.isOnTop) {\n      if (this.props.isOnTop) {\n        this.elementRef.classList.add(\"is-on-top\");\n      } else {\n        this.elementRef.classList.remove(\"is-on-top\");\n      }\n    }\n\n    // Change link.\n    if (prevProps && prevProps.isLinkEnabled !== this.props.isLinkEnabled) {\n      const container = this.createContainerDomElement();\n      // Copy the attributes.\n      const attrs = this.elementRef.attributes;\n      for (let i = 0; i < attrs.length; i++) {\n        if (attrs[i].nodeName !== \"id\") {\n          let cloneIsNeeded = this.elementRef.getAttributeNode(\n            attrs[i].nodeName\n          );\n          if (cloneIsNeeded !== null) {\n            let cloneAttr = cloneIsNeeded.cloneNode(true) as Attr;\n            container.setAttributeNode(cloneAttr);\n          }\n        }\n      }\n      // Replace the reference.\n      if (this.elementRef.parentNode !== null) {\n        this.elementRef.parentNode.replaceChild(container, this.elementRef);\n      }\n\n      // Changed the reference to the main element. It's ugly, but needed.\n      this.elementRef = container;\n\n      // Insert the elements into the container.\n      this.elementRef.appendChild(this.childElementRef);\n      this.elementRef.appendChild(this.labelElementRef);\n    }\n\n    if (\n      prevProps &&\n      this.props.isLinkEnabled &&\n      prevProps.link !== this.props.link\n    ) {\n      if (this.props.link !== null) {\n        this.elementRef.setAttribute(\"href\", this.props.link);\n      }\n    }\n\n    // Change metadata related things.\n    if (\n      !prevMeta ||\n      prevMeta.editMode !== this.meta.editMode ||\n      prevMeta.maintenanceMode !== this.meta.maintenanceMode\n    ) {\n      if (this.meta.editMode && this.meta.maintenanceMode === false) {\n        this.elementRef.classList.add(\"is-editing\");\n        this.elementRef.classList.remove(\"is-alert-triggered\");\n      } else {\n        this.elementRef.classList.remove(\"is-editing\");\n\n        if (this.props.alertOutline) {\n          this.elementRef.classList.add(\"is-alert-triggered\");\n        }\n      }\n    }\n\n    if (!prevMeta || prevMeta.isFetching !== this.meta.isFetching) {\n      if (this.meta.isFetching) {\n        this.elementRef.classList.add(\"is-fetching\");\n      } else {\n        this.elementRef.classList.remove(\"is-fetching\");\n      }\n    }\n\n    if (!prevMeta || prevMeta.isUpdating !== this.meta.isUpdating) {\n      if (this.meta.isUpdating) {\n        this.elementRef.classList.add(\"is-updating\");\n\n        const divParent = document.createElement(\"div\");\n        divParent.className = \"div-visual-console-spinner\";\n        const divSpinner = document.createElement(\"div\");\n        divSpinner.className = \"visual-console-spinner\";\n        divParent.appendChild(divSpinner);\n        this.elementRef.appendChild(divParent);\n      } else {\n        this.elementRef.classList.remove(\"is-updating\");\n\n        const div = this.elementRef.querySelector(\n          \".div-visual-console-spinner\"\n        );\n        if (div !== null) {\n          const parent = div.parentElement;\n          if (parent !== null) {\n            parent.removeChild(div);\n          }\n        }\n      }\n\n      this.updateDomElement(this.childElementRef);\n    }\n    if (!prevMeta || prevMeta.isSelected !== this.meta.isSelected) {\n      if (this.meta.isSelected) {\n        this.elementRef.classList.add(\"is-selected\");\n        this.elementRef.setAttribute(\"id\", \"item-selected-move\");\n      } else {\n        this.elementRef.classList.remove(\"is-selected\");\n        this.elementRef.removeAttribute(\"id\");\n      }\n    }\n  }\n\n  /**\n   * To remove the event listeners and the elements from the DOM.\n   */\n  public remove(): void {\n    // Call the remove event.\n    this.removeEventManager.emit({ item: this });\n    // Event listeners.\n    this.disposables.forEach(disposable => {\n      try {\n        disposable.dispose();\n      } catch (ignored) {} // eslint-disable-line no-empty\n    });\n    // VisualConsoleItem DOM element.\n    this.elementRef.remove();\n  }\n\n  /**\n   * Compare the previous and the new position and return\n   * a boolean value in case the position changed.\n   * @param prevPosition\n   * @param newPosition\n   * @return Whether the position changed or not.\n   */\n  protected positionChanged(\n    prevPosition: Position,\n    newPosition: Position\n  ): boolean {\n    return prevPosition.x !== newPosition.x || prevPosition.y !== newPosition.y;\n  }\n\n  /**\n   * Move the label around the item content.\n   * @param position Label position.\n   */\n  protected changeLabelPosition(position: Props[\"labelPosition\"]): void {\n    switch (position) {\n      case \"up\":\n        this.elementRef.style.flexDirection = \"column-reverse\";\n        break;\n      case \"left\":\n        this.elementRef.style.flexDirection = \"row-reverse\";\n        break;\n      case \"right\":\n        this.elementRef.style.flexDirection = \"row\";\n        break;\n      case \"down\":\n      default:\n        this.elementRef.style.flexDirection = \"column\";\n        break;\n    }\n\n    // Ugly table to show the label as its legacy counterpart.\n    const tables = this.labelElementRef.getElementsByTagName(\"table\");\n    const table = tables.length > 0 ? tables.item(0) : null;\n    // Change the table size depending on its position.\n    if (table) {\n      switch (this.props.labelPosition) {\n        case \"up\":\n        case \"down\":\n          if (this.props.width > 0) {\n            table.style.width = `${this.props.width}px`;\n            table.style.height = \"\";\n          }\n          break;\n        case \"left\":\n        case \"right\":\n          if (this.props.height > 0) {\n            table.style.width = \"\";\n            table.style.height = `${this.props.height}px`;\n          }\n          break;\n      }\n    }\n  }\n\n  /**\n   * Move the DOM container.\n   * @param x Horizontal axis position.\n   * @param y Vertical axis position.\n   */\n  public moveElement(x: number, y: number): void {\n    this.elementRef.style.left = `${x}px`;\n    this.elementRef.style.top = `${y}px`;\n  }\n\n  /**\n   * Update the position into the properties and move the DOM container.\n   * @param x Horizontal axis position.\n   * @param y Vertical axis position.\n   */\n  public move(x: number, y: number): void {\n    this.moveElement(x, y);\n    this.itemProps = {\n      ...this.props, // Object spread: http://es6-features.org/#SpreadOperator\n      x,\n      y\n    };\n  }\n\n  /**\n   * Compare the previous and the new size and return\n   * a boolean value in case the size changed.\n   * @param prevSize\n   * @param newSize\n   * @return Whether the size changed or not.\n   */\n  protected sizeChanged(prevSize: Size, newSize: Size): boolean {\n    return (\n      prevSize.width !== newSize.width || prevSize.height !== newSize.height\n    );\n  }\n\n  /**\n   * Resize the DOM content container.\n   * @param width\n   * @param height\n   */\n  public resizeElement(width: number, height: number): void {\n    // The most valuable size is the content size.\n    if (\n      this.props.type != ItemType.LINE_ITEM &&\n      this.props.type != ItemType.NETWORK_LINK\n    ) {\n      this.childElementRef.style.width = width > 0 ? `${width}px` : \"\";\n      this.childElementRef.style.height = height > 0 ? `${height}px` : \"\";\n    }\n\n    if (this.props.label && this.props.label.length > 0) {\n      // Ugly table to show the label as its legacy counterpart.\n      const tables = this.labelElementRef.getElementsByTagName(\"table\");\n      const table = tables.length > 0 ? tables.item(0) : null;\n\n      if (table) {\n        switch (this.props.labelPosition) {\n          case \"up\":\n          case \"down\":\n            table.style.width = width > 0 ? `${width}px` : \"\";\n            break;\n          case \"left\":\n          case \"right\":\n            table.style.height = height > 0 ? `${height}px` : \"\";\n            break;\n        }\n      }\n    }\n  }\n\n  /**\n   * Update the size into the properties and resize the DOM container.\n   * @param width\n   * @param height\n   */\n  public resize(width: number, height: number): void {\n    this.resizeElement(width, height);\n    this.itemProps = {\n      ...this.props, // Object spread: http://es6-features.org/#SpreadOperator\n      width,\n      height\n    };\n  }\n\n  /**\n   * To add an event handler to the click of the linked visual console elements.\n   * @param listener Function which is going to be executed when a linked console is clicked.\n   */\n  public onClick(listener: Listener<ItemClickEvent>): Disposable {\n    /*\n     * The '.on' function returns a function which will clean the event\n     * listener when executed. We store all the 'dispose' functions to\n     * call them when the item should be cleared.\n     */\n    const disposable = this.clickEventManager.on(listener);\n    this.disposables.push(disposable);\n\n    return disposable;\n  }\n\n  /**\n   * To add an event handler to the double click of the linked visual console elements.\n   * @param listener Function which is going to be executed when a linked console is double clicked.\n   */\n  public onDblClick(listener: Listener<ItemClickEvent>): Disposable {\n    /*\n     * The '.on' function returns a function which will clean the event\n     * listener when executed. We store all the 'dispose' functions to\n     * call them when the item should be cleared.\n     */\n    const disposable = this.dblClickEventManager.on(listener);\n    this.disposables.push(disposable);\n\n    return disposable;\n  }\n\n  /**\n   * To add an event handler to the movement of visual console elements.\n   * @param listener Function which is going to be executed when a linked console is moved.\n   */\n  public onMoved(listener: Listener<ItemMovedEvent>): Disposable {\n    /*\n     * The '.on' function returns a function which will clean the event\n     * listener when executed. We store all the 'dispose' functions to\n     * call them when the item should be cleared.\n     */\n    const disposable = this.movedEventManager.on(listener);\n    this.disposables.push(disposable);\n\n    return disposable;\n  }\n\n  /**\n   * To add an event handler to the movement stopped of visual console elements.\n   * @param listener Function which is going to be executed when a linked console's movement is finished.\n   */\n  public onMovementFinished(listener: Listener<ItemMovedEvent>): Disposable {\n    /*\n     * The '.on' function returns a function which will clean the event\n     * listener when executed. We store all the 'dispose' functions to\n     * call them when the item should be cleared.\n     */\n    const disposable = this.movementFinishedEventManager.on(listener);\n    this.disposables.push(disposable);\n\n    return disposable;\n  }\n\n  /**\n   * To add an event handler to the resizement of visual console elements.\n   * @param listener Function which is going to be executed when a linked console is moved.\n   */\n  public onResized(listener: Listener<ItemResizedEvent>): Disposable {\n    /*\n     * The '.on' function returns a function which will clean the event\n     * listener when executed. We store all the 'dispose' functions to\n     * call them when the item should be cleared.\n     */\n    const disposable = this.resizedEventManager.on(listener);\n    this.disposables.push(disposable);\n\n    return disposable;\n  }\n\n  /**\n   * To add an event handler to the resizement finish of visual console elements.\n   * @param listener Function which is going to be executed when a linked console is finished resizing.\n   */\n  public onResizeFinished(listener: Listener<ItemResizedEvent>): Disposable {\n    /*\n     * The '.on' function returns a function which will clean the event\n     * listener when executed. We store all the 'dispose' functions to\n     * call them when the item should be cleared.\n     */\n    const disposable = this.resizeFinishedEventManager.on(listener);\n    this.disposables.push(disposable);\n\n    return disposable;\n  }\n\n  /**\n   * To add an event handler to the removal of the item.\n   * @param listener Function which is going to be executed when a item is removed.\n   */\n  public onRemove(listener: Listener<ItemRemoveEvent>): Disposable {\n    /*\n     * The '.on' function returns a function which will clean the event\n     * listener when executed. We store all the 'dispose' functions to\n     * call them when the item should be cleared.\n     */\n    const disposable = this.removeEventManager.on(listener);\n    this.disposables.push(disposable);\n\n    return disposable;\n  }\n\n  /**\n   * To add an event handler to item selection.\n   * @param listener Function which is going to be executed when a item is removed.\n   */\n  public onSelectionChanged(\n    listener: Listener<ItemSelectionChangedEvent>\n  ): Disposable {\n    /*\n     * The '.on' function returns a function which will clean the event\n     * listener when executed. We store all the 'dispose' functions to\n     * call them when the item should be cleared.\n     */\n    const disposable = this.selectionChangedEventManager.on(listener);\n    this.disposables.push(disposable);\n\n    return disposable;\n  }\n\n  /**\n   * Select an item.\n   * @param itemId Item Id.\n   * @param unique To remove the selection of other items or not.\n   */\n  public selectItem(): void {\n    this.meta = {\n      ...this.meta,\n      isSelected: true\n    };\n\n    this.initMovementListener(this.elementRef);\n    if (\n      this.props.type !== ItemType.LINE_ITEM &&\n      this.props.type !== ItemType.NETWORK_LINK\n    ) {\n      this.initResizementListener(this.elementRef);\n    }\n  }\n\n  /**\n   * Unselect an item.\n   * @param itemId Item Id.\n   */\n  public unSelectItem(): void {\n    this.meta = {\n      ...this.meta,\n      isSelected: false\n    };\n\n    this.stopMovementListener();\n    if (this.props.type !== ItemType.LINE_ITEM) {\n      this.stopResizementListener();\n    }\n  }\n\n  // TODO: Document\n  public getFormContainer(): FormContainer {\n    return VisualConsoleItem.getFormContainer(this.props);\n  }\n\n  // TODO: Document\n  public static getFormContainer(props: Partial<ItemProps>): FormContainer {\n    const title: string = props.type ? titleItem(props.type) : t(\"Item\");\n    return new FormContainer(title, [], []);\n  }\n}\n\nexport default VisualConsoleItem;\n","import { AnyObject, WithModuleProps } from \"../lib/types\";\nimport { modulePropsDecoder, decodeBase64, stringIsEmpty, t } from \"../lib\";\nimport Item, { ItemType, ItemProps, itemBasePropsDecoder } from \"../Item\";\n\nexport type BarsGraphProps = {\n  type: ItemType.BARS_GRAPH;\n  html: string;\n  backgroundColor: \"white\" | \"black\" | \"transparent\";\n  typeGraph: \"horizontal\" | \"vertical\";\n  gridColor: string;\n} & ItemProps &\n  WithModuleProps;\n\n/**\n * Extract a valid enum value from a raw unknown value.\n * @param BarsGraphProps Raw value.\n */\nconst parseBarsGraphProps = (\n  backgroundColor: unknown\n): BarsGraphProps[\"backgroundColor\"] => {\n  switch (backgroundColor) {\n    case \"white\":\n    case \"black\":\n    case \"transparent\":\n      return backgroundColor;\n    default:\n      return \"transparent\";\n  }\n};\n\n/**\n * Extract a valid enum value from a raw unknown value.\n * @param typeGraph Raw value.\n */\nconst parseTypeGraph = (typeGraph: unknown): BarsGraphProps[\"typeGraph\"] => {\n  switch (typeGraph) {\n    case \"horizontal\":\n    case \"vertical\":\n      return typeGraph;\n    default:\n      return \"vertical\";\n  }\n};\n\n/**\n * Build a valid typed object from a raw object.\n * This will allow us to ensure the type safety.\n *\n * @param data Raw object.\n * @return An object representing the bars graph props.\n * @throws Will throw a TypeError if some property\n * is missing from the raw object or have an invalid type.\n */\nexport function barsGraphPropsDecoder(data: AnyObject): BarsGraphProps | never {\n  if (stringIsEmpty(data.html) && stringIsEmpty(data.encodedHtml)) {\n    throw new TypeError(\"missing html content.\");\n  }\n\n  return {\n    ...itemBasePropsDecoder(data), // Object spread. It will merge the properties of the two objects.\n    type: ItemType.BARS_GRAPH,\n    html: !stringIsEmpty(data.html)\n      ? data.html\n      : decodeBase64(data.encodedHtml),\n    backgroundColor: parseBarsGraphProps(data.backgroundColor),\n    typeGraph: parseTypeGraph(data.typeGraph),\n    gridColor: stringIsEmpty(data.gridColor) ? \"#000000\" : data.gridColor,\n    ...modulePropsDecoder(data) // Object spread. It will merge the properties of the two objects.\n  };\n}\n\nexport default class BarsGraph extends Item<BarsGraphProps> {\n  protected createDomElement(): HTMLElement {\n    const element = document.createElement(\"div\");\n    element.innerHTML = this.props.html;\n    element.className = \"bars-graph\";\n    if (\n      this.props.agentDisabled === true ||\n      this.props.moduleDisabled === true\n    ) {\n      element.style.opacity = \"0.2\";\n    }\n\n    // Hack to execute the JS after the HTML is added to the DOM.\n    const scripts = element.getElementsByTagName(\"script\");\n    for (let i = 0; i < scripts.length; i++) {\n      if (scripts[i].src.length === 0) {\n        setTimeout(() => {\n          try {\n            eval(scripts[i].innerHTML.trim());\n          } catch (ignored) {} // eslint-disable-line no-empty\n        }, 0);\n      }\n    }\n\n    return element;\n  }\n\n  protected updateDomElement(element: HTMLElement): void {\n    element.innerHTML = this.props.html;\n\n    if (\n      this.props.agentDisabled === true ||\n      this.props.moduleDisabled === true\n    ) {\n      element.style.opacity = \"0.2\";\n    }\n\n    // Hack to execute the JS after the HTML is added to the DOM.\n    const scripts = element.getElementsByTagName(\"script\");\n    for (let i = 0; i < scripts.length; i++) {\n      if (scripts[i].src.length === 0) {\n        eval(scripts[i].innerHTML.trim());\n      }\n    }\n  }\n}\n","import {\n  LinkedVisualConsoleProps,\n  AnyObject,\n  WithModuleProps\n} from \"../lib/types\";\nimport {\n  linkedVCPropsDecoder,\n  modulePropsDecoder,\n  decodeBase64,\n  stringIsEmpty,\n  parseIntOr\n} from \"../lib\";\nimport Item, { ItemType, ItemProps, itemBasePropsDecoder } from \"../Item\";\n\nexport type BasicChartProps = {\n  type: ItemType.BASIC_CHART;\n  html: string;\n  period: number | null;\n  value: number | null;\n  status: string;\n  moduleNameColor: string;\n} & ItemProps &\n  WithModuleProps &\n  LinkedVisualConsoleProps;\n\n/**\n * Build a valid typed object from a raw object.\n * This will allow us to ensure the type safety.\n *\n * @param data Raw object.\n * @return An object representing the basic chart props.\n * @throws Will throw a TypeError if some property\n * is missing from the raw object or have an invalid type.\n */\nexport function basicChartPropsDecoder(\n  data: AnyObject\n): BasicChartProps | never {\n  if (stringIsEmpty(data.html) && stringIsEmpty(data.encodedHtml)) {\n    throw new TypeError(\"missing html content.\");\n  }\n\n  return {\n    ...itemBasePropsDecoder(data), // Object spread. It will merge the properties of the two objects.\n    type: ItemType.BASIC_CHART,\n    html: !stringIsEmpty(data.html)\n      ? data.html\n      : decodeBase64(data.encodedHtml),\n    period: parseIntOr(data.period, null),\n    value: parseFloat(data.value),\n    status: stringIsEmpty(data.status) ? \"#B2B2B2\" : data.status,\n    moduleNameColor: stringIsEmpty(data.moduleNameColor)\n      ? \"#3f3f3f\"\n      : data.moduleNameColor,\n    ...modulePropsDecoder(data), // Object spread. It will merge the properties of the two objects.\n    ...linkedVCPropsDecoder(data) // Object spread. It will merge the properties of the two objects.\n  };\n}\n\nexport default class BasicChart extends Item<BasicChartProps> {\n  protected createDomElement(): HTMLElement {\n    const element = document.createElement(\"div\");\n\n    const header = document.createElement(\"div\");\n    header.className = \"basic-chart-header\";\n\n    const moduleName = document.createElement(\"h2\");\n    moduleName.className = \"basic-chart-header-name\";\n    moduleName.textContent = this.props.moduleName;\n    moduleName.style.color = `${this.props.moduleNameColor}`;\n    header.appendChild(moduleName);\n\n    let value = \"\";\n    if (this.props.value !== null) {\n      value = this.numberFormat(this.props.value, false, \"\", 2, 1000);\n    }\n\n    const moduleValue = document.createElement(\"h2\");\n    moduleValue.className = \"basic-chart-header-value\";\n    moduleValue.textContent = `${value}`;\n    moduleValue.style.color = this.props.status;\n    header.appendChild(moduleValue);\n\n    element.innerHTML = this.props.html;\n    element.className = \"basic-chart\";\n    if (\n      this.props.agentDisabled === true ||\n      this.props.moduleDisabled === true\n    ) {\n      element.style.opacity = \"0.2\";\n    }\n\n    // Remove the overview graph.\n    const legendP = element.getElementsByTagName(\"p\");\n    for (let i = 0; i < legendP.length; i++) {\n      legendP[i].style.margin = \"0px\";\n    }\n\n    // Remove the overview graph.\n    const overviewGraphs = element.getElementsByClassName(\"overview_graph\");\n    for (let i = 0; i < overviewGraphs.length; i++) {\n      overviewGraphs[i].remove();\n    }\n\n    // Hack to execute the JS after the HTML is added to the DOM.\n    const scripts = element.getElementsByTagName(\"script\");\n    for (let i = 0; i < scripts.length; i++) {\n      if (scripts[i].src.length === 0) {\n        setTimeout(() => {\n          try {\n            eval(scripts[i].innerHTML.trim());\n          } catch (ignored) {} // eslint-disable-line no-empty\n        }, 0);\n      }\n    }\n\n    element.innerHTML = this.props.html;\n    element.insertBefore(header, element.firstChild);\n\n    return element;\n  }\n\n  protected updateDomElement(element: HTMLElement): void {\n    const header = document.createElement(\"div\");\n    header.className = \"basic-chart-header\";\n\n    const moduleName = document.createElement(\"h2\");\n    moduleName.className = \"basic-chart-header-name\";\n    moduleName.textContent = this.props.moduleName;\n    moduleName.style.color = `${this.props.moduleNameColor}`;\n    header.appendChild(moduleName);\n\n    let value = \"\";\n    if (this.props.value !== null) {\n      value = this.numberFormat(this.props.value, false, \"\", 2, 1000);\n    }\n\n    const moduleValue = document.createElement(\"h2\");\n    moduleValue.className = \"basic-chart-header-value\";\n    moduleValue.textContent = `${value}`;\n    moduleValue.style.color = this.props.status;\n    header.appendChild(moduleValue);\n\n    element.innerHTML = this.props.html;\n    element.insertBefore(header, element.firstChild);\n\n    // Remove the overview graph.\n    const legendP = element.getElementsByTagName(\"p\");\n    for (let i = 0; i < legendP.length; i++) {\n      legendP[i].style.margin = \"0px\";\n    }\n\n    // Remove the overview graph.\n    const overviewGraphs = element.getElementsByClassName(\"overview_graph\");\n    for (let i = 0; i < overviewGraphs.length; i++) {\n      overviewGraphs[i].remove();\n    }\n\n    // Hack to execute the JS after the HTML is added to the DOM.\n    const scripts = element.getElementsByTagName(\"script\");\n    for (let i = 0; i < scripts.length; i++) {\n      if (scripts[i].src.length === 0) {\n        eval(scripts[i].innerHTML.trim());\n      }\n    }\n  }\n\n  protected numberFormat(\n    number: number,\n    forceInteger: boolean,\n    unit: string,\n    shortData: number,\n    divisor: number\n  ) {\n    divisor = typeof divisor !== \"undefined\" ? divisor : 1000;\n    var decimals = 2;\n\n    // Set maximum decimal precision to 99 in case shortData is not set.\n    if (!shortData) {\n      shortData = 99;\n    }\n\n    if (forceInteger) {\n      if (Math.round(number) != number) {\n        return \"\";\n      }\n    } else {\n      shortData++;\n      const auxDecimals = this.pad(\"1\", shortData, 0);\n      number =\n        Math.round(number * Number.parseInt(auxDecimals)) /\n        Number.parseInt(auxDecimals);\n    }\n\n    var shorts = [\"\", \"K\", \"M\", \"G\", \"T\", \"P\", \"E\", \"Z\", \"Y\"];\n    var pos = 0;\n\n    while (Math.abs(number) >= divisor) {\n      // As long as the number can be divided by 1000 or 1024.\n      pos++;\n      number = number / divisor;\n    }\n\n    if (divisor) {\n      number = Math.round(number * decimals) / decimals;\n    } else {\n      number = Math.round(number * decimals);\n    }\n\n    if (isNaN(number)) {\n      number = 0;\n    }\n\n    return number + \" \" + shorts[pos] + unit;\n  }\n\n  protected pad(input: string, length: number, padding: number): string {\n    var str = input + \"\";\n    return length <= str.length\n      ? str\n      : this.pad(str + padding, length, padding);\n  }\n}\n","import {\n  LinkedVisualConsoleProps,\n  AnyObject,\n  WithModuleProps\n} from \"../lib/types\";\nimport {\n  linkedVCPropsDecoder,\n  modulePropsDecoder,\n  decodeBase64,\n  stringIsEmpty,\n  t\n} from \"../lib\";\nimport Item, { ItemType, ItemProps, itemBasePropsDecoder } from \"../Item\";\n\nexport type DonutGraphProps = {\n  type: ItemType.DONUT_GRAPH;\n  html: string;\n  legendBackgroundColor: string;\n} & ItemProps &\n  WithModuleProps &\n  LinkedVisualConsoleProps;\n\n/**\n * Build a valid typed object from a raw object.\n * This will allow us to ensure the type safety.\n *\n * @param data Raw object.\n * @return An object representing the donut graph props.\n * @throws Will throw a TypeError if some property\n * is missing from the raw object or have an invalid type.\n */\nexport function donutGraphPropsDecoder(\n  data: AnyObject\n): DonutGraphProps | never {\n  if (stringIsEmpty(data.html) && stringIsEmpty(data.encodedHtml)) {\n    throw new TypeError(\"missing html content.\");\n  }\n\n  return {\n    ...itemBasePropsDecoder(data), // Object spread. It will merge the properties of the two objects.\n    type: ItemType.DONUT_GRAPH,\n    html: !stringIsEmpty(data.html)\n      ? data.html\n      : decodeBase64(data.encodedHtml),\n    legendBackgroundColor: stringIsEmpty(data.legendBackgroundColor)\n      ? \"#ffffff\"\n      : data.legendBackgroundColor,\n    ...modulePropsDecoder(data), // Object spread. It will merge the properties of the two objects.\n    ...linkedVCPropsDecoder(data) // Object spread. It will merge the properties of the two objects.\n  };\n}\n\nexport default class DonutGraph extends Item<DonutGraphProps> {\n  protected createDomElement(): HTMLElement {\n    const element = document.createElement(\"div\");\n    element.className = \"donut-graph\";\n    element.innerHTML = this.props.html;\n    element.style.backgroundColor = this.props.legendBackgroundColor;\n\n    if (\n      this.props.agentDisabled === true ||\n      this.props.moduleDisabled === true\n    ) {\n      element.style.opacity = \"0.2\";\n    }\n\n    // Hack to execute the JS after the HTML is added to the DOM.\n    const scripts = element.getElementsByTagName(\"script\");\n    for (let i = 0; i < scripts.length; i++) {\n      if (scripts[i].src.length === 0) {\n        setTimeout(() => {\n          try {\n            eval(scripts[i].innerHTML.trim());\n          } catch (ignored) {} // eslint-disable-line no-empty\n        }, 0);\n      }\n    }\n\n    return element;\n  }\n\n  protected updateDomElement(element: HTMLElement): void {\n    element.innerHTML = this.props.html;\n    element.style.backgroundColor = this.props.legendBackgroundColor;\n\n    if (\n      this.props.agentDisabled === true ||\n      this.props.moduleDisabled === true\n    ) {\n      element.style.opacity = \"0.2\";\n    }\n\n    // Hack to execute the JS after the HTML is added to the DOM.\n    const scripts = element.getElementsByTagName(\"script\");\n    for (let i = 0; i < scripts.length; i++) {\n      if (scripts[i].src.length === 0) {\n        eval(scripts[i].innerHTML.trim());\n      }\n    }\n  }\n}\n","import { AnyObject, WithModuleProps } from \"../lib/types\";\nimport {\n  modulePropsDecoder,\n  parseIntOr,\n  decodeBase64,\n  stringIsEmpty,\n  t\n} from \"../lib\";\nimport Item, { ItemType, ItemProps, itemBasePropsDecoder } from \"../Item\";\n\nexport type EventsHistoryProps = {\n  type: ItemType.AUTO_SLA_GRAPH;\n  maxTime: number | null;\n  legendColor: string;\n  html: string;\n} & ItemProps &\n  WithModuleProps;\n\n/**\n * Build a valid typed object from a raw object.\n * This will allow us to ensure the type safety.\n *\n * @param data Raw object.\n * @return An object representing the events history props.\n * @throws Will throw a TypeError if some property\n * is missing from the raw object or have an invalid type.\n */\nexport function eventsHistoryPropsDecoder(\n  data: AnyObject\n): EventsHistoryProps | never {\n  if (stringIsEmpty(data.html) && stringIsEmpty(data.encodedHtml)) {\n    throw new TypeError(\"missing html content.\");\n  }\n\n  return {\n    ...itemBasePropsDecoder(data), // Object spread. It will merge the properties of the two objects.\n    type: ItemType.AUTO_SLA_GRAPH,\n    maxTime: parseIntOr(data.maxTime, null),\n    legendColor: data.legendColor,\n    html: !stringIsEmpty(data.html)\n      ? data.html\n      : decodeBase64(data.encodedHtml),\n    ...modulePropsDecoder(data) // Object spread. It will merge the properties of the two objects.\n  };\n}\n\nexport default class EventsHistory extends Item<EventsHistoryProps> {\n  protected createDomElement(): HTMLElement {\n    const element = document.createElement(\"div\");\n    element.className = \"events-history\";\n    element.innerHTML = this.props.html;\n\n    if (\n      this.props.agentDisabled === true ||\n      this.props.moduleDisabled === true\n    ) {\n      element.style.opacity = \"0.2\";\n    }\n\n    // Hack to execute the JS after the HTML is added to the DOM.\n    const scripts = element.getElementsByTagName(\"script\");\n    for (let i = 0; i < scripts.length; i++) {\n      if (scripts[i].src.length === 0) {\n        setTimeout(() => {\n          try {\n            eval(scripts[i].innerHTML.trim());\n          } catch (ignored) {} // eslint-disable-line no-empty\n        }, 0);\n      }\n    }\n\n    var flotText = element.getElementsByClassName(\n      \"noresizevc\"\n    ) as HTMLCollectionOf<HTMLElement>;\n    flotText[0].style.color = this.props.legendColor;\n\n    return element;\n  }\n\n  protected updateDomElement(element: HTMLElement): void {\n    element.innerHTML = this.props.html;\n\n    // Hack to execute the JS after the HTML is added to the DOM.\n    const aux = document.createElement(\"div\");\n    aux.innerHTML = this.props.html;\n    const scripts = aux.getElementsByTagName(\"script\");\n    for (let i = 0; i < scripts.length; i++) {\n      if (scripts[i].src.length === 0) {\n        eval(scripts[i].innerHTML.trim());\n      }\n    }\n\n    var flotText = element.getElementsByClassName(\n      \"noresizevc\"\n    ) as HTMLCollectionOf<HTMLElement>;\n    flotText[0].style.color = this.props.legendColor;\n  }\n}\n","import {\n  LinkedVisualConsoleProps,\n  AnyObject,\n  WithModuleProps\n} from \"../lib/types\";\nimport {\n  linkedVCPropsDecoder,\n  modulePropsDecoder,\n  decodeBase64,\n  stringIsEmpty,\n  parseIntOr\n} from \"../lib\";\nimport Item, { ItemType, ItemProps, itemBasePropsDecoder } from \"../Item\";\n\nexport type ModuleGraphProps = {\n  type: ItemType.MODULE_GRAPH;\n  html: string;\n  backgroundType: \"white\" | \"black\" | \"transparent\";\n  graphType: \"line\" | \"area\";\n  period: number | null;\n  customGraphId: number | null;\n} & ItemProps &\n  WithModuleProps &\n  LinkedVisualConsoleProps;\n\n/**\n * Extract a valid enum value from a raw unknown value.\n * @param backgroundType Raw value.\n */\nconst parseBackgroundType = (\n  backgroundType: unknown\n): ModuleGraphProps[\"backgroundType\"] => {\n  switch (backgroundType) {\n    case \"white\":\n    case \"black\":\n    case \"transparent\":\n      return backgroundType;\n    default:\n      return \"transparent\";\n  }\n};\n\n/**\n * Extract a valid enum value from a raw unknown value.\n * @param graphType Raw value.\n */\nconst parseGraphType = (graphType: unknown): ModuleGraphProps[\"graphType\"] => {\n  switch (graphType) {\n    case \"line\":\n    case \"area\":\n      return graphType;\n    default:\n      return \"line\";\n  }\n};\n\n/**\n * Build a valid typed object from a raw object.\n * This will allow us to ensure the type safety.\n *\n * @param data Raw object.\n * @return An object representing the module graph props.\n * @throws Will throw a TypeError if some property\n * is missing from the raw object or have an invalid type.\n */\nexport function moduleGraphPropsDecoder(\n  data: AnyObject\n): ModuleGraphProps | never {\n  if (stringIsEmpty(data.html) && stringIsEmpty(data.encodedHtml)) {\n    throw new TypeError(\"missing html content.\");\n  }\n\n  return {\n    ...itemBasePropsDecoder(data), // Object spread. It will merge the properties of the two objects.\n    type: ItemType.MODULE_GRAPH,\n    html: !stringIsEmpty(data.html)\n      ? data.html\n      : decodeBase64(data.encodedHtml),\n    backgroundType: parseBackgroundType(data.backgroundType),\n    period: parseIntOr(data.period, null),\n    graphType: parseGraphType(data.graphType),\n    customGraphId: parseIntOr(data.customGraphId, null),\n    ...modulePropsDecoder(data), // Object spread. It will merge the properties of the two objects.\n    ...linkedVCPropsDecoder(data) // Object spread. It will merge the properties of the two objects.\n  };\n}\n\nexport default class ModuleGraph extends Item<ModuleGraphProps> {\n  protected createDomElement(): HTMLElement {\n    const element = document.createElement(\"div\");\n\n    element.innerHTML = this.props.html;\n    element.className = \"module-graph\";\n    if (\n      this.props.agentDisabled === true ||\n      this.props.moduleDisabled === true\n    ) {\n      element.style.opacity = \"0.2\";\n    }\n\n    // Hack to execute the JS after the HTML is added to the DOM.\n    const scripts = element.getElementsByTagName(\"script\");\n    for (let i = 0; i < scripts.length; i++) {\n      if (scripts[i].src.length === 0) {\n        setTimeout(() => {\n          try {\n            eval(scripts[i].innerHTML.trim());\n          } catch (ignored) {} // eslint-disable-line no-empty\n        }, 0);\n      }\n    }\n\n    return element;\n  }\n\n  protected updateDomElement(element: HTMLElement): void {\n    element.innerHTML = this.props.html;\n\n    if (\n      this.props.agentDisabled === true ||\n      this.props.moduleDisabled === true\n    ) {\n      element.style.opacity = \"0.2\";\n    }\n\n    // Hack to execute the JS after the HTML is added to the DOM.\n    const scripts = element.getElementsByTagName(\"script\");\n    for (let i = 0; i < scripts.length; i++) {\n      if (scripts[i].src.length === 0) {\n        eval(scripts[i].innerHTML.trim());\n      }\n    }\n  }\n}\n","import { IconDefinition } from \"@fortawesome/free-solid-svg-icons\";\nimport \"./FontAwesomeIcon.styles.css\";\n\nconst svgNS = \"http://www.w3.org/2000/svg\";\n\ninterface ExtraProps {\n  size?: \"small\" | \"medium\" | \"large\";\n  color?: string;\n  spin?: boolean;\n  pulse?: boolean;\n}\n\nconst fontAwesomeIcon = (\n  iconDefinition: IconDefinition,\n  title: string,\n  { size, color, spin, pulse }: ExtraProps = {}\n): HTMLElement => {\n  const container = document.createElement(\"figure\");\n  container.title = title;\n  container.className = `fa fa-${iconDefinition.iconName}`;\n\n  if (size) container.classList.add(`fa-${size}`);\n\n  if (spin) container.classList.add(\"fa-spin\");\n  else if (pulse) container.classList.add(\"fa-pulse\");\n\n  const icon = document.createElementNS(svgNS, \"svg\");\n  // Auto resize SVG using the view box magic: https://css-tricks.com/scale-svg/\n  icon.setAttribute(\n    \"viewBox\",\n    `0 0 ${iconDefinition.icon[0]} ${iconDefinition.icon[1]}`\n  );\n  if (color) icon.setAttribute(\"fill\", color);\n\n  // Path\n  const path = document.createElementNS(svgNS, \"path\");\n  const pathData =\n    typeof iconDefinition.icon[4] === \"string\"\n      ? iconDefinition.icon[4]\n      : iconDefinition.icon[4][0];\n  path.setAttribute(\"d\", pathData);\n\n  icon.appendChild(path);\n  container.appendChild(icon);\n\n  return container;\n};\n\nexport default fontAwesomeIcon;\n","export interface Listener<T> {\n  (event: T): void;\n}\n\nexport interface Disposable {\n  dispose: () => void;\n}\n\n/** passes through events as they happen. You will not get events from before you start listening */\nexport default class TypedEvent<T> {\n  private listeners: Listener<T>[] = [];\n  private listenersOncer: Listener<T>[] = [];\n\n  public on = (listener: Listener<T>): Disposable => {\n    this.listeners.push(listener);\n    return {\n      dispose: () => this.off(listener)\n    };\n  };\n\n  public once = (listener: Listener<T>): void => {\n    this.listenersOncer.push(listener);\n  };\n\n  public off = (listener: Listener<T>): void => {\n    const callbackIndex = this.listeners.indexOf(listener);\n    if (callbackIndex > -1) this.listeners.splice(callbackIndex, 1);\n  };\n\n  public emit = (event: T): void => {\n    /** Update any general listeners */\n    this.listeners.forEach(listener => listener(event));\n\n    /** Clear the `once` queue */\n    this.listenersOncer.forEach(listener => listener(event));\n    this.listenersOncer = [];\n  };\n\n  public pipe = (te: TypedEvent<T>): Disposable => this.on(e => te.emit(e));\n}\n","import {\n  AnyObject,\n  Position,\n  Size,\n  WithAgentProps,\n  WithModuleProps,\n  LinkedVisualConsoleProps,\n  LinkedVisualConsolePropsStatus,\n  UnknownObject,\n  ItemMeta\n} from \"./types\";\n\nimport helpTipIcon from \"./help-tip.png\";\nimport fontAwesomeIcon from \"./FontAwesomeIcon\";\nimport { faPencilAlt, faListAlt } from \"@fortawesome/free-solid-svg-icons\";\nimport \"./autocomplete.css\";\n\n/**\n * Return a number or a default value from a raw value.\n * @param value Raw value from which we will try to extract a valid number.\n * @param defaultValue Default value to use if we cannot extract a valid number.\n * @return A valid number or the default value.\n */\nexport function parseIntOr<T>(value: unknown, defaultValue: T): number | T {\n  if (typeof value === \"number\") return value;\n  if (typeof value === \"string\" && value.length > 0 && !isNaN(parseInt(value)))\n    return parseInt(value);\n  else return defaultValue;\n}\n\n/**\n * Return a number or a default value from a raw value.\n * @param value Raw value from which we will try to extract a valid number.\n * @param defaultValue Default value to use if we cannot extract a valid number.\n * @return A valid number or the default value.\n */\nexport function parseFloatOr<T>(value: unknown, defaultValue: T): number | T {\n  if (typeof value === \"number\") return value;\n  if (\n    typeof value === \"string\" &&\n    value.length > 0 &&\n    !isNaN(parseFloat(value))\n  )\n    return parseFloat(value);\n  else return defaultValue;\n}\n\n/**\n * Check if a string exists and it's not empty.\n * @param value Value to check.\n * @return The check result.\n */\nexport function stringIsEmpty(value?: string | null): boolean {\n  return value == null || value.length === 0;\n}\n\n/**\n * Return a not empty string or a default value from a raw value.\n * @param value Raw value from which we will try to extract a non empty string.\n * @param defaultValue Default value to use if we cannot extract a non empty string.\n * @return A non empty string or the default value.\n */\nexport function notEmptyStringOr<T>(\n  value: unknown,\n  defaultValue: T\n): string | T {\n  return typeof value === \"string\" && value.length > 0 ? value : defaultValue;\n}\n\n/**\n * Return a boolean from a raw value.\n * @param value Raw value from which we will try to extract the boolean.\n * @return A valid boolean value. false by default.\n */\nexport function parseBoolean(value: unknown): boolean {\n  if (typeof value === \"boolean\") return value;\n  else if (typeof value === \"number\") return value > 0;\n  else if (typeof value === \"string\") return value === \"1\" || value === \"true\";\n  else return false;\n}\n\n/**\n * Return a valid date or a default value from a raw value.\n * @param value Raw value from which we will try to extract a valid date.\n * @param defaultValue Default value to use if we cannot extract a valid date.\n * @return A valid date or the default value.\n */\nexport function parseDateOr<T>(value: unknown, defaultValue: T): Date | T {\n  if (value instanceof Date) return value;\n  else if (typeof value === \"number\") return new Date(value * 1000);\n  else if (\n    typeof value === \"string\" &&\n    !Number.isNaN(new Date(value).getTime())\n  )\n    return new Date(value);\n  else return defaultValue;\n}\n\n/**\n * Pad the current string with another string (multiple times, if needed)\n * until the resulting string reaches the given length.\n * The padding is applied from the start (left) of the current string.\n * @param value Text that needs to be padded.\n * @param length Length of the returned text.\n * @param pad Text to add.\n * @return Padded text.\n */\nexport function leftPad(\n  value: string | number,\n  length: number,\n  pad: string | number = \" \"\n): string {\n  if (typeof value === \"number\") value = `${value}`;\n  if (typeof pad === \"number\") pad = `${pad}`;\n\n  const diffLength = length - value.length;\n  if (diffLength === 0) return value;\n  if (diffLength < 0) return value.substr(Math.abs(diffLength));\n\n  if (diffLength === pad.length) return `${pad}${value}`;\n  if (diffLength < pad.length) return `${pad.substring(0, diffLength)}${value}`;\n\n  const repeatTimes = Math.floor(diffLength / pad.length);\n  const restLength = diffLength - pad.length * repeatTimes;\n\n  let newPad = \"\";\n  for (let i = 0; i < repeatTimes; i++) newPad += pad;\n\n  if (restLength === 0) return `${newPad}${value}`;\n  return `${newPad}${pad.substring(0, restLength)}${value}`;\n}\n\n/* Decoders */\n\n/**\n * Build a valid typed object from a raw object.\n * @param data Raw object.\n * @return An object representing the position.\n */\nexport function positionPropsDecoder(data: AnyObject): Position {\n  return {\n    x: parseIntOr(data.x, 0),\n    y: parseIntOr(data.y, 0)\n  };\n}\n\n/**\n * Build a valid typed object from a raw object.\n * @param data Raw object.\n * @return An object representing the size.\n * @throws Will throw a TypeError if the width and height are not valid numbers.\n */\nexport function sizePropsDecoder(data: AnyObject): Size | never {\n  if (\n    data.width == null ||\n    isNaN(parseInt(data.width)) ||\n    data.height == null ||\n    isNaN(parseInt(data.height))\n  ) {\n    throw new TypeError(\"invalid size.\");\n  }\n\n  return {\n    width: parseInt(data.width),\n    height: parseInt(data.height)\n  };\n}\n\n/**\n * Build a valid typed object from a raw object.\n * @param data Raw object.\n * @return An object representing the agent properties.\n */\nexport function agentPropsDecoder(data: AnyObject): WithAgentProps {\n  const agentProps: WithAgentProps = {\n    agentId: parseIntOr(data.agentId, null),\n    agentName: notEmptyStringOr(data.agentName, null),\n    agentAlias: notEmptyStringOr(data.agentAlias, null),\n    agentDescription: notEmptyStringOr(data.agentDescription, null),\n    agentAddress: notEmptyStringOr(data.agentAddress, null),\n    agentDisabled: parseBoolean(data.agentDisabled)\n  };\n\n  return data.metaconsoleId != null\n    ? {\n        metaconsoleId: data.metaconsoleId,\n        ...agentProps // Object spread: http://es6-features.org/#SpreadOperator\n      }\n    : agentProps;\n}\n\n/**\n * Build a valid typed object from a raw object.\n * @param data Raw object.\n * @return An object representing the module and agent properties.\n */\nexport function modulePropsDecoder(data: AnyObject): WithModuleProps {\n  return {\n    moduleId: parseIntOr(data.moduleId, null),\n    moduleName: notEmptyStringOr(data.moduleName, null),\n    moduleDescription: notEmptyStringOr(data.moduleDescription, null),\n    moduleDisabled: parseBoolean(data.moduleDisabled),\n    ...agentPropsDecoder(data) // Object spread: http://es6-features.org/#SpreadOperator\n  };\n}\n\n/**\n * Build a valid typed object from a raw object.\n * @param data Raw object.\n * @return An object representing the linked visual console properties.\n * @throws Will throw a TypeError if the status calculation properties are invalid.\n */\nexport function linkedVCPropsDecoder(\n  data: AnyObject\n): LinkedVisualConsoleProps | never {\n  let linkedLayoutStatusProps: LinkedVisualConsolePropsStatus = {\n    linkedLayoutStatusType: \"default\"\n  };\n  switch (data.linkedLayoutStatusType) {\n    case \"weight\": {\n      const weight = parseIntOr(data.linkedLayoutStatusTypeWeight, null);\n      if (weight == null)\n        throw new TypeError(\"invalid status calculation properties.\");\n\n      if (data.linkedLayoutStatusTypeWeight)\n        linkedLayoutStatusProps = {\n          linkedLayoutStatusType: \"weight\",\n          linkedLayoutStatusTypeWeight: weight\n        };\n      break;\n    }\n    case \"service\": {\n      const warningThreshold = parseIntOr(\n        data.linkedLayoutStatusTypeWarningThreshold,\n        null\n      );\n      const criticalThreshold = parseIntOr(\n        data.linkedLayoutStatusTypeCriticalThreshold,\n        null\n      );\n      if (warningThreshold == null || criticalThreshold == null) {\n        throw new TypeError(\"invalid status calculation properties.\");\n      }\n\n      linkedLayoutStatusProps = {\n        linkedLayoutStatusType: \"service\",\n        linkedLayoutStatusTypeWarningThreshold: warningThreshold,\n        linkedLayoutStatusTypeCriticalThreshold: criticalThreshold\n      };\n      break;\n    }\n  }\n\n  return {\n    linkedLayoutId: parseIntOr(data.linkedLayoutId, null),\n    linkedLayoutNodeId: parseIntOr(data.linkedLayoutNodeId, null),\n    ...linkedLayoutStatusProps // Object spread: http://es6-features.org/#SpreadOperator\n  };\n}\n\n/**\n * Build a valid typed object from a raw object.\n * @param data Raw object.\n * @return An object representing the item's meta properties.\n */\nexport function itemMetaDecoder(data: UnknownObject): ItemMeta | never {\n  const receivedAt = parseDateOr(data.receivedAt, null);\n  if (receivedAt === null) throw new TypeError(\"invalid meta structure\");\n\n  let error = null;\n  if (data.error instanceof Error) error = data.error;\n  else if (typeof data.error === \"string\") error = new Error(data.error);\n\n  return {\n    receivedAt,\n    error,\n    editMode: parseBoolean(data.editMode),\n    maintenanceMode: parseBoolean(data.maintenanceMode),\n    isFromCache: parseBoolean(data.isFromCache),\n    isFetching: false,\n    isUpdating: false,\n    isBeingMoved: false,\n    isBeingResized: false,\n    isSelected: false,\n    lineMode: false\n  };\n}\n\n/**\n * To get a CSS rule with the most used prefixes.\n * @param ruleName Name of the CSS rule.\n * @param ruleValue Value of the CSS rule.\n * @return An array of rules with the prefixes applied.\n */\nexport function prefixedCssRules(\n  ruleName: string,\n  ruleValue: string\n): string[] {\n  const rule = `${ruleName}: ${ruleValue};`;\n  return [\n    `-webkit-${rule}`,\n    `-moz-${rule}`,\n    `-ms-${rule}`,\n    `-o-${rule}`,\n    `${rule}`\n  ];\n}\n\n/**\n * Decode a base64 string.\n * @param input Data encoded using base64.\n * @return Decoded data.\n */\nexport function decodeBase64(input: string): string {\n  return decodeURIComponent(escape(window.atob(input)));\n}\n\n/**\n * Generate a date representation with the format 'd/m/Y'.\n * @param initialDate Date to be used instead of a generated one.\n * @param locale Locale to use if localization is required and available.\n * @example 24/02/2020.\n * @return Date representation.\n */\nexport function humanDate(date: Date, locale: string | null = null): string {\n  if (locale && Intl && Intl.DateTimeFormat) {\n    // Format using the user locale.\n    const options: Intl.DateTimeFormatOptions = {\n      day: \"2-digit\",\n      month: \"2-digit\",\n      year: \"numeric\"\n    };\n    return Intl.DateTimeFormat(locale, options).format(date);\n  } else {\n    // Use getDate, getDay returns the week day.\n    const day = leftPad(date.getDate(), 2, 0);\n    // The getMonth function returns the month starting by 0.\n    const month = leftPad(date.getMonth() + 1, 2, 0);\n    const year = leftPad(date.getFullYear(), 4, 0);\n\n    // Format: 'd/m/Y'.\n    return `${day}/${month}/${year}`;\n  }\n}\n\n/**\n * Generate a time representation with the format 'hh:mm:ss'.\n * @param initialDate Date to be used instead of a generated one.\n * @example 01:34:09.\n * @return Time representation.\n */\nexport function humanTime(date: Date): string {\n  const hours = leftPad(date.getHours(), 2, 0);\n  const minutes = leftPad(date.getMinutes(), 2, 0);\n  const seconds = leftPad(date.getSeconds(), 2, 0);\n\n  return `${hours}:${minutes}:${seconds}`;\n}\n\ninterface Macro {\n  macro: string | RegExp;\n  value: string;\n}\n/**\n * Replace the macros of a text.\n * @param macros List of macros and their replacements.\n * @param text Text in which we need to replace the macros.\n */\nexport function replaceMacros(macros: Macro[], text: string): string {\n  return macros.reduce(\n    (acc, { macro, value }) => acc.replace(macro, value),\n    text\n  );\n}\n\n/**\n * Create a function which will limit the rate of execution of\n * the selected function to one time for the selected interval.\n * @param delay Interval.\n * @param fn Function to be executed at a limited rate.\n */\nexport function throttle<T, R>(delay: number, fn: (...args: T[]) => R) {\n  let last = 0;\n  return (...args: T[]) => {\n    const now = Date.now();\n    if (now - last < delay) return;\n    last = now;\n    return fn(...args);\n  };\n}\n\n/**\n * Create a function which will call the selected function only\n * after the interval time has passed after its last execution.\n * @param delay Interval.\n * @param fn Function to be executed after the last call.\n */\nexport function debounce<T>(delay: number, fn: (...args: T[]) => void) {\n  let timerRef: number | null = null;\n  return (...args: T[]) => {\n    if (timerRef !== null) window.clearTimeout(timerRef);\n    timerRef = window.setTimeout(() => {\n      fn(...args);\n      timerRef = null;\n    }, delay);\n  };\n}\n\n/**\n * Retrieve the offset of an element relative to the page.\n * @param el Node used to calculate the offset.\n */\nfunction getOffset(el: HTMLElement | null, parent?: HTMLElement) {\n  let x = 0;\n  let y = 0;\n  while (\n    el &&\n    !Number.isNaN(el.offsetLeft) &&\n    !Number.isNaN(el.offsetTop) &&\n    el !== parent\n  ) {\n    x += el.offsetLeft - el.scrollLeft;\n    y += el.offsetTop - el.scrollTop;\n    el = el.offsetParent as HTMLElement | null;\n  }\n  return { top: y, left: x };\n}\n\n/**\n * Add the grab & move functionality to a certain element inside it's container.\n *\n * @param element Element to move.\n * @param onMoved Function to execute when the element moves.\n * @param altContainer Alternative element to contain the moved element.\n *\n * @return A function which will clean the event handlers when executed.\n */\nexport function addMovementListener(\n  element: HTMLElement,\n  onMoved: (x: Position[\"x\"], y: Position[\"y\"]) => void,\n  altContainer?: HTMLElement\n): Function {\n  const container = altContainer || (element.parentElement as HTMLElement);\n\n  // Store the initial draggable state.\n  const isDraggable = element.draggable;\n  // Init the coordinates.\n  let lastX: Position[\"x\"] = 0;\n  let lastY: Position[\"y\"] = 0;\n  let lastMouseX: Position[\"x\"] = 0;\n  let lastMouseY: Position[\"y\"] = 0;\n  let mouseElementOffsetX: Position[\"x\"] = 0;\n  let mouseElementOffsetY: Position[\"y\"] = 0;\n  // Bounds.\n  let containerBounds = container.getBoundingClientRect();\n  let containerOffset = getOffset(container);\n  let containerTop = containerOffset.top;\n  let containerBottom = containerTop + containerBounds.height;\n  let containerLeft = containerOffset.left;\n  let containerRight = containerLeft + containerBounds.width;\n  let elementBounds = element.getBoundingClientRect();\n  let borderWidth = window.getComputedStyle(element).borderWidth || \"0\";\n  let borderFix = Number.parseInt(borderWidth) * 2;\n\n  // Will run onMoved 32ms after its last execution.\n  const debouncedMovement = debounce(32, onMoved);\n  // Will run onMoved one time max every 16ms.\n  const throttledMovement = throttle(16, onMoved);\n\n  const handleMove = (e: MouseEvent) => {\n    // Calculate the new element coordinates.\n    let x = 0;\n    let y = 0;\n\n    const mouseX = e.pageX;\n    const mouseY = e.pageY;\n    const mouseDeltaX = mouseX - lastMouseX;\n    const mouseDeltaY = mouseY - lastMouseY;\n\n    const minX = 0;\n    const maxX = containerBounds.width - elementBounds.width + borderFix;\n    const minY = 0;\n    const maxY = containerBounds.height - elementBounds.height + borderFix;\n\n    const outOfBoundsLeft =\n      mouseX < containerLeft ||\n      (lastX === 0 &&\n        mouseDeltaX > 0 &&\n        mouseX < containerLeft + mouseElementOffsetX);\n    const outOfBoundsRight =\n      mouseX > containerRight ||\n      mouseDeltaX + lastX + elementBounds.width - borderFix >\n        containerBounds.width ||\n      (lastX === maxX &&\n        mouseDeltaX < 0 &&\n        mouseX > containerLeft + maxX + mouseElementOffsetX);\n    const outOfBoundsTop =\n      mouseY < containerTop ||\n      (lastY === 0 &&\n        mouseDeltaY > 0 &&\n        mouseY < containerTop + mouseElementOffsetY);\n    const outOfBoundsBottom =\n      mouseY > containerBottom ||\n      mouseDeltaY + lastY + elementBounds.height - borderFix >\n        containerBounds.height ||\n      (lastY === maxY &&\n        mouseDeltaY < 0 &&\n        mouseY > containerTop + maxY + mouseElementOffsetY);\n\n    if (outOfBoundsLeft) x = minX;\n    else if (outOfBoundsRight) x = maxX;\n    else x = mouseDeltaX + lastX;\n\n    if (outOfBoundsTop) y = minY;\n    else if (outOfBoundsBottom) y = maxY;\n    else y = mouseDeltaY + lastY;\n\n    if (x < 0) x = minX;\n    if (y < 0) y = minY;\n\n    // Store the last mouse coordinates.\n    lastMouseX = mouseX;\n    lastMouseY = mouseY;\n\n    if (x === lastX && y === lastY) return;\n\n    // Run the movement events.\n    throttledMovement(x, y);\n    debouncedMovement(x, y);\n\n    // Store the coordinates of the element.\n    lastX = x;\n    lastY = y;\n  };\n  const handleEnd = () => {\n    // Reset the positions.\n    lastX = 0;\n    lastY = 0;\n    lastMouseX = 0;\n    lastMouseY = 0;\n    // Remove the move event.\n    document.removeEventListener(\"mousemove\", handleMove);\n    // Clean itself.\n    document.removeEventListener(\"mouseup\", handleEnd);\n    // Reset the draggable property to its initial state.\n    element.draggable = isDraggable;\n    // Reset the body selection property to a default state.\n    document.body.style.userSelect = \"auto\";\n  };\n  const handleStart = (e: MouseEvent) => {\n    // Avoid starting the movement on right click.\n    if (e.button === 2) return;\n\n    e.stopPropagation();\n\n    // Disable the drag temporarily.\n    element.draggable = false;\n\n    // Fix for Firefox browser.\n    element.setAttribute(\"ondragstart\", \"return false;\");\n    element.setAttribute(\"draggable\", \"false\");\n\n    // Store the difference between the cursor and\n    // the initial coordinates of the element.\n    const elementOffset = getOffset(element, container);\n    lastX = elementOffset.left;\n    lastY = elementOffset.top;\n\n    // Store the mouse position.\n    lastMouseX = e.pageX;\n    lastMouseY = e.pageY;\n    // Store the relative position between the mouse and the element.\n    mouseElementOffsetX = e.offsetX;\n    mouseElementOffsetY = e.offsetY;\n\n    // Initialize the bounds.\n    containerBounds = container.getBoundingClientRect();\n    containerOffset = getOffset(container);\n    containerTop = containerOffset.top;\n    containerBottom = containerTop + containerBounds.height;\n    containerLeft = containerOffset.left;\n    containerRight = containerLeft + containerBounds.width;\n    elementBounds = element.getBoundingClientRect();\n    borderWidth = window.getComputedStyle(element).borderWidth || \"0\";\n    borderFix = Number.parseInt(borderWidth) * 2;\n\n    // Listen to the mouse movement.\n    document.addEventListener(\"mousemove\", handleMove);\n    // Listen to the moment when the mouse click is not pressed anymore.\n    document.addEventListener(\"mouseup\", handleEnd);\n    // Limit the mouse selection of the body.\n    document.body.style.userSelect = \"none\";\n  };\n\n  // Event to listen the init of the movement.\n  element.addEventListener(\"mousedown\", handleStart);\n\n  // Returns a function to clean the event listeners.\n  return () => {\n    element.removeEventListener(\"mousedown\", handleStart);\n    handleEnd();\n  };\n}\n\n/**\n * Add the grab & resize functionality to a certain element.\n *\n * @param element Element to move.\n * @param onResized Function to execute when the element is resized.\n *\n * @return A function which will clean the event handlers when executed.\n */\nexport function addResizementListener(\n  element: HTMLElement,\n  onResized: (x: Position[\"x\"], y: Position[\"y\"]) => void\n): Function {\n  const minWidth = 15;\n  const minHeight = 15;\n\n  const resizeDraggable = document.createElement(\"div\");\n  resizeDraggable.className = \"resize-draggable\";\n  element.appendChild(resizeDraggable);\n\n  // Container of the resizable element.\n  const container = element.parentElement as HTMLElement;\n  // Store the initial draggable state.\n  const isDraggable = element.draggable;\n  // Init the coordinates.\n  let lastWidth: Size[\"width\"] = 0;\n  let lastHeight: Size[\"height\"] = 0;\n  let lastMouseX: Position[\"x\"] = 0;\n  let lastMouseY: Position[\"y\"] = 0;\n  let mouseElementOffsetX: Position[\"x\"] = 0;\n  let mouseElementOffsetY: Position[\"y\"] = 0;\n  // Init the bounds.\n  let containerBounds = container.getBoundingClientRect();\n  let containerOffset = getOffset(container);\n  let containerTop = containerOffset.top;\n  let containerBottom = containerTop + containerBounds.height;\n  let containerLeft = containerOffset.left;\n  let containerRight = containerLeft + containerBounds.width;\n  let elementOffset = getOffset(element);\n  let elementTop = elementOffset.top;\n  let elementLeft = elementOffset.left;\n  let borderWidth = window.getComputedStyle(element).borderWidth || \"0\";\n  let borderFix = Number.parseInt(borderWidth);\n\n  // Will run onResized 32ms after its last execution.\n  const debouncedResizement = debounce(32, onResized);\n  // Will run onResized one time max every 16ms.\n  const throttledResizement = throttle(16, onResized);\n\n  const handleResize = (e: MouseEvent) => {\n    // Calculate the new element coordinates.\n    let width = lastWidth + (e.pageX - lastMouseX);\n    let height = lastHeight + (e.pageY - lastMouseY);\n\n    if (width === lastWidth && height === lastHeight) return;\n\n    if (\n      width < lastWidth &&\n      e.pageX > elementLeft + (lastWidth - mouseElementOffsetX)\n    )\n      return;\n\n    if (width < minWidth) {\n      // Minimum value.\n      width = minWidth;\n    } else if (width + elementLeft - borderFix / 2 >= containerRight) {\n      // Limit the size to the container.\n      width = containerRight - elementLeft;\n    }\n    if (height < minHeight) {\n      // Minimum value.\n      height = minHeight;\n    } else if (height + elementTop - borderFix / 2 >= containerBottom) {\n      // Limit the size to the container.\n      height = containerBottom - elementTop;\n    }\n\n    // Run the movement events.\n    throttledResizement(width, height);\n    debouncedResizement(width, height);\n\n    // Store the coordinates of the element.\n    lastWidth = width;\n    lastHeight = height;\n    // Store the last mouse coordinates.\n    lastMouseX = e.pageX;\n    lastMouseY = e.pageY;\n  };\n  const handleEnd = () => {\n    // Reset the positions.\n    lastWidth = 0;\n    lastHeight = 0;\n    lastMouseX = 0;\n    lastMouseY = 0;\n    mouseElementOffsetX = 0;\n    mouseElementOffsetY = 0;\n    // Remove the move event.\n    document.removeEventListener(\"mousemove\", handleResize);\n    // Clean itself.\n    document.removeEventListener(\"mouseup\", handleEnd);\n    // Reset the draggable property to its initial state.\n    element.draggable = isDraggable;\n    // Reset the body selection property to a default state.\n    document.body.style.userSelect = \"auto\";\n  };\n  const handleStart = (e: MouseEvent) => {\n    e.stopPropagation();\n\n    // Disable the drag temporarily.\n    element.draggable = false;\n\n    // Store the difference between the cursor and\n    // the initial coordinates of the element.\n    const { width, height } = element.getBoundingClientRect();\n    lastWidth = width;\n    lastHeight = height;\n    // Store the mouse position.\n    lastMouseX = e.pageX;\n    lastMouseY = e.pageY;\n    // Store the relative position between the mouse and the element.\n    mouseElementOffsetX = e.offsetX;\n    mouseElementOffsetY = e.offsetY;\n\n    // Initialize the bounds.\n    containerBounds = container.getBoundingClientRect();\n    containerOffset = getOffset(container);\n    containerTop = containerOffset.top;\n    containerBottom = containerTop + containerBounds.height;\n    containerLeft = containerOffset.left;\n    containerRight = containerLeft + containerBounds.width;\n    elementOffset = getOffset(element);\n    elementTop = elementOffset.top;\n    elementLeft = elementOffset.left;\n\n    // Listen to the mouse movement.\n    document.addEventListener(\"mousemove\", handleResize);\n    // Listen to the moment when the mouse click is not pressed anymore.\n    document.addEventListener(\"mouseup\", handleEnd);\n    // Limit the mouse selection of the body.\n    document.body.style.userSelect = \"none\";\n  };\n\n  // Event to listen the init of the movement.\n  resizeDraggable.addEventListener(\"mousedown\", handleStart);\n\n  // Returns a function to clean the event listeners.\n  return () => {\n    resizeDraggable.remove();\n    handleEnd();\n  };\n}\n\n// TODO: Document and code\nexport function t(text: string): string {\n  return text;\n}\n\nexport function helpTip(text: string): HTMLElement {\n  const container = document.createElement(\"a\");\n  container.className = \"tip\";\n  const icon = document.createElement(\"img\");\n  icon.src = helpTipIcon;\n  icon.className = \"forced_title\";\n  icon.setAttribute(\"alt\", text);\n  icon.setAttribute(\"data-title\", text);\n  icon.setAttribute(\"data-use_title_for_force_title\", \"1\");\n\n  container.appendChild(icon);\n\n  return container;\n}\n\ninterface PeriodSelectorOption {\n  value: number;\n  text: string;\n}\nexport function periodSelector(\n  selectedValue: PeriodSelectorOption[\"value\"] | null,\n  emptyOption: PeriodSelectorOption | null,\n  options: PeriodSelectorOption[],\n  onChange: (value: PeriodSelectorOption[\"value\"]) => void\n): HTMLElement {\n  if (selectedValue === null) selectedValue = 0;\n  const initialValue = emptyOption ? emptyOption.value : 0;\n  let currentValue: number =\n    selectedValue != null ? selectedValue : initialValue;\n  // Main container.\n  const container = document.createElement(\"div\");\n  // Container for the period selector.\n  const periodsContainer = document.createElement(\"div\");\n  const selectPeriods = document.createElement(\"select\");\n  const useManualPeriodsBtn = document.createElement(\"a\");\n  // Container for the custom period input.\n  const manualPeriodsContainer = document.createElement(\"div\");\n  const inputTimeValue = document.createElement(\"input\");\n  const unitsSelect = document.createElement(\"select\");\n  const usePeriodsBtn = document.createElement(\"a\");\n  // Units to multiply the custom period input.\n  const unitOptions: { value: string; text: string }[] = [\n    { value: \"1\", text: t(\"Seconds\").toLowerCase() },\n    { value: \"60\", text: t(\"Minutes\").toLowerCase() },\n    { value: \"3600\", text: t(\"Hours\").toLowerCase() },\n    { value: \"86400\", text: t(\"Days\").toLowerCase() },\n    { value: \"604800\", text: t(\"Weeks\").toLowerCase() },\n    { value: `${86400 * 30}`, text: t(\"Months\").toLowerCase() },\n    { value: `${86400 * 30 * 12}`, text: t(\"Years\").toLowerCase() }\n  ];\n\n  // Will be executed every time the value changes.\n  const handleChange = (value: number) => {\n    currentValue = value;\n    onChange(currentValue);\n  };\n  // Will return the first period option smaller than the value.\n  const findPeriodsOption = (value: number) =>\n    options\n      .sort((a, b) => (a.value < b.value ? 1 : -1))\n      .find(optionVal => value >= optionVal.value);\n  // Will return the first multiple of the value using the custom input multipliers.\n  const findManualPeriodsOptionValue = (value: number) =>\n    unitOptions\n      .map(unitOption => Number.parseInt(unitOption.value))\n      .sort((a, b) => (a < b ? 1 : -1))\n      .find(optionVal => value % optionVal === 0);\n  // Will find and set a valid option for the period selector.\n  const setPeriodsValue = (value: number) => {\n    let option = findPeriodsOption(value);\n    selectPeriods.value = `${option ? option.value : initialValue}`;\n  };\n  // Will transform the value to show the perfect fit for the custom input period.\n  const setManualPeriodsValue = (value: number) => {\n    const optionVal = findManualPeriodsOptionValue(value);\n    if (optionVal) {\n      inputTimeValue.value = `${value / optionVal}`;\n      unitsSelect.value = `${optionVal}`;\n    } else {\n      inputTimeValue.value = `${value}`;\n      unitsSelect.value = \"1\";\n    }\n  };\n\n  // Will modify the value to show the perfect fit for this element and show its container.\n  const showPeriods = () => {\n    let option = findPeriodsOption(currentValue);\n    const newValue = option ? option.value : initialValue;\n    selectPeriods.value = `${newValue}`;\n\n    if (newValue !== currentValue) handleChange(newValue);\n\n    container.replaceChild(periodsContainer, manualPeriodsContainer);\n  };\n  // Will modify the value to show the perfect fit for this element and show its container.\n  const showManualPeriods = () => {\n    const optionVal = findManualPeriodsOptionValue(currentValue);\n\n    if (optionVal) {\n      inputTimeValue.value = `${currentValue / optionVal}`;\n      unitsSelect.value = `${optionVal}`;\n    } else {\n      inputTimeValue.value = `${currentValue}`;\n      unitsSelect.value = \"1\";\n    }\n\n    container.replaceChild(manualPeriodsContainer, periodsContainer);\n  };\n\n  // Append the elements\n\n  periodsContainer.appendChild(selectPeriods);\n  periodsContainer.appendChild(useManualPeriodsBtn);\n\n  manualPeriodsContainer.appendChild(inputTimeValue);\n  manualPeriodsContainer.appendChild(unitsSelect);\n  manualPeriodsContainer.appendChild(usePeriodsBtn);\n\n  if (\n    options.find(option => option.value === selectedValue) ||\n    (emptyOption && emptyOption.value === selectedValue)\n  ) {\n    // Start with the custom periods select.\n    container.appendChild(periodsContainer);\n  } else {\n    // Start with the manual time input\n    container.appendChild(manualPeriodsContainer);\n  }\n\n  // Set and fill the elements.\n\n  // Periods selector.\n\n  selectPeriods.addEventListener(\"change\", (e: Event) =>\n    handleChange(\n      parseIntOr((e.target as HTMLSelectElement).value, initialValue)\n    )\n  );\n  if (emptyOption) {\n    const optionElem = document.createElement(\"option\");\n    optionElem.value = `${emptyOption.value}`;\n    optionElem.text = emptyOption.text;\n    selectPeriods.appendChild(optionElem);\n  }\n  options.forEach(option => {\n    const optionElem = document.createElement(\"option\");\n    optionElem.value = `${option.value}`;\n    optionElem.text = option.text;\n    selectPeriods.appendChild(optionElem);\n  });\n\n  setPeriodsValue(selectedValue);\n\n  useManualPeriodsBtn.appendChild(\n    fontAwesomeIcon(faPencilAlt, t(\"Show manual period input\"), {\n      size: \"small\"\n    })\n  );\n  useManualPeriodsBtn.addEventListener(\"click\", e => {\n    e.preventDefault();\n    showManualPeriods();\n  });\n\n  // Manual periods input.\n\n  inputTimeValue.type = \"number\";\n  inputTimeValue.min = \"0\";\n  inputTimeValue.required = true;\n  inputTimeValue.addEventListener(\"change\", (e: Event) =>\n    handleChange(\n      parseIntOr((e.target as HTMLSelectElement).value, 0) *\n        parseIntOr(unitsSelect.value, 1)\n    )\n  );\n  // Select for time units.\n  unitsSelect.addEventListener(\"change\", (e: Event) =>\n    handleChange(\n      parseIntOr(inputTimeValue.value, 0) *\n        parseIntOr((e.target as HTMLSelectElement).value, 1)\n    )\n  );\n  unitOptions.forEach(option => {\n    const optionElem = document.createElement(\"option\");\n    optionElem.value = `${option.value}`;\n    optionElem.text = option.text;\n    unitsSelect.appendChild(optionElem);\n  });\n\n  setManualPeriodsValue(selectedValue);\n\n  usePeriodsBtn.appendChild(\n    fontAwesomeIcon(faListAlt, t(\"Show periods selector\"), { size: \"small\" })\n  );\n  usePeriodsBtn.addEventListener(\"click\", e => {\n    e.preventDefault();\n    showPeriods();\n  });\n\n  return container;\n}\n\n/**\n * Cuts the text if their length is greater than the selected max length\n * and applies the selected ellipse to the result text.\n * @param str Text to cut\n * @param max Maximum length after cutting the text\n * @param ellipse String to be added to the cutted text\n * @returns Full text or text cutted with the ellipse\n */\nexport function ellipsize(\n  str: string,\n  max: number = 140,\n  ellipse: string = \"…\"\n): string {\n  return str.trim().length > max ? str.substr(0, max).trim() + ellipse : str;\n}\n\n// TODO: Document\nexport function autocompleteInput<T>(\n  initialValue: string | null,\n  onDataRequested: (value: string, done: (data: T[]) => void) => void,\n  renderListElement: (data: T) => HTMLElement,\n  onSelected: (data: T) => string\n): HTMLElement {\n  const container = document.createElement(\"div\");\n  container.classList.add(\"autocomplete\");\n\n  const input = document.createElement(\"input\");\n  input.type = \"text\";\n  input.required = true;\n  if (initialValue !== null) input.value = initialValue;\n\n  const list = document.createElement(\"div\");\n  list.classList.add(\"autocomplete-items\");\n\n  const cleanList = () => {\n    list.innerHTML = \"\";\n  };\n\n  input.addEventListener(\"keyup\", e => {\n    const value = (e.target as HTMLInputElement).value;\n    if (value) {\n      onDataRequested(value, data => {\n        cleanList();\n        if (data instanceof Array) {\n          data.forEach(item => {\n            const listElement = renderListElement(item);\n            listElement.addEventListener(\"click\", () => {\n              input.value = onSelected(item);\n              cleanList();\n            });\n            list.appendChild(listElement);\n          });\n        }\n      });\n    } else {\n      cleanList();\n    }\n  });\n\n  container.appendChild(input);\n  container.appendChild(list);\n\n  return container;\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import {\n  WithModuleProps,\n  LinkedVisualConsoleProps,\n  AnyObject\n} from \"../lib/types\";\n\nimport {\n  modulePropsDecoder,\n  linkedVCPropsDecoder,\n  notEmptyStringOr\n} from \"../lib\";\nimport Item, { ItemType, ItemProps, itemBasePropsDecoder } from \"../Item\";\n\nexport type StaticGraphProps = {\n  type: ItemType.STATIC_GRAPH;\n  imageSrc: string; // URL?\n  showLastValueTooltip: \"default\" | \"enabled\" | \"disabled\";\n  statusImageSrc: string | null; // URL?\n  lastValue: string | null;\n} & ItemProps &\n  WithModuleProps &\n  LinkedVisualConsoleProps;\n\n/**\n * Extract a valid enum value from a raw unknown value.\n * @param showLastValueTooltip Raw value.\n */\nconst parseShowLastValueTooltip = (\n  showLastValueTooltip: unknown\n): StaticGraphProps[\"showLastValueTooltip\"] => {\n  switch (showLastValueTooltip) {\n    case \"default\":\n    case \"enabled\":\n    case \"disabled\":\n      return showLastValueTooltip;\n    default:\n      return \"default\";\n  }\n};\n\n/**\n * Build a valid typed object from a raw object.\n * This will allow us to ensure the type safety.\n *\n * @param data Raw object.\n * @return An object representing the static graph props.\n * @throws Will throw a TypeError if some property\n * is missing from the raw object or have an invalid type.\n */\nexport function staticGraphPropsDecoder(\n  data: AnyObject\n): StaticGraphProps | never {\n  if (typeof data.imageSrc !== \"string\" || data.imageSrc.length === 0) {\n    throw new TypeError(\"invalid image src.\");\n  }\n\n  return {\n    ...itemBasePropsDecoder(data), // Object spread. It will merge the properties of the two objects.\n    type: ItemType.STATIC_GRAPH,\n    imageSrc: data.imageSrc,\n    showLastValueTooltip: parseShowLastValueTooltip(data.showLastValueTooltip),\n    statusImageSrc: notEmptyStringOr(data.statusImageSrc, null),\n    lastValue: notEmptyStringOr(data.lastValue, null),\n    ...modulePropsDecoder(data), // Object spread. It will merge the properties of the two objects.\n    ...linkedVCPropsDecoder(data) // Object spread. It will merge the properties of the two objects.\n  };\n}\n\nexport default class StaticGraph extends Item<StaticGraphProps> {\n  protected createDomElement(): HTMLElement {\n    const imgSrc = this.props.statusImageSrc || this.props.imageSrc;\n    const element = document.createElement(\"div\");\n    element.className = \"static-graph\";\n    element.setAttribute(\"ondragstart\", \"return false;\");\n    element.setAttribute(\"draggable\", \"false\");\n    element.style.backgroundImage = `url(${imgSrc})`;\n    element.style.backgroundRepeat = \"no-repeat\";\n    element.style.backgroundSize = \"contain\";\n    element.style.backgroundPosition = \"center\";\n\n    if (\n      this.props.agentDisabled === true ||\n      this.props.moduleDisabled === true\n    ) {\n      element.style.opacity = \"0.2\";\n    }\n\n    // Show last value in a tooltip.\n    if (\n      this.props.lastValue !== null &&\n      this.props.showLastValueTooltip !== \"disabled\"\n    ) {\n      element.className = \"static-graph image forced_title\";\n      element.setAttribute(\"data-use_title_for_force_title\", \"1\");\n      element.setAttribute(\"data-title\", this.props.lastValue);\n    }\n\n    return element;\n  }\n\n  /**\n   * To update the content element.\n   * @override Item.updateDomElement\n   */\n  protected updateDomElement(element: HTMLElement): void {\n    const imgSrc = this.props.statusImageSrc || this.props.imageSrc;\n    element.style.backgroundImage = `url(${imgSrc})`;\n  }\n}\n","import { LinkedVisualConsoleProps, AnyObject } from \"../lib/types\";\nimport { linkedVCPropsDecoder } from \"../lib\";\nimport Item, { ItemType, ItemProps, itemBasePropsDecoder } from \"../Item\";\n\nexport type IconProps = {\n  type: ItemType.ICON;\n  image: string;\n  imageSrc: string; // URL?\n} & ItemProps &\n  LinkedVisualConsoleProps;\n\n/**\n * Build a valid typed object from a raw object.\n * This will allow us to ensure the type safety.\n *\n * @param data Raw object.\n * @return An object representing the icon props.\n * @throws Will throw a TypeError if some property\n * is missing from the raw object or have an invalid type.\n */\nexport function iconPropsDecoder(data: AnyObject): IconProps | never {\n  if (typeof data.imageSrc !== \"string\" || data.imageSrc.length === 0) {\n    throw new TypeError(\"invalid image src.\");\n  }\n\n  if (typeof data.image !== \"string\" || data.image.length === 0) {\n    throw new TypeError(\"invalid image.\");\n  }\n\n  return {\n    ...itemBasePropsDecoder(data), // Object spread. It will merge the properties of the two objects.\n    type: ItemType.ICON,\n    image: data.image,\n    imageSrc: data.imageSrc,\n    ...linkedVCPropsDecoder(data) // Object spread. It will merge the properties of the two objects.\n  };\n}\n\nexport default class Icon extends Item<IconProps> {\n  protected createDomElement(): HTMLElement {\n    const element = document.createElement(\"div\");\n    element.className = \"icon \" + this.props.image;\n    element.style.backgroundImage = `url(${this.props.imageSrc})`;\n    element.style.backgroundRepeat = \"no-repeat\";\n    element.style.backgroundSize = \"contain\";\n    element.style.backgroundPosition = \"center\";\n\n    return element;\n  }\n\n  /**\n   * To update the content element.\n   * @override Item.updateDomElement\n   */\n  protected updateDomElement(element: HTMLElement): void {\n    element.style.backgroundImage = `url(${this.props.imageSrc})`;\n  }\n}\n","/*!\n * Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n */\nvar prefix = \"fas\";\nvar faAd = {\n  prefix: 'fas',\n  iconName: 'ad',\n  icon: [512, 512, [], \"f641\", \"M157.52 272h36.96L176 218.78 157.52 272zM352 256c-13.23 0-24 10.77-24 24s10.77 24 24 24 24-10.77 24-24-10.77-24-24-24zM464 64H48C21.5 64 0 85.5 0 112v288c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM250.58 352h-16.94c-6.81 0-12.88-4.32-15.12-10.75L211.15 320h-70.29l-7.38 21.25A16 16 0 0 1 118.36 352h-16.94c-11.01 0-18.73-10.85-15.12-21.25L140 176.12A23.995 23.995 0 0 1 162.67 160h26.66A23.99 23.99 0 0 1 212 176.13l53.69 154.62c3.61 10.4-4.11 21.25-15.11 21.25zM424 336c0 8.84-7.16 16-16 16h-16c-4.85 0-9.04-2.27-11.98-5.68-8.62 3.66-18.09 5.68-28.02 5.68-39.7 0-72-32.3-72-72s32.3-72 72-72c8.46 0 16.46 1.73 24 4.42V176c0-8.84 7.16-16 16-16h16c8.84 0 16 7.16 16 16v160z\"]\n};\nvar faAddressBook = {\n  prefix: 'fas',\n  iconName: 'address-book',\n  icon: [448, 512, [], \"f2b9\", \"M436 160c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h320c26.5 0 48-21.5 48-48v-48h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20v-64h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20v-64h20zm-228-32c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H118.4C106 384 96 375.4 96 364.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2z\"]\n};\nvar faAddressCard = {\n  prefix: 'fas',\n  iconName: 'address-card',\n  icon: [576, 512, [], \"f2bb\", \"M528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-352 96c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H86.4C74 384 64 375.4 64 364.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2zM512 312c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-64c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-64c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16z\"]\n};\nvar faAdjust = {\n  prefix: 'fas',\n  iconName: 'adjust',\n  icon: [512, 512, [], \"f042\", \"M8 256c0 136.966 111.033 248 248 248s248-111.034 248-248S392.966 8 256 8 8 119.033 8 256zm248 184V72c101.705 0 184 82.311 184 184 0 101.705-82.311 184-184 184z\"]\n};\nvar faAirFreshener = {\n  prefix: 'fas',\n  iconName: 'air-freshener',\n  icon: [512, 512, [], \"f5d0\", \"M224 160H96C43 160 0 203 0 256V480C0 497.625 14.375 512 32 512H288C305.625 512 320 497.625 320 480V256C320 203 277 160 224 160ZM160 416C115.875 416 80 380.125 80 336S115.875 256 160 256S240 291.875 240 336S204.125 416 160 416ZM224 32C224 14.375 209.625 0 192 0H128C110.375 0 96 14.375 96 32V128H224V32ZM381.781 51.578C383 50.969 384 49.359 384 48C384 46.625 383 45.031 381.781 44.422L352 32L339.562 2.219C338.969 1 337.375 0 336 0S333.031 1 332.406 2.219L320 32L290.219 44.422C289 45.031 288 46.625 288 48C288 49.359 289 50.969 290.219 51.578L320 64L332.406 93.781C333.031 95 334.625 96 336 96S338.969 95 339.562 93.781L352 64L381.781 51.578ZM448 64L460.406 93.781C461.031 95 462.625 96 464 96S466.969 95 467.562 93.781L480 64L509.781 51.578C511 50.969 512 49.359 512 48C512 46.625 511 45.031 509.781 44.422L480 32L467.562 2.219C466.969 1 465.375 0 464 0S461.031 1 460.406 2.219L448 32L418.219 44.422C417 45.031 416 46.625 416 48C416 49.359 417 50.969 418.219 51.578L448 64ZM480 224L467.562 194.219C466.969 193 465.375 192 464 192S461.031 193 460.406 194.219L448 224L418.219 236.422C417 237.031 416 238.625 416 240C416 241.359 417 242.969 418.219 243.578L448 256L460.406 285.781C461.031 287 462.625 288 464 288S466.969 287 467.562 285.781L480 256L509.781 243.578C511 242.969 512 241.359 512 240C512 238.625 511 237.031 509.781 236.422L480 224ZM445.781 147.578C447 146.969 448 145.359 448 144C448 142.625 447 141.031 445.781 140.422L416 128L403.562 98.219C402.969 97 401.375 96 400 96S397.031 97 396.406 98.219L384 128L354.219 140.422C353 141.031 352 142.625 352 144C352 145.359 353 146.969 354.219 147.578L384 160L396.406 189.781C397.031 191 398.625 192 400 192S402.969 191 403.562 189.781L416 160L445.781 147.578Z\"]\n};\nvar faAlignCenter = {\n  prefix: 'fas',\n  iconName: 'align-center',\n  icon: [448, 512, [], \"f037\", \"M432 160H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 256H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM108.1 96h231.81A12.09 12.09 0 0 0 352 83.9V44.09A12.09 12.09 0 0 0 339.91 32H108.1A12.09 12.09 0 0 0 96 44.09V83.9A12.1 12.1 0 0 0 108.1 96zm231.81 256A12.09 12.09 0 0 0 352 339.9v-39.81A12.09 12.09 0 0 0 339.91 288H108.1A12.09 12.09 0 0 0 96 300.09v39.81a12.1 12.1 0 0 0 12.1 12.1z\"]\n};\nvar faAlignJustify = {\n  prefix: 'fas',\n  iconName: 'align-justify',\n  icon: [448, 512, [], \"f039\", \"M432 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-128H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-128H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-128H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faAlignLeft = {\n  prefix: 'fas',\n  iconName: 'align-left',\n  icon: [448, 512, [], \"f036\", \"M12.83 352h262.34A12.82 12.82 0 0 0 288 339.17v-38.34A12.82 12.82 0 0 0 275.17 288H12.83A12.82 12.82 0 0 0 0 300.83v38.34A12.82 12.82 0 0 0 12.83 352zm0-256h262.34A12.82 12.82 0 0 0 288 83.17V44.83A12.82 12.82 0 0 0 275.17 32H12.83A12.82 12.82 0 0 0 0 44.83v38.34A12.82 12.82 0 0 0 12.83 96zM432 160H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 256H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faAlignRight = {\n  prefix: 'fas',\n  iconName: 'align-right',\n  icon: [448, 512, [], \"f038\", \"M16 224h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm416 192H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm3.17-384H172.83A12.82 12.82 0 0 0 160 44.83v38.34A12.82 12.82 0 0 0 172.83 96h262.34A12.82 12.82 0 0 0 448 83.17V44.83A12.82 12.82 0 0 0 435.17 32zm0 256H172.83A12.82 12.82 0 0 0 160 300.83v38.34A12.82 12.82 0 0 0 172.83 352h262.34A12.82 12.82 0 0 0 448 339.17v-38.34A12.82 12.82 0 0 0 435.17 288z\"]\n};\nvar faAllergies = {\n  prefix: 'fas',\n  iconName: 'allergies',\n  icon: [448, 512, [], \"f461\", \"M416 112c-17.6 0-32 14.4-32 32v72c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8V64c0-17.6-14.4-32-32-32s-32 14.4-32 32v152c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8V32c0-17.6-14.4-32-32-32s-32 14.4-32 32v184c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8V64c0-17.6-14.4-32-32-32S96 46.4 96 64v241l-23.6-32.5c-13-17.9-38-21.8-55.9-8.8s-21.8 38-8.8 55.9l125.6 172.7c9 12.4 23.5 19.8 38.8 19.8h197.6c22.3 0 41.6-15.3 46.7-37l26.5-112.7c3.2-13.7 4.9-28.3 5.1-42.3V144c0-17.6-14.4-32-32-32zM176 416c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-96c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm64 128c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-96c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm64 32c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm32 64c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm32-128c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z\"]\n};\nvar faAmbulance = {\n  prefix: 'fas',\n  iconName: 'ambulance',\n  icon: [640, 512, [], \"f0f9\", \"M624 352h-16V243.9c0-12.7-5.1-24.9-14.1-33.9L494 110.1c-9-9-21.2-14.1-33.9-14.1H416V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h16c0 53 43 96 96 96s96-43 96-96h128c0 53 43 96 96 96s96-43 96-96h48c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM160 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm144-248c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48zm176 248c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm80-208H416V144h44.1l99.9 99.9V256z\"]\n};\nvar faAmericanSignLanguageInterpreting = {\n  prefix: 'fas',\n  iconName: 'american-sign-language-interpreting',\n  icon: [640, 512, [], \"f2a3\", \"M290.547 189.039c-20.295-10.149-44.147-11.199-64.739-3.89 42.606 0 71.208 20.475 85.578 50.576 8.576 17.899-5.148 38.071-23.617 38.071 18.429 0 32.211 20.136 23.617 38.071-14.725 30.846-46.123 50.854-80.298 50.854-.557 0-94.471-8.615-94.471-8.615l-66.406 33.347c-9.384 4.693-19.815.379-23.895-7.781L1.86 290.747c-4.167-8.615-1.111-18.897 6.946-23.621l58.072-33.069L108 159.861c6.39-57.245 34.731-109.767 79.743-146.726 11.391-9.448 28.341-7.781 37.51 3.613 9.446 11.394 7.78 28.067-3.612 37.516-12.503 10.559-23.618 22.509-32.509 35.57 21.672-14.729 46.679-24.732 74.186-28.067 14.725-1.945 28.063 8.336 29.73 23.065 1.945 14.728-8.336 28.067-23.062 29.734-16.116 1.945-31.12 7.503-44.178 15.284 26.114-5.713 58.712-3.138 88.079 11.115 13.336 6.669 18.893 22.509 12.224 35.848-6.389 13.06-22.504 18.617-35.564 12.226zm-27.229 69.472c-6.112-12.505-18.338-20.286-32.231-20.286a35.46 35.46 0 0 0-35.565 35.57c0 21.428 17.808 35.57 35.565 35.57 13.893 0 26.119-7.781 32.231-20.286 4.446-9.449 13.614-15.006 23.339-15.284-9.725-.277-18.893-5.835-23.339-15.284zm374.821-37.237c4.168 8.615 1.111 18.897-6.946 23.621l-58.071 33.069L532 352.16c-6.39 57.245-34.731 109.767-79.743 146.726-10.932 9.112-27.799 8.144-37.51-3.613-9.446-11.394-7.78-28.067 3.613-37.516 12.503-10.559 23.617-22.509 32.508-35.57-21.672 14.729-46.679 24.732-74.186 28.067-10.021 2.506-27.552-5.643-29.73-23.065-1.945-14.728 8.336-28.067 23.062-29.734 16.116-1.946 31.12-7.503 44.178-15.284-26.114 5.713-58.712 3.138-88.079-11.115-13.336-6.669-18.893-22.509-12.224-35.848 6.389-13.061 22.505-18.619 35.565-12.227 20.295 10.149 44.147 11.199 64.739 3.89-42.606 0-71.208-20.475-85.578-50.576-8.576-17.899 5.148-38.071 23.617-38.071-18.429 0-32.211-20.136-23.617-38.071 14.033-29.396 44.039-50.887 81.966-50.854l92.803 8.615 66.406-33.347c9.408-4.704 19.828-.354 23.894 7.781l44.455 88.926zm-229.227-18.618c-13.893 0-26.119 7.781-32.231 20.286-4.446 9.449-13.614 15.006-23.339 15.284 9.725.278 18.893 5.836 23.339 15.284 6.112 12.505 18.338 20.286 32.231 20.286a35.46 35.46 0 0 0 35.565-35.57c0-21.429-17.808-35.57-35.565-35.57z\"]\n};\nvar faAnchor = {\n  prefix: 'fas',\n  iconName: 'anchor',\n  icon: [576, 512, [], \"f13d\", \"M12.971 352h32.394C67.172 454.735 181.944 512 288 512c106.229 0 220.853-57.38 242.635-160h32.394c10.691 0 16.045-12.926 8.485-20.485l-67.029-67.029c-4.686-4.686-12.284-4.686-16.971 0l-67.029 67.029c-7.56 7.56-2.206 20.485 8.485 20.485h35.146c-20.29 54.317-84.963 86.588-144.117 94.015V256h52c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-52v-5.47c37.281-13.178 63.995-48.725 64-90.518C384.005 43.772 341.605.738 289.37.01 235.723-.739 192 42.525 192 96c0 41.798 26.716 77.35 64 90.53V192h-52c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h52v190.015c-58.936-7.399-123.82-39.679-144.117-94.015h35.146c10.691 0 16.045-12.926 8.485-20.485l-67.029-67.029c-4.686-4.686-12.284-4.686-16.971 0L4.485 331.515C-3.074 339.074 2.28 352 12.971 352zM288 64c17.645 0 32 14.355 32 32s-14.355 32-32 32-32-14.355-32-32 14.355-32 32-32z\"]\n};\nvar faAngleDoubleDown = {\n  prefix: 'fas',\n  iconName: 'angle-double-down',\n  icon: [320, 512, [], \"f103\", \"M143 256.3L7 120.3c-9.4-9.4-9.4-24.6 0-33.9l22.6-22.6c9.4-9.4 24.6-9.4 33.9 0l96.4 96.4 96.4-96.4c9.4-9.4 24.6-9.4 33.9 0L313 86.3c9.4 9.4 9.4 24.6 0 33.9l-136 136c-9.4 9.5-24.6 9.5-34 .1zm34 192l136-136c9.4-9.4 9.4-24.6 0-33.9l-22.6-22.6c-9.4-9.4-24.6-9.4-33.9 0L160 352.1l-96.4-96.4c-9.4-9.4-24.6-9.4-33.9 0L7 278.3c-9.4 9.4-9.4 24.6 0 33.9l136 136c9.4 9.5 24.6 9.5 34 .1z\"]\n};\nvar faAngleDoubleLeft = {\n  prefix: 'fas',\n  iconName: 'angle-double-left',\n  icon: [448, 512, [], \"f100\", \"M223.7 239l136-136c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9L319.9 256l96.4 96.4c9.4 9.4 9.4 24.6 0 33.9L393.7 409c-9.4 9.4-24.6 9.4-33.9 0l-136-136c-9.5-9.4-9.5-24.6-.1-34zm-192 34l136 136c9.4 9.4 24.6 9.4 33.9 0l22.6-22.6c9.4-9.4 9.4-24.6 0-33.9L127.9 256l96.4-96.4c9.4-9.4 9.4-24.6 0-33.9L201.7 103c-9.4-9.4-24.6-9.4-33.9 0l-136 136c-9.5 9.4-9.5 24.6-.1 34z\"]\n};\nvar faAngleDoubleRight = {\n  prefix: 'fas',\n  iconName: 'angle-double-right',\n  icon: [448, 512, [], \"f101\", \"M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34zm192-34l-136-136c-9.4-9.4-24.6-9.4-33.9 0l-22.6 22.6c-9.4 9.4-9.4 24.6 0 33.9l96.4 96.4-96.4 96.4c-9.4 9.4-9.4 24.6 0 33.9l22.6 22.6c9.4 9.4 24.6 9.4 33.9 0l136-136c9.4-9.2 9.4-24.4 0-33.8z\"]\n};\nvar faAngleDoubleUp = {\n  prefix: 'fas',\n  iconName: 'angle-double-up',\n  icon: [320, 512, [], \"f102\", \"M177 255.7l136 136c9.4 9.4 9.4 24.6 0 33.9l-22.6 22.6c-9.4 9.4-24.6 9.4-33.9 0L160 351.9l-96.4 96.4c-9.4 9.4-24.6 9.4-33.9 0L7 425.7c-9.4-9.4-9.4-24.6 0-33.9l136-136c9.4-9.5 24.6-9.5 34-.1zm-34-192L7 199.7c-9.4 9.4-9.4 24.6 0 33.9l22.6 22.6c9.4 9.4 24.6 9.4 33.9 0l96.4-96.4 96.4 96.4c9.4 9.4 24.6 9.4 33.9 0l22.6-22.6c9.4-9.4 9.4-24.6 0-33.9l-136-136c-9.2-9.4-24.4-9.4-33.8 0z\"]\n};\nvar faAngleDown = {\n  prefix: 'fas',\n  iconName: 'angle-down',\n  icon: [320, 512, [], \"f107\", \"M143 352.3L7 216.3c-9.4-9.4-9.4-24.6 0-33.9l22.6-22.6c9.4-9.4 24.6-9.4 33.9 0l96.4 96.4 96.4-96.4c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9l-136 136c-9.2 9.4-24.4 9.4-33.8 0z\"]\n};\nvar faAngleLeft = {\n  prefix: 'fas',\n  iconName: 'angle-left',\n  icon: [256, 512, [], \"f104\", \"M31.7 239l136-136c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9L127.9 256l96.4 96.4c9.4 9.4 9.4 24.6 0 33.9L201.7 409c-9.4 9.4-24.6 9.4-33.9 0l-136-136c-9.5-9.4-9.5-24.6-.1-34z\"]\n};\nvar faAngleRight = {\n  prefix: 'fas',\n  iconName: 'angle-right',\n  icon: [256, 512, [], \"f105\", \"M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z\"]\n};\nvar faAngleUp = {\n  prefix: 'fas',\n  iconName: 'angle-up',\n  icon: [320, 512, [], \"f106\", \"M177 159.7l136 136c9.4 9.4 9.4 24.6 0 33.9l-22.6 22.6c-9.4 9.4-24.6 9.4-33.9 0L160 255.9l-96.4 96.4c-9.4 9.4-24.6 9.4-33.9 0L7 329.7c-9.4-9.4-9.4-24.6 0-33.9l136-136c9.4-9.5 24.6-9.5 34-.1z\"]\n};\nvar faAngry = {\n  prefix: 'fas',\n  iconName: 'angry',\n  icon: [496, 512, [], \"f556\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM136 240c0-9.3 4.1-17.5 10.5-23.4l-31-9.3c-8.5-2.5-13.3-11.5-10.7-19.9 2.5-8.5 11.4-13.2 19.9-10.7l80 24c8.5 2.5 13.3 11.5 10.7 19.9-2.1 6.9-8.4 11.4-15.3 11.4-.5 0-1.1-.2-1.7-.2.7 2.7 1.7 5.3 1.7 8.2 0 17.7-14.3 32-32 32S136 257.7 136 240zm168 154.2c-27.8-33.4-84.2-33.4-112.1 0-13.5 16.3-38.2-4.2-24.6-20.5 20-24 49.4-37.8 80.6-37.8s60.6 13.8 80.6 37.8c13.8 16.5-11.1 36.6-24.5 20.5zm76.6-186.9l-31 9.3c6.3 5.8 10.5 14.1 10.5 23.4 0 17.7-14.3 32-32 32s-32-14.3-32-32c0-2.9.9-5.6 1.7-8.2-.6.1-1.1.2-1.7.2-6.9 0-13.2-4.5-15.3-11.4-2.5-8.5 2.3-17.4 10.7-19.9l80-24c8.4-2.5 17.4 2.3 19.9 10.7 2.5 8.5-2.3 17.4-10.8 19.9z\"]\n};\nvar faAnkh = {\n  prefix: 'fas',\n  iconName: 'ankh',\n  icon: [320, 512, [], \"f644\", \"M296 256h-44.62C272.46 222.01 288 181.65 288 144 288 55.63 230.69 0 160 0S32 55.63 32 144c0 37.65 15.54 78.01 36.62 112H24c-13.25 0-24 10.74-24 24v32c0 13.25 10.75 24 24 24h96v152c0 13.25 10.75 24 24 24h32c13.25 0 24-10.75 24-24V336h96c13.25 0 24-10.75 24-24v-32c0-13.26-10.75-24-24-24zM160 80c29.61 0 48 24.52 48 64 0 34.66-27.14 78.14-48 100.87-20.86-22.72-48-66.21-48-100.87 0-39.48 18.39-64 48-64z\"]\n};\nvar faAppleAlt = {\n  prefix: 'fas',\n  iconName: 'apple-alt',\n  icon: [448, 512, [], \"f5d1\", \"M350.85 129c25.97 4.67 47.27 18.67 63.92 42 14.65 20.67 24.64 46.67 29.96 78 4.67 28.67 4.32 57.33-1 86-7.99 47.33-23.97 87-47.94 119-28.64 38.67-64.59 58-107.87 58-10.66 0-22.3-3.33-34.96-10-8.66-5.33-18.31-8-28.97-8s-20.3 2.67-28.97 8c-12.66 6.67-24.3 10-34.96 10-43.28 0-79.23-19.33-107.87-58-23.97-32-39.95-71.67-47.94-119-5.32-28.67-5.67-57.33-1-86 5.32-31.33 15.31-57.33 29.96-78 16.65-23.33 37.95-37.33 63.92-42 15.98-2.67 37.95-.33 65.92 7 23.97 6.67 44.28 14.67 60.93 24 16.65-9.33 36.96-17.33 60.93-24 27.98-7.33 49.96-9.67 65.94-7zm-54.94-41c-9.32 8.67-21.65 15-36.96 19-10.66 3.33-22.3 5-34.96 5l-14.98-1c-1.33-9.33-1.33-20 0-32 2.67-24 10.32-42.33 22.97-55 9.32-8.67 21.65-15 36.96-19 10.66-3.33 22.3-5 34.96-5l14.98 1 1 15c0 12.67-1.67 24.33-4.99 35-3.99 15.33-10.31 27.67-18.98 37z\"]\n};\nvar faArchive = {\n  prefix: 'fas',\n  iconName: 'archive',\n  icon: [512, 512, [], \"f187\", \"M32 448c0 17.7 14.3 32 32 32h384c17.7 0 32-14.3 32-32V160H32v288zm160-212c0-6.6 5.4-12 12-12h104c6.6 0 12 5.4 12 12v8c0 6.6-5.4 12-12 12H204c-6.6 0-12-5.4-12-12v-8zM480 32H32C14.3 32 0 46.3 0 64v48c0 8.8 7.2 16 16 16h480c8.8 0 16-7.2 16-16V64c0-17.7-14.3-32-32-32z\"]\n};\nvar faArchway = {\n  prefix: 'fas',\n  iconName: 'archway',\n  icon: [576, 512, [], \"f557\", \"M560 448h-16V96H32v352H16.02c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16H176c8.84 0 16-7.16 16-16V320c0-53.02 42.98-96 96-96s96 42.98 96 96l.02 160v16c0 8.84 7.16 16 16 16H560c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm0-448H16C7.16 0 0 7.16 0 16v32c0 8.84 7.16 16 16 16h544c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16z\"]\n};\nvar faArrowAltCircleDown = {\n  prefix: 'fas',\n  iconName: 'arrow-alt-circle-down',\n  icon: [512, 512, [], \"f358\", \"M504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zM212 140v116h-70.9c-10.7 0-16.1 13-8.5 20.5l114.9 114.3c4.7 4.7 12.2 4.7 16.9 0l114.9-114.3c7.6-7.6 2.2-20.5-8.5-20.5H300V140c0-6.6-5.4-12-12-12h-64c-6.6 0-12 5.4-12 12z\"]\n};\nvar faArrowAltCircleLeft = {\n  prefix: 'fas',\n  iconName: 'arrow-alt-circle-left',\n  icon: [512, 512, [], \"f359\", \"M256 504C119 504 8 393 8 256S119 8 256 8s248 111 248 248-111 248-248 248zm116-292H256v-70.9c0-10.7-13-16.1-20.5-8.5L121.2 247.5c-4.7 4.7-4.7 12.2 0 16.9l114.3 114.9c7.6 7.6 20.5 2.2 20.5-8.5V300h116c6.6 0 12-5.4 12-12v-64c0-6.6-5.4-12-12-12z\"]\n};\nvar faArrowAltCircleRight = {\n  prefix: 'fas',\n  iconName: 'arrow-alt-circle-right',\n  icon: [512, 512, [], \"f35a\", \"M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zM140 300h116v70.9c0 10.7 13 16.1 20.5 8.5l114.3-114.9c4.7-4.7 4.7-12.2 0-16.9l-114.3-115c-7.6-7.6-20.5-2.2-20.5 8.5V212H140c-6.6 0-12 5.4-12 12v64c0 6.6 5.4 12 12 12z\"]\n};\nvar faArrowAltCircleUp = {\n  prefix: 'fas',\n  iconName: 'arrow-alt-circle-up',\n  icon: [512, 512, [], \"f35b\", \"M8 256C8 119 119 8 256 8s248 111 248 248-111 248-248 248S8 393 8 256zm292 116V256h70.9c10.7 0 16.1-13 8.5-20.5L264.5 121.2c-4.7-4.7-12.2-4.7-16.9 0l-115 114.3c-7.6 7.6-2.2 20.5 8.5 20.5H212v116c0 6.6 5.4 12 12 12h64c6.6 0 12-5.4 12-12z\"]\n};\nvar faArrowCircleDown = {\n  prefix: 'fas',\n  iconName: 'arrow-circle-down',\n  icon: [512, 512, [], \"f0ab\", \"M504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-143.6-28.9L288 302.6V120c0-13.3-10.7-24-24-24h-16c-13.3 0-24 10.7-24 24v182.6l-72.4-75.5c-9.3-9.7-24.8-9.9-34.3-.4l-10.9 11c-9.4 9.4-9.4 24.6 0 33.9L239 404.3c9.4 9.4 24.6 9.4 33.9 0l132.7-132.7c9.4-9.4 9.4-24.6 0-33.9l-10.9-11c-9.5-9.5-25-9.3-34.3.4z\"]\n};\nvar faArrowCircleLeft = {\n  prefix: 'fas',\n  iconName: 'arrow-circle-left',\n  icon: [512, 512, [], \"f0a8\", \"M256 504C119 504 8 393 8 256S119 8 256 8s248 111 248 248-111 248-248 248zm28.9-143.6L209.4 288H392c13.3 0 24-10.7 24-24v-16c0-13.3-10.7-24-24-24H209.4l75.5-72.4c9.7-9.3 9.9-24.8.4-34.3l-11-10.9c-9.4-9.4-24.6-9.4-33.9 0L107.7 239c-9.4 9.4-9.4 24.6 0 33.9l132.7 132.7c9.4 9.4 24.6 9.4 33.9 0l11-10.9c9.5-9.5 9.3-25-.4-34.3z\"]\n};\nvar faArrowCircleRight = {\n  prefix: 'fas',\n  iconName: 'arrow-circle-right',\n  icon: [512, 512, [], \"f0a9\", \"M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zm-28.9 143.6l75.5 72.4H120c-13.3 0-24 10.7-24 24v16c0 13.3 10.7 24 24 24h182.6l-75.5 72.4c-9.7 9.3-9.9 24.8-.4 34.3l11 10.9c9.4 9.4 24.6 9.4 33.9 0L404.3 273c9.4-9.4 9.4-24.6 0-33.9L271.6 106.3c-9.4-9.4-24.6-9.4-33.9 0l-11 10.9c-9.5 9.6-9.3 25.1.4 34.4z\"]\n};\nvar faArrowCircleUp = {\n  prefix: 'fas',\n  iconName: 'arrow-circle-up',\n  icon: [512, 512, [], \"f0aa\", \"M8 256C8 119 119 8 256 8s248 111 248 248-111 248-248 248S8 393 8 256zm143.6 28.9l72.4-75.5V392c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24V209.4l72.4 75.5c9.3 9.7 24.8 9.9 34.3.4l10.9-11c9.4-9.4 9.4-24.6 0-33.9L273 107.7c-9.4-9.4-24.6-9.4-33.9 0L106.3 240.4c-9.4 9.4-9.4 24.6 0 33.9l10.9 11c9.6 9.5 25.1 9.3 34.4-.4z\"]\n};\nvar faArrowDown = {\n  prefix: 'fas',\n  iconName: 'arrow-down',\n  icon: [448, 512, [], \"f063\", \"M413.1 222.5l22.2 22.2c9.4 9.4 9.4 24.6 0 33.9L241 473c-9.4 9.4-24.6 9.4-33.9 0L12.7 278.6c-9.4-9.4-9.4-24.6 0-33.9l22.2-22.2c9.5-9.5 25-9.3 34.3.4L184 343.4V56c0-13.3 10.7-24 24-24h32c13.3 0 24 10.7 24 24v287.4l114.8-120.5c9.3-9.8 24.8-10 34.3-.4z\"]\n};\nvar faArrowLeft = {\n  prefix: 'fas',\n  iconName: 'arrow-left',\n  icon: [448, 512, [], \"f060\", \"M257.5 445.1l-22.2 22.2c-9.4 9.4-24.6 9.4-33.9 0L7 273c-9.4-9.4-9.4-24.6 0-33.9L201.4 44.7c9.4-9.4 24.6-9.4 33.9 0l22.2 22.2c9.5 9.5 9.3 25-.4 34.3L136.6 216H424c13.3 0 24 10.7 24 24v32c0 13.3-10.7 24-24 24H136.6l120.5 114.8c9.8 9.3 10 24.8.4 34.3z\"]\n};\nvar faArrowRight = {\n  prefix: 'fas',\n  iconName: 'arrow-right',\n  icon: [448, 512, [], \"f061\", \"M190.5 66.9l22.2-22.2c9.4-9.4 24.6-9.4 33.9 0L441 239c9.4 9.4 9.4 24.6 0 33.9L246.6 467.3c-9.4 9.4-24.6 9.4-33.9 0l-22.2-22.2c-9.5-9.5-9.3-25 .4-34.3L311.4 296H24c-13.3 0-24-10.7-24-24v-32c0-13.3 10.7-24 24-24h287.4L190.9 101.2c-9.8-9.3-10-24.8-.4-34.3z\"]\n};\nvar faArrowUp = {\n  prefix: 'fas',\n  iconName: 'arrow-up',\n  icon: [448, 512, [], \"f062\", \"M34.9 289.5l-22.2-22.2c-9.4-9.4-9.4-24.6 0-33.9L207 39c9.4-9.4 24.6-9.4 33.9 0l194.3 194.3c9.4 9.4 9.4 24.6 0 33.9L413 289.4c-9.5 9.5-25 9.3-34.3-.4L264 168.6V456c0 13.3-10.7 24-24 24h-32c-13.3 0-24-10.7-24-24V168.6L69.2 289.1c-9.3 9.8-24.8 10-34.3.4z\"]\n};\nvar faArrowsAlt = {\n  prefix: 'fas',\n  iconName: 'arrows-alt',\n  icon: [512, 512, [], \"f0b2\", \"M352.201 425.775l-79.196 79.196c-9.373 9.373-24.568 9.373-33.941 0l-79.196-79.196c-15.119-15.119-4.411-40.971 16.971-40.97h51.162L228 284H127.196v51.162c0 21.382-25.851 32.09-40.971 16.971L7.029 272.937c-9.373-9.373-9.373-24.569 0-33.941L86.225 159.8c15.119-15.119 40.971-4.411 40.971 16.971V228H228V127.196h-51.23c-21.382 0-32.09-25.851-16.971-40.971l79.196-79.196c9.373-9.373 24.568-9.373 33.941 0l79.196 79.196c15.119 15.119 4.411 40.971-16.971 40.971h-51.162V228h100.804v-51.162c0-21.382 25.851-32.09 40.97-16.971l79.196 79.196c9.373 9.373 9.373 24.569 0 33.941L425.773 352.2c-15.119 15.119-40.971 4.411-40.97-16.971V284H284v100.804h51.23c21.382 0 32.09 25.851 16.971 40.971z\"]\n};\nvar faArrowsAltH = {\n  prefix: 'fas',\n  iconName: 'arrows-alt-h',\n  icon: [512, 512, [], \"f337\", \"M377.941 169.941V216H134.059v-46.059c0-21.382-25.851-32.09-40.971-16.971L7.029 239.029c-9.373 9.373-9.373 24.568 0 33.941l86.059 86.059c15.119 15.119 40.971 4.411 40.971-16.971V296h243.882v46.059c0 21.382 25.851 32.09 40.971 16.971l86.059-86.059c9.373-9.373 9.373-24.568 0-33.941l-86.059-86.059c-15.119-15.12-40.971-4.412-40.971 16.97z\"]\n};\nvar faArrowsAltV = {\n  prefix: 'fas',\n  iconName: 'arrows-alt-v',\n  icon: [256, 512, [], \"f338\", \"M214.059 377.941H168V134.059h46.059c21.382 0 32.09-25.851 16.971-40.971L144.971 7.029c-9.373-9.373-24.568-9.373-33.941 0L24.971 93.088c-15.119 15.119-4.411 40.971 16.971 40.971H88v243.882H41.941c-21.382 0-32.09 25.851-16.971 40.971l86.059 86.059c9.373 9.373 24.568 9.373 33.941 0l86.059-86.059c15.12-15.119 4.412-40.971-16.97-40.971z\"]\n};\nvar faAssistiveListeningSystems = {\n  prefix: 'fas',\n  iconName: 'assistive-listening-systems',\n  icon: [512, 512, [], \"f2a2\", \"M216 260c0 15.464-12.536 28-28 28s-28-12.536-28-28c0-44.112 35.888-80 80-80s80 35.888 80 80c0 15.464-12.536 28-28 28s-28-12.536-28-28c0-13.234-10.767-24-24-24s-24 10.766-24 24zm24-176c-97.047 0-176 78.953-176 176 0 15.464 12.536 28 28 28s28-12.536 28-28c0-66.168 53.832-120 120-120s120 53.832 120 120c0 75.164-71.009 70.311-71.997 143.622L288 404c0 28.673-23.327 52-52 52-15.464 0-28 12.536-28 28s12.536 28 28 28c59.475 0 107.876-48.328 108-107.774.595-34.428 72-48.24 72-144.226 0-97.047-78.953-176-176-176zm-80 236c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zM32 448c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm480-187.993c0-1.518-.012-3.025-.045-4.531C510.076 140.525 436.157 38.47 327.994 1.511c-14.633-4.998-30.549 2.809-35.55 17.442-5 14.633 2.81 30.549 17.442 35.55 85.906 29.354 144.61 110.513 146.077 201.953l.003.188c.026 1.118.033 2.236.033 3.363 0 15.464 12.536 28 28 28s28.001-12.536 28.001-28zM152.971 439.029l-80-80L39.03 392.97l80 80 33.941-33.941z\"]\n};\nvar faAsterisk = {\n  prefix: 'fas',\n  iconName: 'asterisk',\n  icon: [512, 512, [], \"f069\", \"M478.21 334.093L336 256l142.21-78.093c11.795-6.477 15.961-21.384 9.232-33.037l-19.48-33.741c-6.728-11.653-21.72-15.499-33.227-8.523L296 186.718l3.475-162.204C299.763 11.061 288.937 0 275.48 0h-38.96c-13.456 0-24.283 11.061-23.994 24.514L216 186.718 77.265 102.607c-11.506-6.976-26.499-3.13-33.227 8.523l-19.48 33.741c-6.728 11.653-2.562 26.56 9.233 33.037L176 256 33.79 334.093c-11.795 6.477-15.961 21.384-9.232 33.037l19.48 33.741c6.728 11.653 21.721 15.499 33.227 8.523L216 325.282l-3.475 162.204C212.237 500.939 223.064 512 236.52 512h38.961c13.456 0 24.283-11.061 23.995-24.514L296 325.282l138.735 84.111c11.506 6.976 26.499 3.13 33.227-8.523l19.48-33.741c6.728-11.653 2.563-26.559-9.232-33.036z\"]\n};\nvar faAt = {\n  prefix: 'fas',\n  iconName: 'at',\n  icon: [512, 512, [], \"f1fa\", \"M256 8C118.941 8 8 118.919 8 256c0 137.059 110.919 248 248 248 48.154 0 95.342-14.14 135.408-40.223 12.005-7.815 14.625-24.288 5.552-35.372l-10.177-12.433c-7.671-9.371-21.179-11.667-31.373-5.129C325.92 429.757 291.314 440 256 440c-101.458 0-184-82.542-184-184S154.542 72 256 72c100.139 0 184 57.619 184 160 0 38.786-21.093 79.742-58.17 83.693-17.349-.454-16.91-12.857-13.476-30.024l23.433-121.11C394.653 149.75 383.308 136 368.225 136h-44.981a13.518 13.518 0 0 0-13.432 11.993l-.01.092c-14.697-17.901-40.448-21.775-59.971-21.775-74.58 0-137.831 62.234-137.831 151.46 0 65.303 36.785 105.87 96 105.87 26.984 0 57.369-15.637 74.991-38.333 9.522 34.104 40.613 34.103 70.71 34.103C462.609 379.41 504 307.798 504 232 504 95.653 394.023 8 256 8zm-21.68 304.43c-22.249 0-36.07-15.623-36.07-40.771 0-44.993 30.779-72.729 58.63-72.729 22.292 0 35.601 15.241 35.601 40.77 0 45.061-33.875 72.73-58.161 72.73z\"]\n};\nvar faAtlas = {\n  prefix: 'fas',\n  iconName: 'atlas',\n  icon: [448, 512, [], \"f558\", \"M318.38 208h-39.09c-1.49 27.03-6.54 51.35-14.21 70.41 27.71-13.24 48.02-39.19 53.3-70.41zm0-32c-5.29-31.22-25.59-57.17-53.3-70.41 7.68 19.06 12.72 43.38 14.21 70.41h39.09zM224 97.31c-7.69 7.45-20.77 34.42-23.43 78.69h46.87c-2.67-44.26-15.75-71.24-23.44-78.69zm-41.08 8.28c-27.71 13.24-48.02 39.19-53.3 70.41h39.09c1.49-27.03 6.53-51.35 14.21-70.41zm0 172.82c-7.68-19.06-12.72-43.38-14.21-70.41h-39.09c5.28 31.22 25.59 57.17 53.3 70.41zM247.43 208h-46.87c2.66 44.26 15.74 71.24 23.43 78.69 7.7-7.45 20.78-34.43 23.44-78.69zM448 358.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM224 64c70.69 0 128 57.31 128 128s-57.31 128-128 128S96 262.69 96 192 153.31 64 224 64zm160 384H96c-19.2 0-32-12.8-32-32s16-32 32-32h288v64z\"]\n};\nvar faAtom = {\n  prefix: 'fas',\n  iconName: 'atom',\n  icon: [448, 512, [], \"f5d2\", \"M223.99908,224a32,32,0,1,0,32.00782,32A32.06431,32.06431,0,0,0,223.99908,224Zm214.172-96c-10.877-19.5-40.50979-50.75-116.27544-41.875C300.39168,34.875,267.63386,0,223.99908,0s-76.39066,34.875-97.89653,86.125C50.3369,77.375,20.706,108.5,9.82907,128-6.54984,157.375-5.17484,201.125,34.958,256-5.17484,310.875-6.54984,354.625,9.82907,384c29.13087,52.375,101.64652,43.625,116.27348,41.875C147.60842,477.125,180.36429,512,223.99908,512s76.3926-34.875,97.89652-86.125c14.62891,1.75,87.14456,10.5,116.27544-41.875C454.55,354.625,453.175,310.875,413.04017,256,453.175,201.125,454.55,157.375,438.171,128ZM63.33886,352c-4-7.25-.125-24.75,15.00391-48.25,6.87695,6.5,14.12891,12.875,21.88087,19.125,1.625,13.75,4,27.125,6.75,40.125C82.34472,363.875,67.09081,358.625,63.33886,352Zm36.88478-162.875c-7.752,6.25-15.00392,12.625-21.88087,19.125-15.12891-23.5-19.00392-41-15.00391-48.25,3.377-6.125,16.37891-11.5,37.88478-11.5,1.75,0,3.875.375,5.75.375C104.09864,162.25,101.84864,175.625,100.22364,189.125ZM223.99908,64c9.50195,0,22.25586,13.5,33.88282,37.25-11.252,3.75-22.50391,8-33.88282,12.875-11.377-4.875-22.62892-9.125-33.88283-12.875C201.74516,77.5,214.49712,64,223.99908,64Zm0,384c-9.502,0-22.25392-13.5-33.88283-37.25,11.25391-3.75,22.50587-8,33.88283-12.875C235.378,402.75,246.62994,407,257.8819,410.75,246.25494,434.5,233.501,448,223.99908,448Zm0-112a80,80,0,1,1,80-80A80.00023,80.00023,0,0,1,223.99908,336ZM384.6593,352c-3.625,6.625-19.00392,11.875-43.63479,11,2.752-13,5.127-26.375,6.752-40.125,7.75195-6.25,15.00391-12.625,21.87891-19.125C384.7843,327.25,388.6593,344.75,384.6593,352ZM369.65538,208.25c-6.875-6.5-14.127-12.875-21.87891-19.125-1.625-13.5-3.875-26.875-6.752-40.25,1.875,0,4.002-.375,5.752-.375,21.50391,0,34.50782,5.375,37.88283,11.5C388.6593,167.25,384.7843,184.75,369.65538,208.25Z\"]\n};\nvar faAudioDescription = {\n  prefix: 'fas',\n  iconName: 'audio-description',\n  icon: [512, 512, [], \"f29e\", \"M162.925 238.709l8.822 30.655h-25.606l9.041-30.652c1.277-4.421 2.651-9.994 3.872-15.245 1.22 5.251 2.594 10.823 3.871 15.242zm166.474-32.099h-14.523v98.781h14.523c29.776 0 46.175-17.678 46.175-49.776 0-32.239-17.49-49.005-46.175-49.005zM512 112v288c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48zM245.459 336.139l-57.097-168A12.001 12.001 0 0 0 177 160h-35.894a12.001 12.001 0 0 0-11.362 8.139l-57.097 168C70.003 343.922 75.789 352 84.009 352h29.133a12 12 0 0 0 11.535-8.693l8.574-29.906h51.367l8.793 29.977A12 12 0 0 0 204.926 352h29.172c8.22 0 14.006-8.078 11.361-15.861zm184.701-80.525c0-58.977-37.919-95.614-98.96-95.614h-57.366c-6.627 0-12 5.373-12 12v168c0 6.627 5.373 12 12 12H331.2c61.041 0 98.96-36.933 98.96-96.386z\"]\n};\nvar faAward = {\n  prefix: 'fas',\n  iconName: 'award',\n  icon: [384, 512, [], \"f559\", \"M97.12 362.63c-8.69-8.69-4.16-6.24-25.12-11.85-9.51-2.55-17.87-7.45-25.43-13.32L1.2 448.7c-4.39 10.77 3.81 22.47 15.43 22.03l52.69-2.01L105.56 507c8 8.44 22.04 5.81 26.43-4.96l52.05-127.62c-10.84 6.04-22.87 9.58-35.31 9.58-19.5 0-37.82-7.59-51.61-21.37zM382.8 448.7l-45.37-111.24c-7.56 5.88-15.92 10.77-25.43 13.32-21.07 5.64-16.45 3.18-25.12 11.85-13.79 13.78-32.12 21.37-51.62 21.37-12.44 0-24.47-3.55-35.31-9.58L252 502.04c4.39 10.77 18.44 13.4 26.43 4.96l36.25-38.28 52.69 2.01c11.62.44 19.82-11.27 15.43-22.03zM263 340c15.28-15.55 17.03-14.21 38.79-20.14 13.89-3.79 24.75-14.84 28.47-28.98 7.48-28.4 5.54-24.97 25.95-45.75 10.17-10.35 14.14-25.44 10.42-39.58-7.47-28.38-7.48-24.42 0-52.83 3.72-14.14-.25-29.23-10.42-39.58-20.41-20.78-18.47-17.36-25.95-45.75-3.72-14.14-14.58-25.19-28.47-28.98-27.88-7.61-24.52-5.62-44.95-26.41-10.17-10.35-25-14.4-38.89-10.61-27.87 7.6-23.98 7.61-51.9 0-13.89-3.79-28.72.25-38.89 10.61-20.41 20.78-17.05 18.8-44.94 26.41-13.89 3.79-24.75 14.84-28.47 28.98-7.47 28.39-5.54 24.97-25.95 45.75-10.17 10.35-14.15 25.44-10.42 39.58 7.47 28.36 7.48 24.4 0 52.82-3.72 14.14.25 29.23 10.42 39.59 20.41 20.78 18.47 17.35 25.95 45.75 3.72 14.14 14.58 25.19 28.47 28.98C104.6 325.96 106.27 325 121 340c13.23 13.47 33.84 15.88 49.74 5.82a39.676 39.676 0 0 1 42.53 0c15.89 10.06 36.5 7.65 49.73-5.82zM97.66 175.96c0-53.03 42.24-96.02 94.34-96.02s94.34 42.99 94.34 96.02-42.24 96.02-94.34 96.02-94.34-42.99-94.34-96.02z\"]\n};\nvar faBaby = {\n  prefix: 'fas',\n  iconName: 'baby',\n  icon: [384, 512, [], \"f77c\", \"M192 160c44.2 0 80-35.8 80-80S236.2 0 192 0s-80 35.8-80 80 35.8 80 80 80zm-53.4 248.8l25.6-32-61.5-51.2L56.8 383c-11.4 14.2-11.7 34.4-.8 49l48 64c7.9 10.5 19.9 16 32 16 8.3 0 16.8-2.6 24-8 17.7-13.2 21.2-38.3 8-56l-29.4-39.2zm142.7-83.2l-61.5 51.2 25.6 32L216 448c-13.2 17.7-9.7 42.8 8 56 7.2 5.4 15.6 8 24 8 12.2 0 24.2-5.5 32-16l48-64c10.9-14.6 10.6-34.8-.8-49l-45.9-57.4zM376.7 145c-12.7-18.1-37.6-22.4-55.7-9.8l-40.6 28.5c-52.7 37-124.2 37-176.8 0L63 135.3C44.9 122.6 20 127 7.3 145-5.4 163.1-1 188 17 200.7l40.6 28.5c17 11.9 35.4 20.9 54.4 27.9V288h160v-30.8c19-7 37.4-16 54.4-27.9l40.6-28.5c18.1-12.8 22.4-37.7 9.7-55.8z\"]\n};\nvar faBabyCarriage = {\n  prefix: 'fas',\n  iconName: 'baby-carriage',\n  icon: [512, 512, [], \"f77d\", \"M144.8 17c-11.3-17.8-37.2-22.8-54-9.4C35.3 51.9 0 118 0 192h256L144.8 17zM496 96h-48c-35.3 0-64 28.7-64 64v64H0c0 50.6 23 96.4 60.3 130.7C25.7 363.6 0 394.7 0 432c0 44.2 35.8 80 80 80s80-35.8 80-80c0-8.9-1.8-17.2-4.4-25.2 21.6 5.9 44.6 9.2 68.4 9.2s46.9-3.3 68.4-9.2c-2.7 8-4.4 16.3-4.4 25.2 0 44.2 35.8 80 80 80s80-35.8 80-80c0-37.3-25.7-68.4-60.3-77.3C425 320.4 448 274.6 448 224v-64h48c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM80 464c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32zm320-32c0 17.6-14.4 32-32 32s-32-14.4-32-32 14.4-32 32-32 32 14.4 32 32z\"]\n};\nvar faBackspace = {\n  prefix: 'fas',\n  iconName: 'backspace',\n  icon: [640, 512, [], \"f55a\", \"M576 64H205.26A63.97 63.97 0 0 0 160 82.75L9.37 233.37c-12.5 12.5-12.5 32.76 0 45.25L160 429.25c12 12 28.28 18.75 45.25 18.75H576c35.35 0 64-28.65 64-64V128c0-35.35-28.65-64-64-64zm-84.69 254.06c6.25 6.25 6.25 16.38 0 22.63l-22.62 22.62c-6.25 6.25-16.38 6.25-22.63 0L384 301.25l-62.06 62.06c-6.25 6.25-16.38 6.25-22.63 0l-22.62-22.62c-6.25-6.25-6.25-16.38 0-22.63L338.75 256l-62.06-62.06c-6.25-6.25-6.25-16.38 0-22.63l22.62-22.62c6.25-6.25 16.38-6.25 22.63 0L384 210.75l62.06-62.06c6.25-6.25 16.38-6.25 22.63 0l22.62 22.62c6.25 6.25 6.25 16.38 0 22.63L429.25 256l62.06 62.06z\"]\n};\nvar faBackward = {\n  prefix: 'fas',\n  iconName: 'backward',\n  icon: [512, 512, [], \"f04a\", \"M11.5 280.6l192 160c20.6 17.2 52.5 2.8 52.5-24.6V96c0-27.4-31.9-41.8-52.5-24.6l-192 160c-15.3 12.8-15.3 36.4 0 49.2zm256 0l192 160c20.6 17.2 52.5 2.8 52.5-24.6V96c0-27.4-31.9-41.8-52.5-24.6l-192 160c-15.3 12.8-15.3 36.4 0 49.2z\"]\n};\nvar faBacon = {\n  prefix: 'fas',\n  iconName: 'bacon',\n  icon: [576, 512, [], \"f7e5\", \"M218.92 336.39c34.89-34.89 44.2-59.7 54.05-86 10.61-28.29 21.59-57.54 61.37-97.34s69.05-50.77 97.35-61.38c23.88-9 46.64-17.68 76.79-45.37L470.81 8.91a31 31 0 0 0-40.18-2.83c-13.64 10.1-25.15 14.39-41 20.3C247 79.52 209.26 191.29 200.65 214.1c-29.75 78.83-89.55 94.68-98.72 98.09-24.86 9.26-54.73 20.38-91.07 50.36C-3 374-3.63 395 9.07 407.61l35.76 35.51C80 410.52 107 400.15 133 390.39c26.27-9.84 51.06-19.12 85.92-54zm348-232l-35.75-35.51c-35.19 32.63-62.18 43-88.25 52.79-26.26 9.85-51.06 19.16-85.95 54s-44.19 59.69-54 86C292.33 290 281.34 319.22 241.55 359s-69 50.73-97.3 61.32c-23.86 9-46.61 17.66-76.72 45.33l37.68 37.43a31 31 0 0 0 40.18 2.82c13.6-10.06 25.09-14.34 40.94-20.24 142.2-53 180-164.1 188.94-187.69C405 219.18 464.8 203.3 474 199.86c24.87-9.27 54.74-20.4 91.11-50.41 13.89-11.4 14.52-32.45 1.82-45.05z\"]\n};\nvar faBacteria = {\n  prefix: 'fas',\n  iconName: 'bacteria',\n  icon: [640, 512, [], \"e059\", \"M272.35,226.4A17.71,17.71,0,0,0,281.46,203l-4-9.08a121.29,121.29,0,0,1,12.36-3.08A83.34,83.34,0,0,0,323.57,177l10,9a17.76,17.76,0,1,0,23.92-26.27l-9.72-8.76a83.12,83.12,0,0,0,11.65-48.18l11.85-3.51a17.73,17.73,0,1,0-10.15-34l-11.34,3.36a84,84,0,0,0-36.38-35.57l2.84-10.85a17.8,17.8,0,0,0-34.47-8.93l-2.82,10.78a83.25,83.25,0,0,0-16.74,1.1C250.83,27,240,30.22,229.1,33.39l-3.38-9.46a17.8,17.8,0,0,0-33.56,11.89l3.49,9.8a286.74,286.74,0,0,0-43.94,23.57l-6.32-8.43a17.9,17.9,0,0,0-24.94-3.6A17.69,17.69,0,0,0,116.84,82l6.45,8.61a286.59,286.59,0,0,0-34.95,35.33l-8.82-6.42a17.84,17.84,0,0,0-24.89,3.86,17.66,17.66,0,0,0,3.88,24.77l8.88,6.47a286.6,286.6,0,0,0-23,43.91l-10.48-3.59a17.73,17.73,0,1,0-11.59,33.52L32.67,232c-2.79,10-5.79,19.84-7.52,30.22a83.16,83.16,0,0,0-.82,19l-11.58,3.43a17.73,17.73,0,1,0,10.13,34l11.27-3.33a83.51,83.51,0,0,0,36.39,35.43l-2.88,11.06a17.81,17.81,0,0,0,34.48,8.92l2.87-11c1,0,2.07.26,3.1.26a83.39,83.39,0,0,0,45.65-13.88l8.59,8.8a17.77,17.77,0,0,0,25.56-24.7l-9.14-9.37a83.41,83.41,0,0,0,12.08-31.05,119.08,119.08,0,0,1,3.87-15.53l9,4.22a17.74,17.74,0,1,0,15.15-32.09l-8.8-4.11c.67-1,1.2-2.08,1.9-3.05a119.89,119.89,0,0,1,7.87-9.41,121.73,121.73,0,0,1,11.65-11.4,119.49,119.49,0,0,1,9.94-7.82c1.12-.77,2.32-1.42,3.47-2.15l3.92,8.85a17.86,17.86,0,0,0,16.32,10.58A18.14,18.14,0,0,0,272.35,226.4ZM128,256a32,32,0,1,1,32-32A32,32,0,0,1,128,256Zm80-96a16,16,0,1,1,16-16A16,16,0,0,1,208,160Zm431.26,45.3a17.79,17.79,0,0,0-17.06-12.69,17.55,17.55,0,0,0-5.08.74l-11.27,3.33a83.61,83.61,0,0,0-36.39-35.43l2.88-11.06a17.81,17.81,0,0,0-34.48-8.91l-2.87,11c-1,0-2.07-.26-3.1-.26a83.32,83.32,0,0,0-45.65,13.89l-8.59-8.81a17.77,17.77,0,0,0-25.56,24.7l9.14,9.37a83.28,83.28,0,0,0-12.08,31.06,119.34,119.34,0,0,1-3.87,15.52l-9-4.22a17.74,17.74,0,1,0-15.15,32.09l8.8,4.11c-.67,1-1.2,2.08-1.89,3.05a117.71,117.71,0,0,1-7.94,9.47,119,119,0,0,1-11.57,11.33,121.59,121.59,0,0,1-10,7.83c-1.12.77-2.32,1.42-3.47,2.15l-3.92-8.85a17.86,17.86,0,0,0-16.32-10.58,18.14,18.14,0,0,0-7.18,1.5A17.71,17.71,0,0,0,358.54,309l4,9.08a118.71,118.71,0,0,1-12.36,3.08,83.34,83.34,0,0,0-33.77,13.9l-10-9a17.77,17.77,0,1,0-23.92,26.28l9.72,8.75a83.12,83.12,0,0,0-11.65,48.18l-11.86,3.51a17.73,17.73,0,1,0,10.16,34l11.34-3.36A84,84,0,0,0,326.61,479l-2.84,10.85a17.8,17.8,0,0,0,34.47,8.93L361.06,488a83.3,83.3,0,0,0,16.74-1.1c11.37-1.89,22.24-5.07,33.1-8.24l3.38,9.46a17.8,17.8,0,0,0,33.56-11.89l-3.49-9.79a287.66,287.66,0,0,0,43.94-23.58l6.32,8.43a17.88,17.88,0,0,0,24.93,3.6A17.67,17.67,0,0,0,523.16,430l-6.45-8.61a287.37,287.37,0,0,0,34.95-35.34l8.82,6.42a17.76,17.76,0,1,0,21-28.63l-8.88-6.46a287.17,287.17,0,0,0,23-43.92l10.48,3.59a17.73,17.73,0,1,0,11.59-33.52L607.33,280c2.79-10,5.79-19.84,7.52-30.21a83.27,83.27,0,0,0,.82-19.05l11.58-3.43A17.7,17.7,0,0,0,639.26,205.3ZM416,416a32,32,0,1,1,32-32A32,32,0,0,1,416,416Z\"]\n};\nvar faBacterium = {\n  prefix: 'fas',\n  iconName: 'bacterium',\n  icon: [512, 512, [], \"e05a\", \"M511,102.93A23.76,23.76,0,0,0,481.47,87l-15.12,4.48a111.85,111.85,0,0,0-48.5-47.42l3.79-14.47a23.74,23.74,0,0,0-46-11.91l-3.76,14.37a111.94,111.94,0,0,0-22.33,1.47,386.74,386.74,0,0,0-44.33,10.41l-4.3-12a23.74,23.74,0,0,0-44.75,15.85l4.3,12.05a383.4,383.4,0,0,0-58.69,31.83l-8-10.63a23.85,23.85,0,0,0-33.24-4.8,23.57,23.57,0,0,0-4.83,33.09l8,10.63a386.14,386.14,0,0,0-46.7,47.44l-11-8a23.68,23.68,0,1,0-28,38.17l11.09,8.06a383.45,383.45,0,0,0-30.92,58.75l-12.93-4.43a23.65,23.65,0,1,0-15.47,44.69l13,4.48a385.81,385.81,0,0,0-9.3,40.53A111.58,111.58,0,0,0,32.44,375L17,379.56a23.64,23.64,0,0,0,13.51,45.31l15-4.44a111.49,111.49,0,0,0,48.53,47.24l-3.85,14.75a23.66,23.66,0,0,0,17,28.83,24.7,24.7,0,0,0,6,.75,23.73,23.73,0,0,0,23-17.7L140,479.67c1.37.05,2.77.35,4.13.35A111.22,111.22,0,0,0,205,461.5l11.45,11.74a23.7,23.7,0,0,0,34.08-32.93l-12.19-12.5a111,111,0,0,0,16.11-41.4,158.69,158.69,0,0,1,5.16-20.71l12,5.64a23.66,23.66,0,1,0,20.19-42.79l-11.72-5.49c.89-1.32,1.59-2.77,2.52-4.06a157.86,157.86,0,0,1,10.46-12.49,159.5,159.5,0,0,1,15.59-15.28,162.18,162.18,0,0,1,13.23-10.4c1.5-1,3.1-1.89,4.63-2.87l5.23,11.8a23.74,23.74,0,0,0,43.48-19.08l-5.36-12.11a158.87,158.87,0,0,1,16.49-4.1,111,111,0,0,0,45-18.54l13.33,12a23.69,23.69,0,1,0,31.88-35l-12.94-11.67A110.83,110.83,0,0,0,479.21,137L495,132.32A23.61,23.61,0,0,0,511,102.93ZM160,368a48,48,0,1,1,48-48A48,48,0,0,1,160,368Zm80-136a24,24,0,1,1,24-24A24,24,0,0,1,240,232Z\"]\n};\nvar faBahai = {\n  prefix: 'fas',\n  iconName: 'bahai',\n  icon: [512, 512, [], \"f666\", \"M496.25 202.52l-110-15.44 41.82-104.34c6.67-16.64-11.6-32.18-26.59-22.63L307.44 120 273.35 12.82C270.64 4.27 263.32 0 256 0c-7.32 0-14.64 4.27-17.35 12.82l-34.09 107.19-94.04-59.89c-14.99-9.55-33.25 5.99-26.59 22.63l41.82 104.34-110 15.43c-17.54 2.46-21.68 26.27-6.03 34.67l98.16 52.66-74.48 83.54c-10.92 12.25-1.72 30.93 13.29 30.93 1.31 0 2.67-.14 4.07-.45l108.57-23.65-4.11 112.55c-.43 11.65 8.87 19.22 18.41 19.22 5.15 0 10.39-2.21 14.2-7.18l68.18-88.9 68.18 88.9c3.81 4.97 9.04 7.18 14.2 7.18 9.54 0 18.84-7.57 18.41-19.22l-4.11-112.55 108.57 23.65c17.36 3.76 29.21-17.2 17.35-30.49l-74.48-83.54 98.16-52.66c15.64-8.39 11.5-32.2-6.04-34.66zM338.51 311.68l-51.89-11.3 1.97 53.79L256 311.68l-32.59 42.49 1.96-53.79-51.89 11.3 35.6-39.93-46.92-25.17 52.57-7.38-19.99-49.87 44.95 28.62L256 166.72l16.29 51.23 44.95-28.62-19.99 49.87 52.57 7.38-46.92 25.17 35.61 39.93z\"]\n};\nvar faBalanceScale = {\n  prefix: 'fas',\n  iconName: 'balance-scale',\n  icon: [640, 512, [], \"f24e\", \"M256 336h-.02c0-16.18 1.34-8.73-85.05-181.51-17.65-35.29-68.19-35.36-85.87 0C-2.06 328.75.02 320.33.02 336H0c0 44.18 57.31 80 128 80s128-35.82 128-80zM128 176l72 144H56l72-144zm511.98 160c0-16.18 1.34-8.73-85.05-181.51-17.65-35.29-68.19-35.36-85.87 0-87.12 174.26-85.04 165.84-85.04 181.51H384c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02zM440 320l72-144 72 144H440zm88 128H352V153.25c23.51-10.29 41.16-31.48 46.39-57.25H528c8.84 0 16-7.16 16-16V48c0-8.84-7.16-16-16-16H383.64C369.04 12.68 346.09 0 320 0s-49.04 12.68-63.64 32H112c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h129.61c5.23 25.76 22.87 46.96 46.39 57.25V448H112c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z\"]\n};\nvar faBalanceScaleLeft = {\n  prefix: 'fas',\n  iconName: 'balance-scale-left',\n  icon: [640, 512, [], \"f515\", \"M528 448H352V153.25c20.42-8.94 36.1-26.22 43.38-47.47l132-44.26c8.38-2.81 12.89-11.88 10.08-20.26l-10.17-30.34C524.48 2.54 515.41-1.97 507.03.84L389.11 40.37C375.3 16.36 349.69 0 320 0c-44.18 0-80 35.82-80 80 0 3.43.59 6.71 1.01 10.03l-128.39 43.05c-8.38 2.81-12.89 11.88-10.08 20.26l10.17 30.34c2.81 8.38 11.88 12.89 20.26 10.08l142.05-47.63c4.07 2.77 8.43 5.12 12.99 7.12V496c0 8.84 7.16 16 16 16h224c8.84 0 16-7.16 16-16v-32c-.01-8.84-7.17-16-16.01-16zm111.98-144c0-16.18 1.34-8.73-85.05-181.51-17.65-35.29-68.19-35.36-85.87 0-87.12 174.26-85.04 165.84-85.04 181.51H384c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02zM440 288l72-144 72 144H440zm-269.07-37.51c-17.65-35.29-68.19-35.36-85.87 0C-2.06 424.75.02 416.33.02 432H0c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02c0-16.18 1.34-8.73-85.05-181.51zM56 416l72-144 72 144H56z\"]\n};\nvar faBalanceScaleRight = {\n  prefix: 'fas',\n  iconName: 'balance-scale-right',\n  icon: [640, 512, [], \"f516\", \"M96 464v32c0 8.84 7.16 16 16 16h224c8.84 0 16-7.16 16-16V153.25c4.56-2 8.92-4.35 12.99-7.12l142.05 47.63c8.38 2.81 17.45-1.71 20.26-10.08l10.17-30.34c2.81-8.38-1.71-17.45-10.08-20.26l-128.4-43.05c.42-3.32 1.01-6.6 1.01-10.03 0-44.18-35.82-80-80-80-29.69 0-55.3 16.36-69.11 40.37L132.96.83c-8.38-2.81-17.45 1.71-20.26 10.08l-10.17 30.34c-2.81 8.38 1.71 17.45 10.08 20.26l132 44.26c7.28 21.25 22.96 38.54 43.38 47.47V448H112c-8.84 0-16 7.16-16 16zM0 304c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02c0-15.67 2.08-7.25-85.05-181.51-17.68-35.36-68.22-35.29-85.87 0C-1.32 295.27.02 287.82.02 304H0zm56-16l72-144 72 144H56zm328.02 144H384c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02c0-15.67 2.08-7.25-85.05-181.51-17.68-35.36-68.22-35.29-85.87 0-86.38 172.78-85.04 165.33-85.04 181.51zM440 416l72-144 72 144H440z\"]\n};\nvar faBan = {\n  prefix: 'fas',\n  iconName: 'ban',\n  icon: [512, 512, [], \"f05e\", \"M256 8C119.034 8 8 119.033 8 256s111.034 248 248 248 248-111.034 248-248S392.967 8 256 8zm130.108 117.892c65.448 65.448 70 165.481 20.677 235.637L150.47 105.216c70.204-49.356 170.226-44.735 235.638 20.676zM125.892 386.108c-65.448-65.448-70-165.481-20.677-235.637L361.53 406.784c-70.203 49.356-170.226 44.736-235.638-20.676z\"]\n};\nvar faBandAid = {\n  prefix: 'fas',\n  iconName: 'band-aid',\n  icon: [640, 512, [], \"f462\", \"M0 160v192c0 35.3 28.7 64 64 64h96V96H64c-35.3 0-64 28.7-64 64zm576-64h-96v320h96c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64zM192 416h256V96H192v320zm176-232c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm0 96c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm-96-96c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm0 96c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24z\"]\n};\nvar faBarcode = {\n  prefix: 'fas',\n  iconName: 'barcode',\n  icon: [512, 512, [], \"f02a\", \"M0 448V64h18v384H0zm26.857-.273V64H36v383.727h-9.143zm27.143 0V64h8.857v383.727H54zm44.857 0V64h8.857v383.727h-8.857zm36 0V64h17.714v383.727h-17.714zm44.857 0V64h8.857v383.727h-8.857zm18 0V64h8.857v383.727h-8.857zm18 0V64h8.857v383.727h-8.857zm35.715 0V64h18v383.727h-18zm44.857 0V64h18v383.727h-18zm35.999 0V64h18.001v383.727h-18.001zm36.001 0V64h18.001v383.727h-18.001zm26.857 0V64h18v383.727h-18zm45.143 0V64h26.857v383.727h-26.857zm35.714 0V64h9.143v383.727H476zm18 .273V64h18v384h-18z\"]\n};\nvar faBars = {\n  prefix: 'fas',\n  iconName: 'bars',\n  icon: [448, 512, [], \"f0c9\", \"M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"]\n};\nvar faBaseballBall = {\n  prefix: 'fas',\n  iconName: 'baseball-ball',\n  icon: [496, 512, [], \"f433\", \"M368.5 363.9l28.8-13.9c11.1 22.9 26 43.2 44.1 60.9 34-42.5 54.5-96.3 54.5-154.9 0-58.5-20.4-112.2-54.2-154.6-17.8 17.3-32.6 37.1-43.6 59.5l-28.7-14.1c12.8-26 30-49 50.8-69C375.6 34.7 315 8 248 8 181.1 8 120.5 34.6 75.9 77.7c20.7 19.9 37.9 42.9 50.7 68.8l-28.7 14.1c-11-22.3-25.7-42.1-43.5-59.4C20.4 143.7 0 197.4 0 256c0 58.6 20.4 112.3 54.4 154.7 18.2-17.7 33.2-38 44.3-61l28.8 13.9c-12.9 26.7-30.3 50.3-51.5 70.7 44.5 43.1 105.1 69.7 172 69.7 66.8 0 127.3-26.5 171.9-69.5-21.1-20.4-38.5-43.9-51.4-70.6zm-228.3-32l-30.5-9.8c14.9-46.4 12.7-93.8-.6-134l30.4-10c15 45.6 18 99.9.7 153.8zm216.3-153.4l30.4 10c-13.2 40.1-15.5 87.5-.6 134l-30.5 9.8c-17.3-54-14.3-108.3.7-153.8z\"]\n};\nvar faBasketballBall = {\n  prefix: 'fas',\n  iconName: 'basketball-ball',\n  icon: [496, 512, [], \"f434\", \"M212.3 10.3c-43.8 6.3-86.2 24.1-122.2 53.8l77.4 77.4c27.8-35.8 43.3-81.2 44.8-131.2zM248 222L405.9 64.1c-42.4-35-93.6-53.5-145.5-56.1-1.2 63.9-21.5 122.3-58.7 167.7L248 222zM56.1 98.1c-29.7 36-47.5 78.4-53.8 122.2 50-1.5 95.5-17 131.2-44.8L56.1 98.1zm272.2 204.2c45.3-37.1 103.7-57.4 167.7-58.7-2.6-51.9-21.1-103.1-56.1-145.5L282 256l46.3 46.3zM248 290L90.1 447.9c42.4 34.9 93.6 53.5 145.5 56.1 1.3-64 21.6-122.4 58.7-167.7L248 290zm191.9 123.9c29.7-36 47.5-78.4 53.8-122.2-50.1 1.6-95.5 17.1-131.2 44.8l77.4 77.4zM167.7 209.7C122.3 246.9 63.9 267.3 0 268.4c2.6 51.9 21.1 103.1 56.1 145.5L214 256l-46.3-46.3zm116 292c43.8-6.3 86.2-24.1 122.2-53.8l-77.4-77.4c-27.7 35.7-43.2 81.2-44.8 131.2z\"]\n};\nvar faBath = {\n  prefix: 'fas',\n  iconName: 'bath',\n  icon: [512, 512, [], \"f2cd\", \"M32,384a95.4,95.4,0,0,0,32,71.09V496a16,16,0,0,0,16,16h32a16,16,0,0,0,16-16V480H384v16a16,16,0,0,0,16,16h32a16,16,0,0,0,16-16V455.09A95.4,95.4,0,0,0,480,384V336H32ZM496,256H80V69.25a21.26,21.26,0,0,1,36.28-15l19.27,19.26c-13.13,29.88-7.61,59.11,8.62,79.73l-.17.17A16,16,0,0,0,144,176l11.31,11.31a16,16,0,0,0,22.63,0L283.31,81.94a16,16,0,0,0,0-22.63L272,48a16,16,0,0,0-22.62,0l-.17.17c-20.62-16.23-49.83-21.75-79.73-8.62L150.22,20.28A69.25,69.25,0,0,0,32,69.25V256H16A16,16,0,0,0,0,272v16a16,16,0,0,0,16,16H496a16,16,0,0,0,16-16V272A16,16,0,0,0,496,256Z\"]\n};\nvar faBatteryEmpty = {\n  prefix: 'fas',\n  iconName: 'battery-empty',\n  icon: [640, 512, [], \"f244\", \"M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48z\"]\n};\nvar faBatteryFull = {\n  prefix: 'fas',\n  iconName: 'battery-full',\n  icon: [640, 512, [], \"f240\", \"M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48zm-48 96H96v128h416V192z\"]\n};\nvar faBatteryHalf = {\n  prefix: 'fas',\n  iconName: 'battery-half',\n  icon: [640, 512, [], \"f242\", \"M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48zm-240 96H96v128h224V192z\"]\n};\nvar faBatteryQuarter = {\n  prefix: 'fas',\n  iconName: 'battery-quarter',\n  icon: [640, 512, [], \"f243\", \"M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48zm-336 96H96v128h128V192z\"]\n};\nvar faBatteryThreeQuarters = {\n  prefix: 'fas',\n  iconName: 'battery-three-quarters',\n  icon: [640, 512, [], \"f241\", \"M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48zm-144 96H96v128h320V192z\"]\n};\nvar faBed = {\n  prefix: 'fas',\n  iconName: 'bed',\n  icon: [640, 512, [], \"f236\", \"M176 256c44.11 0 80-35.89 80-80s-35.89-80-80-80-80 35.89-80 80 35.89 80 80 80zm352-128H304c-8.84 0-16 7.16-16 16v144H64V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v352c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-48h512v48c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V240c0-61.86-50.14-112-112-112z\"]\n};\nvar faBeer = {\n  prefix: 'fas',\n  iconName: 'beer',\n  icon: [448, 512, [], \"f0fc\", \"M368 96h-48V56c0-13.255-10.745-24-24-24H24C10.745 32 0 42.745 0 56v400c0 13.255 10.745 24 24 24h272c13.255 0 24-10.745 24-24v-42.11l80.606-35.977C429.396 365.063 448 336.388 448 304.86V176c0-44.112-35.888-80-80-80zm16 208.86a16.018 16.018 0 0 1-9.479 14.611L320 343.805V160h48c8.822 0 16 7.178 16 16v128.86zM208 384c-8.836 0-16-7.164-16-16V144c0-8.836 7.164-16 16-16s16 7.164 16 16v224c0 8.836-7.164 16-16 16zm-96 0c-8.836 0-16-7.164-16-16V144c0-8.836 7.164-16 16-16s16 7.164 16 16v224c0 8.836-7.164 16-16 16z\"]\n};\nvar faBell = {\n  prefix: 'fas',\n  iconName: 'bell',\n  icon: [448, 512, [], \"f0f3\", \"M224 512c35.32 0 63.97-28.65 63.97-64H160.03c0 35.35 28.65 64 63.97 64zm215.39-149.71c-19.32-20.76-55.47-51.99-55.47-154.29 0-77.7-54.48-139.9-127.94-155.16V32c0-17.67-14.32-32-31.98-32s-31.98 14.33-31.98 32v20.84C118.56 68.1 64.08 130.3 64.08 208c0 102.3-36.15 133.53-55.47 154.29-6 6.45-8.66 14.16-8.61 21.71.11 16.4 12.98 32 32.1 32h383.8c19.12 0 32-15.6 32.1-32 .05-7.55-2.61-15.27-8.61-21.71z\"]\n};\nvar faBellSlash = {\n  prefix: 'fas',\n  iconName: 'bell-slash',\n  icon: [640, 512, [], \"f1f6\", \"M633.82 458.1l-90.62-70.05c.19-1.38.8-2.66.8-4.06.05-7.55-2.61-15.27-8.61-21.71-19.32-20.76-55.47-51.99-55.47-154.29 0-77.7-54.48-139.9-127.94-155.16V32c0-17.67-14.32-32-31.98-32s-31.98 14.33-31.98 32v20.84c-40.33 8.38-74.66 31.07-97.59 62.57L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.35 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.42-6.97 4.17-17.02-2.81-22.45zM157.23 251.54c-8.61 67.96-36.41 93.33-52.62 110.75-6 6.45-8.66 14.16-8.61 21.71.11 16.4 12.98 32 32.1 32h241.92L157.23 251.54zM320 512c35.32 0 63.97-28.65 63.97-64H256.03c0 35.35 28.65 64 63.97 64z\"]\n};\nvar faBezierCurve = {\n  prefix: 'fas',\n  iconName: 'bezier-curve',\n  icon: [640, 512, [], \"f55b\", \"M368 32h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32zM208 88h-84.75C113.75 64.56 90.84 48 64 48 28.66 48 0 76.65 0 112s28.66 64 64 64c26.84 0 49.75-16.56 59.25-40h79.73c-55.37 32.52-95.86 87.32-109.54 152h49.4c11.3-41.61 36.77-77.21 71.04-101.56-3.7-8.08-5.88-16.99-5.88-26.44V88zm-48 232H64c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32zM576 48c-26.84 0-49.75 16.56-59.25 40H432v72c0 9.45-2.19 18.36-5.88 26.44 34.27 24.35 59.74 59.95 71.04 101.56h49.4c-13.68-64.68-54.17-119.48-109.54-152h79.73c9.5 23.44 32.41 40 59.25 40 35.34 0 64-28.65 64-64s-28.66-64-64-64zm0 272h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32z\"]\n};\nvar faBible = {\n  prefix: 'fas',\n  iconName: 'bible',\n  icon: [448, 512, [], \"f647\", \"M448 358.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM144 144c0-8.84 7.16-16 16-16h48V80c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v48h48c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16h-48v112c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16V192h-48c-8.84 0-16-7.16-16-16v-32zm236.8 304H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8v64z\"]\n};\nvar faBicycle = {\n  prefix: 'fas',\n  iconName: 'bicycle',\n  icon: [640, 512, [], \"f206\", \"M512.509 192.001c-16.373-.064-32.03 2.955-46.436 8.495l-77.68-125.153A24 24 0 0 0 368.001 64h-64c-8.837 0-16 7.163-16 16v16c0 8.837 7.163 16 16 16h50.649l14.896 24H256.002v-16c0-8.837-7.163-16-16-16h-87.459c-13.441 0-24.777 10.999-24.536 24.437.232 13.044 10.876 23.563 23.995 23.563h48.726l-29.417 47.52c-13.433-4.83-27.904-7.483-42.992-7.52C58.094 191.83.412 249.012.002 319.236-.413 390.279 57.055 448 128.002 448c59.642 0 109.758-40.793 123.967-96h52.033a24 24 0 0 0 20.406-11.367L410.37 201.77l14.938 24.067c-25.455 23.448-41.385 57.081-41.307 94.437.145 68.833 57.899 127.051 126.729 127.719 70.606.685 128.181-55.803 129.255-125.996 1.086-70.941-56.526-129.72-127.476-129.996zM186.75 265.772c9.727 10.529 16.673 23.661 19.642 38.228h-43.306l23.664-38.228zM128.002 400c-44.112 0-80-35.888-80-80s35.888-80 80-80c5.869 0 11.586.653 17.099 1.859l-45.505 73.509C89.715 331.327 101.213 352 120.002 352h81.3c-12.37 28.225-40.562 48-73.3 48zm162.63-96h-35.624c-3.96-31.756-19.556-59.894-42.383-80.026L237.371 184h127.547l-74.286 120zm217.057 95.886c-41.036-2.165-74.049-35.692-75.627-76.755-.812-21.121 6.633-40.518 19.335-55.263l44.433 71.586c4.66 7.508 14.524 9.816 22.032 5.156l13.594-8.437c7.508-4.66 9.817-14.524 5.156-22.032l-44.468-71.643a79.901 79.901 0 0 1 19.858-2.497c44.112 0 80 35.888 80 80-.001 45.54-38.252 82.316-84.313 79.885z\"]\n};\nvar faBiking = {\n  prefix: 'fas',\n  iconName: 'biking',\n  icon: [640, 512, [], \"f84a\", \"M400 96a48 48 0 1 0-48-48 48 48 0 0 0 48 48zm-4 121a31.9 31.9 0 0 0 20 7h64a32 32 0 0 0 0-64h-52.78L356 103a31.94 31.94 0 0 0-40.81.68l-112 96a32 32 0 0 0 3.08 50.92L288 305.12V416a32 32 0 0 0 64 0V288a32 32 0 0 0-14.25-26.62l-41.36-27.57 58.25-49.92zm116 39a128 128 0 1 0 128 128 128 128 0 0 0-128-128zm0 192a64 64 0 1 1 64-64 64 64 0 0 1-64 64zM128 256a128 128 0 1 0 128 128 128 128 0 0 0-128-128zm0 192a64 64 0 1 1 64-64 64 64 0 0 1-64 64z\"]\n};\nvar faBinoculars = {\n  prefix: 'fas',\n  iconName: 'binoculars',\n  icon: [512, 512, [], \"f1e5\", \"M416 48c0-8.84-7.16-16-16-16h-64c-8.84 0-16 7.16-16 16v48h96V48zM63.91 159.99C61.4 253.84 3.46 274.22 0 404v44c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32V288h32V128H95.84c-17.63 0-31.45 14.37-31.93 31.99zm384.18 0c-.48-17.62-14.3-31.99-31.93-31.99H320v160h32v160c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-44c-3.46-129.78-61.4-150.16-63.91-244.01zM176 32h-64c-8.84 0-16 7.16-16 16v48h96V48c0-8.84-7.16-16-16-16zm48 256h64V128h-64v160z\"]\n};\nvar faBiohazard = {\n  prefix: 'fas',\n  iconName: 'biohazard',\n  icon: [576, 512, [], \"f780\", \"M287.9 112c18.6 0 36.2 3.8 52.8 9.6 13.3-10.3 23.6-24.3 29.5-40.7-25.2-10.9-53-17-82.2-17-29.1 0-56.9 6-82.1 16.9 5.9 16.4 16.2 30.4 29.5 40.7 16.5-5.7 34-9.5 52.5-9.5zM163.6 438.7c12-11.8 20.4-26.4 24.5-42.4-32.9-26.4-54.8-65.3-58.9-109.6-8.5-2.8-17.2-4.6-26.4-4.6-7.6 0-15.2 1-22.5 3.1 4.1 62.8 35.8 118 83.3 153.5zm224.2-42.6c4.1 16 12.5 30.7 24.5 42.5 47.4-35.5 79.1-90.7 83-153.5-7.2-2-14.7-3-22.2-3-9.2 0-18 1.9-26.6 4.7-4.1 44.2-26 82.9-58.7 109.3zm113.5-205c-17.6-10.4-36.3-16.6-55.3-19.9 6-17.7 10-36.4 10-56.2 0-41-14.5-80.8-41-112.2-2.5-3-6.6-3.7-10-1.8-3.3 1.9-4.8 6-3.6 9.7 4.5 13.8 6.6 26.3 6.6 38.5 0 67.8-53.8 122.9-120 122.9S168 117 168 49.2c0-12.1 2.2-24.7 6.6-38.5 1.2-3.7-.3-7.8-3.6-9.7-3.4-1.9-7.5-1.2-10 1.8C134.6 34.2 120 74 120 115c0 19.8 3.9 38.5 10 56.2-18.9 3.3-37.7 9.5-55.3 19.9-34.6 20.5-61 53.3-74.3 92.4-1.3 3.7.2 7.7 3.5 9.8 3.3 2 7.5 1.3 10-1.6 9.4-10.8 19-19.1 29.2-25.1 57.3-33.9 130.8-13.7 163.9 45 33.1 58.7 13.4 134-43.9 167.9-10.2 6.1-22 10.4-35.8 13.4-3.7.8-6.4 4.2-6.4 8.1.1 4 2.7 7.3 6.5 8 39.7 7.8 80.6.8 115.2-19.7 18-10.6 32.9-24.5 45.3-40.1 12.4 15.6 27.3 29.5 45.3 40.1 34.6 20.5 75.5 27.5 115.2 19.7 3.8-.7 6.4-4 6.5-8 0-3.9-2.6-7.3-6.4-8.1-13.9-2.9-25.6-7.3-35.8-13.4-57.3-33.9-77-109.2-43.9-167.9s106.6-78.9 163.9-45c10.2 6.1 19.8 14.3 29.2 25.1 2.5 2.9 6.7 3.6 10 1.6s4.8-6.1 3.5-9.8c-13.1-39.1-39.5-72-74.1-92.4zm-213.4 129c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48z\"]\n};\nvar faBirthdayCake = {\n  prefix: 'fas',\n  iconName: 'birthday-cake',\n  icon: [448, 512, [], \"f1fd\", \"M448 384c-28.02 0-31.26-32-74.5-32-43.43 0-46.825 32-74.75 32-27.695 0-31.454-32-74.75-32-42.842 0-47.218 32-74.5 32-28.148 0-31.202-32-74.75-32-43.547 0-46.653 32-74.75 32v-80c0-26.5 21.5-48 48-48h16V112h64v144h64V112h64v144h64V112h64v144h16c26.5 0 48 21.5 48 48v80zm0 128H0v-96c43.356 0 46.767-32 74.75-32 27.951 0 31.253 32 74.75 32 42.843 0 47.217-32 74.5-32 28.148 0 31.201 32 74.75 32 43.357 0 46.767-32 74.75-32 27.488 0 31.252 32 74.5 32v96zM96 96c-17.75 0-32-14.25-32-32 0-31 32-23 32-64 12 0 32 29.5 32 56s-14.25 40-32 40zm128 0c-17.75 0-32-14.25-32-32 0-31 32-23 32-64 12 0 32 29.5 32 56s-14.25 40-32 40zm128 0c-17.75 0-32-14.25-32-32 0-31 32-23 32-64 12 0 32 29.5 32 56s-14.25 40-32 40z\"]\n};\nvar faBlender = {\n  prefix: 'fas',\n  iconName: 'blender',\n  icon: [512, 512, [], \"f517\", \"M416 384H160c-35.35 0-64 28.65-64 64v32c0 17.67 14.33 32 32 32h320c17.67 0 32-14.33 32-32v-32c0-35.35-28.65-64-64-64zm-128 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm40-416h166.54L512 0H48C21.49 0 0 21.49 0 48v160c0 26.51 21.49 48 48 48h103.27l8.73 96h256l17.46-64H328c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h114.18l17.46-64H328c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h140.36l17.46-64H328c-4.42 0-8-3.58-8-8V72c0-4.42 3.58-8 8-8zM64 192V64h69.82l11.64 128H64z\"]\n};\nvar faBlenderPhone = {\n  prefix: 'fas',\n  iconName: 'blender-phone',\n  icon: [576, 512, [], \"f6b6\", \"M392 64h166.54L576 0H192v352h288l17.46-64H392c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h114.18l17.46-64H392c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h140.36l17.46-64H392c-4.42 0-8-3.58-8-8V72c0-4.42 3.58-8 8-8zM158.8 335.01l-25.78-63.26c-2.78-6.81-9.8-10.99-17.24-10.26l-45.03 4.42c-17.28-46.94-17.65-99.78 0-147.72l45.03 4.42c7.43.73 14.46-3.46 17.24-10.26l25.78-63.26c3.02-7.39.2-15.85-6.68-20.07l-39.28-24.1C98.51-3.87 80.09-.5 68.95 11.97c-92.57 103.6-92 259.55 2.1 362.49 9.87 10.8 29.12 12.48 41.65 4.8l39.41-24.18c6.89-4.22 9.7-12.67 6.69-20.07zM480 384H192c-35.35 0-64 28.65-64 64v32c0 17.67 14.33 32 32 32h352c17.67 0 32-14.33 32-32v-32c0-35.35-28.65-64-64-64zm-144 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faBlind = {\n  prefix: 'fas',\n  iconName: 'blind',\n  icon: [384, 512, [], \"f29d\", \"M380.15 510.837a8 8 0 0 1-10.989-2.687l-125.33-206.427a31.923 31.923 0 0 0 12.958-9.485l126.048 207.608a8 8 0 0 1-2.687 10.991zM142.803 314.338l-32.54 89.485 36.12 88.285c6.693 16.36 25.377 24.192 41.733 17.501 16.357-6.692 24.193-25.376 17.501-41.734l-62.814-153.537zM96 88c24.301 0 44-19.699 44-44S120.301 0 96 0 52 19.699 52 44s19.699 44 44 44zm154.837 169.128l-120-152c-4.733-5.995-11.75-9.108-18.837-9.112V96H80v.026c-7.146.003-14.217 3.161-18.944 9.24L0 183.766v95.694c0 13.455 11.011 24.791 24.464 24.536C37.505 303.748 48 293.1 48 280v-79.766l16-20.571v140.698L9.927 469.055c-6.04 16.609 2.528 34.969 19.138 41.009 16.602 6.039 34.968-2.524 41.009-19.138L136 309.638V202.441l-31.406-39.816a4 4 0 1 1 6.269-4.971l102.3 129.217c9.145 11.584 24.368 11.339 33.708 3.965 10.41-8.216 12.159-23.334 3.966-33.708z\"]\n};\nvar faBlog = {\n  prefix: 'fas',\n  iconName: 'blog',\n  icon: [512, 512, [], \"f781\", \"M172.2 226.8c-14.6-2.9-28.2 8.9-28.2 23.8V301c0 10.2 7.1 18.4 16.7 22 18.2 6.8 31.3 24.4 31.3 45 0 26.5-21.5 48-48 48s-48-21.5-48-48V120c0-13.3-10.7-24-24-24H24c-13.3 0-24 10.7-24 24v248c0 89.5 82.1 160.2 175 140.7 54.4-11.4 98.3-55.4 109.7-109.7 17.4-82.9-37-157.2-112.5-172.2zM209 0c-9.2-.5-17 6.8-17 16v31.6c0 8.5 6.6 15.5 15 15.9 129.4 7 233.4 112 240.9 241.5.5 8.4 7.5 15 15.9 15h32.1c9.2 0 16.5-7.8 16-17C503.4 139.8 372.2 8.6 209 0zm.3 96c-9.3-.7-17.3 6.7-17.3 16.1v32.1c0 8.4 6.5 15.3 14.8 15.9 76.8 6.3 138 68.2 144.9 145.2.8 8.3 7.6 14.7 15.9 14.7h32.2c9.3 0 16.8-8 16.1-17.3-8.4-110.1-96.5-198.2-206.6-206.7z\"]\n};\nvar faBold = {\n  prefix: 'fas',\n  iconName: 'bold',\n  icon: [384, 512, [], \"f032\", \"M333.49 238a122 122 0 0 0 27-65.21C367.87 96.49 308 32 233.42 32H34a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h31.87v288H34a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h209.32c70.8 0 134.14-51.75 141-122.4 4.74-48.45-16.39-92.06-50.83-119.6zM145.66 112h87.76a48 48 0 0 1 0 96h-87.76zm87.76 288h-87.76V288h87.76a56 56 0 0 1 0 112z\"]\n};\nvar faBolt = {\n  prefix: 'fas',\n  iconName: 'bolt',\n  icon: [320, 512, [], \"f0e7\", \"M296 160H180.6l42.6-129.8C227.2 15 215.7 0 200 0H56C44 0 33.8 8.9 32.2 20.8l-32 240C-1.7 275.2 9.5 288 24 288h118.7L96.6 482.5c-3.6 15.2 8 29.5 23.3 29.5 8.4 0 16.4-4.4 20.8-12l176-304c9.3-15.9-2.2-36-20.7-36z\"]\n};\nvar faBomb = {\n  prefix: 'fas',\n  iconName: 'bomb',\n  icon: [512, 512, [], \"f1e2\", \"M440.5 88.5l-52 52L415 167c9.4 9.4 9.4 24.6 0 33.9l-17.4 17.4c11.8 26.1 18.4 55.1 18.4 85.6 0 114.9-93.1 208-208 208S0 418.9 0 304 93.1 96 208 96c30.5 0 59.5 6.6 85.6 18.4L311 97c9.4-9.4 24.6-9.4 33.9 0l26.5 26.5 52-52 17.1 17zM500 60h-24c-6.6 0-12 5.4-12 12s5.4 12 12 12h24c6.6 0 12-5.4 12-12s-5.4-12-12-12zM440 0c-6.6 0-12 5.4-12 12v24c0 6.6 5.4 12 12 12s12-5.4 12-12V12c0-6.6-5.4-12-12-12zm33.9 55l17-17c4.7-4.7 4.7-12.3 0-17-4.7-4.7-12.3-4.7-17 0l-17 17c-4.7 4.7-4.7 12.3 0 17 4.8 4.7 12.4 4.7 17 0zm-67.8 0c4.7 4.7 12.3 4.7 17 0 4.7-4.7 4.7-12.3 0-17l-17-17c-4.7-4.7-12.3-4.7-17 0-4.7 4.7-4.7 12.3 0 17l17 17zm67.8 34c-4.7-4.7-12.3-4.7-17 0-4.7 4.7-4.7 12.3 0 17l17 17c4.7 4.7 12.3 4.7 17 0 4.7-4.7 4.7-12.3 0-17l-17-17zM112 272c0-35.3 28.7-64 64-64 8.8 0 16-7.2 16-16s-7.2-16-16-16c-52.9 0-96 43.1-96 96 0 8.8 7.2 16 16 16s16-7.2 16-16z\"]\n};\nvar faBone = {\n  prefix: 'fas',\n  iconName: 'bone',\n  icon: [640, 512, [], \"f5d7\", \"M598.88 244.56c25.2-12.6 41.12-38.36 41.12-66.53v-7.64C640 129.3 606.7 96 565.61 96c-32.02 0-60.44 20.49-70.57 50.86-7.68 23.03-11.6 45.14-38.11 45.14H183.06c-27.38 0-31.58-25.54-38.11-45.14C134.83 116.49 106.4 96 74.39 96 33.3 96 0 129.3 0 170.39v7.64c0 28.17 15.92 53.93 41.12 66.53 9.43 4.71 9.43 18.17 0 22.88C15.92 280.04 0 305.8 0 333.97v7.64C0 382.7 33.3 416 74.38 416c32.02 0 60.44-20.49 70.57-50.86 7.68-23.03 11.6-45.14 38.11-45.14h273.87c27.38 0 31.58 25.54 38.11 45.14C505.17 395.51 533.6 416 565.61 416c41.08 0 74.38-33.3 74.38-74.39v-7.64c0-28.18-15.92-53.93-41.12-66.53-9.42-4.71-9.42-18.17.01-22.88z\"]\n};\nvar faBong = {\n  prefix: 'fas',\n  iconName: 'bong',\n  icon: [448, 512, [], \"f55c\", \"M302.5 512c23.18 0 44.43-12.58 56-32.66C374.69 451.26 384 418.75 384 384c0-36.12-10.08-69.81-27.44-98.62L400 241.94l9.38 9.38c6.25 6.25 16.38 6.25 22.63 0l11.3-11.32c6.25-6.25 6.25-16.38 0-22.63l-52.69-52.69c-6.25-6.25-16.38-6.25-22.63 0l-11.31 11.31c-6.25 6.25-6.25 16.38 0 22.63l9.38 9.38-39.41 39.41c-11.56-11.37-24.53-21.33-38.65-29.51V63.74l15.97-.02c8.82-.01 15.97-7.16 15.98-15.98l.04-31.72C320 7.17 312.82-.01 303.97 0L80.03.26c-8.82.01-15.97 7.16-15.98 15.98l-.04 31.73c-.01 8.85 7.17 16.02 16.02 16.01L96 63.96v153.93C38.67 251.1 0 312.97 0 384c0 34.75 9.31 67.27 25.5 95.34C37.08 499.42 58.33 512 81.5 512h221zM120.06 259.43L144 245.56V63.91l96-.11v181.76l23.94 13.87c24.81 14.37 44.12 35.73 56.56 60.57h-257c12.45-24.84 31.75-46.2 56.56-60.57z\"]\n};\nvar faBook = {\n  prefix: 'fas',\n  iconName: 'book',\n  icon: [448, 512, [], \"f02d\", \"M448 360V24c0-13.3-10.7-24-24-24H96C43 0 0 43 0 96v320c0 53 43 96 96 96h328c13.3 0 24-10.7 24-24v-16c0-7.5-3.5-14.3-8.9-18.7-4.2-15.4-4.2-59.3 0-74.7 5.4-4.3 8.9-11.1 8.9-18.6zM128 134c0-3.3 2.7-6 6-6h212c3.3 0 6 2.7 6 6v20c0 3.3-2.7 6-6 6H134c-3.3 0-6-2.7-6-6v-20zm0 64c0-3.3 2.7-6 6-6h212c3.3 0 6 2.7 6 6v20c0 3.3-2.7 6-6 6H134c-3.3 0-6-2.7-6-6v-20zm253.4 250H96c-17.7 0-32-14.3-32-32 0-17.6 14.4-32 32-32h285.4c-1.9 17.1-1.9 46.9 0 64z\"]\n};\nvar faBookDead = {\n  prefix: 'fas',\n  iconName: 'book-dead',\n  icon: [448, 512, [], \"f6b7\", \"M272 136c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zm176 222.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM240 56c44.2 0 80 28.7 80 64 0 20.9-12.7 39.2-32 50.9V184c0 8.8-7.2 16-16 16h-64c-8.8 0-16-7.2-16-16v-13.1c-19.3-11.7-32-30-32-50.9 0-35.3 35.8-64 80-64zM124.8 223.3l6.3-14.7c1.7-4.1 6.4-5.9 10.5-4.2l98.3 42.1 98.4-42.1c4.1-1.7 8.8.1 10.5 4.2l6.3 14.7c1.7 4.1-.1 8.8-4.2 10.5L280.6 264l70.3 30.1c4.1 1.7 5.9 6.4 4.2 10.5l-6.3 14.7c-1.7 4.1-6.4 5.9-10.5 4.2L240 281.4l-98.3 42.2c-4.1 1.7-8.8-.1-10.5-4.2l-6.3-14.7c-1.7-4.1.1-8.8 4.2-10.5l70.4-30.1-70.5-30.3c-4.1-1.7-5.9-6.4-4.2-10.5zm256 224.7H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8zM208 136c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16z\"]\n};\nvar faBookMedical = {\n  prefix: 'fas',\n  iconName: 'book-medical',\n  icon: [448, 512, [], \"f7e6\", \"M448 358.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16q0-9.6-9.6-19.2c-3.2-16-3.2-60.8 0-73.6q9.6-4.8 9.6-19.2zM144 168a8 8 0 0 1 8-8h56v-56a8 8 0 0 1 8-8h48a8 8 0 0 1 8 8v56h56a8 8 0 0 1 8 8v48a8 8 0 0 1-8 8h-56v56a8 8 0 0 1-8 8h-48a8 8 0 0 1-8-8v-56h-56a8 8 0 0 1-8-8zm236.8 280H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8z\"]\n};\nvar faBookOpen = {\n  prefix: 'fas',\n  iconName: 'book-open',\n  icon: [576, 512, [], \"f518\", \"M542.22 32.05c-54.8 3.11-163.72 14.43-230.96 55.59-4.64 2.84-7.27 7.89-7.27 13.17v363.87c0 11.55 12.63 18.85 23.28 13.49 69.18-34.82 169.23-44.32 218.7-46.92 16.89-.89 30.02-14.43 30.02-30.66V62.75c.01-17.71-15.35-31.74-33.77-30.7zM264.73 87.64C197.5 46.48 88.58 35.17 33.78 32.05 15.36 31.01 0 45.04 0 62.75V400.6c0 16.24 13.13 29.78 30.02 30.66 49.49 2.6 149.59 12.11 218.77 46.95 10.62 5.35 23.21-1.94 23.21-13.46V100.63c0-5.29-2.62-10.14-7.27-12.99z\"]\n};\nvar faBookReader = {\n  prefix: 'fas',\n  iconName: 'book-reader',\n  icon: [512, 512, [], \"f5da\", \"M352 96c0-53.02-42.98-96-96-96s-96 42.98-96 96 42.98 96 96 96 96-42.98 96-96zM233.59 241.1c-59.33-36.32-155.43-46.3-203.79-49.05C13.55 191.13 0 203.51 0 219.14v222.8c0 14.33 11.59 26.28 26.49 27.05 43.66 2.29 131.99 10.68 193.04 41.43 9.37 4.72 20.48-1.71 20.48-11.87V252.56c-.01-4.67-2.32-8.95-6.42-11.46zm248.61-49.05c-48.35 2.74-144.46 12.73-203.78 49.05-4.1 2.51-6.41 6.96-6.41 11.63v245.79c0 10.19 11.14 16.63 20.54 11.9 61.04-30.72 149.32-39.11 192.97-41.4 14.9-.78 26.49-12.73 26.49-27.06V219.14c-.01-15.63-13.56-28.01-29.81-27.09z\"]\n};\nvar faBookmark = {\n  prefix: 'fas',\n  iconName: 'bookmark',\n  icon: [384, 512, [], \"f02e\", \"M0 512V48C0 21.49 21.49 0 48 0h288c26.51 0 48 21.49 48 48v464L192 400 0 512z\"]\n};\nvar faBorderAll = {\n  prefix: 'fas',\n  iconName: 'border-all',\n  icon: [448, 512, [], \"f84c\", \"M416 32H32A32 32 0 0 0 0 64v384a32 32 0 0 0 32 32h384a32 32 0 0 0 32-32V64a32 32 0 0 0-32-32zm-32 64v128H256V96zm-192 0v128H64V96zM64 416V288h128v128zm192 0V288h128v128z\"]\n};\nvar faBorderNone = {\n  prefix: 'fas',\n  iconName: 'border-none',\n  icon: [448, 512, [], \"f850\", \"M240 224h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-288 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 192h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-96h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-192h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM240 320h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-192h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-96 288h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96-384h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM48 224H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 192H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-96H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-192H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-96H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faBorderStyle = {\n  prefix: 'fas',\n  iconName: 'border-style',\n  icon: [448, 512, [], \"f853\", \"M240 416h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm192 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96-192h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 96h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 96h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-288h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-96H32A32 32 0 0 0 0 64v400a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V96h368a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faBowlingBall = {\n  prefix: 'fas',\n  iconName: 'bowling-ball',\n  icon: [496, 512, [], \"f436\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM120 192c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm64-96c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm48 144c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faBox = {\n  prefix: 'fas',\n  iconName: 'box',\n  icon: [512, 512, [], \"f466\", \"M509.5 184.6L458.9 32.8C452.4 13.2 434.1 0 413.4 0H272v192h238.7c-.4-2.5-.4-5-1.2-7.4zM240 0H98.6c-20.7 0-39 13.2-45.5 32.8L2.5 184.6c-.8 2.4-.8 4.9-1.2 7.4H240V0zM0 224v240c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V224H0z\"]\n};\nvar faBoxOpen = {\n  prefix: 'fas',\n  iconName: 'box-open',\n  icon: [640, 512, [], \"f49e\", \"M425.7 256c-16.9 0-32.8-9-41.4-23.4L320 126l-64.2 106.6c-8.7 14.5-24.6 23.5-41.5 23.5-4.5 0-9-.6-13.3-1.9L64 215v178c0 14.7 10 27.5 24.2 31l216.2 54.1c10.2 2.5 20.9 2.5 31 0L551.8 424c14.2-3.6 24.2-16.4 24.2-31V215l-137 39.1c-4.3 1.3-8.8 1.9-13.3 1.9zm212.6-112.2L586.8 41c-3.1-6.2-9.8-9.8-16.7-8.9L320 64l91.7 152.1c3.8 6.3 11.4 9.3 18.5 7.3l197.9-56.5c9.9-2.9 14.7-13.9 10.2-23.1zM53.2 41L1.7 143.8c-4.6 9.2.3 20.2 10.1 23l197.9 56.5c7.1 2 14.7-1 18.5-7.3L320 64 69.8 32.1c-6.9-.8-13.5 2.7-16.6 8.9z\"]\n};\nvar faBoxTissue = {\n  prefix: 'fas',\n  iconName: 'box-tissue',\n  icon: [512, 512, [], \"e05b\", \"M383.88,287.82l64-192H338.47a70.2,70.2,0,0,1-66.59-48,70.21,70.21,0,0,0-66.6-48H63.88l64,288Zm-384,192a32,32,0,0,0,32,32h448a32,32,0,0,0,32-32v-64H-.12Zm480-256H438.94l-21.33,64h14.27a16,16,0,0,1,0,32h-352a16,16,0,1,1,0-32H95.09l-14.22-64h-49a32,32,0,0,0-32,32v128h512v-128A32,32,0,0,0,479.88,223.82Z\"]\n};\nvar faBoxes = {\n  prefix: 'fas',\n  iconName: 'boxes',\n  icon: [576, 512, [], \"f468\", \"M560 288h-80v96l-32-21.3-32 21.3v-96h-80c-8.8 0-16 7.2-16 16v192c0 8.8 7.2 16 16 16h224c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16zm-384-64h224c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16h-80v96l-32-21.3L256 96V0h-80c-8.8 0-16 7.2-16 16v192c0 8.8 7.2 16 16 16zm64 64h-80v96l-32-21.3L96 384v-96H16c-8.8 0-16 7.2-16 16v192c0 8.8 7.2 16 16 16h224c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16z\"]\n};\nvar faBraille = {\n  prefix: 'fas',\n  iconName: 'braille',\n  icon: [640, 512, [], \"f2a1\", \"M128 256c0 35.346-28.654 64-64 64S0 291.346 0 256s28.654-64 64-64 64 28.654 64 64zM64 384c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0-352C28.654 32 0 60.654 0 96s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64zm160 192c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0 160c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0-352c-35.346 0-64 28.654-64 64s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64zm224 192c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0 160c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0-352c-35.346 0-64 28.654-64 64s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64zm160 192c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0 160c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0-320c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32z\"]\n};\nvar faBrain = {\n  prefix: 'fas',\n  iconName: 'brain',\n  icon: [576, 512, [], \"f5dc\", \"M208 0c-29.9 0-54.7 20.5-61.8 48.2-.8 0-1.4-.2-2.2-.2-35.3 0-64 28.7-64 64 0 4.8.6 9.5 1.7 14C52.5 138 32 166.6 32 200c0 12.6 3.2 24.3 8.3 34.9C16.3 248.7 0 274.3 0 304c0 33.3 20.4 61.9 49.4 73.9-.9 4.6-1.4 9.3-1.4 14.1 0 39.8 32.2 72 72 72 4.1 0 8.1-.5 12-1.2 9.6 28.5 36.2 49.2 68 49.2 39.8 0 72-32.2 72-72V64c0-35.3-28.7-64-64-64zm368 304c0-29.7-16.3-55.3-40.3-69.1 5.2-10.6 8.3-22.3 8.3-34.9 0-33.4-20.5-62-49.7-74 1-4.5 1.7-9.2 1.7-14 0-35.3-28.7-64-64-64-.8 0-1.5.2-2.2.2C422.7 20.5 397.9 0 368 0c-35.3 0-64 28.6-64 64v376c0 39.8 32.2 72 72 72 31.8 0 58.4-20.7 68-49.2 3.9.7 7.9 1.2 12 1.2 39.8 0 72-32.2 72-72 0-4.8-.5-9.5-1.4-14.1 29-12 49.4-40.6 49.4-73.9z\"]\n};\nvar faBreadSlice = {\n  prefix: 'fas',\n  iconName: 'bread-slice',\n  icon: [576, 512, [], \"f7ec\", \"M288 0C108 0 0 93.4 0 169.14 0 199.44 24.24 224 64 224v256c0 17.67 16.12 32 36 32h376c19.88 0 36-14.33 36-32V224c39.76 0 64-24.56 64-54.86C576 93.4 468 0 288 0z\"]\n};\nvar faBriefcase = {\n  prefix: 'fas',\n  iconName: 'briefcase',\n  icon: [512, 512, [], \"f0b1\", \"M320 336c0 8.84-7.16 16-16 16h-96c-8.84 0-16-7.16-16-16v-48H0v144c0 25.6 22.4 48 48 48h416c25.6 0 48-22.4 48-48V288H320v48zm144-208h-80V80c0-25.6-22.4-48-48-48H176c-25.6 0-48 22.4-48 48v48H48c-25.6 0-48 22.4-48 48v80h512v-80c0-25.6-22.4-48-48-48zm-144 0H192V96h128v32z\"]\n};\nvar faBriefcaseMedical = {\n  prefix: 'fas',\n  iconName: 'briefcase-medical',\n  icon: [512, 512, [], \"f469\", \"M464 128h-80V80c0-26.5-21.5-48-48-48H176c-26.5 0-48 21.5-48 48v48H48c-26.5 0-48 21.5-48 48v288c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V176c0-26.5-21.5-48-48-48zM192 96h128v32H192V96zm160 248c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48z\"]\n};\nvar faBroadcastTower = {\n  prefix: 'fas',\n  iconName: 'broadcast-tower',\n  icon: [640, 512, [], \"f519\", \"M150.94 192h33.73c11.01 0 18.61-10.83 14.86-21.18-4.93-13.58-7.55-27.98-7.55-42.82s2.62-29.24 7.55-42.82C203.29 74.83 195.68 64 184.67 64h-33.73c-7.01 0-13.46 4.49-15.41 11.23C130.64 92.21 128 109.88 128 128c0 18.12 2.64 35.79 7.54 52.76 1.94 6.74 8.39 11.24 15.4 11.24zM89.92 23.34C95.56 12.72 87.97 0 75.96 0H40.63c-6.27 0-12.14 3.59-14.74 9.31C9.4 45.54 0 85.65 0 128c0 24.75 3.12 68.33 26.69 118.86 2.62 5.63 8.42 9.14 14.61 9.14h34.84c12.02 0 19.61-12.74 13.95-23.37-49.78-93.32-16.71-178.15-.17-209.29zM614.06 9.29C611.46 3.58 605.6 0 599.33 0h-35.42c-11.98 0-19.66 12.66-14.02 23.25 18.27 34.29 48.42 119.42.28 209.23-5.72 10.68 1.8 23.52 13.91 23.52h35.23c6.27 0 12.13-3.58 14.73-9.29C630.57 210.48 640 170.36 640 128s-9.42-82.48-25.94-118.71zM489.06 64h-33.73c-11.01 0-18.61 10.83-14.86 21.18 4.93 13.58 7.55 27.98 7.55 42.82s-2.62 29.24-7.55 42.82c-3.76 10.35 3.85 21.18 14.86 21.18h33.73c7.02 0 13.46-4.49 15.41-11.24 4.9-16.97 7.53-34.64 7.53-52.76 0-18.12-2.64-35.79-7.54-52.76-1.94-6.75-8.39-11.24-15.4-11.24zm-116.3 100.12c7.05-10.29 11.2-22.71 11.2-36.12 0-35.35-28.63-64-63.96-64-35.32 0-63.96 28.65-63.96 64 0 13.41 4.15 25.83 11.2 36.12l-130.5 313.41c-3.4 8.15.46 17.52 8.61 20.92l29.51 12.31c8.15 3.4 17.52-.46 20.91-8.61L244.96 384h150.07l49.2 118.15c3.4 8.16 12.76 12.01 20.91 8.61l29.51-12.31c8.15-3.4 12-12.77 8.61-20.92l-130.5-313.41zM271.62 320L320 203.81 368.38 320h-96.76z\"]\n};\nvar faBroom = {\n  prefix: 'fas',\n  iconName: 'broom',\n  icon: [640, 512, [], \"f51a\", \"M256.47 216.77l86.73 109.18s-16.6 102.36-76.57 150.12C206.66 523.85 0 510.19 0 510.19s3.8-23.14 11-55.43l94.62-112.17c3.97-4.7-.87-11.62-6.65-9.5l-60.4 22.09c14.44-41.66 32.72-80.04 54.6-97.47 59.97-47.76 163.3-40.94 163.3-40.94zM636.53 31.03l-19.86-25c-5.49-6.9-15.52-8.05-22.41-2.56l-232.48 177.8-34.14-42.97c-5.09-6.41-15.14-5.21-18.59 2.21l-25.33 54.55 86.73 109.18 58.8-12.45c8-1.69 11.42-11.2 6.34-17.6l-34.09-42.92 232.48-177.8c6.89-5.48 8.04-15.53 2.55-22.44z\"]\n};\nvar faBrush = {\n  prefix: 'fas',\n  iconName: 'brush',\n  icon: [384, 512, [], \"f55d\", \"M352 0H32C14.33 0 0 14.33 0 32v224h384V32c0-17.67-14.33-32-32-32zM0 320c0 35.35 28.66 64 64 64h64v64c0 35.35 28.66 64 64 64s64-28.65 64-64v-64h64c35.34 0 64-28.65 64-64v-32H0v32zm192 104c13.25 0 24 10.74 24 24 0 13.25-10.75 24-24 24s-24-10.75-24-24c0-13.26 10.75-24 24-24z\"]\n};\nvar faBug = {\n  prefix: 'fas',\n  iconName: 'bug',\n  icon: [512, 512, [], \"f188\", \"M511.988 288.9c-.478 17.43-15.217 31.1-32.653 31.1H424v16c0 21.864-4.882 42.584-13.6 61.145l60.228 60.228c12.496 12.497 12.496 32.758 0 45.255-12.498 12.497-32.759 12.496-45.256 0l-54.736-54.736C345.886 467.965 314.351 480 280 480V236c0-6.627-5.373-12-12-12h-24c-6.627 0-12 5.373-12 12v244c-34.351 0-65.886-12.035-90.636-32.108l-54.736 54.736c-12.498 12.497-32.759 12.496-45.256 0-12.496-12.497-12.496-32.758 0-45.255l60.228-60.228C92.882 378.584 88 357.864 88 336v-16H32.666C15.23 320 .491 306.33.013 288.9-.484 270.816 14.028 256 32 256h56v-58.745l-46.628-46.628c-12.496-12.497-12.496-32.758 0-45.255 12.498-12.497 32.758-12.497 45.256 0L141.255 160h229.489l54.627-54.627c12.498-12.497 32.758-12.497 45.256 0 12.496 12.497 12.496 32.758 0 45.255L424 197.255V256h56c17.972 0 32.484 14.816 31.988 32.9zM257 0c-61.856 0-112 50.144-112 112h224C369 50.144 318.856 0 257 0z\"]\n};\nvar faBuilding = {\n  prefix: 'fas',\n  iconName: 'building',\n  icon: [448, 512, [], \"f1ad\", \"M436 480h-20V24c0-13.255-10.745-24-24-24H56C42.745 0 32 10.745 32 24v456H12c-6.627 0-12 5.373-12 12v20h448v-20c0-6.627-5.373-12-12-12zM128 76c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12V76zm0 96c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12v-40zm52 148h-40c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12zm76 160h-64v-84c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v84zm64-172c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40zm0-96c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40zm0-96c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12V76c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40z\"]\n};\nvar faBullhorn = {\n  prefix: 'fas',\n  iconName: 'bullhorn',\n  icon: [576, 512, [], \"f0a1\", \"M576 240c0-23.63-12.95-44.04-32-55.12V32.01C544 23.26 537.02 0 512 0c-7.12 0-14.19 2.38-19.98 7.02l-85.03 68.03C364.28 109.19 310.66 128 256 128H64c-35.35 0-64 28.65-64 64v96c0 35.35 28.65 64 64 64h33.7c-1.39 10.48-2.18 21.14-2.18 32 0 39.77 9.26 77.35 25.56 110.94 5.19 10.69 16.52 17.06 28.4 17.06h74.28c26.05 0 41.69-29.84 25.9-50.56-16.4-21.52-26.15-48.36-26.15-77.44 0-11.11 1.62-21.79 4.41-32H256c54.66 0 108.28 18.81 150.98 52.95l85.03 68.03a32.023 32.023 0 0 0 19.98 7.02c24.92 0 32-22.78 32-32V295.13C563.05 284.04 576 263.63 576 240zm-96 141.42l-33.05-26.44C392.95 311.78 325.12 288 256 288v-96c69.12 0 136.95-23.78 190.95-66.98L480 98.58v282.84z\"]\n};\nvar faBullseye = {\n  prefix: 'fas',\n  iconName: 'bullseye',\n  icon: [496, 512, [], \"f140\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm0 432c-101.69 0-184-82.29-184-184 0-101.69 82.29-184 184-184 101.69 0 184 82.29 184 184 0 101.69-82.29 184-184 184zm0-312c-70.69 0-128 57.31-128 128s57.31 128 128 128 128-57.31 128-128-57.31-128-128-128zm0 192c-35.29 0-64-28.71-64-64s28.71-64 64-64 64 28.71 64 64-28.71 64-64 64z\"]\n};\nvar faBurn = {\n  prefix: 'fas',\n  iconName: 'burn',\n  icon: [384, 512, [], \"f46a\", \"M192 0C79.7 101.3 0 220.9 0 300.5 0 425 79 512 192 512s192-87 192-211.5c0-79.9-80.2-199.6-192-300.5zm0 448c-56.5 0-96-39-96-94.8 0-13.5 4.6-61.5 96-161.2 91.4 99.7 96 147.7 96 161.2 0 55.8-39.5 94.8-96 94.8z\"]\n};\nvar faBus = {\n  prefix: 'fas',\n  iconName: 'bus',\n  icon: [512, 512, [], \"f207\", \"M488 128h-8V80c0-44.8-99.2-80-224-80S32 35.2 32 80v48h-8c-13.25 0-24 10.74-24 24v80c0 13.25 10.75 24 24 24h8v160c0 17.67 14.33 32 32 32v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h192v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h6.4c16 0 25.6-12.8 25.6-25.6V256h8c13.25 0 24-10.75 24-24v-80c0-13.26-10.75-24-24-24zM112 400c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm16-112c-17.67 0-32-14.33-32-32V128c0-17.67 14.33-32 32-32h256c17.67 0 32 14.33 32 32v128c0 17.67-14.33 32-32 32H128zm272 112c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faBusAlt = {\n  prefix: 'fas',\n  iconName: 'bus-alt',\n  icon: [512, 512, [], \"f55e\", \"M488 128h-8V80c0-44.8-99.2-80-224-80S32 35.2 32 80v48h-8c-13.25 0-24 10.74-24 24v80c0 13.25 10.75 24 24 24h8v160c0 17.67 14.33 32 32 32v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h192v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h6.4c16 0 25.6-12.8 25.6-25.6V256h8c13.25 0 24-10.75 24-24v-80c0-13.26-10.75-24-24-24zM160 72c0-4.42 3.58-8 8-8h176c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H168c-4.42 0-8-3.58-8-8V72zm-48 328c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm128-112H128c-17.67 0-32-14.33-32-32v-96c0-17.67 14.33-32 32-32h112v160zm32 0V128h112c17.67 0 32 14.33 32 32v96c0 17.67-14.33 32-32 32H272zm128 112c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faBusinessTime = {\n  prefix: 'fas',\n  iconName: 'business-time',\n  icon: [640, 512, [], \"f64a\", \"M496 224c-79.59 0-144 64.41-144 144s64.41 144 144 144 144-64.41 144-144-64.41-144-144-144zm64 150.29c0 5.34-4.37 9.71-9.71 9.71h-60.57c-5.34 0-9.71-4.37-9.71-9.71v-76.57c0-5.34 4.37-9.71 9.71-9.71h12.57c5.34 0 9.71 4.37 9.71 9.71V352h38.29c5.34 0 9.71 4.37 9.71 9.71v12.58zM496 192c5.4 0 10.72.33 16 .81V144c0-25.6-22.4-48-48-48h-80V48c0-25.6-22.4-48-48-48H176c-25.6 0-48 22.4-48 48v48H48c-25.6 0-48 22.4-48 48v80h395.12c28.6-20.09 63.35-32 100.88-32zM320 96H192V64h128v32zm6.82 224H208c-8.84 0-16-7.16-16-16v-48H0v144c0 25.6 22.4 48 48 48h291.43C327.1 423.96 320 396.82 320 368c0-16.66 2.48-32.72 6.82-48z\"]\n};\nvar faCalculator = {\n  prefix: 'fas',\n  iconName: 'calculator',\n  icon: [448, 512, [], \"f1ec\", \"M400 0H48C22.4 0 0 22.4 0 48v416c0 25.6 22.4 48 48 48h352c25.6 0 48-22.4 48-48V48c0-25.6-22.4-48-48-48zM128 435.2c0 6.4-6.4 12.8-12.8 12.8H76.8c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm0-128c0 6.4-6.4 12.8-12.8 12.8H76.8c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm128 128c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm0-128c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm128 128c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8V268.8c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v166.4zm0-256c0 6.4-6.4 12.8-12.8 12.8H76.8c-6.4 0-12.8-6.4-12.8-12.8V76.8C64 70.4 70.4 64 76.8 64h294.4c6.4 0 12.8 6.4 12.8 12.8v102.4z\"]\n};\nvar faCalendar = {\n  prefix: 'fas',\n  iconName: 'calendar',\n  icon: [448, 512, [], \"f133\", \"M12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm436-44v-36c0-26.5-21.5-48-48-48h-48V12c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v52H160V12c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v52H48C21.5 64 0 85.5 0 112v36c0 6.6 5.4 12 12 12h424c6.6 0 12-5.4 12-12z\"]\n};\nvar faCalendarAlt = {\n  prefix: 'fas',\n  iconName: 'calendar-alt',\n  icon: [448, 512, [], \"f073\", \"M0 464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V192H0v272zm320-196c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40zm0 128c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40zM192 268c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40zm0 128c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40zM64 268c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12v-40zm0 128c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12v-40zM400 64h-48V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H160V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H48C21.5 64 0 85.5 0 112v48h448v-48c0-26.5-21.5-48-48-48z\"]\n};\nvar faCalendarCheck = {\n  prefix: 'fas',\n  iconName: 'calendar-check',\n  icon: [448, 512, [], \"f274\", \"M436 160H12c-6.627 0-12-5.373-12-12v-36c0-26.51 21.49-48 48-48h48V12c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v52h128V12c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v52h48c26.51 0 48 21.49 48 48v36c0 6.627-5.373 12-12 12zM12 192h424c6.627 0 12 5.373 12 12v260c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V204c0-6.627 5.373-12 12-12zm333.296 95.947l-28.169-28.398c-4.667-4.705-12.265-4.736-16.97-.068L194.12 364.665l-45.98-46.352c-4.667-4.705-12.266-4.736-16.971-.068l-28.397 28.17c-4.705 4.667-4.736 12.265-.068 16.97l82.601 83.269c4.667 4.705 12.265 4.736 16.97.068l142.953-141.805c4.705-4.667 4.736-12.265.068-16.97z\"]\n};\nvar faCalendarDay = {\n  prefix: 'fas',\n  iconName: 'calendar-day',\n  icon: [448, 512, [], \"f783\", \"M0 464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V192H0v272zm64-192c0-8.8 7.2-16 16-16h96c8.8 0 16 7.2 16 16v96c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16v-96zM400 64h-48V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H160V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H48C21.5 64 0 85.5 0 112v48h448v-48c0-26.5-21.5-48-48-48z\"]\n};\nvar faCalendarMinus = {\n  prefix: 'fas',\n  iconName: 'calendar-minus',\n  icon: [448, 512, [], \"f272\", \"M436 160H12c-6.6 0-12-5.4-12-12v-36c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48v36c0 6.6-5.4 12-12 12zM12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm304 192c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12H132c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h184z\"]\n};\nvar faCalendarPlus = {\n  prefix: 'fas',\n  iconName: 'calendar-plus',\n  icon: [448, 512, [], \"f271\", \"M436 160H12c-6.6 0-12-5.4-12-12v-36c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48v36c0 6.6-5.4 12-12 12zM12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm316 140c0-6.6-5.4-12-12-12h-60v-60c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v60h-60c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h60v60c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-60h60c6.6 0 12-5.4 12-12v-40z\"]\n};\nvar faCalendarTimes = {\n  prefix: 'fas',\n  iconName: 'calendar-times',\n  icon: [448, 512, [], \"f273\", \"M436 160H12c-6.6 0-12-5.4-12-12v-36c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48v36c0 6.6-5.4 12-12 12zM12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm257.3 160l48.1-48.1c4.7-4.7 4.7-12.3 0-17l-28.3-28.3c-4.7-4.7-12.3-4.7-17 0L224 306.7l-48.1-48.1c-4.7-4.7-12.3-4.7-17 0l-28.3 28.3c-4.7 4.7-4.7 12.3 0 17l48.1 48.1-48.1 48.1c-4.7 4.7-4.7 12.3 0 17l28.3 28.3c4.7 4.7 12.3 4.7 17 0l48.1-48.1 48.1 48.1c4.7 4.7 12.3 4.7 17 0l28.3-28.3c4.7-4.7 4.7-12.3 0-17L269.3 352z\"]\n};\nvar faCalendarWeek = {\n  prefix: 'fas',\n  iconName: 'calendar-week',\n  icon: [448, 512, [], \"f784\", \"M0 464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V192H0v272zm64-192c0-8.8 7.2-16 16-16h288c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16v-64zM400 64h-48V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H160V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H48C21.5 64 0 85.5 0 112v48h448v-48c0-26.5-21.5-48-48-48z\"]\n};\nvar faCamera = {\n  prefix: 'fas',\n  iconName: 'camera',\n  icon: [512, 512, [], \"f030\", \"M512 144v288c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V144c0-26.5 21.5-48 48-48h88l12.3-32.9c7-18.7 24.9-31.1 44.9-31.1h125.5c20 0 37.9 12.4 44.9 31.1L376 96h88c26.5 0 48 21.5 48 48zM376 288c0-66.2-53.8-120-120-120s-120 53.8-120 120 53.8 120 120 120 120-53.8 120-120zm-32 0c0 48.5-39.5 88-88 88s-88-39.5-88-88 39.5-88 88-88 88 39.5 88 88z\"]\n};\nvar faCameraRetro = {\n  prefix: 'fas',\n  iconName: 'camera-retro',\n  icon: [512, 512, [], \"f083\", \"M48 32C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48H48zm0 32h106c3.3 0 6 2.7 6 6v20c0 3.3-2.7 6-6 6H38c-3.3 0-6-2.7-6-6V80c0-8.8 7.2-16 16-16zm426 96H38c-3.3 0-6-2.7-6-6v-36c0-3.3 2.7-6 6-6h138l30.2-45.3c1.1-1.7 3-2.7 5-2.7H464c8.8 0 16 7.2 16 16v74c0 3.3-2.7 6-6 6zM256 424c-66.2 0-120-53.8-120-120s53.8-120 120-120 120 53.8 120 120-53.8 120-120 120zm0-208c-48.5 0-88 39.5-88 88s39.5 88 88 88 88-39.5 88-88-39.5-88-88-88zm-48 104c-8.8 0-16-7.2-16-16 0-35.3 28.7-64 64-64 8.8 0 16 7.2 16 16s-7.2 16-16 16c-17.6 0-32 14.4-32 32 0 8.8-7.2 16-16 16z\"]\n};\nvar faCampground = {\n  prefix: 'fas',\n  iconName: 'campground',\n  icon: [640, 512, [], \"f6bb\", \"M624 448h-24.68L359.54 117.75l53.41-73.55c5.19-7.15 3.61-17.16-3.54-22.35l-25.9-18.79c-7.15-5.19-17.15-3.61-22.35 3.55L320 63.3 278.83 6.6c-5.19-7.15-15.2-8.74-22.35-3.55l-25.88 18.8c-7.15 5.19-8.74 15.2-3.54 22.35l53.41 73.55L40.68 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM320 288l116.36 160H203.64L320 288z\"]\n};\nvar faCandyCane = {\n  prefix: 'fas',\n  iconName: 'candy-cane',\n  icon: [512, 512, [], \"f786\", \"M497.5 92C469.6 33.1 411.8 0 352.4 0c-27.9 0-56.2 7.3-81.8 22.6L243.1 39c-15.2 9.1-20.1 28.7-11 43.9l32.8 54.9c6 10 16.6 15.6 27.5 15.6 5.6 0 11.2-1.5 16.4-4.5l27.5-16.4c5.1-3.1 10.8-4.5 16.4-4.5 10.9 0 21.5 5.6 27.5 15.6 9.1 15.1 4.1 34.8-11 43.9L15.6 397.6c-15.2 9.1-20.1 28.7-11 43.9l32.8 54.9c6 10 16.6 15.6 27.5 15.6 5.6 0 11.2-1.5 16.4-4.5L428.6 301c71.7-42.9 104.6-133.5 68.9-209zm-177.7 13l-2.5 1.5L296.8 45c9.7-4.7 19.8-8.1 30.3-10.2l20.6 61.8c-9.8.8-19.4 3.3-27.9 8.4zM145.9 431.8l-60.5-38.5 30.8-18.3 60.5 38.5-30.8 18.3zm107.5-63.9l-60.5-38.5 30.8-18.3 60.5 38.5-30.8 18.3zM364.3 302l-60.5-38.5 30.8-18.3 60.5 38.5-30.8 18.3zm20.4-197.3l46-46c8.4 6.5 16 14.1 22.6 22.6L407.6 127c-5.7-9.3-13.7-16.9-22.9-22.3zm82.1 107.8l-59.5-19.8c3.2-5.3 5.8-10.9 7.4-17.1 1.1-4.5 1.7-9.1 1.8-13.6l60.4 20.1c-2.1 10.4-5.5 20.6-10.1 30.4z\"]\n};\nvar faCannabis = {\n  prefix: 'fas',\n  iconName: 'cannabis',\n  icon: [512, 512, [], \"f55f\", \"M503.47 360.25c-1.56-.82-32.39-16.89-76.78-25.81 64.25-75.12 84.05-161.67 84.93-165.64 1.18-5.33-.44-10.9-4.3-14.77-3.03-3.04-7.12-4.7-11.32-4.7-1.14 0-2.29.12-3.44.38-3.88.85-86.54 19.59-160.58 79.76.01-1.46.01-2.93.01-4.4 0-118.79-59.98-213.72-62.53-217.7A15.973 15.973 0 0 0 256 0c-5.45 0-10.53 2.78-13.47 7.37-2.55 3.98-62.53 98.91-62.53 217.7 0 1.47.01 2.94.01 4.4-74.03-60.16-156.69-78.9-160.58-79.76-1.14-.25-2.29-.38-3.44-.38-4.2 0-8.29 1.66-11.32 4.7A15.986 15.986 0 0 0 .38 168.8c.88 3.97 20.68 90.52 84.93 165.64-44.39 8.92-75.21 24.99-76.78 25.81a16.003 16.003 0 0 0-.02 28.29c2.45 1.29 60.76 31.72 133.49 31.72 6.14 0 11.96-.1 17.5-.31-11.37 22.23-16.52 38.31-16.81 39.22-1.8 5.68-.29 11.89 3.91 16.11a16.019 16.019 0 0 0 16.1 3.99c1.83-.57 37.72-11.99 77.3-39.29V504c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8v-64.01c39.58 27.3 75.47 38.71 77.3 39.29a16.019 16.019 0 0 0 16.1-3.99c4.2-4.22 5.71-10.43 3.91-16.11-.29-.91-5.45-16.99-16.81-39.22 5.54.21 11.37.31 17.5.31 72.72 0 131.04-30.43 133.49-31.72 5.24-2.78 8.52-8.22 8.51-14.15-.01-5.94-3.29-11.39-8.53-14.15z\"]\n};\nvar faCapsules = {\n  prefix: 'fas',\n  iconName: 'capsules',\n  icon: [576, 512, [], \"f46b\", \"M555.3 300.1L424.2 112.8C401.9 81 366.4 64 330.4 64c-22.6 0-45.5 6.7-65.5 20.7-19.7 13.8-33.7 32.8-41.5 53.8C220.5 79.2 172 32 112 32 50.1 32 0 82.1 0 144v224c0 61.9 50.1 112 112 112s112-50.1 112-112V218.9c3.3 8.6 7.3 17.1 12.8 25L368 431.2c22.2 31.8 57.7 48.8 93.8 48.8 22.7 0 45.5-6.7 65.5-20.7 51.7-36.2 64.2-107.5 28-159.2zM160 256H64V144c0-26.5 21.5-48 48-48s48 21.5 48 48v112zm194.8 44.9l-65.6-93.7c-7.7-11-10.7-24.4-8.3-37.6 2.3-13.2 9.7-24.8 20.7-32.5 8.5-6 18.5-9.1 28.8-9.1 16.5 0 31.9 8 41.3 21.5l65.6 93.7-82.5 57.7z\"]\n};\nvar faCar = {\n  prefix: 'fas',\n  iconName: 'car',\n  icon: [512, 512, [], \"f1b9\", \"M499.99 176h-59.87l-16.64-41.6C406.38 91.63 365.57 64 319.5 64h-127c-46.06 0-86.88 27.63-103.99 70.4L71.87 176H12.01C4.2 176-1.53 183.34.37 190.91l6 24C7.7 220.25 12.5 224 18.01 224h20.07C24.65 235.73 16 252.78 16 272v48c0 16.12 6.16 30.67 16 41.93V416c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h256v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-54.07c9.84-11.25 16-25.8 16-41.93v-48c0-19.22-8.65-36.27-22.07-48H494c5.51 0 10.31-3.75 11.64-9.09l6-24c1.89-7.57-3.84-14.91-11.65-14.91zm-352.06-17.83c7.29-18.22 24.94-30.17 44.57-30.17h127c19.63 0 37.28 11.95 44.57 30.17L384 208H128l19.93-49.83zM96 319.8c-19.2 0-32-12.76-32-31.9S76.8 256 96 256s48 28.71 48 47.85-28.8 15.95-48 15.95zm320 0c-19.2 0-48 3.19-48-15.95S396.8 256 416 256s32 12.76 32 31.9-12.8 31.9-32 31.9z\"]\n};\nvar faCarAlt = {\n  prefix: 'fas',\n  iconName: 'car-alt',\n  icon: [480, 512, [], \"f5de\", \"M438.66 212.33l-11.24-28.1-19.93-49.83C390.38 91.63 349.57 64 303.5 64h-127c-46.06 0-86.88 27.63-103.99 70.4l-19.93 49.83-11.24 28.1C17.22 221.5 0 244.66 0 272v48c0 16.12 6.16 30.67 16 41.93V416c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h256v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-54.07c9.84-11.25 16-25.8 16-41.93v-48c0-27.34-17.22-50.5-41.34-59.67zm-306.73-54.16c7.29-18.22 24.94-30.17 44.57-30.17h127c19.63 0 37.28 11.95 44.57 30.17L368 208H112l19.93-49.83zM80 319.8c-19.2 0-32-12.76-32-31.9S60.8 256 80 256s48 28.71 48 47.85-28.8 15.95-48 15.95zm320 0c-19.2 0-48 3.19-48-15.95S380.8 256 400 256s32 12.76 32 31.9-12.8 31.9-32 31.9z\"]\n};\nvar faCarBattery = {\n  prefix: 'fas',\n  iconName: 'car-battery',\n  icon: [512, 512, [], \"f5df\", \"M480 128h-32V80c0-8.84-7.16-16-16-16h-96c-8.84 0-16 7.16-16 16v48H192V80c0-8.84-7.16-16-16-16H80c-8.84 0-16 7.16-16 16v48H32c-17.67 0-32 14.33-32 32v256c0 17.67 14.33 32 32 32h448c17.67 0 32-14.33 32-32V160c0-17.67-14.33-32-32-32zM192 264c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h112c4.42 0 8 3.58 8 8v16zm256 0c0 4.42-3.58 8-8 8h-40v40c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-40h-40c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h40v-40c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v40h40c4.42 0 8 3.58 8 8v16z\"]\n};\nvar faCarCrash = {\n  prefix: 'fas',\n  iconName: 'car-crash',\n  icon: [640, 512, [], \"f5e1\", \"M143.25 220.81l-12.42 46.37c-3.01 11.25-3.63 22.89-2.41 34.39l-35.2 28.98c-6.57 5.41-16.31-.43-14.62-8.77l15.44-76.68c1.06-5.26-2.66-10.28-8-10.79l-77.86-7.55c-8.47-.82-11.23-11.83-4.14-16.54l65.15-43.3c4.46-2.97 5.38-9.15 1.98-13.29L21.46 93.22c-5.41-6.57.43-16.3 8.78-14.62l76.68 15.44c5.26 1.06 10.28-2.66 10.8-8l7.55-77.86c.82-8.48 11.83-11.23 16.55-4.14l43.3 65.14c2.97 4.46 9.15 5.38 13.29 1.98l60.4-49.71c6.57-5.41 16.3.43 14.62 8.77L262.1 86.38c-2.71 3.05-5.43 6.09-7.91 9.4l-32.15 42.97-10.71 14.32c-32.73 8.76-59.18 34.53-68.08 67.74zm494.57 132.51l-12.42 46.36c-3.13 11.68-9.38 21.61-17.55 29.36a66.876 66.876 0 0 1-8.76 7l-13.99 52.23c-1.14 4.27-3.1 8.1-5.65 11.38-7.67 9.84-20.74 14.68-33.54 11.25L515 502.62c-17.07-4.57-27.2-22.12-22.63-39.19l8.28-30.91-247.28-66.26-8.28 30.91c-4.57 17.07-22.12 27.2-39.19 22.63l-30.91-8.28c-12.8-3.43-21.7-14.16-23.42-26.51-.57-4.12-.35-8.42.79-12.68l13.99-52.23a66.62 66.62 0 0 1-4.09-10.45c-3.2-10.79-3.65-22.52-.52-34.2l12.42-46.37c5.31-19.8 19.36-34.83 36.89-42.21a64.336 64.336 0 0 1 18.49-4.72l18.13-24.23 32.15-42.97c3.45-4.61 7.19-8.9 11.2-12.84 8-7.89 17.03-14.44 26.74-19.51 4.86-2.54 9.89-4.71 15.05-6.49 10.33-3.58 21.19-5.63 32.24-6.04 11.05-.41 22.31.82 33.43 3.8l122.68 32.87c11.12 2.98 21.48 7.54 30.85 13.43a111.11 111.11 0 0 1 34.69 34.5c8.82 13.88 14.64 29.84 16.68 46.99l6.36 53.29 3.59 30.05a64.49 64.49 0 0 1 22.74 29.93c4.39 11.88 5.29 25.19 1.75 38.39zM255.58 234.34c-18.55-4.97-34.21 4.04-39.17 22.53-4.96 18.49 4.11 34.12 22.65 39.09 18.55 4.97 45.54 15.51 50.49-2.98 4.96-18.49-15.43-53.67-33.97-58.64zm290.61 28.17l-6.36-53.29c-.58-4.87-1.89-9.53-3.82-13.86-5.8-12.99-17.2-23.01-31.42-26.82l-122.68-32.87a48.008 48.008 0 0 0-50.86 17.61l-32.15 42.97 172 46.08 75.29 20.18zm18.49 54.65c-18.55-4.97-53.8 15.31-58.75 33.79-4.95 18.49 23.69 22.86 42.24 27.83 18.55 4.97 34.21-4.04 39.17-22.53 4.95-18.48-4.11-34.12-22.66-39.09z\"]\n};\nvar faCarSide = {\n  prefix: 'fas',\n  iconName: 'car-side',\n  icon: [640, 512, [], \"f5e4\", \"M544 192h-16L419.22 56.02A64.025 64.025 0 0 0 369.24 32H155.33c-26.17 0-49.7 15.93-59.42 40.23L48 194.26C20.44 201.4 0 226.21 0 256v112c0 8.84 7.16 16 16 16h48c0 53.02 42.98 96 96 96s96-42.98 96-96h128c0 53.02 42.98 96 96 96s96-42.98 96-96h48c8.84 0 16-7.16 16-16v-80c0-53.02-42.98-96-96-96zM160 432c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48zm72-240H116.93l38.4-96H232v96zm48 0V96h89.24l76.8 96H280zm200 240c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48z\"]\n};\nvar faCaravan = {\n  prefix: 'fas',\n  iconName: 'caravan',\n  icon: [640, 512, [], \"f8ff\", \"M416,208a16,16,0,1,0,16,16A16,16,0,0,0,416,208ZM624,320H576V160A160,160,0,0,0,416,0H64A64,64,0,0,0,0,64V320a64,64,0,0,0,64,64H96a96,96,0,0,0,192,0H624a16,16,0,0,0,16-16V336A16,16,0,0,0,624,320ZM192,432a48,48,0,1,1,48-48A48.05,48.05,0,0,1,192,432Zm64-240a32,32,0,0,1-32,32H96a32,32,0,0,1-32-32V128A32,32,0,0,1,96,96H224a32,32,0,0,1,32,32ZM448,320H320V128a32,32,0,0,1,32-32h64a32,32,0,0,1,32,32Z\"]\n};\nvar faCaretDown = {\n  prefix: 'fas',\n  iconName: 'caret-down',\n  icon: [320, 512, [], \"f0d7\", \"M31.3 192h257.3c17.8 0 26.7 21.5 14.1 34.1L174.1 354.8c-7.8 7.8-20.5 7.8-28.3 0L17.2 226.1C4.6 213.5 13.5 192 31.3 192z\"]\n};\nvar faCaretLeft = {\n  prefix: 'fas',\n  iconName: 'caret-left',\n  icon: [192, 512, [], \"f0d9\", \"M192 127.338v257.324c0 17.818-21.543 26.741-34.142 14.142L29.196 270.142c-7.81-7.81-7.81-20.474 0-28.284l128.662-128.662c12.599-12.6 34.142-3.676 34.142 14.142z\"]\n};\nvar faCaretRight = {\n  prefix: 'fas',\n  iconName: 'caret-right',\n  icon: [192, 512, [], \"f0da\", \"M0 384.662V127.338c0-17.818 21.543-26.741 34.142-14.142l128.662 128.662c7.81 7.81 7.81 20.474 0 28.284L34.142 398.804C21.543 411.404 0 402.48 0 384.662z\"]\n};\nvar faCaretSquareDown = {\n  prefix: 'fas',\n  iconName: 'caret-square-down',\n  icon: [448, 512, [], \"f150\", \"M448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zM92.5 220.5l123 123c4.7 4.7 12.3 4.7 17 0l123-123c7.6-7.6 2.2-20.5-8.5-20.5H101c-10.7 0-16.1 12.9-8.5 20.5z\"]\n};\nvar faCaretSquareLeft = {\n  prefix: 'fas',\n  iconName: 'caret-square-left',\n  icon: [448, 512, [], \"f191\", \"M400 480H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48zM259.515 124.485l-123.03 123.03c-4.686 4.686-4.686 12.284 0 16.971l123.029 123.029c7.56 7.56 20.485 2.206 20.485-8.485V132.971c.001-10.691-12.925-16.045-20.484-8.486z\"]\n};\nvar faCaretSquareRight = {\n  prefix: 'fas',\n  iconName: 'caret-square-right',\n  icon: [448, 512, [], \"f152\", \"M48 32h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48zm140.485 355.515l123.029-123.029c4.686-4.686 4.686-12.284 0-16.971l-123.029-123.03c-7.56-7.56-20.485-2.206-20.485 8.485v246.059c0 10.691 12.926 16.045 20.485 8.486z\"]\n};\nvar faCaretSquareUp = {\n  prefix: 'fas',\n  iconName: 'caret-square-up',\n  icon: [448, 512, [], \"f151\", \"M0 432V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48zm355.515-140.485l-123.03-123.03c-4.686-4.686-12.284-4.686-16.971 0L92.485 291.515c-7.56 7.56-2.206 20.485 8.485 20.485h246.059c10.691 0 16.045-12.926 8.486-20.485z\"]\n};\nvar faCaretUp = {\n  prefix: 'fas',\n  iconName: 'caret-up',\n  icon: [320, 512, [], \"f0d8\", \"M288.662 352H31.338c-17.818 0-26.741-21.543-14.142-34.142l128.662-128.662c7.81-7.81 20.474-7.81 28.284 0l128.662 128.662c12.6 12.599 3.676 34.142-14.142 34.142z\"]\n};\nvar faCarrot = {\n  prefix: 'fas',\n  iconName: 'carrot',\n  icon: [512, 512, [], \"f787\", \"M298.2 156.6c-52.7-25.7-114.5-10.5-150.2 32.8l55.2 55.2c6.3 6.3 6.3 16.4 0 22.6-3.1 3.1-7.2 4.7-11.3 4.7s-8.2-1.6-11.3-4.7L130.4 217 2.3 479.7c-2.9 6-3.1 13.3 0 19.7 5.4 11.1 18.9 15.7 30 10.3l133.6-65.2-49.2-49.2c-6.3-6.2-6.3-16.4 0-22.6 6.3-6.2 16.4-6.2 22.6 0l57 57 102-49.8c24-11.7 44.5-31.3 57.1-57.1 30.1-61.7 4.5-136.1-57.2-166.2zm92.1-34.9C409.8 81 399.7 32.9 360 0c-50.3 41.7-52.5 107.5-7.9 151.9l8 8c44.4 44.6 110.3 42.4 151.9-7.9-32.9-39.7-81-49.8-121.7-30.3z\"]\n};\nvar faCartArrowDown = {\n  prefix: 'fas',\n  iconName: 'cart-arrow-down',\n  icon: [576, 512, [], \"f218\", \"M504.717 320H211.572l6.545 32h268.418c15.401 0 26.816 14.301 23.403 29.319l-5.517 24.276C523.112 414.668 536 433.828 536 456c0 31.202-25.519 56.444-56.824 55.994-29.823-.429-54.35-24.631-55.155-54.447-.44-16.287 6.085-31.049 16.803-41.548H231.176C241.553 426.165 248 440.326 248 456c0 31.813-26.528 57.431-58.67 55.938-28.54-1.325-51.751-24.385-53.251-52.917-1.158-22.034 10.436-41.455 28.051-51.586L93.883 64H24C10.745 64 0 53.255 0 40V24C0 10.745 10.745 0 24 0h102.529c11.401 0 21.228 8.021 23.513 19.19L159.208 64H551.99c15.401 0 26.816 14.301 23.403 29.319l-47.273 208C525.637 312.246 515.923 320 504.717 320zM403.029 192H360v-60c0-6.627-5.373-12-12-12h-24c-6.627 0-12 5.373-12 12v60h-43.029c-10.691 0-16.045 12.926-8.485 20.485l67.029 67.029c4.686 4.686 12.284 4.686 16.971 0l67.029-67.029c7.559-7.559 2.205-20.485-8.486-20.485z\"]\n};\nvar faCartPlus = {\n  prefix: 'fas',\n  iconName: 'cart-plus',\n  icon: [576, 512, [], \"f217\", \"M504.717 320H211.572l6.545 32h268.418c15.401 0 26.816 14.301 23.403 29.319l-5.517 24.276C523.112 414.668 536 433.828 536 456c0 31.202-25.519 56.444-56.824 55.994-29.823-.429-54.35-24.631-55.155-54.447-.44-16.287 6.085-31.049 16.803-41.548H231.176C241.553 426.165 248 440.326 248 456c0 31.813-26.528 57.431-58.67 55.938-28.54-1.325-51.751-24.385-53.251-52.917-1.158-22.034 10.436-41.455 28.051-51.586L93.883 64H24C10.745 64 0 53.255 0 40V24C0 10.745 10.745 0 24 0h102.529c11.401 0 21.228 8.021 23.513 19.19L159.208 64H551.99c15.401 0 26.816 14.301 23.403 29.319l-47.273 208C525.637 312.246 515.923 320 504.717 320zM408 168h-48v-40c0-8.837-7.163-16-16-16h-16c-8.837 0-16 7.163-16 16v40h-48c-8.837 0-16 7.163-16 16v16c0 8.837 7.163 16 16 16h48v40c0 8.837 7.163 16 16 16h16c8.837 0 16-7.163 16-16v-40h48c8.837 0 16-7.163 16-16v-16c0-8.837-7.163-16-16-16z\"]\n};\nvar faCashRegister = {\n  prefix: 'fas',\n  iconName: 'cash-register',\n  icon: [512, 512, [], \"f788\", \"M511.1 378.8l-26.7-160c-2.6-15.4-15.9-26.7-31.6-26.7H208v-64h96c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16H48c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h96v64H59.1c-15.6 0-29 11.3-31.6 26.7L.8 378.7c-.6 3.5-.9 7-.9 10.5V480c0 17.7 14.3 32 32 32h448c17.7 0 32-14.3 32-32v-90.7c.1-3.5-.2-7-.8-10.5zM280 248c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16zm-32 64h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16zm-32-80c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16h16zM80 80V48h192v32H80zm40 200h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16zm16 64v-16c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16zm216 112c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h176c4.4 0 8 3.6 8 8v16zm24-112c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16zm48-80c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16z\"]\n};\nvar faCat = {\n  prefix: 'fas',\n  iconName: 'cat',\n  icon: [512, 512, [], \"f6be\", \"M290.59 192c-20.18 0-106.82 1.98-162.59 85.95V192c0-52.94-43.06-96-96-96-17.67 0-32 14.33-32 32s14.33 32 32 32c17.64 0 32 14.36 32 32v256c0 35.3 28.7 64 64 64h176c8.84 0 16-7.16 16-16v-16c0-17.67-14.33-32-32-32h-32l128-96v144c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V289.86c-10.29 2.67-20.89 4.54-32 4.54-61.81 0-113.52-44.05-125.41-102.4zM448 96h-64l-64-64v134.4c0 53.02 42.98 96 96 96s96-42.98 96-96V32l-64 64zm-72 80c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zm80 0c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16z\"]\n};\nvar faCertificate = {\n  prefix: 'fas',\n  iconName: 'certificate',\n  icon: [512, 512, [], \"f0a3\", \"M458.622 255.92l45.985-45.005c13.708-12.977 7.316-36.039-10.664-40.339l-62.65-15.99 17.661-62.015c4.991-17.838-11.829-34.663-29.661-29.671l-61.994 17.667-15.984-62.671C337.085.197 313.765-6.276 300.99 7.228L256 53.57 211.011 7.229c-12.63-13.351-36.047-7.234-40.325 10.668l-15.984 62.671-61.995-17.667C74.87 57.907 58.056 74.738 63.046 92.572l17.661 62.015-62.65 15.99C.069 174.878-6.31 197.944 7.392 210.915l45.985 45.005-45.985 45.004c-13.708 12.977-7.316 36.039 10.664 40.339l62.65 15.99-17.661 62.015c-4.991 17.838 11.829 34.663 29.661 29.671l61.994-17.667 15.984 62.671c4.439 18.575 27.696 24.018 40.325 10.668L256 458.61l44.989 46.001c12.5 13.488 35.987 7.486 40.325-10.668l15.984-62.671 61.994 17.667c17.836 4.994 34.651-11.837 29.661-29.671l-17.661-62.015 62.65-15.99c17.987-4.302 24.366-27.367 10.664-40.339l-45.984-45.004z\"]\n};\nvar faChair = {\n  prefix: 'fas',\n  iconName: 'chair',\n  icon: [448, 512, [], \"f6c0\", \"M112 128c0-29.5 16.2-55 40-68.9V256h48V48h48v208h48V59.1c23.8 13.9 40 39.4 40 68.9v128h48V128C384 57.3 326.7 0 256 0h-64C121.3 0 64 57.3 64 128v128h48zm334.3 213.9l-10.7-32c-4.4-13.1-16.6-21.9-30.4-21.9H42.7c-13.8 0-26 8.8-30.4 21.9l-10.7 32C-5.2 362.6 10.2 384 32 384v112c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V384h256v112c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V384c21.8 0 37.2-21.4 30.3-42.1z\"]\n};\nvar faChalkboard = {\n  prefix: 'fas',\n  iconName: 'chalkboard',\n  icon: [640, 512, [], \"f51b\", \"M96 64h448v352h64V40c0-22.06-17.94-40-40-40H72C49.94 0 32 17.94 32 40v376h64V64zm528 384H480v-64H288v64H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z\"]\n};\nvar faChalkboardTeacher = {\n  prefix: 'fas',\n  iconName: 'chalkboard-teacher',\n  icon: [640, 512, [], \"f51c\", \"M208 352c-2.39 0-4.78.35-7.06 1.09C187.98 357.3 174.35 360 160 360c-14.35 0-27.98-2.7-40.95-6.91-2.28-.74-4.66-1.09-7.05-1.09C49.94 352-.33 402.48 0 464.62.14 490.88 21.73 512 48 512h224c26.27 0 47.86-21.12 48-47.38.33-62.14-49.94-112.62-112-112.62zm-48-32c53.02 0 96-42.98 96-96s-42.98-96-96-96-96 42.98-96 96 42.98 96 96 96zM592 0H208c-26.47 0-48 22.25-48 49.59V96c23.42 0 45.1 6.78 64 17.8V64h352v288h-64v-64H384v64h-76.24c19.1 16.69 33.12 38.73 39.69 64H592c26.47 0 48-22.25 48-49.59V49.59C640 22.25 618.47 0 592 0z\"]\n};\nvar faChargingStation = {\n  prefix: 'fas',\n  iconName: 'charging-station',\n  icon: [576, 512, [], \"f5e7\", \"M336 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h320c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm208-320V80c0-8.84-7.16-16-16-16s-16 7.16-16 16v48h-32V80c0-8.84-7.16-16-16-16s-16 7.16-16 16v48h-16c-8.84 0-16 7.16-16 16v32c0 35.76 23.62 65.69 56 75.93v118.49c0 13.95-9.5 26.92-23.26 29.19C431.22 402.5 416 388.99 416 372v-28c0-48.6-39.4-88-88-88h-8V64c0-35.35-28.65-64-64-64H96C60.65 0 32 28.65 32 64v352h288V304h8c22.09 0 40 17.91 40 40v24.61c0 39.67 28.92 75.16 68.41 79.01C481.71 452.05 520 416.41 520 372V251.93c32.38-10.24 56-40.17 56-75.93v-32c0-8.84-7.16-16-16-16h-16zm-283.91 47.76l-93.7 139c-2.2 3.33-6.21 5.24-10.39 5.24-7.67 0-13.47-6.28-11.67-12.92L167.35 224H108c-7.25 0-12.85-5.59-11.89-11.89l16-107C112.9 99.9 117.98 96 124 96h68c7.88 0 13.62 6.54 11.6 13.21L192 160h57.7c9.24 0 15.01 8.78 10.39 15.76z\"]\n};\nvar faChartArea = {\n  prefix: 'fas',\n  iconName: 'chart-area',\n  icon: [512, 512, [], \"f1fe\", \"M500 384c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H12c-6.6 0-12-5.4-12-12V76c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v308h436zM372.7 159.5L288 216l-85.3-113.7c-5.1-6.8-15.5-6.3-19.9 1L96 248v104h384l-89.9-187.8c-3.2-6.5-11.4-8.7-17.4-4.7z\"]\n};\nvar faChartBar = {\n  prefix: 'fas',\n  iconName: 'chart-bar',\n  icon: [512, 512, [], \"f080\", \"M332.8 320h38.4c6.4 0 12.8-6.4 12.8-12.8V172.8c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h38.4c6.4 0 12.8-6.4 12.8-12.8V76.8c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-288 0h38.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h38.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zM496 384H64V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z\"]\n};\nvar faChartLine = {\n  prefix: 'fas',\n  iconName: 'chart-line',\n  icon: [512, 512, [], \"f201\", \"M496 384H64V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM464 96H345.94c-21.38 0-32.09 25.85-16.97 40.97l32.4 32.4L288 242.75l-73.37-73.37c-12.5-12.5-32.76-12.5-45.25 0l-68.69 68.69c-6.25 6.25-6.25 16.38 0 22.63l22.62 22.62c6.25 6.25 16.38 6.25 22.63 0L192 237.25l73.37 73.37c12.5 12.5 32.76 12.5 45.25 0l96-96 32.4 32.4c15.12 15.12 40.97 4.41 40.97-16.97V112c.01-8.84-7.15-16-15.99-16z\"]\n};\nvar faChartPie = {\n  prefix: 'fas',\n  iconName: 'chart-pie',\n  icon: [544, 512, [], \"f200\", \"M527.79 288H290.5l158.03 158.03c6.04 6.04 15.98 6.53 22.19.68 38.7-36.46 65.32-85.61 73.13-140.86 1.34-9.46-6.51-17.85-16.06-17.85zm-15.83-64.8C503.72 103.74 408.26 8.28 288.8.04 279.68-.59 272 7.1 272 16.24V240h223.77c9.14 0 16.82-7.68 16.19-16.8zM224 288V50.71c0-9.55-8.39-17.4-17.84-16.06C86.99 51.49-4.1 155.6.14 280.37 4.5 408.51 114.83 513.59 243.03 511.98c50.4-.63 96.97-16.87 135.26-44.03 7.9-5.6 8.42-17.23 1.57-24.08L224 288z\"]\n};\nvar faCheck = {\n  prefix: 'fas',\n  iconName: 'check',\n  icon: [512, 512, [], \"f00c\", \"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\"]\n};\nvar faCheckCircle = {\n  prefix: 'fas',\n  iconName: 'check-circle',\n  icon: [512, 512, [], \"f058\", \"M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zM227.314 387.314l184-184c6.248-6.248 6.248-16.379 0-22.627l-22.627-22.627c-6.248-6.249-16.379-6.249-22.628 0L216 308.118l-70.059-70.059c-6.248-6.248-16.379-6.248-22.628 0l-22.627 22.627c-6.248 6.248-6.248 16.379 0 22.627l104 104c6.249 6.249 16.379 6.249 22.628.001z\"]\n};\nvar faCheckDouble = {\n  prefix: 'fas',\n  iconName: 'check-double',\n  icon: [512, 512, [], \"f560\", \"M505 174.8l-39.6-39.6c-9.4-9.4-24.6-9.4-33.9 0L192 374.7 80.6 263.2c-9.4-9.4-24.6-9.4-33.9 0L7 302.9c-9.4 9.4-9.4 24.6 0 34L175 505c9.4 9.4 24.6 9.4 33.9 0l296-296.2c9.4-9.5 9.4-24.7.1-34zm-324.3 106c6.2 6.3 16.4 6.3 22.6 0l208-208.2c6.2-6.3 6.2-16.4 0-22.6L366.1 4.7c-6.2-6.3-16.4-6.3-22.6 0L192 156.2l-55.4-55.5c-6.2-6.3-16.4-6.3-22.6 0L68.7 146c-6.2 6.3-6.2 16.4 0 22.6l112 112.2z\"]\n};\nvar faCheckSquare = {\n  prefix: 'fas',\n  iconName: 'check-square',\n  icon: [448, 512, [], \"f14a\", \"M400 480H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48zm-204.686-98.059l184-184c6.248-6.248 6.248-16.379 0-22.627l-22.627-22.627c-6.248-6.248-16.379-6.249-22.628 0L184 302.745l-70.059-70.059c-6.248-6.248-16.379-6.248-22.628 0l-22.627 22.627c-6.248 6.248-6.248 16.379 0 22.627l104 104c6.249 6.25 16.379 6.25 22.628.001z\"]\n};\nvar faCheese = {\n  prefix: 'fas',\n  iconName: 'cheese',\n  icon: [512, 512, [], \"f7ef\", \"M0 288v160a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32V288zM299.83 32a32 32 0 0 0-21.13 7L0 256h512c0-119.89-94-217.8-212.17-224z\"]\n};\nvar faChess = {\n  prefix: 'fas',\n  iconName: 'chess',\n  icon: [512, 512, [], \"f439\", \"M74 208H64a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h15.94A535.78 535.78 0 0 1 64 384h128a535.78 535.78 0 0 1-15.94-128H192a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16h-10l33.89-90.38a16 16 0 0 0-15-21.62H144V64h24a8 8 0 0 0 8-8V40a8 8 0 0 0-8-8h-24V8a8 8 0 0 0-8-8h-16a8 8 0 0 0-8 8v24H88a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h24v32H55.09a16 16 0 0 0-15 21.62zm173.16 251.58L224 448v-16a16 16 0 0 0-16-16H48a16 16 0 0 0-16 16v16L8.85 459.58A16 16 0 0 0 0 473.89V496a16 16 0 0 0 16 16h224a16 16 0 0 0 16-16v-22.11a16 16 0 0 0-8.84-14.31zm92.77-157.78l-3.29 82.2h126.72l-3.29-82.21 24.6-20.79A32 32 0 0 0 496 256.54V198a6 6 0 0 0-6-6h-26.38a6 6 0 0 0-6 6v26h-24.71v-26a6 6 0 0 0-6-6H373.1a6 6 0 0 0-6 6v26h-24.71v-26a6 6 0 0 0-6-6H310a6 6 0 0 0-6 6v58.6a32 32 0 0 0 11.36 24.4zM384 304a16 16 0 0 1 32 0v32h-32zm119.16 155.58L480 448v-16a16 16 0 0 0-16-16H336a16 16 0 0 0-16 16v16l-23.15 11.58a16 16 0 0 0-8.85 14.31V496a16 16 0 0 0 16 16h192a16 16 0 0 0 16-16v-22.11a16 16 0 0 0-8.84-14.31z\"]\n};\nvar faChessBishop = {\n  prefix: 'fas',\n  iconName: 'chess-bishop',\n  icon: [320, 512, [], \"f43a\", \"M8 287.88c0 51.64 22.14 73.83 56 84.6V416h192v-43.52c33.86-10.77 56-33 56-84.6 0-30.61-10.73-67.1-26.69-102.56L185 285.65a8 8 0 0 1-11.31 0l-11.31-11.31a8 8 0 0 1 0-11.31L270.27 155.1c-20.8-37.91-46.47-72.1-70.87-92.59C213.4 59.09 224 47.05 224 32a32 32 0 0 0-32-32h-64a32 32 0 0 0-32 32c0 15 10.6 27.09 24.6 30.51C67.81 106.8 8 214.5 8 287.88zM304 448H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faChessBoard = {\n  prefix: 'fas',\n  iconName: 'chess-board',\n  icon: [512, 512, [], \"f43c\", \"M255.9.2h-64v64h64zM0 64.17v64h64v-64zM128 .2H64v64h64zm64 255.9v64h64v-64zM0 192.12v64h64v-64zM383.85.2h-64v64h64zm128 0h-64v64h64zM128 256.1H64v64h64zM511.8 448v-64h-64v64zm0-128v-64h-64v64zM383.85 512h64v-64h-64zm128-319.88v-64h-64v64zM128 512h64v-64h-64zM0 512h64v-64H0zm255.9 0h64v-64h-64zM0 320.07v64h64v-64zm319.88-191.92v-64h-64v64zm-64 128h64v-64h-64zm-64 128v64h64v-64zm128-64h64v-64h-64zm0-127.95h64v-64h-64zm0 191.93v64h64v-64zM64 384.05v64h64v-64zm128-255.9v-64h-64v64zm191.92 255.9h64v-64h-64zm-128-191.93v-64h-64v64zm128-127.95v64h64v-64zm-128 255.9v64h64v-64zm-64-127.95H128v64h64zm191.92 64h64v-64h-64zM128 128.15H64v64h64zm0 191.92v64h64v-64z\"]\n};\nvar faChessKing = {\n  prefix: 'fas',\n  iconName: 'chess-king',\n  icon: [448, 512, [], \"f43f\", \"M400 448H48a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h352a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm16-288H256v-48h40a8 8 0 0 0 8-8V56a8 8 0 0 0-8-8h-40V8a8 8 0 0 0-8-8h-48a8 8 0 0 0-8 8v40h-40a8 8 0 0 0-8 8v48a8 8 0 0 0 8 8h40v48H32a32 32 0 0 0-30.52 41.54L74.56 416h298.88l73.08-214.46A32 32 0 0 0 416 160z\"]\n};\nvar faChessKnight = {\n  prefix: 'fas',\n  iconName: 'chess-knight',\n  icon: [384, 512, [], \"f441\", \"M19 272.47l40.63 18.06a32 32 0 0 0 24.88.47l12.78-5.12a32 32 0 0 0 18.76-20.5l9.22-30.65a24 24 0 0 1 12.55-15.65L159.94 208v50.33a48 48 0 0 1-26.53 42.94l-57.22 28.65A80 80 0 0 0 32 401.48V416h319.86V224c0-106-85.92-192-191.92-192H12A12 12 0 0 0 0 44a16.9 16.9 0 0 0 1.79 7.58L16 80l-9 9a24 24 0 0 0-7 17v137.21a32 32 0 0 0 19 29.26zM52 128a20 20 0 1 1-20 20 20 20 0 0 1 20-20zm316 320H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h352a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faChessPawn = {\n  prefix: 'fas',\n  iconName: 'chess-pawn',\n  icon: [320, 512, [], \"f443\", \"M105.1 224H80a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h16v5.49c0 44-4.14 86.6-24 122.51h176c-19.89-35.91-24-78.51-24-122.51V288h16a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-25.1c29.39-18.38 49.1-50.78 49.1-88a104 104 0 0 0-208 0c0 37.22 19.71 69.62 49.1 88zM304 448H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faChessQueen = {\n  prefix: 'fas',\n  iconName: 'chess-queen',\n  icon: [512, 512, [], \"f445\", \"M256 112a56 56 0 1 0-56-56 56 56 0 0 0 56 56zm176 336H80a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h352a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm72.87-263.84l-28.51-15.92c-7.44-5-16.91-2.46-22.29 4.68a47.59 47.59 0 0 1-47.23 18.23C383.7 186.86 368 164.93 368 141.4a13.4 13.4 0 0 0-13.4-13.4h-38.77c-6 0-11.61 4-12.86 9.91a48 48 0 0 1-93.94 0c-1.25-5.92-6.82-9.91-12.86-9.91H157.4a13.4 13.4 0 0 0-13.4 13.4c0 25.69-19 48.75-44.67 50.49a47.5 47.5 0 0 1-41.54-19.15c-5.28-7.09-14.73-9.45-22.09-4.54l-28.57 16a16 16 0 0 0-5.44 20.47L104.24 416h303.52l102.55-211.37a16 16 0 0 0-5.44-20.47z\"]\n};\nvar faChessRook = {\n  prefix: 'fas',\n  iconName: 'chess-rook',\n  icon: [384, 512, [], \"f447\", \"M368 32h-56a16 16 0 0 0-16 16v48h-48V48a16 16 0 0 0-16-16h-80a16 16 0 0 0-16 16v48H88.1V48a16 16 0 0 0-16-16H16A16 16 0 0 0 0 48v176l64 32c0 48.33-1.54 95-13.21 160h282.42C321.54 351 320 303.72 320 256l64-32V48a16 16 0 0 0-16-16zM224 320h-64v-64a32 32 0 0 1 64 0zm144 128H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h352a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faChevronCircleDown = {\n  prefix: 'fas',\n  iconName: 'chevron-circle-down',\n  icon: [512, 512, [], \"f13a\", \"M504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zM273 369.9l135.5-135.5c9.4-9.4 9.4-24.6 0-33.9l-17-17c-9.4-9.4-24.6-9.4-33.9 0L256 285.1 154.4 183.5c-9.4-9.4-24.6-9.4-33.9 0l-17 17c-9.4 9.4-9.4 24.6 0 33.9L239 369.9c9.4 9.4 24.6 9.4 34 0z\"]\n};\nvar faChevronCircleLeft = {\n  prefix: 'fas',\n  iconName: 'chevron-circle-left',\n  icon: [512, 512, [], \"f137\", \"M256 504C119 504 8 393 8 256S119 8 256 8s248 111 248 248-111 248-248 248zM142.1 273l135.5 135.5c9.4 9.4 24.6 9.4 33.9 0l17-17c9.4-9.4 9.4-24.6 0-33.9L226.9 256l101.6-101.6c9.4-9.4 9.4-24.6 0-33.9l-17-17c-9.4-9.4-24.6-9.4-33.9 0L142.1 239c-9.4 9.4-9.4 24.6 0 34z\"]\n};\nvar faChevronCircleRight = {\n  prefix: 'fas',\n  iconName: 'chevron-circle-right',\n  icon: [512, 512, [], \"f138\", \"M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zm113.9 231L234.4 103.5c-9.4-9.4-24.6-9.4-33.9 0l-17 17c-9.4 9.4-9.4 24.6 0 33.9L285.1 256 183.5 357.6c-9.4 9.4-9.4 24.6 0 33.9l17 17c9.4 9.4 24.6 9.4 33.9 0L369.9 273c9.4-9.4 9.4-24.6 0-34z\"]\n};\nvar faChevronCircleUp = {\n  prefix: 'fas',\n  iconName: 'chevron-circle-up',\n  icon: [512, 512, [], \"f139\", \"M8 256C8 119 119 8 256 8s248 111 248 248-111 248-248 248S8 393 8 256zm231-113.9L103.5 277.6c-9.4 9.4-9.4 24.6 0 33.9l17 17c9.4 9.4 24.6 9.4 33.9 0L256 226.9l101.6 101.6c9.4 9.4 24.6 9.4 33.9 0l17-17c9.4-9.4 9.4-24.6 0-33.9L273 142.1c-9.4-9.4-24.6-9.4-34 0z\"]\n};\nvar faChevronDown = {\n  prefix: 'fas',\n  iconName: 'chevron-down',\n  icon: [448, 512, [], \"f078\", \"M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z\"]\n};\nvar faChevronLeft = {\n  prefix: 'fas',\n  iconName: 'chevron-left',\n  icon: [320, 512, [], \"f053\", \"M34.52 239.03L228.87 44.69c9.37-9.37 24.57-9.37 33.94 0l22.67 22.67c9.36 9.36 9.37 24.52.04 33.9L131.49 256l154.02 154.75c9.34 9.38 9.32 24.54-.04 33.9l-22.67 22.67c-9.37 9.37-24.57 9.37-33.94 0L34.52 272.97c-9.37-9.37-9.37-24.57 0-33.94z\"]\n};\nvar faChevronRight = {\n  prefix: 'fas',\n  iconName: 'chevron-right',\n  icon: [320, 512, [], \"f054\", \"M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z\"]\n};\nvar faChevronUp = {\n  prefix: 'fas',\n  iconName: 'chevron-up',\n  icon: [448, 512, [], \"f077\", \"M240.971 130.524l194.343 194.343c9.373 9.373 9.373 24.569 0 33.941l-22.667 22.667c-9.357 9.357-24.522 9.375-33.901.04L224 227.495 69.255 381.516c-9.379 9.335-24.544 9.317-33.901-.04l-22.667-22.667c-9.373-9.373-9.373-24.569 0-33.941L207.03 130.525c9.372-9.373 24.568-9.373 33.941-.001z\"]\n};\nvar faChild = {\n  prefix: 'fas',\n  iconName: 'child',\n  icon: [384, 512, [], \"f1ae\", \"M120 72c0-39.765 32.235-72 72-72s72 32.235 72 72c0 39.764-32.235 72-72 72s-72-32.236-72-72zm254.627 1.373c-12.496-12.497-32.758-12.497-45.254 0L242.745 160H141.254L54.627 73.373c-12.496-12.497-32.758-12.497-45.254 0-12.497 12.497-12.497 32.758 0 45.255L104 213.254V480c0 17.673 14.327 32 32 32h16c17.673 0 32-14.327 32-32V368h16v112c0 17.673 14.327 32 32 32h16c17.673 0 32-14.327 32-32V213.254l94.627-94.627c12.497-12.497 12.497-32.757 0-45.254z\"]\n};\nvar faChurch = {\n  prefix: 'fas',\n  iconName: 'church',\n  icon: [640, 512, [], \"f51d\", \"M464.46 246.68L352 179.2V128h48c8.84 0 16-7.16 16-16V80c0-8.84-7.16-16-16-16h-48V16c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v48h-48c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h48v51.2l-112.46 67.48A31.997 31.997 0 0 0 160 274.12V512h96v-96c0-35.35 28.65-64 64-64s64 28.65 64 64v96h96V274.12c0-11.24-5.9-21.66-15.54-27.44zM0 395.96V496c0 8.84 7.16 16 16 16h112V320L19.39 366.54A32.024 32.024 0 0 0 0 395.96zm620.61-29.42L512 320v192h112c8.84 0 16-7.16 16-16V395.96c0-12.8-7.63-24.37-19.39-29.42z\"]\n};\nvar faCircle = {\n  prefix: 'fas',\n  iconName: 'circle',\n  icon: [512, 512, [], \"f111\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8z\"]\n};\nvar faCircleNotch = {\n  prefix: 'fas',\n  iconName: 'circle-notch',\n  icon: [512, 512, [], \"f1ce\", \"M288 39.056v16.659c0 10.804 7.281 20.159 17.686 23.066C383.204 100.434 440 171.518 440 256c0 101.689-82.295 184-184 184-101.689 0-184-82.295-184-184 0-84.47 56.786-155.564 134.312-177.219C216.719 75.874 224 66.517 224 55.712V39.064c0-15.709-14.834-27.153-30.046-23.234C86.603 43.482 7.394 141.206 8.003 257.332c.72 137.052 111.477 246.956 248.531 246.667C393.255 503.711 504 392.788 504 256c0-115.633-79.14-212.779-186.211-240.236C302.678 11.889 288 23.456 288 39.056z\"]\n};\nvar faCity = {\n  prefix: 'fas',\n  iconName: 'city',\n  icon: [640, 512, [], \"f64f\", \"M616 192H480V24c0-13.26-10.74-24-24-24H312c-13.26 0-24 10.74-24 24v72h-64V16c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v80h-64V16c0-8.84-7.16-16-16-16H80c-8.84 0-16 7.16-16 16v80H24c-13.26 0-24 10.74-24 24v360c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V216c0-13.26-10.75-24-24-24zM128 404c0 6.63-5.37 12-12 12H76c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12H76c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12H76c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm128 192c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm160 96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12V76c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm160 288c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40z\"]\n};\nvar faClinicMedical = {\n  prefix: 'fas',\n  iconName: 'clinic-medical',\n  icon: [576, 512, [], \"f7f2\", \"M288 115L69.47 307.71c-1.62 1.46-3.69 2.14-5.47 3.35V496a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V311.1c-1.7-1.16-3.72-1.82-5.26-3.2zm96 261a8 8 0 0 1-8 8h-56v56a8 8 0 0 1-8 8h-48a8 8 0 0 1-8-8v-56h-56a8 8 0 0 1-8-8v-48a8 8 0 0 1 8-8h56v-56a8 8 0 0 1 8-8h48a8 8 0 0 1 8 8v56h56a8 8 0 0 1 8 8zm186.69-139.72l-255.94-226a39.85 39.85 0 0 0-53.45 0l-256 226a16 16 0 0 0-1.21 22.6L25.5 282.7a16 16 0 0 0 22.6 1.21L277.42 81.63a16 16 0 0 1 21.17 0L527.91 283.9a16 16 0 0 0 22.6-1.21l21.4-23.82a16 16 0 0 0-1.22-22.59z\"]\n};\nvar faClipboard = {\n  prefix: 'fas',\n  iconName: 'clipboard',\n  icon: [384, 512, [], \"f328\", \"M384 112v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h80c0-35.29 28.71-64 64-64s64 28.71 64 64h80c26.51 0 48 21.49 48 48zM192 40c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24m96 114v-20a6 6 0 0 0-6-6H102a6 6 0 0 0-6 6v20a6 6 0 0 0 6 6h180a6 6 0 0 0 6-6z\"]\n};\nvar faClipboardCheck = {\n  prefix: 'fas',\n  iconName: 'clipboard-check',\n  icon: [384, 512, [], \"f46c\", \"M336 64h-80c0-35.3-28.7-64-64-64s-64 28.7-64 64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM192 40c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm121.2 231.8l-143 141.8c-4.7 4.7-12.3 4.6-17-.1l-82.6-83.3c-4.7-4.7-4.6-12.3.1-17L99.1 285c4.7-4.7 12.3-4.6 17 .1l46 46.4 106-105.2c4.7-4.7 12.3-4.6 17 .1l28.2 28.4c4.7 4.8 4.6 12.3-.1 17z\"]\n};\nvar faClipboardList = {\n  prefix: 'fas',\n  iconName: 'clipboard-list',\n  icon: [384, 512, [], \"f46d\", \"M336 64h-80c0-35.3-28.7-64-64-64s-64 28.7-64 64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM96 424c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24zm0-96c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24zm0-96c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24zm96-192c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm128 368c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16z\"]\n};\nvar faClock = {\n  prefix: 'fas',\n  iconName: 'clock',\n  icon: [512, 512, [], \"f017\", \"M256,8C119,8,8,119,8,256S119,504,256,504,504,393,504,256,393,8,256,8Zm92.49,313h0l-20,25a16,16,0,0,1-22.49,2.5h0l-67-49.72a40,40,0,0,1-15-31.23V112a16,16,0,0,1,16-16h32a16,16,0,0,1,16,16V256l58,42.5A16,16,0,0,1,348.49,321Z\"]\n};\nvar faClone = {\n  prefix: 'fas',\n  iconName: 'clone',\n  icon: [512, 512, [], \"f24d\", \"M464 0c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48H176c-26.51 0-48-21.49-48-48V48c0-26.51 21.49-48 48-48h288M176 416c-44.112 0-80-35.888-80-80V128H48c-26.51 0-48 21.49-48 48v288c0 26.51 21.49 48 48 48h288c26.51 0 48-21.49 48-48v-48H176z\"]\n};\nvar faClosedCaptioning = {\n  prefix: 'fas',\n  iconName: 'closed-captioning',\n  icon: [512, 512, [], \"f20a\", \"M464 64H48C21.5 64 0 85.5 0 112v288c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM218.1 287.7c2.8-2.5 7.1-2.1 9.2.9l19.5 27.7c1.7 2.4 1.5 5.6-.5 7.7-53.6 56.8-172.8 32.1-172.8-67.9 0-97.3 121.7-119.5 172.5-70.1 2.1 2 2.5 3.2 1 5.7l-17.5 30.5c-1.9 3.1-6.2 4-9.1 1.7-40.8-32-94.6-14.9-94.6 31.2.1 48 51.1 70.5 92.3 32.6zm190.4 0c2.8-2.5 7.1-2.1 9.2.9l19.5 27.7c1.7 2.4 1.5 5.6-.5 7.7-53.5 56.9-172.7 32.1-172.7-67.9 0-97.3 121.7-119.5 172.5-70.1 2.1 2 2.5 3.2 1 5.7L420 222.2c-1.9 3.1-6.2 4-9.1 1.7-40.8-32-94.6-14.9-94.6 31.2 0 48 51 70.5 92.2 32.6z\"]\n};\nvar faCloud = {\n  prefix: 'fas',\n  iconName: 'cloud',\n  icon: [640, 512, [], \"f0c2\", \"M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4z\"]\n};\nvar faCloudDownloadAlt = {\n  prefix: 'fas',\n  iconName: 'cloud-download-alt',\n  icon: [640, 512, [], \"f381\", \"M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4zm-132.9 88.7L299.3 420.7c-6.2 6.2-16.4 6.2-22.6 0L171.3 315.3c-10.1-10.1-2.9-27.3 11.3-27.3H248V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v112h65.4c14.2 0 21.4 17.2 11.3 27.3z\"]\n};\nvar faCloudMeatball = {\n  prefix: 'fas',\n  iconName: 'cloud-meatball',\n  icon: [512, 512, [], \"f73b\", \"M48 352c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48zm416 0c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48zm-119 11.1c4.6-14.5 1.6-30.8-9.8-42.3-11.5-11.5-27.8-14.4-42.3-9.9-7-13.5-20.7-23-36.9-23s-29.9 9.5-36.9 23c-14.5-4.6-30.8-1.6-42.3 9.9-11.5 11.5-14.4 27.8-9.9 42.3-13.5 7-23 20.7-23 36.9s9.5 29.9 23 36.9c-4.6 14.5-1.6 30.8 9.9 42.3 8.2 8.2 18.9 12.3 29.7 12.3 4.3 0 8.5-1.1 12.6-2.5 7 13.5 20.7 23 36.9 23s29.9-9.5 36.9-23c4.1 1.3 8.3 2.5 12.6 2.5 10.8 0 21.5-4.1 29.7-12.3 11.5-11.5 14.4-27.8 9.8-42.3 13.5-7 23-20.7 23-36.9s-9.5-29.9-23-36.9zM512 224c0-53-43-96-96-96-.6 0-1.1.2-1.6.2 1.1-5.2 1.6-10.6 1.6-16.2 0-44.2-35.8-80-80-80-24.6 0-46.3 11.3-61 28.8C256.4 24.8 219.3 0 176 0 114.1 0 64 50.1 64 112c0 7.3.8 14.3 2.1 21.2C27.8 145.8 0 181.5 0 224c0 53 43 96 96 96h43.4c3.6-8 8.4-15.4 14.8-21.8 13.5-13.5 31.5-21.1 50.8-21.3 13.5-13.2 31.7-20.9 51-20.9s37.5 7.7 51 20.9c19.3.2 37.3 7.8 50.8 21.3 6.4 6.4 11.3 13.8 14.8 21.8H416c53 0 96-43 96-96z\"]\n};\nvar faCloudMoon = {\n  prefix: 'fas',\n  iconName: 'cloud-moon',\n  icon: [576, 512, [], \"f6c3\", \"M342.8 352.7c5.7-9.6 9.2-20.7 9.2-32.7 0-35.3-28.7-64-64-64-17.2 0-32.8 6.9-44.3 17.9-16.3-29.6-47.5-49.9-83.7-49.9-53 0-96 43-96 96 0 2 .5 3.8.6 5.7C27.1 338.8 0 374.1 0 416c0 53 43 96 96 96h240c44.2 0 80-35.8 80-80 0-41.9-32.3-75.8-73.2-79.3zm222.5-54.3c-93.1 17.7-178.5-53.7-178.5-147.7 0-54.2 29-104 76.1-130.8 7.3-4.1 5.4-15.1-2.8-16.7C448.4 1.1 436.7 0 425 0 319.1 0 233.1 85.9 233.1 192c0 8.5.7 16.8 1.8 25 5.9 4.3 11.6 8.9 16.7 14.2 11.4-4.7 23.7-7.2 36.4-7.2 52.9 0 96 43.1 96 96 0 3.6-.2 7.2-.6 10.7 23.6 10.8 42.4 29.5 53.5 52.6 54.4-3.4 103.7-29.3 137.1-70.4 5.3-6.5-.5-16.1-8.7-14.5z\"]\n};\nvar faCloudMoonRain = {\n  prefix: 'fas',\n  iconName: 'cloud-moon-rain',\n  icon: [576, 512, [], \"f73c\", \"M350.5 225.5c-6.9-37.2-39.3-65.5-78.5-65.5-12.3 0-23.9 3-34.3 8-17.4-24.1-45.6-40-77.7-40-53 0-96 43-96 96 0 .5.2 1.1.2 1.6C27.6 232.9 0 265.2 0 304c0 44.2 35.8 80 80 80h256c44.2 0 80-35.8 80-80 0-39.2-28.2-71.7-65.5-78.5zm217.4-1.7c-70.4 13.3-135-40.3-135-110.8 0-40.6 21.9-78 57.5-98.1 5.5-3.1 4.1-11.4-2.1-12.5C479.6.8 470.7 0 461.8 0c-77.9 0-141.1 61.2-144.4 137.9 26.7 11.9 48.2 33.8 58.9 61.7 37.1 14.3 64 47.4 70.2 86.8 5.1.5 10 1.5 15.2 1.5 44.7 0 85.6-20.2 112.6-53.3 4.2-4.8-.2-12-6.4-10.8zM364.5 418.1c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8z\"]\n};\nvar faCloudRain = {\n  prefix: 'fas',\n  iconName: 'cloud-rain',\n  icon: [512, 512, [], \"f73d\", \"M416 128c-.6 0-1.1.2-1.6.2 1.1-5.2 1.6-10.6 1.6-16.2 0-44.2-35.8-80-80-80-24.6 0-46.3 11.3-61 28.8C256.4 24.8 219.3 0 176 0 114.1 0 64 50.1 64 112c0 7.3.8 14.3 2.1 21.2C27.8 145.8 0 181.5 0 224c0 53 43 96 96 96h320c53 0 96-43 96-96s-43-96-96-96zM88 374.2c-12.8 44.4-40 56.4-40 87.7 0 27.7 21.5 50.1 48 50.1s48-22.4 48-50.1c0-31.4-27.2-43.1-40-87.7-2.2-8.1-13.5-8.5-16 0zm160 0c-12.8 44.4-40 56.4-40 87.7 0 27.7 21.5 50.1 48 50.1s48-22.4 48-50.1c0-31.4-27.2-43.1-40-87.7-2.2-8.1-13.5-8.5-16 0zm160 0c-12.8 44.4-40 56.4-40 87.7 0 27.7 21.5 50.1 48 50.1s48-22.4 48-50.1c0-31.4-27.2-43.1-40-87.7-2.2-8.1-13.5-8.5-16 0z\"]\n};\nvar faCloudShowersHeavy = {\n  prefix: 'fas',\n  iconName: 'cloud-showers-heavy',\n  icon: [512, 512, [], \"f740\", \"M183.9 370.1c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zm96 0c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zm-192 0c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zm384 0c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zm-96 0c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zM416 128c-.6 0-1.1.2-1.6.2 1.1-5.2 1.6-10.6 1.6-16.2 0-44.2-35.8-80-80-80-24.6 0-46.3 11.3-61 28.8C256.4 24.8 219.3 0 176 0 114.2 0 64 50.1 64 112c0 7.3.8 14.3 2.1 21.2C27.8 145.8 0 181.5 0 224c0 53 43 96 96 96h320c53 0 96-43 96-96s-43-96-96-96z\"]\n};\nvar faCloudSun = {\n  prefix: 'fas',\n  iconName: 'cloud-sun',\n  icon: [640, 512, [], \"f6c4\", \"M575.2 325.7c.2-1.9.8-3.7.8-5.6 0-35.3-28.7-64-64-64-12.6 0-24.2 3.8-34.1 10-17.6-38.8-56.5-66-101.9-66-61.8 0-112 50.1-112 112 0 3 .7 5.8.9 8.7-49.6 3.7-88.9 44.7-88.9 95.3 0 53 43 96 96 96h272c53 0 96-43 96-96 0-42.1-27.2-77.4-64.8-90.4zm-430.4-22.6c-43.7-43.7-43.7-114.7 0-158.3 43.7-43.7 114.7-43.7 158.4 0 9.7 9.7 16.9 20.9 22.3 32.7 9.8-3.7 20.1-6 30.7-7.5L386 81.1c4-11.9-7.3-23.1-19.2-19.2L279 91.2 237.5 8.4C232-2.8 216-2.8 210.4 8.4L169 91.2 81.1 61.9C69.3 58 58 69.3 61.9 81.1l29.3 87.8-82.8 41.5c-11.2 5.6-11.2 21.5 0 27.1l82.8 41.4-29.3 87.8c-4 11.9 7.3 23.1 19.2 19.2l76.1-25.3c6.1-12.4 14-23.7 23.6-33.5-13.1-5.4-25.4-13.4-36-24zm-4.8-79.2c0 40.8 29.3 74.8 67.9 82.3 8-4.7 16.3-8.8 25.2-11.7 5.4-44.3 31-82.5 67.4-105C287.3 160.4 258 140 224 140c-46.3 0-84 37.6-84 83.9z\"]\n};\nvar faCloudSunRain = {\n  prefix: 'fas',\n  iconName: 'cloud-sun-rain',\n  icon: [576, 512, [], \"f743\", \"M510.5 225.5c-6.9-37.2-39.3-65.5-78.5-65.5-12.3 0-23.9 3-34.3 8-17.4-24.1-45.6-40-77.7-40-53 0-96 43-96 96 0 .5.2 1.1.2 1.6C187.6 233 160 265.2 160 304c0 44.2 35.8 80 80 80h256c44.2 0 80-35.8 80-80 0-39.2-28.2-71.7-65.5-78.5zm-386.4 34.4c-37.4-37.4-37.4-98.3 0-135.8 34.6-34.6 89.1-36.8 126.7-7.4 20-12.9 43.6-20.7 69.2-20.7.7 0 1.3.2 2 .2l8.9-26.7c3.4-10.2-6.3-19.8-16.5-16.4l-75.3 25.1-35.5-71c-4.8-9.6-18.5-9.6-23.3 0l-35.5 71-75.3-25.1c-10.2-3.4-19.8 6.3-16.4 16.5l25.1 75.3-71 35.5c-9.6 4.8-9.6 18.5 0 23.3l71 35.5-25.1 75.3c-3.4 10.2 6.3 19.8 16.5 16.5l59.2-19.7c-.2-2.4-.7-4.7-.7-7.2 0-12.5 2.3-24.5 6.2-35.9-3.6-2.7-7.1-5.2-10.2-8.3zm69.8-58c4.3-24.5 15.8-46.4 31.9-64-9.8-6.2-21.4-9.9-33.8-9.9-35.3 0-64 28.7-64 64 0 18.7 8.2 35.4 21.1 47.1 11.3-15.9 26.6-28.9 44.8-37.2zm330.6 216.2c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8z\"]\n};\nvar faCloudUploadAlt = {\n  prefix: 'fas',\n  iconName: 'cloud-upload-alt',\n  icon: [640, 512, [], \"f382\", \"M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4zM393.4 288H328v112c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V288h-65.4c-14.3 0-21.4-17.2-11.3-27.3l105.4-105.4c6.2-6.2 16.4-6.2 22.6 0l105.4 105.4c10.1 10.1 2.9 27.3-11.3 27.3z\"]\n};\nvar faCocktail = {\n  prefix: 'fas',\n  iconName: 'cocktail',\n  icon: [576, 512, [], \"f561\", \"M296 464h-56V338.78l168.74-168.73c15.52-15.52 4.53-42.05-17.42-42.05H24.68c-21.95 0-32.94 26.53-17.42 42.05L176 338.78V464h-56c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h240c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40zM432 0c-62.61 0-115.35 40.2-135.18 96h52.54c16.65-28.55 47.27-48 82.64-48 52.93 0 96 43.06 96 96s-43.07 96-96 96c-14.04 0-27.29-3.2-39.32-8.64l-35.26 35.26C379.23 279.92 404.59 288 432 288c79.53 0 144-64.47 144-144S511.53 0 432 0z\"]\n};\nvar faCode = {\n  prefix: 'fas',\n  iconName: 'code',\n  icon: [640, 512, [], \"f121\", \"M278.9 511.5l-61-17.7c-6.4-1.8-10-8.5-8.2-14.9L346.2 8.7c1.8-6.4 8.5-10 14.9-8.2l61 17.7c6.4 1.8 10 8.5 8.2 14.9L293.8 503.3c-1.9 6.4-8.5 10.1-14.9 8.2zm-114-112.2l43.5-46.4c4.6-4.9 4.3-12.7-.8-17.2L117 256l90.6-79.7c5.1-4.5 5.5-12.3.8-17.2l-43.5-46.4c-4.5-4.8-12.1-5.1-17-.5L3.8 247.2c-5.1 4.7-5.1 12.8 0 17.5l144.1 135.1c4.9 4.6 12.5 4.4 17-.5zm327.2.6l144.1-135.1c5.1-4.7 5.1-12.8 0-17.5L492.1 112.1c-4.8-4.5-12.4-4.3-17 .5L431.6 159c-4.6 4.9-4.3 12.7.8 17.2L523 256l-90.6 79.7c-5.1 4.5-5.5 12.3-.8 17.2l43.5 46.4c4.5 4.9 12.1 5.1 17 .6z\"]\n};\nvar faCodeBranch = {\n  prefix: 'fas',\n  iconName: 'code-branch',\n  icon: [384, 512, [], \"f126\", \"M384 144c0-44.2-35.8-80-80-80s-80 35.8-80 80c0 36.4 24.3 67.1 57.5 76.8-.6 16.1-4.2 28.5-11 36.9-15.4 19.2-49.3 22.4-85.2 25.7-28.2 2.6-57.4 5.4-81.3 16.9v-144c32.5-10.2 56-40.5 56-76.3 0-44.2-35.8-80-80-80S0 35.8 0 80c0 35.8 23.5 66.1 56 76.3v199.3C23.5 365.9 0 396.2 0 432c0 44.2 35.8 80 80 80s80-35.8 80-80c0-34-21.2-63.1-51.2-74.6 3.1-5.2 7.8-9.8 14.9-13.4 16.2-8.2 40.4-10.4 66.1-12.8 42.2-3.9 90-8.4 118.2-43.4 14-17.4 21.1-39.8 21.6-67.9 31.6-10.8 54.4-40.7 54.4-75.9zM80 64c8.8 0 16 7.2 16 16s-7.2 16-16 16-16-7.2-16-16 7.2-16 16-16zm0 384c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm224-320c8.8 0 16 7.2 16 16s-7.2 16-16 16-16-7.2-16-16 7.2-16 16-16z\"]\n};\nvar faCoffee = {\n  prefix: 'fas',\n  iconName: 'coffee',\n  icon: [640, 512, [], \"f0f4\", \"M192 384h192c53 0 96-43 96-96h32c70.6 0 128-57.4 128-128S582.6 32 512 32H120c-13.3 0-24 10.7-24 24v232c0 53 43 96 96 96zM512 96c35.3 0 64 28.7 64 64s-28.7 64-64 64h-32V96h32zm47.7 384H48.3c-47.6 0-61-64-36-64h583.3c25 0 11.8 64-35.9 64z\"]\n};\nvar faCog = {\n  prefix: 'fas',\n  iconName: 'cog',\n  icon: [512, 512, [], \"f013\", \"M487.4 315.7l-42.6-24.6c4.3-23.2 4.3-47 0-70.2l42.6-24.6c4.9-2.8 7.1-8.6 5.5-14-11.1-35.6-30-67.8-54.7-94.6-3.8-4.1-10-5.1-14.8-2.3L380.8 110c-17.9-15.4-38.5-27.3-60.8-35.1V25.8c0-5.6-3.9-10.5-9.4-11.7-36.7-8.2-74.3-7.8-109.2 0-5.5 1.2-9.4 6.1-9.4 11.7V75c-22.2 7.9-42.8 19.8-60.8 35.1L88.7 85.5c-4.9-2.8-11-1.9-14.8 2.3-24.7 26.7-43.6 58.9-54.7 94.6-1.7 5.4.6 11.2 5.5 14L67.3 221c-4.3 23.2-4.3 47 0 70.2l-42.6 24.6c-4.9 2.8-7.1 8.6-5.5 14 11.1 35.6 30 67.8 54.7 94.6 3.8 4.1 10 5.1 14.8 2.3l42.6-24.6c17.9 15.4 38.5 27.3 60.8 35.1v49.2c0 5.6 3.9 10.5 9.4 11.7 36.7 8.2 74.3 7.8 109.2 0 5.5-1.2 9.4-6.1 9.4-11.7v-49.2c22.2-7.9 42.8-19.8 60.8-35.1l42.6 24.6c4.9 2.8 11 1.9 14.8-2.3 24.7-26.7 43.6-58.9 54.7-94.6 1.5-5.5-.7-11.3-5.6-14.1zM256 336c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\"]\n};\nvar faCogs = {\n  prefix: 'fas',\n  iconName: 'cogs',\n  icon: [640, 512, [], \"f085\", \"M512.1 191l-8.2 14.3c-3 5.3-9.4 7.5-15.1 5.4-11.8-4.4-22.6-10.7-32.1-18.6-4.6-3.8-5.8-10.5-2.8-15.7l8.2-14.3c-6.9-8-12.3-17.3-15.9-27.4h-16.5c-6 0-11.2-4.3-12.2-10.3-2-12-2.1-24.6 0-37.1 1-6 6.2-10.4 12.2-10.4h16.5c3.6-10.1 9-19.4 15.9-27.4l-8.2-14.3c-3-5.2-1.9-11.9 2.8-15.7 9.5-7.9 20.4-14.2 32.1-18.6 5.7-2.1 12.1.1 15.1 5.4l8.2 14.3c10.5-1.9 21.2-1.9 31.7 0L552 6.3c3-5.3 9.4-7.5 15.1-5.4 11.8 4.4 22.6 10.7 32.1 18.6 4.6 3.8 5.8 10.5 2.8 15.7l-8.2 14.3c6.9 8 12.3 17.3 15.9 27.4h16.5c6 0 11.2 4.3 12.2 10.3 2 12 2.1 24.6 0 37.1-1 6-6.2 10.4-12.2 10.4h-16.5c-3.6 10.1-9 19.4-15.9 27.4l8.2 14.3c3 5.2 1.9 11.9-2.8 15.7-9.5 7.9-20.4 14.2-32.1 18.6-5.7 2.1-12.1-.1-15.1-5.4l-8.2-14.3c-10.4 1.9-21.2 1.9-31.7 0zm-10.5-58.8c38.5 29.6 82.4-14.3 52.8-52.8-38.5-29.7-82.4 14.3-52.8 52.8zM386.3 286.1l33.7 16.8c10.1 5.8 14.5 18.1 10.5 29.1-8.9 24.2-26.4 46.4-42.6 65.8-7.4 8.9-20.2 11.1-30.3 5.3l-29.1-16.8c-16 13.7-34.6 24.6-54.9 31.7v33.6c0 11.6-8.3 21.6-19.7 23.6-24.6 4.2-50.4 4.4-75.9 0-11.5-2-20-11.9-20-23.6V418c-20.3-7.2-38.9-18-54.9-31.7L74 403c-10 5.8-22.9 3.6-30.3-5.3-16.2-19.4-33.3-41.6-42.2-65.7-4-10.9.4-23.2 10.5-29.1l33.3-16.8c-3.9-20.9-3.9-42.4 0-63.4L12 205.8c-10.1-5.8-14.6-18.1-10.5-29 8.9-24.2 26-46.4 42.2-65.8 7.4-8.9 20.2-11.1 30.3-5.3l29.1 16.8c16-13.7 34.6-24.6 54.9-31.7V57.1c0-11.5 8.2-21.5 19.6-23.5 24.6-4.2 50.5-4.4 76-.1 11.5 2 20 11.9 20 23.6v33.6c20.3 7.2 38.9 18 54.9 31.7l29.1-16.8c10-5.8 22.9-3.6 30.3 5.3 16.2 19.4 33.2 41.6 42.1 65.8 4 10.9.1 23.2-10 29.1l-33.7 16.8c3.9 21 3.9 42.5 0 63.5zm-117.6 21.1c59.2-77-28.7-164.9-105.7-105.7-59.2 77 28.7 164.9 105.7 105.7zm243.4 182.7l-8.2 14.3c-3 5.3-9.4 7.5-15.1 5.4-11.8-4.4-22.6-10.7-32.1-18.6-4.6-3.8-5.8-10.5-2.8-15.7l8.2-14.3c-6.9-8-12.3-17.3-15.9-27.4h-16.5c-6 0-11.2-4.3-12.2-10.3-2-12-2.1-24.6 0-37.1 1-6 6.2-10.4 12.2-10.4h16.5c3.6-10.1 9-19.4 15.9-27.4l-8.2-14.3c-3-5.2-1.9-11.9 2.8-15.7 9.5-7.9 20.4-14.2 32.1-18.6 5.7-2.1 12.1.1 15.1 5.4l8.2 14.3c10.5-1.9 21.2-1.9 31.7 0l8.2-14.3c3-5.3 9.4-7.5 15.1-5.4 11.8 4.4 22.6 10.7 32.1 18.6 4.6 3.8 5.8 10.5 2.8 15.7l-8.2 14.3c6.9 8 12.3 17.3 15.9 27.4h16.5c6 0 11.2 4.3 12.2 10.3 2 12 2.1 24.6 0 37.1-1 6-6.2 10.4-12.2 10.4h-16.5c-3.6 10.1-9 19.4-15.9 27.4l8.2 14.3c3 5.2 1.9 11.9-2.8 15.7-9.5 7.9-20.4 14.2-32.1 18.6-5.7 2.1-12.1-.1-15.1-5.4l-8.2-14.3c-10.4 1.9-21.2 1.9-31.7 0zM501.6 431c38.5 29.6 82.4-14.3 52.8-52.8-38.5-29.6-82.4 14.3-52.8 52.8z\"]\n};\nvar faCoins = {\n  prefix: 'fas',\n  iconName: 'coins',\n  icon: [512, 512, [], \"f51e\", \"M0 405.3V448c0 35.3 86 64 192 64s192-28.7 192-64v-42.7C342.7 434.4 267.2 448 192 448S41.3 434.4 0 405.3zM320 128c106 0 192-28.7 192-64S426 0 320 0 128 28.7 128 64s86 64 192 64zM0 300.4V352c0 35.3 86 64 192 64s192-28.7 192-64v-51.6c-41.3 34-116.9 51.6-192 51.6S41.3 334.4 0 300.4zm416 11c57.3-11.1 96-31.7 96-55.4v-42.7c-23.2 16.4-57.3 27.6-96 34.5v63.6zM192 160C86 160 0 195.8 0 240s86 80 192 80 192-35.8 192-80-86-80-192-80zm219.3 56.3c60-10.8 100.7-32 100.7-56.3v-42.7c-35.5 25.1-96.5 38.6-160.7 41.8 29.5 14.3 51.2 33.5 60 57.2z\"]\n};\nvar faColumns = {\n  prefix: 'fas',\n  iconName: 'columns',\n  icon: [512, 512, [], \"f0db\", \"M464 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM224 416H64V160h160v256zm224 0H288V160h160v256z\"]\n};\nvar faComment = {\n  prefix: 'fas',\n  iconName: 'comment',\n  icon: [512, 512, [], \"f075\", \"M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5c-2.2 2.3-2.8 5.7-1.5 8.7S4.8 480 8 480c66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 141.4 0 256-93.1 256-208S397.4 32 256 32z\"]\n};\nvar faCommentAlt = {\n  prefix: 'fas',\n  iconName: 'comment-alt',\n  icon: [512, 512, [], \"f27a\", \"M448 0H64C28.7 0 0 28.7 0 64v288c0 35.3 28.7 64 64 64h96v84c0 9.8 11.2 15.5 19.1 9.7L304 416h144c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64z\"]\n};\nvar faCommentDollar = {\n  prefix: 'fas',\n  iconName: 'comment-dollar',\n  icon: [512, 512, [], \"f651\", \"M256 32C114.62 32 0 125.12 0 240c0 49.56 21.41 95.01 57.02 130.74C44.46 421.05 2.7 465.97 2.2 466.5A7.995 7.995 0 0 0 8 480c66.26 0 115.99-31.75 140.6-51.38C181.29 440.93 217.59 448 256 448c141.38 0 256-93.12 256-208S397.38 32 256 32zm24 302.44V352c0 8.84-7.16 16-16 16h-16c-8.84 0-16-7.16-16-16v-17.73c-11.42-1.35-22.28-5.19-31.78-11.46-6.22-4.11-6.82-13.11-1.55-18.38l17.52-17.52c3.74-3.74 9.31-4.24 14.11-2.03 3.18 1.46 6.66 2.22 10.26 2.22h32.78c4.66 0 8.44-3.78 8.44-8.42 0-3.75-2.52-7.08-6.12-8.11l-50.07-14.3c-22.25-6.35-40.01-24.71-42.91-47.67-4.05-32.07 19.03-59.43 49.32-63.05V128c0-8.84 7.16-16 16-16h16c8.84 0 16 7.16 16 16v17.73c11.42 1.35 22.28 5.19 31.78 11.46 6.22 4.11 6.82 13.11 1.55 18.38l-17.52 17.52c-3.74 3.74-9.31 4.24-14.11 2.03a24.516 24.516 0 0 0-10.26-2.22h-32.78c-4.66 0-8.44 3.78-8.44 8.42 0 3.75 2.52 7.08 6.12 8.11l50.07 14.3c22.25 6.36 40.01 24.71 42.91 47.67 4.05 32.06-19.03 59.42-49.32 63.04z\"]\n};\nvar faCommentDots = {\n  prefix: 'fas',\n  iconName: 'comment-dots',\n  icon: [512, 512, [], \"f4ad\", \"M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5c-2.2 2.3-2.8 5.7-1.5 8.7S4.8 480 8 480c66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 141.4 0 256-93.1 256-208S397.4 32 256 32zM128 272c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faCommentMedical = {\n  prefix: 'fas',\n  iconName: 'comment-medical',\n  icon: [512, 512, [], \"f7f5\", \"M256 32C114.62 32 0 125.12 0 240c0 49.56 21.41 95 57 130.74C44.46 421.05 2.7 466 2.2 466.5A8 8 0 0 0 8 480c66.26 0 116-31.75 140.6-51.38A304.66 304.66 0 0 0 256 448c141.39 0 256-93.12 256-208S397.39 32 256 32zm96 232a8 8 0 0 1-8 8h-56v56a8 8 0 0 1-8 8h-48a8 8 0 0 1-8-8v-56h-56a8 8 0 0 1-8-8v-48a8 8 0 0 1 8-8h56v-56a8 8 0 0 1 8-8h48a8 8 0 0 1 8 8v56h56a8 8 0 0 1 8 8z\"]\n};\nvar faCommentSlash = {\n  prefix: 'fas',\n  iconName: 'comment-slash',\n  icon: [640, 512, [], \"f4b3\", \"M64 240c0 49.6 21.4 95 57 130.7-12.6 50.3-54.3 95.2-54.8 95.8-2.2 2.3-2.8 5.7-1.5 8.7 1.3 2.9 4.1 4.8 7.3 4.8 66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 27.4 0 53.7-3.6 78.4-10L72.9 186.4c-5.6 17.1-8.9 35-8.9 53.6zm569.8 218.1l-114.4-88.4C554.6 334.1 576 289.2 576 240c0-114.9-114.6-208-256-208-65.1 0-124.2 20.1-169.4 52.7L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4l588.4 454.7c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.4-6.8 4.1-16.9-2.9-22.3z\"]\n};\nvar faComments = {\n  prefix: 'fas',\n  iconName: 'comments',\n  icon: [576, 512, [], \"f086\", \"M416 192c0-88.4-93.1-160-208-160S0 103.6 0 192c0 34.3 14.1 65.9 38 92-13.4 30.2-35.5 54.2-35.8 54.5-2.2 2.3-2.8 5.7-1.5 8.7S4.8 352 8 352c36.6 0 66.9-12.3 88.7-25 32.2 15.7 70.3 25 111.3 25 114.9 0 208-71.6 208-160zm122 220c23.9-26 38-57.7 38-92 0-66.9-53.5-124.2-129.3-148.1.9 6.6 1.3 13.3 1.3 20.1 0 105.9-107.7 192-240 192-10.8 0-21.3-.8-31.7-1.9C207.8 439.6 281.8 480 368 480c41 0 79.1-9.2 111.3-25 21.8 12.7 52.1 25 88.7 25 3.2 0 6.1-1.9 7.3-4.8 1.3-2.9.7-6.3-1.5-8.7-.3-.3-22.4-24.2-35.8-54.5z\"]\n};\nvar faCommentsDollar = {\n  prefix: 'fas',\n  iconName: 'comments-dollar',\n  icon: [576, 512, [], \"f653\", \"M416 192c0-88.37-93.12-160-208-160S0 103.63 0 192c0 34.27 14.13 65.95 37.97 91.98C24.61 314.22 2.52 338.16 2.2 338.5A7.995 7.995 0 0 0 8 352c36.58 0 66.93-12.25 88.73-24.98C128.93 342.76 167.02 352 208 352c114.88 0 208-71.63 208-160zm-224 96v-16.29c-11.29-.58-22.27-4.52-31.37-11.35-3.9-2.93-4.1-8.77-.57-12.14l11.75-11.21c2.77-2.64 6.89-2.76 10.13-.73 3.87 2.42 8.26 3.72 12.82 3.72h28.11c6.5 0 11.8-5.92 11.8-13.19 0-5.95-3.61-11.19-8.77-12.73l-45-13.5c-18.59-5.58-31.58-23.42-31.58-43.39 0-24.52 19.05-44.44 42.67-45.07V96c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16.29c11.29.58 22.27 4.51 31.37 11.35 3.9 2.93 4.1 8.77.57 12.14l-11.75 11.21c-2.77 2.64-6.89 2.76-10.13.73-3.87-2.43-8.26-3.72-12.82-3.72h-28.11c-6.5 0-11.8 5.92-11.8 13.19 0 5.95 3.61 11.19 8.77 12.73l45 13.5c18.59 5.58 31.58 23.42 31.58 43.39 0 24.53-19.05 44.44-42.67 45.07V288c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8zm346.01 123.99C561.87 385.96 576 354.27 576 320c0-66.94-53.49-124.2-129.33-148.07.86 6.6 1.33 13.29 1.33 20.07 0 105.87-107.66 192-240 192-10.78 0-21.32-.77-31.73-1.88C207.8 439.63 281.77 480 368 480c40.98 0 79.07-9.24 111.27-24.98C501.07 467.75 531.42 480 568 480c3.2 0 6.09-1.91 7.34-4.84 1.27-2.94.66-6.34-1.55-8.67-.31-.33-22.42-24.24-35.78-54.5z\"]\n};\nvar faCompactDisc = {\n  prefix: 'fas',\n  iconName: 'compact-disc',\n  icon: [496, 512, [], \"f51f\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM88 256H56c0-105.9 86.1-192 192-192v32c-88.2 0-160 71.8-160 160zm160 96c-53 0-96-43-96-96s43-96 96-96 96 43 96 96-43 96-96 96zm0-128c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32z\"]\n};\nvar faCompass = {\n  prefix: 'fas',\n  iconName: 'compass',\n  icon: [496, 512, [], \"f14e\", \"M225.38 233.37c-12.5 12.5-12.5 32.76 0 45.25 12.49 12.5 32.76 12.5 45.25 0 12.5-12.5 12.5-32.76 0-45.25-12.5-12.49-32.76-12.49-45.25 0zM248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm126.14 148.05L308.17 300.4a31.938 31.938 0 0 1-15.77 15.77l-144.34 65.97c-16.65 7.61-33.81-9.55-26.2-26.2l65.98-144.35a31.938 31.938 0 0 1 15.77-15.77l144.34-65.97c16.65-7.6 33.8 9.55 26.19 26.2z\"]\n};\nvar faCompress = {\n  prefix: 'fas',\n  iconName: 'compress',\n  icon: [448, 512, [], \"f066\", \"M436 192H312c-13.3 0-24-10.7-24-24V44c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v84h84c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12zm-276-24V44c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v84H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h124c13.3 0 24-10.7 24-24zm0 300V344c0-13.3-10.7-24-24-24H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h84v84c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm192 0v-84h84c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12H312c-13.3 0-24 10.7-24 24v124c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12z\"]\n};\nvar faCompressAlt = {\n  prefix: 'fas',\n  iconName: 'compress-alt',\n  icon: [448, 512, [], \"f422\", \"M4.686 427.314L104 328l-32.922-31.029C55.958 281.851 66.666 256 88.048 256h112C213.303 256 224 266.745 224 280v112c0 21.382-25.803 32.09-40.922 16.971L152 376l-99.314 99.314c-6.248 6.248-16.379 6.248-22.627 0L4.686 449.941c-6.248-6.248-6.248-16.379 0-22.627zM443.314 84.686L344 184l32.922 31.029c15.12 15.12 4.412 40.971-16.97 40.971h-112C234.697 256 224 245.255 224 232V120c0-21.382 25.803-32.09 40.922-16.971L296 136l99.314-99.314c6.248-6.248 16.379-6.248 22.627 0l25.373 25.373c6.248 6.248 6.248 16.379 0 22.627z\"]\n};\nvar faCompressArrowsAlt = {\n  prefix: 'fas',\n  iconName: 'compress-arrows-alt',\n  icon: [512, 512, [], \"f78c\", \"M200 288H88c-21.4 0-32.1 25.8-17 41l32.9 31-99.2 99.3c-6.2 6.2-6.2 16.4 0 22.6l25.4 25.4c6.2 6.2 16.4 6.2 22.6 0L152 408l31.1 33c15.1 15.1 40.9 4.4 40.9-17V312c0-13.3-10.7-24-24-24zm112-64h112c21.4 0 32.1-25.9 17-41l-33-31 99.3-99.3c6.2-6.2 6.2-16.4 0-22.6L481.9 4.7c-6.2-6.2-16.4-6.2-22.6 0L360 104l-31.1-33C313.8 55.9 288 66.6 288 88v112c0 13.3 10.7 24 24 24zm96 136l33-31.1c15.1-15.1 4.4-40.9-17-40.9H312c-13.3 0-24 10.7-24 24v112c0 21.4 25.9 32.1 41 17l31-32.9 99.3 99.3c6.2 6.2 16.4 6.2 22.6 0l25.4-25.4c6.2-6.2 6.2-16.4 0-22.6L408 360zM183 71.1L152 104 52.7 4.7c-6.2-6.2-16.4-6.2-22.6 0L4.7 30.1c-6.2 6.2-6.2 16.4 0 22.6L104 152l-33 31.1C55.9 198.2 66.6 224 88 224h112c13.3 0 24-10.7 24-24V88c0-21.3-25.9-32-41-16.9z\"]\n};\nvar faConciergeBell = {\n  prefix: 'fas',\n  iconName: 'concierge-bell',\n  icon: [512, 512, [], \"f562\", \"M288 130.54V112h16c8.84 0 16-7.16 16-16V80c0-8.84-7.16-16-16-16h-96c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h16v18.54C115.49 146.11 32 239.18 32 352h448c0-112.82-83.49-205.89-192-221.46zM496 384H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z\"]\n};\nvar faCookie = {\n  prefix: 'fas',\n  iconName: 'cookie',\n  icon: [512, 512, [], \"f563\", \"M510.37 254.79l-12.08-76.26a132.493 132.493 0 0 0-37.16-72.95l-54.76-54.75c-19.73-19.72-45.18-32.7-72.71-37.05l-76.7-12.15c-27.51-4.36-55.69.11-80.52 12.76L107.32 49.6a132.25 132.25 0 0 0-57.79 57.8l-35.1 68.88a132.602 132.602 0 0 0-12.82 80.94l12.08 76.27a132.493 132.493 0 0 0 37.16 72.95l54.76 54.75a132.087 132.087 0 0 0 72.71 37.05l76.7 12.14c27.51 4.36 55.69-.11 80.52-12.75l69.12-35.21a132.302 132.302 0 0 0 57.79-57.8l35.1-68.87c12.71-24.96 17.2-53.3 12.82-80.96zM176 368c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm32-160c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm160 128c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faCookieBite = {\n  prefix: 'fas',\n  iconName: 'cookie-bite',\n  icon: [512, 512, [], \"f564\", \"M510.52 255.82c-69.97-.85-126.47-57.69-126.47-127.86-70.17 0-127-56.49-127.86-126.45-27.26-4.14-55.13.3-79.72 12.82l-69.13 35.22a132.221 132.221 0 0 0-57.79 57.81l-35.1 68.88a132.645 132.645 0 0 0-12.82 80.95l12.08 76.27a132.521 132.521 0 0 0 37.16 72.96l54.77 54.76a132.036 132.036 0 0 0 72.71 37.06l76.71 12.15c27.51 4.36 55.7-.11 80.53-12.76l69.13-35.21a132.273 132.273 0 0 0 57.79-57.81l35.1-68.88c12.56-24.64 17.01-52.58 12.91-79.91zM176 368c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm32-160c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm160 128c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faCopy = {\n  prefix: 'fas',\n  iconName: 'copy',\n  icon: [448, 512, [], \"f0c5\", \"M320 448v40c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24V120c0-13.255 10.745-24 24-24h72v296c0 30.879 25.121 56 56 56h168zm0-344V0H152c-13.255 0-24 10.745-24 24v368c0 13.255 10.745 24 24 24h272c13.255 0 24-10.745 24-24V128H344c-13.2 0-24-10.8-24-24zm120.971-31.029L375.029 7.029A24 24 0 0 0 358.059 0H352v96h96v-6.059a24 24 0 0 0-7.029-16.97z\"]\n};\nvar faCopyright = {\n  prefix: 'fas',\n  iconName: 'copyright',\n  icon: [512, 512, [], \"f1f9\", \"M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm117.134 346.753c-1.592 1.867-39.776 45.731-109.851 45.731-84.692 0-144.484-63.26-144.484-145.567 0-81.303 62.004-143.401 143.762-143.401 66.957 0 101.965 37.315 103.422 38.904a12 12 0 0 1 1.238 14.623l-22.38 34.655c-4.049 6.267-12.774 7.351-18.234 2.295-.233-.214-26.529-23.88-61.88-23.88-46.116 0-73.916 33.575-73.916 76.082 0 39.602 25.514 79.692 74.277 79.692 38.697 0 65.28-28.338 65.544-28.625 5.132-5.565 14.059-5.033 18.508 1.053l24.547 33.572a12.001 12.001 0 0 1-.553 14.866z\"]\n};\nvar faCouch = {\n  prefix: 'fas',\n  iconName: 'couch',\n  icon: [640, 512, [], \"f4b8\", \"M160 224v64h320v-64c0-35.3 28.7-64 64-64h32c0-53-43-96-96-96H160c-53 0-96 43-96 96h32c35.3 0 64 28.7 64 64zm416-32h-32c-17.7 0-32 14.3-32 32v96H128v-96c0-17.7-14.3-32-32-32H64c-35.3 0-64 28.7-64 64 0 23.6 13 44 32 55.1V432c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-16h384v16c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V311.1c19-11.1 32-31.5 32-55.1 0-35.3-28.7-64-64-64z\"]\n};\nvar faCreditCard = {\n  prefix: 'fas',\n  iconName: 'credit-card',\n  icon: [576, 512, [], \"f09d\", \"M0 432c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V256H0v176zm192-68c0-6.6 5.4-12 12-12h136c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H204c-6.6 0-12-5.4-12-12v-40zm-128 0c0-6.6 5.4-12 12-12h72c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12v-40zM576 80v48H0V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48z\"]\n};\nvar faCrop = {\n  prefix: 'fas',\n  iconName: 'crop',\n  icon: [512, 512, [], \"f125\", \"M488 352h-40V109.25l59.31-59.31c6.25-6.25 6.25-16.38 0-22.63L484.69 4.69c-6.25-6.25-16.38-6.25-22.63 0L402.75 64H192v96h114.75L160 306.75V24c0-13.26-10.75-24-24-24H88C74.75 0 64 10.74 64 24v40H24C10.75 64 0 74.74 0 88v48c0 13.25 10.75 24 24 24h40v264c0 13.25 10.75 24 24 24h232v-96H205.25L352 205.25V488c0 13.25 10.75 24 24 24h48c13.25 0 24-10.75 24-24v-40h40c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24z\"]\n};\nvar faCropAlt = {\n  prefix: 'fas',\n  iconName: 'crop-alt',\n  icon: [512, 512, [], \"f565\", \"M488 352h-40V96c0-17.67-14.33-32-32-32H192v96h160v328c0 13.25 10.75 24 24 24h48c13.25 0 24-10.75 24-24v-40h40c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24zM160 24c0-13.26-10.75-24-24-24H88C74.75 0 64 10.74 64 24v40H24C10.75 64 0 74.74 0 88v48c0 13.25 10.75 24 24 24h40v256c0 17.67 14.33 32 32 32h224v-96H160V24z\"]\n};\nvar faCross = {\n  prefix: 'fas',\n  iconName: 'cross',\n  icon: [384, 512, [], \"f654\", \"M352 128h-96V32c0-17.67-14.33-32-32-32h-64c-17.67 0-32 14.33-32 32v96H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h96v224c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V256h96c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32z\"]\n};\nvar faCrosshairs = {\n  prefix: 'fas',\n  iconName: 'crosshairs',\n  icon: [512, 512, [], \"f05b\", \"M500 224h-30.364C455.724 130.325 381.675 56.276 288 42.364V12c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v30.364C130.325 56.276 56.276 130.325 42.364 224H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h30.364C56.276 381.675 130.325 455.724 224 469.636V500c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-30.364C381.675 455.724 455.724 381.675 469.636 288H500c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12zM288 404.634V364c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40.634C165.826 392.232 119.783 346.243 107.366 288H148c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-40.634C119.768 165.826 165.757 119.783 224 107.366V148c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40.634C346.174 119.768 392.217 165.757 404.634 224H364c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40.634C392.232 346.174 346.243 392.217 288 404.634zM288 256c0 17.673-14.327 32-32 32s-32-14.327-32-32c0-17.673 14.327-32 32-32s32 14.327 32 32z\"]\n};\nvar faCrow = {\n  prefix: 'fas',\n  iconName: 'crow',\n  icon: [640, 512, [], \"f520\", \"M544 32h-16.36C513.04 12.68 490.09 0 464 0c-44.18 0-80 35.82-80 80v20.98L12.09 393.57A30.216 30.216 0 0 0 0 417.74c0 22.46 23.64 37.07 43.73 27.03L165.27 384h96.49l44.41 120.1c2.27 6.23 9.15 9.44 15.38 7.17l22.55-8.21c6.23-2.27 9.44-9.15 7.17-15.38L312.94 384H352c1.91 0 3.76-.23 5.66-.29l44.51 120.38c2.27 6.23 9.15 9.44 15.38 7.17l22.55-8.21c6.23-2.27 9.44-9.15 7.17-15.38l-41.24-111.53C485.74 352.8 544 279.26 544 192v-80l96-16c0-35.35-42.98-64-96-64zm-80 72c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z\"]\n};\nvar faCrown = {\n  prefix: 'fas',\n  iconName: 'crown',\n  icon: [640, 512, [], \"f521\", \"M528 448H112c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h416c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm64-320c-26.5 0-48 21.5-48 48 0 7.1 1.6 13.7 4.4 19.8L476 239.2c-15.4 9.2-35.3 4-44.2-11.6L350.3 85C361 76.2 368 63 368 48c0-26.5-21.5-48-48-48s-48 21.5-48 48c0 15 7 28.2 17.7 37l-81.5 142.6c-8.9 15.6-28.9 20.8-44.2 11.6l-72.3-43.4c2.7-6 4.4-12.7 4.4-19.8 0-26.5-21.5-48-48-48S0 149.5 0 176s21.5 48 48 48c2.6 0 5.2-.4 7.7-.8L128 416h384l72.3-192.8c2.5.4 5.1.8 7.7.8 26.5 0 48-21.5 48-48s-21.5-48-48-48z\"]\n};\nvar faCrutch = {\n  prefix: 'fas',\n  iconName: 'crutch',\n  icon: [512, 512, [], \"f7f7\", \"M507.31 185.71l-181-181a16 16 0 0 0-22.62 0L281 27.31a16 16 0 0 0 0 22.63l181 181a16 16 0 0 0 22.63 0l22.62-22.63a16 16 0 0 0 .06-22.6zm-179.54 66.41l-67.89-67.89 55.1-55.1-45.25-45.25-109.67 109.67a96.08 96.08 0 0 0-25.67 46.29L106.65 360.1l-102 102a16 16 0 0 0 0 22.63l22.62 22.62a16 16 0 0 0 22.63 0l102-102 120.25-27.75a95.88 95.88 0 0 0 46.29-25.65l109.68-109.68L382.87 197zm-54.57 54.57a32 32 0 0 1-15.45 8.54l-79.3 18.32 18.3-79.3a32.22 32.22 0 0 1 8.56-15.45l9.31-9.31 67.89 67.89z\"]\n};\nvar faCube = {\n  prefix: 'fas',\n  iconName: 'cube',\n  icon: [512, 512, [], \"f1b2\", \"M239.1 6.3l-208 78c-18.7 7-31.1 25-31.1 45v225.1c0 18.2 10.3 34.8 26.5 42.9l208 104c13.5 6.8 29.4 6.8 42.9 0l208-104c16.3-8.1 26.5-24.8 26.5-42.9V129.3c0-20-12.4-37.9-31.1-44.9l-208-78C262 2.2 250 2.2 239.1 6.3zM256 68.4l192 72v1.1l-192 78-192-78v-1.1l192-72zm32 356V275.5l160-65v133.9l-160 80z\"]\n};\nvar faCubes = {\n  prefix: 'fas',\n  iconName: 'cubes',\n  icon: [512, 512, [], \"f1b3\", \"M488.6 250.2L392 214V105.5c0-15-9.3-28.4-23.4-33.7l-100-37.5c-8.1-3.1-17.1-3.1-25.3 0l-100 37.5c-14.1 5.3-23.4 18.7-23.4 33.7V214l-96.6 36.2C9.3 255.5 0 268.9 0 283.9V394c0 13.6 7.7 26.1 19.9 32.2l100 50c10.1 5.1 22.1 5.1 32.2 0l103.9-52 103.9 52c10.1 5.1 22.1 5.1 32.2 0l100-50c12.2-6.1 19.9-18.6 19.9-32.2V283.9c0-15-9.3-28.4-23.4-33.7zM358 214.8l-85 31.9v-68.2l85-37v73.3zM154 104.1l102-38.2 102 38.2v.6l-102 41.4-102-41.4v-.6zm84 291.1l-85 42.5v-79.1l85-38.8v75.4zm0-112l-102 41.4-102-41.4v-.6l102-38.2 102 38.2v.6zm240 112l-85 42.5v-79.1l85-38.8v75.4zm0-112l-102 41.4-102-41.4v-.6l102-38.2 102 38.2v.6z\"]\n};\nvar faCut = {\n  prefix: 'fas',\n  iconName: 'cut',\n  icon: [448, 512, [], \"f0c4\", \"M278.06 256L444.48 89.57c4.69-4.69 4.69-12.29 0-16.97-32.8-32.8-85.99-32.8-118.79 0L210.18 188.12l-24.86-24.86c4.31-10.92 6.68-22.81 6.68-35.26 0-53.02-42.98-96-96-96S0 74.98 0 128s42.98 96 96 96c4.54 0 8.99-.32 13.36-.93L142.29 256l-32.93 32.93c-4.37-.61-8.83-.93-13.36-.93-53.02 0-96 42.98-96 96s42.98 96 96 96 96-42.98 96-96c0-12.45-2.37-24.34-6.68-35.26l24.86-24.86L325.69 439.4c32.8 32.8 85.99 32.8 118.79 0 4.69-4.68 4.69-12.28 0-16.97L278.06 256zM96 160c-17.64 0-32-14.36-32-32s14.36-32 32-32 32 14.36 32 32-14.36 32-32 32zm0 256c-17.64 0-32-14.36-32-32s14.36-32 32-32 32 14.36 32 32-14.36 32-32 32z\"]\n};\nvar faDatabase = {\n  prefix: 'fas',\n  iconName: 'database',\n  icon: [448, 512, [], \"f1c0\", \"M448 73.143v45.714C448 159.143 347.667 192 224 192S0 159.143 0 118.857V73.143C0 32.857 100.333 0 224 0s224 32.857 224 73.143zM448 176v102.857C448 319.143 347.667 352 224 352S0 319.143 0 278.857V176c48.125 33.143 136.208 48.572 224 48.572S399.874 209.143 448 176zm0 160v102.857C448 479.143 347.667 512 224 512S0 479.143 0 438.857V336c48.125 33.143 136.208 48.572 224 48.572S399.874 369.143 448 336z\"]\n};\nvar faDeaf = {\n  prefix: 'fas',\n  iconName: 'deaf',\n  icon: [512, 512, [], \"f2a4\", \"M216 260c0 15.464-12.536 28-28 28s-28-12.536-28-28c0-44.112 35.888-80 80-80s80 35.888 80 80c0 15.464-12.536 28-28 28s-28-12.536-28-28c0-13.234-10.767-24-24-24s-24 10.766-24 24zm24-176c-97.047 0-176 78.953-176 176 0 15.464 12.536 28 28 28s28-12.536 28-28c0-66.168 53.832-120 120-120s120 53.832 120 120c0 75.164-71.009 70.311-71.997 143.622L288 404c0 28.673-23.327 52-52 52-15.464 0-28 12.536-28 28s12.536 28 28 28c59.475 0 107.876-48.328 108-107.774.595-34.428 72-48.24 72-144.226 0-97.047-78.953-176-176-176zm268.485-52.201L480.2 3.515c-4.687-4.686-12.284-4.686-16.971 0L376.2 90.544c-4.686 4.686-4.686 12.284 0 16.971l28.285 28.285c4.686 4.686 12.284 4.686 16.97 0l87.03-87.029c4.687-4.688 4.687-12.286 0-16.972zM168.97 314.745c-4.686-4.686-12.284-4.686-16.97 0L3.515 463.23c-4.686 4.686-4.686 12.284 0 16.971L31.8 508.485c4.687 4.686 12.284 4.686 16.971 0L197.256 360c4.686-4.686 4.686-12.284 0-16.971l-28.286-28.284z\"]\n};\nvar faDemocrat = {\n  prefix: 'fas',\n  iconName: 'democrat',\n  icon: [640, 512, [], \"f747\", \"M637.3 256.9l-19.6-29.4c-28.2-42.3-75.3-67.5-126.1-67.5H256l-81.2-81.2c20.1-20.1 22.6-51.1 7.5-73.9-3.4-5.2-10.8-5.9-15.2-1.5l-41.8 41.8L82.4 2.4c-3.6-3.6-9.6-3-12.4 1.2-12.3 18.6-10.3 44 6.1 60.4 3.3 3.3 7.3 5.3 11.3 7.5-2.2 1.7-4.7 3.1-6.4 5.4L6.4 176.2c-7.3 9.7-8.4 22.7-3 33.5l14.3 28.6c5.4 10.8 16.5 17.7 28.6 17.7h31c8.5 0 16.6-3.4 22.6-9.4L138 212l54 108h352v-77.8c16.2 12.2 18.3 17.6 40.1 50.3 4.9 7.4 14.8 9.3 22.2 4.4l26.6-17.7c7.3-5 9.3-14.9 4.4-22.3zm-341.1-13.6l-16.5 16.1 3.9 22.7c.7 4.1-3.6 7.2-7.2 5.3L256 276.7l-20.4 10.7c-3.6 1.9-7.9-1.2-7.2-5.3l3.9-22.7-16.5-16.1c-3-2.9-1.3-7.9 2.8-8.5l22.8-3.3 10.2-20.7c1.8-3.7 7.1-3.7 9 0l10.2 20.7 22.8 3.3c4 .6 5.6 5.6 2.6 8.5zm112 0l-16.5 16.1 3.9 22.7c.7 4.1-3.6 7.2-7.2 5.3L368 276.7l-20.4 10.7c-3.6 1.9-7.9-1.2-7.2-5.3l3.9-22.7-16.5-16.1c-3-2.9-1.3-7.9 2.8-8.5l22.8-3.3 10.2-20.7c1.8-3.7 7.1-3.7 9 0l10.2 20.7 22.8 3.3c4 .6 5.6 5.6 2.6 8.5zm112 0l-16.5 16.1 3.9 22.7c.7 4.1-3.6 7.2-7.2 5.3L480 276.7l-20.4 10.7c-3.6 1.9-7.9-1.2-7.2-5.3l3.9-22.7-16.5-16.1c-3-2.9-1.3-7.9 2.8-8.5l22.8-3.3 10.2-20.7c1.8-3.7 7.1-3.7 9 0l10.2 20.7 22.8 3.3c4 .6 5.6 5.6 2.6 8.5zM192 496c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-80h160v80c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V352H192v144z\"]\n};\nvar faDesktop = {\n  prefix: 'fas',\n  iconName: 'desktop',\n  icon: [576, 512, [], \"f108\", \"M528 0H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h192l-16 48h-72c-13.3 0-24 10.7-24 24s10.7 24 24 24h272c13.3 0 24-10.7 24-24s-10.7-24-24-24h-72l-16-48h192c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm-16 352H64V64h448v288z\"]\n};\nvar faDharmachakra = {\n  prefix: 'fas',\n  iconName: 'dharmachakra',\n  icon: [512, 512, [], \"f655\", \"M495 225.06l-17.22 1.08c-5.27-39.49-20.79-75.64-43.86-105.84l12.95-11.43c6.92-6.11 7.25-16.79.73-23.31L426.44 64.4c-6.53-6.53-17.21-6.19-23.31.73L391.7 78.07c-30.2-23.06-66.35-38.58-105.83-43.86L286.94 17c.58-9.21-6.74-17-15.97-17h-29.94c-9.23 0-16.54 7.79-15.97 17l1.08 17.22c-39.49 5.27-75.64 20.79-105.83 43.86l-11.43-12.95c-6.11-6.92-16.79-7.25-23.31-.73L64.4 85.56c-6.53 6.53-6.19 17.21.73 23.31l12.95 11.43c-23.06 30.2-38.58 66.35-43.86 105.84L17 225.06c-9.21-.58-17 6.74-17 15.97v29.94c0 9.23 7.79 16.54 17 15.97l17.22-1.08c5.27 39.49 20.79 75.64 43.86 105.83l-12.95 11.43c-6.92 6.11-7.25 16.79-.73 23.31l21.17 21.17c6.53 6.53 17.21 6.19 23.31-.73l11.43-12.95c30.2 23.06 66.35 38.58 105.84 43.86L225.06 495c-.58 9.21 6.74 17 15.97 17h29.94c9.23 0 16.54-7.79 15.97-17l-1.08-17.22c39.49-5.27 75.64-20.79 105.84-43.86l11.43 12.95c6.11 6.92 16.79 7.25 23.31.73l21.17-21.17c6.53-6.53 6.19-17.21-.73-23.31l-12.95-11.43c23.06-30.2 38.58-66.35 43.86-105.83l17.22 1.08c9.21.58 17-6.74 17-15.97v-29.94c-.01-9.23-7.8-16.54-17.01-15.97zM281.84 98.61c24.81 4.07 47.63 13.66 67.23 27.78l-42.62 48.29c-8.73-5.44-18.32-9.54-28.62-11.95l4.01-64.12zm-51.68 0l4.01 64.12c-10.29 2.41-19.89 6.52-28.62 11.95l-42.62-48.29c19.6-14.12 42.42-23.71 67.23-27.78zm-103.77 64.33l48.3 42.61c-5.44 8.73-9.54 18.33-11.96 28.62l-64.12-4.01c4.07-24.81 13.66-47.62 27.78-67.22zm-27.78 118.9l64.12-4.01c2.41 10.29 6.52 19.89 11.95 28.62l-48.29 42.62c-14.12-19.6-23.71-42.42-27.78-67.23zm131.55 131.55c-24.81-4.07-47.63-13.66-67.23-27.78l42.61-48.3c8.73 5.44 18.33 9.54 28.62 11.96l-4 64.12zM256 288c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm25.84 125.39l-4.01-64.12c10.29-2.41 19.89-6.52 28.62-11.96l42.61 48.3c-19.6 14.12-42.41 23.71-67.22 27.78zm103.77-64.33l-48.29-42.62c5.44-8.73 9.54-18.32 11.95-28.62l64.12 4.01c-4.07 24.82-13.66 47.64-27.78 67.23zm-36.34-114.89c-2.41-10.29-6.52-19.89-11.96-28.62l48.3-42.61c14.12 19.6 23.71 42.42 27.78 67.23l-64.12 4z\"]\n};\nvar faDiagnoses = {\n  prefix: 'fas',\n  iconName: 'diagnoses',\n  icon: [640, 512, [], \"f470\", \"M496 256c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zm-176-80c48.5 0 88-39.5 88-88S368.5 0 320 0s-88 39.5-88 88 39.5 88 88 88zM59.8 364c10.2 15.3 29.3 17.8 42.9 9.8 16.2-9.6 56.2-31.7 105.3-48.6V416h224v-90.7c49.1 16.8 89.1 39 105.3 48.6 13.6 8 32.7 5.3 42.9-9.8l17.8-26.7c8.8-13.2 7.6-34.6-10-45.1-11.9-7.1-29.7-17-51.1-27.4-28.1 46.1-99.4 17.8-87.7-35.1C409.3 217.2 365.1 208 320 208c-57 0-112.9 14.5-160 32.2-.2 40.2-47.6 63.3-79.2 36-11.2 6-21.3 11.6-28.7 16-17.6 10.5-18.8 31.8-10 45.1L59.8 364zM368 344c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm-96-96c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm-160 8c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zm512 192H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16z\"]\n};\nvar faDice = {\n  prefix: 'fas',\n  iconName: 'dice',\n  icon: [640, 512, [], \"f522\", \"M592 192H473.26c12.69 29.59 7.12 65.2-17 89.32L320 417.58V464c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48V240c0-26.51-21.49-48-48-48zM480 376c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm-46.37-186.7L258.7 14.37c-19.16-19.16-50.23-19.16-69.39 0L14.37 189.3c-19.16 19.16-19.16 50.23 0 69.39L189.3 433.63c19.16 19.16 50.23 19.16 69.39 0L433.63 258.7c19.16-19.17 19.16-50.24 0-69.4zM96 248c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm128 128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm0-128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm0-128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm128 128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z\"]\n};\nvar faDiceD20 = {\n  prefix: 'fas',\n  iconName: 'dice-d20',\n  icon: [480, 512, [], \"f6cf\", \"M106.75 215.06L1.2 370.95c-3.08 5 .1 11.5 5.93 12.14l208.26 22.07-108.64-190.1zM7.41 315.43L82.7 193.08 6.06 147.1c-2.67-1.6-6.06.32-6.06 3.43v162.81c0 4.03 5.29 5.53 7.41 2.09zM18.25 423.6l194.4 87.66c5.3 2.45 11.35-1.43 11.35-7.26v-65.67l-203.55-22.3c-4.45-.5-6.23 5.59-2.2 7.57zm81.22-257.78L179.4 22.88c4.34-7.06-3.59-15.25-10.78-11.14L17.81 110.35c-2.47 1.62-2.39 5.26.13 6.78l81.53 48.69zM240 176h109.21L253.63 7.62C250.5 2.54 245.25 0 240 0s-10.5 2.54-13.63 7.62L130.79 176H240zm233.94-28.9l-76.64 45.99 75.29 122.35c2.11 3.44 7.41 1.94 7.41-2.1V150.53c0-3.11-3.39-5.03-6.06-3.43zm-93.41 18.72l81.53-48.7c2.53-1.52 2.6-5.16.13-6.78l-150.81-98.6c-7.19-4.11-15.12 4.08-10.78 11.14l79.93 142.94zm79.02 250.21L256 438.32v65.67c0 5.84 6.05 9.71 11.35 7.26l194.4-87.66c4.03-1.97 2.25-8.06-2.2-7.56zm-86.3-200.97l-108.63 190.1 208.26-22.07c5.83-.65 9.01-7.14 5.93-12.14L373.25 215.06zM240 208H139.57L240 383.75 340.43 208H240z\"]\n};\nvar faDiceD6 = {\n  prefix: 'fas',\n  iconName: 'dice-d6',\n  icon: [448, 512, [], \"f6d1\", \"M422.19 109.95L256.21 9.07c-19.91-12.1-44.52-12.1-64.43 0L25.81 109.95c-5.32 3.23-5.29 11.27.06 14.46L224 242.55l198.14-118.14c5.35-3.19 5.38-11.22.05-14.46zm13.84 44.63L240 271.46v223.82c0 12.88 13.39 20.91 24.05 14.43l152.16-92.48c19.68-11.96 31.79-33.94 31.79-57.7v-197.7c0-6.41-6.64-10.43-11.97-7.25zM0 161.83v197.7c0 23.77 12.11 45.74 31.79 57.7l152.16 92.47c10.67 6.48 24.05-1.54 24.05-14.43V271.46L11.97 154.58C6.64 151.4 0 155.42 0 161.83z\"]\n};\nvar faDiceFive = {\n  prefix: 'fas',\n  iconName: 'dice-five',\n  icon: [448, 512, [], \"f523\", \"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm96 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm96 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faDiceFour = {\n  prefix: 'fas',\n  iconName: 'dice-four',\n  icon: [448, 512, [], \"f524\", \"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm192 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faDiceOne = {\n  prefix: 'fas',\n  iconName: 'dice-one',\n  icon: [448, 512, [], \"f525\", \"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM224 288c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faDiceSix = {\n  prefix: 'fas',\n  iconName: 'dice-six',\n  icon: [448, 512, [], \"f526\", \"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm192 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faDiceThree = {\n  prefix: 'fas',\n  iconName: 'dice-three',\n  icon: [448, 512, [], \"f527\", \"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm96 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm96 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faDiceTwo = {\n  prefix: 'fas',\n  iconName: 'dice-two',\n  icon: [448, 512, [], \"f528\", \"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm192 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faDigitalTachograph = {\n  prefix: 'fas',\n  iconName: 'digital-tachograph',\n  icon: [640, 512, [], \"f566\", \"M608 96H32c-17.67 0-32 14.33-32 32v256c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V128c0-17.67-14.33-32-32-32zM304 352c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-8c0-4.42 3.58-8 8-8h224c4.42 0 8 3.58 8 8v8zM72 288v-16c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H80c-4.42 0-8-3.58-8-8zm64 0v-16c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8zm64 0v-16c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8zm64 0v-16c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8zm40-64c0 8.84-7.16 16-16 16H80c-8.84 0-16-7.16-16-16v-48c0-8.84 7.16-16 16-16h208c8.84 0 16 7.16 16 16v48zm272 128c0 4.42-3.58 8-8 8H344c-4.42 0-8-3.58-8-8v-8c0-4.42 3.58-8 8-8h224c4.42 0 8 3.58 8 8v8z\"]\n};\nvar faDirections = {\n  prefix: 'fas',\n  iconName: 'directions',\n  icon: [512, 512, [], \"f5eb\", \"M502.61 233.32L278.68 9.39c-12.52-12.52-32.83-12.52-45.36 0L9.39 233.32c-12.52 12.53-12.52 32.83 0 45.36l223.93 223.93c12.52 12.53 32.83 12.53 45.36 0l223.93-223.93c12.52-12.53 12.52-32.83 0-45.36zm-100.98 12.56l-84.21 77.73c-5.12 4.73-13.43 1.1-13.43-5.88V264h-96v64c0 4.42-3.58 8-8 8h-32c-4.42 0-8-3.58-8-8v-80c0-17.67 14.33-32 32-32h112v-53.73c0-6.97 8.3-10.61 13.43-5.88l84.21 77.73c3.43 3.17 3.43 8.59 0 11.76z\"]\n};\nvar faDisease = {\n  prefix: 'fas',\n  iconName: 'disease',\n  icon: [512, 512, [], \"f7fa\", \"M472.29 195.9l-67.06-23c-19.28-6.6-33.54-20.92-38.14-38.31l-16-60.45c-11.58-43.77-76.57-57.13-110-22.62L195 99.24c-13.26 13.71-33.54 20.93-54.2 19.31l-71.9-5.62c-52-4.07-86.93 44.89-59 82.84l38.54 52.42c11.08 15.07 12.82 33.86 4.64 50.24l-28.43 57C4 396.67 47.46 440.29 98.11 429.23l70-15.28c20.11-4.39 41.45 0 57.07 11.73l54.32 40.83c39.32 29.56 101 7.57 104.45-37.22l4.7-61.86c1.35-17.8 12.8-33.87 30.63-43l62-31.74c44.84-22.96 39.55-80.17-8.99-96.79zM160 256a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm128 96a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm16-128a16 16 0 1 1 16-16 16 16 0 0 1-16 16z\"]\n};\nvar faDivide = {\n  prefix: 'fas',\n  iconName: 'divide',\n  icon: [448, 512, [], \"f529\", \"M224 352c-35.35 0-64 28.65-64 64s28.65 64 64 64 64-28.65 64-64-28.65-64-64-64zm0-192c35.35 0 64-28.65 64-64s-28.65-64-64-64-64 28.65-64 64 28.65 64 64 64zm192 48H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z\"]\n};\nvar faDizzy = {\n  prefix: 'fas',\n  iconName: 'dizzy',\n  icon: [496, 512, [], \"f567\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-96 206.6l-28.7 28.7c-14.8 14.8-37.8-7.5-22.6-22.6l28.7-28.7-28.7-28.7c-15-15 7.7-37.6 22.6-22.6l28.7 28.7 28.7-28.7c15-15 37.6 7.7 22.6 22.6L174.6 192l28.7 28.7c15.2 15.2-7.9 37.4-22.6 22.6L152 214.6zM248 416c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64zm147.3-195.3c15.2 15.2-7.9 37.4-22.6 22.6L344 214.6l-28.7 28.7c-14.8 14.8-37.8-7.5-22.6-22.6l28.7-28.7-28.7-28.7c-15-15 7.7-37.6 22.6-22.6l28.7 28.7 28.7-28.7c15-15 37.6 7.7 22.6 22.6L366.6 192l28.7 28.7z\"]\n};\nvar faDna = {\n  prefix: 'fas',\n  iconName: 'dna',\n  icon: [448, 512, [], \"f471\", \"M.1 494.1c-1.1 9.5 6.3 17.8 15.9 17.8l32.3.1c8.1 0 14.9-5.9 16-13.9.7-4.9 1.8-11.1 3.4-18.1H380c1.6 6.9 2.9 13.2 3.5 18.1 1.1 8 7.9 14 16 13.9l32.3-.1c9.6 0 17.1-8.3 15.9-17.8-4.6-37.9-25.6-129-118.9-207.7-17.6 12.4-37.1 24.2-58.5 35.4 6.2 4.6 11.4 9.4 17 14.2H159.7c21.3-18.1 47-35.6 78.7-51.4C410.5 199.1 442.1 65.8 447.9 17.9 449 8.4 441.6.1 432 .1L399.6 0c-8.1 0-14.9 5.9-16 13.9-.7 4.9-1.8 11.1-3.4 18.1H67.8c-1.6-7-2.7-13.1-3.4-18.1-1.1-8-7.9-14-16-13.9L16.1.1C6.5.1-1 8.4.1 17.9 5.3 60.8 31.4 171.8 160 256 31.5 340.2 5.3 451.2.1 494.1zM224 219.6c-25.1-13.7-46.4-28.4-64.3-43.6h128.5c-17.8 15.2-39.1 30-64.2 43.6zM355.1 96c-5.8 10.4-12.8 21.1-21 32H114c-8.3-10.9-15.3-21.6-21-32h262.1zM92.9 416c5.8-10.4 12.8-21.1 21-32h219.4c8.3 10.9 15.4 21.6 21.2 32H92.9z\"]\n};\nvar faDog = {\n  prefix: 'fas',\n  iconName: 'dog',\n  icon: [576, 512, [], \"f6d3\", \"M298.06,224,448,277.55V496a16,16,0,0,1-16,16H368a16,16,0,0,1-16-16V384H192V496a16,16,0,0,1-16,16H112a16,16,0,0,1-16-16V282.09C58.84,268.84,32,233.66,32,192a32,32,0,0,1,64,0,32.06,32.06,0,0,0,32,32ZM544,112v32a64,64,0,0,1-64,64H448v35.58L320,197.87V48c0-14.25,17.22-21.39,27.31-11.31L374.59,64h53.63c10.91,0,23.75,7.92,28.62,17.69L464,96h64A16,16,0,0,1,544,112Zm-112,0a16,16,0,1,0-16,16A16,16,0,0,0,432,112Z\"]\n};\nvar faDollarSign = {\n  prefix: 'fas',\n  iconName: 'dollar-sign',\n  icon: [288, 512, [], \"f155\", \"M209.2 233.4l-108-31.6C88.7 198.2 80 186.5 80 173.5c0-16.3 13.2-29.5 29.5-29.5h66.3c12.2 0 24.2 3.7 34.2 10.5 6.1 4.1 14.3 3.1 19.5-2l34.8-34c7.1-6.9 6.1-18.4-1.8-24.5C238 74.8 207.4 64.1 176 64V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48h-2.5C45.8 64-5.4 118.7.5 183.6c4.2 46.1 39.4 83.6 83.8 96.6l102.5 30c12.5 3.7 21.2 15.3 21.2 28.3 0 16.3-13.2 29.5-29.5 29.5h-66.3C100 368 88 364.3 78 357.5c-6.1-4.1-14.3-3.1-19.5 2l-34.8 34c-7.1 6.9-6.1 18.4 1.8 24.5 24.5 19.2 55.1 29.9 86.5 30v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-48.2c46.6-.9 90.3-28.6 105.7-72.7 21.5-61.6-14.6-124.8-72.5-141.7z\"]\n};\nvar faDolly = {\n  prefix: 'fas',\n  iconName: 'dolly',\n  icon: [576, 512, [], \"f472\", \"M294.2 277.7c18 5 34.7 13.4 49.5 24.7l161.5-53.8c8.4-2.8 12.9-11.9 10.1-20.2L454.9 47.2c-2.8-8.4-11.9-12.9-20.2-10.1l-61.1 20.4 33.1 99.4L346 177l-33.1-99.4-61.6 20.5c-8.4 2.8-12.9 11.9-10.1 20.2l53 159.4zm281 48.7L565 296c-2.8-8.4-11.9-12.9-20.2-10.1l-213.5 71.2c-17.2-22-43.6-36.4-73.5-37L158.4 21.9C154 8.8 141.8 0 128 0H16C7.2 0 0 7.2 0 16v32c0 8.8 7.2 16 16 16h88.9l92.2 276.7c-26.1 20.4-41.7 53.6-36 90.5 6.1 39.4 37.9 72.3 77.3 79.2 60.2 10.7 112.3-34.8 113.4-92.6l213.3-71.2c8.3-2.8 12.9-11.8 10.1-20.2zM256 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48z\"]\n};\nvar faDollyFlatbed = {\n  prefix: 'fas',\n  iconName: 'dolly-flatbed',\n  icon: [640, 512, [], \"f474\", \"M208 320h384c8.8 0 16-7.2 16-16V48c0-8.8-7.2-16-16-16H448v128l-48-32-48 32V32H208c-8.8 0-16 7.2-16 16v256c0 8.8 7.2 16 16 16zm416 64H128V16c0-8.8-7.2-16-16-16H16C7.2 0 0 7.2 0 16v32c0 8.8 7.2 16 16 16h48v368c0 8.8 7.2 16 16 16h82.9c-1.8 5-2.9 10.4-2.9 16 0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1.2-11-2.9-16H451c-1.8 5-2.9 10.4-2.9 16 0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1.2-11-2.9-16H624c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16z\"]\n};\nvar faDonate = {\n  prefix: 'fas',\n  iconName: 'donate',\n  icon: [512, 512, [], \"f4b9\", \"M256 416c114.9 0 208-93.1 208-208S370.9 0 256 0 48 93.1 48 208s93.1 208 208 208zM233.8 97.4V80.6c0-9.2 7.4-16.6 16.6-16.6h11.1c9.2 0 16.6 7.4 16.6 16.6v17c15.5.8 30.5 6.1 43 15.4 5.6 4.1 6.2 12.3 1.2 17.1L306 145.6c-3.8 3.7-9.5 3.8-14 1-5.4-3.4-11.4-5.1-17.8-5.1h-38.9c-9 0-16.3 8.2-16.3 18.3 0 8.2 5 15.5 12.1 17.6l62.3 18.7c25.7 7.7 43.7 32.4 43.7 60.1 0 34-26.4 61.5-59.1 62.4v16.8c0 9.2-7.4 16.6-16.6 16.6h-11.1c-9.2 0-16.6-7.4-16.6-16.6v-17c-15.5-.8-30.5-6.1-43-15.4-5.6-4.1-6.2-12.3-1.2-17.1l16.3-15.5c3.8-3.7 9.5-3.8 14-1 5.4 3.4 11.4 5.1 17.8 5.1h38.9c9 0 16.3-8.2 16.3-18.3 0-8.2-5-15.5-12.1-17.6l-62.3-18.7c-25.7-7.7-43.7-32.4-43.7-60.1.1-34 26.4-61.5 59.1-62.4zM480 352h-32.5c-19.6 26-44.6 47.7-73 64h63.8c5.3 0 9.6 3.6 9.6 8v16c0 4.4-4.3 8-9.6 8H73.6c-5.3 0-9.6-3.6-9.6-8v-16c0-4.4 4.3-8 9.6-8h63.8c-28.4-16.3-53.3-38-73-64H32c-17.7 0-32 14.3-32 32v96c0 17.7 14.3 32 32 32h448c17.7 0 32-14.3 32-32v-96c0-17.7-14.3-32-32-32z\"]\n};\nvar faDoorClosed = {\n  prefix: 'fas',\n  iconName: 'door-closed',\n  icon: [640, 512, [], \"f52a\", \"M624 448H512V50.8C512 22.78 490.47 0 464 0H175.99c-26.47 0-48 22.78-48 50.8V448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM415.99 288c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32c.01 17.67-14.32 32-32 32z\"]\n};\nvar faDoorOpen = {\n  prefix: 'fas',\n  iconName: 'door-open',\n  icon: [640, 512, [], \"f52b\", \"M624 448h-80V113.45C544 86.19 522.47 64 496 64H384v64h96v384h144c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM312.24 1.01l-192 49.74C105.99 54.44 96 67.7 96 82.92V448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h336V33.18c0-21.58-19.56-37.41-39.76-32.17zM264 288c-13.25 0-24-14.33-24-32s10.75-32 24-32 24 14.33 24 32-10.75 32-24 32z\"]\n};\nvar faDotCircle = {\n  prefix: 'fas',\n  iconName: 'dot-circle',\n  icon: [512, 512, [], \"f192\", \"M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm80 248c0 44.112-35.888 80-80 80s-80-35.888-80-80 35.888-80 80-80 80 35.888 80 80z\"]\n};\nvar faDove = {\n  prefix: 'fas',\n  iconName: 'dove',\n  icon: [512, 512, [], \"f4ba\", \"M288 167.2v-28.1c-28.2-36.3-47.1-79.3-54.1-125.2-2.1-13.5-19-18.8-27.8-8.3-21.1 24.9-37.7 54.1-48.9 86.5 34.2 38.3 80 64.6 130.8 75.1zM400 64c-44.2 0-80 35.9-80 80.1v59.4C215.6 197.3 127 133 87 41.8c-5.5-12.5-23.2-13.2-29-.9C41.4 76 32 115.2 32 156.6c0 70.8 34.1 136.9 85.1 185.9 13.2 12.7 26.1 23.2 38.9 32.8l-143.9 36C1.4 414-3.4 426.4 2.6 435.7 20 462.6 63 508.2 155.8 512c8 .3 16-2.6 22.1-7.9l65.2-56.1H320c88.4 0 160-71.5 160-159.9V128l32-64H400zm0 96.1c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z\"]\n};\nvar faDownload = {\n  prefix: 'fas',\n  iconName: 'download',\n  icon: [512, 512, [], \"f019\", \"M216 0h80c13.3 0 24 10.7 24 24v168h87.7c17.8 0 26.7 21.5 14.1 34.1L269.7 378.3c-7.5 7.5-19.8 7.5-27.3 0L90.1 226.1c-12.6-12.6-3.7-34.1 14.1-34.1H192V24c0-13.3 10.7-24 24-24zm296 376v112c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V376c0-13.3 10.7-24 24-24h146.7l49 49c20.1 20.1 52.5 20.1 72.6 0l49-49H488c13.3 0 24 10.7 24 24zm-124 88c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20zm64 0c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20z\"]\n};\nvar faDraftingCompass = {\n  prefix: 'fas',\n  iconName: 'drafting-compass',\n  icon: [512, 512, [], \"f568\", \"M457.01 344.42c-25.05 20.33-52.63 37.18-82.54 49.05l54.38 94.19 53.95 23.04c9.81 4.19 20.89-2.21 22.17-12.8l7.02-58.25-54.98-95.23zm42.49-94.56c4.86-7.67 1.89-17.99-6.05-22.39l-28.07-15.57c-7.48-4.15-16.61-1.46-21.26 5.72C403.01 281.15 332.25 320 256 320c-23.93 0-47.23-4.25-69.41-11.53l67.36-116.68c.7.02 1.34.21 2.04.21s1.35-.19 2.04-.21l51.09 88.5c31.23-8.96 59.56-25.75 82.61-48.92l-51.79-89.71C347.39 128.03 352 112.63 352 96c0-53.02-42.98-96-96-96s-96 42.98-96 96c0 16.63 4.61 32.03 12.05 45.66l-68.3 118.31c-12.55-11.61-23.96-24.59-33.68-39-4.79-7.1-13.97-9.62-21.38-5.33l-27.75 16.07c-7.85 4.54-10.63 14.9-5.64 22.47 15.57 23.64 34.69 44.21 55.98 62.02L0 439.66l7.02 58.25c1.28 10.59 12.36 16.99 22.17 12.8l53.95-23.04 70.8-122.63C186.13 377.28 220.62 384 256 384c99.05 0 190.88-51.01 243.5-134.14zM256 64c17.67 0 32 14.33 32 32s-14.33 32-32 32-32-14.33-32-32 14.33-32 32-32z\"]\n};\nvar faDragon = {\n  prefix: 'fas',\n  iconName: 'dragon',\n  icon: [640, 512, [], \"f6d5\", \"M18.32 255.78L192 223.96l-91.28 68.69c-10.08 10.08-2.94 27.31 11.31 27.31h222.7c-9.44-26.4-14.73-54.47-14.73-83.38v-42.27l-119.73-87.6c-23.82-15.88-55.29-14.01-77.06 4.59L5.81 227.64c-12.38 10.33-3.45 30.42 12.51 28.14zm556.87 34.1l-100.66-50.31A47.992 47.992 0 0 1 448 196.65v-36.69h64l28.09 22.63c6 6 14.14 9.37 22.63 9.37h30.97a32 32 0 0 0 28.62-17.69l14.31-28.62a32.005 32.005 0 0 0-3.02-33.51l-74.53-99.38C553.02 4.7 543.54 0 533.47 0H296.02c-7.13 0-10.7 8.57-5.66 13.61L352 63.96 292.42 88.8c-5.9 2.95-5.9 11.36 0 14.31L352 127.96v108.62c0 72.08 36.03 139.39 96 179.38-195.59 6.81-344.56 41.01-434.1 60.91C5.78 478.67 0 485.88 0 494.2 0 504 7.95 512 17.76 512h499.08c63.29.01 119.61-47.56 122.99-110.76 2.52-47.28-22.73-90.4-64.64-111.36zM489.18 66.25l45.65 11.41c-2.75 10.91-12.47 18.89-24.13 18.26-12.96-.71-25.85-12.53-21.52-29.67z\"]\n};\nvar faDrawPolygon = {\n  prefix: 'fas',\n  iconName: 'draw-polygon',\n  icon: [448, 512, [], \"f5ee\", \"M384 352c-.35 0-.67.1-1.02.1l-39.2-65.32c5.07-9.17 8.22-19.56 8.22-30.78s-3.14-21.61-8.22-30.78l39.2-65.32c.35.01.67.1 1.02.1 35.35 0 64-28.65 64-64s-28.65-64-64-64c-23.63 0-44.04 12.95-55.12 32H119.12C108.04 44.95 87.63 32 64 32 28.65 32 0 60.65 0 96c0 23.63 12.95 44.04 32 55.12v209.75C12.95 371.96 0 392.37 0 416c0 35.35 28.65 64 64 64 23.63 0 44.04-12.95 55.12-32h209.75c11.09 19.05 31.49 32 55.12 32 35.35 0 64-28.65 64-64 .01-35.35-28.64-64-63.99-64zm-288 8.88V151.12A63.825 63.825 0 0 0 119.12 128h208.36l-38.46 64.1c-.35-.01-.67-.1-1.02-.1-35.35 0-64 28.65-64 64s28.65 64 64 64c.35 0 .67-.1 1.02-.1l38.46 64.1H119.12A63.748 63.748 0 0 0 96 360.88zM272 256c0-8.82 7.18-16 16-16s16 7.18 16 16-7.18 16-16 16-16-7.18-16-16zM400 96c0 8.82-7.18 16-16 16s-16-7.18-16-16 7.18-16 16-16 16 7.18 16 16zM64 80c8.82 0 16 7.18 16 16s-7.18 16-16 16-16-7.18-16-16 7.18-16 16-16zM48 416c0-8.82 7.18-16 16-16s16 7.18 16 16-7.18 16-16 16-16-7.18-16-16zm336 16c-8.82 0-16-7.18-16-16s7.18-16 16-16 16 7.18 16 16-7.18 16-16 16z\"]\n};\nvar faDrum = {\n  prefix: 'fas',\n  iconName: 'drum',\n  icon: [512, 512, [], \"f569\", \"M431.34 122.05l73.53-47.42a16 16 0 0 0 4.44-22.19l-8.87-13.31a16 16 0 0 0-22.19-4.44l-110.06 71C318.43 96.91 271.22 96 256 96 219.55 96 0 100.55 0 208.15v160.23c0 30.27 27.5 57.68 72 77.86v-101.9a24 24 0 1 1 48 0v118.93c33.05 9.11 71.07 15.06 112 16.73V376.39a24 24 0 1 1 48 0V480c40.93-1.67 78.95-7.62 112-16.73V344.34a24 24 0 1 1 48 0v101.9c44.5-20.18 72-47.59 72-77.86V208.15c0-43.32-35.76-69.76-80.66-86.1zM256 272.24c-114.88 0-208-28.69-208-64.09s93.12-64.08 208-64.08c17.15 0 33.73.71 49.68 1.91l-72.81 47a16 16 0 0 0-4.43 22.19l8.87 13.31a16 16 0 0 0 22.19 4.44l118.64-76.52C430.09 168 464 186.84 464 208.15c0 35.4-93.13 64.09-208 64.09z\"]\n};\nvar faDrumSteelpan = {\n  prefix: 'fas',\n  iconName: 'drum-steelpan',\n  icon: [576, 512, [], \"f56a\", \"M288 32C128.94 32 0 89.31 0 160v192c0 70.69 128.94 128 288 128s288-57.31 288-128V160c0-70.69-128.94-128-288-128zm-82.99 158.36c-4.45 16.61-14.54 30.57-28.31 40.48C100.23 217.46 48 190.78 48 160c0-30.16 50.11-56.39 124.04-70.03l25.6 44.34c9.86 17.09 12.48 36.99 7.37 56.05zM288 240c-21.08 0-41.41-1-60.89-2.7 8.06-26.13 32.15-45.3 60.89-45.3s52.83 19.17 60.89 45.3C329.41 239 309.08 240 288 240zm64-144c0 35.29-28.71 64-64 64s-64-28.71-64-64V82.96c20.4-1.88 41.8-2.96 64-2.96s43.6 1.08 64 2.96V96zm46.93 134.9c-13.81-9.91-23.94-23.9-28.4-40.54-5.11-19.06-2.49-38.96 7.38-56.04l25.65-44.42C477.72 103.5 528 129.79 528 160c0 30.83-52.4 57.54-129.07 70.9z\"]\n};\nvar faDrumstickBite = {\n  prefix: 'fas',\n  iconName: 'drumstick-bite',\n  icon: [512, 512, [], \"f6d7\", \"M462.8 49.57a169.44 169.44 0 0 0-239.5 0C187.82 85 160.13 128 160.13 192v85.83l-40.62 40.59c-9.7 9.69-24 11.07-36.78 6a60.33 60.33 0 0 0-65 98.72C33 438.39 54.24 442.7 73.85 438.21c-4.5 19.6-.18 40.83 15.1 56.1a60.35 60.35 0 0 0 98.8-65c-5.09-12.73-3.72-27 6-36.75L234.36 352h85.89a187.87 187.87 0 0 0 61.89-10c-39.64-43.89-39.83-110.23 1.05-151.07 34.38-34.36 86.76-39.46 128.74-16.8 1.3-44.96-14.81-90.28-49.13-124.56z\"]\n};\nvar faDumbbell = {\n  prefix: 'fas',\n  iconName: 'dumbbell',\n  icon: [640, 512, [], \"f44b\", \"M104 96H56c-13.3 0-24 10.7-24 24v104H8c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h24v104c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V120c0-13.3-10.7-24-24-24zm528 128h-24V120c0-13.3-10.7-24-24-24h-48c-13.3 0-24 10.7-24 24v272c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V288h24c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM456 32h-48c-13.3 0-24 10.7-24 24v168H256V56c0-13.3-10.7-24-24-24h-48c-13.3 0-24 10.7-24 24v400c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V288h128v168c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24z\"]\n};\nvar faDumpster = {\n  prefix: 'fas',\n  iconName: 'dumpster',\n  icon: [576, 512, [], \"f793\", \"M560 160c10.4 0 18-9.8 15.5-19.9l-24-96C549.7 37 543.3 32 536 32h-98.9l25.6 128H560zM272 32H171.5l-25.6 128H272V32zm132.5 0H304v128h126.1L404.5 32zM16 160h97.3l25.6-128H40c-7.3 0-13.7 5-15.5 12.1l-24 96C-2 150.2 5.6 160 16 160zm544 64h-20l4-32H32l4 32H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h28l20 160v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h320v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16l20-160h28c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16z\"]\n};\nvar faDumpsterFire = {\n  prefix: 'fas',\n  iconName: 'dumpster-fire',\n  icon: [640, 512, [], \"f794\", \"M418.7 104.1l.2-.2-14.4-72H304v128h60.8c16.2-19.3 34.2-38.2 53.9-55.8zM272 32H171.5l-25.6 128H272V32zm189.3 72.1c18.2 16.3 35.5 33.7 51.1 51.5 5.7-5.6 11.4-11.1 17.3-16.3l21.3-19 21.3 19c1.1.9 2.1 2.1 3.1 3.1-.1-.8.2-1.5 0-2.3l-24-96C549.7 37 543.3 32 536 32h-98.9l12.3 61.5 11.9 10.6zM16 160h97.3l25.6-128H40c-7.3 0-13.7 5-15.5 12.1l-24 96C-2 150.2 5.6 160 16 160zm324.6 32H32l4 32H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h28l20 160v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h208.8c-30.2-33.7-48.8-77.9-48.8-126.4 0-35.9 19.9-82.9 52.6-129.6zm210.5-28.8c-14.9 13.3-28.3 27.2-40.2 41.2-19.5-25.8-43.6-52-71-76.4-70.2 62.7-120 144.3-120 193.6 0 87.5 71.6 158.4 160 158.4s160-70.9 160-158.4c.1-36.6-37-112.2-88.8-158.4zm-18.6 229.4c-14.7 10.7-32.9 17-52.5 17-49 0-88.9-33.5-88.9-88 0-27.1 16.5-51 49.4-91.9 4.7 5.6 67.1 88.1 67.1 88.1l39.8-47c2.8 4.8 5.4 9.5 7.7 14 18.6 36.7 10.8 83.6-22.6 107.8z\"]\n};\nvar faDungeon = {\n  prefix: 'fas',\n  iconName: 'dungeon',\n  icon: [512, 512, [], \"f6d9\", \"M128.73 195.32l-82.81-51.76c-8.04-5.02-18.99-2.17-22.93 6.45A254.19 254.19 0 0 0 .54 239.28C-.05 248.37 7.59 256 16.69 256h97.13c7.96 0 14.08-6.25 15.01-14.16 1.09-9.33 3.24-18.33 6.24-26.94 2.56-7.34.25-15.46-6.34-19.58zM319.03 8C298.86 2.82 277.77 0 256 0s-42.86 2.82-63.03 8c-9.17 2.35-13.91 12.6-10.39 21.39l37.47 104.03A16.003 16.003 0 0 0 235.1 144h41.8c6.75 0 12.77-4.23 15.05-10.58l37.47-104.03c3.52-8.79-1.22-19.03-10.39-21.39zM112 288H16c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h96c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zm0 128H16c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h96c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zm77.31-283.67l-36.32-90.8c-3.53-8.83-14.13-12.99-22.42-8.31a257.308 257.308 0 0 0-71.61 59.89c-6.06 7.32-3.85 18.48 4.22 23.52l82.93 51.83c6.51 4.07 14.66 2.62 20.11-2.79 5.18-5.15 10.79-9.85 16.79-14.05 6.28-4.41 9.15-12.17 6.3-19.29zM398.18 256h97.13c9.1 0 16.74-7.63 16.15-16.72a254.135 254.135 0 0 0-22.45-89.27c-3.94-8.62-14.89-11.47-22.93-6.45l-82.81 51.76c-6.59 4.12-8.9 12.24-6.34 19.58 3.01 8.61 5.15 17.62 6.24 26.94.93 7.91 7.05 14.16 15.01 14.16zm54.85-162.89a257.308 257.308 0 0 0-71.61-59.89c-8.28-4.68-18.88-.52-22.42 8.31l-36.32 90.8c-2.85 7.12.02 14.88 6.3 19.28 6 4.2 11.61 8.9 16.79 14.05 5.44 5.41 13.6 6.86 20.11 2.79l82.93-51.83c8.07-5.03 10.29-16.19 4.22-23.51zM496 288h-96c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h96c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zm0 128h-96c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h96c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zM240 177.62V472c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8V177.62c-5.23-.89-10.52-1.62-16-1.62s-10.77.73-16 1.62zm-64 41.51V472c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8V189.36c-12.78 7.45-23.84 17.47-32 29.77zm128-29.77V472c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8V219.13c-8.16-12.3-19.22-22.32-32-29.77z\"]\n};\nvar faEdit = {\n  prefix: 'fas',\n  iconName: 'edit',\n  icon: [576, 512, [], \"f044\", \"M402.6 83.2l90.2 90.2c3.8 3.8 3.8 10 0 13.8L274.4 405.6l-92.8 10.3c-12.4 1.4-22.9-9.1-21.5-21.5l10.3-92.8L388.8 83.2c3.8-3.8 10-3.8 13.8 0zm162-22.9l-48.8-48.8c-15.2-15.2-39.9-15.2-55.2 0l-35.4 35.4c-3.8 3.8-3.8 10 0 13.8l90.2 90.2c3.8 3.8 10 3.8 13.8 0l35.4-35.4c15.2-15.3 15.2-40 0-55.2zM384 346.2V448H64V128h229.8c3.2 0 6.2-1.3 8.5-3.5l40-40c7.6-7.6 2.2-20.5-8.5-20.5H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V306.2c0-10.7-12.9-16-20.5-8.5l-40 40c-2.2 2.3-3.5 5.3-3.5 8.5z\"]\n};\nvar faEgg = {\n  prefix: 'fas',\n  iconName: 'egg',\n  icon: [384, 512, [], \"f7fb\", \"M192 0C86 0 0 214 0 320s86 192 192 192 192-86 192-192S298 0 192 0z\"]\n};\nvar faEject = {\n  prefix: 'fas',\n  iconName: 'eject',\n  icon: [448, 512, [], \"f052\", \"M448 384v64c0 17.673-14.327 32-32 32H32c-17.673 0-32-14.327-32-32v-64c0-17.673 14.327-32 32-32h384c17.673 0 32 14.327 32 32zM48.053 320h351.886c41.651 0 63.581-49.674 35.383-80.435L259.383 47.558c-19.014-20.743-51.751-20.744-70.767 0L12.67 239.565C-15.475 270.268 6.324 320 48.053 320z\"]\n};\nvar faEllipsisH = {\n  prefix: 'fas',\n  iconName: 'ellipsis-h',\n  icon: [512, 512, [], \"f141\", \"M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z\"]\n};\nvar faEllipsisV = {\n  prefix: 'fas',\n  iconName: 'ellipsis-v',\n  icon: [192, 512, [], \"f142\", \"M96 184c39.8 0 72 32.2 72 72s-32.2 72-72 72-72-32.2-72-72 32.2-72 72-72zM24 80c0 39.8 32.2 72 72 72s72-32.2 72-72S135.8 8 96 8 24 40.2 24 80zm0 352c0 39.8 32.2 72 72 72s72-32.2 72-72-32.2-72-72-72-72 32.2-72 72z\"]\n};\nvar faEnvelope = {\n  prefix: 'fas',\n  iconName: 'envelope',\n  icon: [512, 512, [], \"f0e0\", \"M502.3 190.8c3.9-3.1 9.7-.2 9.7 4.7V400c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V195.6c0-5 5.7-7.8 9.7-4.7 22.4 17.4 52.1 39.5 154.1 113.6 21.1 15.4 56.7 47.8 92.2 47.6 35.7.3 72-32.8 92.3-47.6 102-74.1 131.6-96.3 154-113.7zM256 320c23.2.4 56.6-29.2 73.4-41.4 132.7-96.3 142.8-104.7 173.4-128.7 5.8-4.5 9.2-11.5 9.2-18.9v-19c0-26.5-21.5-48-48-48H48C21.5 64 0 85.5 0 112v19c0 7.4 3.4 14.3 9.2 18.9 30.6 23.9 40.7 32.4 173.4 128.7 16.8 12.2 50.2 41.8 73.4 41.4z\"]\n};\nvar faEnvelopeOpen = {\n  prefix: 'fas',\n  iconName: 'envelope-open',\n  icon: [512, 512, [], \"f2b6\", \"M512 464c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V200.724a48 48 0 0 1 18.387-37.776c24.913-19.529 45.501-35.365 164.2-121.511C199.412 29.17 232.797-.347 256 .003c23.198-.354 56.596 29.172 73.413 41.433 118.687 86.137 139.303 101.995 164.2 121.512A48 48 0 0 1 512 200.724V464zm-65.666-196.605c-2.563-3.728-7.7-4.595-11.339-1.907-22.845 16.873-55.462 40.705-105.582 77.079-16.825 12.266-50.21 41.781-73.413 41.43-23.211.344-56.559-29.143-73.413-41.43-50.114-36.37-82.734-60.204-105.582-77.079-3.639-2.688-8.776-1.821-11.339 1.907l-9.072 13.196a7.998 7.998 0 0 0 1.839 10.967c22.887 16.899 55.454 40.69 105.303 76.868 20.274 14.781 56.524 47.813 92.264 47.573 35.724.242 71.961-32.771 92.263-47.573 49.85-36.179 82.418-59.97 105.303-76.868a7.998 7.998 0 0 0 1.839-10.967l-9.071-13.196z\"]\n};\nvar faEnvelopeOpenText = {\n  prefix: 'fas',\n  iconName: 'envelope-open-text',\n  icon: [512, 512, [], \"f658\", \"M176 216h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16H176c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16zm-16 80c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16H176c-8.84 0-16 7.16-16 16v16zm96 121.13c-16.42 0-32.84-5.06-46.86-15.19L0 250.86V464c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V250.86L302.86 401.94c-14.02 10.12-30.44 15.19-46.86 15.19zm237.61-254.18c-8.85-6.94-17.24-13.47-29.61-22.81V96c0-26.51-21.49-48-48-48h-77.55c-3.04-2.2-5.87-4.26-9.04-6.56C312.6 29.17 279.2-.35 256 0c-23.2-.35-56.59 29.17-73.41 41.44-3.17 2.3-6 4.36-9.04 6.56H96c-26.51 0-48 21.49-48 48v44.14c-12.37 9.33-20.76 15.87-29.61 22.81A47.995 47.995 0 0 0 0 200.72v10.65l96 69.35V96h320v184.72l96-69.35v-10.65c0-14.74-6.78-28.67-18.39-37.77z\"]\n};\nvar faEnvelopeSquare = {\n  prefix: 'fas',\n  iconName: 'envelope-square',\n  icon: [448, 512, [], \"f199\", \"M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM178.117 262.104C87.429 196.287 88.353 196.121 64 177.167V152c0-13.255 10.745-24 24-24h272c13.255 0 24 10.745 24 24v25.167c-24.371 18.969-23.434 19.124-114.117 84.938-10.5 7.655-31.392 26.12-45.883 25.894-14.503.218-35.367-18.227-45.883-25.895zM384 217.775V360c0 13.255-10.745 24-24 24H88c-13.255 0-24-10.745-24-24V217.775c13.958 10.794 33.329 25.236 95.303 70.214 14.162 10.341 37.975 32.145 64.694 32.01 26.887.134 51.037-22.041 64.72-32.025 61.958-44.965 81.325-59.406 95.283-70.199z\"]\n};\nvar faEquals = {\n  prefix: 'fas',\n  iconName: 'equals',\n  icon: [448, 512, [], \"f52c\", \"M416 304H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32zm0-192H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z\"]\n};\nvar faEraser = {\n  prefix: 'fas',\n  iconName: 'eraser',\n  icon: [512, 512, [], \"f12d\", \"M497.941 273.941c18.745-18.745 18.745-49.137 0-67.882l-160-160c-18.745-18.745-49.136-18.746-67.883 0l-256 256c-18.745 18.745-18.745 49.137 0 67.882l96 96A48.004 48.004 0 0 0 144 480h356c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12H355.883l142.058-142.059zm-302.627-62.627l137.373 137.373L265.373 416H150.628l-80-80 124.686-124.686z\"]\n};\nvar faEthernet = {\n  prefix: 'fas',\n  iconName: 'ethernet',\n  icon: [512, 512, [], \"f796\", \"M496 192h-48v-48c0-8.8-7.2-16-16-16h-48V80c0-8.8-7.2-16-16-16H144c-8.8 0-16 7.2-16 16v48H80c-8.8 0-16 7.2-16 16v48H16c-8.8 0-16 7.2-16 16v224c0 8.8 7.2 16 16 16h80V320h32v128h64V320h32v128h64V320h32v128h64V320h32v128h80c8.8 0 16-7.2 16-16V208c0-8.8-7.2-16-16-16z\"]\n};\nvar faEuroSign = {\n  prefix: 'fas',\n  iconName: 'euro-sign',\n  icon: [320, 512, [], \"f153\", \"M310.706 413.765c-1.314-6.63-7.835-10.872-14.424-9.369-10.692 2.439-27.422 5.413-45.426 5.413-56.763 0-101.929-34.79-121.461-85.449h113.689a12 12 0 0 0 11.708-9.369l6.373-28.36c1.686-7.502-4.019-14.631-11.708-14.631H115.22c-1.21-14.328-1.414-28.287.137-42.245H261.95a12 12 0 0 0 11.723-9.434l6.512-29.755c1.638-7.484-4.061-14.566-11.723-14.566H130.184c20.633-44.991 62.69-75.03 117.619-75.03 14.486 0 28.564 2.25 37.851 4.145 6.216 1.268 12.347-2.498 14.002-8.623l11.991-44.368c1.822-6.741-2.465-13.616-9.326-14.917C290.217 34.912 270.71 32 249.635 32 152.451 32 74.03 92.252 45.075 176H12c-6.627 0-12 5.373-12 12v29.755c0 6.627 5.373 12 12 12h21.569c-1.009 13.607-1.181 29.287-.181 42.245H12c-6.627 0-12 5.373-12 12v28.36c0 6.627 5.373 12 12 12h30.114C67.139 414.692 145.264 480 249.635 480c26.301 0 48.562-4.544 61.101-7.788 6.167-1.595 10.027-7.708 8.788-13.957l-8.818-44.49z\"]\n};\nvar faExchangeAlt = {\n  prefix: 'fas',\n  iconName: 'exchange-alt',\n  icon: [512, 512, [], \"f362\", \"M0 168v-16c0-13.255 10.745-24 24-24h360V80c0-21.367 25.899-32.042 40.971-16.971l80 80c9.372 9.373 9.372 24.569 0 33.941l-80 80C409.956 271.982 384 261.456 384 240v-48H24c-13.255 0-24-10.745-24-24zm488 152H128v-48c0-21.314-25.862-32.08-40.971-16.971l-80 80c-9.372 9.373-9.372 24.569 0 33.941l80 80C102.057 463.997 128 453.437 128 432v-48h360c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24z\"]\n};\nvar faExclamation = {\n  prefix: 'fas',\n  iconName: 'exclamation',\n  icon: [192, 512, [], \"f12a\", \"M176 432c0 44.112-35.888 80-80 80s-80-35.888-80-80 35.888-80 80-80 80 35.888 80 80zM25.26 25.199l13.6 272C39.499 309.972 50.041 320 62.83 320h66.34c12.789 0 23.331-10.028 23.97-22.801l13.6-272C167.425 11.49 156.496 0 142.77 0H49.23C35.504 0 24.575 11.49 25.26 25.199z\"]\n};\nvar faExclamationCircle = {\n  prefix: 'fas',\n  iconName: 'exclamation-circle',\n  icon: [512, 512, [], \"f06a\", \"M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248zm-248 50c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z\"]\n};\nvar faExclamationTriangle = {\n  prefix: 'fas',\n  iconName: 'exclamation-triangle',\n  icon: [576, 512, [], \"f071\", \"M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z\"]\n};\nvar faExpand = {\n  prefix: 'fas',\n  iconName: 'expand',\n  icon: [448, 512, [], \"f065\", \"M0 180V56c0-13.3 10.7-24 24-24h124c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H64v84c0 6.6-5.4 12-12 12H12c-6.6 0-12-5.4-12-12zM288 44v40c0 6.6 5.4 12 12 12h84v84c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12V56c0-13.3-10.7-24-24-24H300c-6.6 0-12 5.4-12 12zm148 276h-40c-6.6 0-12 5.4-12 12v84h-84c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h124c13.3 0 24-10.7 24-24V332c0-6.6-5.4-12-12-12zM160 468v-40c0-6.6-5.4-12-12-12H64v-84c0-6.6-5.4-12-12-12H12c-6.6 0-12 5.4-12 12v124c0 13.3 10.7 24 24 24h124c6.6 0 12-5.4 12-12z\"]\n};\nvar faExpandAlt = {\n  prefix: 'fas',\n  iconName: 'expand-alt',\n  icon: [448, 512, [], \"f424\", \"M212.686 315.314L120 408l32.922 31.029c15.12 15.12 4.412 40.971-16.97 40.971h-112C10.697 480 0 469.255 0 456V344c0-21.382 25.803-32.09 40.922-16.971L72 360l92.686-92.686c6.248-6.248 16.379-6.248 22.627 0l25.373 25.373c6.249 6.248 6.249 16.378 0 22.627zm22.628-118.628L328 104l-32.922-31.029C279.958 57.851 290.666 32 312.048 32h112C437.303 32 448 42.745 448 56v112c0 21.382-25.803 32.09-40.922 16.971L376 152l-92.686 92.686c-6.248 6.248-16.379 6.248-22.627 0l-25.373-25.373c-6.249-6.248-6.249-16.378 0-22.627z\"]\n};\nvar faExpandArrowsAlt = {\n  prefix: 'fas',\n  iconName: 'expand-arrows-alt',\n  icon: [448, 512, [], \"f31e\", \"M448 344v112a23.94 23.94 0 0 1-24 24H312c-21.39 0-32.09-25.9-17-41l36.2-36.2L224 295.6 116.77 402.9 153 439c15.09 15.1 4.39 41-17 41H24a23.94 23.94 0 0 1-24-24V344c0-21.4 25.89-32.1 41-17l36.19 36.2L184.46 256 77.18 148.7 41 185c-15.1 15.1-41 4.4-41-17V56a23.94 23.94 0 0 1 24-24h112c21.39 0 32.09 25.9 17 41l-36.2 36.2L224 216.4l107.23-107.3L295 73c-15.09-15.1-4.39-41 17-41h112a23.94 23.94 0 0 1 24 24v112c0 21.4-25.89 32.1-41 17l-36.19-36.2L263.54 256l107.28 107.3L407 327.1c15.1-15.2 41-4.5 41 16.9z\"]\n};\nvar faExternalLinkAlt = {\n  prefix: 'fas',\n  iconName: 'external-link-alt',\n  icon: [512, 512, [], \"f35d\", \"M432,320H400a16,16,0,0,0-16,16V448H64V128H208a16,16,0,0,0,16-16V80a16,16,0,0,0-16-16H48A48,48,0,0,0,0,112V464a48,48,0,0,0,48,48H400a48,48,0,0,0,48-48V336A16,16,0,0,0,432,320ZM488,0h-128c-21.37,0-32.05,25.91-17,41l35.73,35.73L135,320.37a24,24,0,0,0,0,34L157.67,377a24,24,0,0,0,34,0L435.28,133.32,471,169c15,15,41,4.5,41-17V24A24,24,0,0,0,488,0Z\"]\n};\nvar faExternalLinkSquareAlt = {\n  prefix: 'fas',\n  iconName: 'external-link-square-alt',\n  icon: [448, 512, [], \"f360\", \"M448 80v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48zm-88 16H248.029c-21.313 0-32.08 25.861-16.971 40.971l31.984 31.987L67.515 364.485c-4.686 4.686-4.686 12.284 0 16.971l31.029 31.029c4.687 4.686 12.285 4.686 16.971 0l195.526-195.526 31.988 31.991C358.058 263.977 384 253.425 384 231.979V120c0-13.255-10.745-24-24-24z\"]\n};\nvar faEye = {\n  prefix: 'fas',\n  iconName: 'eye',\n  icon: [576, 512, [], \"f06e\", \"M572.52 241.4C518.29 135.59 410.93 64 288 64S57.68 135.64 3.48 241.41a32.35 32.35 0 0 0 0 29.19C57.71 376.41 165.07 448 288 448s230.32-71.64 284.52-177.41a32.35 32.35 0 0 0 0-29.19zM288 400a144 144 0 1 1 144-144 143.93 143.93 0 0 1-144 144zm0-240a95.31 95.31 0 0 0-25.31 3.79 47.85 47.85 0 0 1-66.9 66.9A95.78 95.78 0 1 0 288 160z\"]\n};\nvar faEyeDropper = {\n  prefix: 'fas',\n  iconName: 'eye-dropper',\n  icon: [512, 512, [], \"f1fb\", \"M50.75 333.25c-12 12-18.75 28.28-18.75 45.26V424L0 480l32 32 56-32h45.49c16.97 0 33.25-6.74 45.25-18.74l126.64-126.62-128-128L50.75 333.25zM483.88 28.12c-37.47-37.5-98.28-37.5-135.75 0l-77.09 77.09-13.1-13.1c-9.44-9.44-24.65-9.31-33.94 0l-40.97 40.97c-9.37 9.37-9.37 24.57 0 33.94l161.94 161.94c9.44 9.44 24.65 9.31 33.94 0L419.88 288c9.37-9.37 9.37-24.57 0-33.94l-13.1-13.1 77.09-77.09c37.51-37.48 37.51-98.26.01-135.75z\"]\n};\nvar faEyeSlash = {\n  prefix: 'fas',\n  iconName: 'eye-slash',\n  icon: [640, 512, [], \"f070\", \"M320 400c-75.85 0-137.25-58.71-142.9-133.11L72.2 185.82c-13.79 17.3-26.48 35.59-36.72 55.59a32.35 32.35 0 0 0 0 29.19C89.71 376.41 197.07 448 320 448c26.91 0 52.87-4 77.89-10.46L346 397.39a144.13 144.13 0 0 1-26 2.61zm313.82 58.1l-110.55-85.44a331.25 331.25 0 0 0 81.25-102.07 32.35 32.35 0 0 0 0-29.19C550.29 135.59 442.93 64 320 64a308.15 308.15 0 0 0-147.32 37.7L45.46 3.37A16 16 0 0 0 23 6.18L3.37 31.45A16 16 0 0 0 6.18 53.9l588.36 454.73a16 16 0 0 0 22.46-2.81l19.64-25.27a16 16 0 0 0-2.82-22.45zm-183.72-142l-39.3-30.38A94.75 94.75 0 0 0 416 256a94.76 94.76 0 0 0-121.31-92.21A47.65 47.65 0 0 1 304 192a46.64 46.64 0 0 1-1.54 10l-73.61-56.89A142.31 142.31 0 0 1 320 112a143.92 143.92 0 0 1 144 144c0 21.63-5.29 41.79-13.9 60.11z\"]\n};\nvar faFan = {\n  prefix: 'fas',\n  iconName: 'fan',\n  icon: [512, 512, [], \"f863\", \"M352.57 128c-28.09 0-54.09 4.52-77.06 12.86l12.41-123.11C289 7.31 279.81-1.18 269.33.13 189.63 10.13 128 77.64 128 159.43c0 28.09 4.52 54.09 12.86 77.06L17.75 224.08C7.31 223-1.18 232.19.13 242.67c10 79.7 77.51 141.33 159.3 141.33 28.09 0 54.09-4.52 77.06-12.86l-12.41 123.11c-1.05 10.43 8.11 18.93 18.59 17.62 79.7-10 141.33-77.51 141.33-159.3 0-28.09-4.52-54.09-12.86-77.06l123.11 12.41c10.44 1.05 18.93-8.11 17.62-18.59-10-79.7-77.51-141.33-159.3-141.33zM256 288a32 32 0 1 1 32-32 32 32 0 0 1-32 32z\"]\n};\nvar faFastBackward = {\n  prefix: 'fas',\n  iconName: 'fast-backward',\n  icon: [512, 512, [], \"f049\", \"M0 436V76c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v151.9L235.5 71.4C256.1 54.3 288 68.6 288 96v131.9L459.5 71.4C480.1 54.3 512 68.6 512 96v320c0 27.4-31.9 41.7-52.5 24.6L288 285.3V416c0 27.4-31.9 41.7-52.5 24.6L64 285.3V436c0 6.6-5.4 12-12 12H12c-6.6 0-12-5.4-12-12z\"]\n};\nvar faFastForward = {\n  prefix: 'fas',\n  iconName: 'fast-forward',\n  icon: [512, 512, [], \"f050\", \"M512 76v360c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12V284.1L276.5 440.6c-20.6 17.2-52.5 2.8-52.5-24.6V284.1L52.5 440.6C31.9 457.8 0 443.4 0 416V96c0-27.4 31.9-41.7 52.5-24.6L224 226.8V96c0-27.4 31.9-41.7 52.5-24.6L448 226.8V76c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12z\"]\n};\nvar faFaucet = {\n  prefix: 'fas',\n  iconName: 'faucet',\n  icon: [512, 512, [], \"e005\", \"M352,256H313.39c-15.71-13.44-35.46-23.07-57.39-28V180.44l-32-3.38-32,3.38V228c-21.93,5-41.68,14.6-57.39,28H16A16,16,0,0,0,0,272v96a16,16,0,0,0,16,16h92.79C129.38,421.73,173,448,224,448s94.62-26.27,115.21-64H352a32,32,0,0,1,32,32,32,32,0,0,0,32,32h64a32,32,0,0,0,32-32A160,160,0,0,0,352,256ZM81.59,159.91l142.41-15,142.41,15c9.42,1,17.59-6.81,17.59-16.8V112.89c0-10-8.17-17.8-17.59-16.81L256,107.74V80a16,16,0,0,0-16-16H208a16,16,0,0,0-16,16v27.74L81.59,96.08C72.17,95.09,64,102.9,64,112.89v30.22C64,153.1,72.17,160.91,81.59,159.91Z\"]\n};\nvar faFax = {\n  prefix: 'fas',\n  iconName: 'fax',\n  icon: [512, 512, [], \"f1ac\", \"M480 160V77.25a32 32 0 0 0-9.38-22.63L425.37 9.37A32 32 0 0 0 402.75 0H160a32 32 0 0 0-32 32v448a32 32 0 0 0 32 32h320a32 32 0 0 0 32-32V192a32 32 0 0 0-32-32zM288 432a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16zm0-128a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16zm128 128a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16zm0-128a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16zm0-112H192V64h160v48a16 16 0 0 0 16 16h48zM64 128H32a32 32 0 0 0-32 32v320a32 32 0 0 0 32 32h32a32 32 0 0 0 32-32V160a32 32 0 0 0-32-32z\"]\n};\nvar faFeather = {\n  prefix: 'fas',\n  iconName: 'feather',\n  icon: [512, 512, [], \"f52d\", \"M467.14 44.84c-62.55-62.48-161.67-64.78-252.28 25.73-78.61 78.52-60.98 60.92-85.75 85.66-60.46 60.39-70.39 150.83-63.64 211.17l178.44-178.25c6.26-6.25 16.4-6.25 22.65 0s6.25 16.38 0 22.63L7.04 471.03c-9.38 9.37-9.38 24.57 0 33.94 9.38 9.37 24.6 9.37 33.98 0l66.1-66.03C159.42 454.65 279 457.11 353.95 384h-98.19l147.57-49.14c49.99-49.93 36.38-36.18 46.31-46.86h-97.78l131.54-43.8c45.44-74.46 34.31-148.84-16.26-199.36z\"]\n};\nvar faFeatherAlt = {\n  prefix: 'fas',\n  iconName: 'feather-alt',\n  icon: [512, 512, [], \"f56b\", \"M512 0C460.22 3.56 96.44 38.2 71.01 287.61c-3.09 26.66-4.84 53.44-5.99 80.24l178.87-178.69c6.25-6.25 16.4-6.25 22.65 0s6.25 16.38 0 22.63L7.04 471.03c-9.38 9.37-9.38 24.57 0 33.94 9.38 9.37 24.59 9.37 33.98 0l57.13-57.07c42.09-.14 84.15-2.53 125.96-7.36 53.48-5.44 97.02-26.47 132.58-56.54H255.74l146.79-48.88c11.25-14.89 21.37-30.71 30.45-47.12h-81.14l106.54-53.21C500.29 132.86 510.19 26.26 512 0z\"]\n};\nvar faFemale = {\n  prefix: 'fas',\n  iconName: 'female',\n  icon: [256, 512, [], \"f182\", \"M128 0c35.346 0 64 28.654 64 64s-28.654 64-64 64c-35.346 0-64-28.654-64-64S92.654 0 128 0m119.283 354.179l-48-192A24 24 0 0 0 176 144h-11.36c-22.711 10.443-49.59 10.894-73.28 0H80a24 24 0 0 0-23.283 18.179l-48 192C4.935 369.305 16.383 384 32 384h56v104c0 13.255 10.745 24 24 24h32c13.255 0 24-10.745 24-24V384h56c15.591 0 27.071-14.671 23.283-29.821z\"]\n};\nvar faFighterJet = {\n  prefix: 'fas',\n  iconName: 'fighter-jet',\n  icon: [640, 512, [], \"f0fb\", \"M544 224l-128-16-48-16h-24L227.158 44h39.509C278.333 44 288 41.375 288 38s-9.667-6-21.333-6H152v12h16v164h-48l-66.667-80H18.667L8 138.667V208h8v16h48v2.666l-64 8v42.667l64 8V288H16v16H8v69.333L18.667 384h34.667L120 304h48v164h-16v12h114.667c11.667 0 21.333-2.625 21.333-6s-9.667-6-21.333-6h-39.509L344 320h24l48-16 128-16c96-21.333 96-26.583 96-32 0-5.417 0-10.667-96-32z\"]\n};\nvar faFile = {\n  prefix: 'fas',\n  iconName: 'file',\n  icon: [384, 512, [], \"f15b\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm160-14.1v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z\"]\n};\nvar faFileAlt = {\n  prefix: 'fas',\n  iconName: 'file-alt',\n  icon: [384, 512, [], \"f15c\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm64 236c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12v8zm0-64c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12v8zm0-72v8c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12zm96-114.1v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z\"]\n};\nvar faFileArchive = {\n  prefix: 'fas',\n  iconName: 'file-archive',\n  icon: [384, 512, [], \"f1c6\", \"M377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zM128.4 336c-17.9 0-32.4 12.1-32.4 27 0 15 14.6 27 32.5 27s32.4-12.1 32.4-27-14.6-27-32.5-27zM224 136V0h-63.6v32h-32V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zM95.9 32h32v32h-32zm32.3 384c-33.2 0-58-30.4-51.4-62.9L96.4 256v-32h32v-32h-32v-32h32v-32h-32V96h32V64h32v32h-32v32h32v32h-32v32h32v32h-32v32h22.1c5.7 0 10.7 4.1 11.8 9.7l17.3 87.7c6.4 32.4-18.4 62.6-51.4 62.6z\"]\n};\nvar faFileAudio = {\n  prefix: 'fas',\n  iconName: 'file-audio',\n  icon: [384, 512, [], \"f1c7\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm-64 268c0 10.7-12.9 16-20.5 8.5L104 376H76c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h28l35.5-36.5c7.6-7.6 20.5-2.2 20.5 8.5v136zm33.2-47.6c9.1-9.3 9.1-24.1 0-33.4-22.1-22.8 12.2-56.2 34.4-33.5 27.2 27.9 27.2 72.4 0 100.4-21.8 22.3-56.9-10.4-34.4-33.5zm86-117.1c54.4 55.9 54.4 144.8 0 200.8-21.8 22.4-57-10.3-34.4-33.5 36.2-37.2 36.3-96.5 0-133.8-22.1-22.8 12.3-56.3 34.4-33.5zM384 121.9v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z\"]\n};\nvar faFileCode = {\n  prefix: 'fas',\n  iconName: 'file-code',\n  icon: [384, 512, [], \"f1c9\", \"M384 121.941V128H256V0h6.059c6.365 0 12.47 2.529 16.971 7.029l97.941 97.941A24.005 24.005 0 0 1 384 121.941zM248 160c-13.2 0-24-10.8-24-24V0H24C10.745 0 0 10.745 0 24v464c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V160H248zM123.206 400.505a5.4 5.4 0 0 1-7.633.246l-64.866-60.812a5.4 5.4 0 0 1 0-7.879l64.866-60.812a5.4 5.4 0 0 1 7.633.246l19.579 20.885a5.4 5.4 0 0 1-.372 7.747L101.65 336l40.763 35.874a5.4 5.4 0 0 1 .372 7.747l-19.579 20.884zm51.295 50.479l-27.453-7.97a5.402 5.402 0 0 1-3.681-6.692l61.44-211.626a5.402 5.402 0 0 1 6.692-3.681l27.452 7.97a5.4 5.4 0 0 1 3.68 6.692l-61.44 211.626a5.397 5.397 0 0 1-6.69 3.681zm160.792-111.045l-64.866 60.812a5.4 5.4 0 0 1-7.633-.246l-19.58-20.885a5.4 5.4 0 0 1 .372-7.747L284.35 336l-40.763-35.874a5.4 5.4 0 0 1-.372-7.747l19.58-20.885a5.4 5.4 0 0 1 7.633-.246l64.866 60.812a5.4 5.4 0 0 1-.001 7.879z\"]\n};\nvar faFileContract = {\n  prefix: 'fas',\n  iconName: 'file-contract',\n  icon: [384, 512, [], \"f56c\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zM64 72c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8V72zm0 64c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16zm192.81 248H304c8.84 0 16 7.16 16 16s-7.16 16-16 16h-47.19c-16.45 0-31.27-9.14-38.64-23.86-2.95-5.92-8.09-6.52-10.17-6.52s-7.22.59-10.02 6.19l-7.67 15.34a15.986 15.986 0 0 1-14.31 8.84c-.38 0-.75-.02-1.14-.05-6.45-.45-12-4.75-14.03-10.89L144 354.59l-10.61 31.88c-5.89 17.66-22.38 29.53-41 29.53H80c-8.84 0-16-7.16-16-16s7.16-16 16-16h12.39c4.83 0 9.11-3.08 10.64-7.66l18.19-54.64c3.3-9.81 12.44-16.41 22.78-16.41s19.48 6.59 22.77 16.41l13.88 41.64c19.77-16.19 54.05-9.7 66 14.16 2.02 4.06 5.96 6.5 10.16 6.5zM377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z\"]\n};\nvar faFileCsv = {\n  prefix: 'fas',\n  iconName: 'file-csv',\n  icon: [384, 512, [], \"f6dd\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm-96 144c0 4.42-3.58 8-8 8h-8c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h8c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-8c-26.51 0-48-21.49-48-48v-32c0-26.51 21.49-48 48-48h8c4.42 0 8 3.58 8 8v16zm44.27 104H160c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h12.27c5.95 0 10.41-3.5 10.41-6.62 0-1.3-.75-2.66-2.12-3.84l-21.89-18.77c-8.47-7.22-13.33-17.48-13.33-28.14 0-21.3 19.02-38.62 42.41-38.62H200c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-12.27c-5.95 0-10.41 3.5-10.41 6.62 0 1.3.75 2.66 2.12 3.84l21.89 18.77c8.47 7.22 13.33 17.48 13.33 28.14.01 21.29-19 38.62-42.39 38.62zM256 264v20.8c0 20.27 5.7 40.17 16 56.88 10.3-16.7 16-36.61 16-56.88V264c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v20.8c0 35.48-12.88 68.89-36.28 94.09-3.02 3.25-7.27 5.11-11.72 5.11s-8.7-1.86-11.72-5.11c-23.4-25.2-36.28-58.61-36.28-94.09V264c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8zm121-159L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z\"]\n};\nvar faFileDownload = {\n  prefix: 'fas',\n  iconName: 'file-download',\n  icon: [384, 512, [], \"f56d\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm76.45 211.36l-96.42 95.7c-6.65 6.61-17.39 6.61-24.04 0l-96.42-95.7C73.42 337.29 80.54 320 94.82 320H160v-80c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v80h65.18c14.28 0 21.4 17.29 11.27 27.36zM377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z\"]\n};\nvar faFileExcel = {\n  prefix: 'fas',\n  iconName: 'file-excel',\n  icon: [384, 512, [], \"f1c3\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm60.1 106.5L224 336l60.1 93.5c5.1 8-.6 18.5-10.1 18.5h-34.9c-4.4 0-8.5-2.4-10.6-6.3C208.9 405.5 192 373 192 373c-6.4 14.8-10 20-36.6 68.8-2.1 3.9-6.1 6.3-10.5 6.3H110c-9.5 0-15.2-10.5-10.1-18.5l60.3-93.5-60.3-93.5c-5.2-8 .6-18.5 10.1-18.5h34.8c4.4 0 8.5 2.4 10.6 6.3 26.1 48.8 20 33.6 36.6 68.5 0 0 6.1-11.7 36.6-68.5 2.1-3.9 6.2-6.3 10.6-6.3H274c9.5-.1 15.2 10.4 10.1 18.4zM384 121.9v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z\"]\n};\nvar faFileExport = {\n  prefix: 'fas',\n  iconName: 'file-export',\n  icon: [576, 512, [], \"f56e\", \"M384 121.9c0-6.3-2.5-12.4-7-16.9L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128zM571 308l-95.7-96.4c-10.1-10.1-27.4-3-27.4 11.3V288h-64v64h64v65.2c0 14.3 17.3 21.4 27.4 11.3L571 332c6.6-6.6 6.6-17.4 0-24zm-379 28v-32c0-8.8 7.2-16 16-16h176V160H248c-13.2 0-24-10.8-24-24V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V352H208c-8.8 0-16-7.2-16-16z\"]\n};\nvar faFileImage = {\n  prefix: 'fas',\n  iconName: 'file-image',\n  icon: [384, 512, [], \"f1c5\", \"M384 121.941V128H256V0h6.059a24 24 0 0 1 16.97 7.029l97.941 97.941a24.002 24.002 0 0 1 7.03 16.971zM248 160c-13.2 0-24-10.8-24-24V0H24C10.745 0 0 10.745 0 24v464c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V160H248zm-135.455 16c26.51 0 48 21.49 48 48s-21.49 48-48 48-48-21.49-48-48 21.491-48 48-48zm208 240h-256l.485-48.485L104.545 328c4.686-4.686 11.799-4.201 16.485.485L160.545 368 264.06 264.485c4.686-4.686 12.284-4.686 16.971 0L320.545 304v112z\"]\n};\nvar faFileImport = {\n  prefix: 'fas',\n  iconName: 'file-import',\n  icon: [512, 512, [], \"f56f\", \"M16 288c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h112v-64zm489-183L407.1 7c-4.5-4.5-10.6-7-17-7H384v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H152c-13.3 0-24 10.7-24 24v264h128v-65.2c0-14.3 17.3-21.4 27.4-11.3L379 308c6.6 6.7 6.6 17.4 0 24l-95.7 96.4c-10.1 10.1-27.4 3-27.4-11.3V352H128v136c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H376c-13.2 0-24-10.8-24-24z\"]\n};\nvar faFileInvoice = {\n  prefix: 'fas',\n  iconName: 'file-invoice',\n  icon: [384, 512, [], \"f570\", \"M288 256H96v64h192v-64zm89-151L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zM64 72c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8V72zm0 64c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16zm256 304c0 4.42-3.58 8-8 8h-80c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16zm0-200v96c0 8.84-7.16 16-16 16H80c-8.84 0-16-7.16-16-16v-96c0-8.84 7.16-16 16-16h224c8.84 0 16 7.16 16 16z\"]\n};\nvar faFileInvoiceDollar = {\n  prefix: 'fas',\n  iconName: 'file-invoice-dollar',\n  icon: [384, 512, [], \"f571\", \"M377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zM64 72c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8V72zm0 80v-16c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8zm144 263.88V440c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-24.29c-11.29-.58-22.27-4.52-31.37-11.35-3.9-2.93-4.1-8.77-.57-12.14l11.75-11.21c2.77-2.64 6.89-2.76 10.13-.73 3.87 2.42 8.26 3.72 12.82 3.72h28.11c6.5 0 11.8-5.92 11.8-13.19 0-5.95-3.61-11.19-8.77-12.73l-45-13.5c-18.59-5.58-31.58-23.42-31.58-43.39 0-24.52 19.05-44.44 42.67-45.07V232c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v24.29c11.29.58 22.27 4.51 31.37 11.35 3.9 2.93 4.1 8.77.57 12.14l-11.75 11.21c-2.77 2.64-6.89 2.76-10.13.73-3.87-2.43-8.26-3.72-12.82-3.72h-28.11c-6.5 0-11.8 5.92-11.8 13.19 0 5.95 3.61 11.19 8.77 12.73l45 13.5c18.59 5.58 31.58 23.42 31.58 43.39 0 24.53-19.05 44.44-42.67 45.07z\"]\n};\nvar faFileMedical = {\n  prefix: 'fas',\n  iconName: 'file-medical',\n  icon: [384, 512, [], \"f477\", \"M377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm64 160v48c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8z\"]\n};\nvar faFileMedicalAlt = {\n  prefix: 'fas',\n  iconName: 'file-medical-alt',\n  icon: [448, 512, [], \"f478\", \"M288 136V0H88C74.7 0 64 10.7 64 24v232H8c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h140.9c3 0 5.8 1.7 7.2 4.4l19.9 39.8 56.8-113.7c2.9-5.9 11.4-5.9 14.3 0l34.7 69.5H352c8.8 0 16 7.2 16 16s-7.2 16-16 16h-89.9L240 275.8l-56.8 113.7c-2.9 5.9-11.4 5.9-14.3 0L134.1 320H64v168c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H312c-13.2 0-24-10.8-24-24zm153-31L343.1 7c-4.5-4.5-10.6-7-17-7H320v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z\"]\n};\nvar faFilePdf = {\n  prefix: 'fas',\n  iconName: 'file-pdf',\n  icon: [384, 512, [], \"f1c1\", \"M181.9 256.1c-5-16-4.9-46.9-2-46.9 8.4 0 7.6 36.9 2 46.9zm-1.7 47.2c-7.7 20.2-17.3 43.3-28.4 62.7 18.3-7 39-17.2 62.9-21.9-12.7-9.6-24.9-23.4-34.5-40.8zM86.1 428.1c0 .8 13.2-5.4 34.9-40.2-6.7 6.3-29.1 24.5-34.9 40.2zM248 160h136v328c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V24C0 10.7 10.7 0 24 0h200v136c0 13.2 10.8 24 24 24zm-8 171.8c-20-12.2-33.3-29-42.7-53.8 4.5-18.5 11.6-46.6 6.2-64.2-4.7-29.4-42.4-26.5-47.8-6.8-5 18.3-.4 44.1 8.1 77-11.6 27.6-28.7 64.6-40.8 85.8-.1 0-.1.1-.2.1-27.1 13.9-73.6 44.5-54.5 68 5.6 6.9 16 10 21.5 10 17.9 0 35.7-18 61.1-61.8 25.8-8.5 54.1-19.1 79-23.2 21.7 11.8 47.1 19.5 64 19.5 29.2 0 31.2-32 19.7-43.4-13.9-13.6-54.3-9.7-73.6-7.2zM377 105L279 7c-4.5-4.5-10.6-7-17-7h-6v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-74.1 255.3c4.1-2.7-2.5-11.9-42.8-9 37.1 15.8 42.8 9 42.8 9z\"]\n};\nvar faFilePowerpoint = {\n  prefix: 'fas',\n  iconName: 'file-powerpoint',\n  icon: [384, 512, [], \"f1c4\", \"M193.7 271.2c8.8 0 15.5 2.7 20.3 8.1 9.6 10.9 9.8 32.7-.2 44.1-4.9 5.6-11.9 8.5-21.1 8.5h-26.9v-60.7h27.9zM377 105L279 7c-4.5-4.5-10.6-7-17-7h-6v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm53 165.2c0 90.3-88.8 77.6-111.1 77.6V436c0 6.6-5.4 12-12 12h-30.8c-6.6 0-12-5.4-12-12V236.2c0-6.6 5.4-12 12-12h81c44.5 0 72.9 32.8 72.9 77z\"]\n};\nvar faFilePrescription = {\n  prefix: 'fas',\n  iconName: 'file-prescription',\n  icon: [384, 512, [], \"f572\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm68.53 179.48l11.31 11.31c6.25 6.25 6.25 16.38 0 22.63l-29.9 29.9L304 409.38c6.25 6.25 6.25 16.38 0 22.63l-11.31 11.31c-6.25 6.25-16.38 6.25-22.63 0L240 413.25l-30.06 30.06c-6.25 6.25-16.38 6.25-22.63 0L176 432c-6.25-6.25-6.25-16.38 0-22.63l30.06-30.06L146.74 320H128v48c0 8.84-7.16 16-16 16H96c-8.84 0-16-7.16-16-16V208c0-8.84 7.16-16 16-16h80c35.35 0 64 28.65 64 64 0 24.22-13.62 45.05-33.46 55.92L240 345.38l29.9-29.9c6.25-6.25 16.38-6.25 22.63 0zM176 272h-48v-32h48c8.82 0 16 7.18 16 16s-7.18 16-16 16zm208-150.1v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z\"]\n};\nvar faFileSignature = {\n  prefix: 'fas',\n  iconName: 'file-signature',\n  icon: [576, 512, [], \"f573\", \"M218.17 424.14c-2.95-5.92-8.09-6.52-10.17-6.52s-7.22.59-10.02 6.19l-7.67 15.34c-6.37 12.78-25.03 11.37-29.48-2.09L144 386.59l-10.61 31.88c-5.89 17.66-22.38 29.53-41 29.53H80c-8.84 0-16-7.16-16-16s7.16-16 16-16h12.39c4.83 0 9.11-3.08 10.64-7.66l18.19-54.64c3.3-9.81 12.44-16.41 22.78-16.41s19.48 6.59 22.77 16.41l13.88 41.64c19.75-16.19 54.06-9.7 66 14.16 1.89 3.78 5.49 5.95 9.36 6.26v-82.12l128-127.09V160H248c-13.2 0-24-10.8-24-24V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24v-40l-128-.11c-16.12-.31-30.58-9.28-37.83-23.75zM384 121.9c0-6.3-2.5-12.4-7-16.9L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1zm-96 225.06V416h68.99l161.68-162.78-67.88-67.88L288 346.96zm280.54-179.63l-31.87-31.87c-9.94-9.94-26.07-9.94-36.01 0l-27.25 27.25 67.88 67.88 27.25-27.25c9.95-9.94 9.95-26.07 0-36.01z\"]\n};\nvar faFileUpload = {\n  prefix: 'fas',\n  iconName: 'file-upload',\n  icon: [384, 512, [], \"f574\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm65.18 216.01H224v80c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-80H94.82c-14.28 0-21.41-17.29-11.27-27.36l96.42-95.7c6.65-6.61 17.39-6.61 24.04 0l96.42 95.7c10.15 10.07 3.03 27.36-11.25 27.36zM377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z\"]\n};\nvar faFileVideo = {\n  prefix: 'fas',\n  iconName: 'file-video',\n  icon: [384, 512, [], \"f1c8\", \"M384 121.941V128H256V0h6.059c6.365 0 12.47 2.529 16.971 7.029l97.941 97.941A24.005 24.005 0 0 1 384 121.941zM224 136V0H24C10.745 0 0 10.745 0 24v464c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V160H248c-13.2 0-24-10.8-24-24zm96 144.016v111.963c0 21.445-25.943 31.998-40.971 16.971L224 353.941V392c0 13.255-10.745 24-24 24H88c-13.255 0-24-10.745-24-24V280c0-13.255 10.745-24 24-24h112c13.255 0 24 10.745 24 24v38.059l55.029-55.013c15.011-15.01 40.971-4.491 40.971 16.97z\"]\n};\nvar faFileWord = {\n  prefix: 'fas',\n  iconName: 'file-word',\n  icon: [384, 512, [], \"f1c2\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm57.1 120H305c7.7 0 13.4 7.1 11.7 14.7l-38 168c-1.2 5.5-6.1 9.3-11.7 9.3h-38c-5.5 0-10.3-3.8-11.6-9.1-25.8-103.5-20.8-81.2-25.6-110.5h-.5c-1.1 14.3-2.4 17.4-25.6 110.5-1.3 5.3-6.1 9.1-11.6 9.1H117c-5.6 0-10.5-3.9-11.7-9.4l-37.8-168c-1.7-7.5 4-14.6 11.7-14.6h24.5c5.7 0 10.7 4 11.8 9.7 15.6 78 20.1 109.5 21 122.2 1.6-10.2 7.3-32.7 29.4-122.7 1.3-5.4 6.1-9.1 11.7-9.1h29.1c5.6 0 10.4 3.8 11.7 9.2 24 100.4 28.8 124 29.6 129.4-.2-11.2-2.6-17.8 21.6-129.2 1-5.6 5.9-9.5 11.5-9.5zM384 121.9v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z\"]\n};\nvar faFill = {\n  prefix: 'fas',\n  iconName: 'fill',\n  icon: [512, 512, [], \"f575\", \"M502.63 217.06L294.94 9.37C288.69 3.12 280.5 0 272.31 0s-16.38 3.12-22.62 9.37l-81.58 81.58L81.93 4.77c-6.24-6.25-16.38-6.25-22.62 0L36.69 27.38c-6.24 6.25-6.24 16.38 0 22.63l86.19 86.18-94.76 94.76c-37.49 37.49-37.49 98.26 0 135.75l117.19 117.19c18.75 18.74 43.31 28.12 67.87 28.12 24.57 0 49.13-9.37 67.88-28.12l221.57-221.57c12.49-12.5 12.49-32.76 0-45.26zm-116.22 70.97H65.93c1.36-3.84 3.57-7.98 7.43-11.83l13.15-13.15 81.61-81.61 58.61 58.6c12.49 12.49 32.75 12.49 45.24 0 12.49-12.49 12.49-32.75 0-45.24l-58.61-58.6 58.95-58.95 162.45 162.44-48.35 48.34z\"]\n};\nvar faFillDrip = {\n  prefix: 'fas',\n  iconName: 'fill-drip',\n  icon: [576, 512, [], \"f576\", \"M512 320s-64 92.65-64 128c0 35.35 28.66 64 64 64s64-28.65 64-64-64-128-64-128zm-9.37-102.94L294.94 9.37C288.69 3.12 280.5 0 272.31 0s-16.38 3.12-22.62 9.37l-81.58 81.58L81.93 4.76c-6.25-6.25-16.38-6.25-22.62 0L36.69 27.38c-6.24 6.25-6.24 16.38 0 22.62l86.19 86.18-94.76 94.76c-37.49 37.48-37.49 98.26 0 135.75l117.19 117.19c18.74 18.74 43.31 28.12 67.87 28.12 24.57 0 49.13-9.37 67.87-28.12l221.57-221.57c12.5-12.5 12.5-32.75.01-45.25zm-116.22 70.97H65.93c1.36-3.84 3.57-7.98 7.43-11.83l13.15-13.15 81.61-81.61 58.6 58.6c12.49 12.49 32.75 12.49 45.24 0s12.49-32.75 0-45.24l-58.6-58.6 58.95-58.95 162.44 162.44-48.34 48.34z\"]\n};\nvar faFilm = {\n  prefix: 'fas',\n  iconName: 'film',\n  icon: [512, 512, [], \"f008\", \"M488 64h-8v20c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12V64H96v20c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12V64h-8C10.7 64 0 74.7 0 88v336c0 13.3 10.7 24 24 24h8v-20c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v20h320v-20c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v20h8c13.3 0 24-10.7 24-24V88c0-13.3-10.7-24-24-24zM96 372c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm272 208c0 6.6-5.4 12-12 12H156c-6.6 0-12-5.4-12-12v-96c0-6.6 5.4-12 12-12h200c6.6 0 12 5.4 12 12v96zm0-168c0 6.6-5.4 12-12 12H156c-6.6 0-12-5.4-12-12v-96c0-6.6 5.4-12 12-12h200c6.6 0 12 5.4 12 12v96zm112 152c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40z\"]\n};\nvar faFilter = {\n  prefix: 'fas',\n  iconName: 'filter',\n  icon: [512, 512, [], \"f0b0\", \"M487.976 0H24.028C2.71 0-8.047 25.866 7.058 40.971L192 225.941V432c0 7.831 3.821 15.17 10.237 19.662l80 55.98C298.02 518.69 320 507.493 320 487.98V225.941l184.947-184.97C520.021 25.896 509.338 0 487.976 0z\"]\n};\nvar faFingerprint = {\n  prefix: 'fas',\n  iconName: 'fingerprint',\n  icon: [512, 512, [], \"f577\", \"M256.12 245.96c-13.25 0-24 10.74-24 24 1.14 72.25-8.14 141.9-27.7 211.55-2.73 9.72 2.15 30.49 23.12 30.49 10.48 0 20.11-6.92 23.09-17.52 13.53-47.91 31.04-125.41 29.48-224.52.01-13.25-10.73-24-23.99-24zm-.86-81.73C194 164.16 151.25 211.3 152.1 265.32c.75 47.94-3.75 95.91-13.37 142.55-2.69 12.98 5.67 25.69 18.64 28.36 13.05 2.67 25.67-5.66 28.36-18.64 10.34-50.09 15.17-101.58 14.37-153.02-.41-25.95 19.92-52.49 54.45-52.34 31.31.47 57.15 25.34 57.62 55.47.77 48.05-2.81 96.33-10.61 143.55-2.17 13.06 6.69 25.42 19.76 27.58 19.97 3.33 26.81-15.1 27.58-19.77 8.28-50.03 12.06-101.21 11.27-152.11-.88-55.8-47.94-101.88-104.91-102.72zm-110.69-19.78c-10.3-8.34-25.37-6.8-33.76 3.48-25.62 31.5-39.39 71.28-38.75 112 .59 37.58-2.47 75.27-9.11 112.05-2.34 13.05 6.31 25.53 19.36 27.89 20.11 3.5 27.07-14.81 27.89-19.36 7.19-39.84 10.5-80.66 9.86-121.33-.47-29.88 9.2-57.88 28-80.97 8.35-10.28 6.79-25.39-3.49-33.76zm109.47-62.33c-15.41-.41-30.87 1.44-45.78 4.97-12.89 3.06-20.87 15.98-17.83 28.89 3.06 12.89 16 20.83 28.89 17.83 11.05-2.61 22.47-3.77 34-3.69 75.43 1.13 137.73 61.5 138.88 134.58.59 37.88-1.28 76.11-5.58 113.63-1.5 13.17 7.95 25.08 21.11 26.58 16.72 1.95 25.51-11.88 26.58-21.11a929.06 929.06 0 0 0 5.89-119.85c-1.56-98.75-85.07-180.33-186.16-181.83zm252.07 121.45c-2.86-12.92-15.51-21.2-28.61-18.27-12.94 2.86-21.12 15.66-18.26 28.61 4.71 21.41 4.91 37.41 4.7 61.6-.11 13.27 10.55 24.09 23.8 24.2h.2c13.17 0 23.89-10.61 24-23.8.18-22.18.4-44.11-5.83-72.34zm-40.12-90.72C417.29 43.46 337.6 1.29 252.81.02 183.02-.82 118.47 24.91 70.46 72.94 24.09 119.37-.9 181.04.14 246.65l-.12 21.47c-.39 13.25 10.03 24.31 23.28 24.69.23.02.48.02.72.02 12.92 0 23.59-10.3 23.97-23.3l.16-23.64c-.83-52.5 19.16-101.86 56.28-139 38.76-38.8 91.34-59.67 147.68-58.86 69.45 1.03 134.73 35.56 174.62 92.39 7.61 10.86 22.56 13.45 33.42 5.86 10.84-7.62 13.46-22.59 5.84-33.43z\"]\n};\nvar faFire = {\n  prefix: 'fas',\n  iconName: 'fire',\n  icon: [384, 512, [], \"f06d\", \"M216 23.86c0-23.8-30.65-32.77-44.15-13.04C48 191.85 224 200 224 288c0 35.63-29.11 64.46-64.85 63.99-35.17-.45-63.15-29.77-63.15-64.94v-85.51c0-21.7-26.47-32.23-41.43-16.5C27.8 213.16 0 261.33 0 320c0 105.87 86.13 192 192 192s192-86.13 192-192c0-170.29-168-193-168-296.14z\"]\n};\nvar faFireAlt = {\n  prefix: 'fas',\n  iconName: 'fire-alt',\n  icon: [448, 512, [], \"f7e4\", \"M323.56 51.2c-20.8 19.3-39.58 39.59-56.22 59.97C240.08 73.62 206.28 35.53 168 0 69.74 91.17 0 209.96 0 281.6 0 408.85 100.29 512 224 512s224-103.15 224-230.4c0-53.27-51.98-163.14-124.44-230.4zm-19.47 340.65C282.43 407.01 255.72 416 226.86 416 154.71 416 96 368.26 96 290.75c0-38.61 24.31-72.63 72.79-130.75 6.93 7.98 98.83 125.34 98.83 125.34l58.63-66.88c4.14 6.85 7.91 13.55 11.27 19.97 27.35 52.19 15.81 118.97-33.43 153.42z\"]\n};\nvar faFireExtinguisher = {\n  prefix: 'fas',\n  iconName: 'fire-extinguisher',\n  icon: [448, 512, [], \"f134\", \"M434.027 26.329l-168 28C254.693 56.218 256 67.8 256 72h-58.332C208.353 36.108 181.446 0 144 0c-39.435 0-66.368 39.676-52.228 76.203-52.039 13.051-75.381 54.213-90.049 90.884-4.923 12.307 1.063 26.274 13.37 31.197 12.317 4.926 26.279-1.075 31.196-13.37C75.058 112.99 106.964 120 168 120v27.076c-41.543 10.862-72 49.235-72 94.129V488c0 13.255 10.745 24 24 24h144c13.255 0 24-10.745 24-24V240c0-44.731-30.596-82.312-72-92.97V120h40c0 2.974-1.703 15.716 10.027 17.671l168 28C441.342 166.89 448 161.25 448 153.834V38.166c0-7.416-6.658-13.056-13.973-11.837zM144 72c-8.822 0-16-7.178-16-16s7.178-16 16-16 16 7.178 16 16-7.178 16-16 16z\"]\n};\nvar faFirstAid = {\n  prefix: 'fas',\n  iconName: 'first-aid',\n  icon: [576, 512, [], \"f479\", \"M0 80v352c0 26.5 21.5 48 48 48h48V32H48C21.5 32 0 53.5 0 80zm128 400h320V32H128v448zm64-248c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48zM528 32h-48v448h48c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48z\"]\n};\nvar faFish = {\n  prefix: 'fas',\n  iconName: 'fish',\n  icon: [576, 512, [], \"f578\", \"M327.1 96c-89.97 0-168.54 54.77-212.27 101.63L27.5 131.58c-12.13-9.18-30.24.6-27.14 14.66L24.54 256 .35 365.77c-3.1 14.06 15.01 23.83 27.14 14.66l87.33-66.05C158.55 361.23 237.13 416 327.1 416 464.56 416 576 288 576 256S464.56 96 327.1 96zm87.43 184c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24 13.26 0 24 10.74 24 24 0 13.25-10.75 24-24 24z\"]\n};\nvar faFistRaised = {\n  prefix: 'fas',\n  iconName: 'fist-raised',\n  icon: [384, 512, [], \"f6de\", \"M255.98 160V16c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v146.93c5.02-1.78 10.34-2.93 15.97-2.93h48.03zm128 95.99c-.01-35.34-28.66-63.99-63.99-63.99H207.85c-8.78 0-15.9 7.07-15.9 15.85v.56c0 26.27 21.3 47.59 47.57 47.59h35.26c9.68 0 13.2 3.58 13.2 8v16.2c0 4.29-3.59 7.78-7.88 8-44.52 2.28-64.16 24.71-96.05 72.55l-6.31 9.47a7.994 7.994 0 0 1-11.09 2.22l-13.31-8.88a7.994 7.994 0 0 1-2.22-11.09l6.31-9.47c15.73-23.6 30.2-43.26 47.31-58.08-17.27-5.51-31.4-18.12-38.87-34.45-6.59 3.41-13.96 5.52-21.87 5.52h-32c-12.34 0-23.49-4.81-32-12.48C71.48 251.19 60.33 256 48 256H16c-5.64 0-10.97-1.15-16-2.95v77.93c0 33.95 13.48 66.5 37.49 90.51L63.99 448v64h255.98v-63.96l35.91-35.92A96.035 96.035 0 0 0 384 344.21l-.02-88.22zm-32.01-90.09V48c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v112h32c11.28 0 21.94 2.31 32 5.9zM16 224h32c8.84 0 16-7.16 16-16V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v128c0 8.84 7.16 16 16 16zm95.99 0h32c8.84 0 16-7.16 16-16V48c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v160c0 8.84 7.16 16 16 16z\"]\n};\nvar faFlag = {\n  prefix: 'fas',\n  iconName: 'flag',\n  icon: [512, 512, [], \"f024\", \"M349.565 98.783C295.978 98.783 251.721 64 184.348 64c-24.955 0-47.309 4.384-68.045 12.013a55.947 55.947 0 0 0 3.586-23.562C118.117 24.015 94.806 1.206 66.338.048 34.345-1.254 8 24.296 8 56c0 19.026 9.497 35.825 24 45.945V488c0 13.255 10.745 24 24 24h16c13.255 0 24-10.745 24-24v-94.4c28.311-12.064 63.582-22.122 114.435-22.122 53.588 0 97.844 34.783 165.217 34.783 48.169 0 86.667-16.294 122.505-40.858C506.84 359.452 512 349.571 512 339.045v-243.1c0-23.393-24.269-38.87-45.485-29.016-34.338 15.948-76.454 31.854-116.95 31.854z\"]\n};\nvar faFlagCheckered = {\n  prefix: 'fas',\n  iconName: 'flag-checkered',\n  icon: [512, 512, [], \"f11e\", \"M243.2 189.9V258c26.1 5.9 49.3 15.6 73.6 22.3v-68.2c-26-5.8-49.4-15.5-73.6-22.2zm223.3-123c-34.3 15.9-76.5 31.9-117 31.9C296 98.8 251.7 64 184.3 64c-25 0-47.3 4.4-68 12 2.8-7.3 4.1-15.2 3.6-23.6C118.1 24 94.8 1.2 66.3 0 34.3-1.3 8 24.3 8 56c0 19 9.5 35.8 24 45.9V488c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24v-94.4c28.3-12.1 63.6-22.1 114.4-22.1 53.6 0 97.8 34.8 165.2 34.8 48.2 0 86.7-16.3 122.5-40.9 8.7-6 13.8-15.8 13.8-26.4V95.9c.1-23.3-24.2-38.8-45.4-29zM169.6 325.5c-25.8 2.7-50 8.2-73.6 16.6v-70.5c26.2-9.3 47.5-15 73.6-17.4zM464 191c-23.6 9.8-46.3 19.5-73.6 23.9V286c24.8-3.4 51.4-11.8 73.6-26v70.5c-25.1 16.1-48.5 24.7-73.6 27.1V286c-27 3.7-47.9 1.5-73.6-5.6v67.4c-23.9-7.4-47.3-16.7-73.6-21.3V258c-19.7-4.4-40.8-6.8-73.6-3.8v-70c-22.4 3.1-44.6 10.2-73.6 20.9v-70.5c33.2-12.2 50.1-19.8 73.6-22v71.6c27-3.7 48.4-1.3 73.6 5.7v-67.4c23.7 7.4 47.2 16.7 73.6 21.3v68.4c23.7 5.3 47.6 6.9 73.6 2.7V143c27-4.8 52.3-13.6 73.6-22.5z\"]\n};\nvar faFlagUsa = {\n  prefix: 'fas',\n  iconName: 'flag-usa',\n  icon: [512, 512, [], \"f74d\", \"M32 0C14.3 0 0 14.3 0 32v464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V32C64 14.3 49.7 0 32 0zm267.9 303.6c-57.2-15.1-111.7-28.8-203.9 11.1V384c185.7-92.2 221.7 53.3 397.5-23.1 11.4-5 18.5-16.5 18.5-28.8v-36c-43.6 17.3-80.2 24.1-112.1 24.1-37.4-.1-68.9-8.4-100-16.6zm0-96c-57.2-15.1-111.7-28.8-203.9 11.1v61.5c94.8-37.6 154.6-22.7 212.1-7.6 57.2 15.1 111.7 28.8 203.9-11.1V200c-43.6 17.3-80.2 24.1-112.1 24.1-37.4 0-68.9-8.3-100-16.5zm9.5-125.9c51.8 15.6 97.4 29 202.6-20.1V30.8c0-25.1-26.8-38.1-49.4-26.6C291.3 91.5 305.4-62.2 96 32.4v151.9c94.8-37.5 154.6-22.7 212.1-7.6 57.2 15 111.7 28.7 203.9-11.1V96.7c-53.6 23.5-93.3 31.4-126.1 31.4s-59-7.8-85.7-15.9c-4-1.2-8.1-2.4-12.1-3.5V75.5c7.2 2 14.3 4.1 21.3 6.2zM160 128.1c-8.8 0-16-7.1-16-16 0-8.8 7.2-16 16-16s16 7.1 16 16-7.2 16-16 16zm0-55.8c-8.8 0-16-7.1-16-16 0-8.8 7.2-16 16-16s16 7.1 16 16c0 8.8-7.2 16-16 16zm64 47.9c-8.8 0-16-7.1-16-16 0-8.8 7.2-16 16-16s16 7.1 16 16c0 8.8-7.2 16-16 16zm0-55.9c-8.8 0-16-7.1-16-16 0-8.8 7.2-16 16-16s16 7.1 16 16c0 8.8-7.2 16-16 16z\"]\n};\nvar faFlask = {\n  prefix: 'fas',\n  iconName: 'flask',\n  icon: [448, 512, [], \"f0c3\", \"M437.2 403.5L320 215V64h8c13.3 0 24-10.7 24-24V24c0-13.3-10.7-24-24-24H120c-13.3 0-24 10.7-24 24v16c0 13.3 10.7 24 24 24h8v151L10.8 403.5C-18.5 450.6 15.3 512 70.9 512h306.2c55.7 0 89.4-61.5 60.1-108.5zM137.9 320l48.2-77.6c3.7-5.2 5.8-11.6 5.8-18.4V64h64v160c0 6.9 2.2 13.2 5.8 18.4l48.2 77.6h-172z\"]\n};\nvar faFlushed = {\n  prefix: 'fas',\n  iconName: 'flushed',\n  icon: [496, 512, [], \"f579\", \"M344 200c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm-192 0c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM80 224c0-39.8 32.2-72 72-72s72 32.2 72 72-32.2 72-72 72-72-32.2-72-72zm232 176H184c-21.2 0-21.2-32 0-32h128c21.2 0 21.2 32 0 32zm32-104c-39.8 0-72-32.2-72-72s32.2-72 72-72 72 32.2 72 72-32.2 72-72 72z\"]\n};\nvar faFolder = {\n  prefix: 'fas',\n  iconName: 'folder',\n  icon: [512, 512, [], \"f07b\", \"M464 128H272l-64-64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48z\"]\n};\nvar faFolderMinus = {\n  prefix: 'fas',\n  iconName: 'folder-minus',\n  icon: [512, 512, [], \"f65d\", \"M464 128H272l-64-64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48zm-96 168c0 8.84-7.16 16-16 16H160c-8.84 0-16-7.16-16-16v-16c0-8.84 7.16-16 16-16h192c8.84 0 16 7.16 16 16v16z\"]\n};\nvar faFolderOpen = {\n  prefix: 'fas',\n  iconName: 'folder-open',\n  icon: [576, 512, [], \"f07c\", \"M572.694 292.093L500.27 416.248A63.997 63.997 0 0 1 444.989 448H45.025c-18.523 0-30.064-20.093-20.731-36.093l72.424-124.155A64 64 0 0 1 152 256h399.964c18.523 0 30.064 20.093 20.73 36.093zM152 224h328v-48c0-26.51-21.49-48-48-48H272l-64-64H48C21.49 64 0 85.49 0 112v278.046l69.077-118.418C86.214 242.25 117.989 224 152 224z\"]\n};\nvar faFolderPlus = {\n  prefix: 'fas',\n  iconName: 'folder-plus',\n  icon: [512, 512, [], \"f65e\", \"M464,128H272L208,64H48A48,48,0,0,0,0,112V400a48,48,0,0,0,48,48H464a48,48,0,0,0,48-48V176A48,48,0,0,0,464,128ZM359.5,296a16,16,0,0,1-16,16h-64v64a16,16,0,0,1-16,16h-16a16,16,0,0,1-16-16V312h-64a16,16,0,0,1-16-16V280a16,16,0,0,1,16-16h64V200a16,16,0,0,1,16-16h16a16,16,0,0,1,16,16v64h64a16,16,0,0,1,16,16Z\"]\n};\nvar faFont = {\n  prefix: 'fas',\n  iconName: 'font',\n  icon: [448, 512, [], \"f031\", \"M432 416h-23.41L277.88 53.69A32 32 0 0 0 247.58 32h-47.16a32 32 0 0 0-30.3 21.69L39.41 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-19.58l23.3-64h152.56l23.3 64H304a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM176.85 272L224 142.51 271.15 272z\"]\n};\nvar faFontAwesomeLogoFull = {\n  prefix: 'fas',\n  iconName: 'font-awesome-logo-full',\n  icon: [3992, 512, [\"Font Awesome\"], \"f4e6\", \"M454.6 0H57.4C25.9 0 0 25.9 0 57.4v397.3C0 486.1 25.9 512 57.4 512h397.3c31.4 0 57.4-25.9 57.4-57.4V57.4C512 25.9 486.1 0 454.6 0zm-58.9 324.9c0 4.8-4.1 6.9-8.9 8.9-19.2 8.1-39.7 15.7-61.5 15.7-40.5 0-68.7-44.8-163.2 2.5v51.8c0 30.3-45.7 30.2-45.7 0v-250c-9-7-15-17.9-15-30.3 0-21 17.1-38.2 38.2-38.2 21 0 38.2 17.1 38.2 38.2 0 12.2-5.8 23.2-14.9 30.2v21c37.1-12 65.5-34.4 146.1-3.4 26.6 11.4 68.7-15.7 76.5-15.7 5.5 0 10.3 4.1 10.3 8.9v160.4zm432.9-174.2h-137v70.1H825c39.8 0 40.4 62.2 0 62.2H691.6v105.6c0 45.5-70.7 46.4-70.7 0V128.3c0-22 18-39.8 39.8-39.8h167.8c39.6 0 40.5 62.2.1 62.2zm191.1 23.4c-169.3 0-169.1 252.4 0 252.4 169.9 0 169.9-252.4 0-252.4zm0 196.1c-81.6 0-82.1-139.8 0-139.8 82.5 0 82.4 139.8 0 139.8zm372.4 53.4c-17.5 0-31.4-13.9-31.4-31.4v-117c0-62.4-72.6-52.5-99.1-16.4v133.4c0 41.5-63.3 41.8-63.3 0V208c0-40 63.1-41.6 63.1 0v3.4c43.3-51.6 162.4-60.4 162.4 39.3v141.5c.3 30.4-31.5 31.4-31.7 31.4zm179.7 2.9c-44.3 0-68.3-22.9-68.3-65.8V235.2H1488c-35.6 0-36.7-55.3 0-55.3h15.5v-37.3c0-41.3 63.8-42.1 63.8 0v37.5h24.9c35.4 0 35.7 55.3 0 55.3h-24.9v108.5c0 29.6 26.1 26.3 27.4 26.3 31.4 0 52.6 56.3-22.9 56.3zM1992 123c-19.5-50.2-95.5-50-114.5 0-107.3 275.7-99.5 252.7-99.5 262.8 0 42.8 58.3 51.2 72.1 14.4l13.5-35.9H2006l13 35.9c14.2 37.7 72.1 27.2 72.1-14.4 0-10.1 5.3 6.8-99.1-262.8zm-108.9 179.1l51.7-142.9 51.8 142.9h-103.5zm591.3-85.6l-53.7 176.3c-12.4 41.2-72 41-84 0l-42.3-135.9-42.3 135.9c-12.4 40.9-72 41.2-84.5 0l-54.2-176.3c-12.5-39.4 49.8-56.1 60.2-16.9L2213 342l45.3-139.5c10.9-32.7 59.6-34.7 71.2 0l45.3 139.5 39.3-142.4c10.3-38.3 72.6-23.8 60.3 16.9zm275.4 75.1c0-42.4-33.9-117.5-119.5-117.5-73.2 0-124.4 56.3-124.4 126 0 77.2 55.3 126.4 128.5 126.4 31.7 0 93-11.5 93-39.8 0-18.3-21.1-31.5-39.3-22.4-49.4 26.2-109 8.4-115.9-43.8h148.3c16.3 0 29.3-13.4 29.3-28.9zM2571 277.7c9.5-73.4 113.9-68.6 118.6 0H2571zm316.7 148.8c-31.4 0-81.6-10.5-96.6-31.9-12.4-17 2.5-39.8 21.8-39.8 16.3 0 36.8 22.9 77.7 22.9 27.4 0 40.4-11 40.4-25.8 0-39.8-142.9-7.4-142.9-102 0-40.4 35.3-75.7 98.6-75.7 31.4 0 74.1 9.9 87.6 29.4 10.8 14.8-1.4 36.2-20.9 36.2-15.1 0-26.7-17.3-66.2-17.3-22.9 0-37.8 10.5-37.8 23.8 0 35.9 142.4 6 142.4 103.1-.1 43.7-37.4 77.1-104.1 77.1zm266.8-252.4c-169.3 0-169.1 252.4 0 252.4 170.1 0 169.6-252.4 0-252.4zm0 196.1c-81.8 0-82-139.8 0-139.8 82.5 0 82.4 139.8 0 139.8zm476.9 22V268.7c0-53.8-61.4-45.8-85.7-10.5v134c0 41.3-63.8 42.1-63.8 0V268.7c0-52.1-59.5-47.4-85.7-10.1v133.6c0 41.5-63.3 41.8-63.3 0V208c0-40 63.1-41.6 63.1 0v3.4c9.9-14.4 41.8-37.3 78.6-37.3 35.3 0 57.7 16.4 66.7 43.8 13.9-21.8 45.8-43.8 82.6-43.8 44.3 0 70.7 23.4 70.7 72.7v145.3c.5 17.3-13.5 31.4-31.9 31.4 3.5.1-31.3 1.1-31.3-31.3zM3992 291.6c0-42.4-32.4-117.5-117.9-117.5-73.2 0-127.5 56.3-127.5 126 0 77.2 58.3 126.4 131.6 126.4 31.7 0 91.5-11.5 91.5-39.8 0-18.3-21.1-31.5-39.3-22.4-49.4 26.2-110.5 8.4-117.5-43.8h149.8c16.3 0 29.1-13.4 29.3-28.9zm-180.5-13.9c9.7-74.4 115.9-68.3 120.1 0h-120.1z\"]\n};\nvar faFootballBall = {\n  prefix: 'fas',\n  iconName: 'football-ball',\n  icon: [496, 512, [], \"f44e\", \"M481.5 60.3c-4.8-18.2-19.1-32.5-37.3-37.4C420.3 16.5 383 8.9 339.4 8L496 164.8c-.8-43.5-8.2-80.6-14.5-104.5zm-467 391.4c4.8 18.2 19.1 32.5 37.3 37.4 23.9 6.4 61.2 14 104.8 14.9L0 347.2c.8 43.5 8.2 80.6 14.5 104.5zM4.2 283.4L220.4 500c132.5-19.4 248.8-118.7 271.5-271.4L275.6 12C143.1 31.4 26.8 130.7 4.2 283.4zm317.3-123.6c3.1-3.1 8.2-3.1 11.3 0l11.3 11.3c3.1 3.1 3.1 8.2 0 11.3l-28.3 28.3 28.3 28.3c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-28.3-28.3-22.6 22.7 28.3 28.3c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0L248 278.6l-22.6 22.6 28.3 28.3c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-28.3-28.3-28.3 28.3c-3.1 3.1-8.2 3.1-11.3 0l-11.3-11.3c-3.1-3.1-3.1-8.2 0-11.3l28.3-28.3-28.3-28.2c-3.1-3.1-3.1-8.2 0-11.3l11.3-11.3c3.1-3.1 8.2-3.1 11.3 0l28.3 28.3 22.6-22.6-28.3-28.3c-3.1-3.1-3.1-8.2 0-11.3l11.3-11.3c3.1-3.1 8.2-3.1 11.3 0l28.3 28.3 22.6-22.6-28.3-28.3c-3.1-3.1-3.1-8.2 0-11.3l11.3-11.3c3.1-3.1 8.2-3.1 11.3 0l28.3 28.3 28.3-28.5z\"]\n};\nvar faForward = {\n  prefix: 'fas',\n  iconName: 'forward',\n  icon: [512, 512, [], \"f04e\", \"M500.5 231.4l-192-160C287.9 54.3 256 68.6 256 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2zm-256 0l-192-160C31.9 54.3 0 68.6 0 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2z\"]\n};\nvar faFrog = {\n  prefix: 'fas',\n  iconName: 'frog',\n  icon: [576, 512, [], \"f52e\", \"M446.53 97.43C439.67 60.23 407.19 32 368 32c-39.23 0-71.72 28.29-78.54 65.54C126.75 112.96-.5 250.12 0 416.98.11 451.9 29.08 480 64 480h304c8.84 0 16-7.16 16-16 0-17.67-14.33-32-32-32h-79.49l35.8-48.33c24.14-36.23 10.35-88.28-33.71-106.6-23.89-9.93-51.55-4.65-72.24 10.88l-32.76 24.59c-7.06 5.31-17.09 3.91-22.41-3.19-5.3-7.08-3.88-17.11 3.19-22.41l34.78-26.09c36.84-27.66 88.28-27.62 125.13 0 10.87 8.15 45.87 39.06 40.8 93.21L469.62 480H560c8.84 0 16-7.16 16-16 0-17.67-14.33-32-32-32h-53.63l-98.52-104.68 154.44-86.65A58.16 58.16 0 0 0 576 189.94c0-21.4-11.72-40.95-30.48-51.23-40.56-22.22-98.99-41.28-98.99-41.28zM368 136c-13.26 0-24-10.75-24-24 0-13.26 10.74-24 24-24 13.25 0 24 10.74 24 24 0 13.25-10.75 24-24 24z\"]\n};\nvar faFrown = {\n  prefix: 'fas',\n  iconName: 'frown',\n  icon: [496, 512, [], \"f119\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm170.2 218.2C315.8 367.4 282.9 352 248 352s-67.8 15.4-90.2 42.2c-13.5 16.3-38.1-4.2-24.6-20.5C161.7 339.6 203.6 320 248 320s86.3 19.6 114.7 53.8c13.6 16.2-11 36.7-24.5 20.4z\"]\n};\nvar faFrownOpen = {\n  prefix: 'fas',\n  iconName: 'frown-open',\n  icon: [496, 512, [], \"f57a\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM136 208c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm187.3 183.3c-31.2-9.6-59.4-15.3-75.3-15.3s-44.1 5.7-75.3 15.3c-11.5 3.5-22.5-6.3-20.5-18.1 7-40 60.1-61.2 95.8-61.2s88.8 21.3 95.8 61.2c2 11.9-9.1 21.6-20.5 18.1zM328 240c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faFunnelDollar = {\n  prefix: 'fas',\n  iconName: 'funnel-dollar',\n  icon: [640, 512, [], \"f662\", \"M433.46 165.94l101.2-111.87C554.61 34.12 540.48 0 512.26 0H31.74C3.52 0-10.61 34.12 9.34 54.07L192 256v155.92c0 12.59 5.93 24.44 16 32l79.99 60c20.86 15.64 48.47 6.97 59.22-13.57C310.8 455.38 288 406.35 288 352c0-89.79 62.05-165.17 145.46-186.06zM480 192c-88.37 0-160 71.63-160 160s71.63 160 160 160 160-71.63 160-160-71.63-160-160-160zm16 239.88V448c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-16.29c-11.29-.58-22.27-4.52-31.37-11.35-3.9-2.93-4.1-8.77-.57-12.14l11.75-11.21c2.77-2.64 6.89-2.76 10.13-.73 3.87 2.42 8.26 3.72 12.82 3.72h28.11c6.5 0 11.8-5.92 11.8-13.19 0-5.95-3.61-11.19-8.77-12.73l-45-13.5c-18.59-5.58-31.58-23.42-31.58-43.39 0-24.52 19.05-44.44 42.67-45.07V256c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16.29c11.29.58 22.27 4.51 31.37 11.35 3.9 2.93 4.1 8.77.57 12.14l-11.75 11.21c-2.77 2.64-6.89 2.76-10.13.73-3.87-2.43-8.26-3.72-12.82-3.72h-28.11c-6.5 0-11.8 5.92-11.8 13.19 0 5.95 3.61 11.19 8.77 12.73l45 13.5c18.59 5.58 31.58 23.42 31.58 43.39 0 24.53-19.04 44.44-42.67 45.07z\"]\n};\nvar faFutbol = {\n  prefix: 'fas',\n  iconName: 'futbol',\n  icon: [512, 512, [], \"f1e3\", \"M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zm-48 0l-.003-.282-26.064 22.741-62.679-58.5 16.454-84.355 34.303 3.072c-24.889-34.216-60.004-60.089-100.709-73.141l13.651 31.939L256 139l-74.953-41.525 13.651-31.939c-40.631 13.028-75.78 38.87-100.709 73.141l34.565-3.073 16.192 84.355-62.678 58.5-26.064-22.741-.003.282c0 43.015 13.497 83.952 38.472 117.991l7.704-33.897 85.138 10.447 36.301 77.826-29.902 17.786c40.202 13.122 84.29 13.148 124.572 0l-29.902-17.786 36.301-77.826 85.138-10.447 7.704 33.897C442.503 339.952 456 299.015 456 256zm-248.102 69.571l-29.894-91.312L256 177.732l77.996 56.527-29.622 91.312h-96.476z\"]\n};\nvar faGamepad = {\n  prefix: 'fas',\n  iconName: 'gamepad',\n  icon: [640, 512, [], \"f11b\", \"M480.07 96H160a160 160 0 1 0 114.24 272h91.52A160 160 0 1 0 480.07 96zM248 268a12 12 0 0 1-12 12h-52v52a12 12 0 0 1-12 12h-24a12 12 0 0 1-12-12v-52H84a12 12 0 0 1-12-12v-24a12 12 0 0 1 12-12h52v-52a12 12 0 0 1 12-12h24a12 12 0 0 1 12 12v52h52a12 12 0 0 1 12 12zm216 76a40 40 0 1 1 40-40 40 40 0 0 1-40 40zm64-96a40 40 0 1 1 40-40 40 40 0 0 1-40 40z\"]\n};\nvar faGasPump = {\n  prefix: 'fas',\n  iconName: 'gas-pump',\n  icon: [512, 512, [], \"f52f\", \"M336 448H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h320c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm157.2-340.7l-81-81c-6.2-6.2-16.4-6.2-22.6 0l-11.3 11.3c-6.2 6.2-6.2 16.4 0 22.6L416 97.9V160c0 28.1 20.9 51.3 48 55.2V376c0 13.2-10.8 24-24 24s-24-10.8-24-24v-32c0-48.6-39.4-88-88-88h-8V64c0-35.3-28.7-64-64-64H96C60.7 0 32 28.7 32 64v352h288V304h8c22.1 0 40 17.9 40 40v27.8c0 37.7 27 72 64.5 75.9 43 4.3 79.5-29.5 79.5-71.7V152.6c0-17-6.8-33.3-18.8-45.3zM256 192H96V64h160v128z\"]\n};\nvar faGavel = {\n  prefix: 'fas',\n  iconName: 'gavel',\n  icon: [512, 512, [], \"f0e3\", \"M504.971 199.362l-22.627-22.627c-9.373-9.373-24.569-9.373-33.941 0l-5.657 5.657L329.608 69.255l5.657-5.657c9.373-9.373 9.373-24.569 0-33.941L312.638 7.029c-9.373-9.373-24.569-9.373-33.941 0L154.246 131.48c-9.373 9.373-9.373 24.569 0 33.941l22.627 22.627c9.373 9.373 24.569 9.373 33.941 0l5.657-5.657 39.598 39.598-81.04 81.04-5.657-5.657c-12.497-12.497-32.758-12.497-45.255 0L9.373 412.118c-12.497 12.497-12.497 32.758 0 45.255l45.255 45.255c12.497 12.497 32.758 12.497 45.255 0l114.745-114.745c12.497-12.497 12.497-32.758 0-45.255l-5.657-5.657 81.04-81.04 39.598 39.598-5.657 5.657c-9.373 9.373-9.373 24.569 0 33.941l22.627 22.627c9.373 9.373 24.569 9.373 33.941 0l124.451-124.451c9.372-9.372 9.372-24.568 0-33.941z\"]\n};\nvar faGem = {\n  prefix: 'fas',\n  iconName: 'gem',\n  icon: [576, 512, [], \"f3a5\", \"M485.5 0L576 160H474.9L405.7 0h79.8zm-128 0l69.2 160H149.3L218.5 0h139zm-267 0h79.8l-69.2 160H0L90.5 0zM0 192h100.7l123 251.7c1.5 3.1-2.7 5.9-5 3.3L0 192zm148.2 0h279.6l-137 318.2c-1 2.4-4.5 2.4-5.5 0L148.2 192zm204.1 251.7l123-251.7H576L357.3 446.9c-2.3 2.7-6.5-.1-5-3.2z\"]\n};\nvar faGenderless = {\n  prefix: 'fas',\n  iconName: 'genderless',\n  icon: [288, 512, [], \"f22d\", \"M144 176c44.1 0 80 35.9 80 80s-35.9 80-80 80-80-35.9-80-80 35.9-80 80-80m0-64C64.5 112 0 176.5 0 256s64.5 144 144 144 144-64.5 144-144-64.5-144-144-144z\"]\n};\nvar faGhost = {\n  prefix: 'fas',\n  iconName: 'ghost',\n  icon: [384, 512, [], \"f6e2\", \"M186.1.09C81.01 3.24 0 94.92 0 200.05v263.92c0 14.26 17.23 21.39 27.31 11.31l24.92-18.53c6.66-4.95 16-3.99 21.51 2.21l42.95 48.35c6.25 6.25 16.38 6.25 22.63 0l40.72-45.85c6.37-7.17 17.56-7.17 23.92 0l40.72 45.85c6.25 6.25 16.38 6.25 22.63 0l42.95-48.35c5.51-6.2 14.85-7.17 21.51-2.21l24.92 18.53c10.08 10.08 27.31 2.94 27.31-11.31V192C384 84 294.83-3.17 186.1.09zM128 224c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm128 0c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faGift = {\n  prefix: 'fas',\n  iconName: 'gift',\n  icon: [512, 512, [], \"f06b\", \"M32 448c0 17.7 14.3 32 32 32h160V320H32v128zm256 32h160c17.7 0 32-14.3 32-32V320H288v160zm192-320h-42.1c6.2-12.1 10.1-25.5 10.1-40 0-48.5-39.5-88-88-88-41.6 0-68.5 21.3-103 68.3-34.5-47-61.4-68.3-103-68.3-48.5 0-88 39.5-88 88 0 14.5 3.8 27.9 10.1 40H32c-17.7 0-32 14.3-32 32v80c0 8.8 7.2 16 16 16h480c8.8 0 16-7.2 16-16v-80c0-17.7-14.3-32-32-32zm-326.1 0c-22.1 0-40-17.9-40-40s17.9-40 40-40c19.9 0 34.6 3.3 86.1 80h-86.1zm206.1 0h-86.1c51.4-76.5 65.7-80 86.1-80 22.1 0 40 17.9 40 40s-17.9 40-40 40z\"]\n};\nvar faGifts = {\n  prefix: 'fas',\n  iconName: 'gifts',\n  icon: [640, 512, [], \"f79c\", \"M240.6 194.1c1.9-30.8 17.3-61.2 44-79.8C279.4 103.5 268.7 96 256 96h-29.4l30.7-22c7.2-5.1 8.9-15.1 3.7-22.3l-9.3-13c-5.1-7.2-15.1-8.9-22.3-3.7l-32 22.9 11.5-30.6c3.1-8.3-1.1-17.5-9.4-20.6l-15-5.6c-8.3-3.1-17.5 1.1-20.6 9.4l-19.9 53-19.9-53.1C121 2.1 111.8-2.1 103.5 1l-15 5.6C80.2 9.7 76 19 79.2 27.2l11.5 30.6L58.6 35c-7.2-5.1-17.2-3.5-22.3 3.7l-9.3 13c-5.1 7.2-3.5 17.2 3.7 22.3l30.7 22H32c-17.7 0-32 14.3-32 32v352c0 17.7 14.3 32 32 32h168.9c-5.5-9.5-8.9-20.3-8.9-32V256c0-29.9 20.8-55 48.6-61.9zM224 480c0 17.7 14.3 32 32 32h160V384H224v96zm224 32h160c17.7 0 32-14.3 32-32v-96H448v128zm160-288h-20.4c2.6-7.6 4.4-15.5 4.4-23.8 0-35.5-27-72.2-72.1-72.2-48.1 0-75.9 47.7-87.9 75.3-12.1-27.6-39.9-75.3-87.9-75.3-45.1 0-72.1 36.7-72.1 72.2 0 8.3 1.7 16.2 4.4 23.8H256c-17.7 0-32 14.3-32 32v96h192V224h15.3l.7-.2.7.2H448v128h192v-96c0-17.7-14.3-32-32-32zm-272 0c-2.7-1.4-5.1-3-7.2-4.8-7.3-6.4-8.8-13.8-8.8-19 0-9.7 6.4-24.2 24.1-24.2 18.7 0 35.6 27.4 44.5 48H336zm199.2-4.8c-2.1 1.8-4.5 3.4-7.2 4.8h-52.6c8.8-20.3 25.8-48 44.5-48 17.7 0 24.1 14.5 24.1 24.2 0 5.2-1.5 12.6-8.8 19z\"]\n};\nvar faGlassCheers = {\n  prefix: 'fas',\n  iconName: 'glass-cheers',\n  icon: [640, 512, [], \"f79f\", \"M639.4 433.6c-8.4-20.4-31.8-30.1-52.2-21.6l-22.1 9.2-38.7-101.9c47.9-35 64.8-100.3 34.5-152.8L474.3 16c-8-13.9-25.1-19.7-40-13.6L320 49.8 205.7 2.4c-14.9-6.2-32-.3-40 13.6L79.1 166.5C48.9 219 65.7 284.3 113.6 319.2L74.9 421.1l-22.1-9.2c-20.4-8.5-43.7 1.2-52.2 21.6-1.7 4.1.2 8.8 4.3 10.5l162.3 67.4c4.1 1.7 8.7-.2 10.4-4.3 8.4-20.4-1.2-43.8-21.6-52.3l-22.1-9.2L173.3 342c4.4.5 8.8 1.3 13.1 1.3 51.7 0 99.4-33.1 113.4-85.3l20.2-75.4 20.2 75.4c14 52.2 61.7 85.3 113.4 85.3 4.3 0 8.7-.8 13.1-1.3L506 445.6l-22.1 9.2c-20.4 8.5-30.1 31.9-21.6 52.3 1.7 4.1 6.4 6 10.4 4.3L635.1 444c4-1.7 6-6.3 4.3-10.4zM275.9 162.1l-112.1-46.5 36.5-63.4 94.5 39.2-18.9 70.7zm88.2 0l-18.9-70.7 94.5-39.2 36.5 63.4-112.1 46.5z\"]\n};\nvar faGlassMartini = {\n  prefix: 'fas',\n  iconName: 'glass-martini',\n  icon: [512, 512, [], \"f000\", \"M502.05 57.6C523.3 36.34 508.25 0 478.2 0H33.8C3.75 0-11.3 36.34 9.95 57.6L224 271.64V464h-56c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h240c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40h-56V271.64L502.05 57.6z\"]\n};\nvar faGlassMartiniAlt = {\n  prefix: 'fas',\n  iconName: 'glass-martini-alt',\n  icon: [512, 512, [], \"f57b\", \"M502.05 57.6C523.3 36.34 508.25 0 478.2 0H33.8C3.75 0-11.3 36.34 9.95 57.6L224 271.64V464h-56c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h240c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40h-56V271.64L502.05 57.6zM443.77 48l-48 48H116.24l-48-48h375.53z\"]\n};\nvar faGlassWhiskey = {\n  prefix: 'fas',\n  iconName: 'glass-whiskey',\n  icon: [512, 512, [], \"f7a0\", \"M480 32H32C12.5 32-2.4 49.2.3 68.5l56 356.5c4.5 31.5 31.5 54.9 63.4 54.9h273c31.8 0 58.9-23.4 63.4-54.9l55.6-356.5C514.4 49.2 499.5 32 480 32zm-37.4 64l-30 192h-313L69.4 96h373.2z\"]\n};\nvar faGlasses = {\n  prefix: 'fas',\n  iconName: 'glasses',\n  icon: [576, 512, [], \"f530\", \"M574.1 280.37L528.75 98.66c-5.91-23.7-21.59-44.05-43-55.81-21.44-11.73-46.97-14.11-70.19-6.33l-15.25 5.08c-8.39 2.79-12.92 11.86-10.12 20.24l5.06 15.18c2.79 8.38 11.85 12.91 20.23 10.12l13.18-4.39c10.87-3.62 23-3.57 33.16 1.73 10.29 5.37 17.57 14.56 20.37 25.82l38.46 153.82c-22.19-6.81-49.79-12.46-81.2-12.46-34.77 0-73.98 7.02-114.85 26.74h-73.18c-40.87-19.74-80.08-26.75-114.86-26.75-31.42 0-59.02 5.65-81.21 12.46l38.46-153.83c2.79-11.25 10.09-20.45 20.38-25.81 10.16-5.3 22.28-5.35 33.15-1.73l13.17 4.39c8.38 2.79 17.44-1.74 20.23-10.12l5.06-15.18c2.8-8.38-1.73-17.45-10.12-20.24l-15.25-5.08c-23.22-7.78-48.75-5.41-70.19 6.33-21.41 11.77-37.09 32.11-43 55.8L1.9 280.37A64.218 64.218 0 0 0 0 295.86v70.25C0 429.01 51.58 480 115.2 480h37.12c60.28 0 110.37-45.94 114.88-105.37l2.93-38.63h35.75l2.93 38.63C313.31 434.06 363.4 480 423.68 480h37.12c63.62 0 115.2-50.99 115.2-113.88v-70.25c0-5.23-.64-10.43-1.9-15.5zm-370.72 89.42c-1.97 25.91-24.4 46.21-51.06 46.21H115.2C86.97 416 64 393.62 64 366.11v-37.54c18.12-6.49 43.42-12.92 72.58-12.92 23.86 0 47.26 4.33 69.93 12.92l-3.13 41.22zM512 366.12c0 27.51-22.97 49.88-51.2 49.88h-37.12c-26.67 0-49.1-20.3-51.06-46.21l-3.13-41.22c22.67-8.59 46.08-12.92 69.95-12.92 29.12 0 54.43 6.44 72.55 12.93v37.54z\"]\n};\nvar faGlobe = {\n  prefix: 'fas',\n  iconName: 'globe',\n  icon: [496, 512, [], \"f0ac\", \"M336.5 160C322 70.7 287.8 8 248 8s-74 62.7-88.5 152h177zM152 256c0 22.2 1.2 43.5 3.3 64h185.3c2.1-20.5 3.3-41.8 3.3-64s-1.2-43.5-3.3-64H155.3c-2.1 20.5-3.3 41.8-3.3 64zm324.7-96c-28.6-67.9-86.5-120.4-158-141.6 24.4 33.8 41.2 84.7 50 141.6h108zM177.2 18.4C105.8 39.6 47.8 92.1 19.3 160h108c8.7-56.9 25.5-107.8 49.9-141.6zM487.4 192H372.7c2.1 21 3.3 42.5 3.3 64s-1.2 43-3.3 64h114.6c5.5-20.5 8.6-41.8 8.6-64s-3.1-43.5-8.5-64zM120 256c0-21.5 1.2-43 3.3-64H8.6C3.2 212.5 0 233.8 0 256s3.2 43.5 8.6 64h114.6c-2-21-3.2-42.5-3.2-64zm39.5 96c14.5 89.3 48.7 152 88.5 152s74-62.7 88.5-152h-177zm159.3 141.6c71.4-21.2 129.4-73.7 158-141.6h-108c-8.8 56.9-25.6 107.8-50 141.6zM19.3 352c28.6 67.9 86.5 120.4 158 141.6-24.4-33.8-41.2-84.7-50-141.6h-108z\"]\n};\nvar faGlobeAfrica = {\n  prefix: 'fas',\n  iconName: 'globe-africa',\n  icon: [496, 512, [], \"f57c\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm160 215.5v6.93c0 5.87-3.32 11.24-8.57 13.86l-15.39 7.7a15.485 15.485 0 0 1-15.53-.97l-18.21-12.14a15.52 15.52 0 0 0-13.5-1.81l-2.65.88c-9.7 3.23-13.66 14.79-7.99 23.3l13.24 19.86c2.87 4.31 7.71 6.9 12.89 6.9h8.21c8.56 0 15.5 6.94 15.5 15.5v11.34c0 3.35-1.09 6.62-3.1 9.3l-18.74 24.98c-1.42 1.9-2.39 4.1-2.83 6.43l-4.3 22.83c-.62 3.29-2.29 6.29-4.76 8.56a159.608 159.608 0 0 0-25 29.16l-13.03 19.55a27.756 27.756 0 0 1-23.09 12.36c-10.51 0-20.12-5.94-24.82-15.34a78.902 78.902 0 0 1-8.33-35.29V367.5c0-8.56-6.94-15.5-15.5-15.5h-25.88c-14.49 0-28.38-5.76-38.63-16a54.659 54.659 0 0 1-16-38.63v-14.06c0-17.19 8.1-33.38 21.85-43.7l27.58-20.69a54.663 54.663 0 0 1 32.78-10.93h.89c8.48 0 16.85 1.97 24.43 5.77l14.72 7.36c3.68 1.84 7.93 2.14 11.83.84l47.31-15.77c6.33-2.11 10.6-8.03 10.6-14.7 0-8.56-6.94-15.5-15.5-15.5h-10.09c-4.11 0-8.05-1.63-10.96-4.54l-6.92-6.92a15.493 15.493 0 0 0-10.96-4.54H199.5c-8.56 0-15.5-6.94-15.5-15.5v-4.4c0-7.11 4.84-13.31 11.74-15.04l14.45-3.61c3.74-.94 7-3.23 9.14-6.44l8.08-12.11c2.87-4.31 7.71-6.9 12.89-6.9h24.21c8.56 0 15.5-6.94 15.5-15.5v-21.7C359.23 71.63 422.86 131.02 441.93 208H423.5c-8.56 0-15.5 6.94-15.5 15.5z\"]\n};\nvar faGlobeAmericas = {\n  prefix: 'fas',\n  iconName: 'globe-americas',\n  icon: [496, 512, [], \"f57d\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm82.29 357.6c-3.9 3.88-7.99 7.95-11.31 11.28-2.99 3-5.1 6.7-6.17 10.71-1.51 5.66-2.73 11.38-4.77 16.87l-17.39 46.85c-13.76 3-28 4.69-42.65 4.69v-27.38c1.69-12.62-7.64-36.26-22.63-51.25-6-6-9.37-14.14-9.37-22.63v-32.01c0-11.64-6.27-22.34-16.46-27.97-14.37-7.95-34.81-19.06-48.81-26.11-11.48-5.78-22.1-13.14-31.65-21.75l-.8-.72a114.792 114.792 0 0 1-18.06-20.74c-9.38-13.77-24.66-36.42-34.59-51.14 20.47-45.5 57.36-82.04 103.2-101.89l24.01 12.01C203.48 89.74 216 82.01 216 70.11v-11.3c7.99-1.29 16.12-2.11 24.39-2.42l28.3 28.3c6.25 6.25 6.25 16.38 0 22.63L264 112l-10.34 10.34c-3.12 3.12-3.12 8.19 0 11.31l4.69 4.69c3.12 3.12 3.12 8.19 0 11.31l-8 8a8.008 8.008 0 0 1-5.66 2.34h-8.99c-2.08 0-4.08.81-5.58 2.27l-9.92 9.65a8.008 8.008 0 0 0-1.58 9.31l15.59 31.19c2.66 5.32-1.21 11.58-7.15 11.58h-5.64c-1.93 0-3.79-.7-5.24-1.96l-9.28-8.06a16.017 16.017 0 0 0-15.55-3.1l-31.17 10.39a11.95 11.95 0 0 0-8.17 11.34c0 4.53 2.56 8.66 6.61 10.69l11.08 5.54c9.41 4.71 19.79 7.16 30.31 7.16s22.59 27.29 32 32h66.75c8.49 0 16.62 3.37 22.63 9.37l13.69 13.69a30.503 30.503 0 0 1 8.93 21.57 46.536 46.536 0 0 1-13.72 32.98zM417 274.25c-5.79-1.45-10.84-5-14.15-9.97l-17.98-26.97a23.97 23.97 0 0 1 0-26.62l19.59-29.38c2.32-3.47 5.5-6.29 9.24-8.15l12.98-6.49C440.2 193.59 448 223.87 448 256c0 8.67-.74 17.16-1.82 25.54L417 274.25z\"]\n};\nvar faGlobeAsia = {\n  prefix: 'fas',\n  iconName: 'globe-asia',\n  icon: [496, 512, [], \"f57e\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm-11.34 240.23c-2.89 4.82-8.1 7.77-13.72 7.77h-.31c-4.24 0-8.31 1.69-11.31 4.69l-5.66 5.66c-3.12 3.12-3.12 8.19 0 11.31l5.66 5.66c3 3 4.69 7.07 4.69 11.31V304c0 8.84-7.16 16-16 16h-6.11c-6.06 0-11.6-3.42-14.31-8.85l-22.62-45.23c-2.44-4.88-8.95-5.94-12.81-2.08l-19.47 19.46c-3 3-7.07 4.69-11.31 4.69H50.81C49.12 277.55 48 266.92 48 256c0-110.28 89.72-200 200-200 21.51 0 42.2 3.51 61.63 9.82l-50.16 38.53c-5.11 3.41-4.63 11.06.86 13.81l10.83 5.41c5.42 2.71 8.84 8.25 8.84 14.31V216c0 4.42-3.58 8-8 8h-3.06c-3.03 0-5.8-1.71-7.15-4.42-1.56-3.12-5.96-3.29-7.76-.3l-17.37 28.95zM408 358.43c0 4.24-1.69 8.31-4.69 11.31l-9.57 9.57c-3 3-7.07 4.69-11.31 4.69h-15.16c-4.24 0-8.31-1.69-11.31-4.69l-13.01-13.01a26.767 26.767 0 0 0-25.42-7.04l-21.27 5.32c-1.27.32-2.57.48-3.88.48h-10.34c-4.24 0-8.31-1.69-11.31-4.69l-11.91-11.91a8.008 8.008 0 0 1-2.34-5.66v-10.2c0-3.27 1.99-6.21 5.03-7.43l39.34-15.74c1.98-.79 3.86-1.82 5.59-3.05l23.71-16.89a7.978 7.978 0 0 1 4.64-1.48h12.09c3.23 0 6.15 1.94 7.39 4.93l5.35 12.85a4 4 0 0 0 3.69 2.46h3.8c1.78 0 3.35-1.18 3.84-2.88l4.2-14.47c.5-1.71 2.06-2.88 3.84-2.88h6.06c2.21 0 4 1.79 4 4v12.93c0 2.12.84 4.16 2.34 5.66l11.91 11.91c3 3 4.69 7.07 4.69 11.31v24.6z\"]\n};\nvar faGlobeEurope = {\n  prefix: 'fas',\n  iconName: 'globe-europe',\n  icon: [496, 512, [], \"f7a2\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm200 248c0 22.5-3.9 44.2-10.8 64.4h-20.3c-4.3 0-8.4-1.7-11.4-4.8l-32-32.6c-4.5-4.6-4.5-12.1.1-16.7l12.5-12.5v-8.7c0-3-1.2-5.9-3.3-8l-9.4-9.4c-2.1-2.1-5-3.3-8-3.3h-16c-6.2 0-11.3-5.1-11.3-11.3 0-3 1.2-5.9 3.3-8l9.4-9.4c2.1-2.1 5-3.3 8-3.3h32c6.2 0 11.3-5.1 11.3-11.3v-9.4c0-6.2-5.1-11.3-11.3-11.3h-36.7c-8.8 0-16 7.2-16 16v4.5c0 6.9-4.4 13-10.9 15.2l-31.6 10.5c-3.3 1.1-5.5 4.1-5.5 7.6v2.2c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8s-3.6-8-8-8H247c-3 0-5.8 1.7-7.2 4.4l-9.4 18.7c-2.7 5.4-8.2 8.8-14.3 8.8H194c-8.8 0-16-7.2-16-16V199c0-4.2 1.7-8.3 4.7-11.3l20.1-20.1c4.6-4.6 7.2-10.9 7.2-17.5 0-3.4 2.2-6.5 5.5-7.6l40-13.3c1.7-.6 3.2-1.5 4.4-2.7l26.8-26.8c2.1-2.1 3.3-5 3.3-8 0-6.2-5.1-11.3-11.3-11.3H258l-16 16v8c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8v-20c0-2.5 1.2-4.9 3.2-6.4l28.9-21.7c1.9-.1 3.8-.3 5.7-.3C358.3 56 448 145.7 448 256zM130.1 149.1c0-3 1.2-5.9 3.3-8l25.4-25.4c2.1-2.1 5-3.3 8-3.3 6.2 0 11.3 5.1 11.3 11.3v16c0 3-1.2 5.9-3.3 8l-9.4 9.4c-2.1 2.1-5 3.3-8 3.3h-16c-6.2 0-11.3-5.1-11.3-11.3zm128 306.4v-7.1c0-8.8-7.2-16-16-16h-20.2c-10.8 0-26.7-5.3-35.4-11.8l-22.2-16.7c-11.5-8.6-18.2-22.1-18.2-36.4v-23.9c0-16 8.4-30.8 22.1-39l42.9-25.7c7.1-4.2 15.2-6.5 23.4-6.5h31.2c10.9 0 21.4 3.9 29.6 10.9l43.2 37.1h18.3c8.5 0 16.6 3.4 22.6 9.4l17.3 17.3c3.4 3.4 8.1 5.3 12.9 5.3H423c-32.4 58.9-93.8 99.5-164.9 103.1z\"]\n};\nvar faGolfBall = {\n  prefix: 'fas',\n  iconName: 'golf-ball',\n  icon: [416, 512, [], \"f450\", \"M96 416h224c0 17.7-14.3 32-32 32h-16c-17.7 0-32 14.3-32 32v20c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-20c0-17.7-14.3-32-32-32h-16c-17.7 0-32-14.3-32-32zm320-208c0 74.2-39 139.2-97.5 176h-221C39 347.2 0 282.2 0 208 0 93.1 93.1 0 208 0s208 93.1 208 208zm-180.1 43.9c18.3 0 33.1-14.8 33.1-33.1 0-14.4-9.3-26.3-22.1-30.9 9.6 26.8-15.6 51.3-41.9 41.9 4.6 12.8 16.5 22.1 30.9 22.1zm49.1 46.9c0-14.4-9.3-26.3-22.1-30.9 9.6 26.8-15.6 51.3-41.9 41.9 4.6 12.8 16.5 22.1 30.9 22.1 18.3 0 33.1-14.9 33.1-33.1zm64-64c0-14.4-9.3-26.3-22.1-30.9 9.6 26.8-15.6 51.3-41.9 41.9 4.6 12.8 16.5 22.1 30.9 22.1 18.3 0 33.1-14.9 33.1-33.1z\"]\n};\nvar faGopuram = {\n  prefix: 'fas',\n  iconName: 'gopuram',\n  icon: [512, 512, [], \"f664\", \"M496 352h-16V240c0-8.8-7.2-16-16-16h-16v-80c0-8.8-7.2-16-16-16h-16V16c0-8.8-7.2-16-16-16s-16 7.2-16 16v16h-64V16c0-8.8-7.2-16-16-16s-16 7.2-16 16v16h-64V16c0-8.8-7.2-16-16-16s-16 7.2-16 16v16h-64V16c0-8.8-7.2-16-16-16S96 7.2 96 16v112H80c-8.8 0-16 7.2-16 16v80H48c-8.8 0-16 7.2-16 16v112H16c-8.8 0-16 7.2-16 16v128c0 8.8 7.2 16 16 16h80V352h32V224h32v-96h32v96h-32v128h-32v160h80v-80c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16v80h80V352h-32V224h-32v-96h32v96h32v128h32v160h80c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16zM232 176c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v48h-48zm56 176h-64v-64c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16z\"]\n};\nvar faGraduationCap = {\n  prefix: 'fas',\n  iconName: 'graduation-cap',\n  icon: [640, 512, [], \"f19d\", \"M622.34 153.2L343.4 67.5c-15.2-4.67-31.6-4.67-46.79 0L17.66 153.2c-23.54 7.23-23.54 38.36 0 45.59l48.63 14.94c-10.67 13.19-17.23 29.28-17.88 46.9C38.78 266.15 32 276.11 32 288c0 10.78 5.68 19.85 13.86 25.65L20.33 428.53C18.11 438.52 25.71 448 35.94 448h56.11c10.24 0 17.84-9.48 15.62-19.47L82.14 313.65C90.32 307.85 96 298.78 96 288c0-11.57-6.47-21.25-15.66-26.87.76-15.02 8.44-28.3 20.69-36.72L296.6 284.5c9.06 2.78 26.44 6.25 46.79 0l278.95-85.7c23.55-7.24 23.55-38.36 0-45.6zM352.79 315.09c-28.53 8.76-52.84 3.92-65.59 0l-145.02-44.55L128 384c0 35.35 85.96 64 192 64s192-28.65 192-64l-14.18-113.47-145.03 44.56z\"]\n};\nvar faGreaterThan = {\n  prefix: 'fas',\n  iconName: 'greater-than',\n  icon: [384, 512, [], \"f531\", \"M365.52 209.85L59.22 67.01c-16.06-7.49-35.15-.54-42.64 15.52L3.01 111.61c-7.49 16.06-.54 35.15 15.52 42.64L236.96 256.1 18.49 357.99C2.47 365.46-4.46 384.5 3.01 400.52l13.52 29C24 445.54 43.04 452.47 59.06 445l306.47-142.91a32.003 32.003 0 0 0 18.48-29v-34.23c-.01-12.45-7.21-23.76-18.49-29.01z\"]\n};\nvar faGreaterThanEqual = {\n  prefix: 'fas',\n  iconName: 'greater-than-equal',\n  icon: [448, 512, [], \"f532\", \"M55.22 107.69l175.56 68.09-175.44 68.05c-18.39 6.03-27.88 24.39-21.2 41l12.09 30.08c6.68 16.61 26.99 25.19 45.38 19.15L393.02 214.2c13.77-4.52 22.98-16.61 22.98-30.17v-15.96c0-13.56-9.21-25.65-22.98-30.17L91.3 17.92c-18.29-6-38.51 2.53-45.15 19.06L34.12 66.9c-6.64 16.53 2.81 34.79 21.1 40.79zM424 400H24c-13.25 0-24 10.74-24 24v48c0 13.25 10.75 24 24 24h400c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24z\"]\n};\nvar faGrimace = {\n  prefix: 'fas',\n  iconName: 'grimace',\n  icon: [496, 512, [], \"f57f\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM144 400h-8c-17.7 0-32-14.3-32-32v-8h40v40zm0-56h-40v-8c0-17.7 14.3-32 32-32h8v40zm-8-136c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm72 192h-48v-40h48v40zm0-56h-48v-40h48v40zm64 56h-48v-40h48v40zm0-56h-48v-40h48v40zm64 56h-48v-40h48v40zm0-56h-48v-40h48v40zm-8-104c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm64 128c0 17.7-14.3 32-32 32h-8v-40h40v8zm0-24h-40v-40h8c17.7 0 32 14.3 32 32v8z\"]\n};\nvar faGrin = {\n  prefix: 'fas',\n  iconName: 'grin',\n  icon: [496, 512, [], \"f580\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm80 256c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.3-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.3-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z\"]\n};\nvar faGrinAlt = {\n  prefix: 'fas',\n  iconName: 'grin-alt',\n  icon: [496, 512, [], \"f581\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm63.7 128.7c7.6-11.4 24.7-11.7 32.7 0 12.4 18.4 15.1 36.9 15.7 55.3-.5 18.4-3.3 36.9-15.7 55.3-7.6 11.4-24.7 11.7-32.7 0-12.4-18.4-15.1-36.9-15.7-55.3.5-18.4 3.3-36.9 15.7-55.3zm-160 0c7.6-11.4 24.7-11.7 32.7 0 12.4 18.4 15.1 36.9 15.7 55.3-.5 18.4-3.3 36.9-15.7 55.3-7.6 11.4-24.7 11.7-32.7 0-12.4-18.4-15.1-36.9-15.7-55.3.5-18.4 3.3-36.9 15.7-55.3zM248 432c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.3-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z\"]\n};\nvar faGrinBeam = {\n  prefix: 'fas',\n  iconName: 'grin-beam',\n  icon: [496, 512, [], \"f582\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 144c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.1 7.3-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm-160 0c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm80 280c-60.6 0-134.5-38.3-143.8-93.3-2-11.9 9.4-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z\"]\n};\nvar faGrinBeamSweat = {\n  prefix: 'fas',\n  iconName: 'grin-beam-sweat',\n  icon: [504, 512, [], \"f583\", \"M456 128c26.5 0 48-21 48-47 0-20-28.5-60.4-41.6-77.8-3.2-4.3-9.6-4.3-12.8 0C436.5 20.6 408 61 408 81c0 26 21.5 47 48 47zm0 32c-44.1 0-80-35.4-80-79 0-4.4.3-14.2 8.1-32.2C345 23.1 298.3 8 248 8 111 8 0 119 0 256s111 248 248 248 248-111 248-248c0-35.1-7.4-68.4-20.5-98.6-6.3 1.5-12.7 2.6-19.5 2.6zm-128-8c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 12-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.1 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm-160 0c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 12-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm80 280c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.3-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.5-3.7 22.6 6.2 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z\"]\n};\nvar faGrinHearts = {\n  prefix: 'fas',\n  iconName: 'grin-hearts',\n  icon: [496, 512, [], \"f584\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM90.4 183.6c6.7-17.6 26.7-26.7 44.9-21.9l7.1 1.9 2-7.1c5-18.1 22.8-30.9 41.5-27.9 21.4 3.4 34.4 24.2 28.8 44.5L195.3 243c-1.2 4.5-5.9 7.2-10.5 6l-70.2-18.2c-20.4-5.4-31.9-27-24.2-47.2zM248 432c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.2-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.6 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3zm133.4-201.3l-70.2 18.2c-4.5 1.2-9.2-1.5-10.5-6L281.3 173c-5.6-20.3 7.4-41.1 28.8-44.5 18.6-3 36.4 9.8 41.5 27.9l2 7.1 7.1-1.9c18.2-4.7 38.2 4.3 44.9 21.9 7.7 20.3-3.8 41.9-24.2 47.2z\"]\n};\nvar faGrinSquint = {\n  prefix: 'fas',\n  iconName: 'grin-squint',\n  icon: [496, 512, [], \"f585\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm33.8 189.7l80-48c11.6-6.9 24 7.7 15.4 18L343.6 208l33.6 40.3c8.7 10.4-3.9 24.8-15.4 18l-80-48c-7.7-4.7-7.7-15.9 0-20.6zm-163-30c-8.6-10.3 3.8-24.9 15.4-18l80 48c7.8 4.7 7.8 15.9 0 20.6l-80 48c-11.5 6.8-24-7.6-15.4-18l33.6-40.3-33.6-40.3zM248 432c-60.6 0-134.5-38.3-143.8-93.3-2-11.9 9.4-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.5-3.7 22.6 6.2 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z\"]\n};\nvar faGrinSquintTears = {\n  prefix: 'fas',\n  iconName: 'grin-squint-tears',\n  icon: [512, 512, [], \"f586\", \"M409.6 111.9c22.6-3.2 73.5-12 88.3-26.8 19.2-19.2 18.9-50.6-.7-70.2S446-5 426.9 14.2c-14.8 14.8-23.5 65.7-26.8 88.3-.8 5.5 3.9 10.2 9.5 9.4zM102.4 400.1c-22.6 3.2-73.5 12-88.3 26.8-19.1 19.1-18.8 50.6.8 70.2s51 19.9 70.2.7c14.8-14.8 23.5-65.7 26.8-88.3.8-5.5-3.9-10.2-9.5-9.4zm311.7-256.5c-33 3.9-48.6-25.1-45.7-45.7 3.4-24 7.4-42.1 11.5-56.5C285.1-13.4 161.8-.5 80.6 80.6-.5 161.7-13.4 285 41.4 379.9c14.4-4.1 32.4-8 56.5-11.5 33.2-3.9 48.6 25.2 45.7 45.7-3.4 24-7.4 42.1-11.5 56.5 94.8 54.8 218.1 41.9 299.3-39.2s94-204.4 39.2-299.3c-14.4 4.1-32.5 8-56.5 11.5zM255.7 106c3.3-13.2 22.4-11.5 23.6 1.8l4.8 52.3 52.3 4.8c13.4 1.2 14.9 20.3 1.8 23.6l-90.5 22.6c-8.9 2.2-16.7-5.9-14.5-14.5l22.5-90.6zm-90.9 230.3L160 284l-52.3-4.8c-13.4-1.2-14.9-20.3-1.8-23.6l90.5-22.6c8.8-2.2 16.7 5.8 14.5 14.5L188.3 338c-3.1 13.2-22.2 11.7-23.5-1.7zm215.7 44.2c-29.3 29.3-75.7 50.4-116.7 50.4-18.9 0-36.6-4.5-51-14.7-9.8-6.9-8.7-21.8 2-27.2 28.3-14.6 63.9-42.4 97.8-76.3s61.7-69.6 76.3-97.8c5.4-10.5 20.2-11.9 27.3-2 32.3 45.3 7.1 124.7-35.7 167.6z\"]\n};\nvar faGrinStars = {\n  prefix: 'fas',\n  iconName: 'grin-stars',\n  icon: [496, 512, [], \"f587\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM94.6 168.9l34.9-5 15.5-31.6c2.9-5.8 11-5.8 13.9 0l15.5 31.6 34.9 5c6.2 1 8.9 8.6 4.3 13.2l-25.4 24.6 6 34.9c1 6.2-5.3 11-11 7.9L152 233.3l-31.3 16.3c-5.7 3.1-12-1.7-11-7.9l6-34.9-25.4-24.6c-4.6-4.7-1.9-12.3 4.3-13.3zM248 432c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.3-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.5-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3zm157.7-249.9l-25.4 24.6 6 34.9c1 6.2-5.3 11-11 7.9L344 233.3l-31.3 16.3c-5.7 3.1-12-1.7-11-7.9l6-34.9-25.4-24.6c-4.5-4.6-1.9-12.2 4.3-13.2l34.9-5 15.5-31.6c2.9-5.8 11-5.8 13.9 0l15.5 31.6 34.9 5c6.3.9 9 8.5 4.4 13.1z\"]\n};\nvar faGrinTears = {\n  prefix: 'fas',\n  iconName: 'grin-tears',\n  icon: [640, 512, [], \"f588\", \"M102.4 256.1c-22.6 3.2-73.5 12-88.3 26.8-19.1 19.1-18.8 50.6.8 70.2s51 19.9 70.2.7c14.8-14.8 23.5-65.7 26.8-88.3.8-5.5-3.9-10.2-9.5-9.4zm523.4 26.8c-14.8-14.8-65.7-23.5-88.3-26.8-5.5-.8-10.3 3.9-9.5 9.5 3.2 22.6 12 73.5 26.8 88.3 19.2 19.2 50.6 18.9 70.2-.7s20-51.2.8-70.3zm-129.4-12.8c-3.8-26.6 19.1-49.5 45.7-45.7 8.9 1.3 16.8 2.7 24.3 4.1C552.7 104.5 447.7 8 320 8S87.3 104.5 73.6 228.5c7.5-1.4 15.4-2.8 24.3-4.1 33.2-3.9 48.6 25.3 45.7 45.7-11.8 82.3-29.9 100.4-35.8 106.4-.9.9-2 1.6-3 2.5 42.7 74.6 123 125 215.2 125s172.5-50.4 215.2-125.1c-1-.9-2.1-1.5-3-2.5-5.9-5.9-24-24-35.8-106.3zM400 152c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 12-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm-160 0c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 12-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm80 280c-60.6 0-134.5-38.3-143.8-93.3-2-11.7 9.2-21.6 20.7-17.9C227.1 330.5 272 336 320 336s92.9-5.5 123.1-15.2c11.4-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z\"]\n};\nvar faGrinTongue = {\n  prefix: 'fas',\n  iconName: 'grin-tongue',\n  icon: [496, 512, [], \"f589\", \"M248 8C111 8 0 119 0 256c0 106.3 67 196.7 161 232-5.6-12.2-9-25.7-9-40v-45.5c-24.7-16.2-43.5-38.1-47.8-63.8-2-11.8 9.3-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.6 22.6 6.1 20.7 17.9-4.3 25.7-23.1 47.6-47.8 63.8V448c0 14.3-3.4 27.8-9 40 94-35.3 161-125.7 161-232C496 119 385 8 248 8zm-80 232c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm160 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm-34.9 134.6c-14.4-6.5-31.1 2.2-34.6 17.6l-1.8 7.8c-2.1 9.2-15.2 9.2-17.3 0l-1.8-7.8c-3.5-15.4-20.2-24.1-34.6-17.6-.9.4.3-.2-18.9 9.4v63c0 35.2 28 64.5 63.1 64.9 35.7.5 64.9-28.4 64.9-64v-64c-19.5-9.6-18.2-8.9-19-9.3z\"]\n};\nvar faGrinTongueSquint = {\n  prefix: 'fas',\n  iconName: 'grin-tongue-squint',\n  icon: [496, 512, [], \"f58a\", \"M293.1 374.6c-14.4-6.5-31.1 2.2-34.6 17.6l-1.8 7.8c-2.1 9.2-15.2 9.2-17.3 0l-1.8-7.8c-3.5-15.4-20.2-24.1-34.6-17.6-.9.4.3-.2-18.9 9.4v63c0 35.2 28 64.5 63.1 64.9 35.7.5 64.9-28.4 64.9-64v-64c-19.5-9.6-18.2-8.9-19-9.3zM248 8C111 8 0 119 0 256c0 106.3 67 196.7 161 232-5.6-12.2-9-25.7-9-40v-45.5c-24.7-16.2-43.5-38.1-47.8-63.8-2-11.8 9.2-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.7 22.6 6.1 20.7 17.9-4.3 25.7-23.1 47.6-47.8 63.8V448c0 14.3-3.4 27.8-9 40 94-35.3 161-125.7 161-232C496 119 385 8 248 8zm-33.8 210.3l-80 48c-11.5 6.8-24-7.6-15.4-18l33.6-40.3-33.6-40.3c-8.6-10.3 3.8-24.9 15.4-18l80 48c7.7 4.7 7.7 15.9 0 20.6zm163 30c8.7 10.4-3.9 24.8-15.4 18l-80-48c-7.8-4.7-7.8-15.9 0-20.6l80-48c11.7-6.9 23.9 7.7 15.4 18L343.6 208l33.6 40.3z\"]\n};\nvar faGrinTongueWink = {\n  prefix: 'fas',\n  iconName: 'grin-tongue-wink',\n  icon: [496, 512, [], \"f58b\", \"M344 184c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zM248 8C111 8 0 119 0 256c0 106.3 67 196.7 161 232-5.6-12.2-9-25.7-9-40v-45.5c-24.7-16.2-43.5-38.1-47.8-63.8-2-11.8 9.3-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.5-3.7 22.6 6.1 20.7 17.9-4.3 25.7-23.1 47.6-47.8 63.8V448c0 14.3-3.4 27.8-9 40 94-35.3 161-125.7 161-232C496 119 385 8 248 8zm-56 225l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L112 233c-8.5 7.4-21.6.3-19.8-10.8 4-25.2 34.2-42.1 59.9-42.1S208 197 212 222.2c1.6 11.1-11.6 18.2-20 10.8zm152 39c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64zm-50.9 102.6c-14.4-6.5-31.1 2.2-34.6 17.6l-1.8 7.8c-2.1 9.2-15.2 9.2-17.3 0l-1.8-7.8c-3.5-15.4-20.2-24.1-34.6-17.6-.9.4.3-.2-18.9 9.4v63c0 35.2 28 64.5 63.1 64.9 35.7.5 64.9-28.4 64.9-64v-64c-19.5-9.6-18.2-8.9-19-9.3z\"]\n};\nvar faGrinWink = {\n  prefix: 'fas',\n  iconName: 'grin-wink',\n  icon: [496, 512, [], \"f58c\", \"M0 256c0 137 111 248 248 248s248-111 248-248S385 8 248 8 0 119 0 256zm200-48c0 17.7-14.3 32-32 32s-32-14.3-32-32 14.3-32 32-32 32 14.3 32 32zm168 25l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L288 233c-8.3 7.4-21.6.4-19.8-10.8 4-25.2 34.2-42.1 59.9-42.1S384 197 388 222.2c1.6 11-11.5 18.2-20 10.8zm-243.1 87.8C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.3-3.7 22.6 6 20.7 17.9-9.2 55-83.2 93.3-143.8 93.3s-134.5-38.3-143.8-93.3c-2-11.9 9.3-21.6 20.7-17.9z\"]\n};\nvar faGripHorizontal = {\n  prefix: 'fas',\n  iconName: 'grip-horizontal',\n  icon: [448, 512, [], \"f58d\", \"M96 288H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm160 0h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm160 0h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zM96 96H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm160 0h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm160 0h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32z\"]\n};\nvar faGripLines = {\n  prefix: 'fas',\n  iconName: 'grip-lines',\n  icon: [512, 512, [], \"f7a4\", \"M496 288H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h480c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm0-128H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h480c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16z\"]\n};\nvar faGripLinesVertical = {\n  prefix: 'fas',\n  iconName: 'grip-lines-vertical',\n  icon: [256, 512, [], \"f7a5\", \"M96 496V16c0-8.8-7.2-16-16-16H48c-8.8 0-16 7.2-16 16v480c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16zm128 0V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v480c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16z\"]\n};\nvar faGripVertical = {\n  prefix: 'fas',\n  iconName: 'grip-vertical',\n  icon: [320, 512, [], \"f58e\", \"M96 32H32C14.33 32 0 46.33 0 64v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32zm0 160H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm0 160H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zM288 32h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32zm0 160h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm0 160h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32z\"]\n};\nvar faGuitar = {\n  prefix: 'fas',\n  iconName: 'guitar',\n  icon: [512, 512, [], \"f7a6\", \"M502.63 39L473 9.37a32 32 0 0 0-45.26 0L381.46 55.7a35.14 35.14 0 0 0-8.53 13.79L360.77 106l-76.26 76.26c-12.16-8.76-25.5-15.74-40.1-19.14-33.45-7.78-67-.88-89.88 22a82.45 82.45 0 0 0-20.24 33.47c-6 18.56-23.21 32.69-42.15 34.46-23.7 2.27-45.73 11.45-62.61 28.44C-16.11 327-7.9 409 47.58 464.45S185 528 230.56 482.52c17-16.88 26.16-38.9 28.45-62.71 1.76-18.85 15.89-36.13 34.43-42.14a82.6 82.6 0 0 0 33.48-20.25c22.87-22.88 29.74-56.36 22-89.75-3.39-14.64-10.37-28-19.16-40.2L406 151.23l36.48-12.16a35.14 35.14 0 0 0 13.79-8.53l46.33-46.32a32 32 0 0 0 .03-45.22zM208 352a48 48 0 1 1 48-48 48 48 0 0 1-48 48z\"]\n};\nvar faHSquare = {\n  prefix: 'fas',\n  iconName: 'h-square',\n  icon: [448, 512, [], \"f0fd\", \"M448 80v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48zm-112 48h-32c-8.837 0-16 7.163-16 16v80H160v-80c0-8.837-7.163-16-16-16h-32c-8.837 0-16 7.163-16 16v224c0 8.837 7.163 16 16 16h32c8.837 0 16-7.163 16-16v-80h128v80c0 8.837 7.163 16 16 16h32c8.837 0 16-7.163 16-16V144c0-8.837-7.163-16-16-16z\"]\n};\nvar faHamburger = {\n  prefix: 'fas',\n  iconName: 'hamburger',\n  icon: [512, 512, [], \"f805\", \"M464 256H48a48 48 0 0 0 0 96h416a48 48 0 0 0 0-96zm16 128H32a16 16 0 0 0-16 16v16a64 64 0 0 0 64 64h352a64 64 0 0 0 64-64v-16a16 16 0 0 0-16-16zM58.64 224h394.72c34.57 0 54.62-43.9 34.82-75.88C448 83.2 359.55 32.1 256 32c-103.54.1-192 51.2-232.18 116.11C4 180.09 24.07 224 58.64 224zM384 112a16 16 0 1 1-16 16 16 16 0 0 1 16-16zM256 80a16 16 0 1 1-16 16 16 16 0 0 1 16-16zm-128 32a16 16 0 1 1-16 16 16 16 0 0 1 16-16z\"]\n};\nvar faHammer = {\n  prefix: 'fas',\n  iconName: 'hammer',\n  icon: [576, 512, [], \"f6e3\", \"M571.31 193.94l-22.63-22.63c-6.25-6.25-16.38-6.25-22.63 0l-11.31 11.31-28.9-28.9c5.63-21.31.36-44.9-16.35-61.61l-45.25-45.25c-62.48-62.48-163.79-62.48-226.28 0l90.51 45.25v18.75c0 16.97 6.74 33.25 18.75 45.25l49.14 49.14c16.71 16.71 40.3 21.98 61.61 16.35l28.9 28.9-11.31 11.31c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l90.51-90.51c6.23-6.24 6.23-16.37-.02-22.62zm-286.72-15.2c-3.7-3.7-6.84-7.79-9.85-11.95L19.64 404.96c-25.57 23.88-26.26 64.19-1.53 88.93s65.05 24.05 88.93-1.53l238.13-255.07c-3.96-2.91-7.9-5.87-11.44-9.41l-49.14-49.14z\"]\n};\nvar faHamsa = {\n  prefix: 'fas',\n  iconName: 'hamsa',\n  icon: [512, 512, [], \"f665\", \"M509.34 307.25C504.28 295.56 492.75 288 480 288h-64V80c0-22-18-40-40-40s-40 18-40 40v134c0 5.52-4.48 10-10 10h-20c-5.52 0-10-4.48-10-10V40c0-22-18-40-40-40s-40 18-40 40v174c0 5.52-4.48 10-10 10h-20c-5.52 0-10-4.48-10-10V80c0-22-18-40-40-40S96 58 96 80v208H32c-12.75 0-24.28 7.56-29.34 19.25a31.966 31.966 0 0 0 5.94 34.58l102.69 110.03C146.97 490.08 199.69 512 256 512s109.03-21.92 144.72-60.14L503.4 341.83a31.966 31.966 0 0 0 5.94-34.58zM256 416c-53.02 0-96-64-96-64s42.98-64 96-64 96 64 96 64-42.98 64-96 64zm0-96c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32z\"]\n};\nvar faHandHolding = {\n  prefix: 'fas',\n  iconName: 'hand-holding',\n  icon: [576, 512, [], \"f4bd\", \"M565.3 328.1c-11.8-10.7-30.2-10-42.6 0L430.3 402c-11.3 9.1-25.4 14-40 14H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h78.3c15.9 0 30.7-10.9 33.3-26.6 3.3-20-12.1-37.4-31.6-37.4H192c-27 0-53.1 9.3-74.1 26.3L71.4 384H16c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h356.8c14.5 0 28.6-4.9 40-14L564 377c15.2-12.1 16.4-35.3 1.3-48.9z\"]\n};\nvar faHandHoldingHeart = {\n  prefix: 'fas',\n  iconName: 'hand-holding-heart',\n  icon: [576, 512, [], \"f4be\", \"M275.3 250.5c7 7.4 18.4 7.4 25.5 0l108.9-114.2c31.6-33.2 29.8-88.2-5.6-118.8-30.8-26.7-76.7-21.9-104.9 7.7L288 36.9l-11.1-11.6C248.7-4.4 202.8-9.2 172 17.5c-35.3 30.6-37.2 85.6-5.6 118.8l108.9 114.2zm290 77.6c-11.8-10.7-30.2-10-42.6 0L430.3 402c-11.3 9.1-25.4 14-40 14H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h78.3c15.9 0 30.7-10.9 33.3-26.6 3.3-20-12.1-37.4-31.6-37.4H192c-27 0-53.1 9.3-74.1 26.3L71.4 384H16c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h356.8c14.5 0 28.6-4.9 40-14L564 377c15.2-12.1 16.4-35.3 1.3-48.9z\"]\n};\nvar faHandHoldingMedical = {\n  prefix: 'fas',\n  iconName: 'hand-holding-medical',\n  icon: [576, 512, [], \"e05c\", \"M159.88,175.82h64v64a16,16,0,0,0,16,16h64a16,16,0,0,0,16-16v-64h64a16,16,0,0,0,16-16v-64a16,16,0,0,0-16-16h-64v-64a16,16,0,0,0-16-16h-64a16,16,0,0,0-16,16v64h-64a16,16,0,0,0-16,16v64A16,16,0,0,0,159.88,175.82ZM568.07,336.13a39.91,39.91,0,0,0-55.93-8.47L392.47,415.84H271.86a16,16,0,0,1,0-32H350.1c16,0,30.75-10.87,33.37-26.61a32.06,32.06,0,0,0-31.62-37.38h-160a117.7,117.7,0,0,0-74.12,26.25l-46.5,37.74H15.87a16.11,16.11,0,0,0-16,16v96a16.11,16.11,0,0,0,16,16h347a104.8,104.8,0,0,0,61.7-20.27L559.6,392A40,40,0,0,0,568.07,336.13Z\"]\n};\nvar faHandHoldingUsd = {\n  prefix: 'fas',\n  iconName: 'hand-holding-usd',\n  icon: [576, 512, [], \"f4c0\", \"M271.06,144.3l54.27,14.3a8.59,8.59,0,0,1,6.63,8.1c0,4.6-4.09,8.4-9.12,8.4h-35.6a30,30,0,0,1-11.19-2.2c-5.24-2.2-11.28-1.7-15.3,2l-19,17.5a11.68,11.68,0,0,0-2.25,2.66,11.42,11.42,0,0,0,3.88,15.74,83.77,83.77,0,0,0,34.51,11.5V240c0,8.8,7.83,16,17.37,16h17.37c9.55,0,17.38-7.2,17.38-16V222.4c32.93-3.6,57.84-31,53.5-63-3.15-23-22.46-41.3-46.56-47.7L282.68,97.4a8.59,8.59,0,0,1-6.63-8.1c0-4.6,4.09-8.4,9.12-8.4h35.6A30,30,0,0,1,332,83.1c5.23,2.2,11.28,1.7,15.3-2l19-17.5A11.31,11.31,0,0,0,368.47,61a11.43,11.43,0,0,0-3.84-15.78,83.82,83.82,0,0,0-34.52-11.5V16c0-8.8-7.82-16-17.37-16H295.37C285.82,0,278,7.2,278,16V33.6c-32.89,3.6-57.85,31-53.51,63C227.63,119.6,247,137.9,271.06,144.3ZM565.27,328.1c-11.8-10.7-30.2-10-42.6,0L430.27,402a63.64,63.64,0,0,1-40,14H272a16,16,0,0,1,0-32h78.29c15.9,0,30.71-10.9,33.25-26.6a31.2,31.2,0,0,0,.46-5.46A32,32,0,0,0,352,320H192a117.66,117.66,0,0,0-74.1,26.29L71.4,384H16A16,16,0,0,0,0,400v96a16,16,0,0,0,16,16H372.77a64,64,0,0,0,40-14L564,377a32,32,0,0,0,1.28-48.9Z\"]\n};\nvar faHandHoldingWater = {\n  prefix: 'fas',\n  iconName: 'hand-holding-water',\n  icon: [576, 512, [], \"f4c1\", \"M288 256c53 0 96-42.1 96-94 0-40-57.1-120.7-83.2-155.6-6.4-8.5-19.2-8.5-25.6 0C249.1 41.3 192 122 192 162c0 51.9 43 94 96 94zm277.3 72.1c-11.8-10.7-30.2-10-42.6 0L430.3 402c-11.3 9.1-25.4 14-40 14H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h78.3c15.9 0 30.7-10.9 33.3-26.6 3.3-20-12.1-37.4-31.6-37.4H192c-27 0-53.1 9.3-74.1 26.3L71.4 384H16c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h356.8c14.5 0 28.6-4.9 40-14L564 377c15.2-12.1 16.4-35.3 1.3-48.9z\"]\n};\nvar faHandLizard = {\n  prefix: 'fas',\n  iconName: 'hand-lizard',\n  icon: [576, 512, [], \"f258\", \"M384 480h192V363.778a95.998 95.998 0 0 0-14.833-51.263L398.127 54.368A48 48 0 0 0 357.544 32H24C10.745 32 0 42.745 0 56v16c0 30.928 25.072 56 56 56h229.981c12.844 0 21.556 13.067 16.615 24.923l-21.41 51.385A32 32 0 0 1 251.648 224H128c-35.346 0-64 28.654-64 64v8c0 13.255 10.745 24 24 24h147.406a47.995 47.995 0 0 1 25.692 7.455l111.748 70.811A24.001 24.001 0 0 1 384 418.539V480z\"]\n};\nvar faHandMiddleFinger = {\n  prefix: 'fas',\n  iconName: 'hand-middle-finger',\n  icon: [512, 512, [], \"f806\", \"M479.93 317.12a37.33 37.33 0 0 0-28.28-36.19L416 272v-49.59c0-11.44-9.69-21.29-23.15-23.54l-38.4-6.4C336.63 189.5 320 200.86 320 216v32a8 8 0 0 1-16 0V50c0-26.28-20.25-49.2-46.52-50A48 48 0 0 0 208 48v200a8 8 0 0 1-16 0v-32c0-15.15-16.63-26.51-34.45-23.54l-30.68 5.12c-18 3-30.87 16.12-30.87 31.38V376a8 8 0 0 1-16 0v-76l-27.36 15A37.34 37.34 0 0 0 32 348.4v73.47a37.31 37.31 0 0 0 10.93 26.39l30.93 30.93A112 112 0 0 0 153.05 512h215A112 112 0 0 0 480 400z\"]\n};\nvar faHandPaper = {\n  prefix: 'fas',\n  iconName: 'hand-paper',\n  icon: [448, 512, [], \"f256\", \"M408.781 128.007C386.356 127.578 368 146.36 368 168.79V256h-8V79.79c0-22.43-18.356-41.212-40.781-40.783C297.488 39.423 280 57.169 280 79v177h-8V40.79C272 18.36 253.644-.422 231.219.007 209.488.423 192 18.169 192 40v216h-8V80.79c0-22.43-18.356-41.212-40.781-40.783C121.488 40.423 104 58.169 104 80v235.992l-31.648-43.519c-12.993-17.866-38.009-21.817-55.877-8.823-17.865 12.994-21.815 38.01-8.822 55.877l125.601 172.705A48 48 0 0 0 172.073 512h197.59c22.274 0 41.622-15.324 46.724-37.006l26.508-112.66a192.011 192.011 0 0 0 5.104-43.975V168c.001-21.831-17.487-39.577-39.218-39.993z\"]\n};\nvar faHandPeace = {\n  prefix: 'fas',\n  iconName: 'hand-peace',\n  icon: [448, 512, [], \"f25b\", \"M408 216c-22.092 0-40 17.909-40 40h-8v-32c0-22.091-17.908-40-40-40s-40 17.909-40 40v32h-8V48c0-26.51-21.49-48-48-48s-48 21.49-48 48v208h-13.572L92.688 78.449C82.994 53.774 55.134 41.63 30.461 51.324 5.787 61.017-6.356 88.877 3.337 113.551l74.765 190.342-31.09 24.872c-15.381 12.306-19.515 33.978-9.741 51.081l64 112A39.998 39.998 0 0 0 136 512h240c18.562 0 34.686-12.77 38.937-30.838l32-136A39.97 39.97 0 0 0 448 336v-80c0-22.091-17.908-40-40-40z\"]\n};\nvar faHandPointDown = {\n  prefix: 'fas',\n  iconName: 'hand-point-down',\n  icon: [384, 512, [], \"f0a7\", \"M91.826 467.2V317.966c-8.248 5.841-16.558 10.57-24.918 14.153C35.098 345.752-.014 322.222 0 288c.008-18.616 10.897-32.203 29.092-40 28.286-12.122 64.329-78.648 77.323-107.534 7.956-17.857 25.479-28.453 43.845-28.464l.001-.002h171.526c11.812 0 21.897 8.596 23.703 20.269 7.25 46.837 38.483 61.76 38.315 123.731-.007 2.724.195 13.254.195 16 0 50.654-22.122 81.574-71.263 72.6-9.297 18.597-39.486 30.738-62.315 16.45-21.177 24.645-53.896 22.639-70.944 6.299V467.2c0 24.15-20.201 44.8-43.826 44.8-23.283 0-43.826-21.35-43.826-44.8zM112 72V24c0-13.255 10.745-24 24-24h192c13.255 0 24 10.745 24 24v48c0 13.255-10.745 24-24 24H136c-13.255 0-24-10.745-24-24zm212-24c0-11.046-8.954-20-20-20s-20 8.954-20 20 8.954 20 20 20 20-8.954 20-20z\"]\n};\nvar faHandPointLeft = {\n  prefix: 'fas',\n  iconName: 'hand-point-left',\n  icon: [512, 512, [], \"f0a5\", \"M44.8 155.826h149.234c-5.841-8.248-10.57-16.558-14.153-24.918C166.248 99.098 189.778 63.986 224 64c18.616.008 32.203 10.897 40 29.092 12.122 28.286 78.648 64.329 107.534 77.323 17.857 7.956 28.453 25.479 28.464 43.845l.002.001v171.526c0 11.812-8.596 21.897-20.269 23.703-46.837 7.25-61.76 38.483-123.731 38.315-2.724-.007-13.254.195-16 .195-50.654 0-81.574-22.122-72.6-71.263-18.597-9.297-30.738-39.486-16.45-62.315-24.645-21.177-22.639-53.896-6.299-70.944H44.8c-24.15 0-44.8-20.201-44.8-43.826 0-23.283 21.35-43.826 44.8-43.826zM440 176h48c13.255 0 24 10.745 24 24v192c0 13.255-10.745 24-24 24h-48c-13.255 0-24-10.745-24-24V200c0-13.255 10.745-24 24-24zm24 212c11.046 0 20-8.954 20-20s-8.954-20-20-20-20 8.954-20 20 8.954 20 20 20z\"]\n};\nvar faHandPointRight = {\n  prefix: 'fas',\n  iconName: 'hand-point-right',\n  icon: [512, 512, [], \"f0a4\", \"M512 199.652c0 23.625-20.65 43.826-44.8 43.826h-99.851c16.34 17.048 18.346 49.766-6.299 70.944 14.288 22.829 2.147 53.017-16.45 62.315C353.574 425.878 322.654 448 272 448c-2.746 0-13.276-.203-16-.195-61.971.168-76.894-31.065-123.731-38.315C120.596 407.683 112 397.599 112 385.786V214.261l.002-.001c.011-18.366 10.607-35.889 28.464-43.845 28.886-12.994 95.413-49.038 107.534-77.323 7.797-18.194 21.384-29.084 40-29.092 34.222-.014 57.752 35.098 44.119 66.908-3.583 8.359-8.312 16.67-14.153 24.918H467.2c23.45 0 44.8 20.543 44.8 43.826zM96 200v192c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24V200c0-13.255 10.745-24 24-24h48c13.255 0 24 10.745 24 24zM68 368c0-11.046-8.954-20-20-20s-20 8.954-20 20 8.954 20 20 20 20-8.954 20-20z\"]\n};\nvar faHandPointUp = {\n  prefix: 'fas',\n  iconName: 'hand-point-up',\n  icon: [384, 512, [], \"f0a6\", \"M135.652 0c23.625 0 43.826 20.65 43.826 44.8v99.851c17.048-16.34 49.766-18.346 70.944 6.299 22.829-14.288 53.017-2.147 62.315 16.45C361.878 158.426 384 189.346 384 240c0 2.746-.203 13.276-.195 16 .168 61.971-31.065 76.894-38.315 123.731C343.683 391.404 333.599 400 321.786 400H150.261l-.001-.002c-18.366-.011-35.889-10.607-43.845-28.464C93.421 342.648 57.377 276.122 29.092 264 10.897 256.203.008 242.616 0 224c-.014-34.222 35.098-57.752 66.908-44.119 8.359 3.583 16.67 8.312 24.918 14.153V44.8c0-23.45 20.543-44.8 43.826-44.8zM136 416h192c13.255 0 24 10.745 24 24v48c0 13.255-10.745 24-24 24H136c-13.255 0-24-10.745-24-24v-48c0-13.255 10.745-24 24-24zm168 28c-11.046 0-20 8.954-20 20s8.954 20 20 20 20-8.954 20-20-8.954-20-20-20z\"]\n};\nvar faHandPointer = {\n  prefix: 'fas',\n  iconName: 'hand-pointer',\n  icon: [448, 512, [], \"f25a\", \"M448 240v96c0 3.084-.356 6.159-1.063 9.162l-32 136C410.686 499.23 394.562 512 376 512H168a40.004 40.004 0 0 1-32.35-16.473l-127.997-176c-12.993-17.866-9.043-42.883 8.822-55.876 17.867-12.994 42.884-9.043 55.877 8.823L104 315.992V40c0-22.091 17.908-40 40-40s40 17.909 40 40v200h8v-40c0-22.091 17.908-40 40-40s40 17.909 40 40v40h8v-24c0-22.091 17.908-40 40-40s40 17.909 40 40v24h8c0-22.091 17.908-40 40-40s40 17.909 40 40zm-256 80h-8v96h8v-96zm88 0h-8v96h8v-96zm88 0h-8v96h8v-96z\"]\n};\nvar faHandRock = {\n  prefix: 'fas',\n  iconName: 'hand-rock',\n  icon: [512, 512, [], \"f255\", \"M464.8 80c-26.9-.4-48.8 21.2-48.8 48h-8V96.8c0-26.3-20.9-48.3-47.2-48.8-26.9-.4-48.8 21.2-48.8 48v32h-8V80.8c0-26.3-20.9-48.3-47.2-48.8-26.9-.4-48.8 21.2-48.8 48v48h-8V96.8c0-26.3-20.9-48.3-47.2-48.8-26.9-.4-48.8 21.2-48.8 48v136l-8-7.1v-48.1c0-26.3-20.9-48.3-47.2-48.8C21.9 127.6 0 149.2 0 176v66.4c0 27.4 11.7 53.5 32.2 71.8l111.7 99.3c10.2 9.1 16.1 22.2 16.1 35.9v6.7c0 13.3 10.7 24 24 24h240c13.3 0 24-10.7 24-24v-2.9c0-12.8 2.6-25.5 7.5-37.3l49-116.3c5-11.8 7.5-24.5 7.5-37.3V128.8c0-26.3-20.9-48.4-47.2-48.8z\"]\n};\nvar faHandScissors = {\n  prefix: 'fas',\n  iconName: 'hand-scissors',\n  icon: [512, 512, [], \"f257\", \"M216 440c0-22.092 17.909-40 40-40v-8h-32c-22.091 0-40-17.908-40-40s17.909-40 40-40h32v-8H48c-26.51 0-48-21.49-48-48s21.49-48 48-48h208v-13.572l-177.551-69.74c-24.674-9.694-36.818-37.555-27.125-62.228 9.693-24.674 37.554-36.817 62.228-27.124l190.342 74.765 24.872-31.09c12.306-15.381 33.978-19.515 51.081-9.741l112 64A40.002 40.002 0 0 1 512 168v240c0 18.562-12.77 34.686-30.838 38.937l-136 32A39.982 39.982 0 0 1 336 480h-80c-22.091 0-40-17.908-40-40z\"]\n};\nvar faHandSparkles = {\n  prefix: 'fas',\n  iconName: 'hand-sparkles',\n  icon: [640, 512, [], \"e05d\", \"M106.66,170.64l.09,0,49.55-20.65a7.32,7.32,0,0,0,3.68-6h0a7.29,7.29,0,0,0-3.68-6l-49.57-20.67-.07,0L86,67.68a6.66,6.66,0,0,0-11.92,0l-20.7,49.63-.05,0L3.7,138A7.29,7.29,0,0,0,0,144H0a7.32,7.32,0,0,0,3.68,6L53.27,170.6l.07,0L74,220.26a6.65,6.65,0,0,0,11.92,0l20.69-49.62ZM471.38,467.41l-1-.42-1-.5a38.67,38.67,0,0,1,0-69.14l1-.49,1-.43,37.49-15.63,15.63-37.48.41-1,.47-.95c3.85-7.74,10.58-13.63,18.35-17.34,0-1.33.25-2.69.27-4V144a32,32,0,0,0-64,0v72a8,8,0,0,1-8,8H456a8,8,0,0,1-8-8V64a32,32,0,0,0-64,0V216a8,8,0,0,1-8,8H360a8,8,0,0,1-8-8V32a32,32,0,0,0-64,0V216a8,8,0,0,1-8,8H264a8,8,0,0,1-8-8V64a32,32,0,0,0-64,0v241l-23.59-32.49a40,40,0,0,0-64.71,47.09L229.3,492.21A48.07,48.07,0,0,0,268.09,512H465.7c19.24,0,35.65-11.73,43.24-28.79l-.07-.17ZM349.79,339.52,320,351.93l-12.42,29.78a4,4,0,0,1-7.15,0L288,351.93l-29.79-12.41a4,4,0,0,1,0-7.16L288,319.94l12.42-29.78a4,4,0,0,1,7.15,0L320,319.94l29.79,12.42a4,4,0,0,1,0,7.16ZM640,431.91a7.28,7.28,0,0,0-3.68-6l-49.57-20.67-.07,0L566,355.63a6.66,6.66,0,0,0-11.92,0l-20.7,49.63-.05,0L483.7,426a7.28,7.28,0,0,0-3.68,6h0a7.29,7.29,0,0,0,3.68,5.95l49.57,20.67.07,0L554,508.21a6.65,6.65,0,0,0,11.92,0l20.69-49.62h0l.09,0,49.55-20.66a7.29,7.29,0,0,0,3.68-5.95h0Z\"]\n};\nvar faHandSpock = {\n  prefix: 'fas',\n  iconName: 'hand-spock',\n  icon: [512, 512, [], \"f259\", \"M510.9005,145.27027,442.604,432.09391A103.99507,103.99507,0,0,1,341.43745,512H214.074a135.96968,135.96968,0,0,1-93.18489-36.95291L12.59072,373.12723a39.992,39.992,0,0,1,54.8122-58.24988l60.59342,57.02528v0a283.24849,283.24849,0,0,0-11.6703-80.46734L73.63726,147.36011a40.00575,40.00575,0,1,1,76.71833-22.7187l37.15458,125.39477a8.33113,8.33113,0,0,0,16.05656-4.4414L153.26183,49.95406A39.99638,39.99638,0,1,1,230.73015,30.0166l56.09491,218.15825a10.42047,10.42047,0,0,0,20.30018-.501L344.80766,63.96966a40.052,40.052,0,0,1,51.30245-30.0893c19.86073,6.2998,30.86262,27.67378,26.67564,48.08487l-33.83869,164.966a7.55172,7.55172,0,0,0,14.74406,3.2666l29.3973-123.45874a39.99414,39.99414,0,1,1,77.81208,18.53121Z\"]\n};\nvar faHands = {\n  prefix: 'fas',\n  iconName: 'hands',\n  icon: [640, 512, [], \"f4c2\", \"M204.8 230.4c-10.6-14.1-30.7-17-44.8-6.4-14.1 10.6-17 30.7-6.4 44.8l38.1 50.8c4.8 6.4 4.1 15.3-1.5 20.9l-12.8 12.8c-6.7 6.7-17.6 6.2-23.6-1.1L64 244.4V96c0-17.7-14.3-32-32-32S0 78.3 0 96v218.4c0 10.9 3.7 21.5 10.5 30l104.1 134.3c5 6.5 8.4 13.9 10.4 21.7 1.8 6.9 8.1 11.6 15.3 11.6H272c8.8 0 16-7.2 16-16V384c0-27.7-9-54.6-25.6-76.8l-57.6-76.8zM608 64c-17.7 0-32 14.3-32 32v148.4l-89.8 107.8c-6 7.2-17 7.7-23.6 1.1l-12.8-12.8c-5.6-5.6-6.3-14.5-1.5-20.9l38.1-50.8c10.6-14.1 7.7-34.2-6.4-44.8-14.1-10.6-34.2-7.7-44.8 6.4l-57.6 76.8C361 329.4 352 356.3 352 384v112c0 8.8 7.2 16 16 16h131.7c7.1 0 13.5-4.7 15.3-11.6 2-7.8 5.4-15.2 10.4-21.7l104.1-134.3c6.8-8.5 10.5-19.1 10.5-30V96c0-17.7-14.3-32-32-32z\"]\n};\nvar faHandsHelping = {\n  prefix: 'fas',\n  iconName: 'hands-helping',\n  icon: [640, 512, [], \"f4c4\", \"M488 192H336v56c0 39.7-32.3 72-72 72s-72-32.3-72-72V126.4l-64.9 39C107.8 176.9 96 197.8 96 220.2v47.3l-80 46.2C.7 322.5-4.6 342.1 4.3 357.4l80 138.6c8.8 15.3 28.4 20.5 43.7 11.7L231.4 448H368c35.3 0 64-28.7 64-64h16c17.7 0 32-14.3 32-32v-64h8c13.3 0 24-10.7 24-24v-48c0-13.3-10.7-24-24-24zm147.7-37.4L555.7 16C546.9.7 527.3-4.5 512 4.3L408.6 64H306.4c-12 0-23.7 3.4-33.9 9.7L239 94.6c-9.4 5.8-15 16.1-15 27.1V248c0 22.1 17.9 40 40 40s40-17.9 40-40v-88h184c30.9 0 56 25.1 56 56v28.5l80-46.2c15.3-8.9 20.5-28.4 11.7-43.7z\"]\n};\nvar faHandsWash = {\n  prefix: 'fas',\n  iconName: 'hands-wash',\n  icon: [576, 512, [], \"e05e\", \"M496,224a48,48,0,1,0-48-48A48,48,0,0,0,496,224ZM311.47,178.45A56.77,56.77,0,0,1,328,176a56,56,0,0,1,19,3.49l15.35-48.61A24,24,0,0,0,342,99.74c-11.53-1.35-22.21,6.44-25.71,17.51l-20.9,66.17ZM93.65,386.33c.8-.19,1.54-.54,2.35-.71V359.93a156,156,0,0,1,107.06-148l73.7-22.76L310.92,81.05a24,24,0,0,0-20.33-31.11c-11.53-1.34-22.22,6.45-25.72,17.52L231.42,173.88a8,8,0,0,1-15.26-4.83L259.53,31.26A24,24,0,0,0,239.2.15C227.67-1.19,217,6.6,213.49,17.66L165.56,169.37a8,8,0,1,1-15.26-4.82l38.56-122a24,24,0,0,0-20.33-31.11C157,10,146.32,17.83,142.82,28.9l-60,189.85L80.76,168.7A24,24,0,0,0,56.9,144.55c-13.23-.05-24.72,10.54-24.9,23.86V281.14A123.69,123.69,0,0,0,93.65,386.33ZM519.1,336H360a8,8,0,0,1,0-16H488a24,24,0,0,0,23.54-28.76C509.35,279.84,498.71,272,487.1,272H288l47.09-17.06a24,24,0,0,0-14.18-45.88L213.19,242.31A123.88,123.88,0,0,0,128,360v25.65a79.78,79.78,0,0,1,58,108.63A118.9,118.9,0,0,0,248,512H456a24,24,0,0,0,23.54-28.76C477.35,471.84,466.71,464,455.1,464H360a8,8,0,0,1,0-16H488a24,24,0,0,0,23.54-28.76C509.35,407.84,498.71,400,487.1,400H360a8,8,0,0,1,0-16H520a24,24,0,0,0,23.54-28.76C541.35,343.84,530.71,336,519.1,336ZM416,64a32,32,0,1,0-32-32A32,32,0,0,0,416,64ZM112,416a48,48,0,1,0,48,48A48,48,0,0,0,112,416Z\"]\n};\nvar faHandshake = {\n  prefix: 'fas',\n  iconName: 'handshake',\n  icon: [640, 512, [], \"f2b5\", \"M434.7 64h-85.9c-8 0-15.7 3-21.6 8.4l-98.3 90c-.1.1-.2.3-.3.4-16.6 15.6-16.3 40.5-2.1 56 12.7 13.9 39.4 17.6 56.1 2.7.1-.1.3-.1.4-.2l79.9-73.2c6.5-5.9 16.7-5.5 22.6 1 6 6.5 5.5 16.6-1 22.6l-26.1 23.9L504 313.8c2.9 2.4 5.5 5 7.9 7.7V128l-54.6-54.6c-5.9-6-14.1-9.4-22.6-9.4zM544 128.2v223.9c0 17.7 14.3 32 32 32h64V128.2h-96zm48 223.9c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zM0 384h64c17.7 0 32-14.3 32-32V128.2H0V384zm48-63.9c8.8 0 16 7.2 16 16s-7.2 16-16 16-16-7.2-16-16c0-8.9 7.2-16 16-16zm435.9 18.6L334.6 217.5l-30 27.5c-29.7 27.1-75.2 24.5-101.7-4.4-26.9-29.4-24.8-74.9 4.4-101.7L289.1 64h-83.8c-8.5 0-16.6 3.4-22.6 9.4L128 128v223.9h18.3l90.5 81.9c27.4 22.3 67.7 18.1 90-9.3l.2-.2 17.9 15.5c15.9 13 39.4 10.5 52.3-5.4l31.4-38.6 5.4 4.4c13.7 11.1 33.9 9.1 45-4.7l9.5-11.7c11.2-13.8 9.1-33.9-4.6-45.1z\"]\n};\nvar faHandshakeAltSlash = {\n  prefix: 'fas',\n  iconName: 'handshake-alt-slash',\n  icon: [640, 512, [], \"e05f\", \"M358.59,195.6,504.2,313.8a63.4,63.4,0,0,1,22.21,37.91H624a16.05,16.05,0,0,0,16-16V143.91A16,16,0,0,0,624,128H512L457.41,73.41A32,32,0,0,0,434.8,64H348.91a32,32,0,0,0-21.61,8.41l-88.12,80.68-25.69-19.85L289.09,64H205.3a32,32,0,0,0-22.6,9.41l-20.34,20.3L45.47,3.38A16,16,0,0,0,23,6.19L3.38,31.46A16,16,0,0,0,6.19,53.91L594.54,508.63A16,16,0,0,0,617,505.82l19.64-25.27a16,16,0,0,0-2.81-22.45L303.4,202.72l32.69-29.92,27-24.7a16,16,0,0,1,21.61,23.61ZM16,128A16.05,16.05,0,0,0,0,144V335.91a16,16,0,0,0,16,16H146.3l90.5,81.89a64,64,0,0,0,90-9.3l.2-.2,17.91,15.5a37.16,37.16,0,0,0,52.29-5.39l8.8-10.82L23.56,128Z\"]\n};\nvar faHandshakeSlash = {\n  prefix: 'fas',\n  iconName: 'handshake-slash',\n  icon: [640, 512, [], \"e060\", \"M0,128.21V384H64a32,32,0,0,0,32-32V184L23.83,128.21ZM48,320.1a16,16,0,1,1-16,16A16,16,0,0,1,48,320.1Zm80,31.81h18.3l90.5,81.89a64,64,0,0,0,90-9.3l.2-.2,17.91,15.5a37.16,37.16,0,0,0,52.29-5.39l8.8-10.82L128,208.72Zm416-223.7V352.1a32,32,0,0,0,32,32h64V128.21ZM592,352.1a16,16,0,1,1,16-16A16,16,0,0,1,592,352.1ZM303.33,202.67l59.58-54.57a16,16,0,0,1,21.59,23.61L358.41,195.6,504,313.8a73.08,73.08,0,0,1,7.91,7.7V128L457.3,73.41A31.76,31.76,0,0,0,434.7,64H348.8a31.93,31.93,0,0,0-21.6,8.41l-88.07,80.64-25.64-19.81L289.09,64H205.3a32,32,0,0,0-22.6,9.41L162.36,93.72,45.47,3.38A16,16,0,0,0,23,6.19L3.38,31.46A16,16,0,0,0,6.19,53.91L594.53,508.63A16,16,0,0,0,617,505.82l19.65-25.27a16,16,0,0,0-2.82-22.45Z\"]\n};\nvar faHanukiah = {\n  prefix: 'fas',\n  iconName: 'hanukiah',\n  icon: [640, 512, [], \"f6e6\", \"M232 160c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm-64 0c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm224 0c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm64 0c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm88 8c0-4.42-3.58-8-8-8h-16c-4.42 0-8 3.58-8 8v120h32V168zm-440-8c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm520 0h-32c-8.84 0-16 7.16-16 16v112c0 17.67-14.33 32-32 32H352V128c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v192H96c-17.67 0-32-14.33-32-32V176c0-8.84-7.16-16-16-16H16c-8.84 0-16 7.16-16 16v112c0 53.02 42.98 96 96 96h192v64H112c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16H352v-64h192c53.02 0 96-42.98 96-96V176c0-8.84-7.16-16-16-16zm-16-32c13.25 0 24-11.94 24-26.67S608 48 608 48s-24 38.61-24 53.33S594.75 128 608 128zm-576 0c13.25 0 24-11.94 24-26.67S32 48 32 48 8 86.61 8 101.33 18.75 128 32 128zm288-48c13.25 0 24-11.94 24-26.67S320 0 320 0s-24 38.61-24 53.33S306.75 80 320 80zm-208 48c13.25 0 24-11.94 24-26.67S112 48 112 48s-24 38.61-24 53.33S98.75 128 112 128zm64 0c13.25 0 24-11.94 24-26.67S176 48 176 48s-24 38.61-24 53.33S162.75 128 176 128zm64 0c13.25 0 24-11.94 24-26.67S240 48 240 48s-24 38.61-24 53.33S226.75 128 240 128zm160 0c13.25 0 24-11.94 24-26.67S400 48 400 48s-24 38.61-24 53.33S386.75 128 400 128zm64 0c13.25 0 24-11.94 24-26.67S464 48 464 48s-24 38.61-24 53.33S450.75 128 464 128zm64 0c13.25 0 24-11.94 24-26.67S528 48 528 48s-24 38.61-24 53.33S514.75 128 528 128z\"]\n};\nvar faHardHat = {\n  prefix: 'fas',\n  iconName: 'hard-hat',\n  icon: [512, 512, [], \"f807\", \"M480 288c0-80.25-49.28-148.92-119.19-177.62L320 192V80a16 16 0 0 0-16-16h-96a16 16 0 0 0-16 16v112l-40.81-81.62C81.28 139.08 32 207.75 32 288v64h448zm16 96H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h480a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faHashtag = {\n  prefix: 'fas',\n  iconName: 'hashtag',\n  icon: [448, 512, [], \"f292\", \"M440.667 182.109l7.143-40c1.313-7.355-4.342-14.109-11.813-14.109h-74.81l14.623-81.891C377.123 38.754 371.468 32 363.997 32h-40.632a12 12 0 0 0-11.813 9.891L296.175 128H197.54l14.623-81.891C213.477 38.754 207.822 32 200.35 32h-40.632a12 12 0 0 0-11.813 9.891L132.528 128H53.432a12 12 0 0 0-11.813 9.891l-7.143 40C33.163 185.246 38.818 192 46.289 192h74.81L98.242 320H19.146a12 12 0 0 0-11.813 9.891l-7.143 40C-1.123 377.246 4.532 384 12.003 384h74.81L72.19 465.891C70.877 473.246 76.532 480 84.003 480h40.632a12 12 0 0 0 11.813-9.891L151.826 384h98.634l-14.623 81.891C234.523 473.246 240.178 480 247.65 480h40.632a12 12 0 0 0 11.813-9.891L315.472 384h79.096a12 12 0 0 0 11.813-9.891l7.143-40c1.313-7.355-4.342-14.109-11.813-14.109h-74.81l22.857-128h79.096a12 12 0 0 0 11.813-9.891zM261.889 320h-98.634l22.857-128h98.634l-22.857 128z\"]\n};\nvar faHatCowboy = {\n  prefix: 'fas',\n  iconName: 'hat-cowboy',\n  icon: [640, 512, [], \"f8c0\", \"M490 296.9C480.51 239.51 450.51 64 392.3 64c-14 0-26.49 5.93-37 14a58.21 58.21 0 0 1-70.58 0c-10.51-8-23-14-37-14-58.2 0-88.2 175.47-97.71 232.88C188.81 309.47 243.73 320 320 320s131.23-10.51 170-23.1zm142.9-37.18a16 16 0 0 0-19.75 1.5c-1 .9-101.27 90.78-293.16 90.78-190.82 0-292.22-89.94-293.24-90.84A16 16 0 0 0 1 278.53C1.73 280.55 78.32 480 320 480s318.27-199.45 319-201.47a16 16 0 0 0-6.09-18.81z\"]\n};\nvar faHatCowboySide = {\n  prefix: 'fas',\n  iconName: 'hat-cowboy-side',\n  icon: [640, 512, [], \"f8c1\", \"M260.8 291.06c-28.63-22.94-62-35.06-96.4-35.06C87 256 21.47 318.72 1.43 412.06c-3.55 16.6-.43 33.83 8.57 47.3C18.75 472.47 31.83 480 45.88 480H592c-103.21 0-155-37.07-233.19-104.46zm234.65-18.29L468.4 116.2A64 64 0 0 0 392 64.41L200.85 105a64 64 0 0 0-50.35 55.79L143.61 226c6.9-.83 13.7-2 20.79-2 41.79 0 82 14.55 117.29 42.82l98 84.48C450.76 412.54 494.9 448 592 448a48 48 0 0 0 48-48c0-25.39-29.6-119.33-144.55-127.23z\"]\n};\nvar faHatWizard = {\n  prefix: 'fas',\n  iconName: 'hat-wizard',\n  icon: [512, 512, [], \"f6e8\", \"M496 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-304-64l-64-32 64-32 32-64 32 64 64 32-64 32-16 32h208l-86.41-201.63a63.955 63.955 0 0 1-1.89-45.45L416 0 228.42 107.19a127.989 127.989 0 0 0-53.46 59.15L64 416h144l-16-32zm64-224l16-32 16 32 32 16-32 16-16 32-16-32-32-16 32-16z\"]\n};\nvar faHdd = {\n  prefix: 'fas',\n  iconName: 'hdd',\n  icon: [576, 512, [], \"f0a0\", \"M576 304v96c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48v-96c0-26.51 21.49-48 48-48h480c26.51 0 48 21.49 48 48zm-48-80a79.557 79.557 0 0 1 30.777 6.165L462.25 85.374A48.003 48.003 0 0 0 422.311 64H153.689a48 48 0 0 0-39.938 21.374L17.223 230.165A79.557 79.557 0 0 1 48 224h480zm-48 96c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm-96 0c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32z\"]\n};\nvar faHeadSideCough = {\n  prefix: 'fas',\n  iconName: 'head-side-cough',\n  icon: [640, 512, [], \"e061\", \"M616,304a24,24,0,1,0-24-24A24,24,0,0,0,616,304ZM552,416a24,24,0,1,0,24,24A24,24,0,0,0,552,416Zm-64-56a24,24,0,1,0,24,24A24,24,0,0,0,488,360ZM616,464a24,24,0,1,0,24,24A24,24,0,0,0,616,464Zm0-104a24,24,0,1,0,24,24A24,24,0,0,0,616,360Zm-64-40a24,24,0,1,0,24,24A24,24,0,0,0,552,320Zm-74.78-45c-21-47.12-48.5-151.75-73.12-186.75A208.13,208.13,0,0,0,234.1,0H192C86,0,0,86,0,192c0,56.75,24.75,107.62,64,142.88V512H288V480h64a64,64,0,0,0,64-64H320a32,32,0,0,1,0-64h96V320h32A32,32,0,0,0,477.22,275ZM288,224a32,32,0,1,1,32-32A32.07,32.07,0,0,1,288,224Z\"]\n};\nvar faHeadSideCoughSlash = {\n  prefix: 'fas',\n  iconName: 'head-side-cough-slash',\n  icon: [640, 512, [], \"e062\", \"M454.11,319.21c19.56-3.81,31.62-25,23.11-44.21-21-47.12-48.5-151.75-73.12-186.75A208.13,208.13,0,0,0,234.1,0H192A190.64,190.64,0,0,0,84.18,33.3L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.46A16,16,0,0,0,6.18,53.91L594.53,508.63A16,16,0,0,0,617,505.82l19.64-25.27a16,16,0,0,0-2.81-22.45ZM313.39,210.45,263.61,172c5.88-7.14,14.43-12,24.36-12a32.06,32.06,0,0,1,32,32C320,199,317.24,205.17,313.39,210.45ZM616,304a24,24,0,1,0-24-24A24,24,0,0,0,616,304Zm-64,64a24,24,0,1,0-24-24A24,24,0,0,0,552,368ZM288,384a32,32,0,0,1,32-32h19.54L20.73,105.59A190.86,190.86,0,0,0,0,192c0,56.75,24.75,107.62,64,142.88V512H288V480h64a64,64,0,0,0,64-64H320A32,32,0,0,1,288,384Zm328-24a24,24,0,1,0,24,24A24,24,0,0,0,616,360Z\"]\n};\nvar faHeadSideMask = {\n  prefix: 'fas',\n  iconName: 'head-side-mask',\n  icon: [512, 512, [], \"e063\", \"M.15,184.42C-2.17,244.21,23,298.06,64,334.88V512H224V316.51L3.67,156.25A182.28,182.28,0,0,0,.15,184.42ZM509.22,275c-21-47.12-48.5-151.75-73.12-186.75A208.11,208.11,0,0,0,266.11,0H200C117,0,42.48,50.57,13.25,123.65L239.21,288H511.76A31.35,31.35,0,0,0,509.22,275ZM320,224a32,32,0,1,1,32-32A32.07,32.07,0,0,1,320,224Zm16,144H496l16-48H256V512H401.88a64,64,0,0,0,60.71-43.76L464,464H336a16,16,0,0,1,0-32H474.67l10.67-32H336a16,16,0,0,1,0-32Z\"]\n};\nvar faHeadSideVirus = {\n  prefix: 'fas',\n  iconName: 'head-side-virus',\n  icon: [512, 512, [], \"e064\", \"M272,240a16,16,0,1,0,16,16A16,16,0,0,0,272,240Zm-64-64a16,16,0,1,0,16,16A16,16,0,0,0,208,176Zm301.2,99c-20.93-47.12-48.43-151.73-73.07-186.75A207.9,207.9,0,0,0,266.09,0H192C86,0,0,86,0,192A191.23,191.23,0,0,0,64,334.81V512H320V448h64a64,64,0,0,0,64-64V320H480A32,32,0,0,0,509.2,275ZM368,240H355.88c-28.51,0-42.79,34.47-22.63,54.63l8.58,8.57a16,16,0,1,1-22.63,22.63l-8.57-8.58C290.47,297.09,256,311.37,256,339.88V352a16,16,0,0,1-32,0V339.88c0-28.51-34.47-42.79-54.63-22.63l-8.57,8.58a16,16,0,0,1-22.63-22.63l8.58-8.57c20.16-20.16,5.88-54.63-22.63-54.63H112a16,16,0,0,1,0-32h12.12c28.51,0,42.79-34.47,22.63-54.63l-8.58-8.57a16,16,0,0,1,22.63-22.63l8.57,8.58c20.16,20.16,54.63,5.88,54.63-22.63V96a16,16,0,0,1,32,0v12.12c0,28.51,34.47,42.79,54.63,22.63l8.57-8.58a16,16,0,0,1,22.63,22.63l-8.58,8.57C313.09,173.53,327.37,208,355.88,208H368a16,16,0,0,1,0,32Z\"]\n};\nvar faHeading = {\n  prefix: 'fas',\n  iconName: 'heading',\n  icon: [512, 512, [], \"f1dc\", \"M448 96v320h32a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16H320a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32V288H160v128h32a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16H32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32V96H32a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16h160a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16h-32v128h192V96h-32a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16h160a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16z\"]\n};\nvar faHeadphones = {\n  prefix: 'fas',\n  iconName: 'headphones',\n  icon: [512, 512, [], \"f025\", \"M256 32C114.52 32 0 146.496 0 288v48a32 32 0 0 0 17.689 28.622l14.383 7.191C34.083 431.903 83.421 480 144 480h24c13.255 0 24-10.745 24-24V280c0-13.255-10.745-24-24-24h-24c-31.342 0-59.671 12.879-80 33.627V288c0-105.869 86.131-192 192-192s192 86.131 192 192v1.627C427.671 268.879 399.342 256 368 256h-24c-13.255 0-24 10.745-24 24v176c0 13.255 10.745 24 24 24h24c60.579 0 109.917-48.098 111.928-108.187l14.382-7.191A32 32 0 0 0 512 336v-48c0-141.479-114.496-256-256-256z\"]\n};\nvar faHeadphonesAlt = {\n  prefix: 'fas',\n  iconName: 'headphones-alt',\n  icon: [512, 512, [], \"f58f\", \"M160 288h-16c-35.35 0-64 28.7-64 64.12v63.76c0 35.41 28.65 64.12 64 64.12h16c17.67 0 32-14.36 32-32.06V320.06c0-17.71-14.33-32.06-32-32.06zm208 0h-16c-17.67 0-32 14.35-32 32.06v127.88c0 17.7 14.33 32.06 32 32.06h16c35.35 0 64-28.71 64-64.12v-63.76c0-35.41-28.65-64.12-64-64.12zM256 32C112.91 32 4.57 151.13 0 288v112c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V288c0-114.67 93.33-207.8 208-207.82 114.67.02 208 93.15 208 207.82v112c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V288C507.43 151.13 399.09 32 256 32z\"]\n};\nvar faHeadset = {\n  prefix: 'fas',\n  iconName: 'headset',\n  icon: [512, 512, [], \"f590\", \"M192 208c0-17.67-14.33-32-32-32h-16c-35.35 0-64 28.65-64 64v48c0 35.35 28.65 64 64 64h16c17.67 0 32-14.33 32-32V208zm176 144c35.35 0 64-28.65 64-64v-48c0-35.35-28.65-64-64-64h-16c-17.67 0-32 14.33-32 32v112c0 17.67 14.33 32 32 32h16zM256 0C113.18 0 4.58 118.83 0 256v16c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-16c0-114.69 93.31-208 208-208s208 93.31 208 208h-.12c.08 2.43.12 165.72.12 165.72 0 23.35-18.93 42.28-42.28 42.28H320c0-26.51-21.49-48-48-48h-32c-26.51 0-48 21.49-48 48s21.49 48 48 48h181.72c49.86 0 90.28-40.42 90.28-90.28V256C507.42 118.83 398.82 0 256 0z\"]\n};\nvar faHeart = {\n  prefix: 'fas',\n  iconName: 'heart',\n  icon: [512, 512, [], \"f004\", \"M462.3 62.6C407.5 15.9 326 24.3 275.7 76.2L256 96.5l-19.7-20.3C186.1 24.3 104.5 15.9 49.7 62.6c-62.8 53.6-66.1 149.8-9.9 207.9l193.5 199.8c12.5 12.9 32.8 12.9 45.3 0l193.5-199.8c56.3-58.1 53-154.3-9.8-207.9z\"]\n};\nvar faHeartBroken = {\n  prefix: 'fas',\n  iconName: 'heart-broken',\n  icon: [512, 512, [], \"f7a9\", \"M473.7 73.8l-2.4-2.5c-46-47-118-51.7-169.6-14.8L336 159.9l-96 64 48 128-144-144 96-64-28.6-86.5C159.7 19.6 87 24 40.7 71.4l-2.4 2.4C-10.4 123.6-12.5 202.9 31 256l212.1 218.6c7.1 7.3 18.6 7.3 25.7 0L481 255.9c43.5-53 41.4-132.3-7.3-182.1z\"]\n};\nvar faHeartbeat = {\n  prefix: 'fas',\n  iconName: 'heartbeat',\n  icon: [512, 512, [], \"f21e\", \"M320.2 243.8l-49.7 99.4c-6 12.1-23.4 11.7-28.9-.6l-56.9-126.3-30 71.7H60.6l182.5 186.5c7.1 7.3 18.6 7.3 25.7 0L451.4 288H342.3l-22.1-44.2zM473.7 73.9l-2.4-2.5c-51.5-52.6-135.8-52.6-187.4 0L256 100l-27.9-28.5c-51.5-52.7-135.9-52.7-187.4 0l-2.4 2.4C-10.4 123.7-12.5 203 31 256h102.4l35.9-86.2c5.4-12.9 23.6-13.2 29.4-.4l58.2 129.3 49-97.9c5.9-11.8 22.7-11.8 28.6 0l27.6 55.2H481c43.5-53 41.4-132.3-7.3-182.1z\"]\n};\nvar faHelicopter = {\n  prefix: 'fas',\n  iconName: 'helicopter',\n  icon: [640, 512, [], \"f533\", \"M304 384h272c17.67 0 32-14.33 32-32 0-123.71-100.29-224-224-224V64h176c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16H144c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h176v64H112L68.8 70.4C65.78 66.37 61.03 64 56 64H16.01C5.6 64-2.04 73.78.49 83.88L32 192l160 64 86.4 115.2A31.992 31.992 0 0 0 304 384zm112-188.49C478.55 208.3 528.03 257.44 540.79 320H416V195.51zm219.37 263.3l-22.15-22.2c-6.25-6.26-16.24-6.1-22.64.01-7.09 6.77-13.84 11.25-24.64 11.25H240c-8.84 0-16 7.18-16 16.03v32.06c0 8.85 7.16 16.03 16 16.03h325.94c14.88 0 35.3-.47 68.45-29.52 7.02-6.14 7.57-17.05.98-23.66z\"]\n};\nvar faHighlighter = {\n  prefix: 'fas',\n  iconName: 'highlighter',\n  icon: [544, 512, [], \"f591\", \"M0 479.98L99.92 512l35.45-35.45-67.04-67.04L0 479.98zm124.61-240.01a36.592 36.592 0 0 0-10.79 38.1l13.05 42.83-50.93 50.94 96.23 96.23 50.86-50.86 42.74 13.08c13.73 4.2 28.65-.01 38.15-10.78l35.55-41.64-173.34-173.34-41.52 35.44zm403.31-160.7l-63.2-63.2c-20.49-20.49-53.38-21.52-75.12-2.35L190.55 183.68l169.77 169.78L530.27 154.4c19.18-21.74 18.15-54.63-2.35-75.13z\"]\n};\nvar faHiking = {\n  prefix: 'fas',\n  iconName: 'hiking',\n  icon: [384, 512, [], \"f6ec\", \"M80.95 472.23c-4.28 17.16 6.14 34.53 23.28 38.81 2.61.66 5.22.95 7.8.95 14.33 0 27.37-9.7 31.02-24.23l25.24-100.97-52.78-52.78-34.56 138.22zm14.89-196.12L137 117c2.19-8.42-3.14-16.95-11.92-19.06-43.88-10.52-88.35 15.07-99.32 57.17L.49 253.24c-2.19 8.42 3.14 16.95 11.92 19.06l63.56 15.25c8.79 2.1 17.68-3.02 19.87-11.44zM368 160h-16c-8.84 0-16 7.16-16 16v16h-34.75l-46.78-46.78C243.38 134.11 228.61 128 212.91 128c-27.02 0-50.47 18.3-57.03 44.52l-26.92 107.72a32.012 32.012 0 0 0 8.42 30.39L224 397.25V480c0 17.67 14.33 32 32 32s32-14.33 32-32v-82.75c0-17.09-6.66-33.16-18.75-45.25l-46.82-46.82c.15-.5.49-.89.62-1.41l19.89-79.57 22.43 22.43c6 6 14.14 9.38 22.62 9.38h48v240c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V176c.01-8.84-7.15-16-15.99-16zM240 96c26.51 0 48-21.49 48-48S266.51 0 240 0s-48 21.49-48 48 21.49 48 48 48z\"]\n};\nvar faHippo = {\n  prefix: 'fas',\n  iconName: 'hippo',\n  icon: [640, 512, [], \"f6ed\", \"M581.12 96.2c-27.67-.15-52.5 17.58-76.6 26.62C489.98 88.27 455.83 64 416 64c-11.28 0-21.95 2.3-32 5.88V56c0-13.26-10.75-24-24-24h-16c-13.25 0-24 10.74-24 24v48.98C286.01 79.58 241.24 64 192 64 85.96 64 0 135.64 0 224v240c0 8.84 7.16 16 16 16h64c8.84 0 16-7.16 16-16v-70.79C128.35 407.57 166.72 416 208 416s79.65-8.43 112-22.79V464c0 8.84 7.16 16 16 16h64c8.84 0 16-7.16 16-16V288h128v32c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-32c17.67 0 32-14.33 32-32v-92.02c0-34.09-24.79-67.59-58.88-67.78zM448 176c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16z\"]\n};\nvar faHistory = {\n  prefix: 'fas',\n  iconName: 'history',\n  icon: [512, 512, [], \"f1da\", \"M504 255.531c.253 136.64-111.18 248.372-247.82 248.468-59.015.042-113.223-20.53-155.822-54.911-11.077-8.94-11.905-25.541-1.839-35.607l11.267-11.267c8.609-8.609 22.353-9.551 31.891-1.984C173.062 425.135 212.781 440 256 440c101.705 0 184-82.311 184-184 0-101.705-82.311-184-184-184-48.814 0-93.149 18.969-126.068 49.932l50.754 50.754c10.08 10.08 2.941 27.314-11.313 27.314H24c-8.837 0-16-7.163-16-16V38.627c0-14.254 17.234-21.393 27.314-11.314l49.372 49.372C129.209 34.136 189.552 8 256 8c136.81 0 247.747 110.78 248 247.531zm-180.912 78.784l9.823-12.63c8.138-10.463 6.253-25.542-4.21-33.679L288 256.349V152c0-13.255-10.745-24-24-24h-16c-13.255 0-24 10.745-24 24v135.651l65.409 50.874c10.463 8.137 25.541 6.253 33.679-4.21z\"]\n};\nvar faHockeyPuck = {\n  prefix: 'fas',\n  iconName: 'hockey-puck',\n  icon: [512, 512, [], \"f453\", \"M0 160c0-53 114.6-96 256-96s256 43 256 96-114.6 96-256 96S0 213 0 160zm0 82.2V352c0 53 114.6 96 256 96s256-43 256-96V242.2c-113.4 82.3-398.5 82.4-512 0z\"]\n};\nvar faHollyBerry = {\n  prefix: 'fas',\n  iconName: 'holly-berry',\n  icon: [448, 512, [], \"f7aa\", \"M144 192c26.5 0 48-21.5 48-48s-21.5-48-48-48-48 21.5-48 48 21.5 48 48 48zm112-48c0 26.5 21.5 48 48 48s48-21.5 48-48-21.5-48-48-48-48 21.5-48 48zm-32-48c26.5 0 48-21.5 48-48S250.5 0 224 0s-48 21.5-48 48 21.5 48 48 48zm-16.2 139.1c.1-12.4-13.1-20.1-23.8-13.7-34.3 20.3-71.4 32.7-108.7 36.2-9.7.9-15.6 11.3-11.6 20.2 6.2 13.9 11.1 28.6 14.7 43.8 3.6 15.2-5.3 30.6-20.2 35.1-14.9 4.5-30.1 7.6-45.3 9.1-9.7 1-15.7 11.3-11.7 20.2 15 32.8 22.9 69.5 23 107.7.1 14.4 15.2 23.1 27.6 16 33.2-19 68.9-30.5 104.8-33.9 9.7-.9 15.6-11.3 11.6-20.2-6.2-13.9-11.1-28.6-14.7-43.8-3.6-15.2 5.3-30.6 20.2-35.1 14.9-4.5 30.1-7.6 45.3-9.1 9.7-1 15.7-11.3 11.7-20.2-15.5-34.2-23.3-72.5-22.9-112.3zM435 365.6c-15.2-1.6-30.3-4.7-45.3-9.1-14.9-4.5-23.8-19.9-20.2-35.1 3.6-15.2 8.5-29.8 14.7-43.8 4-8.9-1.9-19.3-11.6-20.2-37.3-3.5-74.4-15.9-108.7-36.2-10.7-6.3-23.9 1.4-23.8 13.7 0 1.6-.2 3.2-.2 4.9.2 33.3 7 65.7 19.9 94 5.7 12.4 5.2 26.6-.6 38.9 4.9 1.2 9.9 2.2 14.8 3.7 14.9 4.5 23.8 19.9 20.2 35.1-3.6 15.2-8.5 29.8-14.7 43.8-4 8.9 1.9 19.3 11.6 20.2 35.9 3.4 71.6 14.9 104.8 33.9 12.5 7.1 27.6-1.6 27.6-16 .2-38.2 8-75 23-107.7 4.3-8.7-1.8-19.1-11.5-20.1z\"]\n};\nvar faHome = {\n  prefix: 'fas',\n  iconName: 'home',\n  icon: [576, 512, [], \"f015\", \"M280.37 148.26L96 300.11V464a16 16 0 0 0 16 16l112.06-.29a16 16 0 0 0 15.92-16V368a16 16 0 0 1 16-16h64a16 16 0 0 1 16 16v95.64a16 16 0 0 0 16 16.05L464 480a16 16 0 0 0 16-16V300L295.67 148.26a12.19 12.19 0 0 0-15.3 0zM571.6 251.47L488 182.56V44.05a12 12 0 0 0-12-12h-56a12 12 0 0 0-12 12v72.61L318.47 43a48 48 0 0 0-61 0L4.34 251.47a12 12 0 0 0-1.6 16.9l25.5 31A12 12 0 0 0 45.15 301l235.22-193.74a12.19 12.19 0 0 1 15.3 0L530.9 301a12 12 0 0 0 16.9-1.6l25.5-31a12 12 0 0 0-1.7-16.93z\"]\n};\nvar faHorse = {\n  prefix: 'fas',\n  iconName: 'horse',\n  icon: [576, 512, [], \"f6f0\", \"M575.92 76.6c-.01-8.13-3.02-15.87-8.58-21.8-3.78-4.03-8.58-9.12-13.69-14.5 11.06-6.84 19.5-17.49 22.18-30.66C576.85 4.68 572.96 0 567.9 0H447.92c-70.69 0-128 57.31-128 128H160c-28.84 0-54.4 12.98-72 33.11V160c-48.53 0-88 39.47-88 88v56c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-56c0-13.22 6.87-24.39 16.78-31.68-.21 2.58-.78 5.05-.78 7.68 0 27.64 11.84 52.36 30.54 69.88l-25.72 68.6a63.945 63.945 0 0 0-2.16 37.99l24.85 99.41A15.982 15.982 0 0 0 107.02 512h65.96c10.41 0 18.05-9.78 15.52-19.88l-26.31-105.26 23.84-63.59L320 345.6V496c0 8.84 7.16 16 16 16h64c8.84 0 16-7.16 16-16V318.22c19.74-20.19 32-47.75 32-78.22 0-.22-.07-.42-.08-.64V136.89l16 7.11 18.9 37.7c7.45 14.87 25.05 21.55 40.49 15.37l32.55-13.02a31.997 31.997 0 0 0 20.12-29.74l-.06-77.71zm-64 19.4c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16z\"]\n};\nvar faHorseHead = {\n  prefix: 'fas',\n  iconName: 'horse-head',\n  icon: [512, 512, [], \"f7ab\", \"M509.8 332.5l-69.9-164.3c-14.9-41.2-50.4-71-93-79.2 18-10.6 46.3-35.9 34.2-82.3-1.3-5-7.1-7.9-12-6.1L166.9 76.3C35.9 123.4 0 238.9 0 398.8V480c0 17.7 14.3 32 32 32h236.2c23.8 0 39.3-25 28.6-46.3L256 384v-.7c-45.6-3.5-84.6-30.7-104.3-69.6-1.6-3.1-.9-6.9 1.6-9.3l12.1-12.1c3.9-3.9 10.6-2.7 12.9 2.4 14.8 33.7 48.2 57.4 87.4 57.4 17.2 0 33-5.1 46.8-13.2l46 63.9c6 8.4 15.7 13.3 26 13.3h50.3c8.5 0 16.6-3.4 22.6-9.4l45.3-39.8c8.9-9.1 11.7-22.6 7.1-34.4zM328 224c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24z\"]\n};\nvar faHospital = {\n  prefix: 'fas',\n  iconName: 'hospital',\n  icon: [448, 512, [], \"f0f8\", \"M448 492v20H0v-20c0-6.627 5.373-12 12-12h20V120c0-13.255 10.745-24 24-24h88V24c0-13.255 10.745-24 24-24h112c13.255 0 24 10.745 24 24v72h88c13.255 0 24 10.745 24 24v360h20c6.627 0 12 5.373 12 12zM308 192h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12zm-168 64h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12zm104 128h-40c-6.627 0-12 5.373-12 12v84h64v-84c0-6.627-5.373-12-12-12zm64-96h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12zm-116 12c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40zM182 96h26v26a6 6 0 0 0 6 6h20a6 6 0 0 0 6-6V96h26a6 6 0 0 0 6-6V70a6 6 0 0 0-6-6h-26V38a6 6 0 0 0-6-6h-20a6 6 0 0 0-6 6v26h-26a6 6 0 0 0-6 6v20a6 6 0 0 0 6 6z\"]\n};\nvar faHospitalAlt = {\n  prefix: 'fas',\n  iconName: 'hospital-alt',\n  icon: [576, 512, [], \"f47d\", \"M544 96H416V32c0-17.7-14.3-32-32-32H192c-17.7 0-32 14.3-32 32v64H32c-17.7 0-32 14.3-32 32v368c0 8.8 7.2 16 16 16h544c8.8 0 16-7.2 16-16V128c0-17.7-14.3-32-32-32zM160 436c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-128c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm160 128c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-128c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm16-170c0 3.3-2.7 6-6 6h-26v26c0 3.3-2.7 6-6 6h-20c-3.3 0-6-2.7-6-6v-26h-26c-3.3 0-6-2.7-6-6v-20c0-3.3 2.7-6 6-6h26V86c0-3.3 2.7-6 6-6h20c3.3 0 6 2.7 6 6v26h26c3.3 0 6 2.7 6 6v20zm144 298c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-128c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40z\"]\n};\nvar faHospitalSymbol = {\n  prefix: 'fas',\n  iconName: 'hospital-symbol',\n  icon: [512, 512, [], \"f47e\", \"M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256 256-114.6 256-256S397.4 0 256 0zm112 376c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-88h-96v88c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V136c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v88h96v-88c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v240z\"]\n};\nvar faHospitalUser = {\n  prefix: 'fas',\n  iconName: 'hospital-user',\n  icon: [640, 512, [], \"f80d\", \"M480 320a96 96 0 1 0-96-96 96 96 0 0 0 96 96zm48 32a22.88 22.88 0 0 0-7.06 1.09 124.76 124.76 0 0 1-81.89 0A22.82 22.82 0 0 0 432 352a112 112 0 0 0-112 112.62c.14 26.26 21.73 47.38 48 47.38h224c26.27 0 47.86-21.12 48-47.38A112 112 0 0 0 528 352zm-198.09 10.45A145.19 145.19 0 0 1 352 344.62V128a32 32 0 0 0-32-32h-32V32a32 32 0 0 0-32-32H96a32 32 0 0 0-32 32v64H32a32 32 0 0 0-32 32v368a16 16 0 0 0 16 16h288.31A78.62 78.62 0 0 1 288 464.79a143.06 143.06 0 0 1 41.91-102.34zM144 404a12 12 0 0 1-12 12H92a12 12 0 0 1-12-12v-40a12 12 0 0 1 12-12h40a12 12 0 0 1 12 12zm0-128a12 12 0 0 1-12 12H92a12 12 0 0 1-12-12v-40a12 12 0 0 1 12-12h40a12 12 0 0 1 12 12zm48-122a6 6 0 0 1-6 6h-20a6 6 0 0 1-6-6v-26h-26a6 6 0 0 1-6-6v-20a6 6 0 0 1 6-6h26V70a6 6 0 0 1 6-6h20a6 6 0 0 1 6 6v26h26a6 6 0 0 1 6 6v20a6 6 0 0 1-6 6h-26zm80 250a12 12 0 0 1-12 12h-40a12 12 0 0 1-12-12v-40a12 12 0 0 1 12-12h40a12 12 0 0 1 12 12zm0-128a12 12 0 0 1-12 12h-40a12 12 0 0 1-12-12v-40a12 12 0 0 1 12-12h40a12 12 0 0 1 12 12z\"]\n};\nvar faHotTub = {\n  prefix: 'fas',\n  iconName: 'hot-tub',\n  icon: [512, 512, [], \"f593\", \"M414.21 177.65c1.02 8.21 7.75 14.35 15.75 14.35h16.12c9.51 0 17.08-8.57 16-18.35-4.34-39.11-22.4-74.53-50.13-97.16-17.37-14.17-28.82-36.75-31.98-62.15C378.96 6.14 372.22 0 364.23 0h-16.12c-9.51 0-17.09 8.57-16 18.35 4.34 39.11 22.4 74.53 50.13 97.16 17.36 14.17 28.82 36.75 31.97 62.14zm-108 0c1.02 8.21 7.75 14.35 15.75 14.35h16.12c9.51 0 17.08-8.57 16-18.35-4.34-39.11-22.4-74.53-50.13-97.16-17.37-14.17-28.82-36.75-31.98-62.15C270.96 6.14 264.22 0 256.23 0h-16.12c-9.51 0-17.09 8.57-16 18.35 4.34 39.11 22.4 74.53 50.13 97.16 17.36 14.17 28.82 36.75 31.97 62.14zM480 256H256l-110.93-83.2a63.99 63.99 0 0 0-38.4-12.8H64c-35.35 0-64 28.65-64 64v224c0 35.35 28.65 64 64 64h384c35.35 0 64-28.65 64-64V288c0-17.67-14.33-32-32-32zM128 440c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8V328c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v112zm96 0c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8V328c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v112zm96 0c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8V328c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v112zm96 0c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8V328c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v112zM64 128c35.35 0 64-28.65 64-64S99.35 0 64 0 0 28.65 0 64s28.65 64 64 64z\"]\n};\nvar faHotdog = {\n  prefix: 'fas',\n  iconName: 'hotdog',\n  icon: [512, 512, [], \"f80f\", \"M488.56 23.44a80 80 0 0 0-113.12 0l-352 352a80 80 0 1 0 113.12 113.12l352-352a80 80 0 0 0 0-113.12zm-49.93 95.19c-19.6 19.59-37.52 22.67-51.93 25.14C373.76 146 364.4 147.6 352 160s-14 21.76-16.23 34.71c-2.48 14.4-5.55 32.33-25.15 51.92s-37.52 22.67-51.92 25.15C245.75 274 236.4 275.6 224 288s-14 21.75-16.23 34.7c-2.47 14.4-5.54 32.33-25.14 51.92s-37.53 22.68-51.93 25.15C117.76 402 108.4 403.6 96 416a16 16 0 0 1-22.63-22.63c19.6-19.59 37.52-22.67 51.92-25.14 13-2.22 22.3-3.82 34.71-16.23s14-21.75 16.22-34.7c2.48-14.4 5.55-32.33 25.15-51.92s37.52-22.67 51.92-25.14c13-2.22 22.3-3.83 34.7-16.23s14-21.76 16.24-34.71c2.47-14.4 5.54-32.33 25.14-51.92s37.52-22.68 51.92-25.15C394.24 110 403.59 108.41 416 96a16 16 0 0 1 22.63 22.63zM31.44 322.18L322.18 31.44l-11.54-11.55c-25-25-63.85-26.66-86.79-3.72L16.17 223.85c-22.94 22.94-21.27 61.79 3.72 86.78zm449.12-132.36L189.82 480.56l11.54 11.55c25 25 63.85 26.66 86.79 3.72l207.68-207.68c22.94-22.94 21.27-61.79-3.72-86.79z\"]\n};\nvar faHotel = {\n  prefix: 'fas',\n  iconName: 'hotel',\n  icon: [576, 512, [], \"f594\", \"M560 64c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16H16C7.16 0 0 7.16 0 16v32c0 8.84 7.16 16 16 16h15.98v384H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h240v-80c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v80h240c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16h-16V64h16zm-304 44.8c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4zm0 96c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4zm-128-96c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4zM179.2 256h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4c0 6.4-6.4 12.8-12.8 12.8zM192 384c0-53.02 42.98-96 96-96s96 42.98 96 96H192zm256-140.8c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm0-96c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4z\"]\n};\nvar faHourglass = {\n  prefix: 'fas',\n  iconName: 'hourglass',\n  icon: [384, 512, [], \"f254\", \"M360 64c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24 0 90.965 51.016 167.734 120.842 192C75.016 280.266 24 357.035 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24 0-90.965-51.016-167.734-120.842-192C308.984 231.734 360 154.965 360 64z\"]\n};\nvar faHourglassEnd = {\n  prefix: 'fas',\n  iconName: 'hourglass-end',\n  icon: [384, 512, [], \"f253\", \"M360 64c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24 0 90.965 51.016 167.734 120.842 192C75.016 280.266 24 357.035 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24 0-90.965-51.016-167.734-120.842-192C308.984 231.734 360 154.965 360 64zM192 208c-57.787 0-104-66.518-104-144h208c0 77.945-46.51 144-104 144z\"]\n};\nvar faHourglassHalf = {\n  prefix: 'fas',\n  iconName: 'hourglass-half',\n  icon: [384, 512, [], \"f252\", \"M360 0H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24 0 90.965 51.016 167.734 120.842 192C75.016 280.266 24 357.035 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24 0-90.965-51.016-167.734-120.842-192C308.984 231.734 360 154.965 360 64c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24zm-75.078 384H99.08c17.059-46.797 52.096-80 92.92-80 40.821 0 75.862 33.196 92.922 80zm.019-256H99.078C91.988 108.548 88 86.748 88 64h208c0 22.805-3.987 44.587-11.059 64z\"]\n};\nvar faHourglassStart = {\n  prefix: 'fas',\n  iconName: 'hourglass-start',\n  icon: [384, 512, [], \"f251\", \"M360 0H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24 0 90.965 51.016 167.734 120.842 192C75.016 280.266 24 357.035 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24 0-90.965-51.016-167.734-120.842-192C308.984 231.734 360 154.965 360 64c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24zm-64 448H88c0-77.458 46.204-144 104-144 57.786 0 104 66.517 104 144z\"]\n};\nvar faHouseDamage = {\n  prefix: 'fas',\n  iconName: 'house-damage',\n  icon: [576, 512, [], \"f6f1\", \"M288 114.96L69.47 307.71c-1.62 1.46-3.69 2.14-5.47 3.35V496c0 8.84 7.16 16 16 16h149.23L192 439.19l104.11-64-60.16-119.22L384 392.75l-104.11 64L319.81 512H496c8.84 0 16-7.16 16-16V311.1c-1.7-1.16-3.72-1.82-5.26-3.2L288 114.96zm282.69 121.32L512 184.45V48c0-8.84-7.16-16-16-16h-64c-8.84 0-16 7.16-16 16v51.69L314.75 10.31C307.12 3.45 297.56.01 288 0s-19.1 3.41-26.7 10.27L5.31 236.28c-6.57 5.91-7.12 16.02-1.21 22.6l21.4 23.82c5.9 6.57 16.02 7.12 22.6 1.21L277.42 81.63c6.05-5.33 15.12-5.33 21.17 0L527.91 283.9c6.57 5.9 16.69 5.36 22.6-1.21l21.4-23.82c5.9-6.57 5.36-16.69-1.22-22.59z\"]\n};\nvar faHouseUser = {\n  prefix: 'fas',\n  iconName: 'house-user',\n  icon: [576, 512, [], \"e065\", \"M570.69,236.27,512,184.44V48a16,16,0,0,0-16-16H432a16,16,0,0,0-16,16V99.67L314.78,10.3C308.5,4.61,296.53,0,288,0s-20.46,4.61-26.74,10.3l-256,226A18.27,18.27,0,0,0,0,248.2a18.64,18.64,0,0,0,4.09,10.71L25.5,282.7a21.14,21.14,0,0,0,12,5.3,21.67,21.67,0,0,0,10.69-4.11l15.9-14V480a32,32,0,0,0,32,32H480a32,32,0,0,0,32-32V269.88l15.91,14A21.94,21.94,0,0,0,538.63,288a20.89,20.89,0,0,0,11.87-5.31l21.41-23.81A21.64,21.64,0,0,0,576,248.19,21,21,0,0,0,570.69,236.27ZM288,176a64,64,0,1,1-64,64A64,64,0,0,1,288,176ZM400,448H176a16,16,0,0,1-16-16,96,96,0,0,1,96-96h64a96,96,0,0,1,96,96A16,16,0,0,1,400,448Z\"]\n};\nvar faHryvnia = {\n  prefix: 'fas',\n  iconName: 'hryvnia',\n  icon: [384, 512, [], \"f6f2\", \"M368 240c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16h-41.86c13.41-28.63 13.74-63.33-4.13-94.05C303.34 49.84 267.1 32 229.96 32h-78.82c-24.32 0-47.86 8.53-66.54 24.09L72.83 65.9c-10.18 8.49-11.56 23.62-3.07 33.8l20.49 24.59c8.49 10.19 23.62 11.56 33.81 3.07l11.73-9.78c4.32-3.6 9.77-5.57 15.39-5.57h83.62c11.69 0 21.2 9.52 21.2 21.2 0 5.91-2.48 11.58-6.81 15.58L219.7 176H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h134.37l-34.67 32H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h41.86c-13.41 28.63-13.74 63.33 4.13 94.05C80.66 462.15 116.9 480 154.04 480h78.82c24.32 0 47.86-8.53 66.54-24.09l11.77-9.81c10.18-8.49 11.56-23.62 3.07-33.8l-20.49-24.59c-8.49-10.19-23.62-11.56-33.81-3.07l-11.75 9.8a23.992 23.992 0 0 1-15.36 5.56H149.2c-11.69 0-21.2-9.52-21.2-21.2 0-5.91 2.48-11.58 6.81-15.58L164.3 336H368c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16H233.63l34.67-32H368z\"]\n};\nvar faICursor = {\n  prefix: 'fas',\n  iconName: 'i-cursor',\n  icon: [256, 512, [], \"f246\", \"M256 52.048V12.065C256 5.496 250.726.148 244.158.066 211.621-.344 166.469.011 128 37.959 90.266.736 46.979-.114 11.913.114 5.318.157 0 5.519 0 12.114v39.645c0 6.687 5.458 12.078 12.145 11.998C38.111 63.447 96 67.243 96 112.182V224H60c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h36v112c0 44.932-56.075 48.031-83.95 47.959C5.404 447.942 0 453.306 0 459.952v39.983c0 6.569 5.274 11.917 11.842 11.999 32.537.409 77.689.054 116.158-37.894 37.734 37.223 81.021 38.073 116.087 37.845 6.595-.043 11.913-5.405 11.913-12V460.24c0-6.687-5.458-12.078-12.145-11.998C217.889 448.553 160 444.939 160 400V288h36c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-36V112.182c0-44.932 56.075-48.213 83.95-48.142 6.646.018 12.05-5.346 12.05-11.992z\"]\n};\nvar faIceCream = {\n  prefix: 'fas',\n  iconName: 'ice-cream',\n  icon: [448, 512, [], \"f810\", \"M368 160h-.94a144 144 0 1 0-286.12 0H80a48 48 0 0 0 0 96h288a48 48 0 0 0 0-96zM195.38 493.69a31.52 31.52 0 0 0 57.24 0L352 288H96z\"]\n};\nvar faIcicles = {\n  prefix: 'fas',\n  iconName: 'icicles',\n  icon: [512, 512, [], \"f7ad\", \"M511.4 37.9C515.1 18.2 500 0 480 0H32C10.6 0-4.8 20.7 1.4 41.2l87.1 273.4c2.5 7.2 12.7 7.2 15.1 0L140 190.5l44.2 187.3c1.9 8.3 13.7 8.3 15.6 0l46.5-196.9 34.1 133.4c2.3 7.6 13 7.6 15.3 0l45.8-172.5 66.7 363.8c1.7 8.6 14 8.6 15.7 0l87.5-467.7z\"]\n};\nvar faIcons = {\n  prefix: 'fas',\n  iconName: 'icons',\n  icon: [512, 512, [], \"f86d\", \"M116.65 219.35a15.68 15.68 0 0 0 22.65 0l96.75-99.83c28.15-29 26.5-77.1-4.91-103.88C203.75-7.7 163-3.5 137.86 22.44L128 32.58l-9.85-10.14C93.05-3.5 52.25-7.7 24.86 15.64c-31.41 26.78-33 74.85-5 103.88zm143.92 100.49h-48l-7.08-14.24a27.39 27.39 0 0 0-25.66-17.78h-71.71a27.39 27.39 0 0 0-25.66 17.78l-7 14.24h-48A27.45 27.45 0 0 0 0 347.3v137.25A27.44 27.44 0 0 0 27.43 512h233.14A27.45 27.45 0 0 0 288 484.55V347.3a27.45 27.45 0 0 0-27.43-27.46zM144 468a52 52 0 1 1 52-52 52 52 0 0 1-52 52zm355.4-115.9h-60.58l22.36-50.75c2.1-6.65-3.93-13.21-12.18-13.21h-75.59c-6.3 0-11.66 3.9-12.5 9.1l-16.8 106.93c-1 6.3 4.88 11.89 12.5 11.89h62.31l-24.2 83c-1.89 6.65 4.2 12.9 12.23 12.9a13.26 13.26 0 0 0 10.92-5.25l92.4-138.91c4.88-6.91-1.16-15.7-10.87-15.7zM478.08.33L329.51 23.17C314.87 25.42 304 38.92 304 54.83V161.6a83.25 83.25 0 0 0-16-1.7c-35.35 0-64 21.48-64 48s28.65 48 64 48c35.2 0 63.73-21.32 64-47.66V99.66l112-17.22v47.18a83.25 83.25 0 0 0-16-1.7c-35.35 0-64 21.48-64 48s28.65 48 64 48c35.2 0 63.73-21.32 64-47.66V32c0-19.48-16-34.42-33.92-31.67z\"]\n};\nvar faIdBadge = {\n  prefix: 'fas',\n  iconName: 'id-badge',\n  icon: [384, 512, [], \"f2c1\", \"M336 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM144 32h96c8.8 0 16 7.2 16 16s-7.2 16-16 16h-96c-8.8 0-16-7.2-16-16s7.2-16 16-16zm48 128c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H102.4C90 416 80 407.4 80 396.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2z\"]\n};\nvar faIdCard = {\n  prefix: 'fas',\n  iconName: 'id-card',\n  icon: [576, 512, [], \"f2c2\", \"M528 32H48C21.5 32 0 53.5 0 80v16h576V80c0-26.5-21.5-48-48-48zM0 432c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V128H0v304zm352-232c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16zm0 64c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16zm0 64c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16zM176 192c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zM67.1 396.2C75.5 370.5 99.6 352 128 352h8.2c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h8.2c28.4 0 52.5 18.5 60.9 44.2 3.2 9.9-5.2 19.8-15.6 19.8H82.7c-10.4 0-18.8-10-15.6-19.8z\"]\n};\nvar faIdCardAlt = {\n  prefix: 'fas',\n  iconName: 'id-card-alt',\n  icon: [576, 512, [], \"f47f\", \"M528 64H384v96H192V64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM288 224c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm93.3 224H194.7c-10.4 0-18.8-10-15.6-19.8 8.3-25.6 32.4-44.2 60.9-44.2h8.2c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h8.2c28.4 0 52.5 18.5 60.9 44.2 3.2 9.8-5.2 19.8-15.6 19.8zM352 32c0-17.7-14.3-32-32-32h-64c-17.7 0-32 14.3-32 32v96h128V32z\"]\n};\nvar faIgloo = {\n  prefix: 'fas',\n  iconName: 'igloo',\n  icon: [576, 512, [], \"f7ae\", \"M320 33.9c-10.5-1.2-21.2-1.9-32-1.9-99.8 0-187.8 50.8-239.4 128H320V33.9zM96 192H30.3C11.1 230.6 0 274 0 320h96V192zM352 39.4V160h175.4C487.2 99.9 424.8 55.9 352 39.4zM480 320h96c0-46-11.1-89.4-30.3-128H480v128zm-64 64v96h128c17.7 0 32-14.3 32-32v-96H411.5c2.6 10.3 4.5 20.9 4.5 32zm32-192H128v128h49.8c22.2-38.1 63-64 110.2-64s88 25.9 110.2 64H448V192zM0 448c0 17.7 14.3 32 32 32h128v-96c0-11.1 1.9-21.7 4.5-32H0v96zm288-160c-53 0-96 43-96 96v96h192v-96c0-53-43-96-96-96z\"]\n};\nvar faImage = {\n  prefix: 'fas',\n  iconName: 'image',\n  icon: [512, 512, [], \"f03e\", \"M464 448H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48zM112 120c-30.928 0-56 25.072-56 56s25.072 56 56 56 56-25.072 56-56-25.072-56-56-56zM64 384h384V272l-87.515-87.515c-4.686-4.686-12.284-4.686-16.971 0L208 320l-55.515-55.515c-4.686-4.686-12.284-4.686-16.971 0L64 336v48z\"]\n};\nvar faImages = {\n  prefix: 'fas',\n  iconName: 'images',\n  icon: [576, 512, [], \"f302\", \"M480 416v16c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V176c0-26.51 21.49-48 48-48h16v208c0 44.112 35.888 80 80 80h336zm96-80V80c0-26.51-21.49-48-48-48H144c-26.51 0-48 21.49-48 48v256c0 26.51 21.49 48 48 48h384c26.51 0 48-21.49 48-48zM256 128c0 26.51-21.49 48-48 48s-48-21.49-48-48 21.49-48 48-48 48 21.49 48 48zm-96 144l55.515-55.515c4.686-4.686 12.284-4.686 16.971 0L272 256l135.515-135.515c4.686-4.686 12.284-4.686 16.971 0L512 208v112H160v-48z\"]\n};\nvar faInbox = {\n  prefix: 'fas',\n  iconName: 'inbox',\n  icon: [576, 512, [], \"f01c\", \"M567.938 243.908L462.25 85.374A48.003 48.003 0 0 0 422.311 64H153.689a48 48 0 0 0-39.938 21.374L8.062 243.908A47.994 47.994 0 0 0 0 270.533V400c0 26.51 21.49 48 48 48h480c26.51 0 48-21.49 48-48V270.533a47.994 47.994 0 0 0-8.062-26.625zM162.252 128h251.497l85.333 128H376l-32 64H232l-32-64H76.918l85.334-128z\"]\n};\nvar faIndent = {\n  prefix: 'fas',\n  iconName: 'indent',\n  icon: [448, 512, [], \"f03c\", \"M27.31 363.3l96-96a16 16 0 0 0 0-22.62l-96-96C17.27 138.66 0 145.78 0 160v192c0 14.31 17.33 21.3 27.31 11.3zM432 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm3.17-128H204.83A12.82 12.82 0 0 0 192 300.83v38.34A12.82 12.82 0 0 0 204.83 352h230.34A12.82 12.82 0 0 0 448 339.17v-38.34A12.82 12.82 0 0 0 435.17 288zm0-128H204.83A12.82 12.82 0 0 0 192 172.83v38.34A12.82 12.82 0 0 0 204.83 224h230.34A12.82 12.82 0 0 0 448 211.17v-38.34A12.82 12.82 0 0 0 435.17 160zM432 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faIndustry = {\n  prefix: 'fas',\n  iconName: 'industry',\n  icon: [512, 512, [], \"f275\", \"M475.115 163.781L336 252.309v-68.28c0-18.916-20.931-30.399-36.885-20.248L160 252.309V56c0-13.255-10.745-24-24-24H24C10.745 32 0 42.745 0 56v400c0 13.255 10.745 24 24 24h464c13.255 0 24-10.745 24-24V184.029c0-18.917-20.931-30.399-36.885-20.248z\"]\n};\nvar faInfinity = {\n  prefix: 'fas',\n  iconName: 'infinity',\n  icon: [640, 512, [], \"f534\", \"M471.1 96C405 96 353.3 137.3 320 174.6 286.7 137.3 235 96 168.9 96 75.8 96 0 167.8 0 256s75.8 160 168.9 160c66.1 0 117.8-41.3 151.1-78.6 33.3 37.3 85 78.6 151.1 78.6 93.1 0 168.9-71.8 168.9-160S564.2 96 471.1 96zM168.9 320c-40.2 0-72.9-28.7-72.9-64s32.7-64 72.9-64c38.2 0 73.4 36.1 94 64-20.4 27.6-55.9 64-94 64zm302.2 0c-38.2 0-73.4-36.1-94-64 20.4-27.6 55.9-64 94-64 40.2 0 72.9 28.7 72.9 64s-32.7 64-72.9 64z\"]\n};\nvar faInfo = {\n  prefix: 'fas',\n  iconName: 'info',\n  icon: [192, 512, [], \"f129\", \"M20 424.229h20V279.771H20c-11.046 0-20-8.954-20-20V212c0-11.046 8.954-20 20-20h112c11.046 0 20 8.954 20 20v212.229h20c11.046 0 20 8.954 20 20V492c0 11.046-8.954 20-20 20H20c-11.046 0-20-8.954-20-20v-47.771c0-11.046 8.954-20 20-20zM96 0C56.235 0 24 32.235 24 72s32.235 72 72 72 72-32.235 72-72S135.764 0 96 0z\"]\n};\nvar faInfoCircle = {\n  prefix: 'fas',\n  iconName: 'info-circle',\n  icon: [512, 512, [], \"f05a\", \"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z\"]\n};\nvar faItalic = {\n  prefix: 'fas',\n  iconName: 'italic',\n  icon: [320, 512, [], \"f033\", \"M320 48v32a16 16 0 0 1-16 16h-62.76l-80 320H208a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16H16a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h62.76l80-320H112a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16h192a16 16 0 0 1 16 16z\"]\n};\nvar faJedi = {\n  prefix: 'fas',\n  iconName: 'jedi',\n  icon: [576, 512, [], \"f669\", \"M535.95308,352c-42.64069,94.17188-137.64086,160-247.9848,160q-6.39844,0-12.84377-.29688C171.15558,506.9375,81.26481,442.23438,40.01474,352H79.93668L21.3272,293.40625a264.82522,264.82522,0,0,1-5.10938-39.42187,273.6653,273.6653,0,0,1,.5-29.98438H63.93665L22.546,182.625A269.79782,269.79782,0,0,1,130.51489,20.54688a16.06393,16.06393,0,0,1,9.28127-3,16.36332,16.36332,0,0,1,13.5,7.25,16.02739,16.02739,0,0,1,1.625,15.09374,138.387,138.387,0,0,0-9.84376,51.26563c0,45.10937,21.04691,86.57813,57.71884,113.73437a16.29989,16.29989,0,0,1,1.20313,25.39063c-26.54692,23.98437-41.17194,56.5-41.17194,91.57813,0,60.03124,42.95319,110.28124,99.89079,121.92187l2.5-65.26563L238.062,397a8.33911,8.33911,0,0,1-10-.75,8.025,8.025,0,0,1-1.39063-9.9375l20.125-33.76562-42.06257-8.73438a7.9898,7.9898,0,0,1,0-15.65625l42.06257-8.71875-20.10941-33.73438a7.99122,7.99122,0,0,1,11.35939-10.71874L268.437,295.64062,279.95265,7.67188a7.97138,7.97138,0,0,1,8-7.67188h.04687a8.02064,8.02064,0,0,1,7.95314,7.70312L307.48394,295.625l30.39068-20.67188a8.08327,8.08327,0,0,1,10,.8125,7.99866,7.99866,0,0,1,1.39062,9.90626L329.12461,319.4375l42.07819,8.73438a7.99373,7.99373,0,0,1,0,15.65624l-42.07819,8.71876,20.1094,33.73437a7.97791,7.97791,0,0,1-1.32812,9.92187A8.25739,8.25739,0,0,1,337.87462,397L310.7027,378.53125l2.5,65.34375c48.48446-9.40625,87.57828-48.15625,97.31267-96.5A123.52652,123.52652,0,0,0,371.9528,230.29688a16.30634,16.30634,0,0,1,1.20313-25.42188c36.65631-27.17188,57.6876-68.60938,57.6876-113.73438a138.01689,138.01689,0,0,0-9.85939-51.3125,15.98132,15.98132,0,0,1,1.60937-15.09374,16.36914,16.36914,0,0,1,13.5-7.23438,16.02453,16.02453,0,0,1,9.25,2.98438A271.26947,271.26947,0,0,1,553.25,182.76562L511.99992,224h46.9532C559.3125,229.76562,560,235.45312,560,241.26562a270.092,270.092,0,0,1-5.125,51.85938L495.98427,352Z\"]\n};\nvar faJoint = {\n  prefix: 'fas',\n  iconName: 'joint',\n  icon: [640, 512, [], \"f595\", \"M444.34 181.1c22.38 15.68 35.66 41.16 35.66 68.59V280c0 4.42 3.58 8 8 8h48c4.42 0 8-3.58 8-8v-30.31c0-43.24-21.01-83.41-56.34-108.06C463.85 125.02 448 99.34 448 70.31V8c0-4.42-3.58-8-8-8h-48c-4.42 0-8 3.58-8 8v66.4c0 43.69 24.56 81.63 60.34 106.7zM194.97 358.98C126.03 370.07 59.69 394.69 0 432c83.65 52.28 180.3 80 278.94 80h88.57L254.79 380.49c-14.74-17.2-37.45-25.11-59.82-21.51zM553.28 87.09c-5.67-3.8-9.28-9.96-9.28-16.78V8c0-4.42-3.58-8-8-8h-48c-4.42 0-8 3.58-8 8v62.31c0 22.02 10.17 43.41 28.64 55.39C550.79 153.04 576 199.54 576 249.69V280c0 4.42 3.58 8 8 8h48c4.42 0 8-3.58 8-8v-30.31c0-65.44-32.41-126.19-86.72-162.6zM360.89 352.05c-34.4.06-86.81.15-88.21.17l117.8 137.43A63.987 63.987 0 0 0 439.07 512h88.45L409.57 374.4a63.955 63.955 0 0 0-48.68-22.35zM616 352H432l117.99 137.65A63.987 63.987 0 0 0 598.58 512H616c13.25 0 24-10.75 24-24V376c0-13.26-10.75-24-24-24z\"]\n};\nvar faJournalWhills = {\n  prefix: 'fas',\n  iconName: 'journal-whills',\n  icon: [448, 512, [], \"f66a\", \"M438.40625,377.59375c-3.20313,12.8125-3.20313,57.60937,0,73.60937Q447.9922,460.78907,448,470.40625v16c0,16-12.79688,25.59375-25.59375,25.59375H96c-54.40625,0-96-41.59375-96-96V96C0,41.59375,41.59375,0,96,0H422.40625C438.40625,0,448,9.59375,448,25.59375v332.8125Q448,372.79688,438.40625,377.59375ZM380.79688,384H96c-16,0-32,12.79688-32,32s12.79688,32,32,32H380.79688ZM128.01562,176.01562c0,.51563.14063.98438.14063,1.5l37.10937,32.46876A7.99954,7.99954,0,0,1,160,224h-.01562a9.17678,9.17678,0,0,1-5.25-1.98438L131.14062,201.375C142.6875,250.95312,186.90625,288,240,288s97.3125-37.04688,108.875-86.625l-23.59375,20.64062a8.02516,8.02516,0,0,1-5.26563,1.96876H320a9.14641,9.14641,0,0,1-6.01562-2.71876A9.26508,9.26508,0,0,1,312,216a9.097,9.097,0,0,1,2.73438-6.01562l37.10937-32.46876c.01563-.53124.15625-1,.15625-1.51562,0-11.04688-2.09375-21.51562-5.06251-31.59375l-21.26562,21.25a8.00467,8.00467,0,0,1-11.32812-11.3125l26.42187-26.40625a111.81517,111.81517,0,0,0-46.35937-49.26562,63.02336,63.02336,0,0,1-14.0625,82.64062A55.83846,55.83846,0,0,1,251.625,254.73438l-1.42188-34.28126,12.67188,8.625a3.967,3.967,0,0,0,2.25.6875,3.98059,3.98059,0,0,0,3.43749-6.03124l-8.53124-14.3125,17.90625-3.71876a4.00647,4.00647,0,0,0,0-7.84374l-17.90625-3.71876,8.53124-14.3125a3.98059,3.98059,0,0,0-3.43749-6.03124,4.726,4.726,0,0,0-2.25.67187L248.6875,184.125,244,71.82812a4.00386,4.00386,0,0,0-8,0l-4.625,110.8125-12-8.15624a4.003,4.003,0,0,0-5.68751,5.35937l8.53126,14.3125L204.3125,197.875a3.99686,3.99686,0,0,0,0,7.82812l17.90625,3.73438-8.53126,14.29688a4.72469,4.72469,0,0,0-.56249,2.04687,4.59547,4.59547,0,0,0,1.25,2.90625,4.01059,4.01059,0,0,0,2.75,1.09375,4.09016,4.09016,0,0,0,2.25-.6875l10.35937-7.04687L228.375,254.76562a55.86414,55.86414,0,0,1-28.71875-93.45312,63.01119,63.01119,0,0,1-14.04688-82.65625,111.93158,111.93158,0,0,0-46.375,49.26563l26.42187,26.42187a7.99917,7.99917,0,0,1-11.3125,11.3125l-21.26563-21.26563C130.09375,154.48438,128,164.95312,128.01562,176.01562Z\"]\n};\nvar faKaaba = {\n  prefix: 'fas',\n  iconName: 'kaaba',\n  icon: [576, 512, [], \"f66b\", \"M554.12 83.51L318.36 4.93a95.962 95.962 0 0 0-60.71 0L21.88 83.51A32.006 32.006 0 0 0 0 113.87v49.01l265.02-79.51c15.03-4.5 30.92-4.5 45.98 0l265 79.51v-49.01c0-13.77-8.81-26-21.88-30.36zm-279.9 30.52L0 196.3v228.38c0 15 10.42 27.98 25.06 31.24l242.12 53.8a95.937 95.937 0 0 0 41.65 0l242.12-53.8c14.64-3.25 25.06-16.24 25.06-31.24V196.29l-274.2-82.26c-9.04-2.72-18.59-2.72-27.59 0zM128 230.11c0 3.61-2.41 6.77-5.89 7.72l-80 21.82C37.02 261.03 32 257.2 32 251.93v-16.58c0-3.61 2.41-6.77 5.89-7.72l80-21.82c5.09-1.39 10.11 2.44 10.11 7.72v16.58zm144-39.28c0 3.61-2.41 6.77-5.89 7.72l-96 26.18c-5.09 1.39-10.11-2.44-10.11-7.72v-16.58c0-3.61 2.41-6.77 5.89-7.72l96-26.18c5.09-1.39 10.11 2.44 10.11 7.72v16.58zm176 22.7c0-5.28 5.02-9.11 10.11-7.72l80 21.82c3.48.95 5.89 4.11 5.89 7.72v16.58c0 5.28-5.02 9.11-10.11 7.72l-80-21.82a7.997 7.997 0 0 1-5.89-7.72v-16.58zm-144-39.27c0-5.28 5.02-9.11 10.11-7.72l96 26.18c3.48.95 5.89 4.11 5.89 7.72v16.58c0 5.28-5.02 9.11-10.11 7.72l-96-26.18a7.997 7.997 0 0 1-5.89-7.72v-16.58z\"]\n};\nvar faKey = {\n  prefix: 'fas',\n  iconName: 'key',\n  icon: [512, 512, [], \"f084\", \"M512 176.001C512 273.203 433.202 352 336 352c-11.22 0-22.19-1.062-32.827-3.069l-24.012 27.014A23.999 23.999 0 0 1 261.223 384H224v40c0 13.255-10.745 24-24 24h-40v40c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24v-78.059c0-6.365 2.529-12.47 7.029-16.971l161.802-161.802C163.108 213.814 160 195.271 160 176 160 78.798 238.797.001 335.999 0 433.488-.001 512 78.511 512 176.001zM336 128c0 26.51 21.49 48 48 48s48-21.49 48-48-21.49-48-48-48-48 21.49-48 48z\"]\n};\nvar faKeyboard = {\n  prefix: 'fas',\n  iconName: 'keyboard',\n  icon: [576, 512, [], \"f11c\", \"M528 448H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h480c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48zM128 180v-40c0-6.627-5.373-12-12-12H76c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm-336 96v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm-336 96v-40c0-6.627-5.373-12-12-12H76c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm288 0v-40c0-6.627-5.373-12-12-12H172c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h232c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12z\"]\n};\nvar faKhanda = {\n  prefix: 'fas',\n  iconName: 'khanda',\n  icon: [512, 512, [], \"f66d\", \"M415.81 66c-6.37-3.5-14.37-2.33-19.36 3.02a15.974 15.974 0 0 0-1.91 19.52c16.49 26.16 25.2 56.39 25.2 87.41-.19 53.25-26.77 102.69-71.27 132.41l-76.63 53.35v-20.1l44.05-36.09c3.92-4.2 5-10.09 2.81-15.28L310.85 273c33.84-19.26 56.94-55.25 56.94-96.99 0-40.79-22.02-76.13-54.59-95.71l5.22-11.44c2.34-5.53.93-11.83-3.57-16.04L255.86 0l-58.99 52.81c-4.5 4.21-5.9 10.51-3.57 16.04l5.22 11.44c-32.57 19.58-54.59 54.93-54.59 95.72 0 41.75 23.09 77.73 56.94 96.99l-7.85 17.24c-2.19 5.18-1.1 11.07 2.81 15.28l44.05 36.09v19.9l-76.59-53.33C119.02 278.62 92.44 229.19 92.26 176c0-31.08 8.71-61.31 25.2-87.47 3.87-6.16 2.4-13.77-2.59-19.08-5-5.34-13.68-6.2-20.02-2.7C16.32 109.6-22.3 205.3 13.36 295.99c7.07 17.99 17.89 34.38 30.46 49.06l55.97 65.36c4.87 5.69 13.04 7.24 19.65 3.72l79.35-42.23L228 392.23l-47.08 32.78c-1.67-.37-3.23-1.01-5.01-1.01-13.25 0-23.99 10.74-23.99 24 0 13.25 10.74 24 23.99 24 12.1 0 21.69-9.11 23.33-20.76l40.63-28.28v29.95c-9.39 5.57-15.99 15.38-15.99 27.1 0 17.67 14.32 32 31.98 32s31.98-14.33 31.98-32c0-11.71-6.61-21.52-15.99-27.1v-30.15l40.91 28.48C314.41 462.89 324 472 336.09 472c13.25 0 23.99-10.75 23.99-24 0-13.26-10.74-24-23.99-24-1.78 0-3.34.64-5.01 1.01L284 392.23l29.21-20.34 79.35 42.23c6.61 3.52 14.78 1.97 19.65-3.71l52.51-61.31c18.87-22.02 34-47.5 41.25-75.59 21.62-83.66-16.45-167.27-90.16-207.51zm-95.99 110c0 22.3-11.49 41.92-28.83 53.38l-5.65-12.41c-8.75-24.52-8.75-51.04 0-75.56l7.83-17.18c16.07 11.65 26.65 30.45 26.65 51.77zm-127.93 0c0-21.32 10.58-40.12 26.66-51.76l7.83 17.18c8.75 24.52 8.75 51.03 0 75.56l-5.65 12.41c-17.34-11.46-28.84-31.09-28.84-53.39z\"]\n};\nvar faKiss = {\n  prefix: 'fas',\n  iconName: 'kiss',\n  icon: [496, 512, [], \"f596\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-80 232c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm136 156c0 19.2-28.7 41.5-71.5 44-8.5.8-12.1-11.8-3.6-15.4l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-6-2.5-6.1-12.2 0-14.8l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-8.6-3.6-4.8-16.5 3.6-15.4 42.8 2.5 71.5 24.8 71.5 44 0 13-13.4 27.3-35.2 36C290.6 368.7 304 383 304 396zm24-156c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faKissBeam = {\n  prefix: 'fas',\n  iconName: 'kiss-beam',\n  icon: [496, 512, [], \"f597\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-39 219.9l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.5 8.5-10.9 12-15.1 4.5zM304 396c0 19.2-28.7 41.5-71.5 44-8.5.8-12.1-11.8-3.6-15.4l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-6-2.5-6.1-12.2 0-14.8l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-8.6-3.6-4.8-16.5 3.6-15.4 42.8 2.5 71.5 24.8 71.5 44 0 13-13.4 27.3-35.2 36C290.6 368.7 304 383 304 396zm65-168.1l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.1 7.3-15.6 4-14.9-4.5 3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.5 8.5-10.9 12-15.1 4.5z\"]\n};\nvar faKissWinkHeart = {\n  prefix: 'fas',\n  iconName: 'kiss-wink-heart',\n  icon: [504, 512, [], \"f598\", \"M501.1 402.5c-8-20.8-31.5-31.5-53.1-25.9l-8.4 2.2-2.3-8.4c-5.9-21.4-27-36.5-49-33-25.2 4-40.6 28.6-34 52.6l22.9 82.6c1.5 5.3 7 8.5 12.4 7.1l83-21.5c24.1-6.3 37.7-31.8 28.5-55.7zm-177.6-4c-5.6-20.3-2.3-42 9-59.7 29.7-46.3 98.7-45.5 127.8 4.3 6.4.1 12.6 1.4 18.6 2.9 10.9-27.9 17.1-58.2 17.1-90C496 119 385 8 248 8S0 119 0 256s111 248 248 248c35.4 0 68.9-7.5 99.4-20.9-.3-.7-23.9-84.6-23.9-84.6zM168 240c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm120 156c0 19.2-28.7 41.5-71.5 44-8.5.8-12.1-11.8-3.6-15.4l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-6-2.5-5.7-12.3 0-14.8l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-8.8-3.7-4.6-16.6 3.6-15.4 42.8 2.5 71.5 24.8 71.5 44 0 13-13.4 27.3-35.2 36C274.6 368.7 288 383 288 396zm16-179c-8.3 7.4-21.6.4-19.8-10.8 4-25.2 34.2-42.1 59.9-42.1S400 181 404 206.2c1.7 11.1-11.3 18.3-19.8 10.8l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L304 217z\"]\n};\nvar faKiwiBird = {\n  prefix: 'fas',\n  iconName: 'kiwi-bird',\n  icon: [576, 512, [], \"f535\", \"M575.81 217.98C572.64 157.41 518.28 112 457.63 112h-9.37c-52.82 0-104.25-16.25-147.74-46.24-41.99-28.96-96.04-41.62-153.21-28.7C129.3 41.12-.08 78.24 0 224c.04 70.95 38.68 132.8 95.99 166.01V464c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-54.26c15.36 3.96 31.4 6.26 48 6.26 5.44 0 10.68-.73 16-1.18V464c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-59.43c14.24-5.06 27.88-11.39 40.34-19.51C342.07 355.25 393.86 336 448.46 336c25.48 0 16.01-.31 23.05-.78l74.41 136.44c2.86 5.23 8.3 8.34 14.05 8.34 1.31 0 2.64-.16 3.95-.5 7.09-1.8 12.05-8.19 12.05-15.5 0 0 .14-240.24-.16-246.02zM463.97 248c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm80 153.25l-39.86-73.08c15.12-5.83 28.73-14.6 39.86-25.98v99.06z\"]\n};\nvar faLandmark = {\n  prefix: 'fas',\n  iconName: 'landmark',\n  icon: [512, 512, [], \"f66f\", \"M501.62 92.11L267.24 2.04a31.958 31.958 0 0 0-22.47 0L10.38 92.11A16.001 16.001 0 0 0 0 107.09V144c0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16v-36.91c0-6.67-4.14-12.64-10.38-14.98zM64 192v160H48c-8.84 0-16 7.16-16 16v48h448v-48c0-8.84-7.16-16-16-16h-16V192h-64v160h-96V192h-64v160h-96V192H64zm432 256H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z\"]\n};\nvar faLanguage = {\n  prefix: 'fas',\n  iconName: 'language',\n  icon: [640, 512, [], \"f1ab\", \"M152.1 236.2c-3.5-12.1-7.8-33.2-7.8-33.2h-.5s-4.3 21.1-7.8 33.2l-11.1 37.5H163zM616 96H336v320h280c13.3 0 24-10.7 24-24V120c0-13.3-10.7-24-24-24zm-24 120c0 6.6-5.4 12-12 12h-11.4c-6.9 23.6-21.7 47.4-42.7 69.9 8.4 6.4 17.1 12.5 26.1 18 5.5 3.4 7.3 10.5 4.1 16.2l-7.9 13.9c-3.4 5.9-10.9 7.8-16.7 4.3-12.6-7.8-24.5-16.1-35.4-24.9-10.9 8.7-22.7 17.1-35.4 24.9-5.8 3.5-13.3 1.6-16.7-4.3l-7.9-13.9c-3.2-5.6-1.4-12.8 4.2-16.2 9.3-5.7 18-11.7 26.1-18-7.9-8.4-14.9-17-21-25.7-4-5.7-2.2-13.6 3.7-17.1l6.5-3.9 7.3-4.3c5.4-3.2 12.4-1.7 16 3.4 5 7 10.8 14 17.4 20.9 13.5-14.2 23.8-28.9 30-43.2H412c-6.6 0-12-5.4-12-12v-16c0-6.6 5.4-12 12-12h64v-16c0-6.6 5.4-12 12-12h16c6.6 0 12 5.4 12 12v16h64c6.6 0 12 5.4 12 12zM0 120v272c0 13.3 10.7 24 24 24h280V96H24c-13.3 0-24 10.7-24 24zm58.9 216.1L116.4 167c1.7-4.9 6.2-8.1 11.4-8.1h32.5c5.1 0 9.7 3.3 11.4 8.1l57.5 169.1c2.6 7.8-3.1 15.9-11.4 15.9h-22.9a12 12 0 0 1-11.5-8.6l-9.4-31.9h-60.2l-9.1 31.8c-1.5 5.1-6.2 8.7-11.5 8.7H70.3c-8.2 0-14-8.1-11.4-15.9z\"]\n};\nvar faLaptop = {\n  prefix: 'fas',\n  iconName: 'laptop',\n  icon: [640, 512, [], \"f109\", \"M624 416H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33.02-17.47-32.77-32H16c-8.8 0-16 7.2-16 16v16c0 35.2 28.8 64 64 64h512c35.2 0 64-28.8 64-64v-16c0-8.8-7.2-16-16-16zM576 48c0-26.4-21.6-48-48-48H112C85.6 0 64 21.6 64 48v336h512V48zm-64 272H128V64h384v256z\"]\n};\nvar faLaptopCode = {\n  prefix: 'fas',\n  iconName: 'laptop-code',\n  icon: [640, 512, [], \"f5fc\", \"M255.03 261.65c6.25 6.25 16.38 6.25 22.63 0l11.31-11.31c6.25-6.25 6.25-16.38 0-22.63L253.25 192l35.71-35.72c6.25-6.25 6.25-16.38 0-22.63l-11.31-11.31c-6.25-6.25-16.38-6.25-22.63 0l-58.34 58.34c-6.25 6.25-6.25 16.38 0 22.63l58.35 58.34zm96.01-11.3l11.31 11.31c6.25 6.25 16.38 6.25 22.63 0l58.34-58.34c6.25-6.25 6.25-16.38 0-22.63l-58.34-58.34c-6.25-6.25-16.38-6.25-22.63 0l-11.31 11.31c-6.25 6.25-6.25 16.38 0 22.63L386.75 192l-35.71 35.72c-6.25 6.25-6.25 16.38 0 22.63zM624 416H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33.02-17.47-32.77-32H16c-8.8 0-16 7.2-16 16v16c0 35.2 28.8 64 64 64h512c35.2 0 64-28.8 64-64v-16c0-8.8-7.2-16-16-16zM576 48c0-26.4-21.6-48-48-48H112C85.6 0 64 21.6 64 48v336h512V48zm-64 272H128V64h384v256z\"]\n};\nvar faLaptopHouse = {\n  prefix: 'fas',\n  iconName: 'laptop-house',\n  icon: [640, 512, [], \"e066\", \"M272,288H208a16,16,0,0,1-16-16V208a16,16,0,0,1,16-16h64a16,16,0,0,1,16,16v37.12C299.11,232.24,315,224,332.8,224H469.74l6.65-7.53A16.51,16.51,0,0,0,480,207a16.31,16.31,0,0,0-4.75-10.61L416,144V48a16,16,0,0,0-16-16H368a16,16,0,0,0-16,16V87.3L263.5,8.92C258,4,247.45,0,240.05,0s-17.93,4-23.47,8.92L4.78,196.42A16.15,16.15,0,0,0,0,207a16.4,16.4,0,0,0,3.55,9.39L22.34,237.7A16.22,16.22,0,0,0,33,242.48,16.51,16.51,0,0,0,42.34,239L64,219.88V384a32,32,0,0,0,32,32H272ZM629.33,448H592V288c0-17.67-12.89-32-28.8-32H332.8c-15.91,0-28.8,14.33-28.8,32V448H266.67A10.67,10.67,0,0,0,256,458.67v10.66A42.82,42.82,0,0,0,298.6,512H597.4A42.82,42.82,0,0,0,640,469.33V458.67A10.67,10.67,0,0,0,629.33,448ZM544,448H352V304H544Z\"]\n};\nvar faLaptopMedical = {\n  prefix: 'fas',\n  iconName: 'laptop-medical',\n  icon: [640, 512, [], \"f812\", \"M232 224h56v56a8 8 0 0 0 8 8h48a8 8 0 0 0 8-8v-56h56a8 8 0 0 0 8-8v-48a8 8 0 0 0-8-8h-56v-56a8 8 0 0 0-8-8h-48a8 8 0 0 0-8 8v56h-56a8 8 0 0 0-8 8v48a8 8 0 0 0 8 8zM576 48a48.14 48.14 0 0 0-48-48H112a48.14 48.14 0 0 0-48 48v336h512zm-64 272H128V64h384zm112 96H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33-17.47-32.77-32H16a16 16 0 0 0-16 16v16a64.19 64.19 0 0 0 64 64h512a64.19 64.19 0 0 0 64-64v-16a16 16 0 0 0-16-16z\"]\n};\nvar faLaugh = {\n  prefix: 'fas',\n  iconName: 'laugh',\n  icon: [496, 512, [], \"f599\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 152c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm88 272h-16c-73.4 0-134-55-142.9-126-1.2-9.5 6.3-18 15.9-18h270c9.6 0 17.1 8.4 15.9 18-8.9 71-69.5 126-142.9 126z\"]\n};\nvar faLaughBeam = {\n  prefix: 'fas',\n  iconName: 'laugh-beam',\n  icon: [496, 512, [], \"f59a\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm24 199.4c3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.8 4.1-15.1-4.5zm-160 0c3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.3 7.4-15.8 4-15.1-4.5zM398.9 306C390 377 329.4 432 256 432h-16c-73.4 0-134-55-142.9-126-1.2-9.5 6.3-18 15.9-18h270c9.6 0 17.1 8.4 15.9 18z\"]\n};\nvar faLaughSquint = {\n  prefix: 'fas',\n  iconName: 'laugh-squint',\n  icon: [496, 512, [], \"f59b\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm33.8 161.7l80-48c11.6-6.9 24 7.7 15.4 18L343.6 180l33.6 40.3c8.7 10.4-3.9 24.8-15.4 18l-80-48c-7.7-4.7-7.7-15.9 0-20.6zm-163-30c-8.6-10.3 3.8-24.9 15.4-18l80 48c7.8 4.7 7.8 15.9 0 20.6l-80 48c-11.5 6.8-24-7.6-15.4-18l33.6-40.3-33.6-40.3zM398.9 306C390 377 329.4 432 256 432h-16c-73.4 0-134-55-142.9-126-1.2-9.5 6.3-18 15.9-18h270c9.6 0 17.1 8.4 15.9 18z\"]\n};\nvar faLaughWink = {\n  prefix: 'fas',\n  iconName: 'laugh-wink',\n  icon: [496, 512, [], \"f59c\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm20.1 198.1c4-25.2 34.2-42.1 59.9-42.1s55.9 16.9 59.9 42.1c1.7 11.1-11.4 18.3-19.8 10.8l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L288 217c-8.4 7.4-21.6.3-19.9-10.9zM168 160c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm230.9 146C390 377 329.4 432 256 432h-16c-73.4 0-134-55-142.9-126-1.2-9.5 6.3-18 15.9-18h270c9.6 0 17.1 8.4 15.9 18z\"]\n};\nvar faLayerGroup = {\n  prefix: 'fas',\n  iconName: 'layer-group',\n  icon: [512, 512, [], \"f5fd\", \"M12.41 148.02l232.94 105.67c6.8 3.09 14.49 3.09 21.29 0l232.94-105.67c16.55-7.51 16.55-32.52 0-40.03L266.65 2.31a25.607 25.607 0 0 0-21.29 0L12.41 107.98c-16.55 7.51-16.55 32.53 0 40.04zm487.18 88.28l-58.09-26.33-161.64 73.27c-7.56 3.43-15.59 5.17-23.86 5.17s-16.29-1.74-23.86-5.17L70.51 209.97l-58.1 26.33c-16.55 7.5-16.55 32.5 0 40l232.94 105.59c6.8 3.08 14.49 3.08 21.29 0L499.59 276.3c16.55-7.5 16.55-32.5 0-40zm0 127.8l-57.87-26.23-161.86 73.37c-7.56 3.43-15.59 5.17-23.86 5.17s-16.29-1.74-23.86-5.17L70.29 337.87 12.41 364.1c-16.55 7.5-16.55 32.5 0 40l232.94 105.59c6.8 3.08 14.49 3.08 21.29 0L499.59 404.1c16.55-7.5 16.55-32.5 0-40z\"]\n};\nvar faLeaf = {\n  prefix: 'fas',\n  iconName: 'leaf',\n  icon: [576, 512, [], \"f06c\", \"M546.2 9.7c-5.6-12.5-21.6-13-28.3-1.2C486.9 62.4 431.4 96 368 96h-80C182 96 96 182 96 288c0 7 .8 13.7 1.5 20.5C161.3 262.8 253.4 224 384 224c8.8 0 16 7.2 16 16s-7.2 16-16 16C132.6 256 26 410.1 2.4 468c-6.6 16.3 1.2 34.9 17.5 41.6 16.4 6.8 35-1.1 41.8-17.3 1.5-3.6 20.9-47.9 71.9-90.6 32.4 43.9 94 85.8 174.9 77.2C465.5 467.5 576 326.7 576 154.3c0-50.2-10.8-102.2-29.8-144.6z\"]\n};\nvar faLemon = {\n  prefix: 'fas',\n  iconName: 'lemon',\n  icon: [512, 512, [], \"f094\", \"M489.038 22.963C465.944-.13 434.648-5.93 413.947 6.129c-58.906 34.312-181.25-53.077-321.073 86.746S40.441 355.041 6.129 413.945c-12.059 20.702-6.26 51.999 16.833 75.093 23.095 23.095 54.392 28.891 75.095 16.832 58.901-34.31 181.246 53.079 321.068-86.743S471.56 156.96 505.871 98.056c12.059-20.702 6.261-51.999-16.833-75.093zM243.881 95.522c-58.189 14.547-133.808 90.155-148.358 148.358-1.817 7.27-8.342 12.124-15.511 12.124-1.284 0-2.59-.156-3.893-.481-8.572-2.144-13.784-10.83-11.642-19.403C81.901 166.427 166.316 81.93 236.119 64.478c8.575-2.143 17.261 3.069 19.403 11.642s-3.069 17.259-11.641 19.402z\"]\n};\nvar faLessThan = {\n  prefix: 'fas',\n  iconName: 'less-than',\n  icon: [384, 512, [], \"f536\", \"M365.46 357.74L147.04 255.89l218.47-101.88c16.02-7.47 22.95-26.51 15.48-42.53l-13.52-29C360 66.46 340.96 59.53 324.94 67L18.48 209.91a32.014 32.014 0 0 0-18.48 29v34.24c0 12.44 7.21 23.75 18.48 29l306.31 142.83c16.06 7.49 35.15.54 42.64-15.52l13.56-29.08c7.49-16.06.54-35.15-15.53-42.64z\"]\n};\nvar faLessThanEqual = {\n  prefix: 'fas',\n  iconName: 'less-than-equal',\n  icon: [448, 512, [], \"f537\", \"M54.98 214.2l301.41 119.87c18.39 6.03 38.71-2.54 45.38-19.15l12.09-30.08c6.68-16.61-2.82-34.97-21.21-41l-175.44-68.05 175.56-68.09c18.29-6 27.74-24.27 21.1-40.79l-12.03-29.92c-6.64-16.53-26.86-25.06-45.15-19.06L54.98 137.89C41.21 142.41 32 154.5 32 168.07v15.96c0 13.56 9.21 25.65 22.98 30.17zM424 400H24c-13.25 0-24 10.74-24 24v48c0 13.25 10.75 24 24 24h400c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24z\"]\n};\nvar faLevelDownAlt = {\n  prefix: 'fas',\n  iconName: 'level-down-alt',\n  icon: [320, 512, [], \"f3be\", \"M313.553 392.331L209.587 504.334c-9.485 10.214-25.676 10.229-35.174 0L70.438 392.331C56.232 377.031 67.062 352 88.025 352H152V80H68.024a11.996 11.996 0 0 1-8.485-3.515l-56-56C-4.021 12.926 1.333 0 12.024 0H208c13.255 0 24 10.745 24 24v328h63.966c20.878 0 31.851 24.969 17.587 40.331z\"]\n};\nvar faLevelUpAlt = {\n  prefix: 'fas',\n  iconName: 'level-up-alt',\n  icon: [320, 512, [], \"f3bf\", \"M313.553 119.669L209.587 7.666c-9.485-10.214-25.676-10.229-35.174 0L70.438 119.669C56.232 134.969 67.062 160 88.025 160H152v272H68.024a11.996 11.996 0 0 0-8.485 3.515l-56 56C-4.021 499.074 1.333 512 12.024 512H208c13.255 0 24-10.745 24-24V160h63.966c20.878 0 31.851-24.969 17.587-40.331z\"]\n};\nvar faLifeRing = {\n  prefix: 'fas',\n  iconName: 'life-ring',\n  icon: [512, 512, [], \"f1cd\", \"M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm173.696 119.559l-63.399 63.399c-10.987-18.559-26.67-34.252-45.255-45.255l63.399-63.399a218.396 218.396 0 0 1 45.255 45.255zM256 352c-53.019 0-96-42.981-96-96s42.981-96 96-96 96 42.981 96 96-42.981 96-96 96zM127.559 82.304l63.399 63.399c-18.559 10.987-34.252 26.67-45.255 45.255l-63.399-63.399a218.372 218.372 0 0 1 45.255-45.255zM82.304 384.441l63.399-63.399c10.987 18.559 26.67 34.252 45.255 45.255l-63.399 63.399a218.396 218.396 0 0 1-45.255-45.255zm302.137 45.255l-63.399-63.399c18.559-10.987 34.252-26.67 45.255-45.255l63.399 63.399a218.403 218.403 0 0 1-45.255 45.255z\"]\n};\nvar faLightbulb = {\n  prefix: 'fas',\n  iconName: 'lightbulb',\n  icon: [352, 512, [], \"f0eb\", \"M96.06 454.35c.01 6.29 1.87 12.45 5.36 17.69l17.09 25.69a31.99 31.99 0 0 0 26.64 14.28h61.71a31.99 31.99 0 0 0 26.64-14.28l17.09-25.69a31.989 31.989 0 0 0 5.36-17.69l.04-38.35H96.01l.05 38.35zM0 176c0 44.37 16.45 84.85 43.56 115.78 16.52 18.85 42.36 58.23 52.21 91.45.04.26.07.52.11.78h160.24c.04-.26.07-.51.11-.78 9.85-33.22 35.69-72.6 52.21-91.45C335.55 260.85 352 220.37 352 176 352 78.61 272.91-.3 175.45 0 73.44.31 0 82.97 0 176zm176-80c-44.11 0-80 35.89-80 80 0 8.84-7.16 16-16 16s-16-7.16-16-16c0-61.76 50.24-112 112-112 8.84 0 16 7.16 16 16s-7.16 16-16 16z\"]\n};\nvar faLink = {\n  prefix: 'fas',\n  iconName: 'link',\n  icon: [512, 512, [], \"f0c1\", \"M326.612 185.391c59.747 59.809 58.927 155.698.36 214.59-.11.12-.24.25-.36.37l-67.2 67.2c-59.27 59.27-155.699 59.262-214.96 0-59.27-59.26-59.27-155.7 0-214.96l37.106-37.106c9.84-9.84 26.786-3.3 27.294 10.606.648 17.722 3.826 35.527 9.69 52.721 1.986 5.822.567 12.262-3.783 16.612l-13.087 13.087c-28.026 28.026-28.905 73.66-1.155 101.96 28.024 28.579 74.086 28.749 102.325.51l67.2-67.19c28.191-28.191 28.073-73.757 0-101.83-3.701-3.694-7.429-6.564-10.341-8.569a16.037 16.037 0 0 1-6.947-12.606c-.396-10.567 3.348-21.456 11.698-29.806l21.054-21.055c5.521-5.521 14.182-6.199 20.584-1.731a152.482 152.482 0 0 1 20.522 17.197zM467.547 44.449c-59.261-59.262-155.69-59.27-214.96 0l-67.2 67.2c-.12.12-.25.25-.36.37-58.566 58.892-59.387 154.781.36 214.59a152.454 152.454 0 0 0 20.521 17.196c6.402 4.468 15.064 3.789 20.584-1.731l21.054-21.055c8.35-8.35 12.094-19.239 11.698-29.806a16.037 16.037 0 0 0-6.947-12.606c-2.912-2.005-6.64-4.875-10.341-8.569-28.073-28.073-28.191-73.639 0-101.83l67.2-67.19c28.239-28.239 74.3-28.069 102.325.51 27.75 28.3 26.872 73.934-1.155 101.96l-13.087 13.087c-4.35 4.35-5.769 10.79-3.783 16.612 5.864 17.194 9.042 34.999 9.69 52.721.509 13.906 17.454 20.446 27.294 10.606l37.106-37.106c59.271-59.259 59.271-155.699.001-214.959z\"]\n};\nvar faLiraSign = {\n  prefix: 'fas',\n  iconName: 'lira-sign',\n  icon: [384, 512, [], \"f195\", \"M371.994 256h-48.019C317.64 256 312 260.912 312 267.246 312 368 230.179 416 144 416V256.781l134.603-29.912A12 12 0 0 0 288 215.155v-40.976c0-7.677-7.109-13.38-14.603-11.714L144 191.219V160.78l134.603-29.912A12 12 0 0 0 288 119.154V78.179c0-7.677-7.109-13.38-14.603-11.714L144 95.219V44c0-6.627-5.373-12-12-12H76c-6.627 0-12 5.373-12 12v68.997L9.397 125.131A12 12 0 0 0 0 136.845v40.976c0 7.677 7.109 13.38 14.603 11.714L64 178.558v30.439L9.397 221.131A12 12 0 0 0 0 232.845v40.976c0 7.677 7.109 13.38 14.603 11.714L64 274.558V468c0 6.627 5.373 12 12 12h79.583c134.091 0 223.255-77.834 228.408-211.592.261-6.782-5.211-12.408-11.997-12.408z\"]\n};\nvar faList = {\n  prefix: 'fas',\n  iconName: 'list',\n  icon: [512, 512, [], \"f03a\", \"M80 368H16a16 16 0 0 0-16 16v64a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-64a16 16 0 0 0-16-16zm0-320H16A16 16 0 0 0 0 64v64a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16V64a16 16 0 0 0-16-16zm0 160H16a16 16 0 0 0-16 16v64a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-64a16 16 0 0 0-16-16zm416 176H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faListAlt = {\n  prefix: 'fas',\n  iconName: 'list-alt',\n  icon: [512, 512, [], \"f022\", \"M464 480H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48zM128 120c-22.091 0-40 17.909-40 40s17.909 40 40 40 40-17.909 40-40-17.909-40-40-40zm0 96c-22.091 0-40 17.909-40 40s17.909 40 40 40 40-17.909 40-40-17.909-40-40-40zm0 96c-22.091 0-40 17.909-40 40s17.909 40 40 40 40-17.909 40-40-17.909-40-40-40zm288-136v-32c0-6.627-5.373-12-12-12H204c-6.627 0-12 5.373-12 12v32c0 6.627 5.373 12 12 12h200c6.627 0 12-5.373 12-12zm0 96v-32c0-6.627-5.373-12-12-12H204c-6.627 0-12 5.373-12 12v32c0 6.627 5.373 12 12 12h200c6.627 0 12-5.373 12-12zm0 96v-32c0-6.627-5.373-12-12-12H204c-6.627 0-12 5.373-12 12v32c0 6.627 5.373 12 12 12h200c6.627 0 12-5.373 12-12z\"]\n};\nvar faListOl = {\n  prefix: 'fas',\n  iconName: 'list-ol',\n  icon: [512, 512, [], \"f0cb\", \"M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z\"]\n};\nvar faListUl = {\n  prefix: 'fas',\n  iconName: 'list-ul',\n  icon: [512, 512, [], \"f0ca\", \"M48 48a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm448 16H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faLocationArrow = {\n  prefix: 'fas',\n  iconName: 'location-arrow',\n  icon: [512, 512, [], \"f124\", \"M444.52 3.52L28.74 195.42c-47.97 22.39-31.98 92.75 19.19 92.75h175.91v175.91c0 51.17 70.36 67.17 92.75 19.19l191.9-415.78c15.99-38.39-25.59-79.97-63.97-63.97z\"]\n};\nvar faLock = {\n  prefix: 'fas',\n  iconName: 'lock',\n  icon: [448, 512, [], \"f023\", \"M400 224h-24v-72C376 68.2 307.8 0 224 0S72 68.2 72 152v72H48c-26.5 0-48 21.5-48 48v192c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V272c0-26.5-21.5-48-48-48zm-104 0H152v-72c0-39.7 32.3-72 72-72s72 32.3 72 72v72z\"]\n};\nvar faLockOpen = {\n  prefix: 'fas',\n  iconName: 'lock-open',\n  icon: [576, 512, [], \"f3c1\", \"M423.5 0C339.5.3 272 69.5 272 153.5V224H48c-26.5 0-48 21.5-48 48v192c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V272c0-26.5-21.5-48-48-48h-48v-71.1c0-39.6 31.7-72.5 71.3-72.9 40-.4 72.7 32.1 72.7 72v80c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24v-80C576 68 507.5-.3 423.5 0z\"]\n};\nvar faLongArrowAltDown = {\n  prefix: 'fas',\n  iconName: 'long-arrow-alt-down',\n  icon: [256, 512, [], \"f309\", \"M168 345.941V44c0-6.627-5.373-12-12-12h-56c-6.627 0-12 5.373-12 12v301.941H41.941c-21.382 0-32.09 25.851-16.971 40.971l86.059 86.059c9.373 9.373 24.569 9.373 33.941 0l86.059-86.059c15.119-15.119 4.411-40.971-16.971-40.971H168z\"]\n};\nvar faLongArrowAltLeft = {\n  prefix: 'fas',\n  iconName: 'long-arrow-alt-left',\n  icon: [448, 512, [], \"f30a\", \"M134.059 296H436c6.627 0 12-5.373 12-12v-56c0-6.627-5.373-12-12-12H134.059v-46.059c0-21.382-25.851-32.09-40.971-16.971L7.029 239.029c-9.373 9.373-9.373 24.569 0 33.941l86.059 86.059c15.119 15.119 40.971 4.411 40.971-16.971V296z\"]\n};\nvar faLongArrowAltRight = {\n  prefix: 'fas',\n  iconName: 'long-arrow-alt-right',\n  icon: [448, 512, [], \"f30b\", \"M313.941 216H12c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12h301.941v46.059c0 21.382 25.851 32.09 40.971 16.971l86.059-86.059c9.373-9.373 9.373-24.569 0-33.941l-86.059-86.059c-15.119-15.119-40.971-4.411-40.971 16.971V216z\"]\n};\nvar faLongArrowAltUp = {\n  prefix: 'fas',\n  iconName: 'long-arrow-alt-up',\n  icon: [256, 512, [], \"f30c\", \"M88 166.059V468c0 6.627 5.373 12 12 12h56c6.627 0 12-5.373 12-12V166.059h46.059c21.382 0 32.09-25.851 16.971-40.971l-86.059-86.059c-9.373-9.373-24.569-9.373-33.941 0l-86.059 86.059c-15.119 15.119-4.411 40.971 16.971 40.971H88z\"]\n};\nvar faLowVision = {\n  prefix: 'fas',\n  iconName: 'low-vision',\n  icon: [576, 512, [], \"f2a8\", \"M569.344 231.631C512.96 135.949 407.81 72 288 72c-28.468 0-56.102 3.619-82.451 10.409L152.778 10.24c-7.601-10.858-22.564-13.5-33.423-5.9l-13.114 9.178c-10.86 7.601-13.502 22.566-5.9 33.426l43.131 58.395C89.449 131.73 40.228 174.683 6.682 231.581c-.01.017-.023.033-.034.05-8.765 14.875-8.964 33.528 0 48.739 38.5 65.332 99.742 115.862 172.859 141.349L55.316 244.302A272.194 272.194 0 0 1 83.61 208.39l119.4 170.58h.01l40.63 58.04a330.055 330.055 0 0 0 78.94 1.17l-189.98-271.4a277.628 277.628 0 0 1 38.777-21.563l251.836 356.544c7.601 10.858 22.564 13.499 33.423 5.9l13.114-9.178c10.86-7.601 13.502-22.567 5.9-33.426l-43.12-58.377-.007-.009c57.161-27.978 104.835-72.04 136.81-126.301a47.938 47.938 0 0 0 .001-48.739zM390.026 345.94l-19.066-27.23c24.682-32.567 27.711-76.353 8.8-111.68v.03c0 23.65-19.17 42.82-42.82 42.82-23.828 0-42.82-19.349-42.82-42.82 0-23.65 19.17-42.82 42.82-42.82h.03c-24.75-13.249-53.522-15.643-79.51-7.68l-19.068-27.237C253.758 123.306 270.488 120 288 120c75.162 0 136 60.826 136 136 0 34.504-12.833 65.975-33.974 89.94z\"]\n};\nvar faLuggageCart = {\n  prefix: 'fas',\n  iconName: 'luggage-cart',\n  icon: [640, 512, [], \"f59d\", \"M224 320h32V96h-32c-17.67 0-32 14.33-32 32v160c0 17.67 14.33 32 32 32zm352-32V128c0-17.67-14.33-32-32-32h-32v224h32c17.67 0 32-14.33 32-32zm48 96H128V16c0-8.84-7.16-16-16-16H16C7.16 0 0 7.16 0 16v32c0 8.84 7.16 16 16 16h48v368c0 8.84 7.16 16 16 16h82.94c-1.79 5.03-2.94 10.36-2.94 16 0 26.51 21.49 48 48 48s48-21.49 48-48c0-5.64-1.15-10.97-2.94-16h197.88c-1.79 5.03-2.94 10.36-2.94 16 0 26.51 21.49 48 48 48s48-21.49 48-48c0-5.64-1.15-10.97-2.94-16H624c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM480 96V48c0-26.51-21.49-48-48-48h-96c-26.51 0-48 21.49-48 48v272h192V96zm-48 0h-96V48h96v48z\"]\n};\nvar faLungs = {\n  prefix: 'fas',\n  iconName: 'lungs',\n  icon: [640, 512, [], \"f604\", \"M636.11 390.15C614.44 308.85 580.07 231 534.1 159.13 511.98 124.56 498.03 96 454.05 96 415.36 96 384 125.42 384 161.71v60.11l-32.88-21.92a15.996 15.996 0 0 1-7.12-13.31V16c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v170.59c0 5.35-2.67 10.34-7.12 13.31L256 221.82v-60.11C256 125.42 224.64 96 185.95 96c-43.98 0-57.93 28.56-80.05 63.13C59.93 231 25.56 308.85 3.89 390.15 1.3 399.84 0 409.79 0 419.78c0 61.23 62.48 105.44 125.24 88.62l59.5-15.95c42.18-11.3 71.26-47.47 71.26-88.62v-87.49l-85.84 57.23a7.992 7.992 0 0 1-11.09-2.22l-8.88-13.31a7.992 7.992 0 0 1 2.22-11.09L320 235.23l167.59 111.72a7.994 7.994 0 0 1 2.22 11.09l-8.88 13.31a7.994 7.994 0 0 1-11.09 2.22L384 316.34v87.49c0 41.15 29.08 77.31 71.26 88.62l59.5 15.95C577.52 525.22 640 481.01 640 419.78c0-9.99-1.3-19.94-3.89-29.63z\"]\n};\nvar faLungsVirus = {\n  prefix: 'fas',\n  iconName: 'lungs-virus',\n  icon: [640, 512, [], \"e067\", \"M344,150.68V16A16,16,0,0,0,328,0H312a16,16,0,0,0-16,16V150.68a46.45,46.45,0,0,1,48,0ZM195.54,444.46a48.06,48.06,0,0,1,0-67.88l8.58-8.58H192a48,48,0,0,1,0-96h12.12l-8.58-8.57a48,48,0,0,1,60.46-74V161.75C256,125.38,224.62,96,186,96c-44,0-58,28.5-80.12,63.13a819.52,819.52,0,0,0-102,231A113.16,113.16,0,0,0,0,419.75C0,481,62.5,525.26,125.25,508.38l59.5-15.87a98.51,98.51,0,0,0,52.5-34.75,46.49,46.49,0,0,1-41.71-13.3Zm226.29-22.63a16,16,0,0,0,0-22.62l-8.58-8.58C393.09,370.47,407.37,336,435.88,336H448a16,16,0,0,0,0-32H435.88c-28.51,0-42.79-34.47-22.63-54.62l8.58-8.58a16,16,0,0,0-22.63-22.63l-8.57,8.58C370.47,246.91,336,232.63,336,204.12V192a16,16,0,0,0-32,0v12.12c0,28.51-34.47,42.79-54.63,22.63l-8.57-8.58a16,16,0,0,0-22.63,22.63l8.58,8.58c20.16,20.15,5.88,54.62-22.63,54.62H192a16,16,0,0,0,0,32h12.12c28.51,0,42.79,34.47,22.63,54.63l-8.58,8.58a16,16,0,1,0,22.63,22.62l8.57-8.57C269.53,393.1,304,407.38,304,435.88V448a16,16,0,0,0,32,0V435.88c0-28.5,34.47-42.78,54.63-22.62l8.57,8.57a16,16,0,0,0,22.63,0ZM288,304a16,16,0,1,1,16-16A16,16,0,0,1,288,304Zm64,64a16,16,0,1,1,16-16A16,16,0,0,1,352,368Zm284.12,22.13a819.52,819.52,0,0,0-102-231C512,124.5,498,96,454,96c-38.62,0-70,29.38-70,65.75v27.72a48,48,0,0,1,60.46,74L435.88,272H448a48,48,0,0,1,0,96H435.88l8.58,8.58a47.7,47.7,0,0,1-41.71,81.18,98.51,98.51,0,0,0,52.5,34.75l59.5,15.87C577.5,525.26,640,481,640,419.75A113.16,113.16,0,0,0,636.12,390.13Z\"]\n};\nvar faMagic = {\n  prefix: 'fas',\n  iconName: 'magic',\n  icon: [512, 512, [], \"f0d0\", \"M224 96l16-32 32-16-32-16-16-32-16 32-32 16 32 16 16 32zM80 160l26.66-53.33L160 80l-53.34-26.67L80 0 53.34 53.33 0 80l53.34 26.67L80 160zm352 128l-26.66 53.33L352 368l53.34 26.67L432 448l26.66-53.33L512 368l-53.34-26.67L432 288zm70.62-193.77L417.77 9.38C411.53 3.12 403.34 0 395.15 0c-8.19 0-16.38 3.12-22.63 9.38L9.38 372.52c-12.5 12.5-12.5 32.76 0 45.25l84.85 84.85c6.25 6.25 14.44 9.37 22.62 9.37 8.19 0 16.38-3.12 22.63-9.37l363.14-363.15c12.5-12.48 12.5-32.75 0-45.24zM359.45 203.46l-50.91-50.91 86.6-86.6 50.91 50.91-86.6 86.6z\"]\n};\nvar faMagnet = {\n  prefix: 'fas',\n  iconName: 'magnet',\n  icon: [512, 512, [], \"f076\", \"M164.07 148.1H12a12 12 0 0 1-12-12v-80a36 36 0 0 1 36-36h104a36 36 0 0 1 36 36v80a11.89 11.89 0 0 1-11.93 12zm347.93-12V56a36 36 0 0 0-36-36H372a36 36 0 0 0-36 36v80a12 12 0 0 0 12 12h152a11.89 11.89 0 0 0 12-11.9zm-164 44a12 12 0 0 0-12 12v52c0 128.1-160 127.9-160 0v-52a12 12 0 0 0-12-12H12.1a12 12 0 0 0-12 12.1c.1 21.4.6 40.3 0 53.3 0 150.6 136.17 246.6 256.75 246.6s255-96 255-246.7c-.6-12.8-.2-33 0-53.2a12 12 0 0 0-12-12.1z\"]\n};\nvar faMailBulk = {\n  prefix: 'fas',\n  iconName: 'mail-bulk',\n  icon: [576, 512, [], \"f674\", \"M160 448c-25.6 0-51.2-22.4-64-32-64-44.8-83.2-60.8-96-70.4V480c0 17.67 14.33 32 32 32h256c17.67 0 32-14.33 32-32V345.6c-12.8 9.6-32 25.6-96 70.4-12.8 9.6-38.4 32-64 32zm128-192H32c-17.67 0-32 14.33-32 32v16c25.6 19.2 22.4 19.2 115.2 86.4 9.6 6.4 28.8 25.6 44.8 25.6s35.2-19.2 44.8-22.4c92.8-67.2 89.6-67.2 115.2-86.4V288c0-17.67-14.33-32-32-32zm256-96H224c-17.67 0-32 14.33-32 32v32h96c33.21 0 60.59 25.42 63.71 57.82l.29-.22V416h192c17.67 0 32-14.33 32-32V192c0-17.67-14.33-32-32-32zm-32 128h-64v-64h64v64zm-352-96c0-35.29 28.71-64 64-64h224V32c0-17.67-14.33-32-32-32H96C78.33 0 64 14.33 64 32v192h96v-32z\"]\n};\nvar faMale = {\n  prefix: 'fas',\n  iconName: 'male',\n  icon: [192, 512, [], \"f183\", \"M96 0c35.346 0 64 28.654 64 64s-28.654 64-64 64-64-28.654-64-64S60.654 0 96 0m48 144h-11.36c-22.711 10.443-49.59 10.894-73.28 0H48c-26.51 0-48 21.49-48 48v136c0 13.255 10.745 24 24 24h16v136c0 13.255 10.745 24 24 24h64c13.255 0 24-10.745 24-24V352h16c13.255 0 24-10.745 24-24V192c0-26.51-21.49-48-48-48z\"]\n};\nvar faMap = {\n  prefix: 'fas',\n  iconName: 'map',\n  icon: [576, 512, [], \"f279\", \"M0 117.66v346.32c0 11.32 11.43 19.06 21.94 14.86L160 416V32L20.12 87.95A32.006 32.006 0 0 0 0 117.66zM192 416l192 64V96L192 32v384zM554.06 33.16L416 96v384l139.88-55.95A31.996 31.996 0 0 0 576 394.34V48.02c0-11.32-11.43-19.06-21.94-14.86z\"]\n};\nvar faMapMarked = {\n  prefix: 'fas',\n  iconName: 'map-marked',\n  icon: [576, 512, [], \"f59f\", \"M288 0c-69.59 0-126 56.41-126 126 0 56.26 82.35 158.8 113.9 196.02 6.39 7.54 17.82 7.54 24.2 0C331.65 284.8 414 182.26 414 126 414 56.41 357.59 0 288 0zM20.12 215.95A32.006 32.006 0 0 0 0 245.66v250.32c0 11.32 11.43 19.06 21.94 14.86L160 448V214.92c-8.84-15.98-16.07-31.54-21.25-46.42L20.12 215.95zM288 359.67c-14.07 0-27.38-6.18-36.51-16.96-19.66-23.2-40.57-49.62-59.49-76.72v182l192 64V266c-18.92 27.09-39.82 53.52-59.49 76.72-9.13 10.77-22.44 16.95-36.51 16.95zm266.06-198.51L416 224v288l139.88-55.95A31.996 31.996 0 0 0 576 426.34V176.02c0-11.32-11.43-19.06-21.94-14.86z\"]\n};\nvar faMapMarkedAlt = {\n  prefix: 'fas',\n  iconName: 'map-marked-alt',\n  icon: [576, 512, [], \"f5a0\", \"M288 0c-69.59 0-126 56.41-126 126 0 56.26 82.35 158.8 113.9 196.02 6.39 7.54 17.82 7.54 24.2 0C331.65 284.8 414 182.26 414 126 414 56.41 357.59 0 288 0zm0 168c-23.2 0-42-18.8-42-42s18.8-42 42-42 42 18.8 42 42-18.8 42-42 42zM20.12 215.95A32.006 32.006 0 0 0 0 245.66v250.32c0 11.32 11.43 19.06 21.94 14.86L160 448V214.92c-8.84-15.98-16.07-31.54-21.25-46.42L20.12 215.95zM288 359.67c-14.07 0-27.38-6.18-36.51-16.96-19.66-23.2-40.57-49.62-59.49-76.72v182l192 64V266c-18.92 27.09-39.82 53.52-59.49 76.72-9.13 10.77-22.44 16.95-36.51 16.95zm266.06-198.51L416 224v288l139.88-55.95A31.996 31.996 0 0 0 576 426.34V176.02c0-11.32-11.43-19.06-21.94-14.86z\"]\n};\nvar faMapMarker = {\n  prefix: 'fas',\n  iconName: 'map-marker',\n  icon: [384, 512, [], \"f041\", \"M172.268 501.67C26.97 291.031 0 269.413 0 192 0 85.961 85.961 0 192 0s192 85.961 192 192c0 77.413-26.97 99.031-172.268 309.67-9.535 13.774-29.93 13.773-39.464 0z\"]\n};\nvar faMapMarkerAlt = {\n  prefix: 'fas',\n  iconName: 'map-marker-alt',\n  icon: [384, 512, [], \"f3c5\", \"M172.268 501.67C26.97 291.031 0 269.413 0 192 0 85.961 85.961 0 192 0s192 85.961 192 192c0 77.413-26.97 99.031-172.268 309.67-9.535 13.774-29.93 13.773-39.464 0zM192 272c44.183 0 80-35.817 80-80s-35.817-80-80-80-80 35.817-80 80 35.817 80 80 80z\"]\n};\nvar faMapPin = {\n  prefix: 'fas',\n  iconName: 'map-pin',\n  icon: [288, 512, [], \"f276\", \"M112 316.94v156.69l22.02 33.02c4.75 7.12 15.22 7.12 19.97 0L176 473.63V316.94c-10.39 1.92-21.06 3.06-32 3.06s-21.61-1.14-32-3.06zM144 0C64.47 0 0 64.47 0 144s64.47 144 144 144 144-64.47 144-144S223.53 0 144 0zm0 76c-37.5 0-68 30.5-68 68 0 6.62-5.38 12-12 12s-12-5.38-12-12c0-50.73 41.28-92 92-92 6.62 0 12 5.38 12 12s-5.38 12-12 12z\"]\n};\nvar faMapSigns = {\n  prefix: 'fas',\n  iconName: 'map-signs',\n  icon: [512, 512, [], \"f277\", \"M507.31 84.69L464 41.37c-6-6-14.14-9.37-22.63-9.37H288V16c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v16H56c-13.25 0-24 10.75-24 24v80c0 13.25 10.75 24 24 24h385.37c8.49 0 16.62-3.37 22.63-9.37l43.31-43.31c6.25-6.26 6.25-16.38 0-22.63zM224 496c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V384h-64v112zm232-272H288v-32h-64v32H70.63c-8.49 0-16.62 3.37-22.63 9.37L4.69 276.69c-6.25 6.25-6.25 16.38 0 22.63L48 342.63c6 6 14.14 9.37 22.63 9.37H456c13.25 0 24-10.75 24-24v-80c0-13.25-10.75-24-24-24z\"]\n};\nvar faMarker = {\n  prefix: 'fas',\n  iconName: 'marker',\n  icon: [512, 512, [], \"f5a1\", \"M93.95 290.03A327.038 327.038 0 0 0 .17 485.11l-.03.23c-1.7 15.28 11.21 28.2 26.49 26.51a327.02 327.02 0 0 0 195.34-93.8l75.4-75.4-128.02-128.02-75.4 75.4zM485.49 26.51c-35.35-35.35-92.67-35.35-128.02 0l-21.76 21.76-36.56-36.55c-15.62-15.62-40.95-15.62-56.56 0L138.47 115.84c-6.25 6.25-6.25 16.38 0 22.63l22.62 22.62c6.25 6.25 16.38 6.25 22.63 0l87.15-87.15 19.59 19.59L191.98 192 320 320.02l165.49-165.49c35.35-35.35 35.35-92.66 0-128.02z\"]\n};\nvar faMars = {\n  prefix: 'fas',\n  iconName: 'mars',\n  icon: [384, 512, [], \"f222\", \"M372 64h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-80.7 80.7c-22.2-14-48.5-22.1-76.7-22.1C64.5 160 0 224.5 0 304s64.5 144 144 144 144-64.5 144-144c0-28.2-8.1-54.5-22.1-76.7l80.7-80.7 16.9 16.9c7.6 7.6 20.5 2.2 20.5-8.5V76c0-6.6-5.4-12-12-12zM144 384c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\"]\n};\nvar faMarsDouble = {\n  prefix: 'fas',\n  iconName: 'mars-double',\n  icon: [512, 512, [], \"f227\", \"M340 0h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-48.7 48.7C198.5 72.1 172.2 64 144 64 64.5 64 0 128.5 0 208s64.5 144 144 144 144-64.5 144-144c0-28.2-8.1-54.5-22.1-76.7l48.7-48.7 16.9 16.9c2.4 2.4 5.5 3.5 8.4 3.5 6.2 0 12.1-4.8 12.1-12V12c0-6.6-5.4-12-12-12zM144 288c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80zm356-128.1h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-48.7 48.7c-18.2-11.4-39-18.9-61.5-21.3-2.1 21.8-8.2 43.3-18.4 63.3 1.1 0 2.2-.1 3.2-.1 44.1 0 80 35.9 80 80s-35.9 80-80 80-80-35.9-80-80c0-1.1 0-2.2.1-3.2-20 10.2-41.5 16.4-63.3 18.4C168.4 455.6 229.6 512 304 512c79.5 0 144-64.5 144-144 0-28.2-8.1-54.5-22.1-76.7l48.7-48.7 16.9 16.9c2.4 2.4 5.4 3.5 8.4 3.5 6.2 0 12.1-4.8 12.1-12v-79c0-6.7-5.4-12.1-12-12.1z\"]\n};\nvar faMarsStroke = {\n  prefix: 'fas',\n  iconName: 'mars-stroke',\n  icon: [384, 512, [], \"f229\", \"M372 64h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-17.5 17.5-14.1-14.1c-4.7-4.7-12.3-4.7-17 0L224.5 133c-4.7 4.7-4.7 12.3 0 17l14.1 14.1-18 18c-22.2-14-48.5-22.1-76.7-22.1C64.5 160 0 224.5 0 304s64.5 144 144 144 144-64.5 144-144c0-28.2-8.1-54.5-22.1-76.7l18-18 14.1 14.1c4.7 4.7 12.3 4.7 17 0l28.3-28.3c4.7-4.7 4.7-12.3 0-17L329.2 164l17.5-17.5 16.9 16.9c7.6 7.6 20.5 2.2 20.5-8.5V76c-.1-6.6-5.5-12-12.1-12zM144 384c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\"]\n};\nvar faMarsStrokeH = {\n  prefix: 'fas',\n  iconName: 'mars-stroke-h',\n  icon: [480, 512, [], \"f22b\", \"M476.2 247.5l-55.9-55.9c-7.6-7.6-20.5-2.2-20.5 8.5V224H376v-20c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v20h-27.6c-5.8-25.6-18.7-49.9-38.6-69.8C189.6 98 98.4 98 42.2 154.2c-56.2 56.2-56.2 147.4 0 203.6 56.2 56.2 147.4 56.2 203.6 0 19.9-19.9 32.8-44.2 38.6-69.8H312v20c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-20h23.9v23.9c0 10.7 12.9 16 20.5 8.5l55.9-55.9c4.6-4.7 4.6-12.3-.1-17zm-275.6 65.1c-31.2 31.2-81.9 31.2-113.1 0-31.2-31.2-31.2-81.9 0-113.1 31.2-31.2 81.9-31.2 113.1 0 31.2 31.1 31.2 81.9 0 113.1z\"]\n};\nvar faMarsStrokeV = {\n  prefix: 'fas',\n  iconName: 'mars-stroke-v',\n  icon: [288, 512, [], \"f22a\", \"M245.8 234.2c-19.9-19.9-44.2-32.8-69.8-38.6v-25.4h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20V81.4h23.9c10.7 0 16-12.9 8.5-20.5L152.5 5.1c-4.7-4.7-12.3-4.7-17 0L79.6 61c-7.6 7.6-2.2 20.5 8.5 20.5H112v24.7H92c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h20v25.4c-25.6 5.8-49.9 18.7-69.8 38.6-56.2 56.2-56.2 147.4 0 203.6 56.2 56.2 147.4 56.2 203.6 0 56.3-56.2 56.3-147.4 0-203.6zm-45.2 158.4c-31.2 31.2-81.9 31.2-113.1 0-31.2-31.2-31.2-81.9 0-113.1 31.2-31.2 81.9-31.2 113.1 0 31.2 31.1 31.2 81.9 0 113.1z\"]\n};\nvar faMask = {\n  prefix: 'fas',\n  iconName: 'mask',\n  icon: [640, 512, [], \"f6fa\", \"M320.67 64c-442.6 0-357.57 384-158.46 384 39.9 0 77.47-20.69 101.42-55.86l25.73-37.79c15.66-22.99 46.97-22.99 62.63 0l25.73 37.79C401.66 427.31 439.23 448 479.13 448c189.86 0 290.63-384-158.46-384zM184 308.36c-41.06 0-67.76-25.66-80.08-41.05-5.23-6.53-5.23-16.09 0-22.63 12.32-15.4 39.01-41.05 80.08-41.05s67.76 25.66 80.08 41.05c5.23 6.53 5.23 16.09 0 22.63-12.32 15.4-39.02 41.05-80.08 41.05zm272 0c-41.06 0-67.76-25.66-80.08-41.05-5.23-6.53-5.23-16.09 0-22.63 12.32-15.4 39.01-41.05 80.08-41.05s67.76 25.66 80.08 41.05c5.23 6.53 5.23 16.09 0 22.63-12.32 15.4-39.02 41.05-80.08 41.05z\"]\n};\nvar faMedal = {\n  prefix: 'fas',\n  iconName: 'medal',\n  icon: [512, 512, [], \"f5a2\", \"M223.75 130.75L154.62 15.54A31.997 31.997 0 0 0 127.18 0H16.03C3.08 0-4.5 14.57 2.92 25.18l111.27 158.96c29.72-27.77 67.52-46.83 109.56-53.39zM495.97 0H384.82c-11.24 0-21.66 5.9-27.44 15.54l-69.13 115.21c42.04 6.56 79.84 25.62 109.56 53.38L509.08 25.18C516.5 14.57 508.92 0 495.97 0zM256 160c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm92.52 157.26l-37.93 36.96 8.97 52.22c1.6 9.36-8.26 16.51-16.65 12.09L256 393.88l-46.9 24.65c-8.4 4.45-18.25-2.74-16.65-12.09l8.97-52.22-37.93-36.96c-6.82-6.64-3.05-18.23 6.35-19.59l52.43-7.64 23.43-47.52c2.11-4.28 6.19-6.39 10.28-6.39 4.11 0 8.22 2.14 10.33 6.39l23.43 47.52 52.43 7.64c9.4 1.36 13.17 12.95 6.35 19.59z\"]\n};\nvar faMedkit = {\n  prefix: 'fas',\n  iconName: 'medkit',\n  icon: [512, 512, [], \"f0fa\", \"M96 480h320V128h-32V80c0-26.51-21.49-48-48-48H176c-26.51 0-48 21.49-48 48v48H96v352zm96-384h128v32H192V96zm320 80v256c0 26.51-21.49 48-48 48h-16V128h16c26.51 0 48 21.49 48 48zM64 480H48c-26.51 0-48-21.49-48-48V176c0-26.51 21.49-48 48-48h16v352zm288-208v32c0 8.837-7.163 16-16 16h-48v48c0 8.837-7.163 16-16 16h-32c-8.837 0-16-7.163-16-16v-48h-48c-8.837 0-16-7.163-16-16v-32c0-8.837 7.163-16 16-16h48v-48c0-8.837 7.163-16 16-16h32c8.837 0 16 7.163 16 16v48h48c8.837 0 16 7.163 16 16z\"]\n};\nvar faMeh = {\n  prefix: 'fas',\n  iconName: 'meh',\n  icon: [496, 512, [], \"f11a\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm176 192H152c-21.2 0-21.2-32 0-32h192c21.2 0 21.2 32 0 32zm-16-128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faMehBlank = {\n  prefix: 'fas',\n  iconName: 'meh-blank',\n  icon: [496, 512, [], \"f5a4\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-80 232c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm160 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faMehRollingEyes = {\n  prefix: 'fas',\n  iconName: 'meh-rolling-eyes',\n  icon: [496, 512, [], \"f5a5\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM88 224c0-24.3 13.7-45.2 33.6-56-.7 2.6-1.6 5.2-1.6 8 0 17.7 14.3 32 32 32s32-14.3 32-32c0-2.8-.9-5.4-1.6-8 19.9 10.8 33.6 31.7 33.6 56 0 35.3-28.7 64-64 64s-64-28.7-64-64zm224 176H184c-21.2 0-21.2-32 0-32h128c21.2 0 21.2 32 0 32zm32-112c-35.3 0-64-28.7-64-64 0-24.3 13.7-45.2 33.6-56-.7 2.6-1.6 5.2-1.6 8 0 17.7 14.3 32 32 32s32-14.3 32-32c0-2.8-.9-5.4-1.6-8 19.9 10.8 33.6 31.7 33.6 56 0 35.3-28.7 64-64 64z\"]\n};\nvar faMemory = {\n  prefix: 'fas',\n  iconName: 'memory',\n  icon: [640, 512, [], \"f538\", \"M640 130.94V96c0-17.67-14.33-32-32-32H32C14.33 64 0 78.33 0 96v34.94c18.6 6.61 32 24.19 32 45.06s-13.4 38.45-32 45.06V320h640v-98.94c-18.6-6.61-32-24.19-32-45.06s13.4-38.45 32-45.06zM224 256h-64V128h64v128zm128 0h-64V128h64v128zm128 0h-64V128h64v128zM0 448h64v-26.67c0-8.84 7.16-16 16-16s16 7.16 16 16V448h128v-26.67c0-8.84 7.16-16 16-16s16 7.16 16 16V448h128v-26.67c0-8.84 7.16-16 16-16s16 7.16 16 16V448h128v-26.67c0-8.84 7.16-16 16-16s16 7.16 16 16V448h64v-96H0v96z\"]\n};\nvar faMenorah = {\n  prefix: 'fas',\n  iconName: 'menorah',\n  icon: [640, 512, [], \"f676\", \"M144 128h-32c-8.84 0-16 7.16-16 16v144h64V144c0-8.84-7.16-16-16-16zm96 0h-32c-8.84 0-16 7.16-16 16v144h64V144c0-8.84-7.16-16-16-16zm192 0h-32c-8.84 0-16 7.16-16 16v144h64V144c0-8.84-7.16-16-16-16zm96 0h-32c-8.84 0-16 7.16-16 16v144h64V144c0-8.84-7.16-16-16-16zm80-32c17.67 0 32-14.33 32-32S608 0 608 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S512 0 512 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S416 0 416 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S320 0 320 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S224 0 224 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S128 0 128 0 96 46.33 96 64s14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S32 0 32 0 0 46.33 0 64s14.33 32 32 32zm544 192c0 17.67-14.33 32-32 32H352V144c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v176H96c-17.67 0-32-14.33-32-32V144c0-8.84-7.16-16-16-16H16c-8.84 0-16 7.16-16 16v144c0 53.02 42.98 96 96 96h192v64H112c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16H352v-64h192c53.02 0 96-42.98 96-96V144c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v144z\"]\n};\nvar faMercury = {\n  prefix: 'fas',\n  iconName: 'mercury',\n  icon: [288, 512, [], \"f223\", \"M288 208c0-44.2-19.9-83.7-51.2-110.1 2.5-1.8 4.9-3.8 7.2-5.8 24.7-21.2 39.8-48.8 43.2-78.8.9-7.1-4.7-13.3-11.9-13.3h-40.5C229 0 224.1 4.1 223 9.8c-2.4 12.5-9.6 24.3-20.7 33.8C187 56.8 166.3 64 144 64s-43-7.2-58.4-20.4C74.5 34.1 67.4 22.3 64.9 9.8 63.8 4.1 58.9 0 53.2 0H12.7C5.5 0-.1 6.2.8 13.3 4.2 43.4 19.2 71 44 92.2c2.3 2 4.7 3.9 7.2 5.8C19.9 124.3 0 163.8 0 208c0 68.5 47.9 125.9 112 140.4V400H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v36c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-36h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-51.6c64.1-14.5 112-71.9 112-140.4zm-224 0c0-44.1 35.9-80 80-80s80 35.9 80 80-35.9 80-80 80-80-35.9-80-80z\"]\n};\nvar faMeteor = {\n  prefix: 'fas',\n  iconName: 'meteor',\n  icon: [512, 512, [], \"f753\", \"M511.328,20.8027c-11.60759,38.70264-34.30724,111.70173-61.30311,187.70077,6.99893,2.09372,13.4042,4,18.60653,5.59368a16.06158,16.06158,0,0,1,9.49854,22.906c-22.106,42.29635-82.69047,152.795-142.47819,214.40356-.99984,1.09373-1.99969,2.5-2.99954,3.49995A194.83046,194.83046,0,1,1,57.085,179.41009c.99985-1,2.40588-2,3.49947-3,61.59994-59.90549,171.97367-120.40473,214.37343-142.4982a16.058,16.058,0,0,1,22.90274,9.49988c1.59351,5.09368,3.49947,11.5936,5.5929,18.59351C379.34818,35.00565,452.43074,12.30281,491.12794.70921A16.18325,16.18325,0,0,1,511.328,20.8027ZM319.951,320.00207A127.98041,127.98041,0,1,0,191.97061,448.00046,127.97573,127.97573,0,0,0,319.951,320.00207Zm-127.98041-31.9996a31.9951,31.9951,0,1,1-31.9951-31.9996A31.959,31.959,0,0,1,191.97061,288.00247Zm31.9951,79.999a15.99755,15.99755,0,1,1-15.99755-15.9998A16.04975,16.04975,0,0,1,223.96571,368.00147Z\"]\n};\nvar faMicrochip = {\n  prefix: 'fas',\n  iconName: 'microchip',\n  icon: [512, 512, [], \"f2db\", \"M416 48v416c0 26.51-21.49 48-48 48H144c-26.51 0-48-21.49-48-48V48c0-26.51 21.49-48 48-48h224c26.51 0 48 21.49 48 48zm96 58v12a6 6 0 0 1-6 6h-18v6a6 6 0 0 1-6 6h-42V88h42a6 6 0 0 1 6 6v6h18a6 6 0 0 1 6 6zm0 96v12a6 6 0 0 1-6 6h-18v6a6 6 0 0 1-6 6h-42v-48h42a6 6 0 0 1 6 6v6h18a6 6 0 0 1 6 6zm0 96v12a6 6 0 0 1-6 6h-18v6a6 6 0 0 1-6 6h-42v-48h42a6 6 0 0 1 6 6v6h18a6 6 0 0 1 6 6zm0 96v12a6 6 0 0 1-6 6h-18v6a6 6 0 0 1-6 6h-42v-48h42a6 6 0 0 1 6 6v6h18a6 6 0 0 1 6 6zM30 376h42v48H30a6 6 0 0 1-6-6v-6H6a6 6 0 0 1-6-6v-12a6 6 0 0 1 6-6h18v-6a6 6 0 0 1 6-6zm0-96h42v48H30a6 6 0 0 1-6-6v-6H6a6 6 0 0 1-6-6v-12a6 6 0 0 1 6-6h18v-6a6 6 0 0 1 6-6zm0-96h42v48H30a6 6 0 0 1-6-6v-6H6a6 6 0 0 1-6-6v-12a6 6 0 0 1 6-6h18v-6a6 6 0 0 1 6-6zm0-96h42v48H30a6 6 0 0 1-6-6v-6H6a6 6 0 0 1-6-6v-12a6 6 0 0 1 6-6h18v-6a6 6 0 0 1 6-6z\"]\n};\nvar faMicrophone = {\n  prefix: 'fas',\n  iconName: 'microphone',\n  icon: [352, 512, [], \"f130\", \"M176 352c53.02 0 96-42.98 96-96V96c0-53.02-42.98-96-96-96S80 42.98 80 96v160c0 53.02 42.98 96 96 96zm160-160h-16c-8.84 0-16 7.16-16 16v48c0 74.8-64.49 134.82-140.79 127.38C96.71 376.89 48 317.11 48 250.3V208c0-8.84-7.16-16-16-16H16c-8.84 0-16 7.16-16 16v40.16c0 89.64 63.97 169.55 152 181.69V464H96c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16h-56v-33.77C285.71 418.47 352 344.9 352 256v-48c0-8.84-7.16-16-16-16z\"]\n};\nvar faMicrophoneAlt = {\n  prefix: 'fas',\n  iconName: 'microphone-alt',\n  icon: [352, 512, [], \"f3c9\", \"M336 192h-16c-8.84 0-16 7.16-16 16v48c0 74.8-64.49 134.82-140.79 127.38C96.71 376.89 48 317.11 48 250.3V208c0-8.84-7.16-16-16-16H16c-8.84 0-16 7.16-16 16v40.16c0 89.64 63.97 169.55 152 181.69V464H96c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16h-56v-33.77C285.71 418.47 352 344.9 352 256v-48c0-8.84-7.16-16-16-16zM176 352c53.02 0 96-42.98 96-96h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H272v-32h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H272v-32h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H272c0-53.02-42.98-96-96-96S80 42.98 80 96v160c0 53.02 42.98 96 96 96z\"]\n};\nvar faMicrophoneAltSlash = {\n  prefix: 'fas',\n  iconName: 'microphone-alt-slash',\n  icon: [640, 512, [], \"f539\", \"M633.82 458.1L476.26 336.33C488.74 312.21 496 284.98 496 256v-48c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v48c0 17.92-3.96 34.8-10.72 50.2l-26.55-20.52c3.1-9.4 5.28-19.22 5.28-29.67h-43.67l-41.4-32H416v-32h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H416v-32h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H416c0-53.02-42.98-96-96-96s-96 42.98-96 96v45.36L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.36 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.41-6.97 4.16-17.02-2.82-22.45zM400 464h-56v-33.78c11.71-1.62 23.1-4.28 33.96-8.08l-50.4-38.96c-6.71.4-13.41.87-20.35.2-55.85-5.45-98.74-48.63-111.18-101.85L144 241.31v6.85c0 89.64 63.97 169.55 152 181.69V464h-56c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16z\"]\n};\nvar faMicrophoneSlash = {\n  prefix: 'fas',\n  iconName: 'microphone-slash',\n  icon: [640, 512, [], \"f131\", \"M633.82 458.1l-157.8-121.96C488.61 312.13 496 285.01 496 256v-48c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v48c0 17.92-3.96 34.8-10.72 50.2l-26.55-20.52c3.1-9.4 5.28-19.22 5.28-29.67V96c0-53.02-42.98-96-96-96s-96 42.98-96 96v45.36L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.36 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.41-6.97 4.16-17.02-2.82-22.45zM400 464h-56v-33.77c11.66-1.6 22.85-4.54 33.67-8.31l-50.11-38.73c-6.71.4-13.41.87-20.35.2-55.85-5.45-98.74-48.63-111.18-101.85L144 241.31v6.85c0 89.64 63.97 169.55 152 181.69V464h-56c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16z\"]\n};\nvar faMicroscope = {\n  prefix: 'fas',\n  iconName: 'microscope',\n  icon: [512, 512, [], \"f610\", \"M160 320h12v16c0 8.84 7.16 16 16 16h40c8.84 0 16-7.16 16-16v-16h12c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32V16c0-8.84-7.16-16-16-16h-64c-8.84 0-16 7.16-16 16v16c-17.67 0-32 14.33-32 32v224c0 17.67 14.33 32 32 32zm304 128h-1.29C493.24 413.99 512 369.2 512 320c0-105.88-86.12-192-192-192v64c70.58 0 128 57.42 128 128s-57.42 128-128 128H48c-26.51 0-48 21.49-48 48 0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16 0-26.51-21.49-48-48-48zm-360-32h208c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8H104c-4.42 0-8 3.58-8 8v16c0 4.42 3.58 8 8 8z\"]\n};\nvar faMinus = {\n  prefix: 'fas',\n  iconName: 'minus',\n  icon: [448, 512, [], \"f068\", \"M416 208H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z\"]\n};\nvar faMinusCircle = {\n  prefix: 'fas',\n  iconName: 'minus-circle',\n  icon: [512, 512, [], \"f056\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zM124 296c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h264c6.6 0 12 5.4 12 12v56c0 6.6-5.4 12-12 12H124z\"]\n};\nvar faMinusSquare = {\n  prefix: 'fas',\n  iconName: 'minus-square',\n  icon: [448, 512, [], \"f146\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM92 296c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h264c6.6 0 12 5.4 12 12v56c0 6.6-5.4 12-12 12H92z\"]\n};\nvar faMitten = {\n  prefix: 'fas',\n  iconName: 'mitten',\n  icon: [448, 512, [], \"f7b5\", \"M368 416H48c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h320c8.8 0 16-7.2 16-16v-64c0-8.8-7.2-16-16-16zm57-209.1c-27.2-22.6-67.5-19-90.1 8.2l-20.9 25-29.6-128.4c-18-77.5-95.4-125.9-172.8-108C34.2 21.6-14.2 98.9 3.7 176.4L51.6 384h309l72.5-87c22.7-27.2 19-67.5-8.1-90.1z\"]\n};\nvar faMobile = {\n  prefix: 'fas',\n  iconName: 'mobile',\n  icon: [320, 512, [], \"f10b\", \"M272 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h224c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM160 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faMobileAlt = {\n  prefix: 'fas',\n  iconName: 'mobile-alt',\n  icon: [320, 512, [], \"f3cd\", \"M272 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h224c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM160 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm112-108c0 6.6-5.4 12-12 12H60c-6.6 0-12-5.4-12-12V60c0-6.6 5.4-12 12-12h200c6.6 0 12 5.4 12 12v312z\"]\n};\nvar faMoneyBill = {\n  prefix: 'fas',\n  iconName: 'money-bill',\n  icon: [640, 512, [], \"f0d6\", \"M608 64H32C14.33 64 0 78.33 0 96v320c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V96c0-17.67-14.33-32-32-32zM48 400v-64c35.35 0 64 28.65 64 64H48zm0-224v-64h64c0 35.35-28.65 64-64 64zm272 176c-44.19 0-80-42.99-80-96 0-53.02 35.82-96 80-96s80 42.98 80 96c0 53.03-35.83 96-80 96zm272 48h-64c0-35.35 28.65-64 64-64v64zm0-224c-35.35 0-64-28.65-64-64h64v64z\"]\n};\nvar faMoneyBillAlt = {\n  prefix: 'fas',\n  iconName: 'money-bill-alt',\n  icon: [640, 512, [], \"f3d1\", \"M352 288h-16v-88c0-4.42-3.58-8-8-8h-13.58c-4.74 0-9.37 1.4-13.31 4.03l-15.33 10.22a7.994 7.994 0 0 0-2.22 11.09l8.88 13.31a7.994 7.994 0 0 0 11.09 2.22l.47-.31V288h-16c-4.42 0-8 3.58-8 8v16c0 4.42 3.58 8 8 8h64c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8zM608 64H32C14.33 64 0 78.33 0 96v320c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V96c0-17.67-14.33-32-32-32zM48 400v-64c35.35 0 64 28.65 64 64H48zm0-224v-64h64c0 35.35-28.65 64-64 64zm272 192c-53.02 0-96-50.15-96-112 0-61.86 42.98-112 96-112s96 50.14 96 112c0 61.87-43 112-96 112zm272 32h-64c0-35.35 28.65-64 64-64v64zm0-224c-35.35 0-64-28.65-64-64h64v64z\"]\n};\nvar faMoneyBillWave = {\n  prefix: 'fas',\n  iconName: 'money-bill-wave',\n  icon: [640, 512, [], \"f53a\", \"M621.16 54.46C582.37 38.19 543.55 32 504.75 32c-123.17-.01-246.33 62.34-369.5 62.34-30.89 0-61.76-3.92-92.65-13.72-3.47-1.1-6.95-1.62-10.35-1.62C15.04 79 0 92.32 0 110.81v317.26c0 12.63 7.23 24.6 18.84 29.46C57.63 473.81 96.45 480 135.25 480c123.17 0 246.34-62.35 369.51-62.35 30.89 0 61.76 3.92 92.65 13.72 3.47 1.1 6.95 1.62 10.35 1.62 17.21 0 32.25-13.32 32.25-31.81V83.93c-.01-12.64-7.24-24.6-18.85-29.47zM48 132.22c20.12 5.04 41.12 7.57 62.72 8.93C104.84 170.54 79 192.69 48 192.69v-60.47zm0 285v-47.78c34.37 0 62.18 27.27 63.71 61.4-22.53-1.81-43.59-6.31-63.71-13.62zM320 352c-44.19 0-80-42.99-80-96 0-53.02 35.82-96 80-96s80 42.98 80 96c0 53.03-35.83 96-80 96zm272 27.78c-17.52-4.39-35.71-6.85-54.32-8.44 5.87-26.08 27.5-45.88 54.32-49.28v57.72zm0-236.11c-30.89-3.91-54.86-29.7-55.81-61.55 19.54 2.17 38.09 6.23 55.81 12.66v48.89z\"]\n};\nvar faMoneyBillWaveAlt = {\n  prefix: 'fas',\n  iconName: 'money-bill-wave-alt',\n  icon: [640, 512, [], \"f53b\", \"M621.16 54.46C582.37 38.19 543.55 32 504.75 32c-123.17-.01-246.33 62.34-369.5 62.34-30.89 0-61.76-3.92-92.65-13.72-3.47-1.1-6.95-1.62-10.35-1.62C15.04 79 0 92.32 0 110.81v317.26c0 12.63 7.23 24.6 18.84 29.46C57.63 473.81 96.45 480 135.25 480c123.17 0 246.34-62.35 369.51-62.35 30.89 0 61.76 3.92 92.65 13.72 3.47 1.1 6.95 1.62 10.35 1.62 17.21 0 32.25-13.32 32.25-31.81V83.93c-.01-12.64-7.24-24.6-18.85-29.47zM320 352c-44.19 0-80-42.99-80-96 0-53.02 35.82-96 80-96s80 42.98 80 96c0 53.03-35.83 96-80 96z\"]\n};\nvar faMoneyCheck = {\n  prefix: 'fas',\n  iconName: 'money-check',\n  icon: [640, 512, [], \"f53c\", \"M0 448c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V128H0v320zm448-208c0-8.84 7.16-16 16-16h96c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16h-96c-8.84 0-16-7.16-16-16v-32zm0 120c0-4.42 3.58-8 8-8h112c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H456c-4.42 0-8-3.58-8-8v-16zM64 264c0-4.42 3.58-8 8-8h304c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16zm0 96c0-4.42 3.58-8 8-8h176c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16zM624 32H16C7.16 32 0 39.16 0 48v48h640V48c0-8.84-7.16-16-16-16z\"]\n};\nvar faMoneyCheckAlt = {\n  prefix: 'fas',\n  iconName: 'money-check-alt',\n  icon: [640, 512, [], \"f53d\", \"M608 32H32C14.33 32 0 46.33 0 64v384c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32zM176 327.88V344c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-16.29c-11.29-.58-22.27-4.52-31.37-11.35-3.9-2.93-4.1-8.77-.57-12.14l11.75-11.21c2.77-2.64 6.89-2.76 10.13-.73 3.87 2.42 8.26 3.72 12.82 3.72h28.11c6.5 0 11.8-5.92 11.8-13.19 0-5.95-3.61-11.19-8.77-12.73l-45-13.5c-18.59-5.58-31.58-23.42-31.58-43.39 0-24.52 19.05-44.44 42.67-45.07V152c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16.29c11.29.58 22.27 4.51 31.37 11.35 3.9 2.93 4.1 8.77.57 12.14l-11.75 11.21c-2.77 2.64-6.89 2.76-10.13.73-3.87-2.43-8.26-3.72-12.82-3.72h-28.11c-6.5 0-11.8 5.92-11.8 13.19 0 5.95 3.61 11.19 8.77 12.73l45 13.5c18.59 5.58 31.58 23.42 31.58 43.39 0 24.53-19.05 44.44-42.67 45.07zM416 312c0 4.42-3.58 8-8 8H296c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h112c4.42 0 8 3.58 8 8v16zm160 0c0 4.42-3.58 8-8 8h-80c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16zm0-96c0 4.42-3.58 8-8 8H296c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h272c4.42 0 8 3.58 8 8v16z\"]\n};\nvar faMonument = {\n  prefix: 'fas',\n  iconName: 'monument',\n  icon: [384, 512, [], \"f5a6\", \"M368 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h352c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-78.86-347.26a31.97 31.97 0 0 0-9.21-19.44L203.31 4.69c-6.25-6.25-16.38-6.25-22.63 0l-76.6 76.61a31.97 31.97 0 0 0-9.21 19.44L64 416h256l-30.86-315.26zM240 307.2c0 6.4-6.4 12.8-12.8 12.8h-70.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h70.4c6.4 0 12.8 6.4 12.8 12.8v38.4z\"]\n};\nvar faMoon = {\n  prefix: 'fas',\n  iconName: 'moon',\n  icon: [512, 512, [], \"f186\", \"M283.211 512c78.962 0 151.079-35.925 198.857-94.792 7.068-8.708-.639-21.43-11.562-19.35-124.203 23.654-238.262-71.576-238.262-196.954 0-72.222 38.662-138.635 101.498-174.394 9.686-5.512 7.25-20.197-3.756-22.23A258.156 258.156 0 0 0 283.211 0c-141.309 0-256 114.511-256 256 0 141.309 114.511 256 256 256z\"]\n};\nvar faMortarPestle = {\n  prefix: 'fas',\n  iconName: 'mortar-pestle',\n  icon: [512, 512, [], \"f5a7\", \"M501.54 60.91c17.22-17.22 12.51-46.25-9.27-57.14a35.696 35.696 0 0 0-37.37 3.37L251.09 160h151.37l99.08-99.09zM496 192H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h16c0 80.98 50.2 150.11 121.13 178.32-12.76 16.87-21.72 36.8-24.95 58.69-1.46 9.92 6.04 18.98 16.07 18.98h223.5c10.03 0 17.53-9.06 16.07-18.98-3.22-21.89-12.18-41.82-24.95-58.69C429.8 406.11 480 336.98 480 256h16c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z\"]\n};\nvar faMosque = {\n  prefix: 'fas',\n  iconName: 'mosque',\n  icon: [640, 512, [], \"f678\", \"M0 480c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V160H0v320zm579.16-192c17.86-17.39 28.84-37.34 28.84-58.91 0-52.86-41.79-93.79-87.92-122.9-41.94-26.47-80.63-57.77-111.96-96.22L400 0l-8.12 9.97c-31.33 38.45-70.01 69.76-111.96 96.22C233.79 135.3 192 176.23 192 229.09c0 21.57 10.98 41.52 28.84 58.91h358.32zM608 320H192c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h32v-64c0-17.67 14.33-32 32-32s32 14.33 32 32v64h64v-72c0-48 48-72 48-72s48 24 48 72v72h64v-64c0-17.67 14.33-32 32-32s32 14.33 32 32v64h32c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32zM64 0S0 32 0 96v32h128V96c0-64-64-96-64-96z\"]\n};\nvar faMotorcycle = {\n  prefix: 'fas',\n  iconName: 'motorcycle',\n  icon: [640, 512, [], \"f21c\", \"M512.9 192c-14.9-.1-29.1 2.3-42.4 6.9L437.6 144H520c13.3 0 24-10.7 24-24V88c0-13.3-10.7-24-24-24h-45.3c-6.8 0-13.3 2.9-17.8 7.9l-37.5 41.7-22.8-38C392.2 68.4 384.4 64 376 64h-80c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h66.4l19.2 32H227.9c-17.7-23.1-44.9-40-99.9-40H72.5C59 104 47.7 115 48 128.5c.2 13 10.9 23.5 24 23.5h56c24.5 0 38.7 10.9 47.8 24.8l-11.3 20.5c-13-3.9-26.9-5.7-41.3-5.2C55.9 194.5 1.6 249.6 0 317c-1.6 72.1 56.3 131 128 131 59.6 0 109.7-40.8 124-96h84.2c13.7 0 24.6-11.4 24-25.1-2.1-47.1 17.5-93.7 56.2-125l12.5 20.8c-27.6 23.7-45.1 58.9-44.8 98.2.5 69.6 57.2 126.5 126.8 127.1 71.6.7 129.8-57.5 129.2-129.1-.7-69.6-57.6-126.4-127.2-126.9zM128 400c-44.1 0-80-35.9-80-80s35.9-80 80-80c4.2 0 8.4.3 12.5 1L99 316.4c-8.8 16 2.8 35.6 21 35.6h81.3c-12.4 28.2-40.6 48-73.3 48zm463.9-75.6c-2.2 40.6-35 73.4-75.5 75.5-46.1 2.5-84.4-34.3-84.4-79.9 0-21.4 8.4-40.8 22.1-55.1l49.4 82.4c4.5 7.6 14.4 10 22 5.5l13.7-8.2c7.6-4.5 10-14.4 5.5-22l-48.6-80.9c5.2-1.1 10.5-1.6 15.9-1.6 45.6-.1 82.3 38.2 79.9 84.3z\"]\n};\nvar faMountain = {\n  prefix: 'fas',\n  iconName: 'mountain',\n  icon: [640, 512, [], \"f6fc\", \"M634.92 462.7l-288-448C341.03 5.54 330.89 0 320 0s-21.03 5.54-26.92 14.7l-288 448a32.001 32.001 0 0 0-1.17 32.64A32.004 32.004 0 0 0 32 512h576c11.71 0 22.48-6.39 28.09-16.67a31.983 31.983 0 0 0-1.17-32.63zM320 91.18L405.39 224H320l-64 64-38.06-38.06L320 91.18z\"]\n};\nvar faMouse = {\n  prefix: 'fas',\n  iconName: 'mouse',\n  icon: [384, 512, [], \"f8cc\", \"M0 352a160 160 0 0 0 160 160h64a160 160 0 0 0 160-160V224H0zM176 0h-16A160 160 0 0 0 0 160v32h176zm48 0h-16v192h176v-32A160 160 0 0 0 224 0z\"]\n};\nvar faMousePointer = {\n  prefix: 'fas',\n  iconName: 'mouse-pointer',\n  icon: [320, 512, [], \"f245\", \"M302.189 329.126H196.105l55.831 135.993c3.889 9.428-.555 19.999-9.444 23.999l-49.165 21.427c-9.165 4-19.443-.571-23.332-9.714l-53.053-129.136-86.664 89.138C18.729 472.71 0 463.554 0 447.977V18.299C0 1.899 19.921-6.096 30.277 5.443l284.412 292.542c11.472 11.179 3.007 31.141-12.5 31.141z\"]\n};\nvar faMugHot = {\n  prefix: 'fas',\n  iconName: 'mug-hot',\n  icon: [512, 512, [], \"f7b6\", \"M127.1 146.5c1.3 7.7 8 13.5 16 13.5h16.5c9.8 0 17.6-8.5 16.3-18-3.8-28.2-16.4-54.2-36.6-74.7-14.4-14.7-23.6-33.3-26.4-53.5C111.8 5.9 105 0 96.8 0H80.4C70.6 0 63 8.5 64.1 18c3.9 31.9 18 61.3 40.6 84.4 12 12.2 19.7 27.5 22.4 44.1zm112 0c1.3 7.7 8 13.5 16 13.5h16.5c9.8 0 17.6-8.5 16.3-18-3.8-28.2-16.4-54.2-36.6-74.7-14.4-14.7-23.6-33.3-26.4-53.5C223.8 5.9 217 0 208.8 0h-16.4c-9.8 0-17.5 8.5-16.3 18 3.9 31.9 18 61.3 40.6 84.4 12 12.2 19.7 27.5 22.4 44.1zM400 192H32c-17.7 0-32 14.3-32 32v192c0 53 43 96 96 96h192c53 0 96-43 96-96h16c61.8 0 112-50.2 112-112s-50.2-112-112-112zm0 160h-16v-96h16c26.5 0 48 21.5 48 48s-21.5 48-48 48z\"]\n};\nvar faMusic = {\n  prefix: 'fas',\n  iconName: 'music',\n  icon: [512, 512, [], \"f001\", \"M470.38 1.51L150.41 96A32 32 0 0 0 128 126.51v261.41A139 139 0 0 0 96 384c-53 0-96 28.66-96 64s43 64 96 64 96-28.66 96-64V214.32l256-75v184.61a138.4 138.4 0 0 0-32-3.93c-53 0-96 28.66-96 64s43 64 96 64 96-28.65 96-64V32a32 32 0 0 0-41.62-30.49z\"]\n};\nvar faNetworkWired = {\n  prefix: 'fas',\n  iconName: 'network-wired',\n  icon: [640, 512, [], \"f6ff\", \"M640 264v-16c0-8.84-7.16-16-16-16H344v-40h72c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32H224c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h72v40H16c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h104v40H64c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h160c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32h-56v-40h304v40h-56c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h160c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32h-56v-40h104c8.84 0 16-7.16 16-16zM256 128V64h128v64H256zm-64 320H96v-64h96v64zm352 0h-96v-64h96v64z\"]\n};\nvar faNeuter = {\n  prefix: 'fas',\n  iconName: 'neuter',\n  icon: [288, 512, [], \"f22c\", \"M288 176c0-79.5-64.5-144-144-144S0 96.5 0 176c0 68.5 47.9 125.9 112 140.4V468c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12V316.4c64.1-14.5 112-71.9 112-140.4zm-144 80c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\"]\n};\nvar faNewspaper = {\n  prefix: 'fas',\n  iconName: 'newspaper',\n  icon: [576, 512, [], \"f1ea\", \"M552 64H88c-13.255 0-24 10.745-24 24v8H24c-13.255 0-24 10.745-24 24v272c0 30.928 25.072 56 56 56h472c26.51 0 48-21.49 48-48V88c0-13.255-10.745-24-24-24zM56 400a8 8 0 0 1-8-8V144h16v248a8 8 0 0 1-8 8zm236-16H140c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm208 0H348c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm-208-96H140c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm208 0H348c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm0-96H140c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h360c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12z\"]\n};\nvar faNotEqual = {\n  prefix: 'fas',\n  iconName: 'not-equal',\n  icon: [448, 512, [], \"f53e\", \"M416 208c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32h-23.88l51.87-66.81c5.37-7.02 4.04-17.06-2.97-22.43L415.61 3.3c-7.02-5.38-17.06-4.04-22.44 2.97L311.09 112H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h204.56l-74.53 96H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h55.49l-51.87 66.81c-5.37 7.01-4.04 17.05 2.97 22.43L64 508.7c7.02 5.38 17.06 4.04 22.43-2.97L168.52 400H416c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32H243.05l74.53-96H416z\"]\n};\nvar faNotesMedical = {\n  prefix: 'fas',\n  iconName: 'notes-medical',\n  icon: [384, 512, [], \"f481\", \"M336 64h-80c0-35.3-28.7-64-64-64s-64 28.7-64 64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM192 40c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm96 304c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48zm0-192c0 4.4-3.6 8-8 8H104c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h176c4.4 0 8 3.6 8 8v16z\"]\n};\nvar faObjectGroup = {\n  prefix: 'fas',\n  iconName: 'object-group',\n  icon: [512, 512, [], \"f247\", \"M480 128V96h20c6.627 0 12-5.373 12-12V44c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v20H64V44c0-6.627-5.373-12-12-12H12C5.373 32 0 37.373 0 44v40c0 6.627 5.373 12 12 12h20v320H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-20h384v20c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-20V128zM96 276V140c0-6.627 5.373-12 12-12h168c6.627 0 12 5.373 12 12v136c0 6.627-5.373 12-12 12H108c-6.627 0-12-5.373-12-12zm320 96c0 6.627-5.373 12-12 12H236c-6.627 0-12-5.373-12-12v-52h72c13.255 0 24-10.745 24-24v-72h84c6.627 0 12 5.373 12 12v136z\"]\n};\nvar faObjectUngroup = {\n  prefix: 'fas',\n  iconName: 'object-ungroup',\n  icon: [576, 512, [], \"f248\", \"M64 320v26a6 6 0 0 1-6 6H6a6 6 0 0 1-6-6v-52a6 6 0 0 1 6-6h26V96H6a6 6 0 0 1-6-6V38a6 6 0 0 1 6-6h52a6 6 0 0 1 6 6v26h288V38a6 6 0 0 1 6-6h52a6 6 0 0 1 6 6v52a6 6 0 0 1-6 6h-26v192h26a6 6 0 0 1 6 6v52a6 6 0 0 1-6 6h-52a6 6 0 0 1-6-6v-26H64zm480-64v-32h26a6 6 0 0 0 6-6v-52a6 6 0 0 0-6-6h-52a6 6 0 0 0-6 6v26H408v72h8c13.255 0 24 10.745 24 24v64c0 13.255-10.745 24-24 24h-64c-13.255 0-24-10.745-24-24v-8H192v72h-26a6 6 0 0 0-6 6v52a6 6 0 0 0 6 6h52a6 6 0 0 0 6-6v-26h288v26a6 6 0 0 0 6 6h52a6 6 0 0 0 6-6v-52a6 6 0 0 0-6-6h-26V256z\"]\n};\nvar faOilCan = {\n  prefix: 'fas',\n  iconName: 'oil-can',\n  icon: [640, 512, [], \"f613\", \"M629.8 160.31L416 224l-50.49-25.24a64.07 64.07 0 0 0-28.62-6.76H280v-48h56c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16H176c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h56v48h-56L37.72 166.86a31.9 31.9 0 0 0-5.79-.53C14.67 166.33 0 180.36 0 198.34v94.95c0 15.46 11.06 28.72 26.28 31.48L96 337.46V384c0 17.67 14.33 32 32 32h274.63c8.55 0 16.75-3.42 22.76-9.51l212.26-214.75c1.5-1.5 2.34-3.54 2.34-5.66V168c.01-5.31-5.08-9.15-10.19-7.69zM96 288.67l-48-8.73v-62.43l48 8.73v62.43zm453.33 84.66c0 23.56 19.1 42.67 42.67 42.67s42.67-19.1 42.67-42.67S592 288 592 288s-42.67 61.77-42.67 85.33z\"]\n};\nvar faOm = {\n  prefix: 'fas',\n  iconName: 'om',\n  icon: [512, 512, [], \"f679\", \"M360.6 60.94a10.43 10.43 0 0 0 14.76 0l21.57-21.56a10.43 10.43 0 0 0 0-14.76L375.35 3.06c-4.08-4.07-10.68-4.07-14.76 0l-21.57 21.56a10.43 10.43 0 0 0 0 14.76l21.58 21.56zM412.11 192c-26.69 0-51.77 10.39-70.64 29.25l-24.25 24.25c-6.78 6.77-15.78 10.5-25.38 10.5H245c10.54-22.1 14.17-48.11 7.73-75.23-10.1-42.55-46.36-76.11-89.52-83.19-36.15-5.93-70.9 5.04-96.01 28.78-7.36 6.96-6.97 18.85 1.12 24.93l26.15 19.63c5.72 4.3 13.66 4.32 19.2-.21 8.45-6.9 19.02-10.71 30.27-10.71 26.47 0 48.01 21.53 48.01 48s-21.54 48-48.01 48h-31.9c-11.96 0-19.74 12.58-14.39 23.28l16.09 32.17c2.53 5.06 7.6 8.1 13.17 8.55h33.03c35.3 0 64.01 28.7 64.01 64s-28.71 64-64.01 64c-96.02 0-122.35-54.02-145.15-92.03-4.53-7.55-14.77-3.58-14.79 5.22C-.09 416 41.13 512 159.94 512c70.59 0 128.02-57.42 128.02-128 0-23.42-6.78-45.1-17.81-64h21.69c26.69 0 51.77-10.39 70.64-29.25l24.25-24.25c6.78-6.77 15.78-10.5 25.38-10.5 19.78 0 35.88 16.09 35.88 35.88V392c0 13.23-18.77 24-32.01 24-39.4 0-66.67-24.24-81.82-42.89-4.77-5.87-14.2-2.54-14.2 5.02V416s0 64 96.02 64c48.54 0 96.02-39.47 96.02-88V291.88c0-55.08-44.8-99.88-99.89-99.88zm42.18-124.73c-85.55 65.12-169.05 2.75-172.58.05-6.02-4.62-14.44-4.38-20.14.55-5.74 4.92-7.27 13.17-3.66 19.8 1.61 2.95 40.37 72.34 118.8 72.34 79.92 0 98.78-31.36 101.75-37.66 1.02-2.12 1.53-4.47 1.53-6.83V80c0-13.22-15.14-20.69-25.7-12.73z\"]\n};\nvar faOtter = {\n  prefix: 'fas',\n  iconName: 'otter',\n  icon: [640, 512, [], \"f700\", \"M608 32h-32l-13.25-13.25A63.97 63.97 0 0 0 517.49 0H497c-11.14 0-22.08 2.91-31.75 8.43L312 96h-56C149.96 96 64 181.96 64 288v1.61c0 32.75-16 62.14-39.56 84.89-18.19 17.58-28.1 43.68-23.19 71.8 6.76 38.8 42.9 65.7 82.28 65.7H192c17.67 0 32-14.33 32-32s-14.33-32-32-32H80c-8.83 0-16-7.17-16-16s7.17-16 16-16h224c8.84 0 16-7.16 16-16v-16c0-17.67-14.33-32-32-32h-64l149.49-80.5L448 416h80c8.84 0 16-7.16 16-16v-16c0-17.67-14.33-32-32-32h-28.22l-55.11-110.21L521.14 192H544c53.02 0 96-42.98 96-96V64c0-17.67-14.33-32-32-32zm-96 16c8.84 0 16 7.16 16 16s-7.16 16-16 16-16-7.16-16-16 7.16-16 16-16zm32 96h-34.96L407.2 198.84l-13.77-27.55L512 112h77.05c-6.62 18.58-24.22 32-45.05 32z\"]\n};\nvar faOutdent = {\n  prefix: 'fas',\n  iconName: 'outdent',\n  icon: [448, 512, [], \"f03b\", \"M100.69 363.29c10 10 27.31 2.93 27.31-11.31V160c0-14.32-17.33-21.31-27.31-11.31l-96 96a16 16 0 0 0 0 22.62zM432 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm3.17-128H204.83A12.82 12.82 0 0 0 192 300.83v38.34A12.82 12.82 0 0 0 204.83 352h230.34A12.82 12.82 0 0 0 448 339.17v-38.34A12.82 12.82 0 0 0 435.17 288zm0-128H204.83A12.82 12.82 0 0 0 192 172.83v38.34A12.82 12.82 0 0 0 204.83 224h230.34A12.82 12.82 0 0 0 448 211.17v-38.34A12.82 12.82 0 0 0 435.17 160zM432 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faPager = {\n  prefix: 'fas',\n  iconName: 'pager',\n  icon: [512, 512, [], \"f815\", \"M448 64H64a64 64 0 0 0-64 64v256a64 64 0 0 0 64 64h384a64 64 0 0 0 64-64V128a64 64 0 0 0-64-64zM160 368H80a16 16 0 0 1-16-16v-16a16 16 0 0 1 16-16h80zm128-16a16 16 0 0 1-16 16h-80v-48h80a16 16 0 0 1 16 16zm160-128a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32v-64a32 32 0 0 1 32-32h320a32 32 0 0 1 32 32z\"]\n};\nvar faPaintBrush = {\n  prefix: 'fas',\n  iconName: 'paint-brush',\n  icon: [512, 512, [], \"f1fc\", \"M167.02 309.34c-40.12 2.58-76.53 17.86-97.19 72.3-2.35 6.21-8 9.98-14.59 9.98-11.11 0-45.46-27.67-55.25-34.35C0 439.62 37.93 512 128 512c75.86 0 128-43.77 128-120.19 0-3.11-.65-6.08-.97-9.13l-88.01-73.34zM457.89 0c-15.16 0-29.37 6.71-40.21 16.45C213.27 199.05 192 203.34 192 257.09c0 13.7 3.25 26.76 8.73 38.7l63.82 53.18c7.21 1.8 14.64 3.03 22.39 3.03 62.11 0 98.11-45.47 211.16-256.46 7.38-14.35 13.9-29.85 13.9-45.99C512 20.64 486 0 457.89 0z\"]\n};\nvar faPaintRoller = {\n  prefix: 'fas',\n  iconName: 'paint-roller',\n  icon: [512, 512, [], \"f5aa\", \"M416 128V32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v96c0 17.67 14.33 32 32 32h352c17.67 0 32-14.33 32-32zm32-64v128c0 17.67-14.33 32-32 32H256c-35.35 0-64 28.65-64 64v32c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32v-32h160c53.02 0 96-42.98 96-96v-64c0-35.35-28.65-64-64-64z\"]\n};\nvar faPalette = {\n  prefix: 'fas',\n  iconName: 'palette',\n  icon: [512, 512, [], \"f53f\", \"M204.3 5C104.9 24.4 24.8 104.3 5.2 203.4c-37 187 131.7 326.4 258.8 306.7 41.2-6.4 61.4-54.6 42.5-91.7-23.1-45.4 9.9-98.4 60.9-98.4h79.7c35.8 0 64.8-29.6 64.9-65.3C511.5 97.1 368.1-26.9 204.3 5zM96 320c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm32-128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128-64c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128 64c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faPallet = {\n  prefix: 'fas',\n  iconName: 'pallet',\n  icon: [640, 512, [], \"f482\", \"M144 256h352c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16H384v128l-64-32-64 32V0H144c-8.8 0-16 7.2-16 16v224c0 8.8 7.2 16 16 16zm480 128c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v64H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16h-48v-64h48zm-336 64H128v-64h160v64zm224 0H352v-64h160v64z\"]\n};\nvar faPaperPlane = {\n  prefix: 'fas',\n  iconName: 'paper-plane',\n  icon: [512, 512, [], \"f1d8\", \"M476 3.2L12.5 270.6c-18.1 10.4-15.8 35.6 2.2 43.2L121 358.4l287.3-253.2c5.5-4.9 13.3 2.6 8.6 8.3L176 407v80.5c0 23.6 28.5 32.9 42.5 15.8L282 426l124.6 52.2c14.2 6 30.4-2.9 33-18.2l72-432C515 7.8 493.3-6.8 476 3.2z\"]\n};\nvar faPaperclip = {\n  prefix: 'fas',\n  iconName: 'paperclip',\n  icon: [448, 512, [], \"f0c6\", \"M43.246 466.142c-58.43-60.289-57.341-157.511 1.386-217.581L254.392 34c44.316-45.332 116.351-45.336 160.671 0 43.89 44.894 43.943 117.329 0 162.276L232.214 383.128c-29.855 30.537-78.633 30.111-107.982-.998-28.275-29.97-27.368-77.473 1.452-106.953l143.743-146.835c6.182-6.314 16.312-6.422 22.626-.241l22.861 22.379c6.315 6.182 6.422 16.312.241 22.626L171.427 319.927c-4.932 5.045-5.236 13.428-.648 18.292 4.372 4.634 11.245 4.711 15.688.165l182.849-186.851c19.613-20.062 19.613-52.725-.011-72.798-19.189-19.627-49.957-19.637-69.154 0L90.39 293.295c-34.763 35.56-35.299 93.12-1.191 128.313 34.01 35.093 88.985 35.137 123.058.286l172.06-175.999c6.177-6.319 16.307-6.433 22.626-.256l22.877 22.364c6.319 6.177 6.434 16.307.256 22.626l-172.06 175.998c-59.576 60.938-155.943 60.216-214.77-.485z\"]\n};\nvar faParachuteBox = {\n  prefix: 'fas',\n  iconName: 'parachute-box',\n  icon: [512, 512, [], \"f4cd\", \"M511.9 175c-9.1-75.6-78.4-132.4-158.3-158.7C390 55.7 416 116.9 416 192h28.1L327.5 321.5c-2.5-.6-4.8-1.5-7.5-1.5h-48V192h112C384 76.8 315.1 0 256 0S128 76.8 128 192h112v128h-48c-2.7 0-5 .9-7.5 1.5L67.9 192H96c0-75.1 26-136.3 62.4-175.7C78.5 42.7 9.2 99.5.1 175c-1.1 9.1 6.8 17 16 17h8.7l136.7 151.9c-.7 2.6-1.6 5.2-1.6 8.1v128c0 17.7 14.3 32 32 32h128c17.7 0 32-14.3 32-32V352c0-2.9-.9-5.4-1.6-8.1L487.1 192h8.7c9.3 0 17.2-7.8 16.1-17z\"]\n};\nvar faParagraph = {\n  prefix: 'fas',\n  iconName: 'paragraph',\n  icon: [448, 512, [], \"f1dd\", \"M448 48v32a16 16 0 0 1-16 16h-48v368a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16V96h-32v368a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16V352h-32a160 160 0 0 1 0-320h240a16 16 0 0 1 16 16z\"]\n};\nvar faParking = {\n  prefix: 'fas',\n  iconName: 'parking',\n  icon: [448, 512, [], \"f540\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM240 320h-48v48c0 8.8-7.2 16-16 16h-32c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16h96c52.9 0 96 43.1 96 96s-43.1 96-96 96zm0-128h-48v64h48c17.6 0 32-14.4 32-32s-14.4-32-32-32z\"]\n};\nvar faPassport = {\n  prefix: 'fas',\n  iconName: 'passport',\n  icon: [448, 512, [], \"f5ab\", \"M129.62 176h39.09c1.49-27.03 6.54-51.35 14.21-70.41-27.71 13.24-48.02 39.19-53.3 70.41zm0 32c5.29 31.22 25.59 57.17 53.3 70.41-7.68-19.06-12.72-43.38-14.21-70.41h-39.09zM224 286.69c7.69-7.45 20.77-34.42 23.43-78.69h-46.87c2.67 44.26 15.75 71.24 23.44 78.69zM200.57 176h46.87c-2.66-44.26-15.74-71.24-23.43-78.69-7.7 7.45-20.78 34.43-23.44 78.69zm64.51 102.41c27.71-13.24 48.02-39.19 53.3-70.41h-39.09c-1.49 27.03-6.53 51.35-14.21 70.41zM416 0H64C28.65 0 0 28.65 0 64v384c0 35.35 28.65 64 64 64h352c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32zm-80 416H112c-8.8 0-16-7.2-16-16s7.2-16 16-16h224c8.8 0 16 7.2 16 16s-7.2 16-16 16zm-112-96c-70.69 0-128-57.31-128-128S153.31 64 224 64s128 57.31 128 128-57.31 128-128 128zm41.08-214.41c7.68 19.06 12.72 43.38 14.21 70.41h39.09c-5.28-31.22-25.59-57.17-53.3-70.41z\"]\n};\nvar faPastafarianism = {\n  prefix: 'fas',\n  iconName: 'pastafarianism',\n  icon: [640, 512, [], \"f67b\", \"M624.54 347.67c-32.7-12.52-57.36 4.25-75.37 16.45-17.06 11.53-23.25 14.42-31.41 11.36-8.12-3.09-10.83-9.38-15.89-29.38-3.33-13.15-7.44-29.32-17.95-42.65 2.24-2.91 4.43-5.79 6.38-8.57C500.47 304.45 513.71 312 532 312c33.95 0 50.87-25.78 62.06-42.83 10.59-16.14 15-21.17 21.94-21.17 13.25 0 24-10.75 24-24s-10.75-24-24-24c-33.95 0-50.87 25.78-62.06 42.83-10.6 16.14-15 21.17-21.94 21.17-17.31 0-37.48-61.43-97.26-101.91l17.25-34.5C485.43 125.5 512 97.98 512 64c0-35.35-28.65-64-64-64s-64 28.65-64 64c0 13.02 3.94 25.1 10.62 35.21l-18.15 36.3c-16.98-4.6-35.6-7.51-56.46-7.51s-39.49 2.91-56.46 7.51l-18.15-36.3C252.06 89.1 256 77.02 256 64c0-35.35-28.65-64-64-64s-64 28.65-64 64c0 33.98 26.56 61.5 60.02 63.6l17.25 34.5C145.68 202.44 125.15 264 108 264c-6.94 0-11.34-5.03-21.94-21.17C74.88 225.78 57.96 200 24 200c-13.25 0-24 10.75-24 24s10.75 24 24 24c6.94 0 11.34 5.03 21.94 21.17C57.13 286.22 74.05 312 108 312c18.29 0 31.53-7.55 41.7-17.11 1.95 2.79 4.14 5.66 6.38 8.57-10.51 13.33-14.62 29.5-17.95 42.65-5.06 20-7.77 26.28-15.89 29.38-8.11 3.06-14.33.17-31.41-11.36-18.03-12.2-42.72-28.92-75.37-16.45-12.39 4.72-18.59 18.58-13.87 30.97 4.72 12.41 18.61 18.61 30.97 13.88 8.16-3.09 14.34-.19 31.39 11.36 13.55 9.16 30.83 20.86 52.42 20.84 7.17 0 14.83-1.28 22.97-4.39 32.66-12.44 39.98-41.33 45.33-62.44 2.21-8.72 3.99-14.49 5.95-18.87 16.62 13.61 36.95 25.88 61.64 34.17-9.96 37-32.18 90.8-60.26 90.8-13.25 0-24 10.75-24 24s10.75 24 24 24c66.74 0 97.05-88.63 107.42-129.14 6.69.6 13.42 1.14 20.58 1.14s13.89-.54 20.58-1.14C350.95 423.37 381.26 512 448 512c13.25 0 24-10.75 24-24s-10.75-24-24-24c-27.94 0-50.21-53.81-60.22-90.81 24.69-8.29 45-20.56 61.62-34.16 1.96 4.38 3.74 10.15 5.95 18.87 5.34 21.11 12.67 50 45.33 62.44 8.14 3.11 15.8 4.39 22.97 4.39 21.59 0 38.87-11.69 52.42-20.84 17.05-11.55 23.28-14.45 31.39-11.36 12.39 4.75 26.27-1.47 30.97-13.88 4.71-12.4-1.49-26.26-13.89-30.98zM448 48c8.82 0 16 7.18 16 16s-7.18 16-16 16-16-7.18-16-16 7.18-16 16-16zm-256 0c8.82 0 16 7.18 16 16s-7.18 16-16 16-16-7.18-16-16 7.18-16 16-16z\"]\n};\nvar faPaste = {\n  prefix: 'fas',\n  iconName: 'paste',\n  icon: [448, 512, [], \"f0ea\", \"M128 184c0-30.879 25.122-56 56-56h136V56c0-13.255-10.745-24-24-24h-80.61C204.306 12.89 183.637 0 160 0s-44.306 12.89-55.39 32H24C10.745 32 0 42.745 0 56v336c0 13.255 10.745 24 24 24h104V184zm32-144c13.255 0 24 10.745 24 24s-10.745 24-24 24-24-10.745-24-24 10.745-24 24-24zm184 248h104v200c0 13.255-10.745 24-24 24H184c-13.255 0-24-10.745-24-24V184c0-13.255 10.745-24 24-24h136v104c0 13.2 10.8 24 24 24zm104-38.059V256h-96v-96h6.059a24 24 0 0 1 16.97 7.029l65.941 65.941a24.002 24.002 0 0 1 7.03 16.971z\"]\n};\nvar faPause = {\n  prefix: 'fas',\n  iconName: 'pause',\n  icon: [448, 512, [], \"f04c\", \"M144 479H48c-26.5 0-48-21.5-48-48V79c0-26.5 21.5-48 48-48h96c26.5 0 48 21.5 48 48v352c0 26.5-21.5 48-48 48zm304-48V79c0-26.5-21.5-48-48-48h-96c-26.5 0-48 21.5-48 48v352c0 26.5 21.5 48 48 48h96c26.5 0 48-21.5 48-48z\"]\n};\nvar faPauseCircle = {\n  prefix: 'fas',\n  iconName: 'pause-circle',\n  icon: [512, 512, [], \"f28b\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm-16 328c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v160zm112 0c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v160z\"]\n};\nvar faPaw = {\n  prefix: 'fas',\n  iconName: 'paw',\n  icon: [512, 512, [], \"f1b0\", \"M256 224c-79.41 0-192 122.76-192 200.25 0 34.9 26.81 55.75 71.74 55.75 48.84 0 81.09-25.08 120.26-25.08 39.51 0 71.85 25.08 120.26 25.08 44.93 0 71.74-20.85 71.74-55.75C448 346.76 335.41 224 256 224zm-147.28-12.61c-10.4-34.65-42.44-57.09-71.56-50.13-29.12 6.96-44.29 40.69-33.89 75.34 10.4 34.65 42.44 57.09 71.56 50.13 29.12-6.96 44.29-40.69 33.89-75.34zm84.72-20.78c30.94-8.14 46.42-49.94 34.58-93.36s-46.52-72.01-77.46-63.87-46.42 49.94-34.58 93.36c11.84 43.42 46.53 72.02 77.46 63.87zm281.39-29.34c-29.12-6.96-61.15 15.48-71.56 50.13-10.4 34.65 4.77 68.38 33.89 75.34 29.12 6.96 61.15-15.48 71.56-50.13 10.4-34.65-4.77-68.38-33.89-75.34zm-156.27 29.34c30.94 8.14 65.62-20.45 77.46-63.87 11.84-43.42-3.64-85.21-34.58-93.36s-65.62 20.45-77.46 63.87c-11.84 43.42 3.64 85.22 34.58 93.36z\"]\n};\nvar faPeace = {\n  prefix: 'fas',\n  iconName: 'peace',\n  icon: [496, 512, [], \"f67c\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm184 248c0 31.93-8.2 61.97-22.57 88.17L280 240.63V74.97c86.23 15.21 152 90.5 152 181.03zM216 437.03c-33.86-5.97-64.49-21.2-89.29-43.02L216 322.57v114.46zm64-114.46L369.29 394c-24.8 21.82-55.43 37.05-89.29 43.02V322.57zm-64-247.6v165.66L86.57 344.17C72.2 317.97 64 287.93 64 256c0-90.53 65.77-165.82 152-181.03z\"]\n};\nvar faPen = {\n  prefix: 'fas',\n  iconName: 'pen',\n  icon: [512, 512, [], \"f304\", \"M290.74 93.24l128.02 128.02-277.99 277.99-114.14 12.6C11.35 513.54-1.56 500.62.14 485.34l12.7-114.22 277.9-277.88zm207.2-19.06l-60.11-60.11c-18.75-18.75-49.16-18.75-67.91 0l-56.55 56.55 128.02 128.02 56.55-56.55c18.75-18.76 18.75-49.16 0-67.91z\"]\n};\nvar faPenAlt = {\n  prefix: 'fas',\n  iconName: 'pen-alt',\n  icon: [512, 512, [], \"f305\", \"M497.94 74.17l-60.11-60.11c-18.75-18.75-49.16-18.75-67.91 0l-56.55 56.55 128.02 128.02 56.55-56.55c18.75-18.75 18.75-49.15 0-67.91zm-246.8-20.53c-15.62-15.62-40.94-15.62-56.56 0L75.8 172.43c-6.25 6.25-6.25 16.38 0 22.62l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l101.82-101.82 22.63 22.62L93.95 290.03A327.038 327.038 0 0 0 .17 485.11l-.03.23c-1.7 15.28 11.21 28.2 26.49 26.51a327.02 327.02 0 0 0 195.34-93.8l196.79-196.79-82.77-82.77-84.85-84.85z\"]\n};\nvar faPenFancy = {\n  prefix: 'fas',\n  iconName: 'pen-fancy',\n  icon: [512, 512, [], \"f5ac\", \"M79.18 282.94a32.005 32.005 0 0 0-20.24 20.24L0 480l4.69 4.69 92.89-92.89c-.66-2.56-1.57-5.03-1.57-7.8 0-17.67 14.33-32 32-32s32 14.33 32 32-14.33 32-32 32c-2.77 0-5.24-.91-7.8-1.57l-92.89 92.89L32 512l176.82-58.94a31.983 31.983 0 0 0 20.24-20.24l33.07-84.07-98.88-98.88-84.07 33.07zM369.25 28.32L186.14 227.81l97.85 97.85 199.49-183.11C568.4 67.48 443.73-55.94 369.25 28.32z\"]\n};\nvar faPenNib = {\n  prefix: 'fas',\n  iconName: 'pen-nib',\n  icon: [512, 512, [], \"f5ad\", \"M136.6 138.79a64.003 64.003 0 0 0-43.31 41.35L0 460l14.69 14.69L164.8 324.58c-2.99-6.26-4.8-13.18-4.8-20.58 0-26.51 21.49-48 48-48s48 21.49 48 48-21.49 48-48 48c-7.4 0-14.32-1.81-20.58-4.8L37.31 497.31 52 512l279.86-93.29a64.003 64.003 0 0 0 41.35-43.31L416 224 288 96l-151.4 42.79zm361.34-64.62l-60.11-60.11c-18.75-18.75-49.16-18.75-67.91 0l-56.55 56.55 128.02 128.02 56.55-56.55c18.75-18.75 18.75-49.15 0-67.91z\"]\n};\nvar faPenSquare = {\n  prefix: 'fas',\n  iconName: 'pen-square',\n  icon: [448, 512, [], \"f14b\", \"M400 480H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48v352c0 26.5-21.5 48-48 48zM238.1 177.9L102.4 313.6l-6.3 57.1c-.8 7.6 5.6 14.1 13.3 13.3l57.1-6.3L302.2 242c2.3-2.3 2.3-6.1 0-8.5L246.7 178c-2.5-2.4-6.3-2.4-8.6-.1zM345 165.1L314.9 135c-9.4-9.4-24.6-9.4-33.9 0l-23.1 23.1c-2.3 2.3-2.3 6.1 0 8.5l55.5 55.5c2.3 2.3 6.1 2.3 8.5 0L345 199c9.3-9.3 9.3-24.5 0-33.9z\"]\n};\nvar faPencilAlt = {\n  prefix: 'fas',\n  iconName: 'pencil-alt',\n  icon: [512, 512, [], \"f303\", \"M497.9 142.1l-46.1 46.1c-4.7 4.7-12.3 4.7-17 0l-111-111c-4.7-4.7-4.7-12.3 0-17l46.1-46.1c18.7-18.7 49.1-18.7 67.9 0l60.1 60.1c18.8 18.7 18.8 49.1 0 67.9zM284.2 99.8L21.6 362.4.4 483.9c-2.9 16.4 11.4 30.6 27.8 27.8l121.5-21.3 262.6-262.6c4.7-4.7 4.7-12.3 0-17l-111-111c-4.8-4.7-12.4-4.7-17.1 0zM124.1 339.9c-5.5-5.5-5.5-14.3 0-19.8l154-154c5.5-5.5 14.3-5.5 19.8 0s5.5 14.3 0 19.8l-154 154c-5.5 5.5-14.3 5.5-19.8 0zM88 424h48v36.3l-64.5 11.3-31.1-31.1L51.7 376H88v48z\"]\n};\nvar faPencilRuler = {\n  prefix: 'fas',\n  iconName: 'pencil-ruler',\n  icon: [512, 512, [], \"f5ae\", \"M109.46 244.04l134.58-134.56-44.12-44.12-61.68 61.68a7.919 7.919 0 0 1-11.21 0l-11.21-11.21c-3.1-3.1-3.1-8.12 0-11.21l61.68-61.68-33.64-33.65C131.47-3.1 111.39-3.1 99 9.29L9.29 99c-12.38 12.39-12.39 32.47 0 44.86l100.17 100.18zm388.47-116.8c18.76-18.76 18.75-49.17 0-67.93l-45.25-45.25c-18.76-18.76-49.18-18.76-67.95 0l-46.02 46.01 113.2 113.2 46.02-46.03zM316.08 82.71l-297 296.96L.32 487.11c-2.53 14.49 10.09 27.11 24.59 24.56l107.45-18.84L429.28 195.9 316.08 82.71zm186.63 285.43l-33.64-33.64-61.68 61.68c-3.1 3.1-8.12 3.1-11.21 0l-11.21-11.21c-3.09-3.1-3.09-8.12 0-11.21l61.68-61.68-44.14-44.14L267.93 402.5l100.21 100.2c12.39 12.39 32.47 12.39 44.86 0l89.71-89.7c12.39-12.39 12.39-32.47 0-44.86z\"]\n};\nvar faPeopleArrows = {\n  prefix: 'fas',\n  iconName: 'people-arrows',\n  icon: [576, 512, [], \"e068\", \"M96,128A64,64,0,1,0,32,64,64,64,0,0,0,96,128Zm0,176.08a44.11,44.11,0,0,1,13.64-32L181.77,204c1.65-1.55,3.77-2.31,5.61-3.57A63.91,63.91,0,0,0,128,160H64A64,64,0,0,0,0,224v96a32,32,0,0,0,32,32V480a32,32,0,0,0,32,32h64a32,32,0,0,0,32-32V383.61l-50.36-47.53A44.08,44.08,0,0,1,96,304.08ZM480,128a64,64,0,1,0-64-64A64,64,0,0,0,480,128Zm32,32H448a63.91,63.91,0,0,0-59.38,40.42c1.84,1.27,4,2,5.62,3.59l72.12,68.06a44.37,44.37,0,0,1,0,64L416,383.62V480a32,32,0,0,0,32,32h64a32,32,0,0,0,32-32V352a32,32,0,0,0,32-32V224A64,64,0,0,0,512,160ZM444.4,295.34l-72.12-68.06A12,12,0,0,0,352,236v36H224V236a12,12,0,0,0-20.28-8.73L131.6,295.34a12.4,12.4,0,0,0,0,17.47l72.12,68.07A12,12,0,0,0,224,372.14V336H352v36.14a12,12,0,0,0,20.28,8.74l72.12-68.07A12.4,12.4,0,0,0,444.4,295.34Z\"]\n};\nvar faPeopleCarry = {\n  prefix: 'fas',\n  iconName: 'people-carry',\n  icon: [640, 512, [], \"f4ce\", \"M128 96c26.5 0 48-21.5 48-48S154.5 0 128 0 80 21.5 80 48s21.5 48 48 48zm384 0c26.5 0 48-21.5 48-48S538.5 0 512 0s-48 21.5-48 48 21.5 48 48 48zm125.7 372.1l-44-110-41.1 46.4-2 18.2 27.7 69.2c5 12.5 17 20.1 29.7 20.1 4 0 8-.7 11.9-2.3 16.4-6.6 24.4-25.2 17.8-41.6zm-34.2-209.8L585 178.1c-4.6-20-18.6-36.8-37.5-44.9-18.5-8-39-6.7-56.1 3.3-22.7 13.4-39.7 34.5-48.1 59.4L432 229.8 416 240v-96c0-8.8-7.2-16-16-16H240c-8.8 0-16 7.2-16 16v96l-16.1-10.2-11.3-33.9c-8.3-25-25.4-46-48.1-59.4-17.2-10-37.6-11.3-56.1-3.3-18.9 8.1-32.9 24.9-37.5 44.9l-18.4 80.2c-4.6 20 .7 41.2 14.4 56.7l67.2 75.9 10.1 92.6C130 499.8 143.8 512 160 512c1.2 0 2.3-.1 3.5-.2 17.6-1.9 30.2-17.7 28.3-35.3l-10.1-92.8c-1.5-13-6.9-25.1-15.6-35l-43.3-49 17.6-70.3 6.8 20.4c4.1 12.5 11.9 23.4 24.5 32.6l51.1 32.5c4.6 2.9 12.1 4.6 17.2 5h160c5.1-.4 12.6-2.1 17.2-5l51.1-32.5c12.6-9.2 20.4-20 24.5-32.6l6.8-20.4 17.6 70.3-43.3 49c-8.7 9.9-14.1 22-15.6 35l-10.1 92.8c-1.9 17.6 10.8 33.4 28.3 35.3 1.2.1 2.3.2 3.5.2 16.1 0 30-12.1 31.8-28.5l10.1-92.6 67.2-75.9c13.6-15.5 19-36.7 14.4-56.7zM46.3 358.1l-44 110c-6.6 16.4 1.4 35 17.8 41.6 16.8 6.6 35.1-1.7 41.6-17.8l27.7-69.2-2-18.2-41.1-46.4z\"]\n};\nvar faPepperHot = {\n  prefix: 'fas',\n  iconName: 'pepper-hot',\n  icon: [512, 512, [], \"f816\", \"M330.67 263.12V173.4l-52.75-24.22C219.44 218.76 197.58 400 56 400a56 56 0 0 0 0 112c212.64 0 370.65-122.87 419.18-210.34l-37.05-38.54zm131.09-128.37C493.92 74.91 477.18 26.48 458.62 3a8 8 0 0 0-11.93-.59l-22.9 23a8.06 8.06 0 0 0-.89 10.23c6.86 10.36 17.05 35.1-1.4 72.32A142.85 142.85 0 0 0 364.34 96c-28 0-54 8.54-76.34 22.59l74.67 34.29v78.24h89.09L506.44 288c3.26-12.62 5.56-25.63 5.56-39.31a154 154 0 0 0-50.24-113.94z\"]\n};\nvar faPercent = {\n  prefix: 'fas',\n  iconName: 'percent',\n  icon: [448, 512, [], \"f295\", \"M112 224c61.9 0 112-50.1 112-112S173.9 0 112 0 0 50.1 0 112s50.1 112 112 112zm0-160c26.5 0 48 21.5 48 48s-21.5 48-48 48-48-21.5-48-48 21.5-48 48-48zm224 224c-61.9 0-112 50.1-112 112s50.1 112 112 112 112-50.1 112-112-50.1-112-112-112zm0 160c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zM392.3.2l31.6-.1c19.4-.1 30.9 21.8 19.7 37.8L77.4 501.6a23.95 23.95 0 0 1-19.6 10.2l-33.4.1c-19.5 0-30.9-21.9-19.7-37.8l368-463.7C377.2 4 384.5.2 392.3.2z\"]\n};\nvar faPercentage = {\n  prefix: 'fas',\n  iconName: 'percentage',\n  icon: [384, 512, [], \"f541\", \"M109.25 173.25c24.99-24.99 24.99-65.52 0-90.51-24.99-24.99-65.52-24.99-90.51 0-24.99 24.99-24.99 65.52 0 90.51 25 25 65.52 25 90.51 0zm256 165.49c-24.99-24.99-65.52-24.99-90.51 0-24.99 24.99-24.99 65.52 0 90.51 24.99 24.99 65.52 24.99 90.51 0 25-24.99 25-65.51 0-90.51zm-1.94-231.43l-22.62-22.62c-12.5-12.5-32.76-12.5-45.25 0L20.69 359.44c-12.5 12.5-12.5 32.76 0 45.25l22.62 22.62c12.5 12.5 32.76 12.5 45.25 0l274.75-274.75c12.5-12.49 12.5-32.75 0-45.25z\"]\n};\nvar faPersonBooth = {\n  prefix: 'fas',\n  iconName: 'person-booth',\n  icon: [576, 512, [], \"f756\", \"M192 496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320h-64v176zm32-272h-50.9l-45.2-45.3C115.8 166.6 99.7 160 82.7 160H64c-17.1 0-33.2 6.7-45.3 18.8C6.7 190.9 0 207 0 224.1L.2 320 0 480c0 17.7 14.3 32 31.9 32 17.6 0 32-14.3 32-32l.1-100.7c.9.5 1.6 1.3 2.5 1.7l29.1 43v56c0 17.7 14.3 32 32 32s32-14.3 32-32v-56.5c0-9.9-2.3-19.8-6.7-28.6l-41.2-61.3V253l20.9 20.9c9.1 9.1 21.1 14.1 33.9 14.1H224c17.7 0 32-14.3 32-32s-14.3-32-32-32zM64 128c26.5 0 48-21.5 48-48S90.5 32 64 32 16 53.5 16 80s21.5 48 48 48zm224-96l31.5 223.1-30.9 154.6c-4.3 21.6 13 38.3 31.4 38.3 15.2 0 28-9.1 32.3-30.4.9 16.9 14.6 30.4 31.7 30.4 17.7 0 32-14.3 32-32 0 17.7 14.3 32 32 32s32-14.3 32-32V0H288v32zm-96 0v160h64V0h-32c-17.7 0-32 14.3-32 32zM544 0h-32v496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V32c0-17.7-14.3-32-32-32z\"]\n};\nvar faPhone = {\n  prefix: 'fas',\n  iconName: 'phone',\n  icon: [512, 512, [], \"f095\", \"M493.4 24.6l-104-24c-11.3-2.6-22.9 3.3-27.5 13.9l-48 112c-4.2 9.8-1.4 21.3 6.9 28l60.6 49.6c-36 76.7-98.9 140.5-177.2 177.2l-49.6-60.6c-6.8-8.3-18.2-11.1-28-6.9l-112 48C3.9 366.5-2 378.1.6 389.4l24 104C27.1 504.2 36.7 512 48 512c256.1 0 464-207.5 464-464 0-11.2-7.7-20.9-18.6-23.4z\"]\n};\nvar faPhoneAlt = {\n  prefix: 'fas',\n  iconName: 'phone-alt',\n  icon: [512, 512, [], \"f879\", \"M497.39 361.8l-112-48a24 24 0 0 0-28 6.9l-49.6 60.6A370.66 370.66 0 0 1 130.6 204.11l60.6-49.6a23.94 23.94 0 0 0 6.9-28l-48-112A24.16 24.16 0 0 0 122.6.61l-104 24A24 24 0 0 0 0 48c0 256.5 207.9 464 464 464a24 24 0 0 0 23.4-18.6l24-104a24.29 24.29 0 0 0-14.01-27.6z\"]\n};\nvar faPhoneSlash = {\n  prefix: 'fas',\n  iconName: 'phone-slash',\n  icon: [640, 512, [], \"f3dd\", \"M268.2 381.4l-49.6-60.6c-6.8-8.3-18.2-11.1-28-6.9l-112 48c-10.7 4.6-16.5 16.1-13.9 27.5l24 104c2.5 10.8 12.1 18.6 23.4 18.6 100.7 0 193.7-32.4 269.7-86.9l-80-61.8c-10.9 6.5-22.1 12.7-33.6 18.1zm365.6 76.7L475.1 335.5C537.9 256.4 576 156.9 576 48c0-11.2-7.7-20.9-18.6-23.4l-104-24c-11.3-2.6-22.9 3.3-27.5 13.9l-48 112c-4.2 9.8-1.4 21.3 6.9 28l60.6 49.6c-12.2 26.1-27.9 50.3-46 72.8L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4l588.4 454.7c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.4-6.8 4.1-16.9-2.9-22.3z\"]\n};\nvar faPhoneSquare = {\n  prefix: 'fas',\n  iconName: 'phone-square',\n  icon: [448, 512, [], \"f098\", \"M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM94 416c-7.033 0-13.057-4.873-14.616-11.627l-14.998-65a15 15 0 0 1 8.707-17.16l69.998-29.999a15 15 0 0 1 17.518 4.289l30.997 37.885c48.944-22.963 88.297-62.858 110.781-110.78l-37.886-30.997a15.001 15.001 0 0 1-4.289-17.518l30-69.998a15 15 0 0 1 17.16-8.707l65 14.998A14.997 14.997 0 0 1 384 126c0 160.292-129.945 290-290 290z\"]\n};\nvar faPhoneSquareAlt = {\n  prefix: 'fas',\n  iconName: 'phone-square-alt',\n  icon: [448, 512, [], \"f87b\", \"M400 32H48A48 48 0 0 0 0 80v352a48 48 0 0 0 48 48h352a48 48 0 0 0 48-48V80a48 48 0 0 0-48-48zm-16.39 307.37l-15 65A15 15 0 0 1 354 416C194 416 64 286.29 64 126a15.7 15.7 0 0 1 11.63-14.61l65-15A18.23 18.23 0 0 1 144 96a16.27 16.27 0 0 1 13.79 9.09l30 70A17.9 17.9 0 0 1 189 181a17 17 0 0 1-5.5 11.61l-37.89 31a231.91 231.91 0 0 0 110.78 110.78l31-37.89A17 17 0 0 1 299 291a17.85 17.85 0 0 1 5.91 1.21l70 30A16.25 16.25 0 0 1 384 336a17.41 17.41 0 0 1-.39 3.37z\"]\n};\nvar faPhoneVolume = {\n  prefix: 'fas',\n  iconName: 'phone-volume',\n  icon: [384, 512, [], \"f2a0\", \"M97.333 506.966c-129.874-129.874-129.681-340.252 0-469.933 5.698-5.698 14.527-6.632 21.263-2.422l64.817 40.513a17.187 17.187 0 0 1 6.849 20.958l-32.408 81.021a17.188 17.188 0 0 1-17.669 10.719l-55.81-5.58c-21.051 58.261-20.612 122.471 0 179.515l55.811-5.581a17.188 17.188 0 0 1 17.669 10.719l32.408 81.022a17.188 17.188 0 0 1-6.849 20.958l-64.817 40.513a17.19 17.19 0 0 1-21.264-2.422zM247.126 95.473c11.832 20.047 11.832 45.008 0 65.055-3.95 6.693-13.108 7.959-18.718 2.581l-5.975-5.726c-3.911-3.748-4.793-9.622-2.261-14.41a32.063 32.063 0 0 0 0-29.945c-2.533-4.788-1.65-10.662 2.261-14.41l5.975-5.726c5.61-5.378 14.768-4.112 18.718 2.581zm91.787-91.187c60.14 71.604 60.092 175.882 0 247.428-4.474 5.327-12.53 5.746-17.552.933l-5.798-5.557c-4.56-4.371-4.977-11.529-.93-16.379 49.687-59.538 49.646-145.933 0-205.422-4.047-4.85-3.631-12.008.93-16.379l5.798-5.557c5.022-4.813 13.078-4.394 17.552.933zm-45.972 44.941c36.05 46.322 36.108 111.149 0 157.546-4.39 5.641-12.697 6.251-17.856 1.304l-5.818-5.579c-4.4-4.219-4.998-11.095-1.285-15.931 26.536-34.564 26.534-82.572 0-117.134-3.713-4.836-3.115-11.711 1.285-15.931l5.818-5.579c5.159-4.947 13.466-4.337 17.856 1.304z\"]\n};\nvar faPhotoVideo = {\n  prefix: 'fas',\n  iconName: 'photo-video',\n  icon: [640, 512, [], \"f87c\", \"M608 0H160a32 32 0 0 0-32 32v96h160V64h192v320h128a32 32 0 0 0 32-32V32a32 32 0 0 0-32-32zM232 103a9 9 0 0 1-9 9h-30a9 9 0 0 1-9-9V73a9 9 0 0 1 9-9h30a9 9 0 0 1 9 9zm352 208a9 9 0 0 1-9 9h-30a9 9 0 0 1-9-9v-30a9 9 0 0 1 9-9h30a9 9 0 0 1 9 9zm0-104a9 9 0 0 1-9 9h-30a9 9 0 0 1-9-9v-30a9 9 0 0 1 9-9h30a9 9 0 0 1 9 9zm0-104a9 9 0 0 1-9 9h-30a9 9 0 0 1-9-9V73a9 9 0 0 1 9-9h30a9 9 0 0 1 9 9zm-168 57H32a32 32 0 0 0-32 32v288a32 32 0 0 0 32 32h384a32 32 0 0 0 32-32V192a32 32 0 0 0-32-32zM96 224a32 32 0 1 1-32 32 32 32 0 0 1 32-32zm288 224H64v-32l64-64 32 32 128-128 96 96z\"]\n};\nvar faPiggyBank = {\n  prefix: 'fas',\n  iconName: 'piggy-bank',\n  icon: [576, 512, [], \"f4d3\", \"M560 224h-29.5c-8.8-20-21.6-37.7-37.4-52.5L512 96h-32c-29.4 0-55.4 13.5-73 34.3-7.6-1.1-15.1-2.3-23-2.3H256c-77.4 0-141.9 55-156.8 128H56c-14.8 0-26.5-13.5-23.5-28.8C34.7 215.8 45.4 208 57 208h1c3.3 0 6-2.7 6-6v-20c0-3.3-2.7-6-6-6-28.5 0-53.9 20.4-57.5 48.6C-3.9 258.8 22.7 288 56 288h40c0 52.2 25.4 98.1 64 127.3V496c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-48h128v48c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-80.7c11.8-8.9 22.3-19.4 31.3-31.3H560c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16zm-128 64c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zM256 96h128c5.4 0 10.7.4 15.9.8 0-.3.1-.5.1-.8 0-53-43-96-96-96s-96 43-96 96c0 2.1.5 4.1.6 6.2 15.2-3.9 31-6.2 47.4-6.2z\"]\n};\nvar faPills = {\n  prefix: 'fas',\n  iconName: 'pills',\n  icon: [576, 512, [], \"f484\", \"M112 32C50.1 32 0 82.1 0 144v224c0 61.9 50.1 112 112 112s112-50.1 112-112V144c0-61.9-50.1-112-112-112zm48 224H64V144c0-26.5 21.5-48 48-48s48 21.5 48 48v112zm139.7-29.7c-3.5-3.5-9.4-3.1-12.3.8-45.3 62.5-40.4 150.1 15.9 206.4 56.3 56.3 143.9 61.2 206.4 15.9 4-2.9 4.3-8.8.8-12.3L299.7 226.3zm229.8-19c-56.3-56.3-143.9-61.2-206.4-15.9-4 2.9-4.3 8.8-.8 12.3l210.8 210.8c3.5 3.5 9.4 3.1 12.3-.8 45.3-62.6 40.5-150.1-15.9-206.4z\"]\n};\nvar faPizzaSlice = {\n  prefix: 'fas',\n  iconName: 'pizza-slice',\n  icon: [512, 512, [], \"f818\", \"M158.87.15c-16.16-1.52-31.2 8.42-35.33 24.12l-14.81 56.27c187.62 5.49 314.54 130.61 322.48 317l56.94-15.78c15.72-4.36 25.49-19.68 23.62-35.9C490.89 165.08 340.78 17.32 158.87.15zm-58.47 112L.55 491.64a16.21 16.21 0 0 0 20 19.75l379-105.1c-4.27-174.89-123.08-292.14-299.15-294.1zM128 416a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm48-152a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm104 104a32 32 0 1 1 32-32 32 32 0 0 1-32 32z\"]\n};\nvar faPlaceOfWorship = {\n  prefix: 'fas',\n  iconName: 'place-of-worship',\n  icon: [640, 512, [], \"f67f\", \"M620.61 366.55L512 320v192h112c8.84 0 16-7.16 16-16V395.96a32 32 0 0 0-19.39-29.41zM0 395.96V496c0 8.84 7.16 16 16 16h112V320L19.39 366.55A32 32 0 0 0 0 395.96zm464.46-149.28L416 217.6V102.63c0-8.49-3.37-16.62-9.38-22.63L331.31 4.69c-6.25-6.25-16.38-6.25-22.62 0L233.38 80c-6 6-9.38 14.14-9.38 22.63V217.6l-48.46 29.08A31.997 31.997 0 0 0 160 274.12V512h96v-96c0-35.35 28.66-64 64-64s64 28.65 64 64v96h96V274.12c0-11.24-5.9-21.66-15.54-27.44z\"]\n};\nvar faPlane = {\n  prefix: 'fas',\n  iconName: 'plane',\n  icon: [576, 512, [], \"f072\", \"M480 192H365.71L260.61 8.06A16.014 16.014 0 0 0 246.71 0h-65.5c-10.63 0-18.3 10.17-15.38 20.39L214.86 192H112l-43.2-57.6c-3.02-4.03-7.77-6.4-12.8-6.4H16.01C5.6 128-2.04 137.78.49 147.88L32 256 .49 364.12C-2.04 374.22 5.6 384 16.01 384H56c5.04 0 9.78-2.37 12.8-6.4L112 320h102.86l-49.03 171.6c-2.92 10.22 4.75 20.4 15.38 20.4h65.5c5.74 0 11.04-3.08 13.89-8.06L365.71 320H480c35.35 0 96-28.65 96-64s-60.65-64-96-64z\"]\n};\nvar faPlaneArrival = {\n  prefix: 'fas',\n  iconName: 'plane-arrival',\n  icon: [640, 512, [], \"f5af\", \"M624 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM44.81 205.66l88.74 80a62.607 62.607 0 0 0 25.47 13.93l287.6 78.35c26.48 7.21 54.56 8.72 81 1.36 29.67-8.27 43.44-21.21 47.25-35.71 3.83-14.5-1.73-32.71-23.37-54.96-19.28-19.82-44.35-32.79-70.83-40l-97.51-26.56L282.8 30.22c-1.51-5.81-5.95-10.35-11.66-11.91L206.05.58c-10.56-2.88-20.9 5.32-20.71 16.44l47.92 164.21-102.2-27.84-27.59-67.88c-1.93-4.89-6.01-8.57-11.02-9.93L52.72 64.75c-10.34-2.82-20.53 5-20.72 15.88l.23 101.78c.19 8.91 6.03 17.34 12.58 23.25z\"]\n};\nvar faPlaneDeparture = {\n  prefix: 'fas',\n  iconName: 'plane-departure',\n  icon: [640, 512, [], \"f5b0\", \"M624 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM80.55 341.27c6.28 6.84 15.1 10.72 24.33 10.71l130.54-.18a65.62 65.62 0 0 0 29.64-7.12l290.96-147.65c26.74-13.57 50.71-32.94 67.02-58.31 18.31-28.48 20.3-49.09 13.07-63.65-7.21-14.57-24.74-25.27-58.25-27.45-29.85-1.94-59.54 5.92-86.28 19.48l-98.51 49.99-218.7-82.06a17.799 17.799 0 0 0-18-1.11L90.62 67.29c-10.67 5.41-13.25 19.65-5.17 28.53l156.22 98.1-103.21 52.38-72.35-36.47a17.804 17.804 0 0 0-16.07.02L9.91 230.22c-10.44 5.3-13.19 19.12-5.57 28.08l76.21 82.97z\"]\n};\nvar faPlaneSlash = {\n  prefix: 'fas',\n  iconName: 'plane-slash',\n  icon: [640, 512, [], \"e069\", \"M32.48,147.88,64,256,32.48,364.13A16,16,0,0,0,48,384H88a16,16,0,0,0,12.8-6.41L144,320H246.85l-49,171.59A16,16,0,0,0,213.2,512h65.5a16,16,0,0,0,13.89-8.06l66.6-116.54L34.35,136.34A15.47,15.47,0,0,0,32.48,147.88ZM633.82,458.09,455.14,320H512c35.34,0,96-28.66,96-64s-60.66-64-96-64H397.7L292.61,8.06C290.06,3.61,283.84,0,278.71,0H213.2a16,16,0,0,0-15.38,20.39l36.94,129.29L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.45A16,16,0,0,0,6.18,53.91L594.54,508.63A16,16,0,0,0,617,505.81l19.64-25.26A16,16,0,0,0,633.82,458.09Z\"]\n};\nvar faPlay = {\n  prefix: 'fas',\n  iconName: 'play',\n  icon: [448, 512, [], \"f04b\", \"M424.4 214.7L72.4 6.6C43.8-10.3 0 6.1 0 47.9V464c0 37.5 40.7 60.1 72.4 41.3l352-208c31.4-18.5 31.5-64.1 0-82.6z\"]\n};\nvar faPlayCircle = {\n  prefix: 'fas',\n  iconName: 'play-circle',\n  icon: [512, 512, [], \"f144\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm115.7 272l-176 101c-15.8 8.8-35.7-2.5-35.7-21V152c0-18.4 19.8-29.8 35.7-21l176 107c16.4 9.2 16.4 32.9 0 42z\"]\n};\nvar faPlug = {\n  prefix: 'fas',\n  iconName: 'plug',\n  icon: [384, 512, [], \"f1e6\", \"M320,32a32,32,0,0,0-64,0v96h64Zm48,128H16A16,16,0,0,0,0,176v32a16,16,0,0,0,16,16H32v32A160.07,160.07,0,0,0,160,412.8V512h64V412.8A160.07,160.07,0,0,0,352,256V224h16a16,16,0,0,0,16-16V176A16,16,0,0,0,368,160ZM128,32a32,32,0,0,0-64,0v96h64Z\"]\n};\nvar faPlus = {\n  prefix: 'fas',\n  iconName: 'plus',\n  icon: [448, 512, [], \"f067\", \"M416 208H272V64c0-17.67-14.33-32-32-32h-32c-17.67 0-32 14.33-32 32v144H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h144v144c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V304h144c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z\"]\n};\nvar faPlusCircle = {\n  prefix: 'fas',\n  iconName: 'plus-circle',\n  icon: [512, 512, [], \"f055\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm144 276c0 6.6-5.4 12-12 12h-92v92c0 6.6-5.4 12-12 12h-56c-6.6 0-12-5.4-12-12v-92h-92c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h92v-92c0-6.6 5.4-12 12-12h56c6.6 0 12 5.4 12 12v92h92c6.6 0 12 5.4 12 12v56z\"]\n};\nvar faPlusSquare = {\n  prefix: 'fas',\n  iconName: 'plus-square',\n  icon: [448, 512, [], \"f0fe\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-32 252c0 6.6-5.4 12-12 12h-92v92c0 6.6-5.4 12-12 12h-56c-6.6 0-12-5.4-12-12v-92H92c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h92v-92c0-6.6 5.4-12 12-12h56c6.6 0 12 5.4 12 12v92h92c6.6 0 12 5.4 12 12v56z\"]\n};\nvar faPodcast = {\n  prefix: 'fas',\n  iconName: 'podcast',\n  icon: [448, 512, [], \"f2ce\", \"M267.429 488.563C262.286 507.573 242.858 512 224 512c-18.857 0-38.286-4.427-43.428-23.437C172.927 460.134 160 388.898 160 355.75c0-35.156 31.142-43.75 64-43.75s64 8.594 64 43.75c0 32.949-12.871 104.179-20.571 132.813zM156.867 288.554c-18.693-18.308-29.958-44.173-28.784-72.599 2.054-49.724 42.395-89.956 92.124-91.881C274.862 121.958 320 165.807 320 220c0 26.827-11.064 51.116-28.866 68.552-2.675 2.62-2.401 6.986.628 9.187 9.312 6.765 16.46 15.343 21.234 25.363 1.741 3.654 6.497 4.66 9.449 1.891 28.826-27.043 46.553-65.783 45.511-108.565-1.855-76.206-63.595-138.208-139.793-140.369C146.869 73.753 80 139.215 80 220c0 41.361 17.532 78.7 45.55 104.989 2.953 2.771 7.711 1.77 9.453-1.887 4.774-10.021 11.923-18.598 21.235-25.363 3.029-2.2 3.304-6.566.629-9.185zM224 0C100.204 0 0 100.185 0 224c0 89.992 52.602 165.647 125.739 201.408 4.333 2.118 9.267-1.544 8.535-6.31-2.382-15.512-4.342-30.946-5.406-44.339-.146-1.836-1.149-3.486-2.678-4.512-47.4-31.806-78.564-86.016-78.187-147.347.592-96.237 79.29-174.648 175.529-174.899C320.793 47.747 400 126.797 400 224c0 61.932-32.158 116.49-80.65 147.867-.999 14.037-3.069 30.588-5.624 47.23-.732 4.767 4.203 8.429 8.535 6.31C395.227 389.727 448 314.187 448 224 448 100.205 347.815 0 224 0zm0 160c-35.346 0-64 28.654-64 64s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64z\"]\n};\nvar faPoll = {\n  prefix: 'fas',\n  iconName: 'poll',\n  icon: [448, 512, [], \"f681\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM160 368c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16V240c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v128zm96 0c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16V144c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v224zm96 0c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-64c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v64z\"]\n};\nvar faPollH = {\n  prefix: 'fas',\n  iconName: 'poll-h',\n  icon: [448, 512, [], \"f682\", \"M448 432V80c0-26.5-21.5-48-48-48H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48zM112 192c-8.84 0-16-7.16-16-16v-32c0-8.84 7.16-16 16-16h128c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16H112zm0 96c-8.84 0-16-7.16-16-16v-32c0-8.84 7.16-16 16-16h224c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16H112zm0 96c-8.84 0-16-7.16-16-16v-32c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16h-64z\"]\n};\nvar faPoo = {\n  prefix: 'fas',\n  iconName: 'poo',\n  icon: [512, 512, [], \"f2fe\", \"M451.4 369.1C468.7 356 480 335.4 480 312c0-39.8-32.2-72-72-72h-14.1c13.4-11.7 22.1-28.8 22.1-48 0-35.3-28.7-64-64-64h-5.9c3.6-10.1 5.9-20.7 5.9-32 0-53-43-96-96-96-5.2 0-10.2.7-15.1 1.5C250.3 14.6 256 30.6 256 48c0 44.2-35.8 80-80 80h-16c-35.3 0-64 28.7-64 64 0 19.2 8.7 36.3 22.1 48H104c-39.8 0-72 32.2-72 72 0 23.4 11.3 44 28.6 57.1C26.3 374.6 0 404.1 0 440c0 39.8 32.2 72 72 72h368c39.8 0 72-32.2 72-72 0-35.9-26.3-65.4-60.6-70.9zM192 256c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm159.5 139C341 422.9 293 448 256 448s-85-25.1-95.5-53c-2-5.3 2-11 7.8-11h175.4c5.8 0 9.8 5.7 7.8 11zM320 320c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faPooStorm = {\n  prefix: 'fas',\n  iconName: 'poo-storm',\n  icon: [448, 512, [], \"f75a\", \"M308 336h-57.7l17.3-64.9c2-7.6-3.7-15.1-11.6-15.1h-68c-6 0-11.1 4.5-11.9 10.4l-16 120c-1 7.2 4.6 13.6 11.9 13.6h59.3l-23 97.2c-1.8 7.6 4 14.8 11.7 14.8 4.2 0 8.2-2.2 10.4-6l88-152c4.6-8-1.2-18-10.4-18zm66.4-111.3c5.9-9.6 9.6-20.6 9.6-32.7 0-35.3-28.7-64-64-64h-5.9c3.6-10.1 5.9-20.7 5.9-32 0-53-43-96-96-96-5.2 0-10.2.7-15.1 1.5C218.3 14.6 224 30.6 224 48c0 44.2-35.8 80-80 80h-16c-35.3 0-64 28.7-64 64 0 12.1 3.7 23.1 9.6 32.7C32.6 228 0 262.2 0 304c0 44 36 80 80 80h48.3c.1-.6 0-1.2 0-1.8l16-120c3-21.8 21.7-38.2 43.7-38.2h68c13.8 0 26.5 6.3 34.9 17.2s11.2 24.8 7.6 38.1l-6.6 24.7h16c15.7 0 30.3 8.4 38.1 22 7.8 13.6 7.8 30.5 0 44l-8.1 14h30c44 0 80-36 80-80 .1-41.8-32.5-76-73.5-79.3z\"]\n};\nvar faPoop = {\n  prefix: 'fas',\n  iconName: 'poop',\n  icon: [512, 512, [], \"f619\", \"M451.36 369.14C468.66 355.99 480 335.41 480 312c0-39.77-32.24-72-72-72h-14.07c13.42-11.73 22.07-28.78 22.07-48 0-35.35-28.65-64-64-64h-5.88c3.57-10.05 5.88-20.72 5.88-32 0-53.02-42.98-96-96-96-5.17 0-10.15.74-15.11 1.52C250.31 14.64 256 30.62 256 48c0 44.18-35.82 80-80 80h-16c-35.35 0-64 28.65-64 64 0 19.22 8.65 36.27 22.07 48H104c-39.76 0-72 32.23-72 72 0 23.41 11.34 43.99 28.64 57.14C26.31 374.62 0 404.12 0 440c0 39.76 32.24 72 72 72h368c39.76 0 72-32.24 72-72 0-35.88-26.31-65.38-60.64-70.86z\"]\n};\nvar faPortrait = {\n  prefix: 'fas',\n  iconName: 'portrait',\n  icon: [384, 512, [], \"f3e0\", \"M336 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM192 128c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H102.4C90 384 80 375.4 80 364.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2z\"]\n};\nvar faPoundSign = {\n  prefix: 'fas',\n  iconName: 'pound-sign',\n  icon: [320, 512, [], \"f154\", \"M308 352h-45.495c-6.627 0-12 5.373-12 12v50.848H128V288h84c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-84v-63.556c0-32.266 24.562-57.086 61.792-57.086 23.658 0 45.878 11.505 57.652 18.849 5.151 3.213 11.888 2.051 15.688-2.685l28.493-35.513c4.233-5.276 3.279-13.005-2.119-17.081C273.124 54.56 236.576 32 187.931 32 106.026 32 48 84.742 48 157.961V224H20c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h28v128H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h296c6.627 0 12-5.373 12-12V364c0-6.627-5.373-12-12-12z\"]\n};\nvar faPowerOff = {\n  prefix: 'fas',\n  iconName: 'power-off',\n  icon: [512, 512, [], \"f011\", \"M400 54.1c63 45 104 118.6 104 201.9 0 136.8-110.8 247.7-247.5 248C120 504.3 8.2 393 8 256.4 7.9 173.1 48.9 99.3 111.8 54.2c11.7-8.3 28-4.8 35 7.7L162.6 90c5.9 10.5 3.1 23.8-6.6 31-41.5 30.8-68 79.6-68 134.9-.1 92.3 74.5 168.1 168 168.1 91.6 0 168.6-74.2 168-169.1-.3-51.8-24.7-101.8-68.1-134-9.7-7.2-12.4-20.5-6.5-30.9l15.8-28.1c7-12.4 23.2-16.1 34.8-7.8zM296 264V24c0-13.3-10.7-24-24-24h-32c-13.3 0-24 10.7-24 24v240c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24z\"]\n};\nvar faPray = {\n  prefix: 'fas',\n  iconName: 'pray',\n  icon: [384, 512, [], \"f683\", \"M256 128c35.35 0 64-28.65 64-64S291.35 0 256 0s-64 28.65-64 64 28.65 64 64 64zm-30.63 169.75c14.06 16.72 39 19.09 55.97 5.22l88-72.02c17.09-13.98 19.59-39.19 5.62-56.28-13.97-17.11-39.19-19.59-56.31-5.62l-57.44 47-38.91-46.31c-15.44-18.39-39.22-27.92-64-25.33-24.19 2.48-45.25 16.27-56.37 36.92l-49.37 92.03c-23.4 43.64-8.69 96.37 34.19 123.75L131.56 432H40c-22.09 0-40 17.91-40 40s17.91 40 40 40h208c34.08 0 53.77-42.79 28.28-68.28L166.42 333.86l34.8-64.87 24.15 28.76z\"]\n};\nvar faPrayingHands = {\n  prefix: 'fas',\n  iconName: 'praying-hands',\n  icon: [640, 512, [], \"f684\", \"M272 191.91c-17.6 0-32 14.4-32 32v80c0 8.84-7.16 16-16 16s-16-7.16-16-16v-76.55c0-17.39 4.72-34.47 13.69-49.39l77.75-129.59c9.09-15.16 4.19-34.81-10.97-43.91-14.45-8.67-32.72-4.3-42.3 9.21-.2.23-.62.21-.79.48l-117.26 175.9C117.56 205.9 112 224.31 112 243.29v80.23l-90.12 30.04A31.974 31.974 0 0 0 0 383.91v96c0 10.82 8.52 32 32 32 2.69 0 5.41-.34 8.06-1.03l179.19-46.62C269.16 449.99 304 403.8 304 351.91v-128c0-17.6-14.4-32-32-32zm346.12 161.73L528 323.6v-80.23c0-18.98-5.56-37.39-16.12-53.23L394.62 14.25c-.18-.27-.59-.24-.79-.48-9.58-13.51-27.85-17.88-42.3-9.21-15.16 9.09-20.06 28.75-10.97 43.91l77.75 129.59c8.97 14.92 13.69 32 13.69 49.39V304c0 8.84-7.16 16-16 16s-16-7.16-16-16v-80c0-17.6-14.4-32-32-32s-32 14.4-32 32v128c0 51.89 34.84 98.08 84.75 112.34l179.19 46.62c2.66.69 5.38 1.03 8.06 1.03 23.48 0 32-21.18 32-32v-96c0-13.77-8.81-25.99-21.88-30.35z\"]\n};\nvar faPrescription = {\n  prefix: 'fas',\n  iconName: 'prescription',\n  icon: [384, 512, [], \"f5b1\", \"M301.26 352l78.06-78.06c6.25-6.25 6.25-16.38 0-22.63l-22.63-22.63c-6.25-6.25-16.38-6.25-22.63 0L256 306.74l-83.96-83.96C219.31 216.8 256 176.89 256 128c0-53.02-42.98-96-96-96H16C7.16 32 0 39.16 0 48v256c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-80h18.75l128 128-78.06 78.06c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0L256 397.25l78.06 78.06c6.25 6.25 16.38 6.25 22.63 0l22.63-22.63c6.25-6.25 6.25-16.38 0-22.63L301.26 352zM64 96h96c17.64 0 32 14.36 32 32s-14.36 32-32 32H64V96z\"]\n};\nvar faPrescriptionBottle = {\n  prefix: 'fas',\n  iconName: 'prescription-bottle',\n  icon: [384, 512, [], \"f485\", \"M32 192h120c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H32v64h120c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H32v64h120c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H32v64c0 17.6 14.4 32 32 32h256c17.6 0 32-14.4 32-32V128H32v64zM360 0H24C10.8 0 0 10.8 0 24v48c0 13.2 10.8 24 24 24h336c13.2 0 24-10.8 24-24V24c0-13.2-10.8-24-24-24z\"]\n};\nvar faPrescriptionBottleAlt = {\n  prefix: 'fas',\n  iconName: 'prescription-bottle-alt',\n  icon: [384, 512, [], \"f486\", \"M360 0H24C10.8 0 0 10.8 0 24v48c0 13.2 10.8 24 24 24h336c13.2 0 24-10.8 24-24V24c0-13.2-10.8-24-24-24zM32 480c0 17.6 14.4 32 32 32h256c17.6 0 32-14.4 32-32V128H32v352zm64-184c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48z\"]\n};\nvar faPrint = {\n  prefix: 'fas',\n  iconName: 'print',\n  icon: [512, 512, [], \"f02f\", \"M448 192V77.25c0-8.49-3.37-16.62-9.37-22.63L393.37 9.37c-6-6-14.14-9.37-22.63-9.37H96C78.33 0 64 14.33 64 32v160c-35.35 0-64 28.65-64 64v112c0 8.84 7.16 16 16 16h48v96c0 17.67 14.33 32 32 32h320c17.67 0 32-14.33 32-32v-96h48c8.84 0 16-7.16 16-16V256c0-35.35-28.65-64-64-64zm-64 256H128v-96h256v96zm0-224H128V64h192v48c0 8.84 7.16 16 16 16h48v96zm48 72c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z\"]\n};\nvar faProcedures = {\n  prefix: 'fas',\n  iconName: 'procedures',\n  icon: [640, 512, [], \"f487\", \"M528 224H272c-8.8 0-16 7.2-16 16v144H64V144c0-8.8-7.2-16-16-16H16c-8.8 0-16 7.2-16 16v352c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-48h512v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V336c0-61.9-50.1-112-112-112zM136 96h126.1l27.6 55.2c5.9 11.8 22.7 11.8 28.6 0L368 51.8 390.1 96H512c8.8 0 16-7.2 16-16s-7.2-16-16-16H409.9L382.3 8.8C376.4-3 359.6-3 353.7 8.8L304 108.2l-19.9-39.8c-1.4-2.7-4.1-4.4-7.2-4.4H136c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8zm24 256c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64z\"]\n};\nvar faProjectDiagram = {\n  prefix: 'fas',\n  iconName: 'project-diagram',\n  icon: [640, 512, [], \"f542\", \"M384 320H256c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h128c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32zM192 32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v128c0 17.67 14.33 32 32 32h95.72l73.16 128.04C211.98 300.98 232.4 288 256 288h.28L192 175.51V128h224V64H192V32zM608 0H480c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h128c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32z\"]\n};\nvar faPumpMedical = {\n  prefix: 'fas',\n  iconName: 'pump-medical',\n  icon: [384, 512, [], \"e06a\", \"M235.51,159.82H84.24A64,64,0,0,0,20.51,218L.14,442a64,64,0,0,0,63.74,69.8h192A64,64,0,0,0,319.61,442L299.24,218A64,64,0,0,0,235.51,159.82Zm4.37,173.33a13.35,13.35,0,0,1-13.34,13.34h-40v40a13.33,13.33,0,0,1-13.33,13.33H146.54a13.33,13.33,0,0,1-13.33-13.33v-40h-40a13.34,13.34,0,0,1-13.33-13.34V306.49a13.33,13.33,0,0,1,13.33-13.34h40v-40a13.33,13.33,0,0,1,13.33-13.33h26.67a13.33,13.33,0,0,1,13.33,13.33v40h40a13.34,13.34,0,0,1,13.34,13.34ZM379.19,93.88,335.87,50.56a64,64,0,0,0-45.24-18.74H223.88a32,32,0,0,0-32-32h-64a32,32,0,0,0-32,32v96h128v-32h66.75l43.31,43.31a16,16,0,0,0,22.63,0l22.62-22.62A16,16,0,0,0,379.19,93.88Z\"]\n};\nvar faPumpSoap = {\n  prefix: 'fas',\n  iconName: 'pump-soap',\n  icon: [384, 512, [], \"e06b\", \"M235.63,160H84.37a64,64,0,0,0-63.74,58.21L.27,442.21A64,64,0,0,0,64,512H256a64,64,0,0,0,63.74-69.79l-20.36-224A64,64,0,0,0,235.63,160ZM160,416c-33.12,0-60-26.33-60-58.75,0-25,35.7-75.47,52-97.27A10,10,0,0,1,168,260c16.33,21.8,52,72.27,52,97.27C220,389.67,193.12,416,160,416ZM379.31,94.06,336,50.74A64,64,0,0,0,290.75,32H224A32,32,0,0,0,192,0H128A32,32,0,0,0,96,32v96H224V96h66.75l43.31,43.31a16,16,0,0,0,22.63,0l22.62-22.62A16,16,0,0,0,379.31,94.06Z\"]\n};\nvar faPuzzlePiece = {\n  prefix: 'fas',\n  iconName: 'puzzle-piece',\n  icon: [576, 512, [], \"f12e\", \"M519.442 288.651c-41.519 0-59.5 31.593-82.058 31.593C377.409 320.244 432 144 432 144s-196.288 80-196.288-3.297c0-35.827 36.288-46.25 36.288-85.985C272 19.216 243.885 0 210.539 0c-34.654 0-66.366 18.891-66.366 56.346 0 41.364 31.711 59.277 31.711 81.75C175.885 207.719 0 166.758 0 166.758v333.237s178.635 41.047 178.635-28.662c0-22.473-40-40.107-40-81.471 0-37.456 29.25-56.346 63.577-56.346 33.673 0 61.788 19.216 61.788 54.717 0 39.735-36.288 50.158-36.288 85.985 0 60.803 129.675 25.73 181.23 25.73 0 0-34.725-120.101 25.827-120.101 35.962 0 46.423 36.152 86.308 36.152C556.712 416 576 387.99 576 354.443c0-34.199-18.962-65.792-56.558-65.792z\"]\n};\nvar faQrcode = {\n  prefix: 'fas',\n  iconName: 'qrcode',\n  icon: [448, 512, [], \"f029\", \"M0 224h192V32H0v192zM64 96h64v64H64V96zm192-64v192h192V32H256zm128 128h-64V96h64v64zM0 480h192V288H0v192zm64-128h64v64H64v-64zm352-64h32v128h-96v-32h-32v96h-64V288h96v32h64v-32zm0 160h32v32h-32v-32zm-64 0h32v32h-32v-32z\"]\n};\nvar faQuestion = {\n  prefix: 'fas',\n  iconName: 'question',\n  icon: [384, 512, [], \"f128\", \"M202.021 0C122.202 0 70.503 32.703 29.914 91.026c-7.363 10.58-5.093 25.086 5.178 32.874l43.138 32.709c10.373 7.865 25.132 6.026 33.253-4.148 25.049-31.381 43.63-49.449 82.757-49.449 30.764 0 68.816 19.799 68.816 49.631 0 22.552-18.617 34.134-48.993 51.164-35.423 19.86-82.299 44.576-82.299 106.405V320c0 13.255 10.745 24 24 24h72.471c13.255 0 24-10.745 24-24v-5.773c0-42.86 125.268-44.645 125.268-160.627C377.504 66.256 286.902 0 202.021 0zM192 373.459c-38.196 0-69.271 31.075-69.271 69.271 0 38.195 31.075 69.27 69.271 69.27s69.271-31.075 69.271-69.271-31.075-69.27-69.271-69.27z\"]\n};\nvar faQuestionCircle = {\n  prefix: 'fas',\n  iconName: 'question-circle',\n  icon: [512, 512, [], \"f059\", \"M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248zM262.655 90c-54.497 0-89.255 22.957-116.549 63.758-3.536 5.286-2.353 12.415 2.715 16.258l34.699 26.31c5.205 3.947 12.621 3.008 16.665-2.122 17.864-22.658 30.113-35.797 57.303-35.797 20.429 0 45.698 13.148 45.698 32.958 0 14.976-12.363 22.667-32.534 33.976C247.128 238.528 216 254.941 216 296v4c0 6.627 5.373 12 12 12h56c6.627 0 12-5.373 12-12v-1.333c0-28.462 83.186-29.647 83.186-106.667 0-58.002-60.165-102-116.531-102zM256 338c-25.365 0-46 20.635-46 46 0 25.364 20.635 46 46 46s46-20.636 46-46c0-25.365-20.635-46-46-46z\"]\n};\nvar faQuidditch = {\n  prefix: 'fas',\n  iconName: 'quidditch',\n  icon: [640, 512, [], \"f458\", \"M256.5 216.8L343.2 326s-16.6 102.4-76.6 150.1C206.7 523.8 0 510.2 0 510.2s3.8-23.1 11-55.4l94.6-112.2c4-4.7-.9-11.6-6.6-9.5l-60.4 22.1c14.4-41.7 32.7-80 54.6-97.5 59.9-47.8 163.3-40.9 163.3-40.9zm238 135c-44 0-79.8 35.8-79.8 79.9 0 44.1 35.7 79.9 79.8 79.9 44.1 0 79.8-35.8 79.8-79.9 0-44.2-35.8-79.9-79.8-79.9zM636.5 31L616.7 6c-5.5-6.9-15.5-8-22.4-2.6L361.8 181.3l-34.1-43c-5.1-6.4-15.1-5.2-18.6 2.2l-25.3 54.6 86.7 109.2 58.8-12.4c8-1.7 11.4-11.2 6.3-17.6l-34.1-42.9L634 53.5c6.9-5.5 8-15.6 2.5-22.5z\"]\n};\nvar faQuoteLeft = {\n  prefix: 'fas',\n  iconName: 'quote-left',\n  icon: [512, 512, [], \"f10d\", \"M464 256h-80v-64c0-35.3 28.7-64 64-64h8c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24h-8c-88.4 0-160 71.6-160 160v240c0 26.5 21.5 48 48 48h128c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48zm-288 0H96v-64c0-35.3 28.7-64 64-64h8c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24h-8C71.6 32 0 103.6 0 192v240c0 26.5 21.5 48 48 48h128c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48z\"]\n};\nvar faQuoteRight = {\n  prefix: 'fas',\n  iconName: 'quote-right',\n  icon: [512, 512, [], \"f10e\", \"M464 32H336c-26.5 0-48 21.5-48 48v128c0 26.5 21.5 48 48 48h80v64c0 35.3-28.7 64-64 64h-8c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h8c88.4 0 160-71.6 160-160V80c0-26.5-21.5-48-48-48zm-288 0H48C21.5 32 0 53.5 0 80v128c0 26.5 21.5 48 48 48h80v64c0 35.3-28.7 64-64 64h-8c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h8c88.4 0 160-71.6 160-160V80c0-26.5-21.5-48-48-48z\"]\n};\nvar faQuran = {\n  prefix: 'fas',\n  iconName: 'quran',\n  icon: [448, 512, [], \"f687\", \"M448 358.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM301.08 145.82c.6-1.21 1.76-1.82 2.92-1.82s2.32.61 2.92 1.82l11.18 22.65 25 3.63c2.67.39 3.74 3.67 1.81 5.56l-18.09 17.63 4.27 24.89c.36 2.11-1.31 3.82-3.21 3.82-.5 0-1.02-.12-1.52-.38L304 211.87l-22.36 11.75c-.5.26-1.02.38-1.52.38-1.9 0-3.57-1.71-3.21-3.82l4.27-24.89-18.09-17.63c-1.94-1.89-.87-5.17 1.81-5.56l24.99-3.63 11.19-22.65zm-57.89-69.01c13.67 0 27.26 2.49 40.38 7.41a6.775 6.775 0 1 1-2.38 13.12c-.67 0-3.09-.21-4.13-.21-52.31 0-94.86 42.55-94.86 94.86 0 52.3 42.55 94.86 94.86 94.86 1.03 0 3.48-.21 4.13-.21 3.93 0 6.8 3.14 6.8 6.78 0 2.98-1.94 5.51-4.62 6.42-13.07 4.87-26.59 7.34-40.19 7.34C179.67 307.19 128 255.51 128 192c0-63.52 51.67-115.19 115.19-115.19zM380.8 448H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8v64z\"]\n};\nvar faRadiation = {\n  prefix: 'fas',\n  iconName: 'radiation',\n  icon: [496, 512, [], \"f7b9\", \"M328.2 255.8h151.6c9.1 0 16.8-7.7 16.2-16.8-5.1-75.8-44.4-142.2-102.5-184.2-7.4-5.3-17.9-2.9-22.7 4.8L290.4 188c22.6 14.3 37.8 39.2 37.8 67.8zm-37.8 67.7c-12.3 7.7-26.8 12.4-42.4 12.4-15.6 0-30-4.7-42.4-12.4L125.2 452c-4.8 7.7-2.4 18.1 5.6 22.4C165.7 493.2 205.6 504 248 504s82.3-10.8 117.2-29.6c8-4.3 10.4-14.8 5.6-22.4l-80.4-128.5zM248 303.8c26.5 0 48-21.5 48-48s-21.5-48-48-48-48 21.5-48 48 21.5 48 48 48zm-231.8-48h151.6c0-28.6 15.2-53.5 37.8-67.7L125.2 59.7c-4.8-7.7-15.3-10.2-22.7-4.8C44.4 96.9 5.1 163.3 0 239.1c-.6 9 7.1 16.7 16.2 16.7z\"]\n};\nvar faRadiationAlt = {\n  prefix: 'fas',\n  iconName: 'radiation-alt',\n  icon: [496, 512, [], \"f7ba\", \"M312 256h79.1c9.2 0 16.9-7.7 16-16.8-4.6-43.6-27-81.8-59.5-107.8-7.6-6.1-18.8-4.5-24 3.8L281.9 202c18 11.2 30.1 31.2 30.1 54zm-97.8 54.1L172.4 377c-4.9 7.8-2.4 18.4 5.8 22.5 21.1 10.4 44.7 16.5 69.8 16.5s48.7-6.1 69.9-16.5c8.2-4.1 10.6-14.7 5.8-22.5l-41.8-66.9c-9.8 6.2-21.4 9.9-33.8 9.9s-24.1-3.7-33.9-9.9zM104.9 256H184c0-22.8 12.1-42.8 30.2-54.1l-41.7-66.8c-5.2-8.3-16.4-9.9-24-3.8-32.6 26-54.9 64.2-59.5 107.8-1.1 9.2 6.7 16.9 15.9 16.9zM248 504c137 0 248-111 248-248S385 8 248 8 0 119 0 256s111 248 248 248zm0-432c101.5 0 184 82.5 184 184s-82.5 184-184 184S64 357.5 64 256 146.5 72 248 72zm0 216c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32z\"]\n};\nvar faRainbow = {\n  prefix: 'fas',\n  iconName: 'rainbow',\n  icon: [576, 512, [], \"f75b\", \"M268.3 32.7C115.4 42.9 0 176.9 0 330.2V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320C64 186.8 180.9 80.3 317.5 97.9 430.4 112.4 512 214 512 327.8V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-165.3-140-298.6-307.7-287.3zm-5.6 96.9C166 142 96 229.1 96 326.7V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-74.8 64.5-134.8 140.8-127.4 66.5 6.5 115.2 66.2 115.2 133.1V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-114.2-100.2-205.4-217.3-190.4zm6.2 96.3c-45.6 8.9-76.9 51.5-76.9 97.9V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-17.6 14.3-32 32-32s32 14.4 32 32v144c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-59.2-53.8-106-115.1-94.1z\"]\n};\nvar faRandom = {\n  prefix: 'fas',\n  iconName: 'random',\n  icon: [512, 512, [], \"f074\", \"M504.971 359.029c9.373 9.373 9.373 24.569 0 33.941l-80 79.984c-15.01 15.01-40.971 4.49-40.971-16.971V416h-58.785a12.004 12.004 0 0 1-8.773-3.812l-70.556-75.596 53.333-57.143L352 336h32v-39.981c0-21.438 25.943-31.998 40.971-16.971l80 79.981zM12 176h84l52.781 56.551 53.333-57.143-70.556-75.596A11.999 11.999 0 0 0 122.785 96H12c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12zm372 0v39.984c0 21.46 25.961 31.98 40.971 16.971l80-79.984c9.373-9.373 9.373-24.569 0-33.941l-80-79.981C409.943 24.021 384 34.582 384 56.019V96h-58.785a12.004 12.004 0 0 0-8.773 3.812L96 336H12c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12h110.785c3.326 0 6.503-1.381 8.773-3.812L352 176h32z\"]\n};\nvar faReceipt = {\n  prefix: 'fas',\n  iconName: 'receipt',\n  icon: [384, 512, [], \"f543\", \"M358.4 3.2L320 48 265.6 3.2a15.9 15.9 0 0 0-19.2 0L192 48 137.6 3.2a15.9 15.9 0 0 0-19.2 0L64 48 25.6 3.2C15-4.7 0 2.8 0 16v480c0 13.2 15 20.7 25.6 12.8L64 464l54.4 44.8a15.9 15.9 0 0 0 19.2 0L192 464l54.4 44.8a15.9 15.9 0 0 0 19.2 0L320 464l38.4 44.8c10.5 7.9 25.6.4 25.6-12.8V16c0-13.2-15-20.7-25.6-12.8zM320 360c0 4.4-3.6 8-8 8H72c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h240c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H72c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h240c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H72c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h240c4.4 0 8 3.6 8 8v16z\"]\n};\nvar faRecordVinyl = {\n  prefix: 'fas',\n  iconName: 'record-vinyl',\n  icon: [512, 512, [], \"f8d9\", \"M256 152a104 104 0 1 0 104 104 104 104 0 0 0-104-104zm0 128a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm0-272C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 376a128 128 0 1 1 128-128 128 128 0 0 1-128 128z\"]\n};\nvar faRecycle = {\n  prefix: 'fas',\n  iconName: 'recycle',\n  icon: [512, 512, [], \"f1b8\", \"M184.561 261.903c3.232 13.997-12.123 24.635-24.068 17.168l-40.736-25.455-50.867 81.402C55.606 356.273 70.96 384 96.012 384H148c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12H96.115c-75.334 0-121.302-83.048-81.408-146.88l50.822-81.388-40.725-25.448c-12.081-7.547-8.966-25.961 4.879-29.158l110.237-25.45c8.611-1.988 17.201 3.381 19.189 11.99l25.452 110.237zm98.561-182.915l41.289 66.076-40.74 25.457c-12.051 7.528-9 25.953 4.879 29.158l110.237 25.45c8.672 1.999 17.215-3.438 19.189-11.99l25.45-110.237c3.197-13.844-11.99-24.719-24.068-17.168l-40.687 25.424-41.263-66.082c-37.521-60.033-125.209-60.171-162.816 0l-17.963 28.766c-3.51 5.62-1.8 13.021 3.82 16.533l33.919 21.195c5.62 3.512 13.024 1.803 16.536-3.817l17.961-28.743c12.712-20.341 41.973-19.676 54.257-.022zM497.288 301.12l-27.515-44.065c-3.511-5.623-10.916-7.334-16.538-3.821l-33.861 21.159c-5.62 3.512-7.33 10.915-3.818 16.536l27.564 44.112c13.257 21.211-2.057 48.96-27.136 48.96H320V336.02c0-14.213-17.242-21.383-27.313-11.313l-80 79.981c-6.249 6.248-6.249 16.379 0 22.627l80 79.989C302.689 517.308 320 510.3 320 495.989V448h95.88c75.274 0 121.335-82.997 81.408-146.88z\"]\n};\nvar faRedo = {\n  prefix: 'fas',\n  iconName: 'redo',\n  icon: [512, 512, [], \"f01e\", \"M500.33 0h-47.41a12 12 0 0 0-12 12.57l4 82.76A247.42 247.42 0 0 0 256 8C119.34 8 7.9 119.53 8 256.19 8.1 393.07 119.1 504 256 504a247.1 247.1 0 0 0 166.18-63.91 12 12 0 0 0 .48-17.43l-34-34a12 12 0 0 0-16.38-.55A176 176 0 1 1 402.1 157.8l-101.53-4.87a12 12 0 0 0-12.57 12v47.41a12 12 0 0 0 12 12h200.33a12 12 0 0 0 12-12V12a12 12 0 0 0-12-12z\"]\n};\nvar faRedoAlt = {\n  prefix: 'fas',\n  iconName: 'redo-alt',\n  icon: [512, 512, [], \"f2f9\", \"M256.455 8c66.269.119 126.437 26.233 170.859 68.685l35.715-35.715C478.149 25.851 504 36.559 504 57.941V192c0 13.255-10.745 24-24 24H345.941c-21.382 0-32.09-25.851-16.971-40.971l41.75-41.75c-30.864-28.899-70.801-44.907-113.23-45.273-92.398-.798-170.283 73.977-169.484 169.442C88.764 348.009 162.184 424 256 424c41.127 0 79.997-14.678 110.629-41.556 4.743-4.161 11.906-3.908 16.368.553l39.662 39.662c4.872 4.872 4.631 12.815-.482 17.433C378.202 479.813 319.926 504 256 504 119.034 504 8.001 392.967 8 256.002 7.999 119.193 119.646 7.755 256.455 8z\"]\n};\nvar faRegistered = {\n  prefix: 'fas',\n  iconName: 'registered',\n  icon: [512, 512, [], \"f25d\", \"M285.363 207.475c0 18.6-9.831 28.431-28.431 28.431h-29.876v-56.14h23.378c28.668 0 34.929 8.773 34.929 27.709zM504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zM363.411 360.414c-46.729-84.825-43.299-78.636-44.702-80.98 23.432-15.172 37.945-42.979 37.945-74.486 0-54.244-31.5-89.252-105.498-89.252h-70.667c-13.255 0-24 10.745-24 24V372c0 13.255 10.745 24 24 24h22.567c13.255 0 24-10.745 24-24v-71.663h25.556l44.129 82.937a24.001 24.001 0 0 0 21.188 12.727h24.464c18.261-.001 29.829-19.591 21.018-35.587z\"]\n};\nvar faRemoveFormat = {\n  prefix: 'fas',\n  iconName: 'remove-format',\n  icon: [640, 512, [], \"f87d\", \"M336 416h-11.17l9.26-27.77L267 336.4 240.49 416H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm297.82 42.1L377 259.59 426.17 112H544v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16H176a16 16 0 0 0-16 16v43.9L45.46 3.38A16 16 0 0 0 23 6.19L3.37 31.46a16 16 0 0 0 2.81 22.45l588.36 454.72a16 16 0 0 0 22.46-2.81l19.64-25.27a16 16 0 0 0-2.82-22.45zM309.91 207.76L224 141.36V112h117.83z\"]\n};\nvar faReply = {\n  prefix: 'fas',\n  iconName: 'reply',\n  icon: [512, 512, [], \"f3e5\", \"M8.309 189.836L184.313 37.851C199.719 24.546 224 35.347 224 56.015v80.053c160.629 1.839 288 34.032 288 186.258 0 61.441-39.581 122.309-83.333 154.132-13.653 9.931-33.111-2.533-28.077-18.631 45.344-145.012-21.507-183.51-176.59-185.742V360c0 20.7-24.3 31.453-39.687 18.164l-176.004-152c-11.071-9.562-11.086-26.753 0-36.328z\"]\n};\nvar faReplyAll = {\n  prefix: 'fas',\n  iconName: 'reply-all',\n  icon: [576, 512, [], \"f122\", \"M136.309 189.836L312.313 37.851C327.72 24.546 352 35.348 352 56.015v82.763c129.182 10.231 224 52.212 224 183.548 0 61.441-39.582 122.309-83.333 154.132-13.653 9.931-33.111-2.533-28.077-18.631 38.512-123.162-3.922-169.482-112.59-182.015v84.175c0 20.701-24.3 31.453-39.687 18.164L136.309 226.164c-11.071-9.561-11.086-26.753 0-36.328zm-128 36.328L184.313 378.15C199.7 391.439 224 380.687 224 359.986v-15.818l-108.606-93.785A55.96 55.96 0 0 1 96 207.998a55.953 55.953 0 0 1 19.393-42.38L224 71.832V56.015c0-20.667-24.28-31.469-39.687-18.164L8.309 189.836c-11.086 9.575-11.071 26.767 0 36.328z\"]\n};\nvar faRepublican = {\n  prefix: 'fas',\n  iconName: 'republican',\n  icon: [640, 512, [], \"f75e\", \"M544 192c0-88.4-71.6-160-160-160H160C71.6 32 0 103.6 0 192v64h544v-64zm-367.7-21.6l-19.8 19.3 4.7 27.3c.8 4.9-4.3 8.6-8.7 6.3L128 210.4l-24.5 12.9c-4.3 2.3-9.5-1.4-8.7-6.3l4.7-27.3-19.8-19.3c-3.6-3.5-1.6-9.5 3.3-10.2l27.4-4 12.2-24.8c2.2-4.5 8.6-4.4 10.7 0l12.2 24.8 27.4 4c5 .7 6.9 6.7 3.4 10.2zm144 0l-19.8 19.3 4.7 27.3c.8 4.9-4.3 8.6-8.7 6.3L272 210.4l-24.5 12.9c-4.3 2.3-9.5-1.4-8.7-6.3l4.7-27.3-19.8-19.3c-3.6-3.5-1.6-9.5 3.3-10.2l27.4-4 12.2-24.8c2.2-4.5 8.6-4.4 10.7 0l12.2 24.8 27.4 4c5 .7 6.9 6.7 3.4 10.2zm144 0l-19.8 19.3 4.7 27.3c.8 4.9-4.3 8.6-8.7 6.3L416 210.4l-24.5 12.9c-4.3 2.3-9.5-1.4-8.7-6.3l4.7-27.3-19.8-19.3c-3.6-3.5-1.6-9.5 3.3-10.2l27.4-4 12.2-24.8c2.2-4.5 8.6-4.4 10.7 0l12.2 24.8 27.4 4c5 .7 6.9 6.7 3.4 10.2zM624 320h-32c-8.8 0-16 7.2-16 16v64c0 8.8-7.2 16-16 16s-16-7.2-16-16V288H0v176c0 8.8 7.2 16 16 16h96c8.8 0 16-7.2 16-16v-80h192v80c0 8.8 7.2 16 16 16h96c8.8 0 16-7.2 16-16V352h32v43.3c0 41.8 30 80.1 71.6 84.3 47.8 4.9 88.4-32.7 88.4-79.6v-64c0-8.8-7.2-16-16-16z\"]\n};\nvar faRestroom = {\n  prefix: 'fas',\n  iconName: 'restroom',\n  icon: [640, 512, [], \"f7bd\", \"M128 128c35.3 0 64-28.7 64-64S163.3 0 128 0 64 28.7 64 64s28.7 64 64 64zm384 0c35.3 0 64-28.7 64-64S547.3 0 512 0s-64 28.7-64 64 28.7 64 64 64zm127.3 226.5l-45.6-185.8c-3.3-13.5-15.5-23-29.8-24.2-15 9.7-32.8 15.5-52 15.5-19.2 0-37-5.8-52-15.5-14.3 1.2-26.5 10.7-29.8 24.2l-45.6 185.8C381 369.6 393 384 409.2 384H464v104c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V384h54.8c16.2 0 28.2-14.4 24.5-29.5zM336 0h-32c-8.8 0-16 7.2-16 16v480c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16zM180.1 144.4c-15 9.8-32.9 15.6-52.1 15.6-19.2 0-37.1-5.8-52.1-15.6C51.3 146.5 32 166.9 32 192v136c0 13.3 10.7 24 24 24h8v136c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24V352h8c13.3 0 24-10.7 24-24V192c0-25.1-19.3-45.5-43.9-47.6z\"]\n};\nvar faRetweet = {\n  prefix: 'fas',\n  iconName: 'retweet',\n  icon: [640, 512, [], \"f079\", \"M629.657 343.598L528.971 444.284c-9.373 9.372-24.568 9.372-33.941 0L394.343 343.598c-9.373-9.373-9.373-24.569 0-33.941l10.823-10.823c9.562-9.562 25.133-9.34 34.419.492L480 342.118V160H292.451a24.005 24.005 0 0 1-16.971-7.029l-16-16C244.361 121.851 255.069 96 276.451 96H520c13.255 0 24 10.745 24 24v222.118l40.416-42.792c9.285-9.831 24.856-10.054 34.419-.492l10.823 10.823c9.372 9.372 9.372 24.569-.001 33.941zm-265.138 15.431A23.999 23.999 0 0 0 347.548 352H160V169.881l40.416 42.792c9.286 9.831 24.856 10.054 34.419.491l10.822-10.822c9.373-9.373 9.373-24.569 0-33.941L144.971 67.716c-9.373-9.373-24.569-9.373-33.941 0L10.343 168.402c-9.373 9.373-9.373 24.569 0 33.941l10.822 10.822c9.562 9.562 25.133 9.34 34.419-.491L96 169.881V392c0 13.255 10.745 24 24 24h243.549c21.382 0 32.09-25.851 16.971-40.971l-16.001-16z\"]\n};\nvar faRibbon = {\n  prefix: 'fas',\n  iconName: 'ribbon',\n  icon: [448, 512, [], \"f4d6\", \"M6.1 444.3c-9.6 10.8-7.5 27.6 4.5 35.7l68.8 27.9c9.9 6.7 23.3 5 31.3-3.8l91.8-101.9-79.2-87.9-117.2 130zm435.8 0s-292-324.6-295.4-330.1c15.4-8.4 40.2-17.9 77.5-17.9s62.1 9.5 77.5 17.9c-3.3 5.6-56 64.6-56 64.6l79.1 87.7 34.2-38c28.7-31.9 33.3-78.6 11.4-115.5l-43.7-73.5c-4.3-7.2-9.9-13.3-16.8-18-40.7-27.6-127.4-29.7-171.4 0-6.9 4.7-12.5 10.8-16.8 18l-43.6 73.2c-1.5 2.5-37.1 62.2 11.5 116L337.5 504c8 8.9 21.4 10.5 31.3 3.8l68.8-27.9c11.9-8 14-24.8 4.3-35.6z\"]\n};\nvar faRing = {\n  prefix: 'fas',\n  iconName: 'ring',\n  icon: [512, 512, [], \"f70b\", \"M256 64C110.06 64 0 125.91 0 208v98.13C0 384.48 114.62 448 256 448s256-63.52 256-141.87V208c0-82.09-110.06-144-256-144zm0 64c106.04 0 192 35.82 192 80 0 9.26-3.97 18.12-10.91 26.39C392.15 208.21 328.23 192 256 192s-136.15 16.21-181.09 42.39C67.97 226.12 64 217.26 64 208c0-44.18 85.96-80 192-80zM120.43 264.64C155.04 249.93 201.64 240 256 240s100.96 9.93 135.57 24.64C356.84 279.07 308.93 288 256 288s-100.84-8.93-135.57-23.36z\"]\n};\nvar faRoad = {\n  prefix: 'fas',\n  iconName: 'road',\n  icon: [576, 512, [], \"f018\", \"M573.19 402.67l-139.79-320C428.43 71.29 417.6 64 405.68 64h-97.59l2.45 23.16c.5 4.72-3.21 8.84-7.96 8.84h-29.16c-4.75 0-8.46-4.12-7.96-8.84L267.91 64h-97.59c-11.93 0-22.76 7.29-27.73 18.67L2.8 402.67C-6.45 423.86 8.31 448 30.54 448h196.84l10.31-97.68c.86-8.14 7.72-14.32 15.91-14.32h68.8c8.19 0 15.05 6.18 15.91 14.32L348.62 448h196.84c22.23 0 36.99-24.14 27.73-45.33zM260.4 135.16a8 8 0 0 1 7.96-7.16h39.29c4.09 0 7.53 3.09 7.96 7.16l4.6 43.58c.75 7.09-4.81 13.26-11.93 13.26h-40.54c-7.13 0-12.68-6.17-11.93-13.26l4.59-43.58zM315.64 304h-55.29c-9.5 0-16.91-8.23-15.91-17.68l5.07-48c.86-8.14 7.72-14.32 15.91-14.32h45.15c8.19 0 15.05 6.18 15.91 14.32l5.07 48c1 9.45-6.41 17.68-15.91 17.68z\"]\n};\nvar faRobot = {\n  prefix: 'fas',\n  iconName: 'robot',\n  icon: [640, 512, [], \"f544\", \"M32,224H64V416H32A31.96166,31.96166,0,0,1,0,384V256A31.96166,31.96166,0,0,1,32,224Zm512-48V448a64.06328,64.06328,0,0,1-64,64H160a64.06328,64.06328,0,0,1-64-64V176a79.974,79.974,0,0,1,80-80H288V32a32,32,0,0,1,64,0V96H464A79.974,79.974,0,0,1,544,176ZM264,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,264,256Zm-8,128H192v32h64Zm96,0H288v32h64ZM456,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,456,256Zm-8,128H384v32h64ZM640,256V384a31.96166,31.96166,0,0,1-32,32H576V224h32A31.96166,31.96166,0,0,1,640,256Z\"]\n};\nvar faRocket = {\n  prefix: 'fas',\n  iconName: 'rocket',\n  icon: [512, 512, [], \"f135\", \"M505.12019,19.09375c-1.18945-5.53125-6.65819-11-12.207-12.1875C460.716,0,435.507,0,410.40747,0,307.17523,0,245.26909,55.20312,199.05238,128H94.83772c-16.34763.01562-35.55658,11.875-42.88664,26.48438L2.51562,253.29688A28.4,28.4,0,0,0,0,264a24.00867,24.00867,0,0,0,24.00582,24H127.81618l-22.47457,22.46875c-11.36521,11.36133-12.99607,32.25781,0,45.25L156.24582,406.625c11.15623,11.1875,32.15619,13.15625,45.27726,0l22.47457-22.46875V488a24.00867,24.00867,0,0,0,24.00581,24,28.55934,28.55934,0,0,0,10.707-2.51562l98.72834-49.39063c14.62888-7.29687,26.50776-26.5,26.50776-42.85937V312.79688c72.59753-46.3125,128.03493-108.40626,128.03493-211.09376C512.07526,76.5,512.07526,51.29688,505.12019,19.09375ZM384.04033,168A40,40,0,1,1,424.05,128,40.02322,40.02322,0,0,1,384.04033,168Z\"]\n};\nvar faRoute = {\n  prefix: 'fas',\n  iconName: 'route',\n  icon: [512, 512, [], \"f4d7\", \"M416 320h-96c-17.6 0-32-14.4-32-32s14.4-32 32-32h96s96-107 96-160-43-96-96-96-96 43-96 96c0 25.5 22.2 63.4 45.3 96H320c-52.9 0-96 43.1-96 96s43.1 96 96 96h96c17.6 0 32 14.4 32 32s-14.4 32-32 32H185.5c-16 24.8-33.8 47.7-47.3 64H416c52.9 0 96-43.1 96-96s-43.1-96-96-96zm0-256c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zM96 256c-53 0-96 43-96 96s96 160 96 160 96-107 96-160-43-96-96-96zm0 128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faRss = {\n  prefix: 'fas',\n  iconName: 'rss',\n  icon: [448, 512, [], \"f09e\", \"M128.081 415.959c0 35.369-28.672 64.041-64.041 64.041S0 451.328 0 415.959s28.672-64.041 64.041-64.041 64.04 28.673 64.04 64.041zm175.66 47.25c-8.354-154.6-132.185-278.587-286.95-286.95C7.656 175.765 0 183.105 0 192.253v48.069c0 8.415 6.49 15.472 14.887 16.018 111.832 7.284 201.473 96.702 208.772 208.772.547 8.397 7.604 14.887 16.018 14.887h48.069c9.149.001 16.489-7.655 15.995-16.79zm144.249.288C439.596 229.677 251.465 40.445 16.503 32.01 7.473 31.686 0 38.981 0 48.016v48.068c0 8.625 6.835 15.645 15.453 15.999 191.179 7.839 344.627 161.316 352.465 352.465.353 8.618 7.373 15.453 15.999 15.453h48.068c9.034-.001 16.329-7.474 16.005-16.504z\"]\n};\nvar faRssSquare = {\n  prefix: 'fas',\n  iconName: 'rss-square',\n  icon: [448, 512, [], \"f143\", \"M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM112 416c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm157.533 0h-34.335c-6.011 0-11.051-4.636-11.442-10.634-5.214-80.05-69.243-143.92-149.123-149.123-5.997-.39-10.633-5.431-10.633-11.441v-34.335c0-6.535 5.468-11.777 11.994-11.425 110.546 5.974 198.997 94.536 204.964 204.964.352 6.526-4.89 11.994-11.425 11.994zm103.027 0h-34.334c-6.161 0-11.175-4.882-11.427-11.038-5.598-136.535-115.204-246.161-251.76-251.76C68.882 152.949 64 147.935 64 141.774V107.44c0-6.454 5.338-11.664 11.787-11.432 167.83 6.025 302.21 141.191 308.205 308.205.232 6.449-4.978 11.787-11.432 11.787z\"]\n};\nvar faRubleSign = {\n  prefix: 'fas',\n  iconName: 'ruble-sign',\n  icon: [384, 512, [], \"f158\", \"M239.36 320C324.48 320 384 260.542 384 175.071S324.48 32 239.36 32H76c-6.627 0-12 5.373-12 12v206.632H12c-6.627 0-12 5.373-12 12V308c0 6.627 5.373 12 12 12h52v32H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h52v52c0 6.627 5.373 12 12 12h58.56c6.627 0 12-5.373 12-12v-52H308c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12H146.56v-32h92.8zm-92.8-219.252h78.72c46.72 0 74.88 29.11 74.88 74.323 0 45.832-28.16 75.561-76.16 75.561h-77.44V100.748z\"]\n};\nvar faRuler = {\n  prefix: 'fas',\n  iconName: 'ruler',\n  icon: [640, 512, [], \"f545\", \"M635.7 167.2L556.1 31.7c-8.8-15-28.3-20.1-43.5-11.5l-69 39.1L503.3 161c2.2 3.8.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9L416 75l-55.2 31.3 27.9 47.4c2.2 3.8.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9L333.2 122 278 153.3 337.8 255c2.2 3.7.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9l-59.7-101.7-55.2 31.3 27.9 47.4c2.2 3.8.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9l-27.9-47.5-55.2 31.3 59.7 101.7c2.2 3.7.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9L84.9 262.9l-69 39.1C.7 310.7-4.6 329.8 4.2 344.8l79.6 135.6c8.8 15 28.3 20.1 43.5 11.5L624.1 210c15.2-8.6 20.4-27.8 11.6-42.8z\"]\n};\nvar faRulerCombined = {\n  prefix: 'fas',\n  iconName: 'ruler-combined',\n  icon: [512, 512, [], \"f546\", \"M160 288h-56c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h56v-64h-56c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h56V96h-56c-4.42 0-8-3.58-8-8V72c0-4.42 3.58-8 8-8h56V32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v448c0 2.77.91 5.24 1.57 7.8L160 329.38V288zm320 64h-32v56c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-56h-64v56c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-56h-64v56c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-56h-41.37L24.2 510.43c2.56.66 5.04 1.57 7.8 1.57h448c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32z\"]\n};\nvar faRulerHorizontal = {\n  prefix: 'fas',\n  iconName: 'ruler-horizontal',\n  icon: [576, 512, [], \"f547\", \"M544 128h-48v88c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-88h-64v88c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-88h-64v88c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-88h-64v88c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-88h-64v88c0 4.42-3.58 8-8 8H88c-4.42 0-8-3.58-8-8v-88H32c-17.67 0-32 14.33-32 32v192c0 17.67 14.33 32 32 32h512c17.67 0 32-14.33 32-32V160c0-17.67-14.33-32-32-32z\"]\n};\nvar faRulerVertical = {\n  prefix: 'fas',\n  iconName: 'ruler-vertical',\n  icon: [256, 512, [], \"f548\", \"M168 416c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88v-64h-88c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88v-64h-88c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88v-64h-88c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88V32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v448c0 17.67 14.33 32 32 32h192c17.67 0 32-14.33 32-32v-64h-88z\"]\n};\nvar faRunning = {\n  prefix: 'fas',\n  iconName: 'running',\n  icon: [416, 512, [], \"f70c\", \"M272 96c26.51 0 48-21.49 48-48S298.51 0 272 0s-48 21.49-48 48 21.49 48 48 48zM113.69 317.47l-14.8 34.52H32c-17.67 0-32 14.33-32 32s14.33 32 32 32h77.45c19.25 0 36.58-11.44 44.11-29.09l8.79-20.52-10.67-6.3c-17.32-10.23-30.06-25.37-37.99-42.61zM384 223.99h-44.03l-26.06-53.25c-12.5-25.55-35.45-44.23-61.78-50.94l-71.08-21.14c-28.3-6.8-57.77-.55-80.84 17.14l-39.67 30.41c-14.03 10.75-16.69 30.83-5.92 44.86s30.84 16.66 44.86 5.92l39.69-30.41c7.67-5.89 17.44-8 25.27-6.14l14.7 4.37-37.46 87.39c-12.62 29.48-1.31 64.01 26.3 80.31l84.98 50.17-27.47 87.73c-5.28 16.86 4.11 34.81 20.97 40.09 3.19 1 6.41 1.48 9.58 1.48 13.61 0 26.23-8.77 30.52-22.45l31.64-101.06c5.91-20.77-2.89-43.08-21.64-54.39l-61.24-36.14 31.31-78.28 20.27 41.43c8 16.34 24.92 26.89 43.11 26.89H384c17.67 0 32-14.33 32-32s-14.33-31.99-32-31.99z\"]\n};\nvar faRupeeSign = {\n  prefix: 'fas',\n  iconName: 'rupee-sign',\n  icon: [320, 512, [], \"f156\", \"M308 96c6.627 0 12-5.373 12-12V44c0-6.627-5.373-12-12-12H12C5.373 32 0 37.373 0 44v44.748c0 6.627 5.373 12 12 12h85.28c27.308 0 48.261 9.958 60.97 27.252H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h158.757c-6.217 36.086-32.961 58.632-74.757 58.632H12c-6.627 0-12 5.373-12 12v53.012c0 3.349 1.4 6.546 3.861 8.818l165.052 152.356a12.001 12.001 0 0 0 8.139 3.182h82.562c10.924 0 16.166-13.408 8.139-20.818L116.871 319.906c76.499-2.34 131.144-53.395 138.318-127.906H308c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-58.69c-3.486-11.541-8.28-22.246-14.252-32H308z\"]\n};\nvar faSadCry = {\n  prefix: 'fas',\n  iconName: 'sad-cry',\n  icon: [496, 512, [], \"f5b3\", \"M248 8C111 8 0 119 0 256c0 90.1 48.2 168.7 120 212.1V288c0-8.8 7.2-16 16-16s16 7.2 16 16v196.7c29.5 12.4 62 19.3 96 19.3s66.5-6.9 96-19.3V288c0-8.8 7.2-16 16-16s16 7.2 16 16v180.1C447.8 424.7 496 346 496 256 496 119 385 8 248 8zm-65.5 216.5c-14.8-13.2-46.2-13.2-61 0L112 233c-3.8 3.3-9.3 4-13.7 1.6-4.4-2.4-6.9-7.4-6.1-12.4 4-25.2 34.2-42.1 59.9-42.1S208 197 212 222.2c.8 5-1.7 10-6.1 12.4-5.8 3.1-11.2.7-13.7-1.6l-9.7-8.5zM248 416c-26.5 0-48-28.7-48-64s21.5-64 48-64 48 28.7 48 64-21.5 64-48 64zm149.8-181.5c-5.8 3.1-11.2.7-13.7-1.6l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L304 233c-3.8 3.3-9.3 4-13.7 1.6-4.4-2.4-6.9-7.4-6.1-12.4 4-25.2 34.2-42.1 59.9-42.1S400 197 404 222.2c.6 4.9-1.8 9.9-6.2 12.3z\"]\n};\nvar faSadTear = {\n  prefix: 'fas',\n  iconName: 'sad-tear',\n  icon: [496, 512, [], \"f5b4\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zM152 416c-26.5 0-48-21-48-47 0-20 28.5-60.4 41.6-77.8 3.2-4.3 9.6-4.3 12.8 0C171.5 308.6 200 349 200 369c0 26-21.5 47-48 47zm16-176c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm170.2 154.2C315.8 367.4 282.9 352 248 352c-21.2 0-21.2-32 0-32 44.4 0 86.3 19.6 114.7 53.8 13.8 16.4-11.2 36.5-24.5 20.4z\"]\n};\nvar faSatellite = {\n  prefix: 'fas',\n  iconName: 'satellite',\n  icon: [512, 512, [], \"f7bf\", \"M502.60969,310.04206l-96.70393,96.71625a31.88151,31.88151,0,0,1-45.00765,0L280.572,326.34115l-9.89231,9.90759a190.56343,190.56343,0,0,1-5.40716,168.52287c-4.50077,8.50115-16.39342,9.59505-23.20707,2.79725L134.54715,400.05428l-17.7999,17.79929c.70324,2.60972,1.60965,5.00067,1.60965,7.79793a32.00544,32.00544,0,1,1-32.00544-32.00434c2.79735,0,5.18838.90637,7.7982,1.60959l17.7999-17.79929L4.43129,269.94287c-6.798-6.81342-5.70409-18.6119,2.79735-23.20627a190.58161,190.58161,0,0,1,168.52864-5.407l9.79854-9.79821-80.31053-80.41716a32.002,32.002,0,0,1,0-45.09987L201.96474,9.29814A31.62639,31.62639,0,0,1,224.46868,0a31.99951,31.99951,0,0,1,22.59759,9.29814l80.32615,80.30777,47.805-47.89713a33.6075,33.6075,0,0,1,47.50808,0l47.50807,47.50645a33.63308,33.63308,0,0,1,0,47.50644l-47.805,47.89713L502.71908,265.036A31.78938,31.78938,0,0,1,502.60969,310.04206ZM219.56159,197.433l73.82505-73.82252-68.918-68.9-73.80942,73.80689Zm237.74352,90.106-68.90233-68.9156-73.825,73.82252,68.918,68.9Z\"]\n};\nvar faSatelliteDish = {\n  prefix: 'fas',\n  iconName: 'satellite-dish',\n  icon: [512, 512, [], \"f7c0\", \"M305.44954,462.59c7.39157,7.29792,6.18829,20.09661-3.00038,25.00356-77.713,41.80281-176.72559,29.9105-242.34331-35.7082C-5.49624,386.28227-17.404,287.362,24.41381,209.554c4.89125-9.095,17.68975-10.29834,25.00318-3.00043L166.22872,323.36708l27.39411-27.39452c-.68759-2.60974-1.594-5.00071-1.594-7.81361a32.00407,32.00407,0,1,1,32.00407,32.00455c-2.79723,0-5.20378-.89075-7.79786-1.594l-27.40974,27.41015ZM511.9758,303.06732a16.10336,16.10336,0,0,1-16.002,17.00242H463.86031a15.96956,15.96956,0,0,1-15.89265-15.00213C440.46671,175.5492,336.45348,70.53427,207.03078,63.53328a15.84486,15.84486,0,0,1-15.00191-15.90852V16.02652A16.09389,16.09389,0,0,1,209.031.02425C372.25491,8.61922,503.47472,139.841,511.9758,303.06732Zm-96.01221-.29692a16.21093,16.21093,0,0,1-16.11142,17.29934H367.645a16.06862,16.06862,0,0,1-15.89265-14.70522c-6.90712-77.01094-68.118-138.91037-144.92467-145.22376a15.94,15.94,0,0,1-14.79876-15.89289V112.13393a16.134,16.134,0,0,1,17.29908-16.096C319.45132,104.5391,407.55627,192.64538,415.96359,302.7704Z\"]\n};\nvar faSave = {\n  prefix: 'fas',\n  iconName: 'save',\n  icon: [448, 512, [], \"f0c7\", \"M433.941 129.941l-83.882-83.882A48 48 0 0 0 316.118 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V163.882a48 48 0 0 0-14.059-33.941zM224 416c-35.346 0-64-28.654-64-64 0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64zm96-304.52V212c0 6.627-5.373 12-12 12H76c-6.627 0-12-5.373-12-12V108c0-6.627 5.373-12 12-12h228.52c3.183 0 6.235 1.264 8.485 3.515l3.48 3.48A11.996 11.996 0 0 1 320 111.48z\"]\n};\nvar faSchool = {\n  prefix: 'fas',\n  iconName: 'school',\n  icon: [640, 512, [], \"f549\", \"M0 224v272c0 8.84 7.16 16 16 16h80V192H32c-17.67 0-32 14.33-32 32zm360-48h-24v-40c0-4.42-3.58-8-8-8h-16c-4.42 0-8 3.58-8 8v64c0 4.42 3.58 8 8 8h48c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8zm137.75-63.96l-160-106.67a32.02 32.02 0 0 0-35.5 0l-160 106.67A32.002 32.002 0 0 0 128 138.66V512h128V368c0-8.84 7.16-16 16-16h96c8.84 0 16 7.16 16 16v144h128V138.67c0-10.7-5.35-20.7-14.25-26.63zM320 256c-44.18 0-80-35.82-80-80s35.82-80 80-80 80 35.82 80 80-35.82 80-80 80zm288-64h-64v320h80c8.84 0 16-7.16 16-16V224c0-17.67-14.33-32-32-32z\"]\n};\nvar faScrewdriver = {\n  prefix: 'fas',\n  iconName: 'screwdriver',\n  icon: [512, 512, [], \"f54a\", \"M448 0L320 96v62.06l-83.03 83.03c6.79 4.25 13.27 9.06 19.07 14.87 5.8 5.8 10.62 12.28 14.87 19.07L353.94 192H416l96-128-64-64zM128 278.59L10.92 395.67c-14.55 14.55-14.55 38.15 0 52.71l52.7 52.7c14.56 14.56 38.15 14.56 52.71 0L233.41 384c29.11-29.11 29.11-76.3 0-105.41s-76.3-29.11-105.41 0z\"]\n};\nvar faScroll = {\n  prefix: 'fas',\n  iconName: 'scroll',\n  icon: [640, 512, [], \"f70e\", \"M48 0C21.53 0 0 21.53 0 48v64c0 8.84 7.16 16 16 16h80V48C96 21.53 74.47 0 48 0zm208 412.57V352h288V96c0-52.94-43.06-96-96-96H111.59C121.74 13.41 128 29.92 128 48v368c0 38.87 34.65 69.65 74.75 63.12C234.22 474 256 444.46 256 412.57zM288 384v32c0 52.93-43.06 96-96 96h336c61.86 0 112-50.14 112-112 0-8.84-7.16-16-16-16H288z\"]\n};\nvar faSdCard = {\n  prefix: 'fas',\n  iconName: 'sd-card',\n  icon: [384, 512, [], \"f7c2\", \"M320 0H128L0 128v320c0 35.3 28.7 64 64 64h256c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64zM160 160h-48V64h48v96zm80 0h-48V64h48v96zm80 0h-48V64h48v96z\"]\n};\nvar faSearch = {\n  prefix: 'fas',\n  iconName: 'search',\n  icon: [512, 512, [], \"f002\", \"M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z\"]\n};\nvar faSearchDollar = {\n  prefix: 'fas',\n  iconName: 'search-dollar',\n  icon: [512, 512, [], \"f688\", \"M505.04 442.66l-99.71-99.69c-4.5-4.5-10.6-7-17-7h-16.3c27.6-35.3 44-79.69 44-127.99C416.03 93.09 322.92 0 208.02 0S0 93.09 0 207.98s93.11 207.98 208.02 207.98c48.3 0 92.71-16.4 128.01-44v16.3c0 6.4 2.5 12.5 7 17l99.71 99.69c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.59.1-33.99zm-297.02-90.7c-79.54 0-144-64.34-144-143.98 0-79.53 64.35-143.98 144-143.98 79.54 0 144 64.34 144 143.98 0 79.53-64.35 143.98-144 143.98zm27.11-152.54l-45.01-13.5c-5.16-1.55-8.77-6.78-8.77-12.73 0-7.27 5.3-13.19 11.8-13.19h28.11c4.56 0 8.96 1.29 12.82 3.72 3.24 2.03 7.36 1.91 10.13-.73l11.75-11.21c3.53-3.37 3.33-9.21-.57-12.14-9.1-6.83-20.08-10.77-31.37-11.35V112c0-4.42-3.58-8-8-8h-16c-4.42 0-8 3.58-8 8v16.12c-23.63.63-42.68 20.55-42.68 45.07 0 19.97 12.99 37.81 31.58 43.39l45.01 13.5c5.16 1.55 8.77 6.78 8.77 12.73 0 7.27-5.3 13.19-11.8 13.19h-28.1c-4.56 0-8.96-1.29-12.82-3.72-3.24-2.03-7.36-1.91-10.13.73l-11.75 11.21c-3.53 3.37-3.33 9.21.57 12.14 9.1 6.83 20.08 10.77 31.37 11.35V304c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8v-16.12c23.63-.63 42.68-20.54 42.68-45.07 0-19.97-12.99-37.81-31.59-43.39z\"]\n};\nvar faSearchLocation = {\n  prefix: 'fas',\n  iconName: 'search-location',\n  icon: [512, 512, [], \"f689\", \"M505.04 442.66l-99.71-99.69c-4.5-4.5-10.6-7-17-7h-16.3c27.6-35.3 44-79.69 44-127.99C416.03 93.09 322.92 0 208.02 0S0 93.09 0 207.98s93.11 207.98 208.02 207.98c48.3 0 92.71-16.4 128.01-44v16.3c0 6.4 2.5 12.5 7 17l99.71 99.69c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.59.1-33.99zm-297.02-90.7c-79.54 0-144-64.34-144-143.98 0-79.53 64.35-143.98 144-143.98 79.54 0 144 64.34 144 143.98 0 79.53-64.35 143.98-144 143.98zm.02-239.96c-40.78 0-73.84 33.05-73.84 73.83 0 32.96 48.26 93.05 66.75 114.86a9.24 9.24 0 0 0 14.18 0c18.49-21.81 66.75-81.89 66.75-114.86 0-40.78-33.06-73.83-73.84-73.83zm0 96c-13.26 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z\"]\n};\nvar faSearchMinus = {\n  prefix: 'fas',\n  iconName: 'search-minus',\n  icon: [512, 512, [], \"f010\", \"M304 192v32c0 6.6-5.4 12-12 12H124c-6.6 0-12-5.4-12-12v-32c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12zm201 284.7L476.7 505c-9.4 9.4-24.6 9.4-33.9 0L343 405.3c-4.5-4.5-7-10.6-7-17V372c-35.3 27.6-79.7 44-128 44C93.1 416 0 322.9 0 208S93.1 0 208 0s208 93.1 208 208c0 48.3-16.4 92.7-44 128h16.3c6.4 0 12.5 2.5 17 7l99.7 99.7c9.3 9.4 9.3 24.6 0 34zM344 208c0-75.2-60.8-136-136-136S72 132.8 72 208s60.8 136 136 136 136-60.8 136-136z\"]\n};\nvar faSearchPlus = {\n  prefix: 'fas',\n  iconName: 'search-plus',\n  icon: [512, 512, [], \"f00e\", \"M304 192v32c0 6.6-5.4 12-12 12h-56v56c0 6.6-5.4 12-12 12h-32c-6.6 0-12-5.4-12-12v-56h-56c-6.6 0-12-5.4-12-12v-32c0-6.6 5.4-12 12-12h56v-56c0-6.6 5.4-12 12-12h32c6.6 0 12 5.4 12 12v56h56c6.6 0 12 5.4 12 12zm201 284.7L476.7 505c-9.4 9.4-24.6 9.4-33.9 0L343 405.3c-4.5-4.5-7-10.6-7-17V372c-35.3 27.6-79.7 44-128 44C93.1 416 0 322.9 0 208S93.1 0 208 0s208 93.1 208 208c0 48.3-16.4 92.7-44 128h16.3c6.4 0 12.5 2.5 17 7l99.7 99.7c9.3 9.4 9.3 24.6 0 34zM344 208c0-75.2-60.8-136-136-136S72 132.8 72 208s60.8 136 136 136 136-60.8 136-136z\"]\n};\nvar faSeedling = {\n  prefix: 'fas',\n  iconName: 'seedling',\n  icon: [512, 512, [], \"f4d8\", \"M64 96H0c0 123.7 100.3 224 224 224v144c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320C288 196.3 187.7 96 64 96zm384-64c-84.2 0-157.4 46.5-195.7 115.2 27.7 30.2 48.2 66.9 59 107.6C424 243.1 512 147.9 512 32h-64z\"]\n};\nvar faServer = {\n  prefix: 'fas',\n  iconName: 'server',\n  icon: [512, 512, [], \"f233\", \"M480 160H32c-17.673 0-32-14.327-32-32V64c0-17.673 14.327-32 32-32h448c17.673 0 32 14.327 32 32v64c0 17.673-14.327 32-32 32zm-48-88c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm-64 0c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm112 248H32c-17.673 0-32-14.327-32-32v-64c0-17.673 14.327-32 32-32h448c17.673 0 32 14.327 32 32v64c0 17.673-14.327 32-32 32zm-48-88c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm-64 0c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm112 248H32c-17.673 0-32-14.327-32-32v-64c0-17.673 14.327-32 32-32h448c17.673 0 32 14.327 32 32v64c0 17.673-14.327 32-32 32zm-48-88c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm-64 0c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24z\"]\n};\nvar faShapes = {\n  prefix: 'fas',\n  iconName: 'shapes',\n  icon: [512, 512, [], \"f61f\", \"M128,256A128,128,0,1,0,256,384,128,128,0,0,0,128,256Zm379-54.86L400.07,18.29a37.26,37.26,0,0,0-64.14,0L229,201.14C214.76,225.52,232.58,256,261.09,256H474.91C503.42,256,521.24,225.52,507,201.14ZM480,288H320a32,32,0,0,0-32,32V480a32,32,0,0,0,32,32H480a32,32,0,0,0,32-32V320A32,32,0,0,0,480,288Z\"]\n};\nvar faShare = {\n  prefix: 'fas',\n  iconName: 'share',\n  icon: [512, 512, [], \"f064\", \"M503.691 189.836L327.687 37.851C312.281 24.546 288 35.347 288 56.015v80.053C127.371 137.907 0 170.1 0 322.326c0 61.441 39.581 122.309 83.333 154.132 13.653 9.931 33.111-2.533 28.077-18.631C66.066 312.814 132.917 274.316 288 272.085V360c0 20.7 24.3 31.453 39.687 18.164l176.004-152c11.071-9.562 11.086-26.753 0-36.328z\"]\n};\nvar faShareAlt = {\n  prefix: 'fas',\n  iconName: 'share-alt',\n  icon: [448, 512, [], \"f1e0\", \"M352 320c-22.608 0-43.387 7.819-59.79 20.895l-102.486-64.054a96.551 96.551 0 0 0 0-41.683l102.486-64.054C308.613 184.181 329.392 192 352 192c53.019 0 96-42.981 96-96S405.019 0 352 0s-96 42.981-96 96c0 7.158.79 14.13 2.276 20.841L155.79 180.895C139.387 167.819 118.608 160 96 160c-53.019 0-96 42.981-96 96s42.981 96 96 96c22.608 0 43.387-7.819 59.79-20.895l102.486 64.054A96.301 96.301 0 0 0 256 416c0 53.019 42.981 96 96 96s96-42.981 96-96-42.981-96-96-96z\"]\n};\nvar faShareAltSquare = {\n  prefix: 'fas',\n  iconName: 'share-alt-square',\n  icon: [448, 512, [], \"f1e1\", \"M448 80v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48zM304 296c-14.562 0-27.823 5.561-37.783 14.671l-67.958-40.775a56.339 56.339 0 0 0 0-27.793l67.958-40.775C276.177 210.439 289.438 216 304 216c30.928 0 56-25.072 56-56s-25.072-56-56-56-56 25.072-56 56c0 4.797.605 9.453 1.74 13.897l-67.958 40.775C171.823 205.561 158.562 200 144 200c-30.928 0-56 25.072-56 56s25.072 56 56 56c14.562 0 27.823-5.561 37.783-14.671l67.958 40.775a56.088 56.088 0 0 0-1.74 13.897c0 30.928 25.072 56 56 56s56-25.072 56-56C360 321.072 334.928 296 304 296z\"]\n};\nvar faShareSquare = {\n  prefix: 'fas',\n  iconName: 'share-square',\n  icon: [576, 512, [], \"f14d\", \"M568.482 177.448L424.479 313.433C409.3 327.768 384 317.14 384 295.985v-71.963c-144.575.97-205.566 35.113-164.775 171.353 4.483 14.973-12.846 26.567-25.006 17.33C155.252 383.105 120 326.488 120 269.339c0-143.937 117.599-172.5 264-173.312V24.012c0-21.174 25.317-31.768 40.479-17.448l144.003 135.988c10.02 9.463 10.028 25.425 0 34.896zM384 379.128V448H64V128h50.916a11.99 11.99 0 0 0 8.648-3.693c14.953-15.568 32.237-27.89 51.014-37.676C185.708 80.83 181.584 64 169.033 64H48C21.49 64 0 85.49 0 112v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48v-88.806c0-8.288-8.197-14.066-16.011-11.302a71.83 71.83 0 0 1-34.189 3.377c-7.27-1.046-13.8 4.514-13.8 11.859z\"]\n};\nvar faShekelSign = {\n  prefix: 'fas',\n  iconName: 'shekel-sign',\n  icon: [448, 512, [], \"f20b\", \"M248 168v168c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V168c0-75.11-60.89-136-136-136H24C10.75 32 0 42.74 0 56v408c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V112h112c30.93 0 56 25.07 56 56zM432 32h-48c-8.84 0-16 7.16-16 16v296c0 30.93-25.07 56-56 56H200V176c0-8.84-7.16-16-16-16h-48c-8.84 0-16 7.16-16 16v280c0 13.25 10.75 24 24 24h168c75.11 0 136-60.89 136-136V48c0-8.84-7.16-16-16-16z\"]\n};\nvar faShieldAlt = {\n  prefix: 'fas',\n  iconName: 'shield-alt',\n  icon: [512, 512, [], \"f3ed\", \"M466.5 83.7l-192-80a48.15 48.15 0 0 0-36.9 0l-192 80C27.7 91.1 16 108.6 16 128c0 198.5 114.5 335.7 221.5 380.3 11.8 4.9 25.1 4.9 36.9 0C360.1 472.6 496 349.3 496 128c0-19.4-11.7-36.9-29.5-44.3zM256.1 446.3l-.1-381 175.9 73.3c-3.3 151.4-82.1 261.1-175.8 307.7z\"]\n};\nvar faShieldVirus = {\n  prefix: 'fas',\n  iconName: 'shield-virus',\n  icon: [512, 512, [], \"e06c\", \"M224,192a16,16,0,1,0,16,16A16,16,0,0,0,224,192ZM466.5,83.68l-192-80A57.4,57.4,0,0,0,256.05,0a57.4,57.4,0,0,0-18.46,3.67l-192,80A47.93,47.93,0,0,0,16,128C16,326.5,130.5,463.72,237.5,508.32a48.09,48.09,0,0,0,36.91,0C360.09,472.61,496,349.3,496,128A48,48,0,0,0,466.5,83.68ZM384,256H371.88c-28.51,0-42.79,34.47-22.63,54.63l8.58,8.57a16,16,0,1,1-22.63,22.63l-8.57-8.58C306.47,313.09,272,327.37,272,355.88V368a16,16,0,0,1-32,0V355.88c0-28.51-34.47-42.79-54.63-22.63l-8.57,8.58a16,16,0,0,1-22.63-22.63l8.58-8.57c20.16-20.16,5.88-54.63-22.63-54.63H128a16,16,0,0,1,0-32h12.12c28.51,0,42.79-34.47,22.63-54.63l-8.58-8.57a16,16,0,0,1,22.63-22.63l8.57,8.58c20.16,20.16,54.63,5.88,54.63-22.63V112a16,16,0,0,1,32,0v12.12c0,28.51,34.47,42.79,54.63,22.63l8.57-8.58a16,16,0,0,1,22.63,22.63l-8.58,8.57C329.09,189.53,343.37,224,371.88,224H384a16,16,0,0,1,0,32Zm-96,0a16,16,0,1,0,16,16A16,16,0,0,0,288,256Z\"]\n};\nvar faShip = {\n  prefix: 'fas',\n  iconName: 'ship',\n  icon: [640, 512, [], \"f21a\", \"M496.616 372.639l70.012-70.012c16.899-16.9 9.942-45.771-12.836-53.092L512 236.102V96c0-17.673-14.327-32-32-32h-64V24c0-13.255-10.745-24-24-24H248c-13.255 0-24 10.745-24 24v40h-64c-17.673 0-32 14.327-32 32v140.102l-41.792 13.433c-22.753 7.313-29.754 36.173-12.836 53.092l70.012 70.012C125.828 416.287 85.587 448 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24 61.023 0 107.499-20.61 143.258-59.396C181.677 487.432 216.021 512 256 512h128c39.979 0 74.323-24.568 88.742-59.396C508.495 491.384 554.968 512 616 512c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24-60.817 0-101.542-31.001-119.384-75.361zM192 128h256v87.531l-118.208-37.995a31.995 31.995 0 0 0-19.584 0L192 215.531V128z\"]\n};\nvar faShippingFast = {\n  prefix: 'fas',\n  iconName: 'shipping-fast',\n  icon: [640, 512, [], \"f48b\", \"M624 352h-16V243.9c0-12.7-5.1-24.9-14.1-33.9L494 110.1c-9-9-21.2-14.1-33.9-14.1H416V48c0-26.5-21.5-48-48-48H112C85.5 0 64 21.5 64 48v48H8c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h272c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H40c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h208c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H8c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h208c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H64v128c0 53 43 96 96 96s96-43 96-96h128c0 53 43 96 96 96s96-43 96-96h48c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM160 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm320 0c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm80-208H416V144h44.1l99.9 99.9V256z\"]\n};\nvar faShoePrints = {\n  prefix: 'fas',\n  iconName: 'shoe-prints',\n  icon: [640, 512, [], \"f54b\", \"M192 160h32V32h-32c-35.35 0-64 28.65-64 64s28.65 64 64 64zM0 416c0 35.35 28.65 64 64 64h32V352H64c-35.35 0-64 28.65-64 64zm337.46-128c-34.91 0-76.16 13.12-104.73 32-24.79 16.38-44.52 32-104.73 32v128l57.53 15.97c26.21 7.28 53.01 13.12 80.31 15.05 32.69 2.31 65.6.67 97.58-6.2C472.9 481.3 512 429.22 512 384c0-64-84.18-96-174.54-96zM491.42 7.19C459.44.32 426.53-1.33 393.84.99c-27.3 1.93-54.1 7.77-80.31 15.04L256 32v128c60.2 0 79.94 15.62 104.73 32 28.57 18.88 69.82 32 104.73 32C555.82 224 640 192 640 128c0-45.22-39.1-97.3-148.58-120.81z\"]\n};\nvar faShoppingBag = {\n  prefix: 'fas',\n  iconName: 'shopping-bag',\n  icon: [448, 512, [], \"f290\", \"M352 160v-32C352 57.42 294.579 0 224 0 153.42 0 96 57.42 96 128v32H0v272c0 44.183 35.817 80 80 80h288c44.183 0 80-35.817 80-80V160h-96zm-192-32c0-35.29 28.71-64 64-64s64 28.71 64 64v32H160v-32zm160 120c-13.255 0-24-10.745-24-24s10.745-24 24-24 24 10.745 24 24-10.745 24-24 24zm-192 0c-13.255 0-24-10.745-24-24s10.745-24 24-24 24 10.745 24 24-10.745 24-24 24z\"]\n};\nvar faShoppingBasket = {\n  prefix: 'fas',\n  iconName: 'shopping-basket',\n  icon: [576, 512, [], \"f291\", \"M576 216v16c0 13.255-10.745 24-24 24h-8l-26.113 182.788C514.509 462.435 494.257 480 470.37 480H105.63c-23.887 0-44.139-17.565-47.518-41.212L32 256h-8c-13.255 0-24-10.745-24-24v-16c0-13.255 10.745-24 24-24h67.341l106.78-146.821c10.395-14.292 30.407-17.453 44.701-7.058 14.293 10.395 17.453 30.408 7.058 44.701L170.477 192h235.046L326.12 82.821c-10.395-14.292-7.234-34.306 7.059-44.701 14.291-10.395 34.306-7.235 44.701 7.058L484.659 192H552c13.255 0 24 10.745 24 24zM312 392V280c0-13.255-10.745-24-24-24s-24 10.745-24 24v112c0 13.255 10.745 24 24 24s24-10.745 24-24zm112 0V280c0-13.255-10.745-24-24-24s-24 10.745-24 24v112c0 13.255 10.745 24 24 24s24-10.745 24-24zm-224 0V280c0-13.255-10.745-24-24-24s-24 10.745-24 24v112c0 13.255 10.745 24 24 24s24-10.745 24-24z\"]\n};\nvar faShoppingCart = {\n  prefix: 'fas',\n  iconName: 'shopping-cart',\n  icon: [576, 512, [], \"f07a\", \"M528.12 301.319l47.273-208C578.806 78.301 567.391 64 551.99 64H159.208l-9.166-44.81C147.758 8.021 137.93 0 126.529 0H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24h69.883l70.248 343.435C147.325 417.1 136 435.222 136 456c0 30.928 25.072 56 56 56s56-25.072 56-56c0-15.674-6.447-29.835-16.824-40h209.647C430.447 426.165 424 440.326 424 456c0 30.928 25.072 56 56 56s56-25.072 56-56c0-22.172-12.888-41.332-31.579-50.405l5.517-24.276c3.413-15.018-8.002-29.319-23.403-29.319H218.117l-6.545-32h293.145c11.206 0 20.92-7.754 23.403-18.681z\"]\n};\nvar faShower = {\n  prefix: 'fas',\n  iconName: 'shower',\n  icon: [512, 512, [], \"f2cc\", \"M304,320a16,16,0,1,0,16,16A16,16,0,0,0,304,320Zm32-96a16,16,0,1,0,16,16A16,16,0,0,0,336,224Zm32,64a16,16,0,1,0-16-16A16,16,0,0,0,368,288Zm-32,32a16,16,0,1,0-16-16A16,16,0,0,0,336,320Zm-32-64a16,16,0,1,0,16,16A16,16,0,0,0,304,256Zm128-32a16,16,0,1,0-16-16A16,16,0,0,0,432,224Zm-48,16a16,16,0,1,0,16-16A16,16,0,0,0,384,240Zm-16-48a16,16,0,1,0,16,16A16,16,0,0,0,368,192Zm96,32a16,16,0,1,0,16,16A16,16,0,0,0,464,224Zm32-32a16,16,0,1,0,16,16A16,16,0,0,0,496,192Zm-64,64a16,16,0,1,0,16,16A16,16,0,0,0,432,256Zm-32,32a16,16,0,1,0,16,16A16,16,0,0,0,400,288Zm-64,64a16,16,0,1,0,16,16A16,16,0,0,0,336,352Zm-32,32a16,16,0,1,0,16,16A16,16,0,0,0,304,384Zm64-64a16,16,0,1,0,16,16A16,16,0,0,0,368,320Zm21.65-218.35-11.3-11.31a16,16,0,0,0-22.63,0L350.05,96A111.19,111.19,0,0,0,272,64c-19.24,0-37.08,5.3-52.9,13.85l-10-10A121.72,121.72,0,0,0,123.44,32C55.49,31.5,0,92.91,0,160.85V464a16,16,0,0,0,16,16H48a16,16,0,0,0,16-16V158.4c0-30.15,21-58.2,51-61.93a58.38,58.38,0,0,1,48.93,16.67l10,10C165.3,138.92,160,156.76,160,176a111.23,111.23,0,0,0,32,78.05l-5.66,5.67a16,16,0,0,0,0,22.62l11.3,11.31a16,16,0,0,0,22.63,0L389.65,124.28A16,16,0,0,0,389.65,101.65Z\"]\n};\nvar faShuttleVan = {\n  prefix: 'fas',\n  iconName: 'shuttle-van',\n  icon: [640, 512, [], \"f5b6\", \"M628.88 210.65L494.39 49.27A48.01 48.01 0 0 0 457.52 32H32C14.33 32 0 46.33 0 64v288c0 17.67 14.33 32 32 32h32c0 53.02 42.98 96 96 96s96-42.98 96-96h128c0 53.02 42.98 96 96 96s96-42.98 96-96h32c17.67 0 32-14.33 32-32V241.38c0-11.23-3.94-22.1-11.12-30.73zM64 192V96h96v96H64zm96 240c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm160-240h-96V96h96v96zm160 240c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm-96-240V96h66.02l80 96H384z\"]\n};\nvar faSign = {\n  prefix: 'fas',\n  iconName: 'sign',\n  icon: [512, 512, [], \"f4d9\", \"M496 64H128V16c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16v48H16C7.2 64 0 71.2 0 80v32c0 8.8 7.2 16 16 16h48v368c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V128h368c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16zM160 384h320V160H160v224z\"]\n};\nvar faSignInAlt = {\n  prefix: 'fas',\n  iconName: 'sign-in-alt',\n  icon: [512, 512, [], \"f2f6\", \"M416 448h-84c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h84c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32h-84c-6.6 0-12-5.4-12-12V76c0-6.6 5.4-12 12-12h84c53 0 96 43 96 96v192c0 53-43 96-96 96zm-47-201L201 79c-15-15-41-4.5-41 17v96H24c-13.3 0-24 10.7-24 24v96c0 13.3 10.7 24 24 24h136v96c0 21.5 26 32 41 17l168-168c9.3-9.4 9.3-24.6 0-34z\"]\n};\nvar faSignLanguage = {\n  prefix: 'fas',\n  iconName: 'sign-language',\n  icon: [448, 512, [], \"f2a7\", \"M91.434 483.987c-.307-16.018 13.109-29.129 29.13-29.129h62.293v-5.714H56.993c-16.021 0-29.437-13.111-29.13-29.129C28.16 404.491 40.835 392 56.428 392h126.429v-5.714H29.136c-16.021 0-29.437-13.111-29.13-29.129.297-15.522 12.973-28.013 28.566-28.013h154.286v-5.714H57.707c-16.021 0-29.437-13.111-29.13-29.129.297-15.522 12.973-28.013 28.566-28.013h168.566l-31.085-22.606c-12.762-9.281-15.583-27.149-6.302-39.912 9.281-12.761 27.15-15.582 39.912-6.302l123.361 89.715a34.287 34.287 0 0 1 14.12 27.728v141.136c0 15.91-10.946 29.73-26.433 33.374l-80.471 18.934a137.16 137.16 0 0 1-31.411 3.646H120c-15.593-.001-28.269-12.492-28.566-28.014zm73.249-225.701h36.423l-11.187-8.136c-18.579-13.511-20.313-40.887-3.17-56.536l-13.004-16.7c-9.843-12.641-28.43-15.171-40.88-5.088-12.065 9.771-14.133 27.447-4.553 39.75l36.371 46.71zm283.298-2.103l-5.003-152.452c-.518-15.771-13.722-28.136-29.493-27.619-15.773.518-28.137 13.722-27.619 29.493l1.262 38.415L283.565 11.019c-9.58-12.303-27.223-14.63-39.653-5.328-12.827 9.599-14.929 28.24-5.086 40.881l76.889 98.745-4.509 3.511-94.79-121.734c-9.58-12.303-27.223-14.63-39.653-5.328-12.827 9.599-14.929 28.24-5.086 40.881l94.443 121.288-4.509 3.511-77.675-99.754c-9.58-12.303-27.223-14.63-39.653-5.328-12.827 9.599-14.929 28.24-5.086 40.881l52.053 66.849c12.497-8.257 29.055-8.285 41.69.904l123.36 89.714c10.904 7.93 17.415 20.715 17.415 34.198v16.999l61.064-47.549a34.285 34.285 0 0 0 13.202-28.177z\"]\n};\nvar faSignOutAlt = {\n  prefix: 'fas',\n  iconName: 'sign-out-alt',\n  icon: [512, 512, [], \"f2f5\", \"M497 273L329 441c-15 15-41 4.5-41-17v-96H152c-13.3 0-24-10.7-24-24v-96c0-13.3 10.7-24 24-24h136V88c0-21.4 25.9-32 41-17l168 168c9.3 9.4 9.3 24.6 0 34zM192 436v-40c0-6.6-5.4-12-12-12H96c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32h84c6.6 0 12-5.4 12-12V76c0-6.6-5.4-12-12-12H96c-53 0-96 43-96 96v192c0 53 43 96 96 96h84c6.6 0 12-5.4 12-12z\"]\n};\nvar faSignal = {\n  prefix: 'fas',\n  iconName: 'signal',\n  icon: [640, 512, [], \"f012\", \"M216 288h-48c-8.84 0-16 7.16-16 16v192c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V304c0-8.84-7.16-16-16-16zM88 384H40c-8.84 0-16 7.16-16 16v96c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16v-96c0-8.84-7.16-16-16-16zm256-192h-48c-8.84 0-16 7.16-16 16v288c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V208c0-8.84-7.16-16-16-16zm128-96h-48c-8.84 0-16 7.16-16 16v384c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V112c0-8.84-7.16-16-16-16zM600 0h-48c-8.84 0-16 7.16-16 16v480c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16z\"]\n};\nvar faSignature = {\n  prefix: 'fas',\n  iconName: 'signature',\n  icon: [640, 512, [], \"f5b7\", \"M623.2 192c-51.8 3.5-125.7 54.7-163.1 71.5-29.1 13.1-54.2 24.4-76.1 24.4-22.6 0-26-16.2-21.3-51.9 1.1-8 11.7-79.2-42.7-76.1-25.1 1.5-64.3 24.8-169.5 126L192 182.2c30.4-75.9-53.2-151.5-129.7-102.8L7.4 116.3C0 121-2.2 130.9 2.5 138.4l17.2 27c4.7 7.5 14.6 9.7 22.1 4.9l58-38.9c18.4-11.7 40.7 7.2 32.7 27.1L34.3 404.1C27.5 421 37 448 64 448c8.3 0 16.5-3.2 22.6-9.4 42.2-42.2 154.7-150.7 211.2-195.8-2.2 28.5-2.1 58.9 20.6 83.8 15.3 16.8 37.3 25.3 65.5 25.3 35.6 0 68-14.6 102.3-30 33-14.8 99-62.6 138.4-65.8 8.5-.7 15.2-7.3 15.2-15.8v-32.1c.2-9.1-7.5-16.8-16.6-16.2z\"]\n};\nvar faSimCard = {\n  prefix: 'fas',\n  iconName: 'sim-card',\n  icon: [384, 512, [], \"f7c4\", \"M0 64v384c0 35.3 28.7 64 64 64h256c35.3 0 64-28.7 64-64V128L256 0H64C28.7 0 0 28.7 0 64zm224 192h-64v-64h64v64zm96 0h-64v-64h32c17.7 0 32 14.3 32 32v32zm-64 128h64v32c0 17.7-14.3 32-32 32h-32v-64zm-96 0h64v64h-64v-64zm-96 0h64v64H96c-17.7 0-32-14.3-32-32v-32zm0-96h256v64H64v-64zm0-64c0-17.7 14.3-32 32-32h32v64H64v-32z\"]\n};\nvar faSink = {\n  prefix: 'fas',\n  iconName: 'sink',\n  icon: [512, 512, [], \"e06d\", \"M32,416a96,96,0,0,0,96,96H384a96,96,0,0,0,96-96V384H32ZM496,288H400V256h64a16,16,0,0,0,16-16V224a16,16,0,0,0-16-16H384a32,32,0,0,0-32,32v48H288V96a32,32,0,0,1,64,0v16a16,16,0,0,0,16,16h32a16,16,0,0,0,16-16V96A96.16,96.16,0,0,0,300.87,1.86C255.29,10.71,224,53.36,224,99.79V288H160V240a32,32,0,0,0-32-32H48a16,16,0,0,0-16,16v16a16,16,0,0,0,16,16h64v32H16A16,16,0,0,0,0,304v32a16,16,0,0,0,16,16H496a16,16,0,0,0,16-16V304A16,16,0,0,0,496,288Z\"]\n};\nvar faSitemap = {\n  prefix: 'fas',\n  iconName: 'sitemap',\n  icon: [640, 512, [], \"f0e8\", \"M128 352H32c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32zm-24-80h192v48h48v-48h192v48h48v-57.59c0-21.17-17.23-38.41-38.41-38.41H344v-64h40c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32H256c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h40v64H94.41C73.23 224 56 241.23 56 262.41V320h48v-48zm264 80h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32zm240 0h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32z\"]\n};\nvar faSkating = {\n  prefix: 'fas',\n  iconName: 'skating',\n  icon: [448, 512, [], \"f7c5\", \"M400 0c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48zm0 448c-8.8 0-16 7.2-16 16s-7.2 16-16 16h-96c-8.8 0-16 7.2-16 16s7.2 16 16 16h96c26.5 0 48-21.5 48-48 0-8.8-7.2-16-16-16zm-282.2 8.6c-6.2 6.2-16.4 6.3-22.6 0l-67.9-67.9c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l67.9 67.9c9.4 9.4 21.7 14 34 14s24.6-4.7 33.9-14c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.3-22.7 0zm56.1-179.8l-93.7 93.7c-12.5 12.5-12.5 32.8 0 45.2 6.2 6.2 14.4 9.4 22.6 9.4s16.4-3.1 22.6-9.4l91.9-91.9-30.2-30.2c-5-5-9.4-10.7-13.2-16.8zM128 160h105.5l-20.1 17.2c-13.5 11.5-21.6 28.4-22.3 46.1-.7 17.8 6.1 35.2 18.7 47.7l78.2 78.2V432c0 17.7 14.3 32 32 32s32-14.3 32-32v-89.4c0-12.6-5.1-25-14.1-33.9l-61-61c.5-.4 1.2-.6 1.7-1.1l82.3-82.3c11.5-11.5 14.9-28.6 8.7-43.6-6.2-15-20.7-24.7-37-24.7H128c-17.7 0-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faSkiing = {\n  prefix: 'fas',\n  iconName: 'skiing',\n  icon: [512, 512, [], \"f7c9\", \"M432 96c26.5 0 48-21.5 48-48S458.5 0 432 0s-48 21.5-48 48 21.5 48 48 48zm73 356.1c-9.4-9.4-24.6-9.4-33.9 0-12.1 12.1-30.5 15.4-45.1 8.7l-135.8-70.2 49.2-73.8c12.7-19 10.2-44.5-6-60.6L293 215.7l-107-53.1c-2.9 19.9 3.4 40 17.7 54.4l75.1 75.2-45.9 68.8L35 258.7c-11.7-6-26.2-1.5-32.3 10.3-6.1 11.8-1.5 26.3 10.3 32.3l391.9 202.5c11.9 5.5 24.5 8.1 37.1 8.1 23.2 0 46-9 63-26 9.3-9.3 9.3-24.5 0-33.8zM120 91.6l-11.5 22.5c14.4 7.3 31.2 4.9 42.8-4.8l47.2 23.4c-.1.1-.1.2-.2.3l114.5 56.8 32.4-13 6.4 19.1c4 12.1 12.6 22 24 27.7l58.1 29c15.9 7.9 35 1.5 42.9-14.3 7.9-15.8 1.5-35-14.3-42.9l-52.1-26.1-17.1-51.2c-8.1-24.2-40.9-56.6-84.5-39.2l-81.2 32.5-62.5-31c.3-14.5-7.2-28.6-20.9-35.6l-11.1 21.7h-.2l-34.4-7c-1.8-.4-3.7.2-5 1.7-1.9 2.2-1.7 5.5.5 7.4l26.2 23z\"]\n};\nvar faSkiingNordic = {\n  prefix: 'fas',\n  iconName: 'skiing-nordic',\n  icon: [576, 512, [], \"f7ca\", \"M336 96c26.5 0 48-21.5 48-48S362.5 0 336 0s-48 21.5-48 48 21.5 48 48 48zm216 320c-13.2 0-24 10.7-24 24 0 13.2-10.8 24-24 24h-69.5L460 285.6c11.7-4.7 20.1-16.2 20.1-29.6 0-17.7-14.3-32-32-32h-44L378 170.8c-12.5-25.5-35.5-44.2-61.8-50.9L245 98.7c-28.3-6.8-57.8-.5-80.8 17.1l-39.7 30.4c-14 10.7-16.7 30.8-5.9 44.9.7.9 1.7 1.3 2.4 2.1L66.9 464H24c-13.2 0-24 10.7-24 24s10.8 24 24 24h480c39.7 0 72-32.3 72-72 0-13.2-10.8-24-24-24zm-260.5 48h-96.9l43.1-91-22-13c-12.1-7.2-21.9-16.9-29.5-27.8L123.7 464H99.5l52.3-261.4c4.1-1 8.1-2.9 11.7-5.6l39.7-30.4c7.7-5.9 17.4-8 25.3-6.1l14.7 4.4-37.5 87.4c-12.6 29.5-1.3 64 26.3 80.3l85 50.2-25.5 81.2zm110.6 0h-43.6l23.6-75.5c5.9-20.8-2.9-43.1-21.6-54.4L299.3 298l31.3-78.3 20.3 41.4c8 16.3 24.9 26.9 43.1 26.9h33.3l-25.2 176z\"]\n};\nvar faSkull = {\n  prefix: 'fas',\n  iconName: 'skull',\n  icon: [512, 512, [], \"f54c\", \"M256 0C114.6 0 0 100.3 0 224c0 70.1 36.9 132.6 94.5 173.7 9.6 6.9 15.2 18.1 13.5 29.9l-9.4 66.2c-1.4 9.6 6 18.2 15.7 18.2H192v-56c0-4.4 3.6-8 8-8h16c4.4 0 8 3.6 8 8v56h64v-56c0-4.4 3.6-8 8-8h16c4.4 0 8 3.6 8 8v56h77.7c9.7 0 17.1-8.6 15.7-18.2l-9.4-66.2c-1.7-11.7 3.8-23 13.5-29.9C475.1 356.6 512 294.1 512 224 512 100.3 397.4 0 256 0zm-96 320c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64zm192 0c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64z\"]\n};\nvar faSkullCrossbones = {\n  prefix: 'fas',\n  iconName: 'skull-crossbones',\n  icon: [448, 512, [], \"f714\", \"M439.15 453.06L297.17 384l141.99-69.06c7.9-3.95 11.11-13.56 7.15-21.46L432 264.85c-3.95-7.9-13.56-11.11-21.47-7.16L224 348.41 37.47 257.69c-7.9-3.95-17.51-.75-21.47 7.16L1.69 293.48c-3.95 7.9-.75 17.51 7.15 21.46L150.83 384 8.85 453.06c-7.9 3.95-11.11 13.56-7.15 21.47l14.31 28.63c3.95 7.9 13.56 11.11 21.47 7.15L224 419.59l186.53 90.72c7.9 3.95 17.51.75 21.47-7.15l14.31-28.63c3.95-7.91.74-17.52-7.16-21.47zM150 237.28l-5.48 25.87c-2.67 12.62 5.42 24.85 16.45 24.85h126.08c11.03 0 19.12-12.23 16.45-24.85l-5.5-25.87c41.78-22.41 70-62.75 70-109.28C368 57.31 303.53 0 224 0S80 57.31 80 128c0 46.53 28.22 86.87 70 109.28zM280 112c17.65 0 32 14.35 32 32s-14.35 32-32 32-32-14.35-32-32 14.35-32 32-32zm-112 0c17.65 0 32 14.35 32 32s-14.35 32-32 32-32-14.35-32-32 14.35-32 32-32z\"]\n};\nvar faSlash = {\n  prefix: 'fas',\n  iconName: 'slash',\n  icon: [640, 512, [], \"f715\", \"M594.53 508.63L6.18 53.9c-6.97-5.42-8.23-15.47-2.81-22.45L23.01 6.18C28.43-.8 38.49-2.06 45.47 3.37L633.82 458.1c6.97 5.42 8.23 15.47 2.81 22.45l-19.64 25.27c-5.42 6.98-15.48 8.23-22.46 2.81z\"]\n};\nvar faSleigh = {\n  prefix: 'fas',\n  iconName: 'sleigh',\n  icon: [640, 512, [], \"f7cc\", \"M612.7 350.7l-9.3-7.4c-6.9-5.5-17-4.4-22.5 2.5l-10 12.5c-5.5 6.9-4.4 17 2.5 22.5l9.3 7.4c5.9 4.7 9.2 11.7 9.2 19.2 0 13.6-11 24.6-24.6 24.6H48c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h516c39 0 73.7-29.3 75.9-68.3 1.4-23.8-8.7-46.3-27.2-61zM32 224c0 59.6 40.9 109.2 96 123.5V400h64v-48h192v48h64v-48c53 0 96-43 96-96v-96c17.7 0 32-14.3 32-32s-14.3-32-32-32h-96v64c0 35.3-28.7 64-64 64h-20.7c-65.8 0-125.9-37.2-155.3-96-29.4-58.8-89.6-96-155.3-96H32C14.3 32 0 46.3 0 64s14.3 32 32 32v128z\"]\n};\nvar faSlidersH = {\n  prefix: 'fas',\n  iconName: 'sliders-h',\n  icon: [512, 512, [], \"f1de\", \"M496 384H160v-16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h80v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h336c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm0-160h-80v-16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h336v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h80c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm0-160H288V48c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16C7.2 64 0 71.2 0 80v32c0 8.8 7.2 16 16 16h208v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h208c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16z\"]\n};\nvar faSmile = {\n  prefix: 'fas',\n  iconName: 'smile',\n  icon: [496, 512, [], \"f118\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm194.8 170.2C334.3 380.4 292.5 400 248 400s-86.3-19.6-114.8-53.8c-13.6-16.3 11-36.7 24.6-20.5 22.4 26.9 55.2 42.2 90.2 42.2s67.8-15.4 90.2-42.2c13.4-16.2 38.1 4.2 24.6 20.5z\"]\n};\nvar faSmileBeam = {\n  prefix: 'fas',\n  iconName: 'smile-beam',\n  icon: [496, 512, [], \"f5b8\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM112 223.4c3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.3 7.4-15.8 4-15.1-4.5zm250.8 122.8C334.3 380.4 292.5 400 248 400s-86.3-19.6-114.8-53.8c-13.5-16.3 11-36.7 24.6-20.5 22.4 26.9 55.2 42.2 90.2 42.2s67.8-15.4 90.2-42.2c13.6-16.2 38.1 4.3 24.6 20.5zm6.2-118.3l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.1 7.3-15.6 4-14.9-4.5 3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.6 8.6-11 11.9-15.1 4.5z\"]\n};\nvar faSmileWink = {\n  prefix: 'fas',\n  iconName: 'smile-wink',\n  icon: [496, 512, [], \"f4da\", \"M0 256c0 137 111 248 248 248s248-111 248-248S385 8 248 8 0 119 0 256zm200-48c0 17.7-14.3 32-32 32s-32-14.3-32-32 14.3-32 32-32 32 14.3 32 32zm158.5 16.5c-14.8-13.2-46.2-13.2-61 0L288 233c-8.3 7.4-21.6.4-19.8-10.8 4-25.2 34.2-42.1 59.9-42.1S384 197 388 222.2c1.7 11.1-11.4 18.3-19.8 10.8l-9.7-8.5zM157.8 325.8C180.2 352.7 213 368 248 368s67.8-15.4 90.2-42.2c13.6-16.2 38.1 4.2 24.6 20.5C334.3 380.4 292.5 400 248 400s-86.3-19.6-114.8-53.8c-13.5-16.3 11.2-36.7 24.6-20.4z\"]\n};\nvar faSmog = {\n  prefix: 'fas',\n  iconName: 'smog',\n  icon: [640, 512, [], \"f75f\", \"M624 368H80c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h544c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zm-480 96H16c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h128c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zm416 0H224c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h336c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zM144 288h156.1c22.5 19.7 51.6 32 83.9 32s61.3-12.3 83.9-32H528c61.9 0 112-50.1 112-112S589.9 64 528 64c-18 0-34.7 4.6-49.7 12.1C454 31 406.8 0 352 0c-41 0-77.8 17.3-104 44.8C221.8 17.3 185 0 144 0 64.5 0 0 64.5 0 144s64.5 144 144 144z\"]\n};\nvar faSmoking = {\n  prefix: 'fas',\n  iconName: 'smoking',\n  icon: [640, 512, [], \"f48d\", \"M632 352h-48c-4.4 0-8 3.6-8 8v144c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V360c0-4.4-3.6-8-8-8zM553.3 87.1c-5.7-3.8-9.3-10-9.3-16.8V8c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v62.3c0 22 10.2 43.4 28.6 55.4 42.2 27.3 67.4 73.8 67.4 124V280c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-30.3c0-65.5-32.4-126.2-86.7-162.6zM432 352H48c-26.5 0-48 21.5-48 48v64c0 26.5 21.5 48 48 48h384c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16zm-32 112H224v-64h176v64zm87.7-322.4C463.8 125 448 99.3 448 70.3V8c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v66.4c0 43.7 24.6 81.6 60.3 106.7 22.4 15.7 35.7 41.2 35.7 68.6V280c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-30.3c0-43.3-21-83.4-56.3-108.1zM536 352h-48c-4.4 0-8 3.6-8 8v144c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V360c0-4.4-3.6-8-8-8z\"]\n};\nvar faSmokingBan = {\n  prefix: 'fas',\n  iconName: 'smoking-ban',\n  icon: [512, 512, [], \"f54d\", \"M96 304c0 8.8 7.2 16 16 16h117.5l-96-96H112c-8.8 0-16 7.2-16 16v64zM256 0C114.6 0 0 114.6 0 256s114.6 256 256 256 256-114.6 256-256S397.4 0 256 0zm0 448c-105.9 0-192-86.1-192-192 0-41.4 13.3-79.7 35.7-111.1l267.4 267.4C335.7 434.7 297.4 448 256 448zm45.2-192H384v32h-50.8l-32-32zm111.1 111.1L365.2 320H400c8.8 0 16-7.2 16-16v-64c0-8.8-7.2-16-16-16H269.2L144.9 99.7C176.3 77.3 214.6 64 256 64c105.9 0 192 86.1 192 192 0 41.4-13.3 79.7-35.7 111.1zM320.6 128c-15.6 0-28.6-11.2-31.4-25.9-.7-3.6-4-6.1-7.7-6.1h-16.2c-5 0-8.7 4.5-8 9.4 4.6 30.9 31.2 54.6 63.3 54.6 15.6 0 28.6 11.2 31.4 25.9.7 3.6 4 6.1 7.7 6.1h16.2c5 0 8.7-4.5 8-9.4-4.6-30.9-31.2-54.6-63.3-54.6z\"]\n};\nvar faSms = {\n  prefix: 'fas',\n  iconName: 'sms',\n  icon: [512, 512, [], \"f7cd\", \"M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5c-2.2 2.3-2.8 5.7-1.5 8.7 1.3 3 4.1 4.8 7.3 4.8 66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 141.4 0 256-93.1 256-208S397.4 32 256 32zM128.2 304H116c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h12.3c6 0 10.4-3.5 10.4-6.6 0-1.3-.8-2.7-2.1-3.8l-21.9-18.8c-8.5-7.2-13.3-17.5-13.3-28.1 0-21.3 19-38.6 42.4-38.6H156c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8h-12.3c-6 0-10.4 3.5-10.4 6.6 0 1.3.8 2.7 2.1 3.8l21.9 18.8c8.5 7.2 13.3 17.5 13.3 28.1.1 21.3-19 38.6-42.4 38.6zm191.8-8c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8v-68.2l-24.8 55.8c-2.9 5.9-11.4 5.9-14.3 0L224 227.8V296c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8V192c0-8.8 7.2-16 16-16h16c6.1 0 11.6 3.4 14.3 8.8l17.7 35.4 17.7-35.4c2.7-5.4 8.3-8.8 14.3-8.8h16c8.8 0 16 7.2 16 16v104zm48.3 8H356c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h12.3c6 0 10.4-3.5 10.4-6.6 0-1.3-.8-2.7-2.1-3.8l-21.9-18.8c-8.5-7.2-13.3-17.5-13.3-28.1 0-21.3 19-38.6 42.4-38.6H396c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8h-12.3c-6 0-10.4 3.5-10.4 6.6 0 1.3.8 2.7 2.1 3.8l21.9 18.8c8.5 7.2 13.3 17.5 13.3 28.1.1 21.3-18.9 38.6-42.3 38.6z\"]\n};\nvar faSnowboarding = {\n  prefix: 'fas',\n  iconName: 'snowboarding',\n  icon: [512, 512, [], \"f7ce\", \"M432 96c26.5 0 48-21.5 48-48S458.5 0 432 0s-48 21.5-48 48 21.5 48 48 48zm28.8 153.6c5.8 4.3 12.5 6.4 19.2 6.4 9.7 0 19.3-4.4 25.6-12.8 10.6-14.1 7.8-34.2-6.4-44.8l-111.4-83.5c-13.8-10.3-29.1-18.4-45.4-23.8l-63.7-21.2-26.1-52.1C244.7 2 225.5-4.4 209.7 3.5c-15.8 7.9-22.2 27.1-14.3 42.9l29.1 58.1c5.7 11.4 15.6 19.9 27.7 24l16.4 5.5-41.2 20.6c-21.8 10.9-35.4 32.8-35.4 57.2v53.1l-74.1 24.7c-16.8 5.6-25.8 23.7-20.2 40.5 1.7 5.2 4.9 9.4 8.7 12.9l-38.7-14.1c-9.7-3.5-17.4-10.6-21.8-20-5.6-12-19.9-17.2-31.9-11.6s-17.2 19.9-11.6 31.9c9.8 21 27.1 36.9 48.9 44.8l364.8 132.7c9.7 3.5 19.7 5.3 29.7 5.3 12.5 0 24.9-2.7 36.5-8.2 12-5.6 17.2-19.9 11.6-31.9S474 454.7 462 460.3c-9.3 4.4-19.8 4.8-29.5 1.3l-90.8-33.1c8.7-4.1 15.6-11.8 17.8-21.9l21.9-102c3.9-18.2-3.2-37.2-18.1-48.4l-52-39 66-30.5 83.5 62.9zm-144.4 51.7l-19.7 92c-1.5 7.1-.1 13.9 2.8 20l-169.4-61.6c2.7-.2 5.4-.4 8-1.3l85-28.4c19.6-6.5 32.8-24.8 32.8-45.5V256l60.5 45.3z\"]\n};\nvar faSnowflake = {\n  prefix: 'fas',\n  iconName: 'snowflake',\n  icon: [448, 512, [], \"f2dc\", \"M440.3 345.2l-33.8-19.5 26-7c8.2-2.2 13.1-10.7 10.9-18.9l-4-14.9c-2.2-8.2-10.7-13.1-18.9-10.9l-70.8 19-63.9-37 63.8-36.9 70.8 19c8.2 2.2 16.7-2.7 18.9-10.9l4-14.9c2.2-8.2-2.7-16.7-10.9-18.9l-26-7 33.8-19.5c7.4-4.3 9.9-13.7 5.7-21.1L430.4 119c-4.3-7.4-13.7-9.9-21.1-5.7l-33.8 19.5 7-26c2.2-8.2-2.7-16.7-10.9-18.9l-14.9-4c-8.2-2.2-16.7 2.7-18.9 10.9l-19 70.8-62.8 36.2v-77.5l53.7-53.7c6.2-6.2 6.2-16.4 0-22.6l-11.3-11.3c-6.2-6.2-16.4-6.2-22.6 0L256 56.4V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v40.4l-19.7-19.7c-6.2-6.2-16.4-6.2-22.6 0L138.3 48c-6.3 6.2-6.3 16.4 0 22.6l53.7 53.7v77.5l-62.8-36.2-19-70.8c-2.2-8.2-10.7-13.1-18.9-10.9l-14.9 4c-8.2 2.2-13.1 10.7-10.9 18.9l7 26-33.8-19.5c-7.4-4.3-16.8-1.7-21.1 5.7L2.1 145.7c-4.3 7.4-1.7 16.8 5.7 21.1l33.8 19.5-26 7c-8.3 2.2-13.2 10.7-11 19l4 14.9c2.2 8.2 10.7 13.1 18.9 10.9l70.8-19 63.8 36.9-63.8 36.9-70.8-19c-8.2-2.2-16.7 2.7-18.9 10.9l-4 14.9c-2.2 8.2 2.7 16.7 10.9 18.9l26 7-33.8 19.6c-7.4 4.3-9.9 13.7-5.7 21.1l15.5 26.8c4.3 7.4 13.7 9.9 21.1 5.7l33.8-19.5-7 26c-2.2 8.2 2.7 16.7 10.9 18.9l14.9 4c8.2 2.2 16.7-2.7 18.9-10.9l19-70.8 62.8-36.2v77.5l-53.7 53.7c-6.3 6.2-6.3 16.4 0 22.6l11.3 11.3c6.2 6.2 16.4 6.2 22.6 0l19.7-19.7V496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-40.4l19.7 19.7c6.2 6.2 16.4 6.2 22.6 0l11.3-11.3c6.2-6.2 6.2-16.4 0-22.6L256 387.7v-77.5l62.8 36.2 19 70.8c2.2 8.2 10.7 13.1 18.9 10.9l14.9-4c8.2-2.2 13.1-10.7 10.9-18.9l-7-26 33.8 19.5c7.4 4.3 16.8 1.7 21.1-5.7l15.5-26.8c4.3-7.3 1.8-16.8-5.6-21z\"]\n};\nvar faSnowman = {\n  prefix: 'fas',\n  iconName: 'snowman',\n  icon: [512, 512, [], \"f7d0\", \"M510.9 152.3l-5.9-14.5c-3.3-8-12.6-11.9-20.8-8.7L456 140.6v-29c0-8.6-7.2-15.6-16-15.6h-16c-8.8 0-16 7-16 15.6v46.9c0 .5.3 1 .3 1.5l-56.4 23c-5.9-10-13.3-18.9-22-26.6 13.6-16.6 22-37.4 22-60.5 0-53-43-96-96-96s-96 43-96 96c0 23.1 8.5 43.9 22 60.5-8.7 7.7-16 16.6-22 26.6l-56.4-23c.1-.5.3-1 .3-1.5v-46.9C104 103 96.8 96 88 96H72c-8.8 0-16 7-16 15.6v29l-28.1-11.5c-8.2-3.2-17.5.7-20.8 8.7l-5.9 14.5c-3.3 8 .7 17.1 8.9 20.3l135.2 55.2c-.4 4-1.2 8-1.2 12.2 0 10.1 1.7 19.6 4.2 28.9C120.9 296.4 104 334.2 104 376c0 54 28.4 100.9 70.8 127.8 9.3 5.9 20.3 8.2 31.3 8.2h99.2c13.3 0 26.3-4.1 37.2-11.7 46.5-32.3 74.4-89.4 62.9-152.6-5.5-30.2-20.5-57.6-41.6-79 2.5-9.2 4.2-18.7 4.2-28.7 0-4.2-.8-8.1-1.2-12.2L502 172.6c8.1-3.1 12.1-12.2 8.9-20.3zM224 96c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm32 272c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-64c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-64c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-88s-16-23.2-16-32 7.2-16 16-16 16 7.2 16 16-16 32-16 32zm32-56c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z\"]\n};\nvar faSnowplow = {\n  prefix: 'fas',\n  iconName: 'snowplow',\n  icon: [640, 512, [], \"f7d2\", \"M120 376c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm80 0c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm80 0c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm80 0c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm238.6 49.4c-14.5-14.5-22.6-34.1-22.6-54.6V269.2c0-20.5 8.1-40.1 22.6-54.6l36.7-36.7c6.2-6.2 6.2-16.4 0-22.6l-22.6-22.6c-6.2-6.2-16.4-6.2-22.6 0l-36.7 36.7c-26.5 26.5-41.4 62.4-41.4 99.9V288h-64v-50.9c0-8.7-1.8-17.2-5.2-25.2L364.5 29.1C356.9 11.4 339.6 0 320.3 0H176c-26.5 0-48 21.5-48 48v112h-16c-26.5 0-48 21.5-48 48v91.2C26.3 317.2 0 355.4 0 400c0 61.9 50.1 112 112 112h256c61.9 0 112-50.1 112-112 0-17.3-4.2-33.4-11.2-48H512v18.7c0 37.5 14.9 73.4 41.4 99.9l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0l22.6-22.6c6.2-6.2 6.2-16.4 0-22.6l-36.7-36.7zM192 64h117.8l68.6 160H256l-64-64V64zm176 384H112c-26.5 0-48-21.5-48-48s21.5-48 48-48h256c26.5 0 48 21.5 48 48s-21.5 48-48 48z\"]\n};\nvar faSoap = {\n  prefix: 'fas',\n  iconName: 'soap',\n  icon: [512, 512, [], \"e06e\", \"M416,192a95.42,95.42,0,0,1-30.94,70.21A95.8,95.8,0,0,1,352,448H160a96,96,0,0,1,0-192h88.91A95.3,95.3,0,0,1,224,192H96A96,96,0,0,0,0,288V416a96,96,0,0,0,96,96H416a96,96,0,0,0,96-96V288A96,96,0,0,0,416,192Zm-96,64a64,64,0,1,0-64-64A64,64,0,0,0,320,256ZM208,96a48,48,0,1,0-48-48A48,48,0,0,0,208,96ZM384,64a32,32,0,1,0-32-32A32,32,0,0,0,384,64ZM160,288a64,64,0,0,0,0,128H352a64,64,0,0,0,0-128Z\"]\n};\nvar faSocks = {\n  prefix: 'fas',\n  iconName: 'socks',\n  icon: [512, 512, [], \"f696\", \"M214.66 311.01L288 256V96H128v176l-86.65 64.61c-39.4 29.56-53.86 84.42-29.21 127.06C30.39 495.25 63.27 512 96.08 512c20.03 0 40.25-6.25 57.52-19.2l21.86-16.39c-29.85-55.38-13.54-125.84 39.2-165.4zM288 32c0-11.05 3.07-21.3 8.02-30.38C293.4.92 290.85 0 288 0H160c-17.67 0-32 14.33-32 32v32h160V32zM480 0H352c-17.67 0-32 14.33-32 32v32h192V32c0-17.67-14.33-32-32-32zM320 272l-86.13 64.61c-39.4 29.56-53.86 84.42-29.21 127.06 18.25 31.58 50.61 48.33 83.42 48.33 20.03 0 40.25-6.25 57.52-19.2l115.2-86.4A127.997 127.997 0 0 0 512 304V96H320v176z\"]\n};\nvar faSolarPanel = {\n  prefix: 'fas',\n  iconName: 'solar-panel',\n  icon: [640, 512, [], \"f5ba\", \"M431.98 448.01l-47.97.05V416h-128v32.21l-47.98.05c-8.82.01-15.97 7.16-15.98 15.99l-.05 31.73c-.01 8.85 7.17 16.03 16.02 16.02l223.96-.26c8.82-.01 15.97-7.16 15.98-15.98l.04-31.73c.01-8.85-7.17-16.03-16.02-16.02zM585.2 26.74C582.58 11.31 568.99 0 553.06 0H86.93C71 0 57.41 11.31 54.79 26.74-3.32 369.16.04 348.08.03 352c-.03 17.32 14.29 32 32.6 32h574.74c18.23 0 32.51-14.56 32.59-31.79.02-4.08 3.35 16.95-54.76-325.47zM259.83 64h120.33l9.77 96H250.06l9.77-96zm-75.17 256H71.09L90.1 208h105.97l-11.41 112zm16.29-160H98.24l16.29-96h96.19l-9.77 96zm32.82 160l11.4-112h149.65l11.4 112H233.77zm195.5-256h96.19l16.29 96H439.04l-9.77-96zm26.06 256l-11.4-112H549.9l19.01 112H455.33z\"]\n};\nvar faSort = {\n  prefix: 'fas',\n  iconName: 'sort',\n  icon: [320, 512, [], \"f0dc\", \"M41 288h238c21.4 0 32.1 25.9 17 41L177 448c-9.4 9.4-24.6 9.4-33.9 0L24 329c-15.1-15.1-4.4-41 17-41zm255-105L177 64c-9.4-9.4-24.6-9.4-33.9 0L24 183c-15.1 15.1-4.4 41 17 41h238c21.4 0 32.1-25.9 17-41z\"]\n};\nvar faSortAlphaDown = {\n  prefix: 'fas',\n  iconName: 'sort-alpha-down',\n  icon: [448, 512, [], \"f15d\", \"M176 352h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.36 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zm240-64H288a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h56l-61.26 70.45A32 32 0 0 0 272 446.37V464a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-56l61.26-70.45A32 32 0 0 0 432 321.63V304a16 16 0 0 0-16-16zm31.06-85.38l-59.27-160A16 16 0 0 0 372.72 32h-41.44a16 16 0 0 0-15.07 10.62l-59.27 160A16 16 0 0 0 272 224h24.83a16 16 0 0 0 15.23-11.08l4.42-12.92h71l4.41 12.92A16 16 0 0 0 407.16 224H432a16 16 0 0 0 15.06-21.38zM335.61 144L352 96l16.39 48z\"]\n};\nvar faSortAlphaDownAlt = {\n  prefix: 'fas',\n  iconName: 'sort-alpha-down-alt',\n  icon: [448, 512, [], \"f881\", \"M176 352h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.36 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zm112-128h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-56l61.26-70.45A32 32 0 0 0 432 65.63V48a16 16 0 0 0-16-16H288a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h56l-61.26 70.45A32 32 0 0 0 272 190.37V208a16 16 0 0 0 16 16zm159.06 234.62l-59.27-160A16 16 0 0 0 372.72 288h-41.44a16 16 0 0 0-15.07 10.62l-59.27 160A16 16 0 0 0 272 480h24.83a16 16 0 0 0 15.23-11.08l4.42-12.92h71l4.41 12.92A16 16 0 0 0 407.16 480H432a16 16 0 0 0 15.06-21.38zM335.61 400L352 352l16.39 48z\"]\n};\nvar faSortAlphaUp = {\n  prefix: 'fas',\n  iconName: 'sort-alpha-up',\n  icon: [448, 512, [], \"f15e\", \"M16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31l-80-96a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160zm400 128H288a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h56l-61.26 70.45A32 32 0 0 0 272 446.37V464a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-56l61.26-70.45A32 32 0 0 0 432 321.63V304a16 16 0 0 0-16-16zm31.06-85.38l-59.27-160A16 16 0 0 0 372.72 32h-41.44a16 16 0 0 0-15.07 10.62l-59.27 160A16 16 0 0 0 272 224h24.83a16 16 0 0 0 15.23-11.08l4.42-12.92h71l4.41 12.92A16 16 0 0 0 407.16 224H432a16 16 0 0 0 15.06-21.38zM335.61 144L352 96l16.39 48z\"]\n};\nvar faSortAlphaUpAlt = {\n  prefix: 'fas',\n  iconName: 'sort-alpha-up-alt',\n  icon: [448, 512, [], \"f882\", \"M16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31l-80-96a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160zm272 64h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-56l61.26-70.45A32 32 0 0 0 432 65.63V48a16 16 0 0 0-16-16H288a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h56l-61.26 70.45A32 32 0 0 0 272 190.37V208a16 16 0 0 0 16 16zm159.06 234.62l-59.27-160A16 16 0 0 0 372.72 288h-41.44a16 16 0 0 0-15.07 10.62l-59.27 160A16 16 0 0 0 272 480h24.83a16 16 0 0 0 15.23-11.08l4.42-12.92h71l4.41 12.92A16 16 0 0 0 407.16 480H432a16 16 0 0 0 15.06-21.38zM335.61 400L352 352l16.39 48z\"]\n};\nvar faSortAmountDown = {\n  prefix: 'fas',\n  iconName: 'sort-amount-down',\n  icon: [512, 512, [], \"f160\", \"M304 416h-64a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-128-64h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.37 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zm256-192H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-64 128H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM496 32H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h256a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faSortAmountDownAlt = {\n  prefix: 'fas',\n  iconName: 'sort-amount-down-alt',\n  icon: [512, 512, [], \"f884\", \"M240 96h64a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16h-64a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm0 128h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm256 192H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h256a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-256-64h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm-64 0h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.37 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352z\"]\n};\nvar faSortAmountUp = {\n  prefix: 'fas',\n  iconName: 'sort-amount-up',\n  icon: [512, 512, [], \"f161\", \"M304 416h-64a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31l-80-96a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.77 160 16 160zm416 0H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-64 128H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM496 32H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h256a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faSortAmountUpAlt = {\n  prefix: 'fas',\n  iconName: 'sort-amount-up-alt',\n  icon: [512, 512, [], \"f885\", \"M240 96h64a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16h-64a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm0 128h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm256 192H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h256a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-256-64h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zM16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.39-17.24 11.31-27.31l-80-96a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160z\"]\n};\nvar faSortDown = {\n  prefix: 'fas',\n  iconName: 'sort-down',\n  icon: [320, 512, [], \"f0dd\", \"M41 288h238c21.4 0 32.1 25.9 17 41L177 448c-9.4 9.4-24.6 9.4-33.9 0L24 329c-15.1-15.1-4.4-41 17-41z\"]\n};\nvar faSortNumericDown = {\n  prefix: 'fas',\n  iconName: 'sort-numeric-down',\n  icon: [448, 512, [], \"f162\", \"M304 96h16v64h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-16V48a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 304 96zm26.15 162.91a79 79 0 0 0-55 54.17c-14.25 51.05 21.21 97.77 68.85 102.53a84.07 84.07 0 0 1-20.85 12.91c-7.57 3.4-10.8 12.47-8.18 20.34l9.9 20c2.87 8.63 12.53 13.49 20.9 9.91 58-24.76 86.25-61.61 86.25-132V336c-.02-51.21-48.4-91.34-101.85-77.09zM352 356a20 20 0 1 1 20-20 20 20 0 0 1-20 20zm-176-4h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.36 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352z\"]\n};\nvar faSortNumericDownAlt = {\n  prefix: 'fas',\n  iconName: 'sort-numeric-down-alt',\n  icon: [448, 512, [], \"f886\", \"M176 352h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.36 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zm224 64h-16V304a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 304 352h16v64h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM330.17 34.91a79 79 0 0 0-55 54.17c-14.27 51.05 21.19 97.77 68.83 102.53a84.07 84.07 0 0 1-20.85 12.91c-7.57 3.4-10.8 12.47-8.18 20.34l9.9 20c2.87 8.63 12.53 13.49 20.9 9.91 58-24.77 86.25-61.61 86.25-132V112c-.02-51.21-48.4-91.34-101.85-77.09zM352 132a20 20 0 1 1 20-20 20 20 0 0 1-20 20z\"]\n};\nvar faSortNumericUp = {\n  prefix: 'fas',\n  iconName: 'sort-numeric-up',\n  icon: [448, 512, [], \"f163\", \"M330.17 258.91a79 79 0 0 0-55 54.17c-14.27 51.05 21.19 97.77 68.83 102.53a84.07 84.07 0 0 1-20.85 12.91c-7.57 3.4-10.8 12.47-8.18 20.34l9.9 20c2.87 8.63 12.53 13.49 20.9 9.91 58-24.76 86.25-61.61 86.25-132V336c-.02-51.21-48.4-91.34-101.85-77.09zM352 356a20 20 0 1 1 20-20 20 20 0 0 1-20 20zM304 96h16v64h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-16V48a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 304 96zM107.31 36.69a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31z\"]\n};\nvar faSortNumericUpAlt = {\n  prefix: 'fas',\n  iconName: 'sort-numeric-up-alt',\n  icon: [448, 512, [], \"f887\", \"M107.31 36.69a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31zM400 416h-16V304a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 304 352h16v64h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM330.17 34.91a79 79 0 0 0-55 54.17c-14.27 51.05 21.19 97.77 68.83 102.53a84.07 84.07 0 0 1-20.85 12.91c-7.57 3.4-10.8 12.47-8.18 20.34l9.9 20c2.87 8.63 12.53 13.49 20.9 9.91 58-24.77 86.25-61.61 86.25-132V112c-.02-51.21-48.4-91.34-101.85-77.09zM352 132a20 20 0 1 1 20-20 20 20 0 0 1-20 20z\"]\n};\nvar faSortUp = {\n  prefix: 'fas',\n  iconName: 'sort-up',\n  icon: [320, 512, [], \"f0de\", \"M279 224H41c-21.4 0-32.1-25.9-17-41L143 64c9.4-9.4 24.6-9.4 33.9 0l119 119c15.2 15.1 4.5 41-16.9 41z\"]\n};\nvar faSpa = {\n  prefix: 'fas',\n  iconName: 'spa',\n  icon: [576, 512, [], \"f5bb\", \"M568.25 192c-29.04.13-135.01 6.16-213.84 83-33.12 29.63-53.36 63.3-66.41 94.86-13.05-31.56-33.29-65.23-66.41-94.86-78.83-76.84-184.8-82.87-213.84-83-4.41-.02-7.79 3.4-7.75 7.82.23 27.92 7.14 126.14 88.77 199.3C172.79 480.94 256 480 288 480s115.19.95 199.23-80.88c81.64-73.17 88.54-171.38 88.77-199.3.04-4.42-3.34-7.84-7.75-7.82zM287.98 302.6c12.82-18.85 27.6-35.78 44.09-50.52 19.09-18.61 39.58-33.3 60.26-45.18-16.44-70.5-51.72-133.05-96.73-172.22-4.11-3.58-11.02-3.58-15.14 0-44.99 39.14-80.27 101.63-96.74 172.07 20.37 11.7 40.5 26.14 59.22 44.39a282.768 282.768 0 0 1 45.04 51.46z\"]\n};\nvar faSpaceShuttle = {\n  prefix: 'fas',\n  iconName: 'space-shuttle',\n  icon: [640, 512, [], \"f197\", \"M592.604 208.244C559.735 192.836 515.777 184 472 184H186.327c-4.952-6.555-10.585-11.978-16.72-16H376C229.157 137.747 219.403 32 96.003 32H96v128H80V32c-26.51 0-48 28.654-48 64v64c-23.197 0-32 10.032-32 24v40c0 13.983 8.819 24 32 24v16c-23.197 0-32 10.032-32 24v40c0 13.983 8.819 24 32 24v64c0 35.346 21.49 64 48 64V352h16v128h.003c123.4 0 133.154-105.747 279.997-136H169.606c6.135-4.022 11.768-9.445 16.72-16H472c43.777 0 87.735-8.836 120.604-24.244C622.282 289.845 640 271.992 640 256s-17.718-33.845-47.396-47.756zM488 296a8 8 0 0 1-8-8v-64a8 8 0 0 1 8-8c31.909 0 31.942 80 0 80z\"]\n};\nvar faSpellCheck = {\n  prefix: 'fas',\n  iconName: 'spell-check',\n  icon: [576, 512, [], \"f891\", \"M272 256h91.36c43.2 0 82-32.2 84.51-75.34a79.82 79.82 0 0 0-25.26-63.07 79.81 79.81 0 0 0 9.06-44.91C427.9 30.57 389.3 0 347 0h-75a16 16 0 0 0-16 16v224a16 16 0 0 0 16 16zm40-200h40a24 24 0 0 1 0 48h-40zm0 96h56a24 24 0 0 1 0 48h-56zM155.12 22.25A32 32 0 0 0 124.64 0H99.36a32 32 0 0 0-30.48 22.25L.59 235.73A16 16 0 0 0 16 256h24.93a16 16 0 0 0 15.42-11.73L68.29 208h87.42l11.94 36.27A16 16 0 0 0 183.07 256H208a16 16 0 0 0 15.42-20.27zM89.37 144L112 75.3l22.63 68.7zm482 132.48l-45.21-45.3a15.88 15.88 0 0 0-22.59 0l-151.5 151.5-55.41-55.5a15.88 15.88 0 0 0-22.59 0l-45.3 45.3a16 16 0 0 0 0 22.59l112 112.21a15.89 15.89 0 0 0 22.6 0l208-208.21a16 16 0 0 0-.02-22.59z\"]\n};\nvar faSpider = {\n  prefix: 'fas',\n  iconName: 'spider',\n  icon: [576, 512, [], \"f717\", \"M151.17 167.35L177.1 176h4.67l5.22-26.12c.72-3.58 1.8-7.58 3.21-11.79l-20.29-40.58 23.8-71.39c2.79-8.38-1.73-17.44-10.12-20.24L168.42.82c-8.38-2.8-17.45 1.73-20.24 10.12l-25.89 77.68a32.04 32.04 0 0 0 1.73 24.43l27.15 54.3zm422.14 182.03l-52.75-79.12a32.002 32.002 0 0 0-26.62-14.25H416l68.99-24.36a32.03 32.03 0 0 0 16.51-12.61l53.6-80.41c4.9-7.35 2.91-17.29-4.44-22.19l-13.31-8.88c-7.35-4.9-17.29-2.91-22.19 4.44l-50.56 75.83L404.1 208H368l-10.37-51.85C355.44 145.18 340.26 96 288 96c-52.26 0-67.44 49.18-69.63 60.15L208 208h-36.1l-60.49-20.17L60.84 112c-4.9-7.35-14.83-9.34-22.19-4.44l-13.31 8.88c-7.35 4.9-9.34 14.83-4.44 22.19l53.6 80.41a32.03 32.03 0 0 0 16.51 12.61L160 256H82.06a32.02 32.02 0 0 0-26.63 14.25L2.69 349.38c-4.9 7.35-2.92 17.29 4.44 22.19l13.31 8.88c7.35 4.9 17.29 2.91 22.19-4.44l48-72h47.06l-60.83 97.33A31.988 31.988 0 0 0 72 418.3V496c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-73.11l74.08-118.53c-1.01 14.05-2.08 28.11-2.08 42.21C192 399.64 232.76 448 288 448s96-48.36 96-101.43c0-14.1-1.08-28.16-2.08-42.21L456 422.89V496c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-77.71c0-6-1.69-11.88-4.86-16.96L438.31 304h47.06l48 72c4.9 7.35 14.84 9.34 22.19 4.44l13.31-8.88c7.36-4.9 9.34-14.83 4.44-22.18zM406.09 97.51l-20.29 40.58c1.41 4.21 2.49 8.21 3.21 11.79l5.22 26.12h4.67l25.93-8.65 27.15-54.3a31.995 31.995 0 0 0 1.73-24.43l-25.89-77.68C425.03 2.56 415.96-1.98 407.58.82l-15.17 5.06c-8.38 2.8-12.91 11.86-10.12 20.24l23.8 71.39z\"]\n};\nvar faSpinner = {\n  prefix: 'fas',\n  iconName: 'spinner',\n  icon: [512, 512, [], \"f110\", \"M304 48c0 26.51-21.49 48-48 48s-48-21.49-48-48 21.49-48 48-48 48 21.49 48 48zm-48 368c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zm208-208c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zM96 256c0-26.51-21.49-48-48-48S0 229.49 0 256s21.49 48 48 48 48-21.49 48-48zm12.922 99.078c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48c0-26.509-21.491-48-48-48zm294.156 0c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48c0-26.509-21.49-48-48-48zM108.922 60.922c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.491-48-48-48z\"]\n};\nvar faSplotch = {\n  prefix: 'fas',\n  iconName: 'splotch',\n  icon: [512, 512, [], \"f5bc\", \"M472.29 195.89l-67.06-22.95c-19.28-6.6-33.54-20.92-38.14-38.3L351.1 74.19c-11.58-43.77-76.57-57.13-109.98-22.62l-46.14 47.67c-13.26 13.71-33.54 20.93-54.2 19.31l-71.88-5.62c-52.05-4.07-86.93 44.88-59.03 82.83l38.54 52.42c11.08 15.07 12.82 33.86 4.64 50.24L24.62 355.4c-20.59 41.25 22.84 84.87 73.49 73.81l69.96-15.28c20.11-4.39 41.45 0 57.07 11.73l54.32 40.83c39.32 29.56 101.04 7.57 104.45-37.22l4.7-61.86c1.35-17.79 12.8-33.86 30.63-42.99l62-31.74c44.88-22.96 39.59-80.17-8.95-96.79z\"]\n};\nvar faSprayCan = {\n  prefix: 'fas',\n  iconName: 'spray-can',\n  icon: [512, 512, [], \"f5bd\", \"M224 32c0-17.67-14.33-32-32-32h-64c-17.67 0-32 14.33-32 32v96h128V32zm256 96c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm-256 32H96c-53.02 0-96 42.98-96 96v224c0 17.67 14.33 32 32 32h256c17.67 0 32-14.33 32-32V256c0-53.02-42.98-96-96-96zm-64 256c-44.18 0-80-35.82-80-80s35.82-80 80-80 80 35.82 80 80-35.82 80-80 80zM480 96c17.67 0 32-14.33 32-32s-14.33-32-32-32-32 14.33-32 32 14.33 32 32 32zm-96 32c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm-96-96c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm96 0c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm96 192c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32z\"]\n};\nvar faSquare = {\n  prefix: 'fas',\n  iconName: 'square',\n  icon: [448, 512, [], \"f0c8\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48z\"]\n};\nvar faSquareFull = {\n  prefix: 'fas',\n  iconName: 'square-full',\n  icon: [512, 512, [], \"f45c\", \"M512 512H0V0h512v512z\"]\n};\nvar faSquareRootAlt = {\n  prefix: 'fas',\n  iconName: 'square-root-alt',\n  icon: [576, 512, [], \"f698\", \"M571.31 251.31l-22.62-22.62c-6.25-6.25-16.38-6.25-22.63 0L480 274.75l-46.06-46.06c-6.25-6.25-16.38-6.25-22.63 0l-22.62 22.62c-6.25 6.25-6.25 16.38 0 22.63L434.75 320l-46.06 46.06c-6.25 6.25-6.25 16.38 0 22.63l22.62 22.62c6.25 6.25 16.38 6.25 22.63 0L480 365.25l46.06 46.06c6.25 6.25 16.38 6.25 22.63 0l22.62-22.62c6.25-6.25 6.25-16.38 0-22.63L525.25 320l46.06-46.06c6.25-6.25 6.25-16.38 0-22.63zM552 0H307.65c-14.54 0-27.26 9.8-30.95 23.87l-84.79 322.8-58.41-106.1A32.008 32.008 0 0 0 105.47 224H24c-13.25 0-24 10.74-24 24v48c0 13.25 10.75 24 24 24h43.62l88.88 163.73C168.99 503.5 186.3 512 204.94 512c17.27 0 44.44-9 54.28-41.48L357.03 96H552c13.25 0 24-10.75 24-24V24c0-13.26-10.75-24-24-24z\"]\n};\nvar faStamp = {\n  prefix: 'fas',\n  iconName: 'stamp',\n  icon: [512, 512, [], \"f5bf\", \"M32 512h448v-64H32v64zm384-256h-66.56c-16.26 0-29.44-13.18-29.44-29.44v-9.46c0-27.37 8.88-53.41 21.46-77.72 9.11-17.61 12.9-38.39 9.05-60.42-6.77-38.78-38.47-70.7-77.26-77.45C212.62-9.04 160 37.33 160 96c0 14.16 3.12 27.54 8.69 39.58C182.02 164.43 192 194.7 192 226.49v.07c0 16.26-13.18 29.44-29.44 29.44H96c-53.02 0-96 42.98-96 96v32c0 17.67 14.33 32 32 32h448c17.67 0 32-14.33 32-32v-32c0-53.02-42.98-96-96-96z\"]\n};\nvar faStar = {\n  prefix: 'fas',\n  iconName: 'star',\n  icon: [576, 512, [], \"f005\", \"M259.3 17.8L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0z\"]\n};\nvar faStarAndCrescent = {\n  prefix: 'fas',\n  iconName: 'star-and-crescent',\n  icon: [512, 512, [], \"f699\", \"M340.47 466.36c-1.45 0-6.89.46-9.18.46-116.25 0-210.82-94.57-210.82-210.82S215.04 45.18 331.29 45.18c2.32 0 7.7.46 9.18.46 7.13 0 13.33-5.03 14.75-12.07 1.46-7.25-2.55-14.49-9.47-17.09C316.58 5.54 286.39 0 256 0 114.84 0 0 114.84 0 256s114.84 256 256 256c30.23 0 60.28-5.49 89.32-16.32 5.96-2.02 10.28-7.64 10.28-14.26 0-8.09-6.39-15.06-15.13-15.06zm162.99-252.5l-76.38-11.1-34.16-69.21c-1.83-3.7-5.38-5.55-8.93-5.55s-7.1 1.85-8.93 5.55l-34.16 69.21-76.38 11.1c-8.17 1.18-11.43 11.22-5.52 16.99l55.27 53.87-13.05 76.07c-1.11 6.44 4.01 11.66 9.81 11.66 1.53 0 3.11-.36 4.64-1.17L384 335.37l68.31 35.91c1.53.8 3.11 1.17 4.64 1.17 5.8 0 10.92-5.23 9.81-11.66l-13.05-76.07 55.27-53.87c5.91-5.77 2.65-15.81-5.52-16.99z\"]\n};\nvar faStarHalf = {\n  prefix: 'fas',\n  iconName: 'star-half',\n  icon: [576, 512, [], \"f089\", \"M288 0c-11.4 0-22.8 5.9-28.7 17.8L194 150.2 47.9 171.4c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.1 23 46 46.4 33.7L288 439.6V0z\"]\n};\nvar faStarHalfAlt = {\n  prefix: 'fas',\n  iconName: 'star-half-alt',\n  icon: [536, 512, [], \"f5c0\", \"M508.55 171.51L362.18 150.2 296.77 17.81C290.89 5.98 279.42 0 267.95 0c-11.4 0-22.79 5.9-28.69 17.81l-65.43 132.38-146.38 21.29c-26.25 3.8-36.77 36.09-17.74 54.59l105.89 103-25.06 145.48C86.98 495.33 103.57 512 122.15 512c4.93 0 10-1.17 14.87-3.75l130.95-68.68 130.94 68.7c4.86 2.55 9.92 3.71 14.83 3.71 18.6 0 35.22-16.61 31.66-37.4l-25.03-145.49 105.91-102.98c19.04-18.5 8.52-50.8-17.73-54.6zm-121.74 123.2l-18.12 17.62 4.28 24.88 19.52 113.45-102.13-53.59-22.38-11.74.03-317.19 51.03 103.29 11.18 22.63 25.01 3.64 114.23 16.63-82.65 80.38z\"]\n};\nvar faStarOfDavid = {\n  prefix: 'fas',\n  iconName: 'star-of-david',\n  icon: [464, 512, [], \"f69a\", \"M405.68 256l53.21-89.39C473.3 142.4 455.48 112 426.88 112H319.96l-55.95-93.98C256.86 6.01 244.43 0 232 0s-24.86 6.01-32.01 18.02L144.04 112H37.11c-28.6 0-46.42 30.4-32.01 54.61L58.32 256 5.1 345.39C-9.31 369.6 8.51 400 37.11 400h106.93l55.95 93.98C207.14 505.99 219.57 512 232 512s24.86-6.01 32.01-18.02L319.96 400h106.93c28.6 0 46.42-30.4 32.01-54.61L405.68 256zm-12.78-88l-19.8 33.26L353.3 168h39.6zm-52.39 88l-52.39 88H175.88l-52.39-88 52.38-88h112.25l52.39 88zM232 73.72L254.79 112h-45.57L232 73.72zM71.1 168h39.6l-19.8 33.26L71.1 168zm0 176l19.8-33.26L110.7 344H71.1zM232 438.28L209.21 400h45.57L232 438.28zM353.29 344l19.8-33.26L392.9 344h-39.61z\"]\n};\nvar faStarOfLife = {\n  prefix: 'fas',\n  iconName: 'star-of-life',\n  icon: [480, 512, [], \"f621\", \"M471.99 334.43L336.06 256l135.93-78.43c7.66-4.42 10.28-14.2 5.86-21.86l-32.02-55.43c-4.42-7.65-14.21-10.28-21.87-5.86l-135.93 78.43V16c0-8.84-7.17-16-16.01-16h-64.04c-8.84 0-16.01 7.16-16.01 16v156.86L56.04 94.43c-7.66-4.42-17.45-1.79-21.87 5.86L2.15 155.71c-4.42 7.65-1.8 17.44 5.86 21.86L143.94 256 8.01 334.43c-7.66 4.42-10.28 14.21-5.86 21.86l32.02 55.43c4.42 7.65 14.21 10.27 21.87 5.86l135.93-78.43V496c0 8.84 7.17 16 16.01 16h64.04c8.84 0 16.01-7.16 16.01-16V339.14l135.93 78.43c7.66 4.42 17.45 1.8 21.87-5.86l32.02-55.43c4.42-7.65 1.8-17.43-5.86-21.85z\"]\n};\nvar faStepBackward = {\n  prefix: 'fas',\n  iconName: 'step-backward',\n  icon: [448, 512, [], \"f048\", \"M64 468V44c0-6.6 5.4-12 12-12h48c6.6 0 12 5.4 12 12v176.4l195.5-181C352.1 22.3 384 36.6 384 64v384c0 27.4-31.9 41.7-52.5 24.6L136 292.7V468c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12z\"]\n};\nvar faStepForward = {\n  prefix: 'fas',\n  iconName: 'step-forward',\n  icon: [448, 512, [], \"f051\", \"M384 44v424c0 6.6-5.4 12-12 12h-48c-6.6 0-12-5.4-12-12V291.6l-195.5 181C95.9 489.7 64 475.4 64 448V64c0-27.4 31.9-41.7 52.5-24.6L312 219.3V44c0-6.6 5.4-12 12-12h48c6.6 0 12 5.4 12 12z\"]\n};\nvar faStethoscope = {\n  prefix: 'fas',\n  iconName: 'stethoscope',\n  icon: [512, 512, [], \"f0f1\", \"M447.1 112c-34.2.5-62.3 28.4-63 62.6-.5 24.3 12.5 45.6 32 56.8V344c0 57.3-50.2 104-112 104-60 0-109.2-44.1-111.9-99.2C265 333.8 320 269.2 320 192V36.6c0-11.4-8.1-21.3-19.3-23.5L237.8.5c-13-2.6-25.6 5.8-28.2 18.8L206.4 35c-2.6 13 5.8 25.6 18.8 28.2l30.7 6.1v121.4c0 52.9-42.2 96.7-95.1 97.2-53.4.5-96.9-42.7-96.9-96V69.4l30.7-6.1c13-2.6 21.4-15.2 18.8-28.2l-3.1-15.7C107.7 6.4 95.1-2 82.1.6L19.3 13C8.1 15.3 0 25.1 0 36.6V192c0 77.3 55.1 142 128.1 156.8C130.7 439.2 208.6 512 304 512c97 0 176-75.4 176-168V231.4c19.1-11.1 32-31.7 32-55.4 0-35.7-29.2-64.5-64.9-64zm.9 80c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z\"]\n};\nvar faStickyNote = {\n  prefix: 'fas',\n  iconName: 'sticky-note',\n  icon: [448, 512, [], \"f249\", \"M312 320h136V56c0-13.3-10.7-24-24-24H24C10.7 32 0 42.7 0 56v400c0 13.3 10.7 24 24 24h264V344c0-13.2 10.8-24 24-24zm129 55l-98 98c-4.5 4.5-10.6 7-17 7h-6V352h128v6.1c0 6.3-2.5 12.4-7 16.9z\"]\n};\nvar faStop = {\n  prefix: 'fas',\n  iconName: 'stop',\n  icon: [448, 512, [], \"f04d\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48z\"]\n};\nvar faStopCircle = {\n  prefix: 'fas',\n  iconName: 'stop-circle',\n  icon: [512, 512, [], \"f28d\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm96 328c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h160c8.8 0 16 7.2 16 16v160z\"]\n};\nvar faStopwatch = {\n  prefix: 'fas',\n  iconName: 'stopwatch',\n  icon: [448, 512, [], \"f2f2\", \"M432 304c0 114.9-93.1 208-208 208S16 418.9 16 304c0-104 76.3-190.2 176-205.5V64h-28c-6.6 0-12-5.4-12-12V12c0-6.6 5.4-12 12-12h120c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-28v34.5c37.5 5.8 71.7 21.6 99.7 44.6l27.5-27.5c4.7-4.7 12.3-4.7 17 0l28.3 28.3c4.7 4.7 4.7 12.3 0 17l-29.4 29.4-.6.6C419.7 223.3 432 262.2 432 304zm-176 36V188.5c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12V340c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12z\"]\n};\nvar faStopwatch20 = {\n  prefix: 'fas',\n  iconName: 'stopwatch-20',\n  icon: [448, 512, [], \"e06f\", \"M398.5,190.91l.59-.61,26.59-26.58a16,16,0,0,0,0-22.63L403,118.41a16,16,0,0,0-22.63,0l-24.68,24.68A206.68,206.68,0,0,0,256,98.5V64h32a16,16,0,0,0,16-16V16A16,16,0,0,0,288,0H160a16.05,16.05,0,0,0-16,16V48a16.05,16.05,0,0,0,16,16h32V98.5A207.92,207.92,0,0,0,16.09,297.57C12.64,411.5,106.76,510.22,220.72,512,337.13,513.77,432,420,432,304A206,206,0,0,0,398.5,190.91ZM204.37,377.55a8.2,8.2,0,0,1,8.32,8.07v22.31a8.2,8.2,0,0,1-8.32,8.07H121.52a16.46,16.46,0,0,1-16.61-17.62c2.78-35.22,14.67-57.41,38.45-91.37,20.42-29.19,27.1-37.32,27.1-62.34,0-16.92-1.79-24.27-12.21-24.27-9.39,0-12.69,7.4-12.69,22.68v5.23a8.2,8.2,0,0,1-8.33,8.07h-24.9a8.2,8.2,0,0,1-8.33-8.07v-4.07c0-27.3,8.48-60.24,56.43-60.24,43,0,55.57,25.85,55.57,61,0,35.58-12.44,51.21-34.35,81.31-11.56,15-24.61,35.57-26.41,51.2ZM344,352.32c0,35.16-12.3,63.68-57.23,63.68C243.19,416,232,386.48,232,352.55V247.22c0-40.73,19.58-63.22,56.2-63.22C325,184,344,206.64,344,245.3ZM287.87,221.73c-9.41,0-13.23,7.5-13.23,20V357.68c0,13.11,3.59,20.59,13.23,20.59s13-8,13-21.27V241.06C300.89,229.79,297.88,221.73,287.87,221.73Z\"]\n};\nvar faStore = {\n  prefix: 'fas',\n  iconName: 'store',\n  icon: [616, 512, [], \"f54e\", \"M602 118.6L537.1 15C531.3 5.7 521 0 510 0H106C95 0 84.7 5.7 78.9 15L14 118.6c-33.5 53.5-3.8 127.9 58.8 136.4 4.5.6 9.1.9 13.7.9 29.6 0 55.8-13 73.8-33.1 18 20.1 44.3 33.1 73.8 33.1 29.6 0 55.8-13 73.8-33.1 18 20.1 44.3 33.1 73.8 33.1 29.6 0 55.8-13 73.8-33.1 18.1 20.1 44.3 33.1 73.8 33.1 4.7 0 9.2-.3 13.7-.9 62.8-8.4 92.6-82.8 59-136.4zM529.5 288c-10 0-19.9-1.5-29.5-3.8V384H116v-99.8c-9.6 2.2-19.5 3.8-29.5 3.8-6 0-12.1-.4-18-1.2-5.6-.8-11.1-2.1-16.4-3.6V480c0 17.7 14.3 32 32 32h448c17.7 0 32-14.3 32-32V283.2c-5.4 1.6-10.8 2.9-16.4 3.6-6.1.8-12.1 1.2-18.2 1.2z\"]\n};\nvar faStoreAlt = {\n  prefix: 'fas',\n  iconName: 'store-alt',\n  icon: [640, 512, [], \"f54f\", \"M320 384H128V224H64v256c0 17.7 14.3 32 32 32h256c17.7 0 32-14.3 32-32V224h-64v160zm314.6-241.8l-85.3-128c-6-8.9-16-14.2-26.7-14.2H117.4c-10.7 0-20.7 5.3-26.6 14.2l-85.3 128c-14.2 21.3 1 49.8 26.6 49.8H608c25.5 0 40.7-28.5 26.6-49.8zM512 496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V224h-64v272z\"]\n};\nvar faStoreAltSlash = {\n  prefix: 'fas',\n  iconName: 'store-alt-slash',\n  icon: [640, 512, [], \"e070\", \"M17.89,123.62,5.51,142.2c-14.2,21.3,1,49.8,26.59,49.8h74.26ZM576,413.42V224H512V364L384,265V224H330.92l-41.4-32H608c25.5,0,40.7-28.5,26.59-49.8l-85.29-128A32.18,32.18,0,0,0,522.6,0H117.42A31.87,31.87,0,0,0,90.81,14.2l-10.66,16L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.46A16,16,0,0,0,6.18,53.91L594.53,508.63A16,16,0,0,0,617,505.81l19.64-25.26a16,16,0,0,0-2.81-22.45ZM320,384H128V224H64V480a32,32,0,0,0,32,32H352a32,32,0,0,0,32-32V406.59l-64-49.47Z\"]\n};\nvar faStoreSlash = {\n  prefix: 'fas',\n  iconName: 'store-slash',\n  icon: [640, 512, [], \"e071\", \"M121.51,384V284.2a119.43,119.43,0,0,1-28,3.8,123.46,123.46,0,0,1-17.1-1.2,114.88,114.88,0,0,1-15.58-3.6V480c0,17.7,13.59,32,30.4,32H505.75L348.42,384Zm-28-128.09c25.1,0,47.29-10.72,64-27.24L24,120.05c-30.52,53.39-2.45,126.53,56.49,135A95.68,95.68,0,0,0,93.48,255.91ZM602.13,458.09,547.2,413.41V283.2a93.5,93.5,0,0,1-15.57,3.6,127.31,127.31,0,0,1-17.29,1.2,114.89,114.89,0,0,1-28-3.8v79.68L348.52,251.77a88.06,88.06,0,0,0,25.41,4.14c28.11,0,53-13,70.11-33.11,17.19,20.11,42.08,33.11,70.11,33.11a94.31,94.31,0,0,0,13-.91c59.66-8.41,88-82.8,56.06-136.4L521.55,15A30.1,30.1,0,0,0,495.81,0H112A30.11,30.11,0,0,0,86.27,15L76.88,30.78,43.19,3.38A14.68,14.68,0,0,0,21.86,6.19L3.2,31.45A16.58,16.58,0,0,0,5.87,53.91L564.81,508.63a14.69,14.69,0,0,0,21.33-2.82l18.66-25.26A16.58,16.58,0,0,0,602.13,458.09Z\"]\n};\nvar faStream = {\n  prefix: 'fas',\n  iconName: 'stream',\n  icon: [512, 512, [], \"f550\", \"M16 128h416c8.84 0 16-7.16 16-16V48c0-8.84-7.16-16-16-16H16C7.16 32 0 39.16 0 48v64c0 8.84 7.16 16 16 16zm480 80H80c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zm-64 176H16c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16z\"]\n};\nvar faStreetView = {\n  prefix: 'fas',\n  iconName: 'street-view',\n  icon: [512, 512, [], \"f21d\", \"M367.9 329.76c-4.62 5.3-9.78 10.1-15.9 13.65v22.94c66.52 9.34 112 28.05 112 49.65 0 30.93-93.12 56-208 56S48 446.93 48 416c0-21.6 45.48-40.3 112-49.65v-22.94c-6.12-3.55-11.28-8.35-15.9-13.65C58.87 345.34 0 378.05 0 416c0 53.02 114.62 96 256 96s256-42.98 256-96c0-37.95-58.87-70.66-144.1-86.24zM256 128c35.35 0 64-28.65 64-64S291.35 0 256 0s-64 28.65-64 64 28.65 64 64 64zm-64 192v96c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-96c17.67 0 32-14.33 32-32v-96c0-26.51-21.49-48-48-48h-11.8c-11.07 5.03-23.26 8-36.2 8s-25.13-2.97-36.2-8H208c-26.51 0-48 21.49-48 48v96c0 17.67 14.33 32 32 32z\"]\n};\nvar faStrikethrough = {\n  prefix: 'fas',\n  iconName: 'strikethrough',\n  icon: [512, 512, [], \"f0cc\", \"M496 224H293.9l-87.17-26.83A43.55 43.55 0 0 1 219.55 112h66.79A49.89 49.89 0 0 1 331 139.58a16 16 0 0 0 21.46 7.15l42.94-21.47a16 16 0 0 0 7.16-21.46l-.53-1A128 128 0 0 0 287.51 32h-68a123.68 123.68 0 0 0-123 135.64c2 20.89 10.1 39.83 21.78 56.36H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h480a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-180.24 96A43 43 0 0 1 336 356.45 43.59 43.59 0 0 1 292.45 400h-66.79A49.89 49.89 0 0 1 181 372.42a16 16 0 0 0-21.46-7.15l-42.94 21.47a16 16 0 0 0-7.16 21.46l.53 1A128 128 0 0 0 224.49 480h68a123.68 123.68 0 0 0 123-135.64 114.25 114.25 0 0 0-5.34-24.36z\"]\n};\nvar faStroopwafel = {\n  prefix: 'fas',\n  iconName: 'stroopwafel',\n  icon: [512, 512, [], \"f551\", \"M188.12 210.74L142.86 256l45.25 45.25L233.37 256l-45.25-45.26zm113.13-22.62L256 142.86l-45.25 45.25L256 233.37l45.25-45.25zm-90.5 135.76L256 369.14l45.26-45.26L256 278.63l-45.25 45.25zM256 0C114.62 0 0 114.62 0 256s114.62 256 256 256 256-114.62 256-256S397.38 0 256 0zm186.68 295.6l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0l-28.29-28.29-45.25 45.25 33.94 33.94 16.97-16.97c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31l-16.97 16.97 16.97 16.97c3.12 3.12 3.12 8.19 0 11.31l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0l-16.97-16.97-16.97 16.97c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l16.97-16.97-33.94-33.94-45.26 45.26 28.29 28.29c3.12 3.12 3.12 8.19 0 11.31l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0L256 414.39l-28.29 28.29c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l28.29-28.29-45.25-45.26-33.94 33.94 16.97 16.97c3.12 3.12 3.12 8.19 0 11.31l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0l-16.97-16.97-16.97 16.97c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l16.97-16.97-16.97-16.97c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0l16.97 16.97 33.94-33.94-45.25-45.25-28.29 28.29c-3.12 3.12-8.19 3.12-11.31 0L69.32 295.6c-3.12-3.12-3.12-8.19 0-11.31L97.61 256l-28.29-28.29c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0l28.29 28.29 45.25-45.26-33.94-33.94-16.97 16.97c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l16.97-16.97-16.97-16.97c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0l16.97 16.97 16.97-16.97c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31l-16.97 16.97 33.94 33.94 45.26-45.25-28.29-28.29c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0L256 97.61l28.29-28.29c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31l-28.29 28.29 45.26 45.25 33.94-33.94-16.97-16.97c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0l16.97 16.97 16.97-16.97c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31l-16.97 16.97 16.97 16.97c3.12 3.12 3.12 8.19 0 11.31l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0l-16.97-16.97-33.94 33.94 45.25 45.26 28.29-28.29c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31L414.39 256l28.29 28.28a8.015 8.015 0 0 1 0 11.32zM278.63 256l45.26 45.25L369.14 256l-45.25-45.26L278.63 256z\"]\n};\nvar faSubscript = {\n  prefix: 'fas',\n  iconName: 'subscript',\n  icon: [512, 512, [], \"f12c\", \"M496 448h-16V304a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 400 352h16v96h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM336 64h-67a16 16 0 0 0-13.14 6.87l-79.9 115-79.9-115A16 16 0 0 0 83 64H16A16 16 0 0 0 0 80v48a16 16 0 0 0 16 16h33.48l77.81 112-77.81 112H16a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h67a16 16 0 0 0 13.14-6.87l79.9-115 79.9 115A16 16 0 0 0 269 448h67a16 16 0 0 0 16-16v-48a16 16 0 0 0-16-16h-33.48l-77.81-112 77.81-112H336a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16z\"]\n};\nvar faSubway = {\n  prefix: 'fas',\n  iconName: 'subway',\n  icon: [448, 512, [], \"f239\", \"M448 96v256c0 51.815-61.624 96-130.022 96l62.98 49.721C386.905 502.417 383.562 512 376 512H72c-7.578 0-10.892-9.594-4.957-14.279L130.022 448C61.82 448 0 403.954 0 352V96C0 42.981 64 0 128 0h192c65 0 128 42.981 128 96zM200 232V120c0-13.255-10.745-24-24-24H72c-13.255 0-24 10.745-24 24v112c0 13.255 10.745 24 24 24h104c13.255 0 24-10.745 24-24zm200 0V120c0-13.255-10.745-24-24-24H272c-13.255 0-24 10.745-24 24v112c0 13.255 10.745 24 24 24h104c13.255 0 24-10.745 24-24zm-48 56c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zm-256 0c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48z\"]\n};\nvar faSuitcase = {\n  prefix: 'fas',\n  iconName: 'suitcase',\n  icon: [512, 512, [], \"f0f2\", \"M128 480h256V80c0-26.5-21.5-48-48-48H176c-26.5 0-48 21.5-48 48v400zm64-384h128v32H192V96zm320 80v256c0 26.5-21.5 48-48 48h-48V128h48c26.5 0 48 21.5 48 48zM96 480H48c-26.5 0-48-21.5-48-48V176c0-26.5 21.5-48 48-48h48v352z\"]\n};\nvar faSuitcaseRolling = {\n  prefix: 'fas',\n  iconName: 'suitcase-rolling',\n  icon: [384, 512, [], \"f5c1\", \"M336 160H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h16v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16h128v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16h16c26.51 0 48-21.49 48-48V208c0-26.51-21.49-48-48-48zm-16 216c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h240c4.42 0 8 3.58 8 8v16zm0-96c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h240c4.42 0 8 3.58 8 8v16zM144 48h96v80h48V48c0-26.51-21.49-48-48-48h-96c-26.51 0-48 21.49-48 48v80h48V48z\"]\n};\nvar faSun = {\n  prefix: 'fas',\n  iconName: 'sun',\n  icon: [512, 512, [], \"f185\", \"M256 160c-52.9 0-96 43.1-96 96s43.1 96 96 96 96-43.1 96-96-43.1-96-96-96zm246.4 80.5l-94.7-47.3 33.5-100.4c4.5-13.6-8.4-26.5-21.9-21.9l-100.4 33.5-47.4-94.8c-6.4-12.8-24.6-12.8-31 0l-47.3 94.7L92.7 70.8c-13.6-4.5-26.5 8.4-21.9 21.9l33.5 100.4-94.7 47.4c-12.8 6.4-12.8 24.6 0 31l94.7 47.3-33.5 100.5c-4.5 13.6 8.4 26.5 21.9 21.9l100.4-33.5 47.3 94.7c6.4 12.8 24.6 12.8 31 0l47.3-94.7 100.4 33.5c13.6 4.5 26.5-8.4 21.9-21.9l-33.5-100.4 94.7-47.3c13-6.5 13-24.7.2-31.1zm-155.9 106c-49.9 49.9-131.1 49.9-181 0-49.9-49.9-49.9-131.1 0-181 49.9-49.9 131.1-49.9 181 0 49.9 49.9 49.9 131.1 0 181z\"]\n};\nvar faSuperscript = {\n  prefix: 'fas',\n  iconName: 'superscript',\n  icon: [512, 512, [], \"f12b\", \"M496 160h-16V16a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 400 64h16v96h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM336 64h-67a16 16 0 0 0-13.14 6.87l-79.9 115-79.9-115A16 16 0 0 0 83 64H16A16 16 0 0 0 0 80v48a16 16 0 0 0 16 16h33.48l77.81 112-77.81 112H16a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h67a16 16 0 0 0 13.14-6.87l79.9-115 79.9 115A16 16 0 0 0 269 448h67a16 16 0 0 0 16-16v-48a16 16 0 0 0-16-16h-33.48l-77.81-112 77.81-112H336a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16z\"]\n};\nvar faSurprise = {\n  prefix: 'fas',\n  iconName: 'surprise',\n  icon: [496, 512, [], \"f5c2\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM136 208c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm112 208c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64zm80-176c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faSwatchbook = {\n  prefix: 'fas',\n  iconName: 'swatchbook',\n  icon: [512, 512, [], \"f5c3\", \"M434.66,167.71h0L344.5,77.36a31.83,31.83,0,0,0-45-.07h0l-.07.07L224,152.88V424L434.66,212.9A32,32,0,0,0,434.66,167.71ZM480,320H373.09L186.68,506.51c-2.06,2.07-4.5,3.58-6.68,5.49H480a32,32,0,0,0,32-32V352A32,32,0,0,0,480,320ZM192,32A32,32,0,0,0,160,0H32A32,32,0,0,0,0,32V416a96,96,0,0,0,192,0ZM96,440a24,24,0,1,1,24-24A24,24,0,0,1,96,440Zm32-184H64V192h64Zm0-128H64V64h64Z\"]\n};\nvar faSwimmer = {\n  prefix: 'fas',\n  iconName: 'swimmer',\n  icon: [640, 512, [], \"f5c4\", \"M189.61 310.58c3.54 3.26 15.27 9.42 34.39 9.42s30.86-6.16 34.39-9.42c16.02-14.77 34.5-22.58 53.46-22.58h16.3c18.96 0 37.45 7.81 53.46 22.58 3.54 3.26 15.27 9.42 34.39 9.42s30.86-6.16 34.39-9.42c14.86-13.71 31.88-21.12 49.39-22.16l-112.84-80.6 18-12.86c3.64-2.58 8.28-3.52 12.62-2.61l100.35 21.53c25.91 5.53 51.44-10.97 57-36.88 5.55-25.92-10.95-51.44-36.88-57L437.68 98.47c-30.73-6.58-63.02.12-88.56 18.38l-80.02 57.17c-10.38 7.39-19.36 16.44-26.72 26.94L173.75 299c5.47 3.23 10.82 6.93 15.86 11.58zM624 352h-16c-26.04 0-45.8-8.42-56.09-17.9-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C461.8 343.58 442.04 352 416 352s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C269.8 343.58 250.04 352 224 352s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C77.8 343.58 58.04 352 32 352H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h16c38.62 0 72.72-12.19 96-31.84 23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84h16c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-512-96c44.18 0 80-35.82 80-80s-35.82-80-80-80-80 35.82-80 80 35.82 80 80 80z\"]\n};\nvar faSwimmingPool = {\n  prefix: 'fas',\n  iconName: 'swimming-pool',\n  icon: [640, 512, [], \"f5c5\", \"M624 416h-16c-26.04 0-45.8-8.42-56.09-17.9-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C461.8 407.58 442.04 416 416 416s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C269.8 407.58 250.04 416 224 416s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C77.8 407.58 58.04 416 32 416H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h16c38.62 0 72.72-12.19 96-31.84 23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84h16c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-400-32v-96h192v96c19.12 0 30.86-6.16 34.39-9.42 9.17-8.46 19.2-14.34 29.61-18.07V128c0-17.64 14.36-32 32-32s32 14.36 32 32v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16c0-52.94-43.06-96-96-96s-96 43.06-96 96v96H224v-96c0-17.64 14.36-32 32-32s32 14.36 32 32v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16c0-52.94-43.06-96-96-96s-96 43.06-96 96v228.5c10.41 3.73 20.44 9.62 29.61 18.07 3.53 3.27 15.27 9.43 34.39 9.43z\"]\n};\nvar faSynagogue = {\n  prefix: 'fas',\n  iconName: 'synagogue',\n  icon: [640, 512, [], \"f69b\", \"M70 196.51L6.67 268.29A26.643 26.643 0 0 0 0 285.93V512h128V239.58l-38-43.07c-5.31-6.01-14.69-6.01-20 0zm563.33 71.78L570 196.51c-5.31-6.02-14.69-6.02-20 0l-38 43.07V512h128V285.93c0-6.5-2.37-12.77-6.67-17.64zM339.99 7.01c-11.69-9.35-28.29-9.35-39.98 0l-128 102.4A32.005 32.005 0 0 0 160 134.4V512h96v-92.57c0-31.88 21.78-61.43 53.25-66.55C349.34 346.35 384 377.13 384 416v96h96V134.4c0-9.72-4.42-18.92-12.01-24.99l-128-102.4zm52.07 215.55c1.98 3.15-.29 7.24-4 7.24h-38.94L324 269.79c-1.85 2.95-6.15 2.95-8 0l-25.12-39.98h-38.94c-3.72 0-5.98-4.09-4-7.24l19.2-30.56-19.2-30.56c-1.98-3.15.29-7.24 4-7.24h38.94l25.12-40c1.85-2.95 6.15-2.95 8 0l25.12 39.98h38.95c3.71 0 5.98 4.09 4 7.24L372.87 192l19.19 30.56z\"]\n};\nvar faSync = {\n  prefix: 'fas',\n  iconName: 'sync',\n  icon: [512, 512, [], \"f021\", \"M440.65 12.57l4 82.77A247.16 247.16 0 0 0 255.83 8C134.73 8 33.91 94.92 12.29 209.82A12 12 0 0 0 24.09 224h49.05a12 12 0 0 0 11.67-9.26 175.91 175.91 0 0 1 317-56.94l-101.46-4.86a12 12 0 0 0-12.57 12v47.41a12 12 0 0 0 12 12H500a12 12 0 0 0 12-12V12a12 12 0 0 0-12-12h-47.37a12 12 0 0 0-11.98 12.57zM255.83 432a175.61 175.61 0 0 1-146-77.8l101.8 4.87a12 12 0 0 0 12.57-12v-47.4a12 12 0 0 0-12-12H12a12 12 0 0 0-12 12V500a12 12 0 0 0 12 12h47.35a12 12 0 0 0 12-12.6l-4.15-82.57A247.17 247.17 0 0 0 255.83 504c121.11 0 221.93-86.92 243.55-201.82a12 12 0 0 0-11.8-14.18h-49.05a12 12 0 0 0-11.67 9.26A175.86 175.86 0 0 1 255.83 432z\"]\n};\nvar faSyncAlt = {\n  prefix: 'fas',\n  iconName: 'sync-alt',\n  icon: [512, 512, [], \"f2f1\", \"M370.72 133.28C339.458 104.008 298.888 87.962 255.848 88c-77.458.068-144.328 53.178-162.791 126.85-1.344 5.363-6.122 9.15-11.651 9.15H24.103c-7.498 0-13.194-6.807-11.807-14.176C33.933 94.924 134.813 8 256 8c66.448 0 126.791 26.136 171.315 68.685L463.03 40.97C478.149 25.851 504 36.559 504 57.941V192c0 13.255-10.745 24-24 24H345.941c-21.382 0-32.09-25.851-16.971-40.971l41.75-41.749zM32 296h134.059c21.382 0 32.09 25.851 16.971 40.971l-41.75 41.75c31.262 29.273 71.835 45.319 114.876 45.28 77.418-.07 144.315-53.144 162.787-126.849 1.344-5.363 6.122-9.15 11.651-9.15h57.304c7.498 0 13.194 6.807 11.807 14.176C478.067 417.076 377.187 504 256 504c-66.448 0-126.791-26.136-171.315-68.685L48.97 471.03C33.851 486.149 8 475.441 8 454.059V320c0-13.255 10.745-24 24-24z\"]\n};\nvar faSyringe = {\n  prefix: 'fas',\n  iconName: 'syringe',\n  icon: [512, 512, [], \"f48e\", \"M201.5 174.8l55.7 55.8c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-55.7-55.8-45.3 45.3 55.8 55.8c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0L111 265.2l-26.4 26.4c-17.3 17.3-25.6 41.1-23 65.4l7.1 63.6L2.3 487c-3.1 3.1-3.1 8.2 0 11.3l11.3 11.3c3.1 3.1 8.2 3.1 11.3 0l66.3-66.3 63.6 7.1c23.9 2.6 47.9-5.4 65.4-23l181.9-181.9-135.7-135.7-64.9 65zm308.2-93.3L430.5 2.3c-3.1-3.1-8.2-3.1-11.3 0l-11.3 11.3c-3.1 3.1-3.1 8.2 0 11.3l28.3 28.3-45.3 45.3-56.6-56.6-17-17c-3.1-3.1-8.2-3.1-11.3 0l-33.9 33.9c-3.1 3.1-3.1 8.2 0 11.3l17 17L424.8 223l17 17c3.1 3.1 8.2 3.1 11.3 0l33.9-34c3.1-3.1 3.1-8.2 0-11.3l-73.5-73.5 45.3-45.3 28.3 28.3c3.1 3.1 8.2 3.1 11.3 0l11.3-11.3c3.1-3.2 3.1-8.2 0-11.4z\"]\n};\nvar faTable = {\n  prefix: 'fas',\n  iconName: 'table',\n  icon: [512, 512, [], \"f0ce\", \"M464 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM224 416H64v-96h160v96zm0-160H64v-96h160v96zm224 160H288v-96h160v96zm0-160H288v-96h160v96z\"]\n};\nvar faTableTennis = {\n  prefix: 'fas',\n  iconName: 'table-tennis',\n  icon: [512, 512, [], \"f45d\", \"M496.2 296.5C527.7 218.7 512 126.2 449 63.1 365.1-21 229-21 145.1 63.1l-56 56.1 211.5 211.5c46.1-62.1 131.5-77.4 195.6-34.2zm-217.9 79.7L57.9 155.9c-27.3 45.3-21.7 105 17.3 144.1l34.5 34.6L6.7 424c-8.6 7.5-9.1 20.7-1 28.8l53.4 53.5c8 8.1 21.2 7.6 28.7-1L177.1 402l35.7 35.7c19.7 19.7 44.6 30.5 70.3 33.3-7.1-17-11-35.6-11-55.1-.1-13.8 2.5-27 6.2-39.7zM416 320c-53 0-96 43-96 96s43 96 96 96 96-43 96-96-43-96-96-96z\"]\n};\nvar faTablet = {\n  prefix: 'fas',\n  iconName: 'tablet',\n  icon: [448, 512, [], \"f10a\", \"M400 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM224 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faTabletAlt = {\n  prefix: 'fas',\n  iconName: 'tablet-alt',\n  icon: [448, 512, [], \"f3fa\", \"M400 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM224 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm176-108c0 6.6-5.4 12-12 12H60c-6.6 0-12-5.4-12-12V60c0-6.6 5.4-12 12-12h328c6.6 0 12 5.4 12 12v312z\"]\n};\nvar faTablets = {\n  prefix: 'fas',\n  iconName: 'tablets',\n  icon: [640, 512, [], \"f490\", \"M160 192C78.9 192 12.5 250.5.1 326.7c-.8 4.8 3.3 9.3 8.3 9.3h303.3c5 0 9.1-4.5 8.3-9.3C307.5 250.5 241.1 192 160 192zm151.6 176H8.4c-5 0-9.1 4.5-8.3 9.3C12.5 453.5 78.9 512 160 512s147.5-58.5 159.9-134.7c.8-4.8-3.3-9.3-8.3-9.3zM593.4 46.6c-56.5-56.5-144.2-61.4-206.9-16-4 2.9-4.3 8.9-.8 12.3L597 254.3c3.5 3.5 9.5 3.2 12.3-.8 45.5-62.7 40.6-150.4-15.9-206.9zM363 65.7c-3.5-3.5-9.5-3.2-12.3.8-45.4 62.7-40.5 150.4 15.9 206.9 56.5 56.5 144.2 61.4 206.9 15.9 4-2.9 4.3-8.9.8-12.3L363 65.7z\"]\n};\nvar faTachometerAlt = {\n  prefix: 'fas',\n  iconName: 'tachometer-alt',\n  icon: [576, 512, [], \"f3fd\", \"M288 32C128.94 32 0 160.94 0 320c0 52.8 14.25 102.26 39.06 144.8 5.61 9.62 16.3 15.2 27.44 15.2h443c11.14 0 21.83-5.58 27.44-15.2C561.75 422.26 576 372.8 576 320c0-159.06-128.94-288-288-288zm0 64c14.71 0 26.58 10.13 30.32 23.65-1.11 2.26-2.64 4.23-3.45 6.67l-9.22 27.67c-5.13 3.49-10.97 6.01-17.64 6.01-17.67 0-32-14.33-32-32S270.33 96 288 96zM96 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm48-160c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm246.77-72.41l-61.33 184C343.13 347.33 352 364.54 352 384c0 11.72-3.38 22.55-8.88 32H232.88c-5.5-9.45-8.88-20.28-8.88-32 0-33.94 26.5-61.43 59.9-63.59l61.34-184.01c4.17-12.56 17.73-19.45 30.36-15.17 12.57 4.19 19.35 17.79 15.17 30.36zm14.66 57.2l15.52-46.55c3.47-1.29 7.13-2.23 11.05-2.23 17.67 0 32 14.33 32 32s-14.33 32-32 32c-11.38-.01-20.89-6.28-26.57-15.22zM480 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faTag = {\n  prefix: 'fas',\n  iconName: 'tag',\n  icon: [512, 512, [], \"f02b\", \"M0 252.118V48C0 21.49 21.49 0 48 0h204.118a48 48 0 0 1 33.941 14.059l211.882 211.882c18.745 18.745 18.745 49.137 0 67.882L293.823 497.941c-18.745 18.745-49.137 18.745-67.882 0L14.059 286.059A48 48 0 0 1 0 252.118zM112 64c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48z\"]\n};\nvar faTags = {\n  prefix: 'fas',\n  iconName: 'tags',\n  icon: [640, 512, [], \"f02c\", \"M497.941 225.941L286.059 14.059A48 48 0 0 0 252.118 0H48C21.49 0 0 21.49 0 48v204.118a48 48 0 0 0 14.059 33.941l211.882 211.882c18.744 18.745 49.136 18.746 67.882 0l204.118-204.118c18.745-18.745 18.745-49.137 0-67.882zM112 160c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm513.941 133.823L421.823 497.941c-18.745 18.745-49.137 18.745-67.882 0l-.36-.36L527.64 323.522c16.999-16.999 26.36-39.6 26.36-63.64s-9.362-46.641-26.36-63.64L331.397 0h48.721a48 48 0 0 1 33.941 14.059l211.882 211.882c18.745 18.745 18.745 49.137 0 67.882z\"]\n};\nvar faTape = {\n  prefix: 'fas',\n  iconName: 'tape',\n  icon: [640, 512, [], \"f4db\", \"M224 192c-35.3 0-64 28.7-64 64s28.7 64 64 64 64-28.7 64-64-28.7-64-64-64zm400 224H380.6c41.5-40.7 67.4-97.3 67.4-160 0-123.7-100.3-224-224-224S0 132.3 0 256s100.3 224 224 224h400c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm-400-64c-53 0-96-43-96-96s43-96 96-96 96 43 96 96-43 96-96 96z\"]\n};\nvar faTasks = {\n  prefix: 'fas',\n  iconName: 'tasks',\n  icon: [512, 512, [], \"f0ae\", \"M139.61 35.5a12 12 0 0 0-17 0L58.93 98.81l-22.7-22.12a12 12 0 0 0-17 0L3.53 92.41a12 12 0 0 0 0 17l47.59 47.4a12.78 12.78 0 0 0 17.61 0l15.59-15.62L156.52 69a12.09 12.09 0 0 0 .09-17zm0 159.19a12 12 0 0 0-17 0l-63.68 63.72-22.7-22.1a12 12 0 0 0-17 0L3.53 252a12 12 0 0 0 0 17L51 316.5a12.77 12.77 0 0 0 17.6 0l15.7-15.69 72.2-72.22a12 12 0 0 0 .09-16.9zM64 368c-26.49 0-48.59 21.5-48.59 48S37.53 464 64 464a48 48 0 0 0 0-96zm432 16H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faTaxi = {\n  prefix: 'fas',\n  iconName: 'taxi',\n  icon: [512, 512, [], \"f1ba\", \"M462 241.64l-22-84.84c-9.6-35.2-41.6-60.8-76.8-60.8H352V64c0-17.67-14.33-32-32-32H192c-17.67 0-32 14.33-32 32v32h-11.2c-35.2 0-67.2 25.6-76.8 60.8l-22 84.84C21.41 248.04 0 273.47 0 304v48c0 23.63 12.95 44.04 32 55.12V448c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h256v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-40.88c19.05-11.09 32-31.5 32-55.12v-48c0-30.53-21.41-55.96-50-62.36zM96 352c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm20.55-112l17.2-66.36c2.23-8.16 9.59-13.64 15.06-13.64h214.4c5.47 0 12.83 5.48 14.85 12.86L395.45 240h-278.9zM416 352c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faTeeth = {\n  prefix: 'fas',\n  iconName: 'teeth',\n  icon: [640, 512, [], \"f62e\", \"M544 0H96C42.98 0 0 42.98 0 96v320c0 53.02 42.98 96 96 96h448c53.02 0 96-42.98 96-96V96c0-53.02-42.98-96-96-96zM160 368c0 26.51-21.49 48-48 48s-48-21.49-48-48v-64c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v64zm0-128c0 8.84-7.16 16-16 16H80c-8.84 0-16-7.16-16-16v-64c0-26.51 21.49-48 48-48s48 21.49 48 48v64zm144 120c0 30.93-25.07 56-56 56s-56-25.07-56-56v-56c0-8.84 7.16-16 16-16h80c8.84 0 16 7.16 16 16v56zm0-120c0 8.84-7.16 16-16 16h-80c-8.84 0-16-7.16-16-16v-88c0-30.93 25.07-56 56-56s56 25.07 56 56v88zm144 120c0 30.93-25.07 56-56 56s-56-25.07-56-56v-56c0-8.84 7.16-16 16-16h80c8.84 0 16 7.16 16 16v56zm0-120c0 8.84-7.16 16-16 16h-80c-8.84 0-16-7.16-16-16v-88c0-30.93 25.07-56 56-56s56 25.07 56 56v88zm128 128c0 26.51-21.49 48-48 48s-48-21.49-48-48v-64c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v64zm0-128c0 8.84-7.16 16-16 16h-64c-8.84 0-16-7.16-16-16v-64c0-26.51 21.49-48 48-48s48 21.49 48 48v64z\"]\n};\nvar faTeethOpen = {\n  prefix: 'fas',\n  iconName: 'teeth-open',\n  icon: [640, 512, [], \"f62f\", \"M544 0H96C42.98 0 0 42.98 0 96v64c0 35.35 28.66 64 64 64h512c35.34 0 64-28.65 64-64V96c0-53.02-42.98-96-96-96zM160 176c0 8.84-7.16 16-16 16H80c-8.84 0-16-7.16-16-16v-32c0-26.51 21.49-48 48-48s48 21.49 48 48v32zm144 0c0 8.84-7.16 16-16 16h-80c-8.84 0-16-7.16-16-16v-56c0-30.93 25.07-56 56-56s56 25.07 56 56v56zm144 0c0 8.84-7.16 16-16 16h-80c-8.84 0-16-7.16-16-16v-56c0-30.93 25.07-56 56-56s56 25.07 56 56v56zm128 0c0 8.84-7.16 16-16 16h-64c-8.84 0-16-7.16-16-16v-32c0-26.51 21.49-48 48-48s48 21.49 48 48v32zm0 144H64c-35.34 0-64 28.65-64 64v32c0 53.02 42.98 96 96 96h448c53.02 0 96-42.98 96-96v-32c0-35.35-28.66-64-64-64zm-416 80c0 26.51-21.49 48-48 48s-48-21.49-48-48v-32c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v32zm144-8c0 30.93-25.07 56-56 56s-56-25.07-56-56v-24c0-8.84 7.16-16 16-16h80c8.84 0 16 7.16 16 16v24zm144 0c0 30.93-25.07 56-56 56s-56-25.07-56-56v-24c0-8.84 7.16-16 16-16h80c8.84 0 16 7.16 16 16v24zm128 8c0 26.51-21.49 48-48 48s-48-21.49-48-48v-32c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v32z\"]\n};\nvar faTemperatureHigh = {\n  prefix: 'fas',\n  iconName: 'temperature-high',\n  icon: [512, 512, [], \"f769\", \"M416 0c-52.9 0-96 43.1-96 96s43.1 96 96 96 96-43.1 96-96-43.1-96-96-96zm0 128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm-160-16C256 50.1 205.9 0 144 0S32 50.1 32 112v166.5C12.3 303.2 0 334 0 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-34-12.3-64.9-32-89.5V112zM144 448c-44.1 0-80-35.9-80-80 0-25.5 12.2-48.9 32-63.8V112c0-26.5 21.5-48 48-48s48 21.5 48 48v192.2c19.8 14.8 32 38.3 32 63.8 0 44.1-35.9 80-80 80zm16-125.1V112c0-8.8-7.2-16-16-16s-16 7.2-16 16v210.9c-18.6 6.6-32 24.2-32 45.1 0 26.5 21.5 48 48 48s48-21.5 48-48c0-20.9-13.4-38.5-32-45.1z\"]\n};\nvar faTemperatureLow = {\n  prefix: 'fas',\n  iconName: 'temperature-low',\n  icon: [512, 512, [], \"f76b\", \"M416 0c-52.9 0-96 43.1-96 96s43.1 96 96 96 96-43.1 96-96-43.1-96-96-96zm0 128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm-160-16C256 50.1 205.9 0 144 0S32 50.1 32 112v166.5C12.3 303.2 0 334 0 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-34-12.3-64.9-32-89.5V112zM144 448c-44.1 0-80-35.9-80-80 0-25.5 12.2-48.9 32-63.8V112c0-26.5 21.5-48 48-48s48 21.5 48 48v192.2c19.8 14.8 32 38.3 32 63.8 0 44.1-35.9 80-80 80zm16-125.1V304c0-8.8-7.2-16-16-16s-16 7.2-16 16v18.9c-18.6 6.6-32 24.2-32 45.1 0 26.5 21.5 48 48 48s48-21.5 48-48c0-20.9-13.4-38.5-32-45.1z\"]\n};\nvar faTenge = {\n  prefix: 'fas',\n  iconName: 'tenge',\n  icon: [384, 512, [], \"f7d7\", \"M372 160H12c-6.6 0-12 5.4-12 12v56c0 6.6 5.4 12 12 12h140v228c0 6.6 5.4 12 12 12h56c6.6 0 12-5.4 12-12V240h140c6.6 0 12-5.4 12-12v-56c0-6.6-5.4-12-12-12zm0-128H12C5.4 32 0 37.4 0 44v56c0 6.6 5.4 12 12 12h360c6.6 0 12-5.4 12-12V44c0-6.6-5.4-12-12-12z\"]\n};\nvar faTerminal = {\n  prefix: 'fas',\n  iconName: 'terminal',\n  icon: [640, 512, [], \"f120\", \"M257.981 272.971L63.638 467.314c-9.373 9.373-24.569 9.373-33.941 0L7.029 444.647c-9.357-9.357-9.375-24.522-.04-33.901L161.011 256 6.99 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L257.981 239.03c9.373 9.372 9.373 24.568 0 33.941zM640 456v-32c0-13.255-10.745-24-24-24H312c-13.255 0-24 10.745-24 24v32c0 13.255 10.745 24 24 24h304c13.255 0 24-10.745 24-24z\"]\n};\nvar faTextHeight = {\n  prefix: 'fas',\n  iconName: 'text-height',\n  icon: [576, 512, [], \"f034\", \"M304 32H16A16 16 0 0 0 0 48v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32h56v304H80a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h160a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-40V112h56v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm256 336h-48V144h48c14.31 0 21.33-17.31 11.31-27.31l-80-80a16 16 0 0 0-22.62 0l-80 80C379.36 126 384.36 144 400 144h48v224h-48c-14.31 0-21.32 17.31-11.31 27.31l80 80a16 16 0 0 0 22.62 0l80-80C580.64 386 575.64 368 560 368z\"]\n};\nvar faTextWidth = {\n  prefix: 'fas',\n  iconName: 'text-width',\n  icon: [448, 512, [], \"f035\", \"M432 32H16A16 16 0 0 0 0 48v80a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-16h120v112h-24a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-24V112h120v16a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm-68.69 260.69C354 283.36 336 288.36 336 304v48H112v-48c0-14.31-17.31-21.32-27.31-11.31l-80 80a16 16 0 0 0 0 22.62l80 80C94 484.64 112 479.64 112 464v-48h224v48c0 14.31 17.31 21.33 27.31 11.31l80-80a16 16 0 0 0 0-22.62z\"]\n};\nvar faTh = {\n  prefix: 'fas',\n  iconName: 'th',\n  icon: [512, 512, [], \"f00a\", \"M149.333 56v80c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24V56c0-13.255 10.745-24 24-24h101.333c13.255 0 24 10.745 24 24zm181.334 240v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.256 0 24.001-10.745 24.001-24zm32-240v80c0 13.255 10.745 24 24 24H488c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24zm-32 80V56c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.256 0 24.001-10.745 24.001-24zm-205.334 56H24c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24zM0 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H24c-13.255 0-24 10.745-24 24zm386.667-56H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24zm0 160H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24zM181.333 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24z\"]\n};\nvar faThLarge = {\n  prefix: 'fas',\n  iconName: 'th-large',\n  icon: [512, 512, [], \"f009\", \"M296 32h192c13.255 0 24 10.745 24 24v160c0 13.255-10.745 24-24 24H296c-13.255 0-24-10.745-24-24V56c0-13.255 10.745-24 24-24zm-80 0H24C10.745 32 0 42.745 0 56v160c0 13.255 10.745 24 24 24h192c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24zM0 296v160c0 13.255 10.745 24 24 24h192c13.255 0 24-10.745 24-24V296c0-13.255-10.745-24-24-24H24c-13.255 0-24 10.745-24 24zm296 184h192c13.255 0 24-10.745 24-24V296c0-13.255-10.745-24-24-24H296c-13.255 0-24 10.745-24 24v160c0 13.255 10.745 24 24 24z\"]\n};\nvar faThList = {\n  prefix: 'fas',\n  iconName: 'th-list',\n  icon: [512, 512, [], \"f00b\", \"M149.333 216v80c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24v-80c0-13.255 10.745-24 24-24h101.333c13.255 0 24 10.745 24 24zM0 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H24c-13.255 0-24 10.745-24 24zM125.333 32H24C10.745 32 0 42.745 0 56v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24zm80 448H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24zm-24-424v80c0 13.255 10.745 24 24 24H488c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24zm24 264H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24z\"]\n};\nvar faTheaterMasks = {\n  prefix: 'fas',\n  iconName: 'theater-masks',\n  icon: [640, 512, [], \"f630\", \"M206.86 245.15c-35.88 10.45-59.95 41.2-57.53 74.1 11.4-12.72 28.81-23.7 49.9-30.92l7.63-43.18zM95.81 295L64.08 115.49c-.29-1.62.28-2.62.24-2.65 57.76-32.06 123.12-49.01 189.01-49.01 1.61 0 3.23.17 4.85.19 13.95-13.47 31.73-22.83 51.59-26 18.89-3.02 38.05-4.55 57.18-5.32-9.99-13.95-24.48-24.23-41.77-27C301.27 1.89 277.24 0 253.32 0 176.66 0 101.02 19.42 33.2 57.06 9.03 70.48-3.92 98.48 1.05 126.58l31.73 179.51c14.23 80.52 136.33 142.08 204.45 142.08 3.59 0 6.75-.46 10.01-.8-13.52-17.08-28.94-40.48-39.5-67.58-47.61-12.98-106.06-51.62-111.93-84.79zm97.55-137.46c-.73-4.12-2.23-7.87-4.07-11.4-8.25 8.91-20.67 15.75-35.32 18.32-14.65 2.58-28.67.4-39.48-5.17-.52 3.94-.64 7.98.09 12.1 3.84 21.7 24.58 36.19 46.34 32.37 21.75-3.82 36.28-24.52 32.44-46.22zM606.8 120.9c-88.98-49.38-191.43-67.41-291.98-51.35-27.31 4.36-49.08 26.26-54.04 54.36l-31.73 179.51c-15.39 87.05 95.28 196.27 158.31 207.35 63.03 11.09 204.47-53.79 219.86-140.84l31.73-179.51c4.97-28.11-7.98-56.11-32.15-69.52zm-273.24 96.8c3.84-21.7 24.58-36.19 46.34-32.36 21.76 3.83 36.28 24.52 32.45 46.22-.73 4.12-2.23 7.87-4.07 11.4-8.25-8.91-20.67-15.75-35.32-18.32-14.65-2.58-28.67-.4-39.48 5.17-.53-3.95-.65-7.99.08-12.11zm70.47 198.76c-55.68-9.79-93.52-59.27-89.04-112.9 20.6 25.54 56.21 46.17 99.49 53.78 43.28 7.61 83.82.37 111.93-16.6-14.18 51.94-66.71 85.51-122.38 75.72zm130.3-151.34c-8.25-8.91-20.68-15.75-35.33-18.32-14.65-2.58-28.67-.4-39.48 5.17-.52-3.94-.64-7.98.09-12.1 3.84-21.7 24.58-36.19 46.34-32.37 21.75 3.83 36.28 24.52 32.45 46.22-.73 4.13-2.23 7.88-4.07 11.4z\"]\n};\nvar faThermometer = {\n  prefix: 'fas',\n  iconName: 'thermometer',\n  icon: [512, 512, [], \"f491\", \"M476.8 20.4c-37.5-30.7-95.5-26.3-131.9 10.2l-45.7 46 50.5 50.5c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-50.4-50.5-45.1 45.4 50.3 50.4c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0L209 167.4l-45.1 45.4L214 263c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-50.1-50.2L96 281.1V382L7 471c-9.4 9.4-9.4 24.6 0 33.9 9.4 9.4 24.6 9.4 33.9 0l89-89h99.9L484 162.6c34.9-34.9 42.2-101.5-7.2-142.2z\"]\n};\nvar faThermometerEmpty = {\n  prefix: 'fas',\n  iconName: 'thermometer-empty',\n  icon: [256, 512, [], \"f2cb\", \"M192 384c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-35.346 28.654-64 64-64s64 28.654 64 64zm32-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.303 128-128 128-.299 0-.609-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.755 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM208 384c0-34.339-19.37-52.19-32-66.502V96c0-26.467-21.533-48-48-48S80 69.533 80 96v221.498c-12.732 14.428-31.825 32.1-31.999 66.08-.224 43.876 35.563 80.116 79.423 80.42L128 464c44.112 0 80-35.888 80-80z\"]\n};\nvar faThermometerFull = {\n  prefix: 'fas',\n  iconName: 'thermometer-full',\n  icon: [256, 512, [], \"f2c7\", \"M224 96c0-53.019-42.981-96-96-96S32 42.981 32 96v203.347C12.225 321.756.166 351.136.002 383.333c-.359 70.303 56.787 128.176 127.089 128.664.299.002.61.003.909.003 70.698 0 128-57.304 128-128 0-32.459-12.088-62.09-32-84.653V96zm-96 368l-.576-.002c-43.86-.304-79.647-36.544-79.423-80.42.173-33.98 19.266-51.652 31.999-66.08V96c0-26.467 21.533-48 48-48s48 21.533 48 48v221.498c12.63 14.312 32 32.164 32 66.502 0 44.112-35.888 80-80 80zm64-80c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-23.685 12.876-44.349 32-55.417V96c0-17.673 14.327-32 32-32s32 14.327 32 32v232.583c19.124 11.068 32 31.732 32 55.417z\"]\n};\nvar faThermometerHalf = {\n  prefix: 'fas',\n  iconName: 'thermometer-half',\n  icon: [256, 512, [], \"f2c9\", \"M192 384c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-23.685 12.876-44.349 32-55.417V224c0-17.673 14.327-32 32-32s32 14.327 32 32v104.583c19.124 11.068 32 31.732 32 55.417zm32-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.303 128-128 128-.299 0-.609-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.755 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM208 384c0-34.339-19.37-52.19-32-66.502V96c0-26.467-21.533-48-48-48S80 69.533 80 96v221.498c-12.732 14.428-31.825 32.1-31.999 66.08-.224 43.876 35.563 80.116 79.423 80.42L128 464c44.112 0 80-35.888 80-80z\"]\n};\nvar faThermometerQuarter = {\n  prefix: 'fas',\n  iconName: 'thermometer-quarter',\n  icon: [256, 512, [], \"f2ca\", \"M192 384c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-23.685 12.876-44.349 32-55.417V288c0-17.673 14.327-32 32-32s32 14.327 32 32v40.583c19.124 11.068 32 31.732 32 55.417zm32-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.303 128-128 128-.299 0-.609-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.755 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM208 384c0-34.339-19.37-52.19-32-66.502V96c0-26.467-21.533-48-48-48S80 69.533 80 96v221.498c-12.732 14.428-31.825 32.1-31.999 66.08-.224 43.876 35.563 80.116 79.423 80.42L128 464c44.112 0 80-35.888 80-80z\"]\n};\nvar faThermometerThreeQuarters = {\n  prefix: 'fas',\n  iconName: 'thermometer-three-quarters',\n  icon: [256, 512, [], \"f2c8\", \"M192 384c0 35.346-28.654 64-64 64-35.346 0-64-28.654-64-64 0-23.685 12.876-44.349 32-55.417V160c0-17.673 14.327-32 32-32s32 14.327 32 32v168.583c19.124 11.068 32 31.732 32 55.417zm32-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.303 128-128 128-.299 0-.609-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.755 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM208 384c0-34.339-19.37-52.19-32-66.502V96c0-26.467-21.533-48-48-48S80 69.533 80 96v221.498c-12.732 14.428-31.825 32.1-31.999 66.08-.224 43.876 35.563 80.116 79.423 80.42L128 464c44.112 0 80-35.888 80-80z\"]\n};\nvar faThumbsDown = {\n  prefix: 'fas',\n  iconName: 'thumbs-down',\n  icon: [512, 512, [], \"f165\", \"M0 56v240c0 13.255 10.745 24 24 24h80c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24H24C10.745 32 0 42.745 0 56zm40 200c0-13.255 10.745-24 24-24s24 10.745 24 24-10.745 24-24 24-24-10.745-24-24zm272 256c-20.183 0-29.485-39.293-33.931-57.795-5.206-21.666-10.589-44.07-25.393-58.902-32.469-32.524-49.503-73.967-89.117-113.111a11.98 11.98 0 0 1-3.558-8.521V59.901c0-6.541 5.243-11.878 11.783-11.998 15.831-.29 36.694-9.079 52.651-16.178C256.189 17.598 295.709.017 343.995 0h2.844c42.777 0 93.363.413 113.774 29.737 8.392 12.057 10.446 27.034 6.148 44.632 16.312 17.053 25.063 48.863 16.382 74.757 17.544 23.432 19.143 56.132 9.308 79.469l.11.11c11.893 11.949 19.523 31.259 19.439 49.197-.156 30.352-26.157 58.098-59.553 58.098H350.723C358.03 364.34 384 388.132 384 430.548 384 504 336 512 312 512z\"]\n};\nvar faThumbsUp = {\n  prefix: 'fas',\n  iconName: 'thumbs-up',\n  icon: [512, 512, [], \"f164\", \"M104 224H24c-13.255 0-24 10.745-24 24v240c0 13.255 10.745 24 24 24h80c13.255 0 24-10.745 24-24V248c0-13.255-10.745-24-24-24zM64 472c-13.255 0-24-10.745-24-24s10.745-24 24-24 24 10.745 24 24-10.745 24-24 24zM384 81.452c0 42.416-25.97 66.208-33.277 94.548h101.723c33.397 0 59.397 27.746 59.553 58.098.084 17.938-7.546 37.249-19.439 49.197l-.11.11c9.836 23.337 8.237 56.037-9.308 79.469 8.681 25.895-.069 57.704-16.382 74.757 4.298 17.598 2.244 32.575-6.148 44.632C440.202 511.587 389.616 512 346.839 512l-2.845-.001c-48.287-.017-87.806-17.598-119.56-31.725-15.957-7.099-36.821-15.887-52.651-16.178-6.54-.12-11.783-5.457-11.783-11.998v-213.77c0-3.2 1.282-6.271 3.558-8.521 39.614-39.144 56.648-80.587 89.117-113.111 14.804-14.832 20.188-37.236 25.393-58.902C282.515 39.293 291.817 0 312 0c24 0 72 8 72 81.452z\"]\n};\nvar faThumbtack = {\n  prefix: 'fas',\n  iconName: 'thumbtack',\n  icon: [384, 512, [], \"f08d\", \"M298.028 214.267L285.793 96H328c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24H56C42.745 0 32 10.745 32 24v48c0 13.255 10.745 24 24 24h42.207L85.972 214.267C37.465 236.82 0 277.261 0 328c0 13.255 10.745 24 24 24h136v104.007c0 1.242.289 2.467.845 3.578l24 48c2.941 5.882 11.364 5.893 14.311 0l24-48a8.008 8.008 0 0 0 .845-3.578V352h136c13.255 0 24-10.745 24-24-.001-51.183-37.983-91.42-85.973-113.733z\"]\n};\nvar faTicketAlt = {\n  prefix: 'fas',\n  iconName: 'ticket-alt',\n  icon: [576, 512, [], \"f3ff\", \"M128 160h320v192H128V160zm400 96c0 26.51 21.49 48 48 48v96c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48v-96c26.51 0 48-21.49 48-48s-21.49-48-48-48v-96c0-26.51 21.49-48 48-48h480c26.51 0 48 21.49 48 48v96c-26.51 0-48 21.49-48 48zm-48-104c0-13.255-10.745-24-24-24H120c-13.255 0-24 10.745-24 24v208c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V152z\"]\n};\nvar faTimes = {\n  prefix: 'fas',\n  iconName: 'times',\n  icon: [352, 512, [], \"f00d\", \"M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z\"]\n};\nvar faTimesCircle = {\n  prefix: 'fas',\n  iconName: 'times-circle',\n  icon: [512, 512, [], \"f057\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm121.6 313.1c4.7 4.7 4.7 12.3 0 17L338 377.6c-4.7 4.7-12.3 4.7-17 0L256 312l-65.1 65.6c-4.7 4.7-12.3 4.7-17 0L134.4 338c-4.7-4.7-4.7-12.3 0-17l65.6-65-65.6-65.1c-4.7-4.7-4.7-12.3 0-17l39.6-39.6c4.7-4.7 12.3-4.7 17 0l65 65.7 65.1-65.6c4.7-4.7 12.3-4.7 17 0l39.6 39.6c4.7 4.7 4.7 12.3 0 17L312 256l65.6 65.1z\"]\n};\nvar faTint = {\n  prefix: 'fas',\n  iconName: 'tint',\n  icon: [352, 512, [], \"f043\", \"M205.22 22.09c-7.94-28.78-49.44-30.12-58.44 0C100.01 179.85 0 222.72 0 333.91 0 432.35 78.72 512 176 512s176-79.65 176-178.09c0-111.75-99.79-153.34-146.78-311.82zM176 448c-61.75 0-112-50.25-112-112 0-8.84 7.16-16 16-16s16 7.16 16 16c0 44.11 35.89 80 80 80 8.84 0 16 7.16 16 16s-7.16 16-16 16z\"]\n};\nvar faTintSlash = {\n  prefix: 'fas',\n  iconName: 'tint-slash',\n  icon: [640, 512, [], \"f5c7\", \"M633.82 458.1L494.97 350.78c.52-5.57 1.03-11.16 1.03-16.87 0-111.76-99.79-153.34-146.78-311.82-7.94-28.78-49.44-30.12-58.44 0-15.52 52.34-36.87 91.96-58.49 125.68L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.36 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.41-6.97 4.16-17.02-2.82-22.45zM144 333.91C144 432.35 222.72 512 320 512c44.71 0 85.37-16.96 116.4-44.7L162.72 255.78c-11.41 23.5-18.72 48.35-18.72 78.13z\"]\n};\nvar faTired = {\n  prefix: 'fas',\n  iconName: 'tired',\n  icon: [496, 512, [], \"f5c8\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm33.8 189.7l80-48c11.6-6.9 24 7.7 15.4 18L343.6 208l33.6 40.3c8.7 10.4-3.9 24.8-15.4 18l-80-48c-7.7-4.7-7.7-15.9 0-20.6zm-163-30c-8.6-10.3 3.8-24.9 15.4-18l80 48c7.8 4.7 7.8 15.9 0 20.6l-80 48c-11.5 6.8-24-7.6-15.4-18l33.6-40.3-33.6-40.3zM248 288c51.9 0 115.3 43.8 123.2 106.7 1.7 13.6-8 24.6-17.7 20.4-25.9-11.1-64.4-17.4-105.5-17.4s-79.6 6.3-105.5 17.4c-9.8 4.2-19.4-7-17.7-20.4C132.7 331.8 196.1 288 248 288z\"]\n};\nvar faToggleOff = {\n  prefix: 'fas',\n  iconName: 'toggle-off',\n  icon: [576, 512, [], \"f204\", \"M384 64H192C85.961 64 0 149.961 0 256s85.961 192 192 192h192c106.039 0 192-85.961 192-192S490.039 64 384 64zM64 256c0-70.741 57.249-128 128-128 70.741 0 128 57.249 128 128 0 70.741-57.249 128-128 128-70.741 0-128-57.249-128-128zm320 128h-48.905c65.217-72.858 65.236-183.12 0-256H384c70.741 0 128 57.249 128 128 0 70.74-57.249 128-128 128z\"]\n};\nvar faToggleOn = {\n  prefix: 'fas',\n  iconName: 'toggle-on',\n  icon: [576, 512, [], \"f205\", \"M384 64H192C86 64 0 150 0 256s86 192 192 192h192c106 0 192-86 192-192S490 64 384 64zm0 320c-70.8 0-128-57.3-128-128 0-70.8 57.3-128 128-128 70.8 0 128 57.3 128 128 0 70.8-57.3 128-128 128z\"]\n};\nvar faToilet = {\n  prefix: 'fas',\n  iconName: 'toilet',\n  icon: [384, 512, [], \"f7d8\", \"M368 48c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16H16C7.2 0 0 7.2 0 16v16c0 8.8 7.2 16 16 16h16v156.7C11.8 214.8 0 226.9 0 240c0 67.2 34.6 126.2 86.8 160.5l-21.4 70.2C59.1 491.2 74.5 512 96 512h192c21.5 0 36.9-20.8 30.6-41.3l-21.4-70.2C349.4 366.2 384 307.2 384 240c0-13.1-11.8-25.2-32-35.3V48h16zM80 72c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H88c-4.4 0-8-3.6-8-8V72zm112 200c-77.1 0-139.6-14.3-139.6-32s62.5-32 139.6-32 139.6 14.3 139.6 32-62.5 32-139.6 32z\"]\n};\nvar faToiletPaper = {\n  prefix: 'fas',\n  iconName: 'toilet-paper',\n  icon: [576, 512, [], \"f71e\", \"M128 0C74.98 0 32 85.96 32 192v172.07c0 41.12-9.8 62.77-31.17 126.87C-2.62 501.3 5.09 512 16.01 512h280.92c13.77 0 26-8.81 30.36-21.88 12.83-38.48 24.71-72.4 24.71-126.05V192c0-83.6 23.67-153.52 60.44-192H128zM96 224c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zm64 0c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zm64 0c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zm64 0c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zM480 0c-53.02 0-96 85.96-96 192s42.98 192 96 192 96-85.96 96-192S533.02 0 480 0zm0 256c-17.67 0-32-28.65-32-64s14.33-64 32-64 32 28.65 32 64-14.33 64-32 64z\"]\n};\nvar faToiletPaperSlash = {\n  prefix: 'fas',\n  iconName: 'toilet-paper-slash',\n  icon: [640, 512, [], \"e072\", \"M64,192V364.13c0,41.12-9.75,62.75-31.12,126.87A16,16,0,0,0,48,512H328.86a31.87,31.87,0,0,0,30.38-21.87c9.31-27.83,18-53.35,22.18-85.55l-316-244.25C64.53,170.66,64,181.19,64,192ZM633.82,458.09l-102-78.81C575.28,360.91,608,284.32,608,192,608,86,565,0,512,0s-96,86-96,192c0,42,7,80.4,18.43,112L384,265V192c0-83.62,23.63-153.5,60.5-192H160c-23.33,0-44.63,16.83-61.26,44.53L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.45A16,16,0,0,0,6.18,53.91L594.54,508.63A16,16,0,0,0,617,505.81l19.64-25.26A16,16,0,0,0,633.82,458.09ZM512,256c-17.63,0-32-28.62-32-64s14.37-64,32-64,32,28.63,32,64S529.62,256,512,256Z\"]\n};\nvar faToolbox = {\n  prefix: 'fas',\n  iconName: 'toolbox',\n  icon: [512, 512, [], \"f552\", \"M502.63 214.63l-45.25-45.25c-6-6-14.14-9.37-22.63-9.37H384V80c0-26.51-21.49-48-48-48H176c-26.51 0-48 21.49-48 48v80H77.25c-8.49 0-16.62 3.37-22.63 9.37L9.37 214.63c-6 6-9.37 14.14-9.37 22.63V320h128v-16c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v16h128v-16c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v16h128v-82.75c0-8.48-3.37-16.62-9.37-22.62zM320 160H192V96h128v64zm64 208c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-16H192v16c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-16H0v96c0 17.67 14.33 32 32 32h448c17.67 0 32-14.33 32-32v-96H384v16z\"]\n};\nvar faTools = {\n  prefix: 'fas',\n  iconName: 'tools',\n  icon: [512, 512, [], \"f7d9\", \"M501.1 395.7L384 278.6c-23.1-23.1-57.6-27.6-85.4-13.9L192 158.1V96L64 0 0 64l96 128h62.1l106.6 106.6c-13.6 27.8-9.2 62.3 13.9 85.4l117.1 117.1c14.6 14.6 38.2 14.6 52.7 0l52.7-52.7c14.5-14.6 14.5-38.2 0-52.7zM331.7 225c28.3 0 54.9 11 74.9 31l19.4 19.4c15.8-6.9 30.8-16.5 43.8-29.5 37.1-37.1 49.7-89.3 37.9-136.7-2.2-9-13.5-12.1-20.1-5.5l-74.4 74.4-67.9-11.3L334 98.9l74.4-74.4c6.6-6.6 3.4-17.9-5.7-20.2-47.4-11.7-99.6.9-136.6 37.9-28.5 28.5-41.9 66.1-41.2 103.6l82.1 82.1c8.1-1.9 16.5-2.9 24.7-2.9zm-103.9 82l-56.7-56.7L18.7 402.8c-25 25-25 65.5 0 90.5s65.5 25 90.5 0l123.6-123.6c-7.6-19.9-9.9-41.6-5-62.7zM64 472c-13.2 0-24-10.8-24-24 0-13.3 10.7-24 24-24s24 10.7 24 24c0 13.2-10.7 24-24 24z\"]\n};\nvar faTooth = {\n  prefix: 'fas',\n  iconName: 'tooth',\n  icon: [448, 512, [], \"f5c9\", \"M443.98 96.25c-11.01-45.22-47.11-82.06-92.01-93.72-32.19-8.36-63 5.1-89.14 24.33-3.25 2.39-6.96 3.73-10.5 5.48l28.32 18.21c7.42 4.77 9.58 14.67 4.8 22.11-4.46 6.95-14.27 9.86-22.11 4.8L162.83 12.84c-20.7-10.85-43.38-16.4-66.81-10.31-44.9 11.67-81 48.5-92.01 93.72-10.13 41.62-.42 80.81 21.5 110.43 23.36 31.57 32.68 68.66 36.29 107.35 4.4 47.16 10.33 94.16 20.94 140.32l7.8 33.95c3.19 13.87 15.49 23.7 29.67 23.7 13.97 0 26.15-9.55 29.54-23.16l34.47-138.42c4.56-18.32 20.96-31.16 39.76-31.16s35.2 12.85 39.76 31.16l34.47 138.42c3.39 13.61 15.57 23.16 29.54 23.16 14.18 0 26.48-9.83 29.67-23.7l7.8-33.95c10.61-46.15 16.53-93.16 20.94-140.32 3.61-38.7 12.93-75.78 36.29-107.35 21.95-29.61 31.66-68.8 21.53-110.43z\"]\n};\nvar faTorah = {\n  prefix: 'fas',\n  iconName: 'torah',\n  icon: [640, 512, [], \"f6a0\", \"M320.05 366.48l17.72-29.64h-35.46zm99.21-166H382.4l18.46 30.82zM48 0C21.49 0 0 14.33 0 32v448c0 17.67 21.49 32 48 32s48-14.33 48-32V32C96 14.33 74.51 0 48 0zm172.74 311.5h36.85l-18.46-30.82zm161.71 0h36.86l-18.45-30.8zM128 464h384V48H128zm66.77-278.13a21.22 21.22 0 0 1 18.48-10.71h59.45l29.13-48.71a21.13 21.13 0 0 1 18.22-10.37A20.76 20.76 0 0 1 338 126.29l29.25 48.86h59.52a21.12 21.12 0 0 1 18.1 32L415.63 256 445 305a20.69 20.69 0 0 1 .24 21.12 21.25 21.25 0 0 1-18.48 10.72h-59.47l-29.13 48.7a21.13 21.13 0 0 1-18.16 10.4 20.79 20.79 0 0 1-18-10.22l-29.25-48.88h-59.5a21.11 21.11 0 0 1-18.1-32L224.36 256 195 207a20.7 20.7 0 0 1-.23-21.13zM592 0c-26.51 0-48 14.33-48 32v448c0 17.67 21.49 32 48 32s48-14.33 48-32V32c0-17.67-21.49-32-48-32zM320 145.53l-17.78 29.62h35.46zm-62.45 55h-36.81l18.44 30.8zm29.58 111h65.79L386.09 256l-33.23-55.52h-65.79L253.9 256z\"]\n};\nvar faToriiGate = {\n  prefix: 'fas',\n  iconName: 'torii-gate',\n  icon: [512, 512, [], \"f6a1\", \"M376.45 32h-240.9A303.17 303.17 0 0 1 0 0v96c0 17.67 14.33 32 32 32h32v64H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h48v240c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V256h256v240c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V256h48c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16h-48v-64h32c17.67 0 32-14.33 32-32V0a303.17 303.17 0 0 1-135.55 32zM128 128h96v64h-96v-64zm256 64h-96v-64h96v64z\"]\n};\nvar faTractor = {\n  prefix: 'fas',\n  iconName: 'tractor',\n  icon: [640, 512, [], \"f722\", \"M528 336c-48.6 0-88 39.4-88 88s39.4 88 88 88 88-39.4 88-88-39.4-88-88-88zm0 112c-13.23 0-24-10.77-24-24s10.77-24 24-24 24 10.77 24 24-10.77 24-24 24zm80-288h-64v-40.2c0-14.12 4.7-27.76 13.15-38.84 4.42-5.8 3.55-14.06-1.32-19.49L534.2 37.3c-6.66-7.45-18.32-6.92-24.7.78C490.58 60.9 480 89.81 480 119.8V160H377.67L321.58 29.14A47.914 47.914 0 0 0 277.45 0H144c-26.47 0-48 21.53-48 48v146.52c-8.63-6.73-20.96-6.46-28.89 1.47L36 227.1c-8.59 8.59-8.59 22.52 0 31.11l5.06 5.06c-4.99 9.26-8.96 18.82-11.91 28.72H22c-12.15 0-22 9.85-22 22v44c0 12.15 9.85 22 22 22h7.14c2.96 9.91 6.92 19.46 11.91 28.73l-5.06 5.06c-8.59 8.59-8.59 22.52 0 31.11L67.1 476c8.59 8.59 22.52 8.59 31.11 0l5.06-5.06c9.26 4.99 18.82 8.96 28.72 11.91V490c0 12.15 9.85 22 22 22h44c12.15 0 22-9.85 22-22v-7.14c9.9-2.95 19.46-6.92 28.72-11.91l5.06 5.06c8.59 8.59 22.52 8.59 31.11 0l31.11-31.11c8.59-8.59 8.59-22.52 0-31.11l-5.06-5.06c4.99-9.26 8.96-18.82 11.91-28.72H330c12.15 0 22-9.85 22-22v-6h80.54c21.91-28.99 56.32-48 95.46-48 18.64 0 36.07 4.61 51.8 12.2l50.82-50.82c6-6 9.37-14.14 9.37-22.63V192c.01-17.67-14.32-32-31.99-32zM176 416c-44.18 0-80-35.82-80-80s35.82-80 80-80 80 35.82 80 80-35.82 80-80 80zm22-256h-38V64h106.89l41.15 96H198z\"]\n};\nvar faTrademark = {\n  prefix: 'fas',\n  iconName: 'trademark',\n  icon: [640, 512, [], \"f25c\", \"M260.6 96H12c-6.6 0-12 5.4-12 12v43.1c0 6.6 5.4 12 12 12h85.1V404c0 6.6 5.4 12 12 12h54.3c6.6 0 12-5.4 12-12V163.1h85.1c6.6 0 12-5.4 12-12V108c.1-6.6-5.3-12-11.9-12zM640 403l-24-296c-.5-6.2-5.7-11-12-11h-65.4c-5.1 0-9.7 3.3-11.3 8.1l-43.8 127.1c-7.2 20.6-16.1 52.8-16.1 52.8h-.9s-8.9-32.2-16.1-52.8l-43.8-127.1c-1.7-4.8-6.2-8.1-11.3-8.1h-65.4c-6.2 0-11.4 4.8-12 11l-24.4 296c-.6 7 4.9 13 12 13H360c6.3 0 11.5-4.9 12-11.2l9.1-132.9c1.8-24.2 0-53.7 0-53.7h.9s10.7 33.6 17.9 53.7l30.7 84.7c1.7 4.7 6.2 7.9 11.3 7.9h50.3c5.1 0 9.6-3.2 11.3-7.9l30.7-84.7c7.2-20.1 17.9-53.7 17.9-53.7h.9s-1.8 29.5 0 53.7l9.1 132.9c.4 6.3 5.7 11.2 12 11.2H628c7 0 12.5-6 12-13z\"]\n};\nvar faTrafficLight = {\n  prefix: 'fas',\n  iconName: 'traffic-light',\n  icon: [384, 512, [], \"f637\", \"M384 192h-64v-37.88c37.2-13.22 64-48.38 64-90.12h-64V32c0-17.67-14.33-32-32-32H96C78.33 0 64 14.33 64 32v32H0c0 41.74 26.8 76.9 64 90.12V192H0c0 41.74 26.8 76.9 64 90.12V320H0c0 42.84 28.25 78.69 66.99 91.05C79.42 468.72 130.6 512 192 512s112.58-43.28 125.01-100.95C355.75 398.69 384 362.84 384 320h-64v-37.88c37.2-13.22 64-48.38 64-90.12zM192 416c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm0-128c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm0-128c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48z\"]\n};\nvar faTrailer = {\n  prefix: 'fas',\n  iconName: 'trailer',\n  icon: [640, 512, [], \"e041\", \"M624,320H544V80a16,16,0,0,0-16-16H16A16,16,0,0,0,0,80V368a16,16,0,0,0,16,16H65.61c7.83-54.21,54-96,110.39-96s102.56,41.79,110.39,96H624a16,16,0,0,0,16-16V336A16,16,0,0,0,624,320ZM96,243.68a176.29,176.29,0,0,0-32,20.71V136a8,8,0,0,1,8-8H88a8,8,0,0,1,8,8Zm96-18.54c-5.31-.49-10.57-1.14-16-1.14s-10.69.65-16,1.14V136a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8Zm96,39.25a176.29,176.29,0,0,0-32-20.71V136a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8ZM384,320H352V136a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8Zm96,0H448V136a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8Zm-304,0a80,80,0,1,0,80,80A80,80,0,0,0,176,320Zm0,112a32,32,0,1,1,32-32A32,32,0,0,1,176,432Z\"]\n};\nvar faTrain = {\n  prefix: 'fas',\n  iconName: 'train',\n  icon: [448, 512, [], \"f238\", \"M448 96v256c0 51.815-61.624 96-130.022 96l62.98 49.721C386.905 502.417 383.562 512 376 512H72c-7.578 0-10.892-9.594-4.957-14.279L130.022 448C61.82 448 0 403.954 0 352V96C0 42.981 64 0 128 0h192c65 0 128 42.981 128 96zm-48 136V120c0-13.255-10.745-24-24-24H72c-13.255 0-24 10.745-24 24v112c0 13.255 10.745 24 24 24h304c13.255 0 24-10.745 24-24zm-176 64c-30.928 0-56 25.072-56 56s25.072 56 56 56 56-25.072 56-56-25.072-56-56-56z\"]\n};\nvar faTram = {\n  prefix: 'fas',\n  iconName: 'tram',\n  icon: [512, 512, [], \"f7da\", \"M288 64c17.7 0 32-14.3 32-32S305.7 0 288 0s-32 14.3-32 32 14.3 32 32 32zm223.5-12.1c-2.3-8.6-11-13.6-19.6-11.3l-480 128c-8.5 2.3-13.6 11-11.3 19.6C2.5 195.3 8.9 200 16 200c1.4 0 2.8-.2 4.1-.5L240 140.8V224H64c-17.7 0-32 14.3-32 32v224c0 17.7 14.3 32 32 32h384c17.7 0 32-14.3 32-32V256c0-17.7-14.3-32-32-32H272v-91.7l228.1-60.8c8.6-2.3 13.6-11.1 11.4-19.6zM176 384H80v-96h96v96zm160-96h96v96h-96v-96zm-32 0v96h-96v-96h96zM192 96c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32z\"]\n};\nvar faTransgender = {\n  prefix: 'fas',\n  iconName: 'transgender',\n  icon: [384, 512, [], \"f224\", \"M372 0h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-80.7 80.7C198.5 104.1 172.2 96 144 96 64.5 96 0 160.5 0 240c0 68.5 47.9 125.9 112 140.4V408H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v28c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-28h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-27.6c64.1-14.6 112-71.9 112-140.4 0-28.2-8.1-54.5-22.1-76.7l80.7-80.7 16.9 16.9c7.6 7.6 20.5 2.2 20.5-8.5V12c0-6.6-5.4-12-12-12zM144 320c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\"]\n};\nvar faTransgenderAlt = {\n  prefix: 'fas',\n  iconName: 'transgender-alt',\n  icon: [480, 512, [], \"f225\", \"M468 0h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-80.7 80.7C294.5 104.1 268.2 96 240 96c-28.2 0-54.5 8.1-76.7 22.1l-16.5-16.5 19.8-19.8c4.7-4.7 4.7-12.3 0-17l-28.3-28.3c-4.7-4.7-12.3-4.7-17 0l-19.8 19.8-19-19 16.9-16.9C107.1 12.9 101.7 0 91 0H12C5.4 0 0 5.4 0 12v79c0 10.7 12.9 16 20.5 8.5l16.9-16.9 19 19-19.8 19.8c-4.7 4.7-4.7 12.3 0 17l28.3 28.3c4.7 4.7 12.3 4.7 17 0l19.8-19.8 16.5 16.5C104.1 185.5 96 211.8 96 240c0 68.5 47.9 125.9 112 140.4V408h-36c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v28c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-28h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-27.6c64.1-14.6 112-71.9 112-140.4 0-28.2-8.1-54.5-22.1-76.7l80.7-80.7 16.9 16.9c7.6 7.6 20.5 2.2 20.5-8.5V12c0-6.6-5.4-12-12-12zM240 320c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\"]\n};\nvar faTrash = {\n  prefix: 'fas',\n  iconName: 'trash',\n  icon: [448, 512, [], \"f1f8\", \"M432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM53.2 467a48 48 0 0 0 47.9 45h245.8a48 48 0 0 0 47.9-45L416 128H32z\"]\n};\nvar faTrashAlt = {\n  prefix: 'fas',\n  iconName: 'trash-alt',\n  icon: [448, 512, [], \"f2ed\", \"M32 464a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48V128H32zm272-256a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zm-96 0a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zm-96 0a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zM432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faTrashRestore = {\n  prefix: 'fas',\n  iconName: 'trash-restore',\n  icon: [448, 512, [], \"f829\", \"M53.2 467a48 48 0 0 0 47.9 45h245.8a48 48 0 0 0 47.9-45L416 128H32zm70.11-175.8l89.38-94.26a15.41 15.41 0 0 1 22.62 0l89.38 94.26c10.08 10.62 2.94 28.8-11.32 28.8H256v112a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16V320h-57.37c-14.26 0-21.4-18.18-11.32-28.8zM432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faTrashRestoreAlt = {\n  prefix: 'fas',\n  iconName: 'trash-restore-alt',\n  icon: [448, 512, [], \"f82a\", \"M32 464a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48V128H32zm91.31-172.8l89.38-94.26a15.41 15.41 0 0 1 22.62 0l89.38 94.26c10.08 10.62 2.94 28.8-11.32 28.8H256v112a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16V320h-57.37c-14.26 0-21.4-18.18-11.32-28.8zM432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faTree = {\n  prefix: 'fas',\n  iconName: 'tree',\n  icon: [384, 512, [], \"f1bb\", \"M378.31 378.49L298.42 288h30.63c9.01 0 16.98-5 20.78-13.06 3.8-8.04 2.55-17.26-3.28-24.05L268.42 160h28.89c9.1 0 17.3-5.35 20.86-13.61 3.52-8.13 1.86-17.59-4.24-24.08L203.66 4.83c-6.03-6.45-17.28-6.45-23.32 0L70.06 122.31c-6.1 6.49-7.75 15.95-4.24 24.08C69.38 154.65 77.59 160 86.69 160h28.89l-78.14 90.91c-5.81 6.78-7.06 15.99-3.27 24.04C37.97 283 45.93 288 54.95 288h30.63L5.69 378.49c-6 6.79-7.36 16.09-3.56 24.26 3.75 8.05 12 13.25 21.01 13.25H160v24.45l-30.29 48.4c-5.32 10.64 2.42 23.16 14.31 23.16h95.96c11.89 0 19.63-12.52 14.31-23.16L224 440.45V416h136.86c9.01 0 17.26-5.2 21.01-13.25 3.8-8.17 2.44-17.47-3.56-24.26z\"]\n};\nvar faTrophy = {\n  prefix: 'fas',\n  iconName: 'trophy',\n  icon: [576, 512, [], \"f091\", \"M552 64H448V24c0-13.3-10.7-24-24-24H152c-13.3 0-24 10.7-24 24v40H24C10.7 64 0 74.7 0 88v56c0 35.7 22.5 72.4 61.9 100.7 31.5 22.7 69.8 37.1 110 41.7C203.3 338.5 240 360 240 360v72h-48c-35.3 0-64 20.7-64 56v12c0 6.6 5.4 12 12 12h296c6.6 0 12-5.4 12-12v-12c0-35.3-28.7-56-64-56h-48v-72s36.7-21.5 68.1-73.6c40.3-4.6 78.6-19 110-41.7 39.3-28.3 61.9-65 61.9-100.7V88c0-13.3-10.7-24-24-24zM99.3 192.8C74.9 175.2 64 155.6 64 144v-16h64.2c1 32.6 5.8 61.2 12.8 86.2-15.1-5.2-29.2-12.4-41.7-21.4zM512 144c0 16.1-17.7 36.1-35.3 48.8-12.5 9-26.7 16.2-41.8 21.4 7-25 11.8-53.6 12.8-86.2H512v16z\"]\n};\nvar faTruck = {\n  prefix: 'fas',\n  iconName: 'truck',\n  icon: [640, 512, [], \"f0d1\", \"M624 352h-16V243.9c0-12.7-5.1-24.9-14.1-33.9L494 110.1c-9-9-21.2-14.1-33.9-14.1H416V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h16c0 53 43 96 96 96s96-43 96-96h128c0 53 43 96 96 96s96-43 96-96h48c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM160 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm320 0c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm80-208H416V144h44.1l99.9 99.9V256z\"]\n};\nvar faTruckLoading = {\n  prefix: 'fas',\n  iconName: 'truck-loading',\n  icon: [640, 512, [], \"f4de\", \"M50.2 375.6c2.3 8.5 11.1 13.6 19.6 11.3l216.4-58c8.5-2.3 13.6-11.1 11.3-19.6l-49.7-185.5c-2.3-8.5-11.1-13.6-19.6-11.3L151 133.3l24.8 92.7-61.8 16.5-24.8-92.7-77.3 20.7C3.4 172.8-1.7 181.6.6 190.1l49.6 185.5zM384 0c-17.7 0-32 14.3-32 32v323.6L5.9 450c-4.3 1.2-6.8 5.6-5.6 9.8l12.6 46.3c1.2 4.3 5.6 6.8 9.8 5.6l393.7-107.4C418.8 464.1 467.6 512 528 512c61.9 0 112-50.1 112-112V0H384zm144 448c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48z\"]\n};\nvar faTruckMonster = {\n  prefix: 'fas',\n  iconName: 'truck-monster',\n  icon: [640, 512, [], \"f63b\", \"M624 224h-16v-64c0-17.67-14.33-32-32-32h-73.6L419.22 24.02A64.025 64.025 0 0 0 369.24 0H256c-17.67 0-32 14.33-32 32v96H48c-8.84 0-16 7.16-16 16v80H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h16.72c29.21-38.65 75.1-64 127.28-64s98.07 25.35 127.28 64h65.45c29.21-38.65 75.1-64 127.28-64s98.07 25.35 127.28 64H624c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-336-96V64h81.24l51.2 64H288zm304 224h-5.2c-2.2-7.33-5.07-14.28-8.65-20.89l3.67-3.67c6.25-6.25 6.25-16.38 0-22.63l-22.63-22.63c-6.25-6.25-16.38-6.25-22.63 0l-3.67 3.67A110.85 110.85 0 0 0 512 277.2V272c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v5.2c-7.33 2.2-14.28 5.07-20.89 8.65l-3.67-3.67c-6.25-6.25-16.38-6.25-22.63 0l-22.63 22.63c-6.25 6.25-6.25 16.38 0 22.63l3.67 3.67A110.85 110.85 0 0 0 373.2 352H368c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h5.2c2.2 7.33 5.07 14.28 8.65 20.89l-3.67 3.67c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l3.67-3.67c6.61 3.57 13.57 6.45 20.9 8.65v5.2c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-5.2c7.33-2.2 14.28-5.07 20.9-8.65l3.67 3.67c6.25 6.25 16.38 6.25 22.63 0l22.63-22.63c6.25-6.25 6.25-16.38 0-22.63l-3.67-3.67a110.85 110.85 0 0 0 8.65-20.89h5.2c8.84 0 16-7.16 16-16v-32c-.02-8.84-7.18-16-16.02-16zm-112 80c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm-208-80h-5.2c-2.2-7.33-5.07-14.28-8.65-20.89l3.67-3.67c6.25-6.25 6.25-16.38 0-22.63l-22.63-22.63c-6.25-6.25-16.38-6.25-22.63 0l-3.67 3.67A110.85 110.85 0 0 0 192 277.2V272c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v5.2c-7.33 2.2-14.28 5.07-20.89 8.65l-3.67-3.67c-6.25-6.25-16.38-6.25-22.63 0L58.18 304.8c-6.25 6.25-6.25 16.38 0 22.63l3.67 3.67a110.85 110.85 0 0 0-8.65 20.89H48c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h5.2c2.2 7.33 5.07 14.28 8.65 20.89l-3.67 3.67c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l3.67-3.67c6.61 3.57 13.57 6.45 20.9 8.65v5.2c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-5.2c7.33-2.2 14.28-5.07 20.9-8.65l3.67 3.67c6.25 6.25 16.38 6.25 22.63 0l22.63-22.63c6.25-6.25 6.25-16.38 0-22.63l-3.67-3.67a110.85 110.85 0 0 0 8.65-20.89h5.2c8.84 0 16-7.16 16-16v-32C288 359.16 280.84 352 272 352zm-112 80c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48z\"]\n};\nvar faTruckMoving = {\n  prefix: 'fas',\n  iconName: 'truck-moving',\n  icon: [640, 512, [], \"f4df\", \"M621.3 237.3l-58.5-58.5c-12-12-28.3-18.7-45.3-18.7H480V64c0-17.7-14.3-32-32-32H32C14.3 32 0 46.3 0 64v336c0 44.2 35.8 80 80 80 26.3 0 49.4-12.9 64-32.4 14.6 19.6 37.7 32.4 64 32.4 44.2 0 80-35.8 80-80 0-5.5-.6-10.8-1.6-16h163.2c-1.1 5.2-1.6 10.5-1.6 16 0 44.2 35.8 80 80 80s80-35.8 80-80c0-5.5-.6-10.8-1.6-16H624c8.8 0 16-7.2 16-16v-85.5c0-17-6.7-33.2-18.7-45.2zM80 432c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32zm128 0c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32zm272-224h37.5c4.3 0 8.3 1.7 11.3 4.7l43.3 43.3H480v-48zm48 224c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32z\"]\n};\nvar faTruckPickup = {\n  prefix: 'fas',\n  iconName: 'truck-pickup',\n  icon: [640, 512, [], \"f63c\", \"M624 288h-16v-64c0-17.67-14.33-32-32-32h-48L419.22 56.02A64.025 64.025 0 0 0 369.24 32H256c-17.67 0-32 14.33-32 32v128H64c-17.67 0-32 14.33-32 32v64H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h49.61c-.76 5.27-1.61 10.52-1.61 16 0 61.86 50.14 112 112 112s112-50.14 112-112c0-5.48-.85-10.73-1.61-16h67.23c-.76 5.27-1.61 10.52-1.61 16 0 61.86 50.14 112 112 112s112-50.14 112-112c0-5.48-.85-10.73-1.61-16H624c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM288 96h81.24l76.8 96H288V96zM176 416c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48zm288 0c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48z\"]\n};\nvar faTshirt = {\n  prefix: 'fas',\n  iconName: 'tshirt',\n  icon: [640, 512, [], \"f553\", \"M631.2 96.5L436.5 0C416.4 27.8 371.9 47.2 320 47.2S223.6 27.8 203.5 0L8.8 96.5c-7.9 4-11.1 13.6-7.2 21.5l57.2 114.5c4 7.9 13.6 11.1 21.5 7.2l56.6-27.7c10.6-5.2 23 2.5 23 14.4V480c0 17.7 14.3 32 32 32h256c17.7 0 32-14.3 32-32V226.3c0-11.8 12.4-19.6 23-14.4l56.6 27.7c7.9 4 17.5.8 21.5-7.2L638.3 118c4-7.9.8-17.6-7.1-21.5z\"]\n};\nvar faTty = {\n  prefix: 'fas',\n  iconName: 'tty',\n  icon: [512, 512, [], \"f1e4\", \"M5.37 103.822c138.532-138.532 362.936-138.326 501.262 0 6.078 6.078 7.074 15.496 2.583 22.681l-43.214 69.138a18.332 18.332 0 0 1-22.356 7.305l-86.422-34.569a18.335 18.335 0 0 1-11.434-18.846L351.741 90c-62.145-22.454-130.636-21.986-191.483 0l5.953 59.532a18.331 18.331 0 0 1-11.434 18.846l-86.423 34.568a18.334 18.334 0 0 1-22.356-7.305L2.787 126.502a18.333 18.333 0 0 1 2.583-22.68zM96 308v-40c0-6.627-5.373-12-12-12H44c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm-336 96v-40c0-6.627-5.373-12-12-12H92c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zM96 500v-40c0-6.627-5.373-12-12-12H44c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm288 0v-40c0-6.627-5.373-12-12-12H140c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h232c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12z\"]\n};\nvar faTv = {\n  prefix: 'fas',\n  iconName: 'tv',\n  icon: [640, 512, [], \"f26c\", \"M592 0H48A48 48 0 0 0 0 48v320a48 48 0 0 0 48 48h240v32H112a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H352v-32h240a48 48 0 0 0 48-48V48a48 48 0 0 0-48-48zm-16 352H64V64h512z\"]\n};\nvar faUmbrella = {\n  prefix: 'fas',\n  iconName: 'umbrella',\n  icon: [576, 512, [], \"f0e9\", \"M575.7 280.8C547.1 144.5 437.3 62.6 320 49.9V32c0-17.7-14.3-32-32-32s-32 14.3-32 32v17.9C138.3 62.6 29.5 144.5.3 280.8c-2.2 10.1 8.5 21.3 18.7 11.4 52-55 107.7-52.4 158.6 37 5.3 9.5 14.9 8.6 19.7 0 20.2-35.4 44.9-73.2 90.7-73.2 58.5 0 88.2 68.8 90.7 73.2 4.8 8.6 14.4 9.5 19.7 0 51-89.5 107.1-91.4 158.6-37 10.3 10 20.9-1.3 18.7-11.4zM256 301.7V432c0 8.8-7.2 16-16 16-7.8 0-13.2-5.3-15.1-10.7-5.9-16.7-24.1-25.4-40.8-19.5-16.7 5.9-25.4 24.2-19.5 40.8 11.2 31.9 41.6 53.3 75.4 53.3 44.1 0 80-35.9 80-80V301.6c-9.1-7.9-19.8-13.6-32-13.6-12.3.1-22.4 4.8-32 13.7z\"]\n};\nvar faUmbrellaBeach = {\n  prefix: 'fas',\n  iconName: 'umbrella-beach',\n  icon: [640, 512, [], \"f5ca\", \"M115.38 136.9l102.11 37.18c35.19-81.54 86.21-144.29 139-173.7-95.88-4.89-188.78 36.96-248.53 111.8-6.69 8.4-2.66 21.05 7.42 24.72zm132.25 48.16l238.48 86.83c35.76-121.38 18.7-231.66-42.63-253.98-7.4-2.7-15.13-4-23.09-4-58.02.01-128.27 69.17-172.76 171.15zM521.48 60.5c6.22 16.3 10.83 34.6 13.2 55.19 5.74 49.89-1.42 108.23-18.95 166.98l102.62 37.36c10.09 3.67 21.31-3.43 21.57-14.17 2.32-95.69-41.91-187.44-118.44-245.36zM560 447.98H321.06L386 269.5l-60.14-21.9-72.9 200.37H16c-8.84 0-16 7.16-16 16.01v32.01C0 504.83 7.16 512 16 512h544c8.84 0 16-7.17 16-16.01v-32.01c0-8.84-7.16-16-16-16z\"]\n};\nvar faUnderline = {\n  prefix: 'fas',\n  iconName: 'underline',\n  icon: [448, 512, [], \"f0cd\", \"M32 64h32v160c0 88.22 71.78 160 160 160s160-71.78 160-160V64h32a16 16 0 0 0 16-16V16a16 16 0 0 0-16-16H272a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32v160a80 80 0 0 1-160 0V64h32a16 16 0 0 0 16-16V16a16 16 0 0 0-16-16H32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm400 384H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faUndo = {\n  prefix: 'fas',\n  iconName: 'undo',\n  icon: [512, 512, [], \"f0e2\", \"M212.333 224.333H12c-6.627 0-12-5.373-12-12V12C0 5.373 5.373 0 12 0h48c6.627 0 12 5.373 12 12v78.112C117.773 39.279 184.26 7.47 258.175 8.007c136.906.994 246.448 111.623 246.157 248.532C504.041 393.258 393.12 504 256.333 504c-64.089 0-122.496-24.313-166.51-64.215-5.099-4.622-5.334-12.554-.467-17.42l33.967-33.967c4.474-4.474 11.662-4.717 16.401-.525C170.76 415.336 211.58 432 256.333 432c97.268 0 176-78.716 176-176 0-97.267-78.716-176-176-176-58.496 0-110.28 28.476-142.274 72.333h98.274c6.627 0 12 5.373 12 12v48c0 6.627-5.373 12-12 12z\"]\n};\nvar faUndoAlt = {\n  prefix: 'fas',\n  iconName: 'undo-alt',\n  icon: [512, 512, [], \"f2ea\", \"M255.545 8c-66.269.119-126.438 26.233-170.86 68.685L48.971 40.971C33.851 25.851 8 36.559 8 57.941V192c0 13.255 10.745 24 24 24h134.059c21.382 0 32.09-25.851 16.971-40.971l-41.75-41.75c30.864-28.899 70.801-44.907 113.23-45.273 92.398-.798 170.283 73.977 169.484 169.442C423.236 348.009 349.816 424 256 424c-41.127 0-79.997-14.678-110.63-41.556-4.743-4.161-11.906-3.908-16.368.553L89.34 422.659c-4.872 4.872-4.631 12.815.482 17.433C133.798 479.813 192.074 504 256 504c136.966 0 247.999-111.033 248-247.998C504.001 119.193 392.354 7.755 255.545 8z\"]\n};\nvar faUniversalAccess = {\n  prefix: 'fas',\n  iconName: 'universal-access',\n  icon: [512, 512, [], \"f29a\", \"M256 48c114.953 0 208 93.029 208 208 0 114.953-93.029 208-208 208-114.953 0-208-93.029-208-208 0-114.953 93.029-208 208-208m0-40C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 56C149.961 64 64 149.961 64 256s85.961 192 192 192 192-85.961 192-192S362.039 64 256 64zm0 44c19.882 0 36 16.118 36 36s-16.118 36-36 36-36-16.118-36-36 16.118-36 36-36zm117.741 98.023c-28.712 6.779-55.511 12.748-82.14 15.807.851 101.023 12.306 123.052 25.037 155.621 3.617 9.26-.957 19.698-10.217 23.315-9.261 3.617-19.699-.957-23.316-10.217-8.705-22.308-17.086-40.636-22.261-78.549h-9.686c-5.167 37.851-13.534 56.208-22.262 78.549-3.615 9.255-14.05 13.836-23.315 10.217-9.26-3.617-13.834-14.056-10.217-23.315 12.713-32.541 24.185-54.541 25.037-155.621-26.629-3.058-53.428-9.027-82.141-15.807-8.6-2.031-13.926-10.648-11.895-19.249s10.647-13.926 19.249-11.895c96.686 22.829 124.283 22.783 220.775 0 8.599-2.03 17.218 3.294 19.249 11.895 2.029 8.601-3.297 17.219-11.897 19.249z\"]\n};\nvar faUniversity = {\n  prefix: 'fas',\n  iconName: 'university',\n  icon: [512, 512, [], \"f19c\", \"M496 128v16a8 8 0 0 1-8 8h-24v12c0 6.627-5.373 12-12 12H60c-6.627 0-12-5.373-12-12v-12H24a8 8 0 0 1-8-8v-16a8 8 0 0 1 4.941-7.392l232-88a7.996 7.996 0 0 1 6.118 0l232 88A8 8 0 0 1 496 128zm-24 304H40c-13.255 0-24 10.745-24 24v16a8 8 0 0 0 8 8h464a8 8 0 0 0 8-8v-16c0-13.255-10.745-24-24-24zM96 192v192H60c-6.627 0-12 5.373-12 12v20h416v-20c0-6.627-5.373-12-12-12h-36V192h-64v192h-64V192h-64v192h-64V192H96z\"]\n};\nvar faUnlink = {\n  prefix: 'fas',\n  iconName: 'unlink',\n  icon: [512, 512, [], \"f127\", \"M304.083 405.907c4.686 4.686 4.686 12.284 0 16.971l-44.674 44.674c-59.263 59.262-155.693 59.266-214.961 0-59.264-59.265-59.264-155.696 0-214.96l44.675-44.675c4.686-4.686 12.284-4.686 16.971 0l39.598 39.598c4.686 4.686 4.686 12.284 0 16.971l-44.675 44.674c-28.072 28.073-28.072 73.75 0 101.823 28.072 28.072 73.75 28.073 101.824 0l44.674-44.674c4.686-4.686 12.284-4.686 16.971 0l39.597 39.598zm-56.568-260.216c4.686 4.686 12.284 4.686 16.971 0l44.674-44.674c28.072-28.075 73.75-28.073 101.824 0 28.072 28.073 28.072 73.75 0 101.823l-44.675 44.674c-4.686 4.686-4.686 12.284 0 16.971l39.598 39.598c4.686 4.686 12.284 4.686 16.971 0l44.675-44.675c59.265-59.265 59.265-155.695 0-214.96-59.266-59.264-155.695-59.264-214.961 0l-44.674 44.674c-4.686 4.686-4.686 12.284 0 16.971l39.597 39.598zm234.828 359.28l22.627-22.627c9.373-9.373 9.373-24.569 0-33.941L63.598 7.029c-9.373-9.373-24.569-9.373-33.941 0L7.029 29.657c-9.373 9.373-9.373 24.569 0 33.941l441.373 441.373c9.373 9.372 24.569 9.372 33.941 0z\"]\n};\nvar faUnlock = {\n  prefix: 'fas',\n  iconName: 'unlock',\n  icon: [448, 512, [], \"f09c\", \"M400 256H152V152.9c0-39.6 31.7-72.5 71.3-72.9 40-.4 72.7 32.1 72.7 72v16c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24v-16C376 68 307.5-.3 223.5 0 139.5.3 72 69.5 72 153.5V256H48c-26.5 0-48 21.5-48 48v160c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48z\"]\n};\nvar faUnlockAlt = {\n  prefix: 'fas',\n  iconName: 'unlock-alt',\n  icon: [448, 512, [], \"f13e\", \"M400 256H152V152.9c0-39.6 31.7-72.5 71.3-72.9 40-.4 72.7 32.1 72.7 72v16c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24v-16C376 68 307.5-.3 223.5 0 139.5.3 72 69.5 72 153.5V256H48c-26.5 0-48 21.5-48 48v160c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48zM264 408c0 22.1-17.9 40-40 40s-40-17.9-40-40v-48c0-22.1 17.9-40 40-40s40 17.9 40 40v48z\"]\n};\nvar faUpload = {\n  prefix: 'fas',\n  iconName: 'upload',\n  icon: [512, 512, [], \"f093\", \"M296 384h-80c-13.3 0-24-10.7-24-24V192h-87.7c-17.8 0-26.7-21.5-14.1-34.1L242.3 5.7c7.5-7.5 19.8-7.5 27.3 0l152.2 152.2c12.6 12.6 3.7 34.1-14.1 34.1H320v168c0 13.3-10.7 24-24 24zm216-8v112c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V376c0-13.3 10.7-24 24-24h136v8c0 30.9 25.1 56 56 56h80c30.9 0 56-25.1 56-56v-8h136c13.3 0 24 10.7 24 24zm-124 88c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20zm64 0c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20z\"]\n};\nvar faUser = {\n  prefix: 'fas',\n  iconName: 'user',\n  icon: [448, 512, [], \"f007\", \"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z\"]\n};\nvar faUserAlt = {\n  prefix: 'fas',\n  iconName: 'user-alt',\n  icon: [512, 512, [], \"f406\", \"M256 288c79.5 0 144-64.5 144-144S335.5 0 256 0 112 64.5 112 144s64.5 144 144 144zm128 32h-55.1c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16H128C57.3 320 0 377.3 0 448v16c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48v-16c0-70.7-57.3-128-128-128z\"]\n};\nvar faUserAltSlash = {\n  prefix: 'fas',\n  iconName: 'user-alt-slash',\n  icon: [640, 512, [], \"f4fa\", \"M633.8 458.1L389.6 269.3C433.8 244.7 464 198.1 464 144 464 64.5 399.5 0 320 0c-67.1 0-123 46.1-139 108.2L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4l588.4 454.7c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.4-6.8 4.1-16.9-2.9-22.3zM198.4 320C124.2 320 64 380.2 64 454.4v9.6c0 26.5 21.5 48 48 48h382.2L245.8 320h-47.4z\"]\n};\nvar faUserAstronaut = {\n  prefix: 'fas',\n  iconName: 'user-astronaut',\n  icon: [448, 512, [], \"f4fb\", \"M64 224h13.5c24.7 56.5 80.9 96 146.5 96s121.8-39.5 146.5-96H384c8.8 0 16-7.2 16-16v-96c0-8.8-7.2-16-16-16h-13.5C345.8 39.5 289.6 0 224 0S102.2 39.5 77.5 96H64c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16zm40-88c0-22.1 21.5-40 48-40h144c26.5 0 48 17.9 48 40v24c0 53-43 96-96 96h-48c-53 0-96-43-96-96v-24zm72 72l12-36 36-12-36-12-12-36-12 36-36 12 36 12 12 36zm151.6 113.4C297.7 340.7 262.2 352 224 352s-73.7-11.3-103.6-30.6C52.9 328.5 0 385 0 454.4v9.6c0 26.5 21.5 48 48 48h80v-64c0-17.7 14.3-32 32-32h128c17.7 0 32 14.3 32 32v64h80c26.5 0 48-21.5 48-48v-9.6c0-69.4-52.9-125.9-120.4-133zM272 448c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm-96 0c-8.8 0-16 7.2-16 16v48h32v-48c0-8.8-7.2-16-16-16z\"]\n};\nvar faUserCheck = {\n  prefix: 'fas',\n  iconName: 'user-check',\n  icon: [640, 512, [], \"f4fc\", \"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4zm323-128.4l-27.8-28.1c-4.6-4.7-12.1-4.7-16.8-.1l-104.8 104-45.5-45.8c-4.6-4.7-12.1-4.7-16.8-.1l-28.1 27.9c-4.7 4.6-4.7 12.1-.1 16.8l81.7 82.3c4.6 4.7 12.1 4.7 16.8.1l141.3-140.2c4.6-4.7 4.7-12.2.1-16.8z\"]\n};\nvar faUserCircle = {\n  prefix: 'fas',\n  iconName: 'user-circle',\n  icon: [496, 512, [], \"f2bd\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 96c48.6 0 88 39.4 88 88s-39.4 88-88 88-88-39.4-88-88 39.4-88 88-88zm0 344c-58.7 0-111.3-26.6-146.5-68.2 18.8-35.4 55.6-59.8 98.5-59.8 2.4 0 4.8.4 7.1 1.1 13 4.2 26.6 6.9 40.9 6.9 14.3 0 28-2.7 40.9-6.9 2.3-.7 4.7-1.1 7.1-1.1 42.9 0 79.7 24.4 98.5 59.8C359.3 421.4 306.7 448 248 448z\"]\n};\nvar faUserClock = {\n  prefix: 'fas',\n  iconName: 'user-clock',\n  icon: [640, 512, [], \"f4fd\", \"M496 224c-79.6 0-144 64.4-144 144s64.4 144 144 144 144-64.4 144-144-64.4-144-144-144zm64 150.3c0 5.3-4.4 9.7-9.7 9.7h-60.6c-5.3 0-9.7-4.4-9.7-9.7v-76.6c0-5.3 4.4-9.7 9.7-9.7h12.6c5.3 0 9.7 4.4 9.7 9.7V352h38.3c5.3 0 9.7 4.4 9.7 9.7v12.6zM320 368c0-27.8 6.7-54.1 18.2-77.5-8-1.5-16.2-2.5-24.6-2.5h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h347.1c-45.3-31.9-75.1-84.5-75.1-144zm-96-112c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128z\"]\n};\nvar faUserCog = {\n  prefix: 'fas',\n  iconName: 'user-cog',\n  icon: [640, 512, [], \"f4fe\", \"M610.5 373.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 400.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5zM224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm201.2 226.5c-2.3-1.2-4.6-2.6-6.8-3.9l-7.9 4.6c-6 3.4-12.8 5.3-19.6 5.3-10.9 0-21.4-4.6-28.9-12.6-18.3-19.8-32.3-43.9-40.2-69.6-5.5-17.7 1.9-36.4 17.9-45.7l7.9-4.6c-.1-2.6-.1-5.2 0-7.8l-7.9-4.6c-16-9.2-23.4-28-17.9-45.7.9-2.9 2.2-5.8 3.2-8.7-3.8-.3-7.5-1.2-11.4-1.2h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c10.1 0 19.5-3.2 27.2-8.5-1.2-3.8-2-7.7-2-11.8v-9.2z\"]\n};\nvar faUserEdit = {\n  prefix: 'fas',\n  iconName: 'user-edit',\n  icon: [640, 512, [], \"f4ff\", \"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h274.9c-2.4-6.8-3.4-14-2.6-21.3l6.8-60.9 1.2-11.1 7.9-7.9 77.3-77.3c-24.5-27.7-60-45.5-99.9-45.5zm45.3 145.3l-6.8 61c-1.1 10.2 7.5 18.8 17.6 17.6l60.9-6.8 137.9-137.9-71.7-71.7-137.9 137.8zM633 268.9L595.1 231c-9.3-9.3-24.5-9.3-33.8 0l-37.8 37.8-4.1 4.1 71.8 71.7 41.8-41.8c9.3-9.4 9.3-24.5 0-33.9z\"]\n};\nvar faUserFriends = {\n  prefix: 'fas',\n  iconName: 'user-friends',\n  icon: [640, 512, [], \"f500\", \"M192 256c61.9 0 112-50.1 112-112S253.9 32 192 32 80 82.1 80 144s50.1 112 112 112zm76.8 32h-8.3c-20.8 10-43.9 16-68.5 16s-47.6-6-68.5-16h-8.3C51.6 288 0 339.6 0 403.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-28.8c0-63.6-51.6-115.2-115.2-115.2zM480 256c53 0 96-43 96-96s-43-96-96-96-96 43-96 96 43 96 96 96zm48 32h-3.8c-13.9 4.8-28.6 8-44.2 8s-30.3-3.2-44.2-8H432c-20.4 0-39.2 5.9-55.7 15.4 24.4 26.3 39.7 61.2 39.7 99.8v38.4c0 2.2-.5 4.3-.6 6.4H592c26.5 0 48-21.5 48-48 0-61.9-50.1-112-112-112z\"]\n};\nvar faUserGraduate = {\n  prefix: 'fas',\n  iconName: 'user-graduate',\n  icon: [448, 512, [], \"f501\", \"M319.4 320.6L224 416l-95.4-95.4C57.1 323.7 0 382.2 0 454.4v9.6c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-9.6c0-72.2-57.1-130.7-128.6-133.8zM13.6 79.8l6.4 1.5v58.4c-7 4.2-12 11.5-12 20.3 0 8.4 4.6 15.4 11.1 19.7L3.5 242c-1.7 6.9 2.1 14 7.6 14h41.8c5.5 0 9.3-7.1 7.6-14l-15.6-62.3C51.4 175.4 56 168.4 56 160c0-8.8-5-16.1-12-20.3V87.1l66 15.9c-8.6 17.2-14 36.4-14 57 0 70.7 57.3 128 128 128s128-57.3 128-128c0-20.6-5.3-39.8-14-57l96.3-23.2c18.2-4.4 18.2-27.1 0-31.5l-190.4-46c-13-3.1-26.7-3.1-39.7 0L13.6 48.2c-18.1 4.4-18.1 27.2 0 31.6z\"]\n};\nvar faUserInjured = {\n  prefix: 'fas',\n  iconName: 'user-injured',\n  icon: [448, 512, [], \"f728\", \"M277.37 11.98C261.08 4.47 243.11 0 224 0c-53.69 0-99.5 33.13-118.51 80h81.19l90.69-68.02zM342.51 80c-7.9-19.47-20.67-36.2-36.49-49.52L239.99 80h102.52zM224 256c70.69 0 128-57.31 128-128 0-5.48-.95-10.7-1.61-16H97.61c-.67 5.3-1.61 10.52-1.61 16 0 70.69 57.31 128 128 128zM80 299.7V512h128.26l-98.45-221.52A132.835 132.835 0 0 0 80 299.7zM0 464c0 26.51 21.49 48 48 48V320.24C18.88 344.89 0 381.26 0 422.4V464zm256-48h-55.38l42.67 96H256c26.47 0 48-21.53 48-48s-21.53-48-48-48zm57.6-128h-16.71c-22.24 10.18-46.88 16-72.89 16s-50.65-5.82-72.89-16h-7.37l42.67 96H256c44.11 0 80 35.89 80 80 0 18.08-6.26 34.59-16.41 48H400c26.51 0 48-21.49 48-48v-41.6c0-74.23-60.17-134.4-134.4-134.4z\"]\n};\nvar faUserLock = {\n  prefix: 'fas',\n  iconName: 'user-lock',\n  icon: [640, 512, [], \"f502\", \"M224 256A128 128 0 1 0 96 128a128 128 0 0 0 128 128zm96 64a63.08 63.08 0 0 1 8.1-30.5c-4.8-.5-9.5-1.5-14.5-1.5h-16.7a174.08 174.08 0 0 1-145.8 0h-16.7A134.43 134.43 0 0 0 0 422.4V464a48 48 0 0 0 48 48h280.9a63.54 63.54 0 0 1-8.9-32zm288-32h-32v-80a80 80 0 0 0-160 0v80h-32a32 32 0 0 0-32 32v160a32 32 0 0 0 32 32h224a32 32 0 0 0 32-32V320a32 32 0 0 0-32-32zM496 432a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm32-144h-64v-80a32 32 0 0 1 64 0z\"]\n};\nvar faUserMd = {\n  prefix: 'fas',\n  iconName: 'user-md',\n  icon: [448, 512, [], \"f0f0\", \"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zM104 424c0 13.3 10.7 24 24 24s24-10.7 24-24-10.7-24-24-24-24 10.7-24 24zm216-135.4v49c36.5 7.4 64 39.8 64 78.4v41.7c0 7.6-5.4 14.2-12.9 15.7l-32.2 6.4c-4.3.9-8.5-1.9-9.4-6.3l-3.1-15.7c-.9-4.3 1.9-8.6 6.3-9.4l19.3-3.9V416c0-62.8-96-65.1-96 1.9v26.7l19.3 3.9c4.3.9 7.1 5.1 6.3 9.4l-3.1 15.7c-.9 4.3-5.1 7.1-9.4 6.3l-31.2-4.2c-7.9-1.1-13.8-7.8-13.8-15.9V416c0-38.6 27.5-70.9 64-78.4v-45.2c-2.2.7-4.4 1.1-6.6 1.9-18 6.3-37.3 9.8-57.4 9.8s-39.4-3.5-57.4-9.8c-7.4-2.6-14.9-4.2-22.6-5.2v81.6c23.1 6.9 40 28.1 40 53.4 0 30.9-25.1 56-56 56s-56-25.1-56-56c0-25.3 16.9-46.5 40-53.4v-80.4C48.5 301 0 355.8 0 422.4v44.8C0 491.9 20.1 512 44.8 512h358.4c24.7 0 44.8-20.1 44.8-44.8v-44.8c0-72-56.8-130.3-128-133.8z\"]\n};\nvar faUserMinus = {\n  prefix: 'fas',\n  iconName: 'user-minus',\n  icon: [640, 512, [], \"f503\", \"M624 208H432c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h192c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm-400 48c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z\"]\n};\nvar faUserNinja = {\n  prefix: 'fas',\n  iconName: 'user-ninja',\n  icon: [448, 512, [], \"f504\", \"M325.4 289.2L224 390.6 122.6 289.2C54 295.3 0 352.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-70.2-54-127.1-122.6-133.2zM32 192c27.3 0 51.8-11.5 69.2-29.7 15.1 53.9 64 93.7 122.8 93.7 70.7 0 128-57.3 128-128S294.7 0 224 0c-50.4 0-93.6 29.4-114.5 71.8C92.1 47.8 64 32 32 32c0 33.4 17.1 62.8 43.1 80-26 17.2-43.1 46.6-43.1 80zm144-96h96c17.7 0 32 14.3 32 32H144c0-17.7 14.3-32 32-32z\"]\n};\nvar faUserNurse = {\n  prefix: 'fas',\n  iconName: 'user-nurse',\n  icon: [448, 512, [], \"f82f\", \"M319.41,320,224,415.39,128.59,320C57.1,323.1,0,381.6,0,453.79A58.21,58.21,0,0,0,58.21,512H389.79A58.21,58.21,0,0,0,448,453.79C448,381.6,390.9,323.1,319.41,320ZM224,304A128,128,0,0,0,352,176V65.82a32,32,0,0,0-20.76-30L246.47,4.07a64,64,0,0,0-44.94,0L116.76,35.86A32,32,0,0,0,96,65.82V176A128,128,0,0,0,224,304ZM184,71.67a5,5,0,0,1,5-5h21.67V45a5,5,0,0,1,5-5h16.66a5,5,0,0,1,5,5V66.67H259a5,5,0,0,1,5,5V88.33a5,5,0,0,1-5,5H237.33V115a5,5,0,0,1-5,5H215.67a5,5,0,0,1-5-5V93.33H189a5,5,0,0,1-5-5ZM144,160H304v16a80,80,0,0,1-160,0Z\"]\n};\nvar faUserPlus = {\n  prefix: 'fas',\n  iconName: 'user-plus',\n  icon: [640, 512, [], \"f234\", \"M624 208h-64v-64c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v64h-64c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h64v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-64h64c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm-400 48c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z\"]\n};\nvar faUserSecret = {\n  prefix: 'fas',\n  iconName: 'user-secret',\n  icon: [448, 512, [], \"f21b\", \"M383.9 308.3l23.9-62.6c4-10.5-3.7-21.7-15-21.7h-58.5c11-18.9 17.8-40.6 17.8-64v-.3c39.2-7.8 64-19.1 64-31.7 0-13.3-27.3-25.1-70.1-33-9.2-32.8-27-65.8-40.6-82.8-9.5-11.9-25.9-15.6-39.5-8.8l-27.6 13.8c-9 4.5-19.6 4.5-28.6 0L182.1 3.4c-13.6-6.8-30-3.1-39.5 8.8-13.5 17-31.4 50-40.6 82.8-42.7 7.9-70 19.7-70 33 0 12.6 24.8 23.9 64 31.7v.3c0 23.4 6.8 45.1 17.8 64H56.3c-11.5 0-19.2 11.7-14.7 22.3l25.8 60.2C27.3 329.8 0 372.7 0 422.4v44.8C0 491.9 20.1 512 44.8 512h358.4c24.7 0 44.8-20.1 44.8-44.8v-44.8c0-48.4-25.8-90.4-64.1-114.1zM176 480l-41.6-192 49.6 32 24 40-32 120zm96 0l-32-120 24-40 49.6-32L272 480zm41.7-298.5c-3.9 11.9-7 24.6-16.5 33.4-10.1 9.3-48 22.4-64-25-2.8-8.4-15.4-8.4-18.3 0-17 50.2-56 32.4-64 25-9.5-8.8-12.7-21.5-16.5-33.4-.8-2.5-6.3-5.7-6.3-5.8v-10.8c28.3 3.6 61 5.8 96 5.8s67.7-2.1 96-5.8v10.8c-.1.1-5.6 3.2-6.4 5.8z\"]\n};\nvar faUserShield = {\n  prefix: 'fas',\n  iconName: 'user-shield',\n  icon: [640, 512, [], \"f505\", \"M622.3 271.1l-115.2-45c-4.1-1.6-12.6-3.7-22.2 0l-115.2 45c-10.7 4.2-17.7 14-17.7 24.9 0 111.6 68.7 188.8 132.9 213.9 9.6 3.7 18 1.6 22.2 0C558.4 489.9 640 420.5 640 296c0-10.9-7-20.7-17.7-24.9zM496 462.4V273.3l95.5 37.3c-5.6 87.1-60.9 135.4-95.5 151.8zM224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm96 40c0-2.5.8-4.8 1.1-7.2-2.5-.1-4.9-.8-7.5-.8h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c6.8 0 13.3-1.5 19.2-4-54-42.9-99.2-116.7-99.2-212z\"]\n};\nvar faUserSlash = {\n  prefix: 'fas',\n  iconName: 'user-slash',\n  icon: [640, 512, [], \"f506\", \"M633.8 458.1L362.3 248.3C412.1 230.7 448 183.8 448 128 448 57.3 390.7 0 320 0c-67.1 0-121.5 51.8-126.9 117.4L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4l588.4 454.7c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.4-6.8 4.1-16.9-2.9-22.3zM96 422.4V464c0 26.5 21.5 48 48 48h350.2L207.4 290.3C144.2 301.3 96 356 96 422.4z\"]\n};\nvar faUserTag = {\n  prefix: 'fas',\n  iconName: 'user-tag',\n  icon: [640, 512, [], \"f507\", \"M630.6 364.9l-90.3-90.2c-12-12-28.3-18.7-45.3-18.7h-79.3c-17.7 0-32 14.3-32 32v79.2c0 17 6.7 33.2 18.7 45.2l90.3 90.2c12.5 12.5 32.8 12.5 45.3 0l92.5-92.5c12.6-12.5 12.6-32.7.1-45.2zm-182.8-21c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24c0 13.2-10.7 24-24 24zm-223.8-88c70.7 0 128-57.3 128-128C352 57.3 294.7 0 224 0S96 57.3 96 128c0 70.6 57.3 127.9 128 127.9zm127.8 111.2V294c-12.2-3.6-24.9-6.2-38.2-6.2h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 287.9 0 348.1 0 422.3v41.6c0 26.5 21.5 48 48 48h352c15.5 0 29.1-7.5 37.9-18.9l-58-58c-18.1-18.1-28.1-42.2-28.1-67.9z\"]\n};\nvar faUserTie = {\n  prefix: 'fas',\n  iconName: 'user-tie',\n  icon: [448, 512, [], \"f508\", \"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm95.8 32.6L272 480l-32-136 32-56h-96l32 56-32 136-47.8-191.4C56.9 292 0 350.3 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-72.1-56.9-130.4-128.2-133.8z\"]\n};\nvar faUserTimes = {\n  prefix: 'fas',\n  iconName: 'user-times',\n  icon: [640, 512, [], \"f235\", \"M589.6 240l45.6-45.6c6.3-6.3 6.3-16.5 0-22.8l-22.8-22.8c-6.3-6.3-16.5-6.3-22.8 0L544 194.4l-45.6-45.6c-6.3-6.3-16.5-6.3-22.8 0l-22.8 22.8c-6.3 6.3-6.3 16.5 0 22.8l45.6 45.6-45.6 45.6c-6.3 6.3-6.3 16.5 0 22.8l22.8 22.8c6.3 6.3 16.5 6.3 22.8 0l45.6-45.6 45.6 45.6c6.3 6.3 16.5 6.3 22.8 0l22.8-22.8c6.3-6.3 6.3-16.5 0-22.8L589.6 240zM224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z\"]\n};\nvar faUsers = {\n  prefix: 'fas',\n  iconName: 'users',\n  icon: [640, 512, [], \"f0c0\", \"M96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm448 0c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm32 32h-64c-17.6 0-33.5 7.1-45.1 18.6 40.3 22.1 68.9 62 75.1 109.4h66c17.7 0 32-14.3 32-32v-32c0-35.3-28.7-64-64-64zm-256 0c61.9 0 112-50.1 112-112S381.9 32 320 32 208 82.1 208 144s50.1 112 112 112zm76.8 32h-8.3c-20.8 10-43.9 16-68.5 16s-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-28.8c0-63.6-51.6-115.2-115.2-115.2zm-223.7-13.4C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z\"]\n};\nvar faUsersCog = {\n  prefix: 'fas',\n  iconName: 'users-cog',\n  icon: [640, 512, [], \"f509\", \"M610.5 341.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 368.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5zM96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm224 32c1.9 0 3.7-.5 5.6-.6 8.3-21.7 20.5-42.1 36.3-59.2 7.4-8 17.9-12.6 28.9-12.6 6.9 0 13.7 1.8 19.6 5.3l7.9 4.6c.8-.5 1.6-.9 2.4-1.4 7-14.6 11.2-30.8 11.2-48 0-61.9-50.1-112-112-112S208 82.1 208 144c0 61.9 50.1 112 112 112zm105.2 194.5c-2.3-1.2-4.6-2.6-6.8-3.9-8.2 4.8-15.3 9.8-27.5 9.8-10.9 0-21.4-4.6-28.9-12.6-18.3-19.8-32.3-43.9-40.2-69.6-10.7-34.5 24.9-49.7 25.8-50.3-.1-2.6-.1-5.2 0-7.8l-7.9-4.6c-3.8-2.2-7-5-9.8-8.1-3.3.2-6.5.6-9.8.6-24.6 0-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h255.4c-3.7-6-6.2-12.8-6.2-20.3v-9.2zM173.1 274.6C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z\"]\n};\nvar faUsersSlash = {\n  prefix: 'fas',\n  iconName: 'users-slash',\n  icon: [640, 512, [], \"e073\", \"M132.65,212.32,36.21,137.78A63.4,63.4,0,0,0,32,160a63.84,63.84,0,0,0,100.65,52.32Zm40.44,62.28A63.79,63.79,0,0,0,128,256H64A64.06,64.06,0,0,0,0,320v32a32,32,0,0,0,32,32H97.91A146.62,146.62,0,0,1,173.09,274.6ZM544,224a64,64,0,1,0-64-64A64.06,64.06,0,0,0,544,224ZM500.56,355.11a114.24,114.24,0,0,0-84.47-65.28L361,247.23c41.46-16.3,71-55.92,71-103.23A111.93,111.93,0,0,0,320,32c-57.14,0-103.69,42.83-110.6,98.08L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.46A16,16,0,0,0,6.18,53.91L594.53,508.63A16,16,0,0,0,617,505.82l19.64-25.27a16,16,0,0,0-2.81-22.45ZM128,403.21V432a48,48,0,0,0,48,48H464a47.45,47.45,0,0,0,12.57-1.87L232,289.13C173.74,294.83,128,343.42,128,403.21ZM576,256H512a63.79,63.79,0,0,0-45.09,18.6A146.29,146.29,0,0,1,542,384h66a32,32,0,0,0,32-32V320A64.06,64.06,0,0,0,576,256Z\"]\n};\nvar faUtensilSpoon = {\n  prefix: 'fas',\n  iconName: 'utensil-spoon',\n  icon: [512, 512, [], \"f2e5\", \"M480.1 31.9c-55-55.1-164.9-34.5-227.8 28.5-49.3 49.3-55.1 110-28.8 160.4L9 413.2c-11.6 10.5-12.1 28.5-1 39.5L59.3 504c11 11 29.1 10.5 39.5-1.1l192.4-214.4c50.4 26.3 111.1 20.5 160.4-28.8 63-62.9 83.6-172.8 28.5-227.8z\"]\n};\nvar faUtensils = {\n  prefix: 'fas',\n  iconName: 'utensils',\n  icon: [416, 512, [], \"f2e7\", \"M207.9 15.2c.8 4.7 16.1 94.5 16.1 128.8 0 52.3-27.8 89.6-68.9 104.6L168 486.7c.7 13.7-10.2 25.3-24 25.3H80c-13.7 0-24.7-11.5-24-25.3l12.9-238.1C27.7 233.6 0 196.2 0 144 0 109.6 15.3 19.9 16.1 15.2 19.3-5.1 61.4-5.4 64 16.3v141.2c1.3 3.4 15.1 3.2 16 0 1.4-25.3 7.9-139.2 8-141.8 3.3-20.8 44.7-20.8 47.9 0 .2 2.7 6.6 116.5 8 141.8.9 3.2 14.8 3.4 16 0V16.3c2.6-21.6 44.8-21.4 48-1.1zm119.2 285.7l-15 185.1c-1.2 14 9.9 26 23.9 26h56c13.3 0 24-10.7 24-24V24c0-13.2-10.7-24-24-24-82.5 0-221.4 178.5-64.9 300.9z\"]\n};\nvar faVectorSquare = {\n  prefix: 'fas',\n  iconName: 'vector-square',\n  icon: [512, 512, [], \"f5cb\", \"M512 128V32c0-17.67-14.33-32-32-32h-96c-17.67 0-32 14.33-32 32H160c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v96c0 17.67 14.33 32 32 32v192c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32h192c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32V160c17.67 0 32-14.33 32-32zm-96-64h32v32h-32V64zM64 64h32v32H64V64zm32 384H64v-32h32v32zm352 0h-32v-32h32v32zm-32-96h-32c-17.67 0-32 14.33-32 32v32H160v-32c0-17.67-14.33-32-32-32H96V160h32c17.67 0 32-14.33 32-32V96h192v32c0 17.67 14.33 32 32 32h32v192z\"]\n};\nvar faVenus = {\n  prefix: 'fas',\n  iconName: 'venus',\n  icon: [288, 512, [], \"f221\", \"M288 176c0-79.5-64.5-144-144-144S0 96.5 0 176c0 68.5 47.9 125.9 112 140.4V368H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v36c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-36h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-51.6c64.1-14.5 112-71.9 112-140.4zm-224 0c0-44.1 35.9-80 80-80s80 35.9 80 80-35.9 80-80 80-80-35.9-80-80z\"]\n};\nvar faVenusDouble = {\n  prefix: 'fas',\n  iconName: 'venus-double',\n  icon: [512, 512, [], \"f226\", \"M288 176c0-79.5-64.5-144-144-144S0 96.5 0 176c0 68.5 47.9 125.9 112 140.4V368H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v36c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-36h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-51.6c64.1-14.5 112-71.9 112-140.4zm-224 0c0-44.1 35.9-80 80-80s80 35.9 80 80-35.9 80-80 80-80-35.9-80-80zm336 140.4V368h36c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-36v36c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-36h-36c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h36v-51.6c-21.2-4.8-40.6-14.3-57.2-27.3 14-16.7 25-36 32.1-57.1 14.5 14.8 34.7 24 57.1 24 44.1 0 80-35.9 80-80s-35.9-80-80-80c-22.3 0-42.6 9.2-57.1 24-7.1-21.1-18-40.4-32.1-57.1C303.4 43.6 334.3 32 368 32c79.5 0 144 64.5 144 144 0 68.5-47.9 125.9-112 140.4z\"]\n};\nvar faVenusMars = {\n  prefix: 'fas',\n  iconName: 'venus-mars',\n  icon: [576, 512, [], \"f228\", \"M564 0h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-48.7 48.7C422.5 72.1 396.2 64 368 64c-33.7 0-64.6 11.6-89.2 30.9 14 16.7 25 36 32.1 57.1 14.5-14.8 34.7-24 57.1-24 44.1 0 80 35.9 80 80s-35.9 80-80 80c-22.3 0-42.6-9.2-57.1-24-7.1 21.1-18 40.4-32.1 57.1 24.5 19.4 55.5 30.9 89.2 30.9 79.5 0 144-64.5 144-144 0-28.2-8.1-54.5-22.1-76.7l48.7-48.7 16.9 16.9c2.4 2.4 5.4 3.5 8.4 3.5 6.2 0 12.1-4.8 12.1-12V12c0-6.6-5.4-12-12-12zM144 64C64.5 64 0 128.5 0 208c0 68.5 47.9 125.9 112 140.4V400H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v36c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-36h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-51.6c64.1-14.6 112-71.9 112-140.4 0-79.5-64.5-144-144-144zm0 224c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\"]\n};\nvar faVest = {\n  prefix: 'fas',\n  iconName: 'vest',\n  icon: [448, 512, [], \"e085\", \"M437.252,239.877,384,160V32A32,32,0,0,0,352,0H320a24.021,24.021,0,0,0-13.312,4.031l-25,16.672a103.794,103.794,0,0,1-115.376,0l-25-16.672A24.021,24.021,0,0,0,128,0H96A32,32,0,0,0,64,32V160L10.748,239.877A64,64,0,0,0,0,275.377V480a32,32,0,0,0,32,32H192V288a31.987,31.987,0,0,1,1.643-10.119L207.135,237.4,150.188,66.564A151.518,151.518,0,0,0,224,86.234a151.55,151.55,0,0,0,73.812-19.672L224,288V512H416a32,32,0,0,0,32-32V275.377A64,64,0,0,0,437.252,239.877ZM131.312,371.312l-48,48a16,16,0,0,1-22.624-22.624l48-48a16,16,0,0,1,22.624,22.624Zm256,48a15.992,15.992,0,0,1-22.624,0l-48-48a16,16,0,0,1,22.624-22.624l48,48A15.993,15.993,0,0,1,387.312,419.312Z\"]\n};\nvar faVestPatches = {\n  prefix: 'fas',\n  iconName: 'vest-patches',\n  icon: [448, 512, [], \"e086\", \"M437.252,239.877,384,160V32A32,32,0,0,0,352,0H320a23.982,23.982,0,0,0-13.312,4.031l-25,16.672a103.794,103.794,0,0,1-115.376,0l-25-16.672A23.982,23.982,0,0,0,128,0H96A32,32,0,0,0,64,32V160L10.748,239.877A64,64,0,0,0,0,275.377V480a32,32,0,0,0,32,32H192V288a31.987,31.987,0,0,1,1.643-10.119L207.135,237.4,150.188,66.561A151.579,151.579,0,0,0,224,86.234a151.565,151.565,0,0,0,73.811-19.668L224,288V512H416a32,32,0,0,0,32-32V275.377A64,64,0,0,0,437.252,239.877ZM63.5,272.484a12.01,12.01,0,0,1,17-16.968l15.5,15.5,15.5-15.5a12.01,12.01,0,0,1,17,16.968L112.984,288,128.5,303.516a12.01,12.01,0,0,1-17,16.968L96,304.984l-15.5,15.5a12.01,12.01,0,0,1-17-16.968L79.016,288ZM96,456a40,40,0,1,1,40-40A40,40,0,0,1,96,456ZM359.227,335.785,310.7,336a6.671,6.671,0,0,1-6.7-6.7l.215-48.574A24.987,24.987,0,0,1,331.43,256.1c12.789,1.162,22.129,12.619,22.056,25.419l-.037,5.057,5.051-.037c12.826-.035,24.236,9.275,25.4,22.076A24.948,24.948,0,0,1,359.227,335.785Z\"]\n};\nvar faVial = {\n  prefix: 'fas',\n  iconName: 'vial',\n  icon: [480, 512, [], \"f492\", \"M477.7 186.1L309.5 18.3c-3.1-3.1-8.2-3.1-11.3 0l-34 33.9c-3.1 3.1-3.1 8.2 0 11.3l11.2 11.1L33 316.5c-38.8 38.7-45.1 102-9.4 143.5 20.6 24 49.5 36 78.4 35.9 26.4 0 52.8-10 72.9-30.1l246.3-245.7 11.2 11.1c3.1 3.1 8.2 3.1 11.3 0l34-33.9c3.1-3 3.1-8.1 0-11.2zM318 256H161l148-147.7 78.5 78.3L318 256z\"]\n};\nvar faVials = {\n  prefix: 'fas',\n  iconName: 'vials',\n  icon: [640, 512, [], \"f493\", \"M72 64h24v240c0 44.1 35.9 80 80 80s80-35.9 80-80V64h24c4.4 0 8-3.6 8-8V8c0-4.4-3.6-8-8-8H72c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm72 0h64v96h-64V64zm480 384H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM360 64h24v240c0 44.1 35.9 80 80 80s80-35.9 80-80V64h24c4.4 0 8-3.6 8-8V8c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm72 0h64v96h-64V64z\"]\n};\nvar faVideo = {\n  prefix: 'fas',\n  iconName: 'video',\n  icon: [576, 512, [], \"f03d\", \"M336.2 64H47.8C21.4 64 0 85.4 0 111.8v288.4C0 426.6 21.4 448 47.8 448h288.4c26.4 0 47.8-21.4 47.8-47.8V111.8c0-26.4-21.4-47.8-47.8-47.8zm189.4 37.7L416 177.3v157.4l109.6 75.5c21.2 14.6 50.4-.3 50.4-25.8V127.5c0-25.4-29.1-40.4-50.4-25.8z\"]\n};\nvar faVideoSlash = {\n  prefix: 'fas',\n  iconName: 'video-slash',\n  icon: [640, 512, [], \"f4e2\", \"M633.8 458.1l-55-42.5c15.4-1.4 29.2-13.7 29.2-31.1v-257c0-25.5-29.1-40.4-50.4-25.8L448 177.3v137.2l-32-24.7v-178c0-26.4-21.4-47.8-47.8-47.8H123.9L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4L42.7 82 416 370.6l178.5 138c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.5-6.9 4.2-17-2.8-22.4zM32 400.2c0 26.4 21.4 47.8 47.8 47.8h288.4c11.2 0 21.4-4 29.6-10.5L32 154.7v245.5z\"]\n};\nvar faVihara = {\n  prefix: 'fas',\n  iconName: 'vihara',\n  icon: [640, 512, [], \"f6a7\", \"M632.88 400.71L544 352v-64l55.16-17.69c11.79-5.9 11.79-22.72 0-28.62L480 192v-64l27.31-16.3c7.72-7.72 5.61-20.74-4.16-25.62L320 0 136.85 86.07c-9.77 4.88-11.88 17.9-4.16 25.62L160 128v64L40.84 241.69c-11.79 5.9-11.79 22.72 0 28.62L96 288v64L7.12 400.71c-5.42 3.62-7.7 9.63-7 15.29.62 5.01 3.57 9.75 8.72 12.33L64 448v48c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-48h160v48c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-48h160v48c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-48l55.15-19.67c5.16-2.58 8.1-7.32 8.72-12.33.71-5.67-1.57-11.68-6.99-15.29zM224 128h192v64H224v-64zm-64 224v-64h320v64H160z\"]\n};\nvar faVirus = {\n  prefix: 'fas',\n  iconName: 'virus',\n  icon: [512, 512, [], \"e074\", \"M483.55,227.55H462c-50.68,0-76.07-61.27-40.23-97.11L437,115.19A28.44,28.44,0,0,0,396.8,75L381.56,90.22c-35.84,35.83-97.11,10.45-97.11-40.23V28.44a28.45,28.45,0,0,0-56.9,0V50c0,50.68-61.27,76.06-97.11,40.23L115.2,75A28.44,28.44,0,0,0,75,115.19l15.25,15.25c35.84,35.84,10.45,97.11-40.23,97.11H28.45a28.45,28.45,0,1,0,0,56.89H50c50.68,0,76.07,61.28,40.23,97.12L75,396.8A28.45,28.45,0,0,0,115.2,437l15.24-15.25c35.84-35.84,97.11-10.45,97.11,40.23v21.54a28.45,28.45,0,0,0,56.9,0V462c0-50.68,61.27-76.07,97.11-40.23L396.8,437A28.45,28.45,0,0,0,437,396.8l-15.25-15.24c-35.84-35.84-10.45-97.12,40.23-97.12h21.54a28.45,28.45,0,1,0,0-56.89ZM224,272a48,48,0,1,1,48-48A48,48,0,0,1,224,272Zm80,56a24,24,0,1,1,24-24A24,24,0,0,1,304,328Z\"]\n};\nvar faVirusSlash = {\n  prefix: 'fas',\n  iconName: 'virus-slash',\n  icon: [640, 512, [], \"e075\", \"M114,227.6H92.4C76.7,227.6,64,240.3,64,256s12.7,28.4,28.4,28.4H114c50.7,0,76.1,61.3,40.2,97.1L139,396.8 c-11.5,10.7-12.2,28.7-1.6,40.2s28.7,12.2,40.2,1.6c0.5-0.5,1.1-1,1.6-1.6l15.2-15.2c35.8-35.8,97.1-10.5,97.1,40.2v21.5 c0,15.7,12.8,28.4,28.5,28.4c15.7,0,28.4-12.7,28.4-28.4V462c0-26.6,17-45.9,38.2-53.4l-244.5-189 C133.7,224.7,123.9,227.5,114,227.6z M617,505.8l19.6-25.3c5.4-7,4.2-17-2.8-22.5L470.6,332c4.2-25.4,24.9-47.5,55.4-47.5h21.5 c15.7,0,28.4-12.7,28.4-28.4s-12.7-28.4-28.4-28.4H526c-50.7,0-76.1-61.3-40.2-97.1l15.2-15.3c10.7-11.5,10-29.5-1.6-40.2 c-10.9-10.1-27.7-10.1-38.6,0l-15.2,15.2c-35.8,35.8-97.1,10.5-97.1-40.2V28.5C348.4,12.7,335.7,0,320,0 c-15.7,0-28.4,12.7-28.4,28.4V50c0,50.7-61.3,76.1-97.1,40.2L179.2,75c-11.1-11.1-29.4-10.6-40.5,0.5L45.5,3.4 c-7-5.4-17-4.2-22.5,2.8L3.4,31.5c-5.4,7-4.2,17,2.8,22.5l588.4,454.7C601.5,514.1,611.6,512.8,617,505.8z M335.4,227.5l-62.9-48.6 c4.9-1.8,10.2-2.8,15.4-2.9c26.5,0,48,21.5,48,48C336,225.2,335.5,226.3,335.4,227.5z\"]\n};\nvar faViruses = {\n  prefix: 'fas',\n  iconName: 'viruses',\n  icon: [640, 512, [], \"e076\", \"M624,352H611.88c-28.51,0-42.79-34.47-22.63-54.63l8.58-8.57a16,16,0,1,0-22.63-22.63l-8.57,8.58C546.47,294.91,512,280.63,512,252.12V240a16,16,0,0,0-32,0v12.12c0,28.51-34.47,42.79-54.63,22.63l-8.57-8.58a16,16,0,0,0-22.63,22.63l8.58,8.57c20.16,20.16,5.88,54.63-22.63,54.63H368a16,16,0,0,0,0,32h12.12c28.51,0,42.79,34.47,22.63,54.63l-8.58,8.57a16,16,0,1,0,22.63,22.63l8.57-8.58c20.16-20.16,54.63-5.88,54.63,22.63V496a16,16,0,0,0,32,0V483.88c0-28.51,34.47-42.79,54.63-22.63l8.57,8.58a16,16,0,1,0,22.63-22.63l-8.58-8.57C569.09,418.47,583.37,384,611.88,384H624a16,16,0,0,0,0-32ZM480,384a32,32,0,1,1,32-32A32,32,0,0,1,480,384ZM346.51,213.33h16.16a21.33,21.33,0,0,0,0-42.66H346.51c-38,0-57.05-46-30.17-72.84l11.43-11.44A21.33,21.33,0,0,0,297.6,56.23L286.17,67.66c-26.88,26.88-72.84,7.85-72.84-30.17V21.33a21.33,21.33,0,0,0-42.66,0V37.49c0,38-46,57.05-72.84,30.17L86.4,56.23A21.33,21.33,0,0,0,56.23,86.39L67.66,97.83c26.88,26.88,7.85,72.84-30.17,72.84H21.33a21.33,21.33,0,0,0,0,42.66H37.49c38,0,57.05,46,30.17,72.84L56.23,297.6A21.33,21.33,0,1,0,86.4,327.77l11.43-11.43c26.88-26.88,72.84-7.85,72.84,30.17v16.16a21.33,21.33,0,0,0,42.66,0V346.51c0-38,46-57.05,72.84-30.17l11.43,11.43a21.33,21.33,0,0,0,30.17-30.17l-11.43-11.43C289.46,259.29,308.49,213.33,346.51,213.33ZM160,192a32,32,0,1,1,32-32A32,32,0,0,1,160,192Zm80,32a16,16,0,1,1,16-16A16,16,0,0,1,240,224Z\"]\n};\nvar faVoicemail = {\n  prefix: 'fas',\n  iconName: 'voicemail',\n  icon: [640, 512, [], \"f897\", \"M496 128a144 144 0 0 0-119.74 224H263.74A144 144 0 1 0 144 416h352a144 144 0 0 0 0-288zM64 272a80 80 0 1 1 80 80 80 80 0 0 1-80-80zm432 80a80 80 0 1 1 80-80 80 80 0 0 1-80 80z\"]\n};\nvar faVolleyballBall = {\n  prefix: 'fas',\n  iconName: 'volleyball-ball',\n  icon: [512, 512, [], \"f45f\", \"M231.39 243.48a285.56 285.56 0 0 0-22.7-105.7c-90.8 42.4-157.5 122.4-180.3 216.8a249 249 0 0 0 56.9 81.1 333.87 333.87 0 0 1 146.1-192.2zm-36.9-134.4a284.23 284.23 0 0 0-57.4-70.7c-91 49.8-144.8 152.9-125 262.2 33.4-83.1 98.4-152 182.4-191.5zm187.6 165.1c8.6-99.8-27.3-197.5-97.5-264.4-14.7-1.7-51.6-5.5-98.9 8.5A333.87 333.87 0 0 1 279.19 241a285 285 0 0 0 102.9 33.18zm-124.7 9.5a286.33 286.33 0 0 0-80.2 72.6c82 57.3 184.5 75.1 277.5 47.8a247.15 247.15 0 0 0 42.2-89.9 336.1 336.1 0 0 1-80.9 10.4c-54.6-.1-108.9-14.1-158.6-40.9zm-98.3 99.7c-15.2 26-25.7 54.4-32.1 84.2a247.07 247.07 0 0 0 289-22.1c-112.9 16.1-203.3-24.8-256.9-62.1zm180.3-360.6c55.3 70.4 82.5 161.2 74.6 253.6a286.59 286.59 0 0 0 89.7-14.2c0-2 .3-4 .3-6 0-107.8-68.7-199.1-164.6-233.4z\"]\n};\nvar faVolumeDown = {\n  prefix: 'fas',\n  iconName: 'volume-down',\n  icon: [384, 512, [], \"f027\", \"M215.03 72.04L126.06 161H24c-13.26 0-24 10.74-24 24v144c0 13.25 10.74 24 24 24h102.06l88.97 88.95c15.03 15.03 40.97 4.47 40.97-16.97V89.02c0-21.47-25.96-31.98-40.97-16.98zm123.2 108.08c-11.58-6.33-26.19-2.16-32.61 9.45-6.39 11.61-2.16 26.2 9.45 32.61C327.98 229.28 336 242.62 336 257c0 14.38-8.02 27.72-20.92 34.81-11.61 6.41-15.84 21-9.45 32.61 6.43 11.66 21.05 15.8 32.61 9.45 28.23-15.55 45.77-45 45.77-76.88s-17.54-61.32-45.78-76.87z\"]\n};\nvar faVolumeMute = {\n  prefix: 'fas',\n  iconName: 'volume-mute',\n  icon: [512, 512, [], \"f6a9\", \"M215.03 71.05L126.06 160H24c-13.26 0-24 10.74-24 24v144c0 13.25 10.74 24 24 24h102.06l88.97 88.95c15.03 15.03 40.97 4.47 40.97-16.97V88.02c0-21.46-25.96-31.98-40.97-16.97zM461.64 256l45.64-45.64c6.3-6.3 6.3-16.52 0-22.82l-22.82-22.82c-6.3-6.3-16.52-6.3-22.82 0L416 210.36l-45.64-45.64c-6.3-6.3-16.52-6.3-22.82 0l-22.82 22.82c-6.3 6.3-6.3 16.52 0 22.82L370.36 256l-45.63 45.63c-6.3 6.3-6.3 16.52 0 22.82l22.82 22.82c6.3 6.3 16.52 6.3 22.82 0L416 301.64l45.64 45.64c6.3 6.3 16.52 6.3 22.82 0l22.82-22.82c6.3-6.3 6.3-16.52 0-22.82L461.64 256z\"]\n};\nvar faVolumeOff = {\n  prefix: 'fas',\n  iconName: 'volume-off',\n  icon: [256, 512, [], \"f026\", \"M215 71l-89 89H24a24 24 0 0 0-24 24v144a24 24 0 0 0 24 24h102.06L215 441c15 15 41 4.47 41-17V88c0-21.47-26-32-41-17z\"]\n};\nvar faVolumeUp = {\n  prefix: 'fas',\n  iconName: 'volume-up',\n  icon: [576, 512, [], \"f028\", \"M215.03 71.05L126.06 160H24c-13.26 0-24 10.74-24 24v144c0 13.25 10.74 24 24 24h102.06l88.97 88.95c15.03 15.03 40.97 4.47 40.97-16.97V88.02c0-21.46-25.96-31.98-40.97-16.97zm233.32-51.08c-11.17-7.33-26.18-4.24-33.51 6.95-7.34 11.17-4.22 26.18 6.95 33.51 66.27 43.49 105.82 116.6 105.82 195.58 0 78.98-39.55 152.09-105.82 195.58-11.17 7.32-14.29 22.34-6.95 33.5 7.04 10.71 21.93 14.56 33.51 6.95C528.27 439.58 576 351.33 576 256S528.27 72.43 448.35 19.97zM480 256c0-63.53-32.06-121.94-85.77-156.24-11.19-7.14-26.03-3.82-33.12 7.46s-3.78 26.21 7.41 33.36C408.27 165.97 432 209.11 432 256s-23.73 90.03-63.48 115.42c-11.19 7.14-14.5 22.07-7.41 33.36 6.51 10.36 21.12 15.14 33.12 7.46C447.94 377.94 480 319.54 480 256zm-141.77-76.87c-11.58-6.33-26.19-2.16-32.61 9.45-6.39 11.61-2.16 26.2 9.45 32.61C327.98 228.28 336 241.63 336 256c0 14.38-8.02 27.72-20.92 34.81-11.61 6.41-15.84 21-9.45 32.61 6.43 11.66 21.05 15.8 32.61 9.45 28.23-15.55 45.77-45 45.77-76.88s-17.54-61.32-45.78-76.86z\"]\n};\nvar faVoteYea = {\n  prefix: 'fas',\n  iconName: 'vote-yea',\n  icon: [640, 512, [], \"f772\", \"M608 320h-64v64h22.4c5.3 0 9.6 3.6 9.6 8v16c0 4.4-4.3 8-9.6 8H73.6c-5.3 0-9.6-3.6-9.6-8v-16c0-4.4 4.3-8 9.6-8H96v-64H32c-17.7 0-32 14.3-32 32v96c0 17.7 14.3 32 32 32h576c17.7 0 32-14.3 32-32v-96c0-17.7-14.3-32-32-32zm-96 64V64.3c0-17.9-14.5-32.3-32.3-32.3H160.4C142.5 32 128 46.5 128 64.3V384h384zM211.2 202l25.5-25.3c4.2-4.2 11-4.2 15.2.1l41.3 41.6 95.2-94.4c4.2-4.2 11-4.2 15.2.1l25.3 25.5c4.2 4.2 4.2 11-.1 15.2L300.5 292c-4.2 4.2-11 4.2-15.2-.1l-74.1-74.7c-4.3-4.2-4.2-11 0-15.2z\"]\n};\nvar faVrCardboard = {\n  prefix: 'fas',\n  iconName: 'vr-cardboard',\n  icon: [640, 512, [], \"f729\", \"M608 64H32C14.33 64 0 78.33 0 96v320c0 17.67 14.33 32 32 32h160.22c25.19 0 48.03-14.77 58.36-37.74l27.74-61.64C286.21 331.08 302.35 320 320 320s33.79 11.08 41.68 28.62l27.74 61.64C399.75 433.23 422.6 448 447.78 448H608c17.67 0 32-14.33 32-32V96c0-17.67-14.33-32-32-32zM160 304c-35.35 0-64-28.65-64-64s28.65-64 64-64 64 28.65 64 64-28.65 64-64 64zm320 0c-35.35 0-64-28.65-64-64s28.65-64 64-64 64 28.65 64 64-28.65 64-64 64z\"]\n};\nvar faWalking = {\n  prefix: 'fas',\n  iconName: 'walking',\n  icon: [320, 512, [], \"f554\", \"M208 96c26.5 0 48-21.5 48-48S234.5 0 208 0s-48 21.5-48 48 21.5 48 48 48zm94.5 149.1l-23.3-11.8-9.7-29.4c-14.7-44.6-55.7-75.8-102.2-75.9-36-.1-55.9 10.1-93.3 25.2-21.6 8.7-39.3 25.2-49.7 46.2L17.6 213c-7.8 15.8-1.5 35 14.2 42.9 15.6 7.9 34.6 1.5 42.5-14.3L81 228c3.5-7 9.3-12.5 16.5-15.4l26.8-10.8-15.2 60.7c-5.2 20.8.4 42.9 14.9 58.8l59.9 65.4c7.2 7.9 12.3 17.4 14.9 27.7l18.3 73.3c4.3 17.1 21.7 27.6 38.8 23.3 17.1-4.3 27.6-21.7 23.3-38.8l-22.2-89c-2.6-10.3-7.7-19.9-14.9-27.7l-45.5-49.7 17.2-68.7 5.5 16.5c5.3 16.1 16.7 29.4 31.7 37l23.3 11.8c15.6 7.9 34.6 1.5 42.5-14.3 7.7-15.7 1.4-35.1-14.3-43zM73.6 385.8c-3.2 8.1-8 15.4-14.2 21.5l-50 50.1c-12.5 12.5-12.5 32.8 0 45.3s32.7 12.5 45.2 0l59.4-59.4c6.1-6.1 10.9-13.4 14.2-21.5l13.5-33.8c-55.3-60.3-38.7-41.8-47.4-53.7l-20.7 51.5z\"]\n};\nvar faWallet = {\n  prefix: 'fas',\n  iconName: 'wallet',\n  icon: [512, 512, [], \"f555\", \"M461.2 128H80c-8.84 0-16-7.16-16-16s7.16-16 16-16h384c8.84 0 16-7.16 16-16 0-26.51-21.49-48-48-48H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h397.2c28.02 0 50.8-21.53 50.8-48V176c0-26.47-22.78-48-50.8-48zM416 336c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faWarehouse = {\n  prefix: 'fas',\n  iconName: 'warehouse',\n  icon: [640, 512, [], \"f494\", \"M504 352H136.4c-4.4 0-8 3.6-8 8l-.1 48c0 4.4 3.6 8 8 8H504c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm0 96H136.1c-4.4 0-8 3.6-8 8l-.1 48c0 4.4 3.6 8 8 8h368c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm0-192H136.6c-4.4 0-8 3.6-8 8l-.1 48c0 4.4 3.6 8 8 8H504c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm106.5-139L338.4 3.7a48.15 48.15 0 0 0-36.9 0L29.5 117C11.7 124.5 0 141.9 0 161.3V504c0 4.4 3.6 8 8 8h80c4.4 0 8-3.6 8-8V256c0-17.6 14.6-32 32.6-32h382.8c18 0 32.6 14.4 32.6 32v248c0 4.4 3.6 8 8 8h80c4.4 0 8-3.6 8-8V161.3c0-19.4-11.7-36.8-29.5-44.3z\"]\n};\nvar faWater = {\n  prefix: 'fas',\n  iconName: 'water',\n  icon: [576, 512, [], \"f773\", \"M562.1 383.9c-21.5-2.4-42.1-10.5-57.9-22.9-14.1-11.1-34.2-11.3-48.2 0-37.9 30.4-107.2 30.4-145.7-1.5-13.5-11.2-33-9.1-46.7 1.8-38 30.1-106.9 30-145.2-1.7-13.5-11.2-33.3-8.9-47.1 2-15.5 12.2-36 20.1-57.7 22.4-7.9.8-13.6 7.8-13.6 15.7v32.2c0 9.1 7.6 16.8 16.7 16 28.8-2.5 56.1-11.4 79.4-25.9 56.5 34.6 137 34.1 192 0 56.5 34.6 137 34.1 192 0 23.3 14.2 50.9 23.3 79.1 25.8 9.1.8 16.7-6.9 16.7-16v-31.6c.1-8-5.7-15.4-13.8-16.3zm0-144c-21.5-2.4-42.1-10.5-57.9-22.9-14.1-11.1-34.2-11.3-48.2 0-37.9 30.4-107.2 30.4-145.7-1.5-13.5-11.2-33-9.1-46.7 1.8-38 30.1-106.9 30-145.2-1.7-13.5-11.2-33.3-8.9-47.1 2-15.5 12.2-36 20.1-57.7 22.4-7.9.8-13.6 7.8-13.6 15.7v32.2c0 9.1 7.6 16.8 16.7 16 28.8-2.5 56.1-11.4 79.4-25.9 56.5 34.6 137 34.1 192 0 56.5 34.6 137 34.1 192 0 23.3 14.2 50.9 23.3 79.1 25.8 9.1.8 16.7-6.9 16.7-16v-31.6c.1-8-5.7-15.4-13.8-16.3zm0-144C540.6 93.4 520 85.4 504.2 73 490.1 61.9 470 61.7 456 73c-37.9 30.4-107.2 30.4-145.7-1.5-13.5-11.2-33-9.1-46.7 1.8-38 30.1-106.9 30-145.2-1.7-13.5-11.2-33.3-8.9-47.1 2-15.5 12.2-36 20.1-57.7 22.4-7.9.8-13.6 7.8-13.6 15.7v32.2c0 9.1 7.6 16.8 16.7 16 28.8-2.5 56.1-11.4 79.4-25.9 56.5 34.6 137 34.1 192 0 56.5 34.6 137 34.1 192 0 23.3 14.2 50.9 23.3 79.1 25.8 9.1.8 16.7-6.9 16.7-16v-31.6c.1-8-5.7-15.4-13.8-16.3z\"]\n};\nvar faWaveSquare = {\n  prefix: 'fas',\n  iconName: 'wave-square',\n  icon: [640, 512, [], \"f83e\", \"M476 480H324a36 36 0 0 1-36-36V96h-96v156a36 36 0 0 1-36 36H16a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h112V68a36 36 0 0 1 36-36h152a36 36 0 0 1 36 36v348h96V260a36 36 0 0 1 36-36h140a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16H512v156a36 36 0 0 1-36 36z\"]\n};\nvar faWeight = {\n  prefix: 'fas',\n  iconName: 'weight',\n  icon: [512, 512, [], \"f496\", \"M448 64h-25.98C438.44 92.28 448 125.01 448 160c0 105.87-86.13 192-192 192S64 265.87 64 160c0-34.99 9.56-67.72 25.98-96H64C28.71 64 0 92.71 0 128v320c0 35.29 28.71 64 64 64h384c35.29 0 64-28.71 64-64V128c0-35.29-28.71-64-64-64zM256 320c88.37 0 160-71.63 160-160S344.37 0 256 0 96 71.63 96 160s71.63 160 160 160zm-.3-151.94l33.58-78.36c3.5-8.17 12.94-11.92 21.03-8.41 8.12 3.48 11.88 12.89 8.41 21l-33.67 78.55C291.73 188 296 197.45 296 208c0 22.09-17.91 40-40 40s-40-17.91-40-40c0-21.98 17.76-39.77 39.7-39.94z\"]\n};\nvar faWeightHanging = {\n  prefix: 'fas',\n  iconName: 'weight-hanging',\n  icon: [512, 512, [], \"f5cd\", \"M510.28 445.86l-73.03-292.13c-3.8-15.19-16.44-25.72-30.87-25.72h-60.25c3.57-10.05 5.88-20.72 5.88-32 0-53.02-42.98-96-96-96s-96 42.98-96 96c0 11.28 2.3 21.95 5.88 32h-60.25c-14.43 0-27.08 10.54-30.87 25.72L1.72 445.86C-6.61 479.17 16.38 512 48.03 512h415.95c31.64 0 54.63-32.83 46.3-66.14zM256 128c-17.64 0-32-14.36-32-32s14.36-32 32-32 32 14.36 32 32-14.36 32-32 32z\"]\n};\nvar faWheelchair = {\n  prefix: 'fas',\n  iconName: 'wheelchair',\n  icon: [512, 512, [], \"f193\", \"M496.101 385.669l14.227 28.663c3.929 7.915.697 17.516-7.218 21.445l-65.465 32.886c-16.049 7.967-35.556 1.194-43.189-15.055L331.679 320H192c-15.925 0-29.426-11.71-31.679-27.475C126.433 55.308 128.38 70.044 128 64c0-36.358 30.318-65.635 67.052-63.929 33.271 1.545 60.048 28.905 60.925 62.201.868 32.933-23.152 60.423-54.608 65.039l4.67 32.69H336c8.837 0 16 7.163 16 16v32c0 8.837-7.163 16-16 16H215.182l4.572 32H352a32 32 0 0 1 28.962 18.392L438.477 396.8l36.178-18.349c7.915-3.929 17.517-.697 21.446 7.218zM311.358 352h-24.506c-7.788 54.204-54.528 96-110.852 96-61.757 0-112-50.243-112-112 0-41.505 22.694-77.809 56.324-97.156-3.712-25.965-6.844-47.86-9.488-66.333C45.956 198.464 0 261.963 0 336c0 97.047 78.953 176 176 176 71.87 0 133.806-43.308 161.11-105.192L311.358 352z\"]\n};\nvar faWifi = {\n  prefix: 'fas',\n  iconName: 'wifi',\n  icon: [640, 512, [], \"f1eb\", \"M634.91 154.88C457.74-8.99 182.19-8.93 5.09 154.88c-6.66 6.16-6.79 16.59-.35 22.98l34.24 33.97c6.14 6.1 16.02 6.23 22.4.38 145.92-133.68 371.3-133.71 517.25 0 6.38 5.85 16.26 5.71 22.4-.38l34.24-33.97c6.43-6.39 6.3-16.82-.36-22.98zM320 352c-35.35 0-64 28.65-64 64s28.65 64 64 64 64-28.65 64-64-28.65-64-64-64zm202.67-83.59c-115.26-101.93-290.21-101.82-405.34 0-6.9 6.1-7.12 16.69-.57 23.15l34.44 33.99c6 5.92 15.66 6.32 22.05.8 83.95-72.57 209.74-72.41 293.49 0 6.39 5.52 16.05 5.13 22.05-.8l34.44-33.99c6.56-6.46 6.33-17.06-.56-23.15z\"]\n};\nvar faWind = {\n  prefix: 'fas',\n  iconName: 'wind',\n  icon: [512, 512, [], \"f72e\", \"M156.7 256H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h142.2c15.9 0 30.8 10.9 33.4 26.6 3.3 20-12.1 37.4-31.6 37.4-14.1 0-26.1-9.2-30.4-21.9-2.1-6.3-8.6-10.1-15.2-10.1H81.6c-9.8 0-17.7 8.8-15.9 18.4 8.6 44.1 47.6 77.6 94.2 77.6 57.1 0 102.7-50.1 95.2-108.6C249 291 205.4 256 156.7 256zM16 224h336c59.7 0 106.8-54.8 93.8-116.7-7.6-36.2-36.9-65.5-73.1-73.1-55.4-11.6-105.1 24.9-114.9 75.5-1.9 9.6 6.1 18.3 15.8 18.3h32.8c6.7 0 13.1-3.8 15.2-10.1C325.9 105.2 337.9 96 352 96c19.4 0 34.9 17.4 31.6 37.4-2.6 15.7-17.4 26.6-33.4 26.6H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16zm384 32H243.7c19.3 16.6 33.2 38.8 39.8 64H400c26.5 0 48 21.5 48 48s-21.5 48-48 48c-17.9 0-33.3-9.9-41.6-24.4-2.9-5-8.7-7.6-14.5-7.6h-33.8c-10.9 0-19 10.8-15.3 21.1 17.8 50.6 70.5 84.8 129.4 72.3 41.2-8.7 75.1-41.6 84.7-82.7C526 321.5 470.5 256 400 256z\"]\n};\nvar faWindowClose = {\n  prefix: 'fas',\n  iconName: 'window-close',\n  icon: [512, 512, [], \"f410\", \"M464 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-83.6 290.5c4.8 4.8 4.8 12.6 0 17.4l-40.5 40.5c-4.8 4.8-12.6 4.8-17.4 0L256 313.3l-66.5 67.1c-4.8 4.8-12.6 4.8-17.4 0l-40.5-40.5c-4.8-4.8-4.8-12.6 0-17.4l67.1-66.5-67.1-66.5c-4.8-4.8-4.8-12.6 0-17.4l40.5-40.5c4.8-4.8 12.6-4.8 17.4 0l66.5 67.1 66.5-67.1c4.8-4.8 12.6-4.8 17.4 0l40.5 40.5c4.8 4.8 4.8 12.6 0 17.4L313.3 256l67.1 66.5z\"]\n};\nvar faWindowMaximize = {\n  prefix: 'fas',\n  iconName: 'window-maximize',\n  icon: [512, 512, [], \"f2d0\", \"M464 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-16 160H64v-84c0-6.6 5.4-12 12-12h360c6.6 0 12 5.4 12 12v84z\"]\n};\nvar faWindowMinimize = {\n  prefix: 'fas',\n  iconName: 'window-minimize',\n  icon: [512, 512, [], \"f2d1\", \"M464 352H48c-26.5 0-48 21.5-48 48v32c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48v-32c0-26.5-21.5-48-48-48z\"]\n};\nvar faWindowRestore = {\n  prefix: 'fas',\n  iconName: 'window-restore',\n  icon: [512, 512, [], \"f2d2\", \"M512 48v288c0 26.5-21.5 48-48 48h-48V176c0-44.1-35.9-80-80-80H128V48c0-26.5 21.5-48 48-48h288c26.5 0 48 21.5 48 48zM384 176v288c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V176c0-26.5 21.5-48 48-48h288c26.5 0 48 21.5 48 48zm-68 28c0-6.6-5.4-12-12-12H76c-6.6 0-12 5.4-12 12v52h252v-52z\"]\n};\nvar faWineBottle = {\n  prefix: 'fas',\n  iconName: 'wine-bottle',\n  icon: [512, 512, [], \"f72f\", \"M507.31 72.57L439.43 4.69c-6.25-6.25-16.38-6.25-22.63 0l-22.63 22.63c-6.25 6.25-6.25 16.38 0 22.63l-76.67 76.67c-46.58-19.7-102.4-10.73-140.37 27.23L18.75 312.23c-24.99 24.99-24.99 65.52 0 90.51l90.51 90.51c24.99 24.99 65.52 24.99 90.51 0l158.39-158.39c37.96-37.96 46.93-93.79 27.23-140.37l76.67-76.67c6.25 6.25 16.38 6.25 22.63 0l22.63-22.63c6.24-6.24 6.24-16.37-.01-22.62zM179.22 423.29l-90.51-90.51 122.04-122.04 90.51 90.51-122.04 122.04z\"]\n};\nvar faWineGlass = {\n  prefix: 'fas',\n  iconName: 'wine-glass',\n  icon: [288, 512, [], \"f4e3\", \"M216 464h-40V346.81c68.47-15.89 118.05-79.91 111.4-154.16l-15.95-178.1C270.71 6.31 263.9 0 255.74 0H32.26c-8.15 0-14.97 6.31-15.7 14.55L.6 192.66C-6.05 266.91 43.53 330.93 112 346.82V464H72c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h208c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40z\"]\n};\nvar faWineGlassAlt = {\n  prefix: 'fas',\n  iconName: 'wine-glass-alt',\n  icon: [288, 512, [], \"f5ce\", \"M216 464h-40V346.81c68.47-15.89 118.05-79.91 111.4-154.16l-15.95-178.1C270.71 6.31 263.9 0 255.74 0H32.26c-8.15 0-14.97 6.31-15.7 14.55L.6 192.66C-6.05 266.91 43.53 330.93 112 346.82V464H72c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h208c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40zM61.75 48h164.5l7.17 80H54.58l7.17-80z\"]\n};\nvar faWonSign = {\n  prefix: 'fas',\n  iconName: 'won-sign',\n  icon: [576, 512, [], \"f159\", \"M564 192c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-48l18.6-80.6c1.7-7.5-4-14.7-11.7-14.7h-46.1c-5.7 0-10.6 4-11.7 9.5L450.7 128H340.8l-19.7-86c-1.3-5.5-6.1-9.3-11.7-9.3h-44c-5.6 0-10.4 3.8-11.7 9.3l-20 86H125l-17.5-85.7c-1.1-5.6-6.1-9.6-11.8-9.6H53.6c-7.7 0-13.4 7.1-11.7 14.6L60 128H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h62.3l7.2 32H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h83.9l40.9 182.6c1.2 5.5 6.1 9.4 11.7 9.4h56.8c5.6 0 10.4-3.9 11.7-9.3L259.3 288h55.1l42.4 182.7c1.3 5.4 6.1 9.3 11.7 9.3h56.8c5.6 0 10.4-3.9 11.7-9.3L479.1 288H564c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-70.1l7.4-32zM183.8 342c-6.2 25.8-6.8 47.2-7.3 47.2h-1.1s-1.7-22-6.8-47.2l-11-54h38.8zm27.5-118h-66.8l-6.5-32h80.8zm62.9 0l2-8.6c1.9-8 3.5-16 4.8-23.4h11.8c1.3 7.4 2.9 15.4 4.8 23.4l2 8.6zm130.9 118c-5.1 25.2-6.8 47.2-6.8 47.2h-1.1c-.6 0-1.1-21.4-7.3-47.2l-12.4-54h39.1zm25.2-118h-67.4l-7.3-32h81.6z\"]\n};\nvar faWrench = {\n  prefix: 'fas',\n  iconName: 'wrench',\n  icon: [512, 512, [], \"f0ad\", \"M507.73 109.1c-2.24-9.03-13.54-12.09-20.12-5.51l-74.36 74.36-67.88-11.31-11.31-67.88 74.36-74.36c6.62-6.62 3.43-17.9-5.66-20.16-47.38-11.74-99.55.91-136.58 37.93-39.64 39.64-50.55 97.1-34.05 147.2L18.74 402.76c-24.99 24.99-24.99 65.51 0 90.5 24.99 24.99 65.51 24.99 90.5 0l213.21-213.21c50.12 16.71 107.47 5.68 147.37-34.22 37.07-37.07 49.7-89.32 37.91-136.73zM64 472c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z\"]\n};\nvar faXRay = {\n  prefix: 'fas',\n  iconName: 'x-ray',\n  icon: [640, 512, [], \"f497\", \"M240 384c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm160 32c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zM624 0H16C7.2 0 0 7.2 0 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16zm0 448h-48V96H64v352H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM480 248c0 4.4-3.6 8-8 8H336v32h104c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H336v32h64c26.5 0 48 21.5 48 48s-21.5 48-48 48-48-21.5-48-48v-16h-64v16c0 26.5-21.5 48-48 48s-48-21.5-48-48 21.5-48 48-48h64v-32H200c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h104v-32H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h136v-32H200c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h104v-24c0-4.4 3.6-8 8-8h16c4.4 0 8 3.6 8 8v24h104c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H336v32h136c4.4 0 8 3.6 8 8v16z\"]\n};\nvar faYenSign = {\n  prefix: 'fas',\n  iconName: 'yen-sign',\n  icon: [384, 512, [], \"f157\", \"M351.2 32h-65.3c-4.6 0-8.8 2.6-10.8 6.7l-55.4 113.2c-14.5 34.7-27.1 71.9-27.1 71.9h-1.3s-12.6-37.2-27.1-71.9L108.8 38.7c-2-4.1-6.2-6.7-10.8-6.7H32.8c-9.1 0-14.8 9.7-10.6 17.6L102.3 200H44c-6.6 0-12 5.4-12 12v32c0 6.6 5.4 12 12 12h88.2l19.8 37.2V320H44c-6.6 0-12 5.4-12 12v32c0 6.6 5.4 12 12 12h108v92c0 6.6 5.4 12 12 12h56c6.6 0 12-5.4 12-12v-92h108c6.6 0 12-5.4 12-12v-32c0-6.6-5.4-12-12-12H232v-26.8l19.8-37.2H340c6.6 0 12-5.4 12-12v-32c0-6.6-5.4-12-12-12h-58.3l80.1-150.4c4.3-7.9-1.5-17.6-10.6-17.6z\"]\n};\nvar faYinYang = {\n  prefix: 'fas',\n  iconName: 'yin-yang',\n  icon: [496, 512, [], \"f6ad\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm0 376c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-128c-53.02 0-96 42.98-96 96s42.98 96 96 96c-106.04 0-192-85.96-192-192S141.96 64 248 64c53.02 0 96 42.98 96 96s-42.98 96-96 96zm0-128c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32z\"]\n};\nvar _iconsCache = {\n  faAd: faAd,\n  faAddressBook: faAddressBook,\n  faAddressCard: faAddressCard,\n  faAdjust: faAdjust,\n  faAirFreshener: faAirFreshener,\n  faAlignCenter: faAlignCenter,\n  faAlignJustify: faAlignJustify,\n  faAlignLeft: faAlignLeft,\n  faAlignRight: faAlignRight,\n  faAllergies: faAllergies,\n  faAmbulance: faAmbulance,\n  faAmericanSignLanguageInterpreting: faAmericanSignLanguageInterpreting,\n  faAnchor: faAnchor,\n  faAngleDoubleDown: faAngleDoubleDown,\n  faAngleDoubleLeft: faAngleDoubleLeft,\n  faAngleDoubleRight: faAngleDoubleRight,\n  faAngleDoubleUp: faAngleDoubleUp,\n  faAngleDown: faAngleDown,\n  faAngleLeft: faAngleLeft,\n  faAngleRight: faAngleRight,\n  faAngleUp: faAngleUp,\n  faAngry: faAngry,\n  faAnkh: faAnkh,\n  faAppleAlt: faAppleAlt,\n  faArchive: faArchive,\n  faArchway: faArchway,\n  faArrowAltCircleDown: faArrowAltCircleDown,\n  faArrowAltCircleLeft: faArrowAltCircleLeft,\n  faArrowAltCircleRight: faArrowAltCircleRight,\n  faArrowAltCircleUp: faArrowAltCircleUp,\n  faArrowCircleDown: faArrowCircleDown,\n  faArrowCircleLeft: faArrowCircleLeft,\n  faArrowCircleRight: faArrowCircleRight,\n  faArrowCircleUp: faArrowCircleUp,\n  faArrowDown: faArrowDown,\n  faArrowLeft: faArrowLeft,\n  faArrowRight: faArrowRight,\n  faArrowUp: faArrowUp,\n  faArrowsAlt: faArrowsAlt,\n  faArrowsAltH: faArrowsAltH,\n  faArrowsAltV: faArrowsAltV,\n  faAssistiveListeningSystems: faAssistiveListeningSystems,\n  faAsterisk: faAsterisk,\n  faAt: faAt,\n  faAtlas: faAtlas,\n  faAtom: faAtom,\n  faAudioDescription: faAudioDescription,\n  faAward: faAward,\n  faBaby: faBaby,\n  faBabyCarriage: faBabyCarriage,\n  faBackspace: faBackspace,\n  faBackward: faBackward,\n  faBacon: faBacon,\n  faBacteria: faBacteria,\n  faBacterium: faBacterium,\n  faBahai: faBahai,\n  faBalanceScale: faBalanceScale,\n  faBalanceScaleLeft: faBalanceScaleLeft,\n  faBalanceScaleRight: faBalanceScaleRight,\n  faBan: faBan,\n  faBandAid: faBandAid,\n  faBarcode: faBarcode,\n  faBars: faBars,\n  faBaseballBall: faBaseballBall,\n  faBasketballBall: faBasketballBall,\n  faBath: faBath,\n  faBatteryEmpty: faBatteryEmpty,\n  faBatteryFull: faBatteryFull,\n  faBatteryHalf: faBatteryHalf,\n  faBatteryQuarter: faBatteryQuarter,\n  faBatteryThreeQuarters: faBatteryThreeQuarters,\n  faBed: faBed,\n  faBeer: faBeer,\n  faBell: faBell,\n  faBellSlash: faBellSlash,\n  faBezierCurve: faBezierCurve,\n  faBible: faBible,\n  faBicycle: faBicycle,\n  faBiking: faBiking,\n  faBinoculars: faBinoculars,\n  faBiohazard: faBiohazard,\n  faBirthdayCake: faBirthdayCake,\n  faBlender: faBlender,\n  faBlenderPhone: faBlenderPhone,\n  faBlind: faBlind,\n  faBlog: faBlog,\n  faBold: faBold,\n  faBolt: faBolt,\n  faBomb: faBomb,\n  faBone: faBone,\n  faBong: faBong,\n  faBook: faBook,\n  faBookDead: faBookDead,\n  faBookMedical: faBookMedical,\n  faBookOpen: faBookOpen,\n  faBookReader: faBookReader,\n  faBookmark: faBookmark,\n  faBorderAll: faBorderAll,\n  faBorderNone: faBorderNone,\n  faBorderStyle: faBorderStyle,\n  faBowlingBall: faBowlingBall,\n  faBox: faBox,\n  faBoxOpen: faBoxOpen,\n  faBoxTissue: faBoxTissue,\n  faBoxes: faBoxes,\n  faBraille: faBraille,\n  faBrain: faBrain,\n  faBreadSlice: faBreadSlice,\n  faBriefcase: faBriefcase,\n  faBriefcaseMedical: faBriefcaseMedical,\n  faBroadcastTower: faBroadcastTower,\n  faBroom: faBroom,\n  faBrush: faBrush,\n  faBug: faBug,\n  faBuilding: faBuilding,\n  faBullhorn: faBullhorn,\n  faBullseye: faBullseye,\n  faBurn: faBurn,\n  faBus: faBus,\n  faBusAlt: faBusAlt,\n  faBusinessTime: faBusinessTime,\n  faCalculator: faCalculator,\n  faCalendar: faCalendar,\n  faCalendarAlt: faCalendarAlt,\n  faCalendarCheck: faCalendarCheck,\n  faCalendarDay: faCalendarDay,\n  faCalendarMinus: faCalendarMinus,\n  faCalendarPlus: faCalendarPlus,\n  faCalendarTimes: faCalendarTimes,\n  faCalendarWeek: faCalendarWeek,\n  faCamera: faCamera,\n  faCameraRetro: faCameraRetro,\n  faCampground: faCampground,\n  faCandyCane: faCandyCane,\n  faCannabis: faCannabis,\n  faCapsules: faCapsules,\n  faCar: faCar,\n  faCarAlt: faCarAlt,\n  faCarBattery: faCarBattery,\n  faCarCrash: faCarCrash,\n  faCarSide: faCarSide,\n  faCaravan: faCaravan,\n  faCaretDown: faCaretDown,\n  faCaretLeft: faCaretLeft,\n  faCaretRight: faCaretRight,\n  faCaretSquareDown: faCaretSquareDown,\n  faCaretSquareLeft: faCaretSquareLeft,\n  faCaretSquareRight: faCaretSquareRight,\n  faCaretSquareUp: faCaretSquareUp,\n  faCaretUp: faCaretUp,\n  faCarrot: faCarrot,\n  faCartArrowDown: faCartArrowDown,\n  faCartPlus: faCartPlus,\n  faCashRegister: faCashRegister,\n  faCat: faCat,\n  faCertificate: faCertificate,\n  faChair: faChair,\n  faChalkboard: faChalkboard,\n  faChalkboardTeacher: faChalkboardTeacher,\n  faChargingStation: faChargingStation,\n  faChartArea: faChartArea,\n  faChartBar: faChartBar,\n  faChartLine: faChartLine,\n  faChartPie: faChartPie,\n  faCheck: faCheck,\n  faCheckCircle: faCheckCircle,\n  faCheckDouble: faCheckDouble,\n  faCheckSquare: faCheckSquare,\n  faCheese: faCheese,\n  faChess: faChess,\n  faChessBishop: faChessBishop,\n  faChessBoard: faChessBoard,\n  faChessKing: faChessKing,\n  faChessKnight: faChessKnight,\n  faChessPawn: faChessPawn,\n  faChessQueen: faChessQueen,\n  faChessRook: faChessRook,\n  faChevronCircleDown: faChevronCircleDown,\n  faChevronCircleLeft: faChevronCircleLeft,\n  faChevronCircleRight: faChevronCircleRight,\n  faChevronCircleUp: faChevronCircleUp,\n  faChevronDown: faChevronDown,\n  faChevronLeft: faChevronLeft,\n  faChevronRight: faChevronRight,\n  faChevronUp: faChevronUp,\n  faChild: faChild,\n  faChurch: faChurch,\n  faCircle: faCircle,\n  faCircleNotch: faCircleNotch,\n  faCity: faCity,\n  faClinicMedical: faClinicMedical,\n  faClipboard: faClipboard,\n  faClipboardCheck: faClipboardCheck,\n  faClipboardList: faClipboardList,\n  faClock: faClock,\n  faClone: faClone,\n  faClosedCaptioning: faClosedCaptioning,\n  faCloud: faCloud,\n  faCloudDownloadAlt: faCloudDownloadAlt,\n  faCloudMeatball: faCloudMeatball,\n  faCloudMoon: faCloudMoon,\n  faCloudMoonRain: faCloudMoonRain,\n  faCloudRain: faCloudRain,\n  faCloudShowersHeavy: faCloudShowersHeavy,\n  faCloudSun: faCloudSun,\n  faCloudSunRain: faCloudSunRain,\n  faCloudUploadAlt: faCloudUploadAlt,\n  faCocktail: faCocktail,\n  faCode: faCode,\n  faCodeBranch: faCodeBranch,\n  faCoffee: faCoffee,\n  faCog: faCog,\n  faCogs: faCogs,\n  faCoins: faCoins,\n  faColumns: faColumns,\n  faComment: faComment,\n  faCommentAlt: faCommentAlt,\n  faCommentDollar: faCommentDollar,\n  faCommentDots: faCommentDots,\n  faCommentMedical: faCommentMedical,\n  faCommentSlash: faCommentSlash,\n  faComments: faComments,\n  faCommentsDollar: faCommentsDollar,\n  faCompactDisc: faCompactDisc,\n  faCompass: faCompass,\n  faCompress: faCompress,\n  faCompressAlt: faCompressAlt,\n  faCompressArrowsAlt: faCompressArrowsAlt,\n  faConciergeBell: faConciergeBell,\n  faCookie: faCookie,\n  faCookieBite: faCookieBite,\n  faCopy: faCopy,\n  faCopyright: faCopyright,\n  faCouch: faCouch,\n  faCreditCard: faCreditCard,\n  faCrop: faCrop,\n  faCropAlt: faCropAlt,\n  faCross: faCross,\n  faCrosshairs: faCrosshairs,\n  faCrow: faCrow,\n  faCrown: faCrown,\n  faCrutch: faCrutch,\n  faCube: faCube,\n  faCubes: faCubes,\n  faCut: faCut,\n  faDatabase: faDatabase,\n  faDeaf: faDeaf,\n  faDemocrat: faDemocrat,\n  faDesktop: faDesktop,\n  faDharmachakra: faDharmachakra,\n  faDiagnoses: faDiagnoses,\n  faDice: faDice,\n  faDiceD20: faDiceD20,\n  faDiceD6: faDiceD6,\n  faDiceFive: faDiceFive,\n  faDiceFour: faDiceFour,\n  faDiceOne: faDiceOne,\n  faDiceSix: faDiceSix,\n  faDiceThree: faDiceThree,\n  faDiceTwo: faDiceTwo,\n  faDigitalTachograph: faDigitalTachograph,\n  faDirections: faDirections,\n  faDisease: faDisease,\n  faDivide: faDivide,\n  faDizzy: faDizzy,\n  faDna: faDna,\n  faDog: faDog,\n  faDollarSign: faDollarSign,\n  faDolly: faDolly,\n  faDollyFlatbed: faDollyFlatbed,\n  faDonate: faDonate,\n  faDoorClosed: faDoorClosed,\n  faDoorOpen: faDoorOpen,\n  faDotCircle: faDotCircle,\n  faDove: faDove,\n  faDownload: faDownload,\n  faDraftingCompass: faDraftingCompass,\n  faDragon: faDragon,\n  faDrawPolygon: faDrawPolygon,\n  faDrum: faDrum,\n  faDrumSteelpan: faDrumSteelpan,\n  faDrumstickBite: faDrumstickBite,\n  faDumbbell: faDumbbell,\n  faDumpster: faDumpster,\n  faDumpsterFire: faDumpsterFire,\n  faDungeon: faDungeon,\n  faEdit: faEdit,\n  faEgg: faEgg,\n  faEject: faEject,\n  faEllipsisH: faEllipsisH,\n  faEllipsisV: faEllipsisV,\n  faEnvelope: faEnvelope,\n  faEnvelopeOpen: faEnvelopeOpen,\n  faEnvelopeOpenText: faEnvelopeOpenText,\n  faEnvelopeSquare: faEnvelopeSquare,\n  faEquals: faEquals,\n  faEraser: faEraser,\n  faEthernet: faEthernet,\n  faEuroSign: faEuroSign,\n  faExchangeAlt: faExchangeAlt,\n  faExclamation: faExclamation,\n  faExclamationCircle: faExclamationCircle,\n  faExclamationTriangle: faExclamationTriangle,\n  faExpand: faExpand,\n  faExpandAlt: faExpandAlt,\n  faExpandArrowsAlt: faExpandArrowsAlt,\n  faExternalLinkAlt: faExternalLinkAlt,\n  faExternalLinkSquareAlt: faExternalLinkSquareAlt,\n  faEye: faEye,\n  faEyeDropper: faEyeDropper,\n  faEyeSlash: faEyeSlash,\n  faFan: faFan,\n  faFastBackward: faFastBackward,\n  faFastForward: faFastForward,\n  faFaucet: faFaucet,\n  faFax: faFax,\n  faFeather: faFeather,\n  faFeatherAlt: faFeatherAlt,\n  faFemale: faFemale,\n  faFighterJet: faFighterJet,\n  faFile: faFile,\n  faFileAlt: faFileAlt,\n  faFileArchive: faFileArchive,\n  faFileAudio: faFileAudio,\n  faFileCode: faFileCode,\n  faFileContract: faFileContract,\n  faFileCsv: faFileCsv,\n  faFileDownload: faFileDownload,\n  faFileExcel: faFileExcel,\n  faFileExport: faFileExport,\n  faFileImage: faFileImage,\n  faFileImport: faFileImport,\n  faFileInvoice: faFileInvoice,\n  faFileInvoiceDollar: faFileInvoiceDollar,\n  faFileMedical: faFileMedical,\n  faFileMedicalAlt: faFileMedicalAlt,\n  faFilePdf: faFilePdf,\n  faFilePowerpoint: faFilePowerpoint,\n  faFilePrescription: faFilePrescription,\n  faFileSignature: faFileSignature,\n  faFileUpload: faFileUpload,\n  faFileVideo: faFileVideo,\n  faFileWord: faFileWord,\n  faFill: faFill,\n  faFillDrip: faFillDrip,\n  faFilm: faFilm,\n  faFilter: faFilter,\n  faFingerprint: faFingerprint,\n  faFire: faFire,\n  faFireAlt: faFireAlt,\n  faFireExtinguisher: faFireExtinguisher,\n  faFirstAid: faFirstAid,\n  faFish: faFish,\n  faFistRaised: faFistRaised,\n  faFlag: faFlag,\n  faFlagCheckered: faFlagCheckered,\n  faFlagUsa: faFlagUsa,\n  faFlask: faFlask,\n  faFlushed: faFlushed,\n  faFolder: faFolder,\n  faFolderMinus: faFolderMinus,\n  faFolderOpen: faFolderOpen,\n  faFolderPlus: faFolderPlus,\n  faFont: faFont,\n  faFontAwesomeLogoFull: faFontAwesomeLogoFull,\n  faFootballBall: faFootballBall,\n  faForward: faForward,\n  faFrog: faFrog,\n  faFrown: faFrown,\n  faFrownOpen: faFrownOpen,\n  faFunnelDollar: faFunnelDollar,\n  faFutbol: faFutbol,\n  faGamepad: faGamepad,\n  faGasPump: faGasPump,\n  faGavel: faGavel,\n  faGem: faGem,\n  faGenderless: faGenderless,\n  faGhost: faGhost,\n  faGift: faGift,\n  faGifts: faGifts,\n  faGlassCheers: faGlassCheers,\n  faGlassMartini: faGlassMartini,\n  faGlassMartiniAlt: faGlassMartiniAlt,\n  faGlassWhiskey: faGlassWhiskey,\n  faGlasses: faGlasses,\n  faGlobe: faGlobe,\n  faGlobeAfrica: faGlobeAfrica,\n  faGlobeAmericas: faGlobeAmericas,\n  faGlobeAsia: faGlobeAsia,\n  faGlobeEurope: faGlobeEurope,\n  faGolfBall: faGolfBall,\n  faGopuram: faGopuram,\n  faGraduationCap: faGraduationCap,\n  faGreaterThan: faGreaterThan,\n  faGreaterThanEqual: faGreaterThanEqual,\n  faGrimace: faGrimace,\n  faGrin: faGrin,\n  faGrinAlt: faGrinAlt,\n  faGrinBeam: faGrinBeam,\n  faGrinBeamSweat: faGrinBeamSweat,\n  faGrinHearts: faGrinHearts,\n  faGrinSquint: faGrinSquint,\n  faGrinSquintTears: faGrinSquintTears,\n  faGrinStars: faGrinStars,\n  faGrinTears: faGrinTears,\n  faGrinTongue: faGrinTongue,\n  faGrinTongueSquint: faGrinTongueSquint,\n  faGrinTongueWink: faGrinTongueWink,\n  faGrinWink: faGrinWink,\n  faGripHorizontal: faGripHorizontal,\n  faGripLines: faGripLines,\n  faGripLinesVertical: faGripLinesVertical,\n  faGripVertical: faGripVertical,\n  faGuitar: faGuitar,\n  faHSquare: faHSquare,\n  faHamburger: faHamburger,\n  faHammer: faHammer,\n  faHamsa: faHamsa,\n  faHandHolding: faHandHolding,\n  faHandHoldingHeart: faHandHoldingHeart,\n  faHandHoldingMedical: faHandHoldingMedical,\n  faHandHoldingUsd: faHandHoldingUsd,\n  faHandHoldingWater: faHandHoldingWater,\n  faHandLizard: faHandLizard,\n  faHandMiddleFinger: faHandMiddleFinger,\n  faHandPaper: faHandPaper,\n  faHandPeace: faHandPeace,\n  faHandPointDown: faHandPointDown,\n  faHandPointLeft: faHandPointLeft,\n  faHandPointRight: faHandPointRight,\n  faHandPointUp: faHandPointUp,\n  faHandPointer: faHandPointer,\n  faHandRock: faHandRock,\n  faHandScissors: faHandScissors,\n  faHandSparkles: faHandSparkles,\n  faHandSpock: faHandSpock,\n  faHands: faHands,\n  faHandsHelping: faHandsHelping,\n  faHandsWash: faHandsWash,\n  faHandshake: faHandshake,\n  faHandshakeAltSlash: faHandshakeAltSlash,\n  faHandshakeSlash: faHandshakeSlash,\n  faHanukiah: faHanukiah,\n  faHardHat: faHardHat,\n  faHashtag: faHashtag,\n  faHatCowboy: faHatCowboy,\n  faHatCowboySide: faHatCowboySide,\n  faHatWizard: faHatWizard,\n  faHdd: faHdd,\n  faHeadSideCough: faHeadSideCough,\n  faHeadSideCoughSlash: faHeadSideCoughSlash,\n  faHeadSideMask: faHeadSideMask,\n  faHeadSideVirus: faHeadSideVirus,\n  faHeading: faHeading,\n  faHeadphones: faHeadphones,\n  faHeadphonesAlt: faHeadphonesAlt,\n  faHeadset: faHeadset,\n  faHeart: faHeart,\n  faHeartBroken: faHeartBroken,\n  faHeartbeat: faHeartbeat,\n  faHelicopter: faHelicopter,\n  faHighlighter: faHighlighter,\n  faHiking: faHiking,\n  faHippo: faHippo,\n  faHistory: faHistory,\n  faHockeyPuck: faHockeyPuck,\n  faHollyBerry: faHollyBerry,\n  faHome: faHome,\n  faHorse: faHorse,\n  faHorseHead: faHorseHead,\n  faHospital: faHospital,\n  faHospitalAlt: faHospitalAlt,\n  faHospitalSymbol: faHospitalSymbol,\n  faHospitalUser: faHospitalUser,\n  faHotTub: faHotTub,\n  faHotdog: faHotdog,\n  faHotel: faHotel,\n  faHourglass: faHourglass,\n  faHourglassEnd: faHourglassEnd,\n  faHourglassHalf: faHourglassHalf,\n  faHourglassStart: faHourglassStart,\n  faHouseDamage: faHouseDamage,\n  faHouseUser: faHouseUser,\n  faHryvnia: faHryvnia,\n  faICursor: faICursor,\n  faIceCream: faIceCream,\n  faIcicles: faIcicles,\n  faIcons: faIcons,\n  faIdBadge: faIdBadge,\n  faIdCard: faIdCard,\n  faIdCardAlt: faIdCardAlt,\n  faIgloo: faIgloo,\n  faImage: faImage,\n  faImages: faImages,\n  faInbox: faInbox,\n  faIndent: faIndent,\n  faIndustry: faIndustry,\n  faInfinity: faInfinity,\n  faInfo: faInfo,\n  faInfoCircle: faInfoCircle,\n  faItalic: faItalic,\n  faJedi: faJedi,\n  faJoint: faJoint,\n  faJournalWhills: faJournalWhills,\n  faKaaba: faKaaba,\n  faKey: faKey,\n  faKeyboard: faKeyboard,\n  faKhanda: faKhanda,\n  faKiss: faKiss,\n  faKissBeam: faKissBeam,\n  faKissWinkHeart: faKissWinkHeart,\n  faKiwiBird: faKiwiBird,\n  faLandmark: faLandmark,\n  faLanguage: faLanguage,\n  faLaptop: faLaptop,\n  faLaptopCode: faLaptopCode,\n  faLaptopHouse: faLaptopHouse,\n  faLaptopMedical: faLaptopMedical,\n  faLaugh: faLaugh,\n  faLaughBeam: faLaughBeam,\n  faLaughSquint: faLaughSquint,\n  faLaughWink: faLaughWink,\n  faLayerGroup: faLayerGroup,\n  faLeaf: faLeaf,\n  faLemon: faLemon,\n  faLessThan: faLessThan,\n  faLessThanEqual: faLessThanEqual,\n  faLevelDownAlt: faLevelDownAlt,\n  faLevelUpAlt: faLevelUpAlt,\n  faLifeRing: faLifeRing,\n  faLightbulb: faLightbulb,\n  faLink: faLink,\n  faLiraSign: faLiraSign,\n  faList: faList,\n  faListAlt: faListAlt,\n  faListOl: faListOl,\n  faListUl: faListUl,\n  faLocationArrow: faLocationArrow,\n  faLock: faLock,\n  faLockOpen: faLockOpen,\n  faLongArrowAltDown: faLongArrowAltDown,\n  faLongArrowAltLeft: faLongArrowAltLeft,\n  faLongArrowAltRight: faLongArrowAltRight,\n  faLongArrowAltUp: faLongArrowAltUp,\n  faLowVision: faLowVision,\n  faLuggageCart: faLuggageCart,\n  faLungs: faLungs,\n  faLungsVirus: faLungsVirus,\n  faMagic: faMagic,\n  faMagnet: faMagnet,\n  faMailBulk: faMailBulk,\n  faMale: faMale,\n  faMap: faMap,\n  faMapMarked: faMapMarked,\n  faMapMarkedAlt: faMapMarkedAlt,\n  faMapMarker: faMapMarker,\n  faMapMarkerAlt: faMapMarkerAlt,\n  faMapPin: faMapPin,\n  faMapSigns: faMapSigns,\n  faMarker: faMarker,\n  faMars: faMars,\n  faMarsDouble: faMarsDouble,\n  faMarsStroke: faMarsStroke,\n  faMarsStrokeH: faMarsStrokeH,\n  faMarsStrokeV: faMarsStrokeV,\n  faMask: faMask,\n  faMedal: faMedal,\n  faMedkit: faMedkit,\n  faMeh: faMeh,\n  faMehBlank: faMehBlank,\n  faMehRollingEyes: faMehRollingEyes,\n  faMemory: faMemory,\n  faMenorah: faMenorah,\n  faMercury: faMercury,\n  faMeteor: faMeteor,\n  faMicrochip: faMicrochip,\n  faMicrophone: faMicrophone,\n  faMicrophoneAlt: faMicrophoneAlt,\n  faMicrophoneAltSlash: faMicrophoneAltSlash,\n  faMicrophoneSlash: faMicrophoneSlash,\n  faMicroscope: faMicroscope,\n  faMinus: faMinus,\n  faMinusCircle: faMinusCircle,\n  faMinusSquare: faMinusSquare,\n  faMitten: faMitten,\n  faMobile: faMobile,\n  faMobileAlt: faMobileAlt,\n  faMoneyBill: faMoneyBill,\n  faMoneyBillAlt: faMoneyBillAlt,\n  faMoneyBillWave: faMoneyBillWave,\n  faMoneyBillWaveAlt: faMoneyBillWaveAlt,\n  faMoneyCheck: faMoneyCheck,\n  faMoneyCheckAlt: faMoneyCheckAlt,\n  faMonument: faMonument,\n  faMoon: faMoon,\n  faMortarPestle: faMortarPestle,\n  faMosque: faMosque,\n  faMotorcycle: faMotorcycle,\n  faMountain: faMountain,\n  faMouse: faMouse,\n  faMousePointer: faMousePointer,\n  faMugHot: faMugHot,\n  faMusic: faMusic,\n  faNetworkWired: faNetworkWired,\n  faNeuter: faNeuter,\n  faNewspaper: faNewspaper,\n  faNotEqual: faNotEqual,\n  faNotesMedical: faNotesMedical,\n  faObjectGroup: faObjectGroup,\n  faObjectUngroup: faObjectUngroup,\n  faOilCan: faOilCan,\n  faOm: faOm,\n  faOtter: faOtter,\n  faOutdent: faOutdent,\n  faPager: faPager,\n  faPaintBrush: faPaintBrush,\n  faPaintRoller: faPaintRoller,\n  faPalette: faPalette,\n  faPallet: faPallet,\n  faPaperPlane: faPaperPlane,\n  faPaperclip: faPaperclip,\n  faParachuteBox: faParachuteBox,\n  faParagraph: faParagraph,\n  faParking: faParking,\n  faPassport: faPassport,\n  faPastafarianism: faPastafarianism,\n  faPaste: faPaste,\n  faPause: faPause,\n  faPauseCircle: faPauseCircle,\n  faPaw: faPaw,\n  faPeace: faPeace,\n  faPen: faPen,\n  faPenAlt: faPenAlt,\n  faPenFancy: faPenFancy,\n  faPenNib: faPenNib,\n  faPenSquare: faPenSquare,\n  faPencilAlt: faPencilAlt,\n  faPencilRuler: faPencilRuler,\n  faPeopleArrows: faPeopleArrows,\n  faPeopleCarry: faPeopleCarry,\n  faPepperHot: faPepperHot,\n  faPercent: faPercent,\n  faPercentage: faPercentage,\n  faPersonBooth: faPersonBooth,\n  faPhone: faPhone,\n  faPhoneAlt: faPhoneAlt,\n  faPhoneSlash: faPhoneSlash,\n  faPhoneSquare: faPhoneSquare,\n  faPhoneSquareAlt: faPhoneSquareAlt,\n  faPhoneVolume: faPhoneVolume,\n  faPhotoVideo: faPhotoVideo,\n  faPiggyBank: faPiggyBank,\n  faPills: faPills,\n  faPizzaSlice: faPizzaSlice,\n  faPlaceOfWorship: faPlaceOfWorship,\n  faPlane: faPlane,\n  faPlaneArrival: faPlaneArrival,\n  faPlaneDeparture: faPlaneDeparture,\n  faPlaneSlash: faPlaneSlash,\n  faPlay: faPlay,\n  faPlayCircle: faPlayCircle,\n  faPlug: faPlug,\n  faPlus: faPlus,\n  faPlusCircle: faPlusCircle,\n  faPlusSquare: faPlusSquare,\n  faPodcast: faPodcast,\n  faPoll: faPoll,\n  faPollH: faPollH,\n  faPoo: faPoo,\n  faPooStorm: faPooStorm,\n  faPoop: faPoop,\n  faPortrait: faPortrait,\n  faPoundSign: faPoundSign,\n  faPowerOff: faPowerOff,\n  faPray: faPray,\n  faPrayingHands: faPrayingHands,\n  faPrescription: faPrescription,\n  faPrescriptionBottle: faPrescriptionBottle,\n  faPrescriptionBottleAlt: faPrescriptionBottleAlt,\n  faPrint: faPrint,\n  faProcedures: faProcedures,\n  faProjectDiagram: faProjectDiagram,\n  faPumpMedical: faPumpMedical,\n  faPumpSoap: faPumpSoap,\n  faPuzzlePiece: faPuzzlePiece,\n  faQrcode: faQrcode,\n  faQuestion: faQuestion,\n  faQuestionCircle: faQuestionCircle,\n  faQuidditch: faQuidditch,\n  faQuoteLeft: faQuoteLeft,\n  faQuoteRight: faQuoteRight,\n  faQuran: faQuran,\n  faRadiation: faRadiation,\n  faRadiationAlt: faRadiationAlt,\n  faRainbow: faRainbow,\n  faRandom: faRandom,\n  faReceipt: faReceipt,\n  faRecordVinyl: faRecordVinyl,\n  faRecycle: faRecycle,\n  faRedo: faRedo,\n  faRedoAlt: faRedoAlt,\n  faRegistered: faRegistered,\n  faRemoveFormat: faRemoveFormat,\n  faReply: faReply,\n  faReplyAll: faReplyAll,\n  faRepublican: faRepublican,\n  faRestroom: faRestroom,\n  faRetweet: faRetweet,\n  faRibbon: faRibbon,\n  faRing: faRing,\n  faRoad: faRoad,\n  faRobot: faRobot,\n  faRocket: faRocket,\n  faRoute: faRoute,\n  faRss: faRss,\n  faRssSquare: faRssSquare,\n  faRubleSign: faRubleSign,\n  faRuler: faRuler,\n  faRulerCombined: faRulerCombined,\n  faRulerHorizontal: faRulerHorizontal,\n  faRulerVertical: faRulerVertical,\n  faRunning: faRunning,\n  faRupeeSign: faRupeeSign,\n  faSadCry: faSadCry,\n  faSadTear: faSadTear,\n  faSatellite: faSatellite,\n  faSatelliteDish: faSatelliteDish,\n  faSave: faSave,\n  faSchool: faSchool,\n  faScrewdriver: faScrewdriver,\n  faScroll: faScroll,\n  faSdCard: faSdCard,\n  faSearch: faSearch,\n  faSearchDollar: faSearchDollar,\n  faSearchLocation: faSearchLocation,\n  faSearchMinus: faSearchMinus,\n  faSearchPlus: faSearchPlus,\n  faSeedling: faSeedling,\n  faServer: faServer,\n  faShapes: faShapes,\n  faShare: faShare,\n  faShareAlt: faShareAlt,\n  faShareAltSquare: faShareAltSquare,\n  faShareSquare: faShareSquare,\n  faShekelSign: faShekelSign,\n  faShieldAlt: faShieldAlt,\n  faShieldVirus: faShieldVirus,\n  faShip: faShip,\n  faShippingFast: faShippingFast,\n  faShoePrints: faShoePrints,\n  faShoppingBag: faShoppingBag,\n  faShoppingBasket: faShoppingBasket,\n  faShoppingCart: faShoppingCart,\n  faShower: faShower,\n  faShuttleVan: faShuttleVan,\n  faSign: faSign,\n  faSignInAlt: faSignInAlt,\n  faSignLanguage: faSignLanguage,\n  faSignOutAlt: faSignOutAlt,\n  faSignal: faSignal,\n  faSignature: faSignature,\n  faSimCard: faSimCard,\n  faSink: faSink,\n  faSitemap: faSitemap,\n  faSkating: faSkating,\n  faSkiing: faSkiing,\n  faSkiingNordic: faSkiingNordic,\n  faSkull: faSkull,\n  faSkullCrossbones: faSkullCrossbones,\n  faSlash: faSlash,\n  faSleigh: faSleigh,\n  faSlidersH: faSlidersH,\n  faSmile: faSmile,\n  faSmileBeam: faSmileBeam,\n  faSmileWink: faSmileWink,\n  faSmog: faSmog,\n  faSmoking: faSmoking,\n  faSmokingBan: faSmokingBan,\n  faSms: faSms,\n  faSnowboarding: faSnowboarding,\n  faSnowflake: faSnowflake,\n  faSnowman: faSnowman,\n  faSnowplow: faSnowplow,\n  faSoap: faSoap,\n  faSocks: faSocks,\n  faSolarPanel: faSolarPanel,\n  faSort: faSort,\n  faSortAlphaDown: faSortAlphaDown,\n  faSortAlphaDownAlt: faSortAlphaDownAlt,\n  faSortAlphaUp: faSortAlphaUp,\n  faSortAlphaUpAlt: faSortAlphaUpAlt,\n  faSortAmountDown: faSortAmountDown,\n  faSortAmountDownAlt: faSortAmountDownAlt,\n  faSortAmountUp: faSortAmountUp,\n  faSortAmountUpAlt: faSortAmountUpAlt,\n  faSortDown: faSortDown,\n  faSortNumericDown: faSortNumericDown,\n  faSortNumericDownAlt: faSortNumericDownAlt,\n  faSortNumericUp: faSortNumericUp,\n  faSortNumericUpAlt: faSortNumericUpAlt,\n  faSortUp: faSortUp,\n  faSpa: faSpa,\n  faSpaceShuttle: faSpaceShuttle,\n  faSpellCheck: faSpellCheck,\n  faSpider: faSpider,\n  faSpinner: faSpinner,\n  faSplotch: faSplotch,\n  faSprayCan: faSprayCan,\n  faSquare: faSquare,\n  faSquareFull: faSquareFull,\n  faSquareRootAlt: faSquareRootAlt,\n  faStamp: faStamp,\n  faStar: faStar,\n  faStarAndCrescent: faStarAndCrescent,\n  faStarHalf: faStarHalf,\n  faStarHalfAlt: faStarHalfAlt,\n  faStarOfDavid: faStarOfDavid,\n  faStarOfLife: faStarOfLife,\n  faStepBackward: faStepBackward,\n  faStepForward: faStepForward,\n  faStethoscope: faStethoscope,\n  faStickyNote: faStickyNote,\n  faStop: faStop,\n  faStopCircle: faStopCircle,\n  faStopwatch: faStopwatch,\n  faStopwatch20: faStopwatch20,\n  faStore: faStore,\n  faStoreAlt: faStoreAlt,\n  faStoreAltSlash: faStoreAltSlash,\n  faStoreSlash: faStoreSlash,\n  faStream: faStream,\n  faStreetView: faStreetView,\n  faStrikethrough: faStrikethrough,\n  faStroopwafel: faStroopwafel,\n  faSubscript: faSubscript,\n  faSubway: faSubway,\n  faSuitcase: faSuitcase,\n  faSuitcaseRolling: faSuitcaseRolling,\n  faSun: faSun,\n  faSuperscript: faSuperscript,\n  faSurprise: faSurprise,\n  faSwatchbook: faSwatchbook,\n  faSwimmer: faSwimmer,\n  faSwimmingPool: faSwimmingPool,\n  faSynagogue: faSynagogue,\n  faSync: faSync,\n  faSyncAlt: faSyncAlt,\n  faSyringe: faSyringe,\n  faTable: faTable,\n  faTableTennis: faTableTennis,\n  faTablet: faTablet,\n  faTabletAlt: faTabletAlt,\n  faTablets: faTablets,\n  faTachometerAlt: faTachometerAlt,\n  faTag: faTag,\n  faTags: faTags,\n  faTape: faTape,\n  faTasks: faTasks,\n  faTaxi: faTaxi,\n  faTeeth: faTeeth,\n  faTeethOpen: faTeethOpen,\n  faTemperatureHigh: faTemperatureHigh,\n  faTemperatureLow: faTemperatureLow,\n  faTenge: faTenge,\n  faTerminal: faTerminal,\n  faTextHeight: faTextHeight,\n  faTextWidth: faTextWidth,\n  faTh: faTh,\n  faThLarge: faThLarge,\n  faThList: faThList,\n  faTheaterMasks: faTheaterMasks,\n  faThermometer: faThermometer,\n  faThermometerEmpty: faThermometerEmpty,\n  faThermometerFull: faThermometerFull,\n  faThermometerHalf: faThermometerHalf,\n  faThermometerQuarter: faThermometerQuarter,\n  faThermometerThreeQuarters: faThermometerThreeQuarters,\n  faThumbsDown: faThumbsDown,\n  faThumbsUp: faThumbsUp,\n  faThumbtack: faThumbtack,\n  faTicketAlt: faTicketAlt,\n  faTimes: faTimes,\n  faTimesCircle: faTimesCircle,\n  faTint: faTint,\n  faTintSlash: faTintSlash,\n  faTired: faTired,\n  faToggleOff: faToggleOff,\n  faToggleOn: faToggleOn,\n  faToilet: faToilet,\n  faToiletPaper: faToiletPaper,\n  faToiletPaperSlash: faToiletPaperSlash,\n  faToolbox: faToolbox,\n  faTools: faTools,\n  faTooth: faTooth,\n  faTorah: faTorah,\n  faToriiGate: faToriiGate,\n  faTractor: faTractor,\n  faTrademark: faTrademark,\n  faTrafficLight: faTrafficLight,\n  faTrailer: faTrailer,\n  faTrain: faTrain,\n  faTram: faTram,\n  faTransgender: faTransgender,\n  faTransgenderAlt: faTransgenderAlt,\n  faTrash: faTrash,\n  faTrashAlt: faTrashAlt,\n  faTrashRestore: faTrashRestore,\n  faTrashRestoreAlt: faTrashRestoreAlt,\n  faTree: faTree,\n  faTrophy: faTrophy,\n  faTruck: faTruck,\n  faTruckLoading: faTruckLoading,\n  faTruckMonster: faTruckMonster,\n  faTruckMoving: faTruckMoving,\n  faTruckPickup: faTruckPickup,\n  faTshirt: faTshirt,\n  faTty: faTty,\n  faTv: faTv,\n  faUmbrella: faUmbrella,\n  faUmbrellaBeach: faUmbrellaBeach,\n  faUnderline: faUnderline,\n  faUndo: faUndo,\n  faUndoAlt: faUndoAlt,\n  faUniversalAccess: faUniversalAccess,\n  faUniversity: faUniversity,\n  faUnlink: faUnlink,\n  faUnlock: faUnlock,\n  faUnlockAlt: faUnlockAlt,\n  faUpload: faUpload,\n  faUser: faUser,\n  faUserAlt: faUserAlt,\n  faUserAltSlash: faUserAltSlash,\n  faUserAstronaut: faUserAstronaut,\n  faUserCheck: faUserCheck,\n  faUserCircle: faUserCircle,\n  faUserClock: faUserClock,\n  faUserCog: faUserCog,\n  faUserEdit: faUserEdit,\n  faUserFriends: faUserFriends,\n  faUserGraduate: faUserGraduate,\n  faUserInjured: faUserInjured,\n  faUserLock: faUserLock,\n  faUserMd: faUserMd,\n  faUserMinus: faUserMinus,\n  faUserNinja: faUserNinja,\n  faUserNurse: faUserNurse,\n  faUserPlus: faUserPlus,\n  faUserSecret: faUserSecret,\n  faUserShield: faUserShield,\n  faUserSlash: faUserSlash,\n  faUserTag: faUserTag,\n  faUserTie: faUserTie,\n  faUserTimes: faUserTimes,\n  faUsers: faUsers,\n  faUsersCog: faUsersCog,\n  faUsersSlash: faUsersSlash,\n  faUtensilSpoon: faUtensilSpoon,\n  faUtensils: faUtensils,\n  faVectorSquare: faVectorSquare,\n  faVenus: faVenus,\n  faVenusDouble: faVenusDouble,\n  faVenusMars: faVenusMars,\n  faVest: faVest,\n  faVestPatches: faVestPatches,\n  faVial: faVial,\n  faVials: faVials,\n  faVideo: faVideo,\n  faVideoSlash: faVideoSlash,\n  faVihara: faVihara,\n  faVirus: faVirus,\n  faVirusSlash: faVirusSlash,\n  faViruses: faViruses,\n  faVoicemail: faVoicemail,\n  faVolleyballBall: faVolleyballBall,\n  faVolumeDown: faVolumeDown,\n  faVolumeMute: faVolumeMute,\n  faVolumeOff: faVolumeOff,\n  faVolumeUp: faVolumeUp,\n  faVoteYea: faVoteYea,\n  faVrCardboard: faVrCardboard,\n  faWalking: faWalking,\n  faWallet: faWallet,\n  faWarehouse: faWarehouse,\n  faWater: faWater,\n  faWaveSquare: faWaveSquare,\n  faWeight: faWeight,\n  faWeightHanging: faWeightHanging,\n  faWheelchair: faWheelchair,\n  faWifi: faWifi,\n  faWind: faWind,\n  faWindowClose: faWindowClose,\n  faWindowMaximize: faWindowMaximize,\n  faWindowMinimize: faWindowMinimize,\n  faWindowRestore: faWindowRestore,\n  faWineBottle: faWineBottle,\n  faWineGlass: faWineGlass,\n  faWineGlassAlt: faWineGlassAlt,\n  faWonSign: faWonSign,\n  faWrench: faWrench,\n  faXRay: faXRay,\n  faYenSign: faYenSign,\n  faYinYang: faYinYang\n};\n\nexport { _iconsCache as fas, prefix, faAd, faAddressBook, faAddressCard, faAdjust, faAirFreshener, faAlignCenter, faAlignJustify, faAlignLeft, faAlignRight, faAllergies, faAmbulance, faAmericanSignLanguageInterpreting, faAnchor, faAngleDoubleDown, faAngleDoubleLeft, faAngleDoubleRight, faAngleDoubleUp, faAngleDown, faAngleLeft, faAngleRight, faAngleUp, faAngry, faAnkh, faAppleAlt, faArchive, faArchway, faArrowAltCircleDown, faArrowAltCircleLeft, faArrowAltCircleRight, faArrowAltCircleUp, faArrowCircleDown, faArrowCircleLeft, faArrowCircleRight, faArrowCircleUp, faArrowDown, faArrowLeft, faArrowRight, faArrowUp, faArrowsAlt, faArrowsAltH, faArrowsAltV, faAssistiveListeningSystems, faAsterisk, faAt, faAtlas, faAtom, faAudioDescription, faAward, faBaby, faBabyCarriage, faBackspace, faBackward, faBacon, faBacteria, faBacterium, faBahai, faBalanceScale, faBalanceScaleLeft, faBalanceScaleRight, faBan, faBandAid, faBarcode, faBars, faBaseballBall, faBasketballBall, faBath, faBatteryEmpty, faBatteryFull, faBatteryHalf, faBatteryQuarter, faBatteryThreeQuarters, faBed, faBeer, faBell, faBellSlash, faBezierCurve, faBible, faBicycle, faBiking, faBinoculars, faBiohazard, faBirthdayCake, faBlender, faBlenderPhone, faBlind, faBlog, faBold, faBolt, faBomb, faBone, faBong, faBook, faBookDead, faBookMedical, faBookOpen, faBookReader, faBookmark, faBorderAll, faBorderNone, faBorderStyle, faBowlingBall, faBox, faBoxOpen, faBoxTissue, faBoxes, faBraille, faBrain, faBreadSlice, faBriefcase, faBriefcaseMedical, faBroadcastTower, faBroom, faBrush, faBug, faBuilding, faBullhorn, faBullseye, faBurn, faBus, faBusAlt, faBusinessTime, faCalculator, faCalendar, faCalendarAlt, faCalendarCheck, faCalendarDay, faCalendarMinus, faCalendarPlus, faCalendarTimes, faCalendarWeek, faCamera, faCameraRetro, faCampground, faCandyCane, faCannabis, faCapsules, faCar, faCarAlt, faCarBattery, faCarCrash, faCarSide, faCaravan, faCaretDown, faCaretLeft, faCaretRight, faCaretSquareDown, faCaretSquareLeft, faCaretSquareRight, faCaretSquareUp, faCaretUp, faCarrot, faCartArrowDown, faCartPlus, faCashRegister, faCat, faCertificate, faChair, faChalkboard, faChalkboardTeacher, faChargingStation, faChartArea, faChartBar, faChartLine, faChartPie, faCheck, faCheckCircle, faCheckDouble, faCheckSquare, faCheese, faChess, faChessBishop, faChessBoard, faChessKing, faChessKnight, faChessPawn, faChessQueen, faChessRook, faChevronCircleDown, faChevronCircleLeft, faChevronCircleRight, faChevronCircleUp, faChevronDown, faChevronLeft, faChevronRight, faChevronUp, faChild, faChurch, faCircle, faCircleNotch, faCity, faClinicMedical, faClipboard, faClipboardCheck, faClipboardList, faClock, faClone, faClosedCaptioning, faCloud, faCloudDownloadAlt, faCloudMeatball, faCloudMoon, faCloudMoonRain, faCloudRain, faCloudShowersHeavy, faCloudSun, faCloudSunRain, faCloudUploadAlt, faCocktail, faCode, faCodeBranch, faCoffee, faCog, faCogs, faCoins, faColumns, faComment, faCommentAlt, faCommentDollar, faCommentDots, faCommentMedical, faCommentSlash, faComments, faCommentsDollar, faCompactDisc, faCompass, faCompress, faCompressAlt, faCompressArrowsAlt, faConciergeBell, faCookie, faCookieBite, faCopy, faCopyright, faCouch, faCreditCard, faCrop, faCropAlt, faCross, faCrosshairs, faCrow, faCrown, faCrutch, faCube, faCubes, faCut, faDatabase, faDeaf, faDemocrat, faDesktop, faDharmachakra, faDiagnoses, faDice, faDiceD20, faDiceD6, faDiceFive, faDiceFour, faDiceOne, faDiceSix, faDiceThree, faDiceTwo, faDigitalTachograph, faDirections, faDisease, faDivide, faDizzy, faDna, faDog, faDollarSign, faDolly, faDollyFlatbed, faDonate, faDoorClosed, faDoorOpen, faDotCircle, faDove, faDownload, faDraftingCompass, faDragon, faDrawPolygon, faDrum, faDrumSteelpan, faDrumstickBite, faDumbbell, faDumpster, faDumpsterFire, faDungeon, faEdit, faEgg, faEject, faEllipsisH, faEllipsisV, faEnvelope, faEnvelopeOpen, faEnvelopeOpenText, faEnvelopeSquare, faEquals, faEraser, faEthernet, faEuroSign, faExchangeAlt, faExclamation, faExclamationCircle, faExclamationTriangle, faExpand, faExpandAlt, faExpandArrowsAlt, faExternalLinkAlt, faExternalLinkSquareAlt, faEye, faEyeDropper, faEyeSlash, faFan, faFastBackward, faFastForward, faFaucet, faFax, faFeather, faFeatherAlt, faFemale, faFighterJet, faFile, faFileAlt, faFileArchive, faFileAudio, faFileCode, faFileContract, faFileCsv, faFileDownload, faFileExcel, faFileExport, faFileImage, faFileImport, faFileInvoice, faFileInvoiceDollar, faFileMedical, faFileMedicalAlt, faFilePdf, faFilePowerpoint, faFilePrescription, faFileSignature, faFileUpload, faFileVideo, faFileWord, faFill, faFillDrip, faFilm, faFilter, faFingerprint, faFire, faFireAlt, faFireExtinguisher, faFirstAid, faFish, faFistRaised, faFlag, faFlagCheckered, faFlagUsa, faFlask, faFlushed, faFolder, faFolderMinus, faFolderOpen, faFolderPlus, faFont, faFontAwesomeLogoFull, faFootballBall, faForward, faFrog, faFrown, faFrownOpen, faFunnelDollar, faFutbol, faGamepad, faGasPump, faGavel, faGem, faGenderless, faGhost, faGift, faGifts, faGlassCheers, faGlassMartini, faGlassMartiniAlt, faGlassWhiskey, faGlasses, faGlobe, faGlobeAfrica, faGlobeAmericas, faGlobeAsia, faGlobeEurope, faGolfBall, faGopuram, faGraduationCap, faGreaterThan, faGreaterThanEqual, faGrimace, faGrin, faGrinAlt, faGrinBeam, faGrinBeamSweat, faGrinHearts, faGrinSquint, faGrinSquintTears, faGrinStars, faGrinTears, faGrinTongue, faGrinTongueSquint, faGrinTongueWink, faGrinWink, faGripHorizontal, faGripLines, faGripLinesVertical, faGripVertical, faGuitar, faHSquare, faHamburger, faHammer, faHamsa, faHandHolding, faHandHoldingHeart, faHandHoldingMedical, faHandHoldingUsd, faHandHoldingWater, faHandLizard, faHandMiddleFinger, faHandPaper, faHandPeace, faHandPointDown, faHandPointLeft, faHandPointRight, faHandPointUp, faHandPointer, faHandRock, faHandScissors, faHandSparkles, faHandSpock, faHands, faHandsHelping, faHandsWash, faHandshake, faHandshakeAltSlash, faHandshakeSlash, faHanukiah, faHardHat, faHashtag, faHatCowboy, faHatCowboySide, faHatWizard, faHdd, faHeadSideCough, faHeadSideCoughSlash, faHeadSideMask, faHeadSideVirus, faHeading, faHeadphones, faHeadphonesAlt, faHeadset, faHeart, faHeartBroken, faHeartbeat, faHelicopter, faHighlighter, faHiking, faHippo, faHistory, faHockeyPuck, faHollyBerry, faHome, faHorse, faHorseHead, faHospital, faHospitalAlt, faHospitalSymbol, faHospitalUser, faHotTub, faHotdog, faHotel, faHourglass, faHourglassEnd, faHourglassHalf, faHourglassStart, faHouseDamage, faHouseUser, faHryvnia, faICursor, faIceCream, faIcicles, faIcons, faIdBadge, faIdCard, faIdCardAlt, faIgloo, faImage, faImages, faInbox, faIndent, faIndustry, faInfinity, faInfo, faInfoCircle, faItalic, faJedi, faJoint, faJournalWhills, faKaaba, faKey, faKeyboard, faKhanda, faKiss, faKissBeam, faKissWinkHeart, faKiwiBird, faLandmark, faLanguage, faLaptop, faLaptopCode, faLaptopHouse, faLaptopMedical, faLaugh, faLaughBeam, faLaughSquint, faLaughWink, faLayerGroup, faLeaf, faLemon, faLessThan, faLessThanEqual, faLevelDownAlt, faLevelUpAlt, faLifeRing, faLightbulb, faLink, faLiraSign, faList, faListAlt, faListOl, faListUl, faLocationArrow, faLock, faLockOpen, faLongArrowAltDown, faLongArrowAltLeft, faLongArrowAltRight, faLongArrowAltUp, faLowVision, faLuggageCart, faLungs, faLungsVirus, faMagic, faMagnet, faMailBulk, faMale, faMap, faMapMarked, faMapMarkedAlt, faMapMarker, faMapMarkerAlt, faMapPin, faMapSigns, faMarker, faMars, faMarsDouble, faMarsStroke, faMarsStrokeH, faMarsStrokeV, faMask, faMedal, faMedkit, faMeh, faMehBlank, faMehRollingEyes, faMemory, faMenorah, faMercury, faMeteor, faMicrochip, faMicrophone, faMicrophoneAlt, faMicrophoneAltSlash, faMicrophoneSlash, faMicroscope, faMinus, faMinusCircle, faMinusSquare, faMitten, faMobile, faMobileAlt, faMoneyBill, faMoneyBillAlt, faMoneyBillWave, faMoneyBillWaveAlt, faMoneyCheck, faMoneyCheckAlt, faMonument, faMoon, faMortarPestle, faMosque, faMotorcycle, faMountain, faMouse, faMousePointer, faMugHot, faMusic, faNetworkWired, faNeuter, faNewspaper, faNotEqual, faNotesMedical, faObjectGroup, faObjectUngroup, faOilCan, faOm, faOtter, faOutdent, faPager, faPaintBrush, faPaintRoller, faPalette, faPallet, faPaperPlane, faPaperclip, faParachuteBox, faParagraph, faParking, faPassport, faPastafarianism, faPaste, faPause, faPauseCircle, faPaw, faPeace, faPen, faPenAlt, faPenFancy, faPenNib, faPenSquare, faPencilAlt, faPencilRuler, faPeopleArrows, faPeopleCarry, faPepperHot, faPercent, faPercentage, faPersonBooth, faPhone, faPhoneAlt, faPhoneSlash, faPhoneSquare, faPhoneSquareAlt, faPhoneVolume, faPhotoVideo, faPiggyBank, faPills, faPizzaSlice, faPlaceOfWorship, faPlane, faPlaneArrival, faPlaneDeparture, faPlaneSlash, faPlay, faPlayCircle, faPlug, faPlus, faPlusCircle, faPlusSquare, faPodcast, faPoll, faPollH, faPoo, faPooStorm, faPoop, faPortrait, faPoundSign, faPowerOff, faPray, faPrayingHands, faPrescription, faPrescriptionBottle, faPrescriptionBottleAlt, faPrint, faProcedures, faProjectDiagram, faPumpMedical, faPumpSoap, faPuzzlePiece, faQrcode, faQuestion, faQuestionCircle, faQuidditch, faQuoteLeft, faQuoteRight, faQuran, faRadiation, faRadiationAlt, faRainbow, faRandom, faReceipt, faRecordVinyl, faRecycle, faRedo, faRedoAlt, faRegistered, faRemoveFormat, faReply, faReplyAll, faRepublican, faRestroom, faRetweet, faRibbon, faRing, faRoad, faRobot, faRocket, faRoute, faRss, faRssSquare, faRubleSign, faRuler, faRulerCombined, faRulerHorizontal, faRulerVertical, faRunning, faRupeeSign, faSadCry, faSadTear, faSatellite, faSatelliteDish, faSave, faSchool, faScrewdriver, faScroll, faSdCard, faSearch, faSearchDollar, faSearchLocation, faSearchMinus, faSearchPlus, faSeedling, faServer, faShapes, faShare, faShareAlt, faShareAltSquare, faShareSquare, faShekelSign, faShieldAlt, faShieldVirus, faShip, faShippingFast, faShoePrints, faShoppingBag, faShoppingBasket, faShoppingCart, faShower, faShuttleVan, faSign, faSignInAlt, faSignLanguage, faSignOutAlt, faSignal, faSignature, faSimCard, faSink, faSitemap, faSkating, faSkiing, faSkiingNordic, faSkull, faSkullCrossbones, faSlash, faSleigh, faSlidersH, faSmile, faSmileBeam, faSmileWink, faSmog, faSmoking, faSmokingBan, faSms, faSnowboarding, faSnowflake, faSnowman, faSnowplow, faSoap, faSocks, faSolarPanel, faSort, faSortAlphaDown, faSortAlphaDownAlt, faSortAlphaUp, faSortAlphaUpAlt, faSortAmountDown, faSortAmountDownAlt, faSortAmountUp, faSortAmountUpAlt, faSortDown, faSortNumericDown, faSortNumericDownAlt, faSortNumericUp, faSortNumericUpAlt, faSortUp, faSpa, faSpaceShuttle, faSpellCheck, faSpider, faSpinner, faSplotch, faSprayCan, faSquare, faSquareFull, faSquareRootAlt, faStamp, faStar, faStarAndCrescent, faStarHalf, faStarHalfAlt, faStarOfDavid, faStarOfLife, faStepBackward, faStepForward, faStethoscope, faStickyNote, faStop, faStopCircle, faStopwatch, faStopwatch20, faStore, faStoreAlt, faStoreAltSlash, faStoreSlash, faStream, faStreetView, faStrikethrough, faStroopwafel, faSubscript, faSubway, faSuitcase, faSuitcaseRolling, faSun, faSuperscript, faSurprise, faSwatchbook, faSwimmer, faSwimmingPool, faSynagogue, faSync, faSyncAlt, faSyringe, faTable, faTableTennis, faTablet, faTabletAlt, faTablets, faTachometerAlt, faTag, faTags, faTape, faTasks, faTaxi, faTeeth, faTeethOpen, faTemperatureHigh, faTemperatureLow, faTenge, faTerminal, faTextHeight, faTextWidth, faTh, faThLarge, faThList, faTheaterMasks, faThermometer, faThermometerEmpty, faThermometerFull, faThermometerHalf, faThermometerQuarter, faThermometerThreeQuarters, faThumbsDown, faThumbsUp, faThumbtack, faTicketAlt, faTimes, faTimesCircle, faTint, faTintSlash, faTired, faToggleOff, faToggleOn, faToilet, faToiletPaper, faToiletPaperSlash, faToolbox, faTools, faTooth, faTorah, faToriiGate, faTractor, faTrademark, faTrafficLight, faTrailer, faTrain, faTram, faTransgender, faTransgenderAlt, faTrash, faTrashAlt, faTrashRestore, faTrashRestoreAlt, faTree, faTrophy, faTruck, faTruckLoading, faTruckMonster, faTruckMoving, faTruckPickup, faTshirt, faTty, faTv, faUmbrella, faUmbrellaBeach, faUnderline, faUndo, faUndoAlt, faUniversalAccess, faUniversity, faUnlink, faUnlock, faUnlockAlt, faUpload, faUser, faUserAlt, faUserAltSlash, faUserAstronaut, faUserCheck, faUserCircle, faUserClock, faUserCog, faUserEdit, faUserFriends, faUserGraduate, faUserInjured, faUserLock, faUserMd, faUserMinus, faUserNinja, faUserNurse, faUserPlus, faUserSecret, faUserShield, faUserSlash, faUserTag, faUserTie, faUserTimes, faUsers, faUsersCog, faUsersSlash, faUtensilSpoon, faUtensils, faVectorSquare, faVenus, faVenusDouble, faVenusMars, faVest, faVestPatches, faVial, faVials, faVideo, faVideoSlash, faVihara, faVirus, faVirusSlash, faViruses, faVoicemail, faVolleyballBall, faVolumeDown, faVolumeMute, faVolumeOff, faVolumeUp, faVoteYea, faVrCardboard, faWalking, faWallet, faWarehouse, faWater, faWaveSquare, faWeight, faWeightHanging, faWheelchair, faWifi, faWind, faWindowClose, faWindowMaximize, faWindowMinimize, faWindowRestore, faWineBottle, faWineGlass, faWineGlassAlt, faWonSign, faWrench, faXRay, faYenSign, faYinYang };\n","import {\n  WithModuleProps,\n  LinkedVisualConsoleProps,\n  AnyObject,\n  WithAgentProps\n} from \"../lib/types\";\nimport { modulePropsDecoder, linkedVCPropsDecoder, t } from \"../lib\";\nimport Item, { itemBasePropsDecoder, ItemType, ItemProps } from \"../Item\";\nimport { FormContainer, InputGroup } from \"../Form\";\nimport fontAwesomeIcon from \"../lib/FontAwesomeIcon\";\nimport { faTrashAlt, faPlusCircle } from \"@fortawesome/free-solid-svg-icons\";\n\nexport type ColorCloudProps = {\n  type: ItemType.COLOR_CLOUD;\n  color: string;\n  defaultColor: string;\n  colorRanges: {\n    color: string;\n    fromValue: number;\n    toValue: number;\n  }[];\n  // TODO: Add the rest of the color cloud values?\n} & ItemProps &\n  WithAgentProps &\n  WithModuleProps &\n  LinkedVisualConsoleProps;\n\n/**\n * Build a valid typed object from a raw object.\n * This will allow us to ensure the type safety.\n *\n * @param data Raw object.\n * @return An object representing the static graph props.\n * @throws Will throw a TypeError if some property\n * is missing from the raw object or have an invalid type.\n */\nexport function colorCloudPropsDecoder(\n  data: AnyObject\n): ColorCloudProps | never {\n  // TODO: Validate the color.\n  if (typeof data.color !== \"string\" || data.color.length === 0) {\n    throw new TypeError(\"invalid color.\");\n  }\n\n  return {\n    ...itemBasePropsDecoder(data), // Object spread. It will merge the properties of the two objects.\n    type: ItemType.COLOR_CLOUD,\n    color: data.color,\n    defaultColor: data.defaultColor,\n    colorRanges: data.colorRanges,\n    ...modulePropsDecoder(data), // Object spread. It will merge the properties of the two objects.\n    ...linkedVCPropsDecoder(data) // Object spread. It will merge the properties of the two objects.\n  };\n}\n\n/**\n * Class to add item to the Color cloud item form\n * This item consists of a label and a color type input color.\n * Element default color is stored in the color property\n */\nclass ColorInputGroup extends InputGroup<Partial<ColorCloudProps>> {\n  protected createContent(): HTMLElement | HTMLElement[] {\n    const generalDiv = document.createElement(\"div\");\n    generalDiv.className = \"div-input-group\";\n\n    const colorLabel = document.createElement(\"label\");\n    colorLabel.textContent = t(\"Default color\");\n\n    generalDiv.appendChild(colorLabel);\n\n    const ColorInput = document.createElement(\"input\");\n    ColorInput.type = \"color\";\n    ColorInput.required = true;\n\n    ColorInput.value = `${this.currentData.defaultColor ||\n      this.initialData.defaultColor ||\n      \"#000000\"}`;\n\n    ColorInput.addEventListener(\"change\", e => {\n      this.updateData({\n        defaultColor: (e.target as HTMLInputElement).value\n      });\n    });\n\n    generalDiv.appendChild(ColorInput);\n\n    return generalDiv;\n  }\n}\n\ntype ColorRanges = ColorCloudProps[\"colorRanges\"];\ntype ColorRange = ColorRanges[0];\n\nclass RangesInputGroup extends InputGroup<Partial<ColorCloudProps>> {\n  protected createContent(): HTMLElement | HTMLElement[] {\n    const generalDiv = document.createElement(\"div\");\n    generalDiv.className = \"div-input-group div-ranges-input-group\";\n\n    const rangesLabel = this.createLabel(\"Ranges\");\n\n    generalDiv.appendChild(rangesLabel);\n\n    const rangesControlsContainer = document.createElement(\"div\");\n    const createdRangesContainer = document.createElement(\"div\");\n\n    generalDiv.appendChild(createdRangesContainer);\n    generalDiv.appendChild(rangesControlsContainer);\n\n    const colorRanges =\n      this.currentData.colorRanges || this.initialData.colorRanges || [];\n\n    let buildRanges: (ranges: ColorRanges) => void;\n\n    const handleRangeUpdatePartial = (index: number) => (\n      range: ColorRange\n    ): void => {\n      const colorRanges =\n        this.currentData.colorRanges || this.initialData.colorRanges || [];\n      this.updateData({\n        colorRanges: [\n          ...colorRanges.slice(0, index),\n          range,\n          ...colorRanges.slice(index + 1)\n        ]\n      });\n    };\n\n    const handleDelete = (index: number) => () => {\n      const colorRanges =\n        this.currentData.colorRanges || this.initialData.colorRanges || [];\n      const newRanges = [\n        ...colorRanges.slice(0, index),\n        ...colorRanges.slice(index + 1)\n      ];\n\n      this.updateData({ colorRanges: newRanges });\n      buildRanges(newRanges);\n    };\n\n    const handleCreate = (range: ColorRange): void => {\n      const colorRanges =\n        this.currentData.colorRanges || this.initialData.colorRanges || [];\n      const newRanges = [...colorRanges, range];\n      this.updateData({ colorRanges: newRanges });\n      buildRanges(newRanges);\n    };\n\n    buildRanges = ranges => {\n      createdRangesContainer.innerHTML = \"\";\n      ranges.forEach((colorRange, index) =>\n        createdRangesContainer.appendChild(\n          this.rangeContainer(\n            colorRange,\n            handleRangeUpdatePartial(index),\n            handleDelete(index)\n          )\n        )\n      );\n    };\n\n    buildRanges(colorRanges);\n\n    rangesControlsContainer.appendChild(\n      this.initialRangeContainer(handleCreate)\n    );\n\n    return generalDiv;\n  }\n\n  private initialRangeContainer(onCreate: (range: ColorRange) => void) {\n    // TODO: Document\n    const initialState = { color: \"#ffffff\" };\n\n    let state: Partial<ColorRange> = { ...initialState };\n\n    const handleFromValue = (value: ColorRange[\"fromValue\"]): void => {\n      state.fromValue = value;\n    };\n    const handleToValue = (value: ColorRange[\"toValue\"]): void => {\n      state.toValue = value;\n    };\n    const handleColor = (value: ColorRange[\"color\"]): void => {\n      state.color = value;\n    };\n\n    // User defined type guard.\n    // Docs: https://www.typescriptlang.org/docs/handbook/advanced-types.html#user-defined-type-guards\n    const isValid = (range: Partial<ColorRange>): range is ColorRange =>\n      typeof range.color !== \"undefined\" &&\n      typeof range.toValue !== \"undefined\" &&\n      typeof range.fromValue !== \"undefined\";\n\n    const rangesContainer = document.createElement(\"div\");\n\n    // Div From value.\n    const rangesContainerFromValue = document.createElement(\"div\");\n    const rangesLabelFromValue = this.createLabel(\"From Value\");\n    const rangesInputFromValue = this.createInputNumber(null, handleFromValue);\n    rangesContainerFromValue.appendChild(rangesLabelFromValue);\n    rangesContainerFromValue.appendChild(rangesInputFromValue);\n    rangesContainer.appendChild(rangesContainerFromValue);\n\n    // Div To Value.\n    const rangesDivContainerToValue = document.createElement(\"div\");\n    const rangesLabelToValue = this.createLabel(\"To Value\");\n    const rangesInputToValue = this.createInputNumber(null, handleToValue);\n    rangesContainerFromValue.appendChild(rangesLabelToValue);\n    rangesContainerFromValue.appendChild(rangesInputToValue);\n    rangesContainer.appendChild(rangesDivContainerToValue);\n\n    // Div Color.\n    const rangesDivContainerColor = document.createElement(\"div\");\n    const rangesLabelColor = this.createLabel(\"Color\");\n    const rangesInputColor = this.createInputColor(\n      initialState.color,\n      handleColor\n    );\n    rangesContainerFromValue.appendChild(rangesLabelColor);\n    rangesContainerFromValue.appendChild(rangesInputColor);\n    rangesContainer.appendChild(rangesDivContainerColor);\n\n    // Button delete.\n    const createBtn = document.createElement(\"a\");\n    createBtn.appendChild(\n      fontAwesomeIcon(faPlusCircle, t(\"Create color range\"), {\n        size: \"small\",\n        color: \"#565656\"\n      })\n    );\n\n    const handleCreate = () => {\n      if (isValid(state)) onCreate(state);\n      state = initialState;\n      rangesInputFromValue.value = `${state.fromValue || \"\"}`;\n      rangesInputToValue.value = `${state.toValue || \"\"}`;\n      rangesInputColor.value = `${state.color}`;\n    };\n\n    createBtn.addEventListener(\"click\", handleCreate);\n\n    rangesContainer.appendChild(createBtn);\n\n    return rangesContainer;\n  }\n\n  private rangeContainer(\n    colorRange: ColorRange,\n    onUpdate: (range: ColorRange) => void,\n    onDelete: () => void\n  ): HTMLDivElement {\n    // TODO: Document\n    const state = { ...colorRange };\n\n    const handleFromValue = (value: ColorRange[\"fromValue\"]): void => {\n      state.fromValue = value;\n      onUpdate({ ...state });\n    };\n    const handleToValue = (value: ColorRange[\"toValue\"]): void => {\n      state.toValue = value;\n      onUpdate({ ...state });\n    };\n    const handleColor = (value: ColorRange[\"color\"]): void => {\n      state.color = value;\n      onUpdate({ ...state });\n    };\n\n    const rangesContainer = document.createElement(\"div\");\n\n    // Div From value.\n    const rangesContainerFromValue = document.createElement(\"div\");\n    const rangesLabelFromValue = this.createLabel(\"From Value\");\n    const rangesInputFromValue = this.createInputNumber(\n      colorRange.fromValue,\n      handleFromValue\n    );\n    rangesContainerFromValue.appendChild(rangesLabelFromValue);\n    rangesContainerFromValue.appendChild(rangesInputFromValue);\n    rangesContainer.appendChild(rangesContainerFromValue);\n\n    // Div To Value.\n    const rangesDivContainerToValue = document.createElement(\"div\");\n    const rangesLabelToValue = this.createLabel(\"To Value\");\n    const rangesInputToValue = this.createInputNumber(\n      colorRange.toValue,\n      handleToValue\n    );\n    rangesContainerFromValue.appendChild(rangesLabelToValue);\n    rangesContainerFromValue.appendChild(rangesInputToValue);\n    rangesContainer.appendChild(rangesDivContainerToValue);\n\n    // Div Color.\n    const rangesDivContainerColor = document.createElement(\"div\");\n    const rangesLabelColor = this.createLabel(\"Color\");\n    const rangesInputColor = this.createInputColor(\n      colorRange.color,\n      handleColor\n    );\n    rangesContainerFromValue.appendChild(rangesLabelColor);\n    rangesContainerFromValue.appendChild(rangesInputColor);\n    rangesContainer.appendChild(rangesDivContainerColor);\n\n    // Button delete.\n    const deleteBtn = document.createElement(\"a\");\n    deleteBtn.appendChild(\n      fontAwesomeIcon(faTrashAlt, t(\"Delete color range\"), {\n        size: \"small\",\n        color: \"#565656\"\n      })\n    );\n    deleteBtn.addEventListener(\"click\", onDelete);\n\n    rangesContainer.appendChild(deleteBtn);\n\n    return rangesContainer;\n  }\n\n  private createLabel(text: string): HTMLLabelElement {\n    const label = document.createElement(\"label\");\n    label.textContent = t(text);\n    return label;\n  }\n\n  private createInputNumber(\n    value: number | null,\n    onUpdate: (value: number) => void\n  ): HTMLInputElement {\n    const input = document.createElement(\"input\");\n    input.type = \"number\";\n    if (value !== null) input.value = `${value}`;\n    input.addEventListener(\"change\", e => {\n      const value = parseInt((e.target as HTMLInputElement).value);\n      if (!isNaN(value)) onUpdate(value);\n    });\n\n    return input;\n  }\n\n  private createInputColor(\n    value: string | null,\n    onUpdate: (value: string) => void\n  ): HTMLInputElement {\n    const input = document.createElement(\"input\");\n    input.type = \"color\";\n    if (value !== null) input.value = value;\n    input.addEventListener(\"change\", e =>\n      onUpdate((e.target as HTMLInputElement).value)\n    );\n\n    return input;\n  }\n}\n\nconst svgNS = \"http://www.w3.org/2000/svg\";\n\nexport default class ColorCloud extends Item<ColorCloudProps> {\n  protected createDomElement(): HTMLElement {\n    const container: HTMLDivElement = document.createElement(\"div\");\n    container.className = \"color-cloud\";\n\n    // Add the SVG.\n    container.append(this.createSvgElement());\n\n    return container;\n  }\n\n  public resizeElement(width: number): void {\n    super.resizeElement(width, width);\n  }\n\n  public createSvgElement(): SVGSVGElement {\n    const gradientId = `grad_${this.props.id}`;\n    // SVG container.\n    const svg = document.createElementNS(svgNS, \"svg\");\n    // Auto resize SVG using the view box magic: https://css-tricks.com/scale-svg/\n    svg.setAttribute(\"viewBox\", \"0 0 100 100\");\n\n    // Defs.\n    const defs = document.createElementNS(svgNS, \"defs\");\n    // Radial gradient.\n    const radialGradient = document.createElementNS(svgNS, \"radialGradient\");\n    radialGradient.setAttribute(\"id\", gradientId);\n    radialGradient.setAttribute(\"cx\", \"50%\");\n    radialGradient.setAttribute(\"cy\", \"50%\");\n    radialGradient.setAttribute(\"r\", \"50%\");\n    radialGradient.setAttribute(\"fx\", \"50%\");\n    radialGradient.setAttribute(\"fy\", \"50%\");\n    // Stops.\n    const stop0 = document.createElementNS(svgNS, \"stop\");\n    stop0.setAttribute(\"offset\", \"0%\");\n    stop0.setAttribute(\n      \"style\",\n      `stop-color:${this.props.color};stop-opacity:0.9`\n    );\n    const stop100 = document.createElementNS(svgNS, \"stop\");\n    stop100.setAttribute(\"offset\", \"100%\");\n    stop100.setAttribute(\n      \"style\",\n      `stop-color:${this.props.color};stop-opacity:0`\n    );\n    // Circle.\n    const circle = document.createElementNS(svgNS, \"circle\");\n    circle.setAttribute(\"fill\", `url(#${gradientId})`);\n    circle.setAttribute(\"cx\", \"50%\");\n    circle.setAttribute(\"cy\", \"50%\");\n    circle.setAttribute(\"r\", \"50%\");\n\n    // Append elements.\n    radialGradient.append(stop0, stop100);\n    defs.append(radialGradient);\n    svg.append(defs, circle);\n\n    if (\n      this.props.agentDisabled === true ||\n      this.props.moduleDisabled === true\n    ) {\n      svg.setAttribute(\"opacity\", \"0.2\");\n    }\n\n    return svg;\n  }\n\n  /**\n   * @override function to add or remove inputsGroups those that are not necessary.\n   * Add to:\n   * ColorInputGroup\n   * RangesInputGroup\n   */\n  public getFormContainer(): FormContainer {\n    return ColorCloud.getFormContainer(this.props);\n  }\n\n  public static getFormContainer(\n    props: Partial<ColorCloudProps>\n  ): FormContainer {\n    const formContainer = super.getFormContainer(props);\n    formContainer.removeInputGroup(\"label\");\n\n    formContainer.addInputGroup(new ColorInputGroup(\"color-cloud\", props), 3);\n    formContainer.addInputGroup(new RangesInputGroup(\"ranges-cloud\", props), 4);\n\n    return formContainer;\n  }\n}\n","import { AnyObject, Position, Size, ItemMeta } from \"../lib/types\";\nimport {\n  parseIntOr,\n  notEmptyStringOr,\n  debounce,\n  addMovementListener\n} from \"../lib\";\nimport Item, { ItemType, ItemProps, itemBasePropsDecoder } from \"../Item\";\nimport TypedEvent, { Listener, Disposable } from \"../lib/TypedEvent\";\n\nexport interface LineProps extends ItemProps {\n  // Overrided properties.\n  type: number;\n  label: null;\n  isLinkEnabled: false;\n  parentId: null;\n  aclGroupId: null;\n  // Custom properties.\n  startPosition: Position;\n  endPosition: Position;\n  lineWidth: number;\n  color: string | null;\n  viewportOffsetX: number;\n  viewportOffsetY: number;\n  labelEnd: string;\n  labelStart: string;\n  linkedEnd: number | null;\n  linkedStart: number | null;\n  labelEndWidth: number;\n  labelEndHeight: number;\n  labelStartWidth: number;\n  labelStartHeight: number;\n}\n\n/**\n * Build a valid typed object from a raw object.\n * This will allow us to ensure the type safety.\n *\n * @param data Raw object.\n * @return An object representing the item props.\n * @throws Will throw a TypeError if some property\n * is missing from the raw object or have an invalid type.\n */\nexport function linePropsDecoder(data: AnyObject): LineProps | never {\n  const props: LineProps = {\n    ...itemBasePropsDecoder({ ...data, width: 1, height: 1 }), // Object spread. It will merge the properties of the two objects.\n    type: ItemType.LINE_ITEM,\n    label: null,\n    isLinkEnabled: false,\n    parentId: null,\n    aclGroupId: null,\n    // Initialize Position & Size.\n    x: 0,\n    y: 0,\n    width: 0,\n    height: 0,\n    // Custom properties.\n    startPosition: {\n      x: parseIntOr(data.startX, 0),\n      y: parseIntOr(data.startY, 0)\n    },\n    endPosition: {\n      x: parseIntOr(data.endX, 0),\n      y: parseIntOr(data.endY, 0)\n    },\n    lineWidth: parseIntOr(data.lineWidth || data.borderWidth, 1),\n    color: notEmptyStringOr(data.borderColor || data.color, null),\n    viewportOffsetX: 0,\n    viewportOffsetY: 0,\n    labelEnd: notEmptyStringOr(data.labelEnd, \"\"),\n    labelEndWidth: parseIntOr(data.labelEndWidth, 0),\n    linkedEnd: data.linkedEnd,\n    linkedStart: data.linkedStart,\n    labelEndHeight: parseIntOr(data.labelEndHeight, 0),\n    labelStart: notEmptyStringOr(data.labelStart, \"\"),\n    labelStartWidth: parseIntOr(data.labelStartWidth, 0),\n    labelStartHeight: parseIntOr(data.labelStartHeight, 0)\n  };\n\n  /*\n   * We need to enhance the props with the extracted size and position\n   * of the box cause there are missing at the props update. A better\n   * solution would be overriding the props setter to do it there, but\n   * the language doesn't allow it while targetting ES5.\n   * TODO: We need to figure out a more consistent solution.\n   */\n\n  return {\n    ...props,\n    // Enhance the props extracting the box size and position.\n    // eslint-disable-next-line @typescript-eslint/no-use-before-define\n    ...Line.extractBoxSizeAndPosition(props.startPosition, props.endPosition)\n  };\n}\n\nconst svgNS = \"http://www.w3.org/2000/svg\";\n\nexport interface LineMovedEvent {\n  item: Line;\n  startPosition: LineProps[\"startPosition\"];\n  endPosition: LineProps[\"endPosition\"];\n}\n\nexport default class Line extends Item<LineProps> {\n  protected circleRadius = 8;\n  // To control if the line movement is enabled.\n  protected moveMode: boolean = false;\n  // To control if the line is moving.\n  protected isMoving: boolean = false;\n\n  // Event manager for moved events.\n  public readonly lineMovedEventManager = new TypedEvent<LineMovedEvent>();\n  // List of references to clean the event listeners.\n  protected readonly lineMovedEventDisposables: Disposable[] = [];\n\n  // This function will only run the 2nd arg function after the time\n  // of the first arg have passed after its last execution.\n  protected debouncedStartPositionMovementSave = debounce(\n    500, // ms.\n    (x: Position[\"x\"], y: Position[\"y\"]) => {\n      this.isMoving = false;\n      const startPosition = { x, y };\n      // Emit the movement event.\n      this.lineMovedEventManager.emit({\n        item: this,\n        startPosition,\n        endPosition: this.props.endPosition\n      });\n    }\n  );\n  // This property will store the function\n  // to clean the movement listener.\n  protected removeStartPositionMovement: Function | null = null;\n\n  /**\n   * Start the movement funtionality for the start position.\n   * @param element Element to move inside its container.\n   */\n  protected initStartPositionMovementListener(\n    element: HTMLElement,\n    container: HTMLElement\n  ): void {\n    this.removeStartPositionMovement = addMovementListener(\n      element,\n      (x: Position[\"x\"], y: Position[\"y\"]) => {\n        // Calculate the center of the circle.\n        x += this.circleRadius - this.props.viewportOffsetX / 2;\n        y += this.circleRadius - this.props.viewportOffsetY / 2;\n\n        const startPosition = { x, y };\n\n        this.isMoving = true;\n        this.props = {\n          ...this.props,\n          startPosition\n        };\n\n        // Run the end function.\n        this.debouncedStartPositionMovementSave(x, y);\n      },\n      container\n    );\n  }\n  /**\n   * Stop the movement fun\n   */\n  private stopStartPositionMovementListener(): void {\n    if (this.removeStartPositionMovement) {\n      this.removeStartPositionMovement();\n      this.removeStartPositionMovement = null;\n    }\n  }\n\n  // This function will only run the 2nd arg function after the time\n  // of the first arg have passed after its last execution.\n  protected debouncedEndPositionMovementSave = debounce(\n    500, // ms.\n    (x: Position[\"x\"], y: Position[\"y\"]) => {\n      this.isMoving = false;\n      const endPosition = { x, y };\n      // Emit the movement event.\n      this.lineMovedEventManager.emit({\n        item: this,\n        endPosition,\n        startPosition: this.props.startPosition\n      });\n    }\n  );\n  // This property will store the function\n  // to clean the movement listener.\n  protected removeEndPositionMovement: Function | null = null;\n\n  /**\n   * End the movement funtionality for the end position.\n   * @param element Element to move inside its container.\n   */\n  protected initEndPositionMovementListener(\n    element: HTMLElement,\n    container: HTMLElement\n  ): void {\n    this.removeEndPositionMovement = addMovementListener(\n      element,\n      (x: Position[\"x\"], y: Position[\"y\"]) => {\n        // Calculate the center of the circle.\n        x += this.circleRadius - this.props.viewportOffsetX / 2;\n        y += this.circleRadius - this.props.viewportOffsetY / 2;\n\n        this.isMoving = true;\n        this.props = {\n          ...this.props,\n          endPosition: { x, y }\n        };\n\n        // Run the end function.\n        this.debouncedEndPositionMovementSave(x, y);\n      },\n      container\n    );\n  }\n  /**\n   * Stop the movement function.\n   */\n  private stopEndPositionMovementListener(): void {\n    if (this.removeEndPositionMovement) {\n      this.removeEndPositionMovement();\n      this.removeEndPositionMovement = null;\n    }\n  }\n\n  /**\n   * @override\n   */\n  public constructor(props: LineProps, meta: ItemMeta) {\n    /*\n     * We need to override the constructor cause we need to obtain the\n     * box size and position from the start and finish points of the line.\n     */\n    super(\n      {\n        ...props,\n        ...Line.extractBoxSizeAndPosition(\n          props.startPosition,\n          props.endPosition\n        )\n      },\n      {\n        ...meta\n      },\n      true\n    );\n\n    this.moveMode = meta.editMode;\n    this.init();\n\n    super.resizeElement(\n      Math.max(props.width, props.viewportOffsetX),\n      Math.max(props.height, props.viewportOffsetY)\n    );\n  }\n\n  /**\n   * Classic and protected version of the setter of the `props` property.\n   * Useful to override it from children classes.\n   * @param newProps\n   * @override Item.setProps\n   */\n  public setProps(newProps: LineProps) {\n    super.setProps({\n      ...newProps,\n      ...Line.extractBoxSizeAndPosition(\n        newProps.startPosition,\n        newProps.endPosition\n      )\n    });\n  }\n\n  /**\n   * Classic and protected version of the setter of the `meta` property.\n   * Useful to override it from children classes.\n   * @param newMetadata\n   * @override Item.setMeta\n   */\n  public setMeta(newMetadata: ItemMeta) {\n    this.moveMode = newMetadata.editMode;\n    super.setMeta({\n      ...newMetadata,\n      lineMode: true\n    });\n  }\n\n  /**\n   * @override\n   * To create the item's DOM representation.\n   * @return Item.\n   */\n  protected createDomElement(): HTMLElement {\n    const element: HTMLDivElement = document.createElement(\"div\");\n    element.className = \"line\";\n\n    let {\n      x, // Box x\n      y, // Box y\n      width, // Box width\n      height, // Box height\n      lineWidth, // Line thickness,\n      viewportOffsetX, // viewport width,\n      viewportOffsetY, // viewport heigth,\n      startPosition, // Line start position\n      endPosition, // Line end position\n      color // Line color\n    } = this.props;\n\n    width = width + viewportOffsetX;\n    height = height + viewportOffsetY;\n\n    const x1 = startPosition.x - x + lineWidth / 2 + viewportOffsetX / 2;\n    const y1 = startPosition.y - y + lineWidth / 2 + viewportOffsetY / 2;\n    const x2 = endPosition.x - x + lineWidth / 2 + viewportOffsetX / 2;\n    const y2 = endPosition.y - y + lineWidth / 2 + viewportOffsetY / 2;\n\n    // SVG container.\n    const svg = document.createElementNS(svgNS, \"svg\");\n    // Set SVG size.\n    svg.setAttribute(\"width\", `${width + lineWidth}`);\n    svg.setAttribute(\"height\", `${height + lineWidth}`);\n\n    const line = document.createElementNS(svgNS, \"line\");\n    line.setAttribute(\"x1\", `${x1}`);\n    line.setAttribute(\"y1\", `${y1}`);\n    line.setAttribute(\"x2\", `${x2}`);\n    line.setAttribute(\"y2\", `${y2}`);\n    line.setAttribute(\"stroke\", color || \"black\");\n    line.setAttribute(\"stroke-width\", `${lineWidth}`);\n\n    svg.append(line);\n    element.append(svg);\n\n    return element;\n  }\n\n  protected updateDomElement(element: HTMLElement): void {\n    if (element.parentElement != null) {\n      element.parentElement.style.cursor = \"default\";\n    }\n\n    let {\n      x, // Box x\n      y, // Box y\n      width, // Box width\n      height, // Box height\n      lineWidth, // Line thickness\n      viewportOffsetX, // viewport width,\n      viewportOffsetY, // viewport heigth,\n      startPosition, // Line start position\n      endPosition, // Line end position\n      color // Line color\n    } = this.props;\n\n    width = width + viewportOffsetX;\n    height = height + viewportOffsetY;\n\n    const x1 = startPosition.x - x + lineWidth / 2 + viewportOffsetX / 2;\n    const y1 = startPosition.y - y + lineWidth / 2 + viewportOffsetY / 2;\n    const x2 = endPosition.x - x + lineWidth / 2 + viewportOffsetX / 2;\n    const y2 = endPosition.y - y + lineWidth / 2 + viewportOffsetY / 2;\n\n    const svgs = element.getElementsByTagName(\"svg\");\n\n    if (svgs.length > 0) {\n      const svg = svgs.item(0);\n\n      if (svg != null) {\n        // Set SVG size.\n        svg.setAttribute(\"width\", `${width + lineWidth}`);\n        svg.setAttribute(\"height\", `${height + lineWidth}`);\n\n        const lines = svg.getElementsByTagNameNS(svgNS, \"line\");\n\n        if (lines.length > 0) {\n          const line = lines.item(0);\n\n          if (line != null) {\n            line.setAttribute(\"x1\", `${x1}`);\n            line.setAttribute(\"y1\", `${y1}`);\n            line.setAttribute(\"x2\", `${x2}`);\n            line.setAttribute(\"y2\", `${y2}`);\n            line.setAttribute(\"stroke\", color || \"black\");\n            line.setAttribute(\"stroke-width\", `${lineWidth}`);\n          }\n        }\n      }\n    }\n\n    if (this.moveMode) {\n      let startCircle: HTMLElement = document.createElement(\"div\");\n      let endCircle: HTMLElement = document.createElement(\"div\");\n\n      if (this.isMoving) {\n        const circlesStart = element.getElementsByClassName(\n          \"visual-console-item-line-circle-start\"\n        );\n        if (circlesStart.length > 0) {\n          const circle = circlesStart.item(0) as HTMLElement;\n          if (circle) startCircle = circle;\n        }\n        const circlesEnd = element.getElementsByClassName(\n          \"visual-console-item-line-circle-end\"\n        );\n        if (circlesEnd.length > 0) {\n          const circle = circlesEnd.item(0) as HTMLElement;\n          if (circle) endCircle = circle;\n        }\n      }\n\n      startCircle.classList.add(\n        \"visual-console-item-line-circle\",\n        \"visual-console-item-line-circle-start\"\n      );\n      startCircle.style.width = `${this.circleRadius * 2}px`;\n      startCircle.style.height = `${this.circleRadius * 2}px`;\n      startCircle.style.borderRadius = \"50%\";\n      startCircle.style.backgroundColor = `${color}`;\n      startCircle.style.position = \"absolute\";\n      startCircle.style.left = `${x1 - this.circleRadius}px`;\n      startCircle.style.top = `${y1 - this.circleRadius}px`;\n      startCircle.style.cursor = `move`;\n\n      endCircle.classList.add(\n        \"visual-console-item-line-circle\",\n        \"visual-console-item-line-circle-end\"\n      );\n      endCircle.style.width = `${this.circleRadius * 2}px`;\n      endCircle.style.height = `${this.circleRadius * 2}px`;\n      endCircle.style.borderRadius = \"50%\";\n      endCircle.style.backgroundColor = `${color}`;\n      endCircle.style.position = \"absolute\";\n      endCircle.style.left = `${x2 - this.circleRadius}px`;\n      endCircle.style.top = `${y2 - this.circleRadius}px`;\n      endCircle.style.cursor = `move`;\n\n      if (element.parentElement !== null) {\n        const circles = element.parentElement.getElementsByClassName(\n          \"visual-console-item-line-circle\"\n        );\n        while (circles.length > 0) {\n          const circle = circles.item(0);\n          if (circle) circle.remove();\n        }\n\n        element.parentElement.appendChild(startCircle);\n        element.parentElement.appendChild(endCircle);\n      }\n\n      // Init the movement listeners.\n      this.initStartPositionMovementListener(\n        startCircle,\n        this.elementRef.parentElement as HTMLElement\n      );\n      this.initEndPositionMovementListener(\n        endCircle,\n        this.elementRef.parentElement as HTMLElement\n      );\n    } else if (!this.moveMode) {\n      this.stopStartPositionMovementListener();\n      // Remove circles.\n      if (element.parentElement !== null) {\n        const circles = element.parentElement.getElementsByClassName(\n          \"visual-console-item-line-circle\"\n        );\n\n        while (circles.length > 0) {\n          const circle = circles.item(0);\n          if (circle) circle.remove();\n        }\n      }\n    } else {\n      this.stopStartPositionMovementListener();\n    }\n  }\n\n  /**\n   * Extract the size and position of the box from\n   * the start and the finish of the line.\n   * @param props Item properties.\n   */\n  public static extractBoxSizeAndPosition(\n    startPosition: Position,\n    endPosition: Position\n  ): Size & Position {\n    return {\n      width: Math.abs(startPosition.x - endPosition.x),\n      height: Math.abs(startPosition.y - endPosition.y),\n      x: Math.min(startPosition.x, endPosition.x),\n      y: Math.min(startPosition.y, endPosition.y)\n    };\n  }\n\n  /**\n   * Update the position into the properties and move the DOM container.\n   * @param x Horizontal axis position.\n   * @param y Vertical axis position.\n   * @override item function\n   */\n  public move(x: number, y: number): void {\n    super.moveElement(x, y);\n    const startIsLeft =\n      this.props.startPosition.x - this.props.endPosition.x <= 0;\n    const startIsTop =\n      this.props.startPosition.y - this.props.endPosition.y <= 0;\n\n    const start = {\n      x: startIsLeft ? x : this.props.width + x,\n      y: startIsTop ? y : this.props.height + y\n    };\n\n    const end = {\n      x: startIsLeft ? this.props.width + x : x,\n      y: startIsTop ? this.props.height + y : y\n    };\n\n    this.props = {\n      ...this.props,\n      startPosition: start,\n      endPosition: end\n    };\n  }\n\n  /**\n   * To remove the event listeners and the elements from the DOM.\n   * @override Item.remove\n   */\n  public remove(): void {\n    // Clear the item's event listeners.\n    this.stopStartPositionMovementListener();\n    // Call the parent's .remove()\n    super.remove();\n  }\n\n  /**\n   * To add an event handler to the movement of visual console elements.\n   * @param listener Function which is going to be executed when a linked console is moved.\n   *\n   * @override Item.onMoved\n   */\n  public onLineMovementFinished(\n    listener: Listener<LineMovedEvent>\n  ): Disposable {\n    /*\n     * The '.on' function returns a function which will clean the event\n     * listener when executed. We store all the 'dispose' functions to\n     * call them when the item should be cleared.\n     */\n    const disposable = this.lineMovedEventManager.on(listener);\n    this.lineMovedEventDisposables.push(disposable);\n\n    return disposable;\n  }\n}\n","import { AnyObject, Position, ItemMeta } from \"../lib/types\";\nimport { debounce, notEmptyStringOr, parseIntOr } from \"../lib\";\nimport { ItemType } from \"../Item\";\nimport Line, { LineProps, linePropsDecoder } from \"./Line\";\n\nconst svgNS = \"http://www.w3.org/2000/svg\";\n\nexport interface NetworkLinkProps extends LineProps {\n  // Overrided properties.\n  type: number;\n  labelStart: string;\n  labelEnd: string;\n}\n\n/**\n * Build a valid typed object from a raw object.\n * This will allow us to ensure the type safety.\n *\n * @param data Raw object.\n * @return An object representing the item props.\n * @throws Will throw a TypeError if some property\n * is missing from the raw object or have an invalid type.\n */\nexport function networkLinkPropsDecoder(\n  data: AnyObject\n): NetworkLinkProps | never {\n  return {\n    ...linePropsDecoder(data), // Object spread. It will merge the properties of the two objects.\n    type: ItemType.NETWORK_LINK,\n    viewportOffsetX: 0,\n    viewportOffsetY: 0,\n    labelEnd: notEmptyStringOr(data.labelEnd, \"\"),\n    labelEndWidth: parseIntOr(data.labelEndWidth, 0),\n    labelEndHeight: parseIntOr(data.labelEndHeight, 0),\n    labelStart: notEmptyStringOr(data.labelStart, \"\"),\n    labelStartWidth: parseIntOr(data.labelStartWidth, 0),\n    labelStartHeight: parseIntOr(data.labelStartHeight, 0)\n  };\n}\n\nexport default class NetworkLink extends Line {\n  /**\n   * @override\n   */\n  public constructor(props: NetworkLinkProps, meta: ItemMeta) {\n    /*\n     * We need to override the constructor cause we need to obtain the\n     * box size and position from the start and finish points of the line.\n     */\n    super(\n      {\n        ...props\n      },\n      {\n        ...meta\n      }\n    );\n\n    this.render();\n  }\n\n  /**\n   * @override\n   */\n  protected debouncedStartPositionMovementSave = debounce(\n    50, // ms.\n    (x: Position[\"x\"], y: Position[\"y\"]) => {\n      this.isMoving = false;\n\n      const startPosition = { x, y };\n\n      // Re-Paint after move.\n      this.render();\n\n      // Emit the movement event.\n      this.lineMovedEventManager.emit({\n        item: this,\n        startPosition,\n        endPosition: this.props.endPosition\n      });\n    }\n  );\n\n  protected debouncedEndPositionMovementSave = debounce(\n    50, // ms.\n    (x: Position[\"x\"], y: Position[\"y\"]) => {\n      this.isMoving = false;\n      const endPosition = { x, y };\n\n      // Re-Paint after move.\n      this.render();\n\n      // Emit the movement event.\n      this.lineMovedEventManager.emit({\n        item: this,\n        endPosition,\n        startPosition: this.props.startPosition\n      });\n    }\n  );\n\n  protected updateDomElement(element: HTMLElement): void {\n    if (this.itemProps.ratio != null) {\n      this.itemProps.x /= this.itemProps.ratio;\n      this.itemProps.y /= this.itemProps.ratio;\n    }\n\n    super.updateDomElement(element);\n\n    let {\n      x, // Box x\n      y, // Box y\n      lineWidth, // Line thickness\n      viewportOffsetX, // viewport width,\n      viewportOffsetY, // viewport heigth,\n      startPosition, // Line start position\n      endPosition, // Line end position\n      color, // Line color\n      labelEnd,\n      labelStart,\n      labelEndWidth,\n      labelEndHeight,\n      labelStartWidth,\n      labelStartHeight\n    } = this.props;\n\n    if (this.itemProps.ratio != null) {\n      this.itemProps.x *= this.itemProps.ratio;\n      this.itemProps.y *= this.itemProps.ratio;\n    }\n\n    const svgs = element.getElementsByTagName(\"svg\");\n    let line;\n    let svg;\n\n    if (svgs.length > 0) {\n      svg = svgs.item(0);\n\n      if (svg != null) {\n        // Set SVG size.\n        const lines = svg.getElementsByTagNameNS(svgNS, \"line\");\n        let groups = svg.getElementsByTagNameNS(svgNS, \"g\");\n        while (groups.length > 0) {\n          groups[0].remove();\n        }\n\n        if (lines.length > 0) {\n          line = lines.item(0);\n        }\n      }\n    } else {\n      // No line or svg, no more actions are required.\n      return;\n    }\n\n    if (svg == null || line == null) {\n      // No more actionas are required.\n      return;\n    }\n\n    // Font size and text adjustments.\n    const fontsize = 10;\n    const adjustment = 25;\n\n    const lineX1 = startPosition.x - x + lineWidth / 2 + viewportOffsetX / 2;\n    const lineY1 = startPosition.y - y + lineWidth / 2 + viewportOffsetY / 2;\n    const lineX2 = endPosition.x - x + lineWidth / 2 + viewportOffsetX / 2;\n    const lineY2 = endPosition.y - y + lineWidth / 2 + viewportOffsetY / 2;\n\n    let x1 = startPosition.x - x + lineWidth / 2 + viewportOffsetX / 2;\n    let y1 = startPosition.y - y + lineWidth / 2 + viewportOffsetY / 2;\n    let x2 = endPosition.x - x + lineWidth / 2 + viewportOffsetX / 2;\n    let y2 = endPosition.y - y + lineWidth / 2 + viewportOffsetY / 2;\n\n    // Calculate angle (rotation).\n    let rad = Math.atan2(lineY2 - lineY1, lineX2 - lineX1);\n    let g = (rad * 180) / Math.PI;\n\n    // Calculate effective 'text' box sizes.\n    const fontheight = 25;\n    if (labelStartWidth <= 0) {\n      let lines = labelStart.split(\"<br>\");\n      labelStartWidth = 0;\n      lines.forEach(l => {\n        if (l.length > labelStartWidth) {\n          labelStartWidth = l.length * fontsize;\n        }\n      });\n      if (labelStartHeight <= 0) {\n        labelStartHeight = lines.length * fontheight;\n      }\n    }\n\n    if (labelEndWidth <= 0) {\n      let lines = labelEnd.split(\"<br>\");\n      labelEndWidth = 0;\n      lines.forEach(l => {\n        if (l.length > labelEndWidth) {\n          labelEndWidth = l.length * fontsize;\n        }\n      });\n      if (labelEndHeight <= 0) {\n        labelEndHeight = lines.length * fontheight;\n      }\n    }\n\n    if (x1 < x2) {\n      // x1 on left of x2.\n      x1 += adjustment;\n      x2 -= adjustment + labelEndWidth;\n    }\n\n    if (x1 > x2) {\n      // x1 on right of x2.\n      x1 -= adjustment + labelStartWidth;\n      x2 += adjustment;\n    }\n\n    if (y1 < y2) {\n      // y1 on y2.\n      y1 += adjustment;\n      y2 -= adjustment + labelEndHeight;\n    }\n\n    if (y1 > y2) {\n      // y1 under y2.\n      y1 -= adjustment + labelStartHeight;\n      y2 += adjustment;\n    }\n\n    if (typeof color == \"undefined\") {\n      color = \"#000\";\n    }\n\n    // Clean.\n    if (element.parentElement !== null) {\n      const labels = element.parentElement.getElementsByClassName(\n        \"vc-item-nl-label\"\n      );\n      while (labels.length > 0) {\n        const label = labels.item(0);\n        if (label) label.remove();\n      }\n\n      const arrows = element.parentElement.getElementsByClassName(\n        \"vc-item-nl-arrow\"\n      );\n      while (arrows.length > 0) {\n        const arrow = arrows.item(0);\n        if (arrow) arrow.remove();\n      }\n    }\n\n    let arrowSize = lineWidth * 2;\n\n    let arrowPosX = lineX1 + (lineX2 - lineX1) / 2 - arrowSize;\n    let arrowPosY = lineY1 + (lineY2 - lineY1) / 2 - arrowSize;\n\n    let arrowStart: HTMLElement = document.createElement(\"div\");\n    arrowStart.classList.add(\"vc-item-nl-arrow\");\n    arrowStart.style.position = \"absolute\";\n    arrowStart.style.border = `${arrowSize}px solid transparent`;\n    arrowStart.style.borderBottom = `${arrowSize}px solid ${color}`;\n    arrowStart.style.left = `${arrowPosX}px`;\n    arrowStart.style.top = `${arrowPosY}px`;\n    arrowStart.style.transform = `rotate(${90 + g}deg)`;\n\n    let arrowEnd: HTMLElement = document.createElement(\"div\");\n    arrowEnd.classList.add(\"vc-item-nl-arrow\");\n    arrowEnd.style.position = \"absolute\";\n    arrowEnd.style.border = `${arrowSize}px solid transparent`;\n    arrowEnd.style.borderBottom = `${arrowSize}px solid ${color}`;\n    arrowEnd.style.left = `${arrowPosX}px`;\n    arrowEnd.style.top = `${arrowPosY}px`;\n    arrowEnd.style.transform = `rotate(${270 + g}deg)`;\n\n    if (element.parentElement !== null) {\n      element.parentElement.appendChild(arrowStart);\n      element.parentElement.appendChild(arrowEnd);\n    }\n\n    if (labelStart != \"\") {\n      let htmlLabelStart: HTMLElement = document.createElement(\"div\");\n\n      try {\n        htmlLabelStart.innerHTML = labelStart;\n        htmlLabelStart.style.position = \"absolute\";\n        htmlLabelStart.style.left = `${x1}px`;\n        htmlLabelStart.style.top = `${y1}px`;\n        htmlLabelStart.style.width = `${labelStartWidth}px`;\n        htmlLabelStart.style.border = `2px solid ${color}`;\n\n        htmlLabelStart.classList.add(\"vc-item-nl-label\", \"label-start\");\n      } catch (error) {\n        console.error(error);\n      }\n\n      if (element.parentElement !== null) {\n        element.parentElement.appendChild(htmlLabelStart);\n      }\n    }\n\n    if (labelEnd != \"\") {\n      let htmlLabelEnd: HTMLElement = document.createElement(\"div\");\n\n      try {\n        htmlLabelEnd.innerHTML = labelEnd;\n        htmlLabelEnd.style.position = \"absolute\";\n        htmlLabelEnd.style.left = `${x2}px`;\n        htmlLabelEnd.style.top = `${y2}px`;\n        htmlLabelEnd.style.width = `${labelEndWidth}px`;\n        htmlLabelEnd.style.border = `2px solid ${color}`;\n\n        htmlLabelEnd.classList.add(\"vc-item-nl-label\", \"label-end\");\n      } catch (error) {\n        console.error(error);\n      }\n\n      if (element.parentElement !== null) {\n        element.parentElement.appendChild(htmlLabelEnd);\n      }\n    }\n  }\n}\n","import { LinkedVisualConsoleProps, AnyObject } from \"../lib/types\";\nimport {\n  linkedVCPropsDecoder,\n  parseIntOr,\n  notEmptyStringOr,\n  stringIsEmpty,\n  decodeBase64,\n  parseBoolean,\n  t\n} from \"../lib\";\nimport Item, { ItemProps, itemBasePropsDecoder, ItemType } from \"../Item\";\n\nexport type GroupProps = {\n  type: ItemType.GROUP_ITEM;\n  groupId: number;\n  imageSrc: string | null; // URL?\n  statusImageSrc: string | null;\n  showStatistics: boolean;\n  html?: string | null;\n} & ItemProps &\n  LinkedVisualConsoleProps;\n\nfunction extractHtml(data: AnyObject): string | null {\n  if (!stringIsEmpty(data.html)) return data.html;\n  if (!stringIsEmpty(data.encodedHtml)) return decodeBase64(data.encodedHtml);\n  return null;\n}\n\n/**\n * Build a valid typed object from a raw object.\n * This will allow us to ensure the type safety.\n *\n * @param data Raw object.\n * @return An object representing the group props.\n * @throws Will throw a TypeError if some property\n * is missing from the raw object or have an invalid type.\n */\nexport function groupPropsDecoder(data: AnyObject): GroupProps | never {\n  if (\n    (typeof data.imageSrc !== \"string\" || data.imageSrc.length === 0) &&\n    data.encodedHtml === null\n  ) {\n    throw new TypeError(\"invalid image src.\");\n  }\n  if (parseIntOr(data.groupId, null) === null) {\n    throw new TypeError(\"invalid group Id.\");\n  }\n\n  const showStatistics = parseBoolean(data.showStatistics);\n  const html = showStatistics ? extractHtml(data) : null;\n\n  return {\n    ...itemBasePropsDecoder(data), // Object spread. It will merge the properties of the two objects.\n    type: ItemType.GROUP_ITEM,\n    groupId: parseInt(data.groupId),\n    imageSrc: notEmptyStringOr(data.imageSrc, null),\n    statusImageSrc: notEmptyStringOr(data.statusImageSrc, null),\n    showStatistics,\n    html,\n    ...linkedVCPropsDecoder(data) // Object spread. It will merge the properties of the two objects.\n  };\n}\nexport default class Group extends Item<GroupProps> {\n  protected createDomElement(): HTMLElement {\n    const element = document.createElement(\"div\");\n    element.className = \"group\";\n\n    if (!this.props.showStatistics && this.props.statusImageSrc !== null) {\n      // Icon with status.\n      element.style.backgroundImage = `url(${this.props.statusImageSrc})`;\n      element.style.backgroundRepeat = \"no-repeat\";\n      element.style.backgroundSize = \"contain\";\n      element.style.backgroundPosition = \"center\";\n    } else if (this.props.showStatistics && this.props.html != null) {\n      // Stats table.\n      element.style.backgroundImage = \"none\";\n      element.innerHTML = this.props.html;\n    }\n\n    return element;\n  }\n\n  /**\n   * To update the content element.\n   * @override Item.updateDomElement\n   */\n  protected updateDomElement(element: HTMLElement): void {\n    if (!this.props.showStatistics && this.props.statusImageSrc !== null) {\n      // Icon with status.\n      element.style.backgroundImage = `url(${this.props.statusImageSrc})`;\n      element.style.backgroundRepeat = \"no-repeat\";\n      element.style.backgroundSize = \"contain\";\n      element.style.backgroundPosition = \"center\";\n      element.innerHTML = \"\";\n    } else if (this.props.showStatistics && this.props.html != null) {\n      // Stats table.\n      element.style.backgroundImage = \"none\";\n      element.innerHTML = this.props.html;\n    }\n  }\n}\n","import \"./styles.css\";\n\nimport {\n  LinkedVisualConsoleProps,\n  AnyObject,\n  Size,\n  ItemMeta\n} from \"../../lib/types\";\nimport {\n  linkedVCPropsDecoder,\n  parseIntOr,\n  parseBoolean,\n  prefixedCssRules,\n  notEmptyStringOr,\n  humanDate,\n  humanTime,\n  t\n} from \"../../lib\";\nimport Item, { ItemProps, itemBasePropsDecoder, ItemType } from \"../../Item\";\n\nexport type ClockProps = {\n  type: ItemType.CLOCK;\n  clockType: \"analogic\" | \"digital\";\n  clockFormat: \"datetime\" | \"time\";\n  clockTimezone: string;\n  clockTimezoneOffset: number; // Offset of the timezone to UTC in seconds.\n  showClockTimezone: boolean;\n  color?: string | null;\n} & ItemProps &\n  LinkedVisualConsoleProps;\n\n/**\n * Extract a valid enum value from a raw unknown value.\n * @param clockType Raw value.\n */\nconst parseClockType = (clockType: unknown): ClockProps[\"clockType\"] => {\n  switch (clockType) {\n    case \"analogic\":\n    case \"digital\":\n      return clockType;\n    default:\n      return \"analogic\";\n  }\n};\n\n/**\n * Extract a valid enum value from a raw unknown value.\n * @param clockFormat Raw value.\n */\nconst parseClockFormat = (clockFormat: unknown): ClockProps[\"clockFormat\"] => {\n  switch (clockFormat) {\n    case \"datetime\":\n    case \"time\":\n      return clockFormat;\n    default:\n      return \"datetime\";\n  }\n};\n\n/**\n * Build a valid typed object from a raw object.\n * This will allow us to ensure the type safety.\n *\n * @param data Raw object.\n * @return An object representing the clock props.\n * @throws Will throw a TypeError if some property\n * is missing from the raw object or have an invalid type.\n */\nexport function clockPropsDecoder(data: AnyObject): ClockProps | never {\n  if (\n    typeof data.clockTimezone !== \"string\" ||\n    data.clockTimezone.length === 0\n  ) {\n    throw new TypeError(\"invalid timezone.\");\n  }\n\n  return {\n    ...itemBasePropsDecoder(data), // Object spread. It will merge the properties of the two objects.\n    type: ItemType.CLOCK,\n    clockType: parseClockType(data.clockType),\n    clockFormat: parseClockFormat(data.clockFormat),\n    clockTimezone: data.clockTimezone,\n    clockTimezoneOffset: parseIntOr(data.clockTimezoneOffset, 0),\n    showClockTimezone: parseBoolean(data.showClockTimezone),\n    color: notEmptyStringOr(data.color, null),\n    ...linkedVCPropsDecoder(data) // Object spread. It will merge the properties of the two objects.\n  };\n}\n\nexport default class Clock extends Item<ClockProps> {\n  public static readonly TICK_INTERVAL = 1000; // In ms.\n  private intervalRef: number | null = null;\n\n  public constructor(props: ClockProps, meta: ItemMeta) {\n    // Call the superclass constructor.\n    super(props, meta);\n\n    /* The item is already loaded and inserted into the DOM.\n     * The class properties are now initialized.\n     * Now you can modify the item, add event handlers, timers, etc.\n     */\n\n    /* The use of the arrow function is important here. startTick will\n     * use the function passed as an argument to call the global setInterval\n     * function. The interval, timeout or event functions, among other, are\n     * called into another execution loop and using a different context.\n     * The arrow functions, unlike the classic functions, doesn't create\n     * their own context (this), so their context at execution time will be\n     * use the current context at the declaration time.\n     * http://es6-features.org/#Lexicalthis\n     */\n    this.startTick(\n      () => {\n        // Replace the old element with the updated date.\n        this.childElementRef.innerHTML = this.createClock().innerHTML;\n      },\n      /* The analogic clock doesn't need to tick,\n       * but it will be refreshed every 20 seconds\n       * to avoid a desync caused by page freezes.\n       */\n      this.props.clockType === \"analogic\" ? 20000 : Clock.TICK_INTERVAL\n    );\n  }\n\n  /**\n   * Wrap a window.clearInterval call.\n   */\n  private stopTick(): void {\n    if (this.intervalRef !== null) {\n      window.clearInterval(this.intervalRef);\n      this.intervalRef = null;\n    }\n  }\n\n  /**\n   * Wrap a window.setInterval call.\n   * @param handler Function to be called every time the interval\n   * timer is reached.\n   * @param interval Number in milliseconds for the interval timer.\n   */\n  private startTick(\n    handler: TimerHandler,\n    interval: number = Clock.TICK_INTERVAL\n  ): void {\n    this.stopTick();\n    this.intervalRef = window.setInterval(handler, interval);\n  }\n\n  /**\n   * Create a element which contains the DOM representation of the item.\n   * @return DOM Element.\n   * @override\n   */\n  protected createDomElement(): HTMLElement | never {\n    return this.createClock();\n  }\n\n  /**\n   * To update the content element.\n   * @override Item.updateDomElement\n   */\n  protected updateDomElement(element: HTMLElement): void {\n    // Destructuring assigment: http://es6-features.org/#ObjectMatchingShorthandNotation\n    const { width: newWidth, height: newHeight } = this.getElementSize(\n      this.props.width,\n      this.props.height\n    );\n\n    if (this.props.clockType === \"digital\") {\n      if (this.meta.isBeingResized === false) {\n        super.resizeElement(this.props.width, this.props.height);\n      }\n      element.classList.replace(\"analogic-clock\", \"digital-clock\");\n    } else {\n      if (this.meta.isBeingResized === false) {\n        super.resizeElement(newWidth, newHeight);\n      }\n      element.classList.replace(\"digital-clock\", \"analogic-clock\");\n    }\n    element.innerHTML = this.createDomElement().innerHTML;\n  }\n\n  /**\n   * To remove the event listeners and the elements from the DOM.\n   * @override\n   */\n  public remove(): void {\n    // Clear the interval.\n    this.stopTick();\n    // Call to the parent clean function.\n    super.remove();\n  }\n\n  /**\n   * @override Item.resizeElement\n   * Resize the DOM content container.\n   * @param width\n   * @param height\n   */\n  public resizeElement(width: number, height: number): void {\n    // Destructuring assigment: http://es6-features.org/#ObjectMatchingShorthandNotation\n    const { width: newWidth, height: newHeight } = this.getElementSize(\n      width,\n      height\n    );\n\n    // Re-render the item to force it calculate a new font size.\n    if (this.props.clockType === \"digital\") {\n      super.resizeElement(width, height);\n      // Replace the old element with the updated date.\n      //this.childElementRef.innerHTML = this.createClock().innerHTML;\n    } else {\n      super.resizeElement(newWidth, newHeight);\n    }\n  }\n\n  /**\n   * Create a element which contains a representation of a clock.\n   * It choose between the clock types.\n   * @return DOM Element.\n   * @throws Error.\n   */\n  private createClock(): HTMLElement | never {\n    switch (this.props.clockType) {\n      case \"analogic\":\n        return this.createAnalogicClock();\n      case \"digital\":\n        return this.createDigitalClock();\n      default:\n        throw new Error(\"invalid clock type.\");\n    }\n  }\n\n  /**\n   * Create a element which contains a representation of an analogic clock.\n   * @return DOM Element.\n   */\n  private createAnalogicClock(): HTMLElement {\n    const svgNS = \"http://www.w3.org/2000/svg\";\n    const colors = {\n      watchFace: \"#FFFFF0\",\n      watchFaceBorder: \"#242124\",\n      mark: \"#242124\",\n      handDark: \"#242124\",\n      handLight: \"#525252\",\n      secondHand: \"#DC143C\"\n    };\n\n    const { width, height } = this.getElementSize(); // Destructuring assigment: http://es6-features.org/#ObjectMatchingShorthandNotation\n\n    // Calculate font size to adapt the font to the item size.\n    const baseTimeFontSize = 20; // Per 100px of width.\n    const dateFontSizeMultiplier = 0.5;\n    const dateFontSize =\n      (baseTimeFontSize * dateFontSizeMultiplier * width) / 100;\n\n    const div = document.createElement(\"div\");\n    div.className = \"analogic-clock\";\n    div.style.width = `${width}px`;\n    div.style.height = `${height}px`;\n\n    // SVG container.\n    const svg = document.createElementNS(svgNS, \"svg\");\n    // Auto resize SVG using the view box magic: https://css-tricks.com/scale-svg/\n    svg.setAttribute(\"viewBox\", \"0 0 100 100\");\n\n    // Clock face.\n    const clockFace = document.createElementNS(svgNS, \"g\");\n    clockFace.setAttribute(\"class\", \"clockface\");\n    const clockFaceBackground = document.createElementNS(svgNS, \"circle\");\n    clockFaceBackground.setAttribute(\"cx\", \"50\");\n    clockFaceBackground.setAttribute(\"cy\", \"50\");\n    clockFaceBackground.setAttribute(\"r\", \"48\");\n    clockFaceBackground.setAttribute(\"fill\", colors.watchFace);\n    clockFaceBackground.setAttribute(\"stroke\", colors.watchFaceBorder);\n    clockFaceBackground.setAttribute(\"stroke-width\", \"2\");\n    clockFaceBackground.setAttribute(\"stroke-linecap\", \"round\");\n    // Insert the clockface background into the clockface group.\n    clockFace.append(clockFaceBackground);\n\n    // Timezone complication.\n    const city = this.getHumanTimezone();\n    if (city.length > 0) {\n      const timezoneComplication = document.createElementNS(svgNS, \"text\");\n      timezoneComplication.setAttribute(\"text-anchor\", \"middle\");\n      timezoneComplication.setAttribute(\"font-size\", \"8\");\n      timezoneComplication.setAttribute(\n        \"transform\",\n        \"translate(30 50) rotate(90)\" // Rotate to counter the clock rotation.\n      );\n      timezoneComplication.setAttribute(\"fill\", colors.mark);\n      timezoneComplication.textContent = city;\n      clockFace.append(timezoneComplication);\n    }\n\n    // Marks group.\n    const marksGroup = document.createElementNS(svgNS, \"g\");\n    marksGroup.setAttribute(\"class\", \"marks\");\n    // Build the 12 hours mark.\n    const mainMarkGroup = document.createElementNS(svgNS, \"g\");\n    mainMarkGroup.setAttribute(\"class\", \"mark\");\n    mainMarkGroup.setAttribute(\"transform\", \"translate(50 50)\");\n    const mark1a = document.createElementNS(svgNS, \"line\");\n    mark1a.setAttribute(\"x1\", \"36\");\n    mark1a.setAttribute(\"y1\", \"0\");\n    mark1a.setAttribute(\"x2\", \"46\");\n    mark1a.setAttribute(\"y2\", \"0\");\n    mark1a.setAttribute(\"stroke\", colors.mark);\n    mark1a.setAttribute(\"stroke-width\", \"5\");\n    const mark1b = document.createElementNS(svgNS, \"line\");\n    mark1b.setAttribute(\"x1\", \"36\");\n    mark1b.setAttribute(\"y1\", \"0\");\n    mark1b.setAttribute(\"x2\", \"46\");\n    mark1b.setAttribute(\"y2\", \"0\");\n    mark1b.setAttribute(\"stroke\", colors.watchFace);\n    mark1b.setAttribute(\"stroke-width\", \"1\");\n    // Insert the 12 mark lines into their group.\n    mainMarkGroup.append(mark1a, mark1b);\n    // Insert the main mark into the marks group.\n    marksGroup.append(mainMarkGroup);\n    // Build the rest of the marks.\n    for (let i = 1; i < 60; i++) {\n      const mark = document.createElementNS(svgNS, \"line\");\n      mark.setAttribute(\"y1\", \"0\");\n      mark.setAttribute(\"y2\", \"0\");\n      mark.setAttribute(\"stroke\", colors.mark);\n      mark.setAttribute(\"transform\", `translate(50 50) rotate(${i * 6})`);\n\n      if (i % 5 === 0) {\n        mark.setAttribute(\"x1\", \"38\");\n        mark.setAttribute(\"x2\", \"46\");\n        mark.setAttribute(\"stroke-width\", i % 15 === 0 ? \"2\" : \"1\");\n      } else {\n        mark.setAttribute(\"x1\", \"42\");\n        mark.setAttribute(\"x2\", \"46\");\n        mark.setAttribute(\"stroke-width\", \"0.5\");\n      }\n\n      // Insert the mark into the marks group.\n      marksGroup.append(mark);\n    }\n\n    /* Clock hands */\n\n    // Hour hand.\n    const hourHand = document.createElementNS(svgNS, \"g\");\n    hourHand.setAttribute(\"class\", \"hour-hand\");\n    hourHand.setAttribute(\"transform\", \"translate(50 50)\");\n    // This will go back and will act like a border.\n    const hourHandA = document.createElementNS(svgNS, \"line\");\n    hourHandA.setAttribute(\"class\", \"hour-hand-a\");\n    hourHandA.setAttribute(\"x1\", \"0\");\n    hourHandA.setAttribute(\"y1\", \"0\");\n    hourHandA.setAttribute(\"x2\", \"30\");\n    hourHandA.setAttribute(\"y2\", \"0\");\n    hourHandA.setAttribute(\"stroke\", colors.handLight);\n    hourHandA.setAttribute(\"stroke-width\", \"4\");\n    hourHandA.setAttribute(\"stroke-linecap\", \"round\");\n    // This will go in front of the previous line.\n    const hourHandB = document.createElementNS(svgNS, \"line\");\n    hourHandB.setAttribute(\"class\", \"hour-hand-b\");\n    hourHandB.setAttribute(\"x1\", \"0\");\n    hourHandB.setAttribute(\"y1\", \"0\");\n    hourHandB.setAttribute(\"x2\", \"29.9\");\n    hourHandB.setAttribute(\"y2\", \"0\");\n    hourHandB.setAttribute(\"stroke\", colors.handDark);\n    hourHandB.setAttribute(\"stroke-width\", \"3.1\");\n    hourHandB.setAttribute(\"stroke-linecap\", \"round\");\n    // Append the elements to finish the hour hand.\n    hourHand.append(hourHandA, hourHandB);\n\n    // Minute hand.\n    const minuteHand = document.createElementNS(svgNS, \"g\");\n    minuteHand.setAttribute(\"class\", \"minute-hand\");\n    minuteHand.setAttribute(\"transform\", \"translate(50 50)\");\n    // This will go back and will act like a border.\n    const minuteHandA = document.createElementNS(svgNS, \"line\");\n    minuteHandA.setAttribute(\"class\", \"minute-hand-a\");\n    minuteHandA.setAttribute(\"x1\", \"0\");\n    minuteHandA.setAttribute(\"y1\", \"0\");\n    minuteHandA.setAttribute(\"x2\", \"40\");\n    minuteHandA.setAttribute(\"y2\", \"0\");\n    minuteHandA.setAttribute(\"stroke\", colors.handLight);\n    minuteHandA.setAttribute(\"stroke-width\", \"2\");\n    minuteHandA.setAttribute(\"stroke-linecap\", \"round\");\n    // This will go in front of the previous line.\n    const minuteHandB = document.createElementNS(svgNS, \"line\");\n    minuteHandB.setAttribute(\"class\", \"minute-hand-b\");\n    minuteHandB.setAttribute(\"x1\", \"0\");\n    minuteHandB.setAttribute(\"y1\", \"0\");\n    minuteHandB.setAttribute(\"x2\", \"39.9\");\n    minuteHandB.setAttribute(\"y2\", \"0\");\n    minuteHandB.setAttribute(\"stroke\", colors.handDark);\n    minuteHandB.setAttribute(\"stroke-width\", \"1.5\");\n    minuteHandB.setAttribute(\"stroke-linecap\", \"round\");\n    const minuteHandPin = document.createElementNS(svgNS, \"circle\");\n    minuteHandPin.setAttribute(\"r\", \"3\");\n    minuteHandPin.setAttribute(\"fill\", colors.handDark);\n    // Append the elements to finish the minute hand.\n    minuteHand.append(minuteHandA, minuteHandB, minuteHandPin);\n\n    // Second hand.\n    const secondHand = document.createElementNS(svgNS, \"g\");\n    secondHand.setAttribute(\"class\", \"second-hand\");\n    secondHand.setAttribute(\"transform\", \"translate(50 50)\");\n    const secondHandBar = document.createElementNS(svgNS, \"line\");\n    secondHandBar.setAttribute(\"x1\", \"0\");\n    secondHandBar.setAttribute(\"y1\", \"0\");\n    secondHandBar.setAttribute(\"x2\", \"46\");\n    secondHandBar.setAttribute(\"y2\", \"0\");\n    secondHandBar.setAttribute(\"stroke\", colors.secondHand);\n    secondHandBar.setAttribute(\"stroke-width\", \"1\");\n    secondHandBar.setAttribute(\"stroke-linecap\", \"round\");\n    const secondHandPin = document.createElementNS(svgNS, \"circle\");\n    secondHandPin.setAttribute(\"r\", \"2\");\n    secondHandPin.setAttribute(\"fill\", colors.secondHand);\n    // Append the elements to finish the second hand.\n    secondHand.append(secondHandBar, secondHandPin);\n\n    // Pin.\n    const pin = document.createElementNS(svgNS, \"circle\");\n    pin.setAttribute(\"cx\", \"50\");\n    pin.setAttribute(\"cy\", \"50\");\n    pin.setAttribute(\"r\", \"0.3\");\n    pin.setAttribute(\"fill\", colors.handDark);\n\n    // Get the hand angles.\n    const date = this.getOriginDate();\n    const seconds = date.getSeconds();\n    const minutes = date.getMinutes();\n    const hours = date.getHours();\n    const secAngle = (360 / 60) * seconds;\n    const minuteAngle = (360 / 60) * minutes + (360 / 60) * (seconds / 60);\n    const hourAngle = (360 / 12) * hours + (360 / 12) * (minutes / 60);\n    // Set the clock time by moving the hands.\n    hourHand.setAttribute(\"transform\", `translate(50 50) rotate(${hourAngle})`);\n    minuteHand.setAttribute(\n      \"transform\",\n      `translate(50 50) rotate(${minuteAngle})`\n    );\n    secondHand.setAttribute(\n      \"transform\",\n      `translate(50 50) rotate(${secAngle})`\n    );\n\n    // Build the clock\n    svg.append(clockFace, marksGroup, hourHand, minuteHand, secondHand, pin);\n    // Rotate the clock to its normal position.\n    svg.setAttribute(\"transform\", \"rotate(-90)\");\n\n    /* Add the animation declaration to the container.\n     * Since the animation keyframes need to know the\n     * start angle, this angle is dynamic (current time),\n     * and we can't edit keyframes through javascript\n     * safely and with backwards compatibility, we need\n     * to inject it.\n     */\n    div.innerHTML = `\n      <style>\n        @keyframes rotate-hour {\n          from {\n            ${prefixedCssRules(\n              \"transform\",\n              `translate(50px, 50px) rotate(${hourAngle}deg)`\n            ).join(\"\\n\")}\n          }\n          to {\n            ${prefixedCssRules(\n              \"transform\",\n              `translate(50px, 50px) rotate(${hourAngle + 360}deg)`\n            ).join(\"\\n\")}\n          }\n        }\n        @keyframes rotate-minute {\n          from {\n            ${prefixedCssRules(\n              \"transform\",\n              `translate(50px, 50px) rotate(${minuteAngle}deg)`\n            ).join(\"\\n\")}\n          }\n          to {\n            ${prefixedCssRules(\n              \"transform\",\n              `translate(50px, 50px) rotate(${minuteAngle + 360}deg)`\n            ).join(\"\\n\")}\n          }\n        }\n        @keyframes rotate-second {\n          from {\n            ${prefixedCssRules(\n              \"transform\",\n              `translate(50px, 50px) rotate(${secAngle}deg)`\n            ).join(\"\\n\")}\n          }\n          to {\n            ${prefixedCssRules(\n              \"transform\",\n              `translate(50px, 50px) rotate(${secAngle + 360}deg)`\n            ).join(\"\\n\")}\n          }\n        }\n      </style>\n    `;\n    // Add the clock to the container\n    div.append(svg);\n\n    // Date.\n    if (this.props.clockFormat === \"datetime\") {\n      const dateElem: HTMLSpanElement = document.createElement(\"span\");\n      dateElem.className = \"date\";\n      dateElem.textContent = humanDate(date, \"default\");\n      dateElem.style.fontSize = `${dateFontSize}px`;\n      if (this.props.color) dateElem.style.color = this.props.color;\n      div.append(dateElem);\n    }\n\n    return div;\n  }\n\n  /**\n   * Create a element which contains a representation of a digital clock.\n   * @return DOM Element.\n   */\n  private createDigitalClock(): HTMLElement {\n    const element: HTMLDivElement = document.createElement(\"div\");\n    element.className = \"digital-clock\";\n\n    const { width, height } = this.getElementSize(); // Destructuring assigment: http://es6-features.org/#ObjectMatchingShorthandNotation\n    let modified = width;\n    if (height < width) {\n      modified = height;\n    }\n\n    // Calculate font size to adapt the font to the item size.\n    const baseTimeFontSize = 35; // Per 100px of width.\n    const dateFontSizeMultiplier = 0.5;\n    const tzFontSizeMultiplier = 6 / this.props.clockTimezone.length;\n    const timeFontSize = (baseTimeFontSize * modified) / 100;\n    const dateFontSize =\n      (baseTimeFontSize * dateFontSizeMultiplier * modified) / 100;\n    const tzFontSize = Math.min(\n      (baseTimeFontSize * tzFontSizeMultiplier * modified) / 100,\n      (width / 100) * 10\n    );\n\n    // Date calculated using the original timezone.\n    const date = this.getOriginDate();\n\n    // Date.\n    if (this.props.clockFormat === \"datetime\") {\n      const dateElem: HTMLSpanElement = document.createElement(\"span\");\n      dateElem.className = \"date\";\n      dateElem.textContent = humanDate(date, \"default\");\n      dateElem.style.fontSize = `${dateFontSize}px`;\n      if (this.props.color) dateElem.style.color = this.props.color;\n      element.append(dateElem);\n    }\n\n    // Time.\n    const timeElem: HTMLSpanElement = document.createElement(\"span\");\n    timeElem.className = \"time\";\n    timeElem.textContent = humanTime(date);\n    timeElem.style.fontSize = `${timeFontSize}px`;\n    if (this.props.color) timeElem.style.color = this.props.color;\n    element.append(timeElem);\n\n    // City name.\n    const city = this.getHumanTimezone();\n    if (city.length > 0) {\n      const tzElem: HTMLSpanElement = document.createElement(\"span\");\n      tzElem.className = \"timezone\";\n      tzElem.textContent = city;\n      tzElem.style.fontSize = `${tzFontSize}px`;\n      if (this.props.color) tzElem.style.color = this.props.color;\n      element.append(tzElem);\n    }\n\n    return element;\n  }\n\n  /**\n   * Generate the current date using the timezone offset stored into the properties.\n   * @return The current date.\n   */\n  private getOriginDate(initialDate: Date | null = null): Date {\n    const d = initialDate ? initialDate : new Date();\n    const targetTZOffset = this.props.clockTimezoneOffset * 1000; // In ms.\n    const localTZOffset = d.getTimezoneOffset() * 60 * 1000; // In ms.\n    const utimestamp = d.getTime() + targetTZOffset + localTZOffset;\n\n    return new Date(utimestamp);\n  }\n\n  /**\n   * Extract a human readable city name from the timezone text.\n   * @param timezone Timezone text.\n   */\n  public getHumanTimezone(timezone: string = this.props.clockTimezone): string {\n    const [, city = \"\"] = timezone.split(\"/\");\n    return city.replace(\"_\", \" \");\n  }\n\n  /**\n   * Generate a element size using the current size and the default values.\n   * @return The size.\n   */\n  private getElementSize(\n    width: number = this.props.width,\n    height: number = this.props.height\n  ): Size {\n    switch (this.props.clockType) {\n      case \"analogic\": {\n        let diameter = 100; // Default value.\n\n        if (width > 0 && height > 0) {\n          diameter = Math.min(width, height);\n        } else if (width > 0) {\n          diameter = width;\n        } else if (height > 0) {\n          diameter = height;\n        }\n\n        let extraHeigth = 0;\n        if (this.props.clockFormat === \"datetime\") {\n          extraHeigth = height / 8;\n        }\n\n        return {\n          width: diameter,\n          height: diameter + extraHeigth\n        };\n      }\n      case \"digital\": {\n        if (width > 0 && height > 0) {\n          // The proportion of the clock should be (width = height / 2) aproximately.\n          height = width / 2 < height ? width / 2 : height;\n        } else if (width > 0) {\n          height = width / 2;\n        } else if (height > 0) {\n          // The proportion of the clock should be (height * 2 = width) aproximately.\n          width = height * 2;\n        } else {\n          width = 100; // Default value.\n          height = 50; // Default value.\n        }\n\n        return {\n          width,\n          height\n        };\n      }\n      default:\n        throw new Error(\"invalid clock type.\");\n    }\n  }\n}\n","import { AnyObject } from \"../lib/types\";\nimport { parseIntOr, notEmptyStringOr, t } from \"../lib\";\nimport Item, { ItemType, ItemProps, itemBasePropsDecoder } from \"../Item\";\n\ninterface BoxProps extends ItemProps {\n  // Overrided properties.\n  readonly type: ItemType.BOX_ITEM;\n  label: null;\n  isLinkEnabled: false;\n  parentId: null;\n  aclGroupId: null;\n  // Custom properties.\n  borderWidth: number;\n  borderColor: string | null;\n  fillColor: string | null;\n  fillTransparent: boolean | null;\n}\n\n/**\n * Build a valid typed object from a raw object.\n * This will allow us to ensure the type safety.\n *\n * @param data Raw object.\n * @return An object representing the item props.\n * @throws Will throw a TypeError if some property\n * is missing from the raw object or have an invalid type.\n */\nexport function boxPropsDecoder(data: AnyObject): BoxProps | never {\n  return {\n    ...itemBasePropsDecoder(data), // Object spread. It will merge the properties of the two objects.\n    type: ItemType.BOX_ITEM,\n    label: null,\n    isLinkEnabled: false,\n    parentId: null,\n    aclGroupId: null,\n    // Custom properties.\n    borderWidth: parseIntOr(data.borderWidth, 0),\n    borderColor: notEmptyStringOr(data.borderColor, null),\n    fillColor: notEmptyStringOr(data.fillColor, null),\n    fillTransparent: data.fillTransparent\n  };\n}\n\nexport default class Box extends Item<BoxProps> {\n  protected createDomElement(): HTMLElement {\n    const box: HTMLDivElement = document.createElement(\"div\");\n    box.className = \"box\";\n    // To prevent this item to expand beyond its parent.\n    box.style.boxSizing = \"border-box\";\n\n    if (this.props.fillTransparent) {\n      box.style.backgroundColor = \"transparent\";\n    } else {\n      if (this.props.fillColor) {\n        box.style.backgroundColor = this.props.fillColor;\n      }\n    }\n\n    // Border.\n    if (this.props.borderWidth > 0) {\n      box.style.borderStyle = \"solid\";\n      // Control the max width to prevent this item to expand beyond its parent.\n      const maxBorderWidth = Math.min(this.props.width, this.props.height) / 2;\n      const borderWidth = Math.min(this.props.borderWidth, maxBorderWidth);\n      box.style.borderWidth = `${borderWidth}px`;\n\n      if (this.props.borderColor) {\n        box.style.borderColor = this.props.borderColor;\n      }\n    }\n\n    return box;\n  }\n\n  /**\n   * To update the content element.\n   * @override Item.updateDomElement\n   */\n  protected updateDomElement(element: HTMLElement): void {\n    if (this.props.fillTransparent) {\n      element.style.backgroundColor = \"transparent\";\n    } else {\n      if (this.props.fillColor) {\n        element.style.backgroundColor = this.props.fillColor;\n      }\n    }\n\n    // Border.\n    if (this.props.borderWidth > 0) {\n      element.style.borderStyle = \"solid\";\n      // Control the max width to prevent this item to expand beyond its parent.\n      const maxBorderWidth = Math.min(this.props.width, this.props.height) / 2;\n      const borderWidth = Math.min(this.props.borderWidth, maxBorderWidth);\n      element.style.borderWidth = `${borderWidth}px`;\n\n      if (this.props.borderColor) {\n        element.style.borderColor = this.props.borderColor;\n      }\n    }\n  }\n}\n","import { LinkedVisualConsoleProps, AnyObject } from \"../lib/types\";\nimport { linkedVCPropsDecoder } from \"../lib\";\nimport Item, { ItemType, ItemProps, itemBasePropsDecoder } from \"../Item\";\n\nexport type LabelProps = {\n  type: ItemType.LABEL;\n} & ItemProps &\n  LinkedVisualConsoleProps;\n\n/**\n * Build a valid typed object from a raw object.\n * This will allow us to ensure the type safety.\n *\n * @param data Raw object.\n * @return An object representing the label props.\n * @throws Will throw a TypeError if some property\n * is missing from the raw object or have an invalid type.\n */\nexport function labelPropsDecoder(data: AnyObject): LabelProps | never {\n  return {\n    ...itemBasePropsDecoder(data), // Object spread. It will merge the properties of the two objects.\n    type: ItemType.LABEL,\n    ...linkedVCPropsDecoder(data) // Object spread. It will merge the properties of the two objects.\n  };\n}\n\nexport default class Label extends Item<LabelProps> {\n  protected createDomElement(): HTMLElement {\n    const element = document.createElement(\"div\");\n    element.className = \"label\";\n    element.innerHTML = this.getLabelWithMacrosReplaced();\n\n    return element;\n  }\n\n  /**\n   * @override Item.createLabelDomElement\n   * Create a new label for the visual console item.\n   * @return Item label.\n   */\n  public createLabelDomElement(): HTMLElement {\n    const element = document.createElement(\"div\");\n    element.className = \"visual-console-item-label\";\n    // Always return an empty label.\n    return element;\n  }\n}\n","import {\n  LinkedVisualConsoleProps,\n  AnyObject,\n  WithModuleProps\n} from \"../lib/types\";\nimport {\n  linkedVCPropsDecoder,\n  parseIntOr,\n  modulePropsDecoder,\n  replaceMacros\n} from \"../lib\";\nimport Item, { ItemType, ItemProps, itemBasePropsDecoder } from \"../Item\";\n\nexport type SimpleValueProps = {\n  type: ItemType.SIMPLE_VALUE;\n  valueType: \"string\" | \"image\";\n  value: string;\n} & (\n  | {\n      processValue: \"none\";\n    }\n  | {\n      processValue: \"avg\" | \"max\" | \"min\";\n      period: number;\n    }\n) &\n  ItemProps &\n  WithModuleProps &\n  LinkedVisualConsoleProps;\n\n/**\n * Extract a valid enum value from a raw value type.\n * @param valueType Raw value.\n */\nconst parseValueType = (valueType: unknown): SimpleValueProps[\"valueType\"] => {\n  switch (valueType) {\n    case \"string\":\n    case \"image\":\n      return valueType;\n    default:\n      return \"string\";\n  }\n};\n\n/**\n * Extract a valid enum value from a raw process value.\n * @param processValue Raw value.\n */\nconst parseProcessValue = (\n  processValue: unknown\n): SimpleValueProps[\"processValue\"] => {\n  switch (processValue) {\n    case \"none\":\n    case \"avg\":\n    case \"max\":\n    case \"min\":\n      return processValue;\n    default:\n      return \"none\";\n  }\n};\n\n/**\n * Build a valid typed object from a raw object.\n * This will allow us to ensure the type safety.\n *\n * @param data Raw object.\n * @return An object representing the simple value props.\n * @throws Will throw a TypeError if some property\n * is missing from the raw object or have an invalid type.\n */\nexport function simpleValuePropsDecoder(\n  data: AnyObject\n): SimpleValueProps | never {\n  if (typeof data.value !== \"string\" || data.value.length === 0) {\n    throw new TypeError(\"invalid value\");\n  }\n\n  const processValue = parseProcessValue(data.processValue);\n\n  return {\n    ...itemBasePropsDecoder(data), // Object spread. It will merge the properties of the two objects.\n    type: ItemType.SIMPLE_VALUE,\n    valueType: parseValueType(data.valueType),\n    value: data.value,\n    ...(processValue === \"none\"\n      ? { processValue }\n      : { processValue, period: parseIntOr(data.period, 0) }), // Object spread. It will merge the properties of the two objects.\n    ...modulePropsDecoder(data), // Object spread. It will merge the properties of the two objects.\n    ...linkedVCPropsDecoder(data) // Object spread. It will merge the properties of the two objects.\n  };\n}\n\nexport default class SimpleValue extends Item<SimpleValueProps> {\n  protected createDomElement(): HTMLElement {\n    const element = document.createElement(\"div\");\n    element.className = \"simple-value\";\n\n    if (\n      this.props.agentDisabled === true ||\n      this.props.moduleDisabled === true\n    ) {\n      element.style.opacity = \"0.2\";\n    }\n\n    if (this.props.valueType === \"image\") {\n      const img = document.createElement(\"img\");\n      img.src = this.props.value;\n      element.append(img);\n    } else {\n      // Add the value to the label and show it.\n      let text = this.props.value;\n      let label = this.getLabelWithMacrosReplaced();\n      if (label.length > 0) {\n        text = replaceMacros([{ macro: /\\(?_VALUE_\\)?/i, value: text }], label);\n      }\n\n      element.innerHTML = text;\n    }\n\n    return element;\n  }\n\n  /**\n   * Generate a element size\n   * using the current size and the default values.\n   * @return The size.\n   */ protected createLabelDomElement(): HTMLElement {\n    const element = document.createElement(\"div\");\n    element.className = \"visual-console-item-label\";\n    // Always return an empty label.\n    return element;\n  }\n}\n","var pi = Math.PI,\n    tau = 2 * pi,\n    epsilon = 1e-6,\n    tauEpsilon = tau - epsilon;\n\nfunction Path() {\n  this._x0 = this._y0 = // start of current subpath\n  this._x1 = this._y1 = null; // end of current subpath\n  this._ = \"\";\n}\n\nfunction path() {\n  return new Path;\n}\n\nPath.prototype = path.prototype = {\n  constructor: Path,\n  moveTo: function(x, y) {\n    this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y);\n  },\n  closePath: function() {\n    if (this._x1 !== null) {\n      this._x1 = this._x0, this._y1 = this._y0;\n      this._ += \"Z\";\n    }\n  },\n  lineTo: function(x, y) {\n    this._ += \"L\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n  },\n  quadraticCurveTo: function(x1, y1, x, y) {\n    this._ += \"Q\" + (+x1) + \",\" + (+y1) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n  },\n  bezierCurveTo: function(x1, y1, x2, y2, x, y) {\n    this._ += \"C\" + (+x1) + \",\" + (+y1) + \",\" + (+x2) + \",\" + (+y2) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n  },\n  arcTo: function(x1, y1, x2, y2, r) {\n    x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n    var x0 = this._x1,\n        y0 = this._y1,\n        x21 = x2 - x1,\n        y21 = y2 - y1,\n        x01 = x0 - x1,\n        y01 = y0 - y1,\n        l01_2 = x01 * x01 + y01 * y01;\n\n    // Is the radius negative? Error.\n    if (r < 0) throw new Error(\"negative radius: \" + r);\n\n    // Is this path empty? Move to (x1,y1).\n    if (this._x1 === null) {\n      this._ += \"M\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n    }\n\n    // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n    else if (!(l01_2 > epsilon));\n\n    // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n    // Equivalently, is (x1,y1) coincident with (x2,y2)?\n    // Or, is the radius zero? Line to (x1,y1).\n    else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n      this._ += \"L\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n    }\n\n    // Otherwise, draw an arc!\n    else {\n      var x20 = x2 - x0,\n          y20 = y2 - y0,\n          l21_2 = x21 * x21 + y21 * y21,\n          l20_2 = x20 * x20 + y20 * y20,\n          l21 = Math.sqrt(l21_2),\n          l01 = Math.sqrt(l01_2),\n          l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n          t01 = l / l01,\n          t21 = l / l21;\n\n      // If the start tangent is not coincident with (x0,y0), line to.\n      if (Math.abs(t01 - 1) > epsilon) {\n        this._ += \"L\" + (x1 + t01 * x01) + \",\" + (y1 + t01 * y01);\n      }\n\n      this._ += \"A\" + r + \",\" + r + \",0,0,\" + (+(y01 * x20 > x01 * y20)) + \",\" + (this._x1 = x1 + t21 * x21) + \",\" + (this._y1 = y1 + t21 * y21);\n    }\n  },\n  arc: function(x, y, r, a0, a1, ccw) {\n    x = +x, y = +y, r = +r, ccw = !!ccw;\n    var dx = r * Math.cos(a0),\n        dy = r * Math.sin(a0),\n        x0 = x + dx,\n        y0 = y + dy,\n        cw = 1 ^ ccw,\n        da = ccw ? a0 - a1 : a1 - a0;\n\n    // Is the radius negative? Error.\n    if (r < 0) throw new Error(\"negative radius: \" + r);\n\n    // Is this path empty? Move to (x0,y0).\n    if (this._x1 === null) {\n      this._ += \"M\" + x0 + \",\" + y0;\n    }\n\n    // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n    else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n      this._ += \"L\" + x0 + \",\" + y0;\n    }\n\n    // Is this arc empty? We’re done.\n    if (!r) return;\n\n    // Does the angle go the wrong way? Flip the direction.\n    if (da < 0) da = da % tau + tau;\n\n    // Is this a complete circle? Draw two arcs to complete the circle.\n    if (da > tauEpsilon) {\n      this._ += \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (x - dx) + \",\" + (y - dy) + \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (this._x1 = x0) + \",\" + (this._y1 = y0);\n    }\n\n    // Is this arc non-empty? Draw an arc!\n    else if (da > epsilon) {\n      this._ += \"A\" + r + \",\" + r + \",0,\" + (+(da >= pi)) + \",\" + cw + \",\" + (this._x1 = x + r * Math.cos(a1)) + \",\" + (this._y1 = y + r * Math.sin(a1));\n    }\n  },\n  rect: function(x, y, w, h) {\n    this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y) + \"h\" + (+w) + \"v\" + (+h) + \"h\" + (-w) + \"Z\";\n  },\n  toString: function() {\n    return this._;\n  }\n};\n\nexport default path;\n","export default function(x) {\n  return function constant() {\n    return x;\n  };\n}\n","export var abs = Math.abs;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var max = Math.max;\nexport var min = Math.min;\nexport var sin = Math.sin;\nexport var sqrt = Math.sqrt;\n\nexport var epsilon = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = 2 * pi;\n\nexport function acos(x) {\n  return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n  return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant.js\";\nimport {abs, acos, asin, atan2, cos, epsilon, halfPi, max, min, pi, sin, sqrt, tau} from \"./math.js\";\n\nfunction arcInnerRadius(d) {\n  return d.innerRadius;\n}\n\nfunction arcOuterRadius(d) {\n  return d.outerRadius;\n}\n\nfunction arcStartAngle(d) {\n  return d.startAngle;\n}\n\nfunction arcEndAngle(d) {\n  return d.endAngle;\n}\n\nfunction arcPadAngle(d) {\n  return d && d.padAngle; // Note: optional!\n}\n\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n  var x10 = x1 - x0, y10 = y1 - y0,\n      x32 = x3 - x2, y32 = y3 - y2,\n      t = y32 * x10 - x32 * y10;\n  if (t * t < epsilon) return;\n  t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;\n  return [x0 + t * x10, y0 + t * y10];\n}\n\n// Compute perpendicular offset line of length rc.\n// http://mathworld.wolfram.com/Circle-LineIntersection.html\nfunction cornerTangents(x0, y0, x1, y1, r1, rc, cw) {\n  var x01 = x0 - x1,\n      y01 = y0 - y1,\n      lo = (cw ? rc : -rc) / sqrt(x01 * x01 + y01 * y01),\n      ox = lo * y01,\n      oy = -lo * x01,\n      x11 = x0 + ox,\n      y11 = y0 + oy,\n      x10 = x1 + ox,\n      y10 = y1 + oy,\n      x00 = (x11 + x10) / 2,\n      y00 = (y11 + y10) / 2,\n      dx = x10 - x11,\n      dy = y10 - y11,\n      d2 = dx * dx + dy * dy,\n      r = r1 - rc,\n      D = x11 * y10 - x10 * y11,\n      d = (dy < 0 ? -1 : 1) * sqrt(max(0, r * r * d2 - D * D)),\n      cx0 = (D * dy - dx * d) / d2,\n      cy0 = (-D * dx - dy * d) / d2,\n      cx1 = (D * dy + dx * d) / d2,\n      cy1 = (-D * dx + dy * d) / d2,\n      dx0 = cx0 - x00,\n      dy0 = cy0 - y00,\n      dx1 = cx1 - x00,\n      dy1 = cy1 - y00;\n\n  // Pick the closer of the two intersection points.\n  // TODO Is there a faster way to determine which intersection to use?\n  if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n\n  return {\n    cx: cx0,\n    cy: cy0,\n    x01: -ox,\n    y01: -oy,\n    x11: cx0 * (r1 / r - 1),\n    y11: cy0 * (r1 / r - 1)\n  };\n}\n\nexport default function() {\n  var innerRadius = arcInnerRadius,\n      outerRadius = arcOuterRadius,\n      cornerRadius = constant(0),\n      padRadius = null,\n      startAngle = arcStartAngle,\n      endAngle = arcEndAngle,\n      padAngle = arcPadAngle,\n      context = null;\n\n  function arc() {\n    var buffer,\n        r,\n        r0 = +innerRadius.apply(this, arguments),\n        r1 = +outerRadius.apply(this, arguments),\n        a0 = startAngle.apply(this, arguments) - halfPi,\n        a1 = endAngle.apply(this, arguments) - halfPi,\n        da = abs(a1 - a0),\n        cw = a1 > a0;\n\n    if (!context) context = buffer = path();\n\n    // Ensure that the outer radius is always larger than the inner radius.\n    if (r1 < r0) r = r1, r1 = r0, r0 = r;\n\n    // Is it a point?\n    if (!(r1 > epsilon)) context.moveTo(0, 0);\n\n    // Or is it a circle or annulus?\n    else if (da > tau - epsilon) {\n      context.moveTo(r1 * cos(a0), r1 * sin(a0));\n      context.arc(0, 0, r1, a0, a1, !cw);\n      if (r0 > epsilon) {\n        context.moveTo(r0 * cos(a1), r0 * sin(a1));\n        context.arc(0, 0, r0, a1, a0, cw);\n      }\n    }\n\n    // Or is it a circular or annular sector?\n    else {\n      var a01 = a0,\n          a11 = a1,\n          a00 = a0,\n          a10 = a1,\n          da0 = da,\n          da1 = da,\n          ap = padAngle.apply(this, arguments) / 2,\n          rp = (ap > epsilon) && (padRadius ? +padRadius.apply(this, arguments) : sqrt(r0 * r0 + r1 * r1)),\n          rc = min(abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),\n          rc0 = rc,\n          rc1 = rc,\n          t0,\n          t1;\n\n      // Apply padding? Note that since r1 ≥ r0, da1 ≥ da0.\n      if (rp > epsilon) {\n        var p0 = asin(rp / r0 * sin(ap)),\n            p1 = asin(rp / r1 * sin(ap));\n        if ((da0 -= p0 * 2) > epsilon) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0;\n        else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n        if ((da1 -= p1 * 2) > epsilon) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1;\n        else da1 = 0, a01 = a11 = (a0 + a1) / 2;\n      }\n\n      var x01 = r1 * cos(a01),\n          y01 = r1 * sin(a01),\n          x10 = r0 * cos(a10),\n          y10 = r0 * sin(a10);\n\n      // Apply rounded corners?\n      if (rc > epsilon) {\n        var x11 = r1 * cos(a11),\n            y11 = r1 * sin(a11),\n            x00 = r0 * cos(a00),\n            y00 = r0 * sin(a00),\n            oc;\n\n        // Restrict the corner radius according to the sector angle.\n        if (da < pi && (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10))) {\n          var ax = x01 - oc[0],\n              ay = y01 - oc[1],\n              bx = x11 - oc[0],\n              by = y11 - oc[1],\n              kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2),\n              lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n          rc0 = min(rc, (r0 - lc) / (kc - 1));\n          rc1 = min(rc, (r1 - lc) / (kc + 1));\n        }\n      }\n\n      // Is the sector collapsed to a line?\n      if (!(da1 > epsilon)) context.moveTo(x01, y01);\n\n      // Does the sector’s outer ring have rounded corners?\n      else if (rc1 > epsilon) {\n        t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);\n        t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);\n\n        context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n        // Have the corners merged?\n        if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n        // Otherwise, draw the two corners and the ring.\n        else {\n          context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n          context.arc(0, 0, r1, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), !cw);\n          context.arc(t1.cx, t1.cy, rc1, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n        }\n      }\n\n      // Or is the outer ring just a circular arc?\n      else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);\n\n      // Is there no inner ring, and it’s a circular sector?\n      // Or perhaps it’s an annular sector collapsed due to padding?\n      if (!(r0 > epsilon) || !(da0 > epsilon)) context.lineTo(x10, y10);\n\n      // Does the sector’s inner ring (or point) have rounded corners?\n      else if (rc0 > epsilon) {\n        t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);\n        t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);\n\n        context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n        // Have the corners merged?\n        if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n        // Otherwise, draw the two corners and the ring.\n        else {\n          context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n          context.arc(0, 0, r0, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), cw);\n          context.arc(t1.cx, t1.cy, rc0, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n        }\n      }\n\n      // Or is the inner ring just a circular arc?\n      else context.arc(0, 0, r0, a10, a00, cw);\n    }\n\n    context.closePath();\n\n    if (buffer) return context = null, buffer + \"\" || null;\n  }\n\n  arc.centroid = function() {\n    var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,\n        a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi / 2;\n    return [cos(a) * r, sin(a) * r];\n  };\n\n  arc.innerRadius = function(_) {\n    return arguments.length ? (innerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : innerRadius;\n  };\n\n  arc.outerRadius = function(_) {\n    return arguments.length ? (outerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : outerRadius;\n  };\n\n  arc.cornerRadius = function(_) {\n    return arguments.length ? (cornerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : cornerRadius;\n  };\n\n  arc.padRadius = function(_) {\n    return arguments.length ? (padRadius = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), arc) : padRadius;\n  };\n\n  arc.startAngle = function(_) {\n    return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : startAngle;\n  };\n\n  arc.endAngle = function(_) {\n    return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : endAngle;\n  };\n\n  arc.padAngle = function(_) {\n    return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : padAngle;\n  };\n\n  arc.context = function(_) {\n    return arguments.length ? ((context = _ == null ? null : _), arc) : context;\n  };\n\n  return arc;\n}\n","import { arc as arcFactory } from \"d3-shape\";\n\nimport {\n  LinkedVisualConsoleProps,\n  AnyObject,\n  WithModuleProps\n} from \"../lib/types\";\nimport {\n  linkedVCPropsDecoder,\n  modulePropsDecoder,\n  notEmptyStringOr,\n  parseIntOr,\n  parseFloatOr\n} from \"../lib\";\nimport Item, { ItemType, ItemProps, itemBasePropsDecoder } from \"../Item\";\n\nexport type PercentileProps = {\n  type: ItemType.PERCENTILE_BAR;\n  percentileType:\n    | \"progress-bar\"\n    | \"bubble\"\n    | \"circular-progress-bar\"\n    | \"circular-progress-bar-alt\";\n  valueType: \"percent\" | \"value\";\n  minValue: number | null;\n  maxValue: number | null;\n  color: string | null;\n  labelColor: string | null;\n  value: number | null;\n  unit: string | null;\n} & ItemProps &\n  WithModuleProps &\n  LinkedVisualConsoleProps;\n\n/**\n * Extract a valid enum value from a raw type value.\n * @param type Raw value.\n */\nfunction extractPercentileType(\n  type: unknown\n): PercentileProps[\"percentileType\"] {\n  switch (type) {\n    case \"progress-bar\":\n    case \"bubble\":\n    case \"circular-progress-bar\":\n    case \"circular-progress-bar-alt\":\n      return type;\n    default:\n    case ItemType.PERCENTILE_BAR:\n      return \"progress-bar\";\n    case ItemType.PERCENTILE_BUBBLE:\n      return \"bubble\";\n    case ItemType.CIRCULAR_PROGRESS_BAR:\n      return \"circular-progress-bar\";\n    case ItemType.CIRCULAR_INTERIOR_PROGRESS_BAR:\n      return \"circular-progress-bar-alt\";\n  }\n}\n\n/**\n * Extract a valid enum value from a raw value type value.\n * @param type Raw value.\n */\nfunction extractValueType(valueType: unknown): PercentileProps[\"valueType\"] {\n  switch (valueType) {\n    case \"percent\":\n    case \"value\":\n      return valueType;\n    default:\n      return \"percent\";\n  }\n}\n\n/**\n * Build a valid typed object from a raw object.\n * This will allow us to ensure the type safety.\n *\n * @param data Raw object.\n * @return An object representing the percentile props.\n * @throws Will throw a TypeError if some property\n * is missing from the raw object or have an invalid type.\n */\nexport function percentilePropsDecoder(\n  data: AnyObject\n): PercentileProps | never {\n  return {\n    ...itemBasePropsDecoder(data), // Object spread. It will merge the properties of the two objects.\n    type: ItemType.PERCENTILE_BAR,\n    percentileType: extractPercentileType(data.percentileType || data.type),\n    valueType: extractValueType(data.valueType),\n    minValue: parseIntOr(data.minValue, null),\n    maxValue: parseIntOr(data.maxValue, null),\n    color: notEmptyStringOr(data.color, null),\n    labelColor: notEmptyStringOr(data.labelColor, null),\n    value: parseFloatOr(data.value, null),\n    unit: notEmptyStringOr(data.unit, null),\n    ...modulePropsDecoder(data), // Object spread. It will merge the properties of the two objects.\n    ...linkedVCPropsDecoder(data) // Object spread. It will merge the properties of the two objects.\n  };\n}\n\nconst svgNS = \"http://www.w3.org/2000/svg\";\n\nexport default class Percentile extends Item<PercentileProps> {\n  protected createDomElement(): HTMLElement {\n    const colors = {\n      background: \"#000000\",\n      progress: this.props.color || \"#000000\",\n      text: this.props.labelColor || \"#bcbcbc\"\n    };\n    // Progress.\n    const progress = this.getProgress();\n    // Main element.\n    const element = document.createElement(\"div\");\n\n    var formatValue;\n    if (this.props.value != null) {\n      if (Intl) {\n        formatValue = Intl.NumberFormat(\"en-EN\").format(this.props.value);\n      } else {\n        formatValue = this.props.value;\n      }\n    }\n\n    // SVG container.\n    const svg = document.createElementNS(svgNS, \"svg\");\n\n    switch (this.props.percentileType) {\n      case \"progress-bar\":\n        {\n          const backgroundRect = document.createElementNS(svgNS, \"rect\");\n          backgroundRect.setAttribute(\"fill\", colors.background);\n          backgroundRect.setAttribute(\"fill-opacity\", \"0.5\");\n          backgroundRect.setAttribute(\"width\", \"100%\");\n          backgroundRect.setAttribute(\"height\", \"100%\");\n          backgroundRect.setAttribute(\"rx\", \"5\");\n          backgroundRect.setAttribute(\"ry\", \"5\");\n          const progressRect = document.createElementNS(svgNS, \"rect\");\n          progressRect.setAttribute(\"fill\", colors.progress);\n          progressRect.setAttribute(\"fill-opacity\", \"1\");\n          progressRect.setAttribute(\"width\", `${progress}%`);\n          progressRect.setAttribute(\"height\", \"100%\");\n          progressRect.setAttribute(\"rx\", \"5\");\n          progressRect.setAttribute(\"ry\", \"5\");\n          const text = document.createElementNS(svgNS, \"text\");\n          text.setAttribute(\"text-anchor\", \"middle\");\n          text.setAttribute(\"alignment-baseline\", \"middle\");\n          text.setAttribute(\"font-size\", \"15\");\n          text.setAttribute(\"font-family\", \"lato\");\n          text.setAttribute(\"font-weight\", \"bold\");\n          text.setAttribute(\"text-anchor\", `middle`);\n          text.setAttribute(\"alignment-baseline\", `middle`);\n          text.setAttribute(\"x\", `50%`);\n          text.setAttribute(\"y\", `50%`);\n          text.setAttribute(\"fill\", colors.text);\n\n          if (this.props.valueType === \"value\") {\n            text.style.fontSize = \"6pt\";\n\n            text.textContent = this.props.unit\n              ? `${formatValue} ${this.props.unit}`\n              : `${formatValue}`;\n          } else {\n            text.textContent = `${progress}%`;\n          }\n\n          svg.setAttribute(\"width\", \"100%\");\n          svg.setAttribute(\"height\", \"100%\");\n          svg.append(backgroundRect, progressRect, text);\n        }\n        break;\n      case \"bubble\":\n      case \"circular-progress-bar\":\n      case \"circular-progress-bar-alt\":\n        {\n          // Auto resize SVG using the view box magic: https://css-tricks.com/scale-svg/\n          svg.setAttribute(\"viewBox\", \"0 0 100 100\");\n\n          if (this.props.percentileType === \"bubble\") {\n            // Create and append the circles.\n            const backgroundCircle = document.createElementNS(svgNS, \"circle\");\n            backgroundCircle.setAttribute(\"transform\", \"translate(50 50)\");\n            backgroundCircle.setAttribute(\"fill\", colors.background);\n            backgroundCircle.setAttribute(\"fill-opacity\", \"0.5\");\n            backgroundCircle.setAttribute(\"r\", \"50\");\n            const progressCircle = document.createElementNS(svgNS, \"circle\");\n            progressCircle.setAttribute(\"transform\", \"translate(50 50)\");\n            progressCircle.setAttribute(\"fill\", colors.progress);\n            progressCircle.setAttribute(\"fill-opacity\", \"1\");\n            progressCircle.setAttribute(\"r\", `${progress / 2}`);\n\n            svg.append(backgroundCircle, progressCircle);\n          } else {\n            // Create and append the circles.\n            const arcProps = {\n              innerRadius:\n                this.props.percentileType === \"circular-progress-bar\" ? 30 : 0,\n              outerRadius: 50,\n              startAngle: 0,\n              endAngle: Math.PI * 2\n            };\n            const arc = arcFactory();\n\n            const backgroundCircle = document.createElementNS(svgNS, \"path\");\n            backgroundCircle.setAttribute(\"transform\", \"translate(50 50)\");\n            backgroundCircle.setAttribute(\"fill\", colors.background);\n            backgroundCircle.setAttribute(\"fill-opacity\", \"0.5\");\n            backgroundCircle.setAttribute(\"d\", `${arc(arcProps)}`);\n            const progressCircle = document.createElementNS(svgNS, \"path\");\n            progressCircle.setAttribute(\"transform\", \"translate(50 50)\");\n            progressCircle.setAttribute(\"fill\", colors.progress);\n            progressCircle.setAttribute(\"fill-opacity\", \"1\");\n            progressCircle.setAttribute(\n              \"d\",\n              `${arc({\n                ...arcProps,\n                endAngle: arcProps.endAngle * (progress / 100)\n              })}`\n            );\n\n            svg.append(backgroundCircle, progressCircle);\n          }\n\n          // Create and append the text.\n          const text = document.createElementNS(svgNS, \"text\");\n          text.setAttribute(\"text-anchor\", \"middle\");\n          text.setAttribute(\"alignment-baseline\", \"middle\");\n          text.setAttribute(\"font-size\", \"16\");\n          text.setAttribute(\"font-family\", \"lato\");\n          text.setAttribute(\"font-weight\", \"bold\");\n          text.setAttribute(\"fill\", colors.text);\n\n          if (this.props.valueType === \"value\" && this.props.value != null) {\n            // Show value and unit in 1 (no unit) or 2 lines.\n            if (this.props.unit && this.props.unit.length > 0) {\n              const value = document.createElementNS(svgNS, \"tspan\");\n              value.setAttribute(\"x\", \"0\");\n              value.setAttribute(\"dy\", \"1em\");\n              value.textContent = `${formatValue}`;\n              value.style.fontSize = \"8pt\";\n              const unit = document.createElementNS(svgNS, \"tspan\");\n              unit.setAttribute(\"x\", \"0\");\n              unit.setAttribute(\"dy\", \"1em\");\n              unit.textContent = `${this.props.unit}`;\n              unit.style.fontSize = \"8pt\";\n              text.append(value, unit);\n              text.setAttribute(\"transform\", \"translate(50 33)\");\n            } else {\n              text.textContent = `${formatValue}`;\n              text.style.fontSize = \"8pt\";\n              text.setAttribute(\"transform\", \"translate(50 50)\");\n            }\n          } else {\n            // Percentage.\n            text.textContent = `${progress}%`;\n            text.setAttribute(\"transform\", \"translate(50 50)\");\n          }\n\n          svg.append(text);\n        }\n        break;\n    }\n\n    if (\n      this.props.agentDisabled === true ||\n      this.props.moduleDisabled === true\n    ) {\n      svg.setAttribute(\"opacity\", \"0.2\");\n    }\n\n    if (svg !== null) element.append(svg);\n\n    return element;\n  }\n\n  /**\n   * To update the content element.\n   * @override Item.updateDomElement\n   */\n  protected updateDomElement(element: HTMLElement): void {\n    if (this.meta.isBeingResized === false) {\n      this.resizeElement(this.props.width, this.props.height);\n    }\n    element.innerHTML = this.createDomElement().innerHTML;\n  }\n\n  /**\n   * To update the content element.\n   * @override resizeElement\n   */\n  public resizeElement(width: number, height: number): void {\n    if (this.props.percentileType === \"progress-bar\") {\n      super.resizeElement(width, 35);\n    } else {\n      super.resizeElement(width, width);\n    }\n  }\n\n  /**\n   * To update the content element.\n   * @override resize\n   */\n  public resize(width: number): void {\n    this.resizeElement(width, width);\n    let height = this.props.maxValue || 0;\n    if (this.props.percentileType === \"progress-bar\") {\n      height = 35;\n    }\n    super.setProps({\n      ...this.props, // Object spread: http://es6-features.org/#SpreadOperator\n      width,\n      height\n    });\n  }\n\n  private getProgress(): number {\n    const minValue = this.props.minValue || 0;\n    const maxValue = this.props.maxValue || 100;\n    const value = this.props.value == null ? 0 : this.props.value;\n\n    if (value <= minValue) return 0;\n    else if (value >= maxValue) return 100;\n    else return Math.trunc(((value - minValue) / (maxValue - minValue)) * 100);\n  }\n}\n","import { AnyObject } from \"../lib/types\";\nimport {\n  stringIsEmpty,\n  notEmptyStringOr,\n  decodeBase64,\n  parseIntOr,\n  t\n} from \"../lib\";\nimport Item, { ItemType, ItemProps, itemBasePropsDecoder } from \"../Item\";\nimport { FormContainer, InputGroup } from \"../Form\";\nimport fontAwesomeIcon from \"../lib/FontAwesomeIcon\";\nimport {\n  faCircleNotch,\n  faExclamationCircle\n} from \"@fortawesome/free-solid-svg-icons\";\n\nexport type ServiceProps = {\n  type: ItemType.SERVICE;\n  serviceId: number;\n  imageSrc: string | null;\n  statusImageSrc: string | null;\n  encodedTitle: string | null;\n} & ItemProps;\n\n/**\n * Build a valid typed object from a raw object.\n * This will allow us to ensure the type safety.\n *\n * @param data Raw object.\n * @return An object representing the service props.\n * @throws Will throw a TypeError if some property\n * is missing from the raw object or have an invalid type.\n */\nexport function servicePropsDecoder(data: AnyObject): ServiceProps | never {\n  if (data.imageSrc !== null) {\n    if (\n      typeof data.statusImageSrc !== \"string\" ||\n      data.imageSrc.statusImageSrc === 0\n    ) {\n      throw new TypeError(\"invalid status image src.\");\n    }\n  } else {\n    if (stringIsEmpty(data.encodedTitle)) {\n      throw new TypeError(\"missing encode tittle content.\");\n    }\n  }\n\n  if (parseIntOr(data.serviceId, null) === null) {\n    throw new TypeError(\"invalid service id.\");\n  }\n\n  return {\n    ...itemBasePropsDecoder(data), // Object spread. It will merge the properties of the two objects.\n    type: ItemType.SERVICE,\n    serviceId: data.serviceId,\n    imageSrc: notEmptyStringOr(data.imageSrc, null),\n    statusImageSrc: notEmptyStringOr(data.statusImageSrc, null),\n    encodedTitle: notEmptyStringOr(data.encodedTitle, null)\n  };\n}\n\nexport default class Service extends Item<ServiceProps> {\n  public createDomElement(): HTMLElement {\n    const element = document.createElement(\"div\");\n    element.className = \"service\";\n\n    if (this.props.statusImageSrc !== null) {\n      element.style.background = `url(${this.props.statusImageSrc}) no-repeat`;\n      element.style.backgroundSize = \"contain\";\n      element.style.backgroundPosition = \"center\";\n      if (this.props.encodedTitle !== null) {\n        element.className = \"service image forced_title\";\n        element.setAttribute(\"data-use_title_for_force_title\", \"1\");\n        element.setAttribute(\n          \"data-title\",\n          decodeBase64(this.props.encodedTitle)\n        );\n      }\n    } else if (this.props.encodedTitle !== null) {\n      element.innerHTML = decodeBase64(this.props.encodedTitle);\n    }\n\n    return element;\n  }\n\n  /**\n   * To update the content element.\n   * @override Item.updateDomElement\n   */\n  protected updateDomElement(element: HTMLElement): void {\n    if (this.props.statusImageSrc !== null) {\n      element.style.background = `url(${this.props.statusImageSrc}) no-repeat`;\n      element.style.backgroundSize = \"contain\";\n      element.style.backgroundPosition = \"center\";\n      if (this.props.encodedTitle !== null) {\n        element.className = \"service image forced_title\";\n        element.setAttribute(\"data-use_title_for_force_title\", \"1\");\n        element.setAttribute(\n          \"data-title\",\n          decodeBase64(this.props.encodedTitle)\n        );\n      }\n      element.innerHTML = \"\";\n    } else if (this.props.encodedTitle !== null) {\n      element.innerHTML = decodeBase64(this.props.encodedTitle);\n    }\n  }\n}\n","import { AnyObject, WithModuleProps } from \"../lib/types\";\n\nimport { modulePropsDecoder, parseIntOr, stringIsEmpty, t } from \"../lib\";\nimport Item, { ItemType, ItemProps, itemBasePropsDecoder } from \"../Item\";\n\nexport type OdometerProps = {\n  type: ItemType.ODOMETER;\n  value: number;\n  status: string;\n  title: string | null;\n  titleModule: string;\n  titleColor: string;\n  odometerType: string;\n  thresholds: string | any;\n  minMaxValue: string;\n} & ItemProps &\n  WithModuleProps;\n\n/**\n * Build a valid typed object from a raw object.\n * This will allow us to ensure the type safety.\n *\n * @param data Raw object.\n * @return An object representing the events history props.\n * @throws Will throw a TypeError if some property\n * is missing from the raw object or have an invalid type.\n */\nexport function odometerPropsDecoder(data: AnyObject): OdometerProps | never {\n  return {\n    ...itemBasePropsDecoder(data), // Object spread. It will merge the properties of the two objects.\n    type: ItemType.ODOMETER,\n    value: parseIntOr(data.value, 0),\n    status: stringIsEmpty(data.status) ? \"#B2B2B2\" : data.status,\n    titleColor: stringIsEmpty(data.titleColor) ? \"#3f3f3f\" : data.titleColor,\n    title: stringIsEmpty(data.title) ? \"\" : data.title,\n    titleModule: stringIsEmpty(data.titleModule) ? \"\" : data.titleModule,\n    thresholds: stringIsEmpty(data.thresholds) ? \"\" : data.thresholds,\n    minMaxValue: stringIsEmpty(data.minMaxValue) ? \"\" : data.minMaxValue,\n    odometerType: stringIsEmpty(data.odometerType)\n      ? \"percent\"\n      : data.odometerType,\n    ...modulePropsDecoder(data) // Object spread. It will merge the properties of the two objects.\n  };\n}\n\nexport default class Odometer extends Item<OdometerProps> {\n  protected createDomElement(): HTMLElement {\n    let lineWarning = \"\";\n    let lineWarning2 = \"\";\n    let lineCritical = \"\";\n    let lineCritical2 = \"\";\n\n    if (this.props.thresholds !== \"\") {\n      const thresholds = JSON.parse(this.props.thresholds);\n\n      if (thresholds !== null) {\n        if (thresholds.min_warning != 0 || thresholds.max_warning != 0) {\n          lineWarning = this.getCoords(\n            thresholds.min_warning,\n            this.props.width / 2\n          );\n          if (thresholds.max_warning == 0) {\n            lineWarning2 = this.getCoords(100, this.props.width / 2);\n          } else {\n            lineWarning2 = this.getCoords(\n              thresholds.max_warning,\n              this.props.width / 2\n            );\n          }\n        }\n\n        if (thresholds.min_critical != 0 || thresholds.max_critical != 0) {\n          lineCritical = this.getCoords(\n            thresholds.min_critical,\n            this.props.width / 2\n          );\n          if (thresholds.max_critical == 0) {\n            lineCritical2 = this.getCoords(100, this.props.width / 2);\n          } else {\n            lineCritical2 = this.getCoords(\n              thresholds.max_critical,\n              this.props.width / 2\n            );\n          }\n        }\n      }\n    }\n\n    let percent = \"\";\n    let number;\n    // Float\n    if (\n      Number(this.props.value) === this.props.value &&\n      this.props.value % 1 !== 0\n    ) {\n      number = this.props.value.toFixed(1);\n    } else {\n      if (this.props.minMaxValue === \"\") {\n        percent = \" %\";\n      } else {\n        percent = this.getSubfix(this.props.value);\n      }\n      number = new Intl.NumberFormat(\"es\", {\n        maximumSignificantDigits: 4,\n        maximumFractionDigits: 3\n      }).format(this.props.value);\n    }\n\n    var numb = number.match(/\\d*\\.\\d/);\n    if (numb !== null) {\n      number = numb[0];\n    }\n\n    const rotate = this.getRotate(this.props.value);\n\n    let backgroundColor = document.getElementById(\n      \"visual-console-container\"\n    ) as HTMLElement;\n\n    if (backgroundColor === null) {\n      backgroundColor = document.getElementById(\n        `visual-console-container-${this.props.cellId}`\n      ) as HTMLElement;\n    }\n\n    if (backgroundColor.style.backgroundColor == \"\") {\n      backgroundColor.style.backgroundColor = \"#fff\";\n    }\n\n    const anchoB = this.props.width * 0.7;\n\n    const element = document.createElement(\"div\");\n    element.className = \"odometer\";\n\n    if (\n      this.props.agentDisabled === true ||\n      this.props.moduleDisabled === true\n    ) {\n      element.style.opacity = \"0.2\";\n    }\n\n    // Odometer container.\n    const odometerContainer = document.createElement(\"div\");\n    odometerContainer.className = \"odometer-container\";\n\n    // Central semicircle.\n    const odometerA = document.createElement(\"div\");\n    odometerA.className = \"odometer-a\";\n    odometerA.style.backgroundColor = `${backgroundColor.style.backgroundColor}`;\n\n    // Semicircle rotating with the value.\n    const odometerB = document.createElement(\"div\");\n    odometerB.className = \"odometer-b\";\n    odometerB.id = `odometerB-${this.props.id}`;\n    odometerB.style.backgroundColor = `${this.props.status}`;\n\n    // Dark semicircle.\n    const odometerC = document.createElement(\"div\");\n    odometerC.className = \"odometer-c\";\n\n    // Green outer semicircle.\n    const gaugeE = document.createElement(\"div\");\n    gaugeE.className = \"odometer-d\";\n\n    const SVG_NS = \"http://www.w3.org/2000/svg\";\n    // Portion of threshold warning\n    if (lineWarning != \"\") {\n      const svgWarning = document.createElementNS(SVG_NS, \"svg\");\n      svgWarning.setAttributeNS(null, \"width\", \"100%\");\n      svgWarning.setAttributeNS(null, \"height\", \"100%\");\n      svgWarning.setAttributeNS(null, \"style\", \"position:absolute;z-index:1\");\n      const pathWarning = document.createElementNS(SVG_NS, \"path\");\n      pathWarning.setAttributeNS(null, \"id\", `svgWarning-${this.props.id}`);\n      pathWarning.setAttributeNS(\n        null,\n        \"d\",\n        `M${this.props.width / 2},${this.props.width / 2}L${lineWarning}A${this\n          .props.width / 2},${this.props.width / 2},0,0,1,${lineWarning2}Z`\n      );\n      pathWarning.setAttributeNS(null, \"class\", \"svg_warning\");\n      svgWarning.appendChild(pathWarning);\n      odometerContainer.appendChild(svgWarning);\n    }\n\n    // Portion of threshold critical\n    if (lineCritical != \"\") {\n      const svgCritical = document.createElementNS(SVG_NS, \"svg\");\n      svgCritical.setAttributeNS(null, \"width\", \"100%\");\n      svgCritical.setAttributeNS(null, \"height\", \"100%\");\n      svgCritical.setAttributeNS(null, \"style\", \"position:absolute;z-index:2\");\n      const pathCritical = document.createElementNS(SVG_NS, \"path\");\n      pathCritical.setAttributeNS(null, \"id\", `svgCritical-${this.props.id}`);\n      pathCritical.setAttributeNS(\n        null,\n        \"d\",\n        `M${this.props.width / 2},${this.props.width / 2}L${lineCritical}A${this\n          .props.width / 2},${this.props.width / 2},0,0,1,${lineCritical2}Z`\n      );\n      pathCritical.setAttributeNS(null, \"fill\", \"#E63C52\");\n      svgCritical.appendChild(pathCritical);\n      odometerContainer.appendChild(svgCritical);\n    }\n\n    // Text.\n    const h1 = document.createElement(\"h1\");\n    h1.innerText = number + percent;\n    h1.style.fontSize = `${anchoB * 0.17}px`;\n    h1.style.color = `${this.props.status}`;\n    h1.style.lineHeight = \"0\";\n\n    const h2 = document.createElement(\"h2\");\n    if (this.props.title == \"\") {\n      h2.textContent = this.truncateTitle(this.props.moduleName);\n    } else {\n      h2.textContent = this.truncateTitle(this.props.title);\n    }\n    h2.title = this.props.titleModule;\n    h2.setAttribute(\"title\", this.props.titleModule);\n\n    h2.style.fontSize = `${anchoB * 0.06}px`;\n    h2.style.color = `${this.props.titleColor}`;\n    h2.style.lineHeight = \"0\";\n\n    let script = document.createElement(\"script\");\n    script.type = \"text/javascript\";\n    script.onload = () => {\n      odometerB.style.transform = `rotate(${rotate}turn)`;\n    };\n    var urlPandora = window.location.pathname.split(\"/\")[1];\n    script.src = `${document.dir}/${urlPandora}/include/javascript/pandora_alerts.js`;\n    odometerA.appendChild(h1);\n    odometerA.appendChild(h2);\n    odometerContainer.appendChild(odometerB);\n    odometerContainer.appendChild(odometerC);\n    odometerContainer.appendChild(gaugeE);\n    odometerContainer.appendChild(odometerA);\n    odometerContainer.appendChild(script);\n    element.appendChild(odometerContainer);\n\n    return element;\n  }\n\n  protected updateDomElement(element: HTMLElement): void {\n    element.innerHTML = this.createDomElement().innerHTML;\n\n    let rotate = this.getRotate(this.props.value);\n\n    const svgWarning = document.getElementById(`svgWarning-${this.props.id}`);\n    if (svgWarning != null) {\n      svgWarning.style.display = \"none\";\n    }\n\n    const svgCritical = document.getElementById(`svgCritical-${this.props.id}`);\n    if (svgCritical != null) {\n      svgCritical.style.display = \"none\";\n    }\n\n    setTimeout(() => {\n      if (svgWarning != null) {\n        svgWarning.style.display = \"block\";\n      }\n\n      if (svgCritical != null) {\n        svgCritical.style.display = \"block\";\n      }\n\n      var odometerB = document.getElementById(`odometerB-${this.props.id}`);\n      if (odometerB) {\n        odometerB.style.transform = `rotate(${rotate}turn)`;\n      }\n    }, 500);\n  }\n\n  public resizeElement(width: number): void {\n    super.resizeElement(width, width / 2);\n  }\n\n  /**\n   * To update the content element.\n   * @override resize\n   */\n  public resize(width: number): void {\n    this.resizeElement(this.props.width);\n  }\n\n  private getRotate(value: number): number {\n    let rotate = 0;\n    if (this.props.minMaxValue === \"\") {\n      rotate = value / 2 / 100;\n    } else {\n      const minMax = JSON.parse(this.props.minMaxValue);\n      if (minMax[\"min\"] === value) {\n        rotate = 0;\n      } else if (minMax[\"max\"] === value) {\n        rotate = 0.5;\n      } else {\n        const limit = minMax[\"max\"] - minMax[\"min\"];\n        const valueMax = minMax[\"max\"] - value;\n        rotate = (100 - (valueMax * 100) / limit) / 100 / 2;\n      }\n    }\n\n    return rotate;\n  }\n\n  private getSubfix(value: number): string {\n    let subfix = \"\";\n    const length = (value + \"\").length;\n    if (length > 3 && length <= 6) {\n      subfix = \" K\";\n    } else if (length > 6 && length <= 9) {\n      subfix = \" M\";\n    } else if (length > 9 && length <= 12) {\n      subfix = \" G\";\n    } else if (length > 12 && length <= 15) {\n      subfix = \" T\";\n    }\n\n    return subfix;\n  }\n\n  private getCoords(percent: number, radio: number): string {\n    if (this.props.minMaxValue !== \"\") {\n      const minMax = JSON.parse(this.props.minMaxValue);\n      if (minMax[\"min\"] === percent) {\n        percent = 0;\n      } else if (minMax[\"max\"] === percent || percent === 100) {\n        percent = 100;\n      } else {\n        const limit = minMax[\"max\"] - minMax[\"min\"];\n        let valueMax = minMax[\"max\"] - percent;\n        percent = 100 - (valueMax * 100) / limit;\n      }\n    }\n\n    percent = 180 - percent * 1.8;\n    const x = radio + Math.cos((percent * Math.PI) / 180) * radio;\n    const y = radio - Math.sin((percent * Math.PI) / 180) * radio;\n    return `${x},${y}`;\n  }\n\n  private truncateTitle(title: any): string {\n    if (title != null && title.length > 22) {\n      const halfLength = title.length / 2;\n      const diff = halfLength - 9;\n      const stringBefore = title.substr(0, halfLength - diff);\n      const stringAfter = title.substr(halfLength + diff);\n\n      return `${stringBefore}...${stringAfter}`;\n    } else {\n      return title;\n    }\n  }\n}\n","import { AnyObject, Size, Position, WithModuleProps } from \"./lib/types\";\nimport {\n  parseBoolean,\n  sizePropsDecoder,\n  parseIntOr,\n  notEmptyStringOr,\n  itemMetaDecoder,\n  t,\n  ellipsize,\n  debounce\n} from \"./lib\";\nimport Item, {\n  ItemType,\n  ItemProps,\n  ItemClickEvent,\n  ItemRemoveEvent,\n  ItemMovedEvent,\n  ItemResizedEvent,\n  ItemSelectionChangedEvent\n} from \"./Item\";\nimport StaticGraph, { staticGraphPropsDecoder } from \"./items/StaticGraph\";\nimport Icon, { iconPropsDecoder } from \"./items/Icon\";\nimport ColorCloud, { colorCloudPropsDecoder } from \"./items/ColorCloud\";\nimport NetworkLink, { networkLinkPropsDecoder } from \"./items/NetworkLink\";\nimport Group, { groupPropsDecoder } from \"./items/Group\";\nimport Clock, { clockPropsDecoder } from \"./items/Clock\";\nimport Box, { boxPropsDecoder } from \"./items/Box\";\nimport Line, { linePropsDecoder, LineMovedEvent } from \"./items/Line\";\nimport Label, { labelPropsDecoder } from \"./items/Label\";\nimport SimpleValue, { simpleValuePropsDecoder } from \"./items/SimpleValue\";\nimport EventsHistory, {\n  eventsHistoryPropsDecoder\n} from \"./items/EventsHistory\";\nimport Percentile, { percentilePropsDecoder } from \"./items/Percentile\";\nimport TypedEvent, { Disposable, Listener } from \"./lib/TypedEvent\";\nimport DonutGraph, { donutGraphPropsDecoder } from \"./items/DonutGraph\";\nimport BarsGraph, { barsGraphPropsDecoder } from \"./items/BarsGraph\";\nimport ModuleGraph, { moduleGraphPropsDecoder } from \"./items/ModuleGraph\";\nimport Service, { servicePropsDecoder } from \"./items/Service\";\nimport Odometer, { odometerPropsDecoder } from \"./items/Odometer\";\nimport BasicChart, { basicChartPropsDecoder } from \"./items/BasicChart\";\n\n// TODO: Document.\n// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\nfunction itemInstanceFrom(data: AnyObject) {\n  const type = parseIntOr(data.type, null);\n  if (type == null) throw new TypeError(\"missing item type.\");\n\n  const meta = itemMetaDecoder(data);\n\n  switch (type as ItemType) {\n    case ItemType.STATIC_GRAPH:\n      return new StaticGraph(staticGraphPropsDecoder(data), meta);\n    case ItemType.MODULE_GRAPH:\n      return new ModuleGraph(moduleGraphPropsDecoder(data), meta);\n    case ItemType.SIMPLE_VALUE:\n    case ItemType.SIMPLE_VALUE_MAX:\n    case ItemType.SIMPLE_VALUE_MIN:\n    case ItemType.SIMPLE_VALUE_AVG:\n      return new SimpleValue(simpleValuePropsDecoder(data), meta);\n    case ItemType.PERCENTILE_BAR:\n    case ItemType.PERCENTILE_BUBBLE:\n    case ItemType.CIRCULAR_PROGRESS_BAR:\n    case ItemType.CIRCULAR_INTERIOR_PROGRESS_BAR:\n      return new Percentile(percentilePropsDecoder(data), meta);\n    case ItemType.LABEL:\n      return new Label(labelPropsDecoder(data), meta);\n    case ItemType.ICON:\n      return new Icon(iconPropsDecoder(data), meta);\n    case ItemType.SERVICE:\n      return new Service(servicePropsDecoder(data), meta);\n    case ItemType.GROUP_ITEM:\n      return new Group(groupPropsDecoder(data), meta);\n    case ItemType.BOX_ITEM:\n      return new Box(boxPropsDecoder(data), meta);\n    case ItemType.LINE_ITEM:\n      return new Line(linePropsDecoder(data), meta);\n    case ItemType.AUTO_SLA_GRAPH:\n      return new EventsHistory(eventsHistoryPropsDecoder(data), meta);\n    case ItemType.DONUT_GRAPH:\n      return new DonutGraph(donutGraphPropsDecoder(data), meta);\n    case ItemType.BARS_GRAPH:\n      return new BarsGraph(barsGraphPropsDecoder(data), meta);\n    case ItemType.CLOCK:\n      return new Clock(clockPropsDecoder(data), meta);\n    case ItemType.COLOR_CLOUD:\n      return new ColorCloud(colorCloudPropsDecoder(data), meta);\n    case ItemType.NETWORK_LINK:\n      return new NetworkLink(networkLinkPropsDecoder(data), meta);\n    case ItemType.ODOMETER:\n      return new Odometer(odometerPropsDecoder(data), meta);\n    case ItemType.BASIC_CHART:\n      return new BasicChart(basicChartPropsDecoder(data), meta);\n    default:\n      throw new TypeError(\"item not found\");\n  }\n}\n\n// TODO: Document.\n// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\nfunction decodeProps(data: AnyObject) {\n  const type = parseIntOr(data.type, null);\n  if (type == null) throw new TypeError(\"missing item type.\");\n\n  switch (type as ItemType) {\n    case ItemType.STATIC_GRAPH:\n      return staticGraphPropsDecoder(data);\n    case ItemType.MODULE_GRAPH:\n      return moduleGraphPropsDecoder(data);\n    case ItemType.SIMPLE_VALUE:\n    case ItemType.SIMPLE_VALUE_MAX:\n    case ItemType.SIMPLE_VALUE_MIN:\n    case ItemType.SIMPLE_VALUE_AVG:\n      return simpleValuePropsDecoder(data);\n    case ItemType.PERCENTILE_BAR:\n    case ItemType.PERCENTILE_BUBBLE:\n    case ItemType.CIRCULAR_PROGRESS_BAR:\n    case ItemType.CIRCULAR_INTERIOR_PROGRESS_BAR:\n      return percentilePropsDecoder(data);\n    case ItemType.LABEL:\n      return labelPropsDecoder(data);\n    case ItemType.ICON:\n      return iconPropsDecoder(data);\n    case ItemType.SERVICE:\n      return servicePropsDecoder(data);\n    case ItemType.GROUP_ITEM:\n      return groupPropsDecoder(data);\n    case ItemType.BOX_ITEM:\n      return boxPropsDecoder(data);\n    case ItemType.LINE_ITEM:\n      return linePropsDecoder(data);\n    case ItemType.AUTO_SLA_GRAPH:\n      return eventsHistoryPropsDecoder(data);\n    case ItemType.DONUT_GRAPH:\n      return donutGraphPropsDecoder(data);\n    case ItemType.BARS_GRAPH:\n      return barsGraphPropsDecoder(data);\n    case ItemType.CLOCK:\n      return clockPropsDecoder(data);\n    case ItemType.COLOR_CLOUD:\n      return colorCloudPropsDecoder(data);\n    case ItemType.NETWORK_LINK:\n      return networkLinkPropsDecoder(data);\n    case ItemType.ODOMETER:\n      return odometerPropsDecoder(data);\n    case ItemType.BASIC_CHART:\n      return basicChartPropsDecoder(data);\n    default:\n      throw new TypeError(\"decoder not found\");\n  }\n}\n\n// Base properties.\nexport interface VisualConsoleProps extends Size {\n  readonly id: number;\n  name: string;\n  groupId: number;\n  backgroundURL: string | null; // URL?\n  backgroundColor: string | null;\n  isFavorite: boolean;\n  relationLineWidth: number;\n  maintenanceMode: MaintenanceModeInterface | null;\n  gridSize: number | 10;\n  gridSelected: boolean | false | false;\n}\n\nexport interface MaintenanceModeInterface {\n  user: string;\n  timestamp: number;\n}\n\n/**\n * Build a valid typed object from a raw object.\n * This will allow us to ensure the type safety.\n *\n * @param data Raw object.\n * @return An object representing the Visual Console props.\n * @throws Will throw a TypeError if some property\n * is missing from the raw object or have an invalid type.\n */\nexport function visualConsolePropsDecoder(\n  data: AnyObject\n): VisualConsoleProps | never {\n  // Object destructuring: http://es6-features.org/#ObjectMatchingShorthandNotation\n  const {\n    id,\n    name,\n    groupId,\n    backgroundURL,\n    backgroundColor,\n    isFavorite,\n    relationLineWidth,\n    maintenanceMode,\n    gridSize,\n    gridSelected\n  } = data;\n\n  if (id == null || isNaN(parseInt(id))) {\n    throw new TypeError(\"invalid Id.\");\n  }\n  if (typeof name !== \"string\" || name.length === 0) {\n    throw new TypeError(\"invalid name.\");\n  }\n  if (groupId == null || isNaN(parseInt(groupId))) {\n    throw new TypeError(\"invalid group Id.\");\n  }\n\n  return {\n    id: parseInt(id),\n    name,\n    groupId: parseInt(groupId),\n    backgroundURL: notEmptyStringOr(backgroundURL, null),\n    backgroundColor: notEmptyStringOr(backgroundColor, null),\n    isFavorite: parseBoolean(isFavorite),\n    relationLineWidth: parseIntOr(relationLineWidth, 0),\n    maintenanceMode: maintenanceMode,\n    gridSize: parseIntOr(gridSize, 10),\n    gridSelected: false,\n    ...sizePropsDecoder(data)\n  };\n}\n\nexport default class VisualConsole {\n  // Reference to the DOM element which will contain the items.\n  private readonly containerRef: HTMLElement;\n  // Properties.\n  private _props: VisualConsoleProps;\n  // Visual Console Item instances by their Id.\n  private elementsById: {\n    [key: number]: Item<ItemProps>;\n  } = {};\n  // Visual Console Item Ids.\n  private elementIds: ItemProps[\"id\"][] = [];\n  // Dictionary which store the created lines.\n  private relations: {\n    [key: string]: Line;\n  } = {};\n\n  // Dictionary which store the related items (by ID).\n  private lineLinks: {\n    [key: number]: { [key: number]: { [key: string]: number } };\n  } = {};\n\n  private lines: {\n    [key: number]: { [key: string]: number };\n  } = {};\n\n  // Event manager for click events.\n  private readonly clickEventManager = new TypedEvent<ItemClickEvent>();\n  // Event manager for double click events.\n  private readonly dblClickEventManager = new TypedEvent<ItemClickEvent>();\n  // Event manager for move events.\n  private readonly movedEventManager = new TypedEvent<ItemMovedEvent>();\n  // Event manager for line move events.\n  private readonly lineMovedEventManager = new TypedEvent<LineMovedEvent>();\n  // Event manager for resize events.\n  private readonly resizedEventManager = new TypedEvent<ItemResizedEvent>();\n  // Event manager for remove events.\n  private readonly selectionChangedEventManager = new TypedEvent<\n    ItemSelectionChangedEvent\n  >();\n  // List of references to clean the event listeners.\n  private readonly disposables: Disposable[] = [];\n\n  /**\n   * React to a click on an element.\n   * @param e Event object.\n   */\n  private handleElementClick: (e: ItemClickEvent) => void = e => {\n    this.clickEventManager.emit(e);\n    // console.log(`Clicked element #${e.data.id}`, e);\n  };\n\n  /**\n   * React to a double click on an element.\n   * @param e Event object.\n   */\n  private handleElementDblClick: (e: ItemClickEvent) => void = e => {\n    this.dblClickEventManager.emit(e);\n    // console.log(`Double clicked element #${e.data.id}`, e);\n  };\n\n  /**\n   * React to a movement on an element.\n   * @param e Event object.\n   */\n  private handleElementMovement: (e: ItemMovedEvent) => void = e => {\n    var type = e.item.itemProps.type;\n\n    if (\n      type !== 13 &&\n      type !== 21 &&\n      (typeof this.props.gridSelected === \"undefined\" ||\n        this.props.gridSelected === false)\n    ) {\n      this.elements.forEach(item => {\n        if (\n          item.meta.isSelected === true &&\n          e.item.itemProps.id !== item.itemProps.id &&\n          item.props.type !== 13 &&\n          item.props.type !== 21\n        ) {\n          const movementX = e.newPosition.x - e.item.props.x;\n          const movementY = e.newPosition.y - e.item.props.y;\n\n          let newX = item.props.x + movementX;\n          let newY = item.props.y + movementY;\n\n          if (newX > this.props.width) {\n            newX = this.props.width;\n          } else if (newX <= 0) {\n            newX = 0;\n          }\n\n          if (newY > this.props.height) {\n            newY = this.props.height;\n          } else if (newY <= 0) {\n            newY = 0;\n          }\n\n          item.moveElement(newX, newY);\n          item.debouncedMovementSave(newX, newY);\n        }\n      });\n    }\n\n    if (type !== 13 && type !== 21 && this.props.gridSelected === true) {\n      var gridSize = this.props.gridSize;\n      var positionX = e.newPosition.x;\n      var positionY = e.newPosition.y;\n      if (positionX % gridSize !== 0 || positionY % gridSize !== 0) {\n        var x = Math.floor(positionX / gridSize) * gridSize;\n        var y = Math.floor(positionY / gridSize) * gridSize;\n        let elemntSelected = document.getElementById(\n          \"item-selected-move\"\n        ) as HTMLElement;\n        elemntSelected.setAttribute(\n          \"style\",\n          \"top:\" + y + \"px !important; left:\" + x + \"px !important\"\n        );\n        return;\n      }\n    }\n    // Move their relation lines.\n    const itemId = e.item.props.id;\n    const relations = this.getItemRelations(itemId);\n\n    relations.forEach(relation => {\n      if (relation.parentId === itemId) {\n        // Move the line start.\n        relation.line.props = {\n          ...relation.line.props,\n          startPosition: this.getVisualCenter(e.newPosition, e.item)\n        };\n      } else if (relation.childId === itemId) {\n        // Move the line end.\n        relation.line.props = {\n          ...relation.line.props,\n          endPosition: this.getVisualCenter(e.newPosition, e.item)\n        };\n      }\n    });\n\n    // Move lines conneted with this item.\n    this.updateLinesConnected(e.item.props, e.newPosition, false);\n\n    // console.log(`Moved element #${e.item.props.id}`, e);\n  };\n\n  /**\n   * React to a movement finished on an element.\n   * @param e Event object.\n   */\n  private handleElementMovementFinished: (e: ItemMovedEvent) => void = e => {\n    this.movedEventManager.emit(e);\n    // Move lines conneted with this item.\n    this.updateLinesConnected(e.item.props, e.newPosition, true);\n    // console.log(`Movement finished for element #${e.item.props.id}`, e);\n  };\n\n  /**\n   * Verifies if x,y are inside item coordinates.\n   * @param x Coordinate X\n   * @param y Coordinate Y\n   * @param item ItemProps instance.\n   */\n  private coordinatesInItem(x: number, y: number, props: ItemProps) {\n    if (\n      props.type == ItemType.LINE_ITEM ||\n      props.type == ItemType.NETWORK_LINK\n    ) {\n      return false;\n    }\n\n    if (\n      x > props.x &&\n      x < props.x + props.width &&\n      y > props.y &&\n      y < props.y + props.height\n    ) {\n      return true;\n    }\n    return false;\n  }\n\n  /**\n   * React to a line movement.\n   * @param e Event object.\n   */\n  private handleLineElementMovementFinished: (\n    e: LineMovedEvent\n  ) => void = e => {\n    // Update links.\n    this.refreshLink(e.item);\n\n    // Build line relationships between items and lines.\n    this.lineMovedEventManager.emit(e);\n\n    // console.log(`Movement finished for element #${e.item.props.id}`, e);\n  };\n\n  /**\n   * React to a resizement on an element.\n   * @param e Event object.\n   */\n  private handleElementResizement: (e: ItemResizedEvent) => void = e => {\n    if (\n      e.item.props.type !== 13 &&\n      e.item.props.type !== 21 &&\n      (typeof this.props.gridSelected === \"undefined\" ||\n        this.props.gridSelected === false)\n    ) {\n      this.elements.forEach(item => {\n        if (\n          item.meta.isSelected === true &&\n          e.item.itemProps.id !== item.itemProps.id &&\n          item.props.type !== 13 &&\n          item.props.type !== 21\n        ) {\n          item.setMeta({ isUpdating: true });\n          // Resize the DOM element.\n          item.resizeElement(e.newSize.width, e.newSize.height);\n          // Run the save function.\n          item.debouncedResizementSave(e.newSize.width, e.newSize.height);\n        }\n      });\n    }\n    // Move their relation lines.\n    const item = e.item;\n    const props = item.props;\n    const itemId = props.id;\n    const relations = this.getItemRelations(itemId);\n\n    const position = {\n      x: props.x,\n      y: props.y\n    };\n\n    const meta = this.elementsById[itemId].meta;\n\n    this.elementsById[itemId].meta = {\n      ...meta,\n      isUpdating: true\n    };\n\n    relations.forEach(relation => {\n      if (relation.parentId === itemId) {\n        // Move the line start.\n        relation.line.props = {\n          ...relation.line.props,\n          startPosition: this.getVisualCenter(position, item)\n        };\n      } else if (relation.childId === itemId) {\n        // Move the line end.\n        relation.line.props = {\n          ...relation.line.props,\n          endPosition: this.getVisualCenter(position, item)\n        };\n      }\n    });\n\n    // console.log(`Resized element #${e.item.props.id}`, e);\n  };\n\n  /**\n   * React to a finished resizement on an element.\n   * @param e Event object.\n   */\n  private handleElementResizementFinished: (\n    e: ItemResizedEvent\n  ) => void = e => {\n    this.resizedEventManager.emit(e);\n    // console.log(`Resize  fonished for element #${e.item.props.id}`, e);\n  };\n\n  /**\n   * Clear some element references.\n   * @param e Event object.\n   */\n  private handleElementRemove: (e: ItemRemoveEvent) => void = e => {\n    // Remove the element from the list and its relations.\n    this.elementIds = this.elementIds.filter(id => id !== e.item.props.id);\n    delete this.elementsById[e.item.props.id];\n    this.clearRelations(e.item.props.id);\n  };\n\n  /**\n   * React to element selection change\n   * @param e Event object.\n   */\n  private handleElementSelectionChanged: (\n    e: ItemSelectionChangedEvent\n  ) => void = e => {\n    if (this.elements.filter(item => item.meta.isSelected == true).length > 0) {\n      e.selected = true;\n    } else {\n      e.selected = false;\n    }\n    this.selectionChangedEventManager.emit(e);\n  };\n\n  // TODO: Document\n  private handleContainerClick: (e: MouseEvent) => void = () => {\n    this.unSelectItems();\n  };\n\n  /**\n   * Refresh link for given line.\n   *\n   * @param line Line.\n   */\n  protected refreshLink(l: Line) {\n    let line: number = l.props.id;\n    let itemAtStart = 0;\n    let itemAtEnd = 0;\n\n    try {\n      for (let i in this.elementsById) {\n        if (\n          this.coordinatesInItem(\n            l.props.startPosition.x,\n            l.props.startPosition.y,\n            this.elementsById[i].props\n          )\n        ) {\n          // Start position at element i.\n          itemAtStart = parseInt(i);\n        }\n\n        if (\n          this.coordinatesInItem(\n            l.props.endPosition.x,\n            l.props.endPosition.y,\n            this.elementsById[i].props\n          )\n        ) {\n          // Start position at element i.\n          itemAtEnd = parseInt(i);\n        }\n      }\n\n      if (this.lineLinks == null) {\n        this.lineLinks = {};\n      }\n\n      if (this.lines == null) {\n        this.lines = {};\n      }\n\n      if (itemAtStart == line) {\n        itemAtStart = 0;\n      }\n\n      if (itemAtEnd == line) {\n        itemAtEnd = 0;\n      }\n\n      // Initialize line if not registered.\n      if (this.lines[line] == null) {\n        this.lines[line] = {\n          start: itemAtStart,\n          end: itemAtEnd\n        };\n      }\n\n      // Register 'start' side of the line.\n      if (itemAtStart > 0) {\n        // Initialize.\n        if (this.lineLinks[itemAtStart] == null) {\n          this.lineLinks[itemAtStart] = {};\n        }\n\n        // Assign.\n        this.lineLinks[itemAtStart][line] = {\n          start: itemAtStart,\n          end: itemAtEnd\n        };\n\n        // Register line if not exists prviously.\n      } else {\n        // Clean previous line relationship.\n        if (this.lines[line][\"start\"] > 0) {\n          this.lineLinks[this.lines[line][\"start\"]][line][\"start\"] = 0;\n          this.lines[line][\"start\"] = 0;\n        }\n      }\n\n      if (itemAtEnd > 0) {\n        if (this.lineLinks[itemAtEnd] == null) {\n          this.lineLinks[itemAtEnd] = {};\n        }\n\n        this.lineLinks[itemAtEnd][line] = {\n          start: itemAtStart,\n          end: itemAtEnd\n        };\n      } else {\n        // Clean previous line relationship.\n        if (this.lines[line][\"end\"] > 0) {\n          this.lineLinks[this.lines[line][\"end\"]][line][\"end\"] = 0;\n          this.lines[line][\"end\"] = 0;\n        }\n      }\n\n      this.lines[line] = {\n        start: itemAtStart,\n        end: itemAtEnd\n      };\n\n      // Cleanup.\n      for (let i in this.lineLinks) {\n        if (this.lineLinks[i][line]) {\n          if (\n            this.lineLinks[i][line].start == 0 &&\n            this.lineLinks[i][line].end == 0\n          ) {\n            // Object not connected to a line.\n            delete this.lineLinks[i][line];\n\n            if (Object.keys(this.lineLinks[i]).length === 0) {\n              delete this.lineLinks[i];\n            }\n          }\n\n          if (\n            (this.lineLinks[i][line].start != itemAtStart &&\n              this.lineLinks[i][line].end == itemAtEnd) ||\n            (this.lineLinks[i][line].start == itemAtStart &&\n              this.lineLinks[i][line].end != itemAtEnd)\n          ) {\n            // Object not connected to a line.\n            delete this.lineLinks[i][line];\n\n            if (Object.keys(this.lineLinks[i]).length === 0) {\n              delete this.lineLinks[i];\n            }\n          }\n        }\n      }\n    } catch (error) {\n      console.error(error);\n    }\n  }\n\n  /**\n   * Updates lines connected to this item.\n   *\n   * @param item Item moved.\n   * @param newPosition New location for item.\n   * @param oldPosition Old location for item.\n   * @param save Save to ajax or not.\n   */\n  protected updateLinesConnected(item: ItemProps, to: Position, save: boolean) {\n    if (this.lineLinks[item.id] == null) {\n      return;\n    }\n\n    Object.keys(this.lineLinks[item.id]).forEach(i => {\n      let lineId = parseInt(i);\n      const found = this.elementIds.indexOf(lineId);\n      if (found === -1) {\n        return;\n      }\n      let line = this.elementsById[lineId] as Line;\n\n      if (line.props) {\n        let startX = line.props.startPosition.x;\n        let startY = line.props.startPosition.y;\n        let endX = line.props.endPosition.x;\n        let endY = line.props.endPosition.y;\n\n        if (item.id == this.lineLinks[item.id][lineId][\"start\"]) {\n          startX = to.x + item.width / 2;\n          startY = to.y + item.height / 2;\n        }\n\n        if (item.id == this.lineLinks[item.id][lineId][\"end\"]) {\n          endX = to.x + item.width / 2;\n          endY = to.y + item.height / 2;\n        }\n\n        // Update line movement.\n        this.updateElement({\n          ...line.props,\n          startX: startX,\n          startY: startY,\n          endX: endX,\n          endY: endY\n        });\n\n        if (save) {\n          let debouncedLinePositionSave = debounce(\n            500,\n            (options: AnyObject) => {\n              this.lineMovedEventManager.emit({\n                item: options.line,\n                startPosition: {\n                  x: options.startX,\n                  y: options.startY\n                },\n                endPosition: {\n                  x: options.endX,\n                  y: options.endY\n                }\n              });\n            }\n          );\n\n          // Save line positon.\n          debouncedLinePositionSave({\n            line: line,\n            startX: startX,\n            startY: startY,\n            endX: endX,\n            endY: endY\n          });\n        }\n      }\n    });\n\n    // Update parents...\n    this.buildRelations(item.id, to.x + item.width / 2, to.y + item.height / 2);\n  }\n\n  public constructor(\n    container: HTMLElement,\n    props: AnyObject,\n    items: AnyObject[]\n  ) {\n    this.containerRef = container;\n    this._props = visualConsolePropsDecoder(props);\n\n    // Force the first render.\n    this.render();\n\n    // Sort by id ASC\n    items = items.sort(function(a, b) {\n      if (a.id == null || b.id == null) return 0;\n      else if (a.id > b.id) return 1;\n      else return -1;\n    });\n\n    // Initialize the items.\n    items.forEach(item => this.addElement(item, this));\n\n    // Create lines.\n    this.buildRelations();\n\n    // Re-attach all connected lines if any.\n    this.elements.forEach(item => {\n      if (item instanceof Line) {\n        this.refreshLink(item);\n      }\n    });\n\n    this.containerRef.addEventListener(\"click\", this.handleContainerClick);\n  }\n\n  /**\n   * Public accessor of the `elements` property.\n   * @return Properties.\n   */\n  public get elements(): Item<ItemProps>[] {\n    // Ensure the type cause Typescript doesn't know the filter removes null items.\n    return this.elementIds\n      .map(id => this.elementsById[id])\n      .filter(_ => _ != null) as Item<ItemProps>[];\n  }\n\n  /**\n   * To create a new element add it to the DOM.\n   * @param item. Raw representation of the item's data.\n   */\n  public addElement(item: AnyObject, context: this = this) {\n    try {\n      if (item.ratio == null) {\n        item.ratio = 1;\n      }\n\n      item.x *= item.ratio;\n      item.y *= item.ratio;\n      if (item.type == ItemType.LINE_ITEM) {\n        item.startX *= item.ratio;\n        item.startY *= item.ratio;\n        item.endX *= item.ratio;\n        item.endY *= item.ratio;\n      }\n      const itemInstance = itemInstanceFrom(item);\n\n      // Add the item to the list.\n      context.elementsById[itemInstance.props.id] = itemInstance;\n      context.elementIds.push(itemInstance.props.id);\n      // Item event handlers.\n      itemInstance.onRemove(context.handleElementRemove);\n      itemInstance.onSelectionChanged(context.handleElementSelectionChanged);\n      itemInstance.onClick(context.handleElementClick);\n      itemInstance.onDblClick(context.handleElementDblClick);\n\n      // TODO:Continue\n      if (itemInstance instanceof Line) {\n        itemInstance.onLineMovementFinished(\n          context.handleLineElementMovementFinished\n        );\n        this.refreshLink(itemInstance);\n      } else {\n        itemInstance.onMoved(context.handleElementMovement);\n        itemInstance.onMovementFinished(context.handleElementMovementFinished);\n        itemInstance.onResized(context.handleElementResizement);\n        itemInstance.onResizeFinished(context.handleElementResizementFinished);\n      }\n\n      if (item.ratio !== 1 && item.type != ItemType.LINE_ITEM) {\n        itemInstance.elementRef.style.transform = `scale(${\n          item.ratio ? item.ratio : 1\n        })`;\n        itemInstance.elementRef.style.transformOrigin = \"left top\";\n        itemInstance.elementRef.style.minWidth = \"max-content\";\n        itemInstance.elementRef.style.minHeight = \"max-content\";\n      }\n\n      // Add the item to the DOM.\n      context.containerRef.append(itemInstance.elementRef);\n      return itemInstance;\n    } catch (error) {\n      console.error(\"Error creating a new element:\", (error as Error).message);\n    }\n    return;\n  }\n\n  /**\n   * Public setter of the `elements` property.\n   * @param items.\n   */\n  public updateElements(items: AnyObject[]): void {\n    // Ensure the type cause Typescript doesn't know the filter removes null items.\n    const itemIds = items\n      .map(item => item.id || null)\n      .filter(id => id != null) as number[];\n    // Get the elements we should delete.\n    const deletedIds = this.elementIds.filter(id => itemIds.indexOf(id) < 0);\n    // Delete the elements.\n    deletedIds.forEach(id => {\n      if (this.elementsById[id] != null) {\n        this.elementsById[id].remove();\n        delete this.elementsById[id];\n      }\n    });\n    // Replace the element ids.\n    this.elementIds = itemIds;\n\n    // Initialize the items.\n    items.forEach(item => {\n      if (item.id) {\n        if (this.elementsById[item.id] == null) {\n          // New item.\n          this.addElement(item);\n        } else {\n          // Update item.\n          try {\n            if (item.ratio != null) {\n              item.x *= item.ratio;\n              item.y *= item.ratio;\n              if (item.type == ItemType.LINE_ITEM) {\n                item.startX *= item.ratio;\n                item.startY *= item.ratio;\n                item.endX *= item.ratio;\n                item.endY *= item.ratio;\n              }\n            }\n            this.elementsById[item.id].props = decodeProps(item);\n          } catch (error) {\n            console.error(\n              \"Error updating an element:\",\n              (error as Error).message\n            );\n          }\n        }\n      }\n    });\n\n    // Re-build relations.\n    this.buildRelations();\n  }\n\n  /**\n   * Public setter of the `element` property.\n   * @param item.\n   */\n  public updateElement(item: AnyObject): void {\n    // Update item.\n    try {\n      this.elementsById[item.id].props = {\n        ...decodeProps(item)\n      };\n    } catch (error) {\n      console.error(\"Error updating element:\", (error as Error).message);\n    }\n\n    // Re-build relations.\n    this.buildRelations();\n  }\n\n  /**\n   * Public accessor of the `props` property.\n   * @return Properties.\n   */\n  public get props(): VisualConsoleProps {\n    return { ...this._props }; // Return a copy.\n  }\n\n  /**\n   * Public setter of the `props` property.\n   * If the new props are different enough than the\n   * stored props, a render would be fired.\n   * @param newProps\n   */\n  public set props(newProps: VisualConsoleProps) {\n    const prevProps = this.props;\n    // Update the internal props.\n    this._props = newProps;\n\n    // From this point, things which rely on this.props can access to the changes.\n\n    // Re-render.\n    this.render(prevProps);\n  }\n\n  /**\n   * Recreate or update the HTMLElement which represents the Visual Console into the DOM.\n   * @param prevProps If exists it will be used to only DOM updates instead of a full replace.\n   */\n  public render(prevProps: VisualConsoleProps | null = null): void {\n    if (prevProps) {\n      if (prevProps.backgroundURL !== this.props.backgroundURL) {\n        this.containerRef.style.backgroundImage =\n          this.props.backgroundURL !== null\n            ? `url(${this.props.backgroundURL})`\n            : \"\";\n      }\n      if (this.props.backgroundColor != null)\n        if (prevProps.backgroundColor !== this.props.backgroundColor) {\n          this.containerRef.style.backgroundColor = this.props.backgroundColor;\n        }\n      if (this.sizeChanged(prevProps, this.props)) {\n        this.resizeElement(this.props.width, this.props.height);\n      }\n    } else {\n      if (this.props.backgroundURL)\n        this.containerRef.style.backgroundImage =\n          this.props.backgroundURL !== null\n            ? `url(${this.props.backgroundURL})`\n            : \"\";\n\n      if (this.props.backgroundColor)\n        this.containerRef.style.backgroundColor = this.props.backgroundColor;\n      this.resizeElement(this.props.width, this.props.height);\n    }\n  }\n\n  /**\n   * Compare the previous and the new size and return\n   * a boolean value in case the size changed.\n   * @param prevSize\n   * @param newSize\n   * @return Whether the size changed or not.\n   */\n  public sizeChanged(prevSize: Size, newSize: Size): boolean {\n    return (\n      prevSize.width !== newSize.width || prevSize.height !== newSize.height\n    );\n  }\n\n  /**\n   * Resize the DOM container.\n   * @param width\n   * @param height\n   */\n  public resizeElement(width: number, height: number): void {\n    this.containerRef.style.width = `${width}px`;\n    this.containerRef.style.height = `${height}px`;\n  }\n\n  /**\n   * Update the size into the properties and resize the DOM container.\n   * @param width\n   * @param height\n   */\n  public resize(width: number, height: number): void {\n    this.props = {\n      ...this.props, // Object spread: http://es6-features.org/#SpreadOperator\n      width,\n      height\n    };\n  }\n\n  /**\n   * To remove the event listeners and the elements from the DOM.\n   */\n  public remove(): void {\n    this.disposables.forEach(d => d.dispose()); // Arrow function.\n    this.elements.forEach(e => e.remove()); // Arrow function.\n    this.elementsById = {};\n    this.elementIds = [];\n    // Clear relations.\n    this.clearRelations();\n    // Remove the click event listener.\n    this.containerRef.removeEventListener(\"click\", this.handleContainerClick);\n    // Clean container.\n    this.containerRef.innerHTML = \"\";\n  }\n\n  /**\n   * Create line elements which connect the elements with their parents.\n   *\n   * When itemId is being moved, overwrite position of the 'parent' or 'child'\n   * endpoints of the line, using X and Y values.\n   */\n  public buildRelations(itemId?: number, x?: number, y?: number): void {\n    // Clear relations.\n    this.clearRelations();\n    // Add relations.\n    this.elements.forEach(item => {\n      if (item.props.parentId !== null) {\n        const parent = this.elementsById[item.props.parentId];\n        const child = this.elementsById[item.props.id];\n\n        if (parent && child) {\n          if (itemId != undefined) {\n            if (item.props.parentId == itemId) {\n              // Update parent line position.\n              this.addRelationLine(parent, child, x, y);\n            } else if (item.props.id == itemId) {\n              // Update child line position.\n              this.addRelationLine(parent, child, undefined, undefined, x, y);\n            } else {\n              this.addRelationLine(parent, child);\n            }\n          } else {\n            // No movements default behaviour.\n            this.addRelationLine(parent, child);\n          }\n        }\n      }\n    });\n  }\n\n  /**\n   * @param itemId Optional identifier of a parent or child item.\n   * Remove the line elements which connect the elements with their parents.\n   */\n  private clearRelations(itemId?: number): void {\n    if (itemId != null) {\n      for (let key in this.relations) {\n        const ids = key.split(\"|\");\n        const parentId = Number.parseInt(ids[0]);\n        const childId = Number.parseInt(ids[1]);\n\n        if (itemId === parentId || itemId === childId) {\n          this.relations[key].remove();\n          delete this.relations[key];\n        }\n      }\n    } else {\n      for (let key in this.relations) {\n        this.relations[key].remove();\n        delete this.relations[key];\n      }\n    }\n  }\n\n  /**\n   * Retrieve the line element which represent the relation between items.\n   * @param parentId Identifier of the parent item.\n   * @param childId Itentifier of the child item.\n   * @return The line element or nothing.\n   */\n  private getRelationLine(parentId: number, childId: number): Line | null {\n    const identifier = `${parentId}|${childId}`;\n    return this.relations[identifier] || null;\n  }\n\n  // TODO: Document.\n  private getItemRelations(\n    itemId: number\n  ): {\n    parentId: number;\n    childId: number;\n    line: Line;\n  }[] {\n    const itemRelations = [];\n\n    for (let key in this.relations) {\n      const ids = key.split(\"|\");\n      const parentId = Number.parseInt(ids[0]);\n      const childId = Number.parseInt(ids[1]);\n\n      if (itemId === parentId || itemId === childId) {\n        itemRelations.push({\n          parentId,\n          childId,\n          line: this.relations[key]\n        });\n      }\n    }\n\n    return itemRelations;\n  }\n\n  /**\n   * Retrieve the visual center of the item. It's ussually the center of the\n   * content, like the label doesn't exist.\n   * @param position Initial position.\n   * @param element Element we want to use.\n   */\n  private getVisualCenter(\n    position: Position,\n    element: Item<ItemProps>\n  ): Position {\n    let ratio = 1;\n    if (element.props.ratio != null) {\n      ratio = element.props.ratio;\n    }\n\n    let x = position.x + (element.elementRef.clientWidth / 2) * ratio;\n    let y = position.y + (element.elementRef.clientHeight / 2) * ratio;\n\n    if (\n      typeof element.props.label !== \"undefined\" ||\n      element.props.label !== \"\" ||\n      element.props.label !== null\n    ) {\n      switch (element.props.labelPosition) {\n        case \"up\":\n          y =\n            position.y +\n            ((element.elementRef.clientHeight +\n              element.labelElementRef.clientHeight) /\n              2) *\n              ratio;\n          break;\n        case \"down\":\n          y =\n            position.y +\n            ((element.elementRef.clientHeight -\n              element.labelElementRef.clientHeight) /\n              2) *\n              ratio;\n          break;\n        case \"right\":\n          x =\n            position.x +\n            ((element.elementRef.clientWidth -\n              element.labelElementRef.clientWidth) /\n              2) *\n              ratio;\n          break;\n        case \"left\":\n          x =\n            position.x +\n            ((element.elementRef.clientWidth +\n              element.labelElementRef.clientWidth) /\n              2) *\n              ratio;\n          break;\n      }\n    }\n\n    return { x, y };\n  }\n\n  /**\n   * Add a new line item to represent a relation between the items.\n   * @param parent Parent item.\n   * @param child Child item.\n   * @return Whether the line was added or not.\n   */\n  private addRelationLine(\n    parent: Item<ItemProps>,\n    child: Item<ItemProps>,\n    parentX?: number,\n    parentY?: number,\n    childX?: number,\n    childY?: number\n  ): Line {\n    const identifier = `${parent.props.id}|${child.props.id}`;\n    if (this.relations[identifier] != null) {\n      this.relations[identifier].remove();\n    }\n\n    // Get the items center.\n    let { x: startX, y: startY } = this.getVisualCenter(parent.props, parent);\n    let { x: endX, y: endY } = this.getVisualCenter(child.props, child);\n\n    // Overwrite positions if needed (while moving it!).\n    if (parentX != null) {\n      startX = parentX;\n    }\n\n    if (parentY != null) {\n      startY = parentY;\n    }\n\n    if (childX != null) {\n      endX = childX;\n    }\n\n    if (childY != null) {\n      endY = childY;\n    }\n\n    // Line inherits child element status.\n    const line = new Line(\n      linePropsDecoder({\n        id: 0,\n        type: ItemType.LINE_ITEM,\n        startX,\n        startY,\n        endX,\n        endY,\n        width: 0,\n        height: 0,\n        lineWidth: this.props.relationLineWidth,\n        color: notEmptyStringOr(child.props.colorStatus, \"#CCC\"),\n        ratio: parent.props.ratio\n      }),\n      itemMetaDecoder({\n        receivedAt: new Date()\n      })\n    );\n\n    // Save a reference to the line item.\n    this.relations[identifier] = line;\n\n    // Add the line to the DOM.\n    line.elementRef.style.zIndex = \"0\";\n    this.containerRef.append(line.elementRef);\n\n    return line;\n  }\n\n  /**\n   * Add an event handler to the click of the linked visual console elements.\n   * @param listener Function which is going to be executed when a linked console is clicked.\n   */\n  public onItemClick(listener: Listener<ItemClickEvent>): Disposable {\n    /*\n     * The '.on' function returns a function which will clean the event\n     * listener when executed. We store all the 'dispose' functions to\n     * call them when the item should be cleared.\n     */\n    const disposable = this.clickEventManager.on(listener);\n    this.disposables.push(disposable);\n\n    return disposable;\n  }\n\n  /**\n   * Add an event handler to the double click of the linked visual console elements.\n   * @param listener Function which is going to be executed when a linked console is double clicked.\n   */\n  public onItemDblClick(listener: Listener<ItemClickEvent>): Disposable {\n    /*\n     * The '.on' function returns a function which will clean the event\n     * listener when executed. We store all the 'dispose' functions to\n     * call them when the item should be cleared.\n     */\n    const disposable = this.dblClickEventManager.on(listener);\n    this.disposables.push(disposable);\n\n    return disposable;\n  }\n\n  /**\n   * Add an event handler to the movement of the visual console elements.\n   * @param listener Function which is going to be executed when a linked console is moved.\n   */\n  public onItemMoved(listener: Listener<ItemMovedEvent>): Disposable {\n    /*\n     * The '.on' function returns a function which will clean the event\n     * listener when executed. We store all the 'dispose' functions to\n     * call them when the item should be cleared.\n     */\n    const disposable = this.movedEventManager.on(listener);\n    this.disposables.push(disposable);\n\n    return disposable;\n  }\n\n  /**\n   * Add an event handler to the movement of the visual console line elements.\n   * @param listener Function which is going to be executed when a linked console is moved.\n   */\n  public onLineMoved(listener: Listener<LineMovedEvent>): Disposable {\n    /*\n     * The '.on' function returns a function which will clean the event\n     * listener when executed. We store all the 'dispose' functions to\n     * call them when the item should be cleared.\n     */\n    const disposable = this.lineMovedEventManager.on(listener);\n    this.disposables.push(disposable);\n\n    return disposable;\n  }\n\n  /**\n   * Add an event handler to the resizement of the visual console elements.\n   * @param listener Function which is going to be executed when a linked console is moved.\n   */\n  public onItemResized(listener: Listener<ItemResizedEvent>): Disposable {\n    /*\n     * The '.on' function returns a function which will clean the event\n     * listener when executed. We store all the 'dispose' functions to\n     * call them when the item should be cleared.\n     */\n    const disposable = this.resizedEventManager.on(listener);\n    this.disposables.push(disposable);\n\n    return disposable;\n  }\n\n  /**\n   * Add an event handler to the elements selection change of the visual console .\n   * @param listener Function which is going to be executed when a linked console is moved.\n   */\n  public onItemSelectionChanged(\n    listener: Listener<ItemSelectionChangedEvent>\n  ): Disposable {\n    /*\n     * The '.on' function returns a function which will clean the event\n     * listener when executed. We store all the 'dispose' functions to\n     * call them when the item should be cleared.\n     */\n    const disposable = this.selectionChangedEventManager.on(listener);\n    this.disposables.push(disposable);\n\n    return disposable;\n  }\n\n  /**\n   * Enable the edition mode.\n   */\n  public enableEditMode(): void {\n    this.elements.forEach(item => {\n      item.meta = { ...item.meta, editMode: true };\n    });\n    this.containerRef.classList.add(\"is-editing\");\n  }\n\n  /**\n   * Disable the edition mode.\n   */\n  public disableEditMode(): void {\n    this.elements.forEach(item => {\n      item.meta = { ...item.meta, editMode: false };\n    });\n    this.containerRef.classList.remove(\"is-editing\");\n  }\n\n  /**\n   * Enable the maintenance mode.\n   */\n  public enableMaintenanceMode(): void {\n    this.elements.forEach(item => {\n      item.meta = { ...item.meta, maintenanceMode: true };\n    });\n    this.containerRef.classList.add(\"is-maintenance\");\n    this.containerRef.classList.remove(\"is-editing\");\n  }\n\n  /**\n   * Disable the maintenance mode.\n   */\n  public disableMaintenanceMode(): void {\n    this.elements.forEach(item => {\n      item.meta = { ...item.meta, maintenanceMode: false };\n    });\n    this.containerRef.classList.remove(\"is-maintenance\");\n    this.containerRef.classList.add(\"is-editing\");\n  }\n\n  /**\n   * Update the gridSize.\n   */\n  public updateGridSize(gridSize: string): void {\n    this._props.gridSize = parseInt(gridSize);\n    this.props.gridSize = parseInt(gridSize);\n  }\n\n  /**\n   * Update the gridSize.\n   */\n  public updateGridSelected(gridSelected: boolean): void {\n    this._props.gridSelected = gridSelected;\n    this.props.gridSelected = gridSelected;\n  }\n\n  /**\n   * Select an item.\n   * @param itemId Item Id.\n   * @param unique To remove the selection of other items or not.\n   */\n  public selectItem(itemId: number, unique: boolean = false): void {\n    if (unique) {\n      this.elementIds.forEach(currentItemId => {\n        const meta = this.elementsById[currentItemId].meta;\n\n        if (currentItemId !== itemId && meta.isSelected) {\n          this.elementsById[currentItemId].unSelectItem();\n        } else if (currentItemId === itemId && !meta.isSelected) {\n          this.elementsById[currentItemId].selectItem();\n        }\n      });\n    } else if (this.elementsById[itemId]) {\n      this.elementsById[itemId].selectItem();\n    }\n  }\n\n  /**\n   * Unselect an item.\n   * @param itemId Item Id.\n   */\n  public unSelectItem(itemId: number): void {\n    if (this.elementsById[itemId]) {\n      const meta = this.elementsById[itemId].meta;\n\n      if (meta.isSelected) {\n        this.elementsById[itemId].unSelectItem();\n      }\n    }\n  }\n\n  /**\n   * Unselect all items.\n   */\n  public unSelectItems(): void {\n    this.elementIds.forEach(itemId => {\n      if (this.elementsById[itemId]) {\n        this.elementsById[itemId].unSelectItem();\n      }\n    });\n  }\n\n  // TODO: Document.\n  public static items = {\n    [ItemType.STATIC_GRAPH]: StaticGraph,\n    [ItemType.MODULE_GRAPH]: ModuleGraph,\n    [ItemType.SIMPLE_VALUE]: SimpleValue,\n    [ItemType.SIMPLE_VALUE_MAX]: SimpleValue,\n    [ItemType.SIMPLE_VALUE_MIN]: SimpleValue,\n    [ItemType.SIMPLE_VALUE_AVG]: SimpleValue,\n    [ItemType.PERCENTILE_BAR]: Percentile,\n    [ItemType.PERCENTILE_BUBBLE]: Percentile,\n    [ItemType.CIRCULAR_PROGRESS_BAR]: Percentile,\n    [ItemType.CIRCULAR_INTERIOR_PROGRESS_BAR]: Percentile,\n    [ItemType.LABEL]: Label,\n    [ItemType.ICON]: Icon,\n    [ItemType.SERVICE]: Service,\n    [ItemType.GROUP_ITEM]: Group,\n    [ItemType.BOX_ITEM]: Box,\n    [ItemType.LINE_ITEM]: Line,\n    [ItemType.AUTO_SLA_GRAPH]: EventsHistory,\n    [ItemType.DONUT_GRAPH]: DonutGraph,\n    [ItemType.BARS_GRAPH]: BarsGraph,\n    [ItemType.CLOCK]: Clock,\n    [ItemType.COLOR_CLOUD]: ColorCloud,\n    [ItemType.NETWORK_LINK]: NetworkLink,\n    [ItemType.ODOMETER]: Odometer,\n    [ItemType.BASIC_CHART]: BasicChart\n  };\n\n  /**\n   * Relying type item and srcimg and agent and module\n   * name convert name item representative.\n   *\n   * @param item Instance item from extract name.\n   *\n   * @return Name item.\n   */\n  public static itemDescriptiveName(item: Item<ItemProps>): string {\n    let text: string;\n    switch (item.props.type) {\n      case ItemType.STATIC_GRAPH:\n        text = `${t(\"Static graph\")} - ${(item as StaticGraph).props.imageSrc}`;\n        break;\n      case ItemType.MODULE_GRAPH:\n        text = t(\"Module graph\");\n        break;\n      case ItemType.CLOCK:\n        text = t(\"Clock\");\n        break;\n      case ItemType.BARS_GRAPH:\n        text = t(\"Bars graph\");\n        break;\n      case ItemType.AUTO_SLA_GRAPH:\n        text = t(\"Event history graph\");\n        break;\n      case ItemType.PERCENTILE_BAR:\n        text = t(\"Percentile bar\");\n        break;\n      case ItemType.CIRCULAR_PROGRESS_BAR:\n        text = t(\"Circular progress bar\");\n        break;\n      case ItemType.CIRCULAR_INTERIOR_PROGRESS_BAR:\n        text = t(\"Circular progress bar (interior)\");\n        break;\n      case ItemType.SIMPLE_VALUE:\n        text = t(\"Simple Value\");\n        break;\n      case ItemType.LABEL:\n        text = t(\"Label\");\n        break;\n      case ItemType.GROUP_ITEM:\n        text = t(\"Group\");\n        break;\n      case ItemType.COLOR_CLOUD:\n        text = t(\"Color cloud\");\n        break;\n      case ItemType.ICON:\n        text = `${t(\"Icon\")} - ${(item as Icon).props.imageSrc}`;\n        break;\n      case ItemType.ODOMETER:\n        text = t(\"Odometer\");\n        break;\n      case ItemType.BASIC_CHART:\n        text = t(\"BasicChart\");\n        break;\n      default:\n        text = t(\"Item\");\n        break;\n    }\n\n    const linkedAgentAndModuleProps = item.props as Partial<WithModuleProps>;\n    if (\n      linkedAgentAndModuleProps.agentAlias != null &&\n      linkedAgentAndModuleProps.moduleName != null\n    ) {\n      text += ` (${ellipsize(\n        linkedAgentAndModuleProps.agentAlias,\n        18\n      )} - ${ellipsize(linkedAgentAndModuleProps.moduleName, 25)})`;\n    } else if (linkedAgentAndModuleProps.agentAlias != null) {\n      text += ` (${ellipsize(linkedAgentAndModuleProps.agentAlias, 25)})`;\n    }\n\n    return text;\n  }\n}\n","import TypedEvent, { Disposable, Listener } from \"./TypedEvent\";\n\ninterface Cancellable {\n  cancel(): void;\n}\n\ntype AsyncTaskStatus = \"waiting\" | \"started\" | \"cancelled\" | \"finished\";\ntype AsyncTaskInitiator = (done: () => void) => Cancellable;\n\n/**\n * Defines an async task which can be started and cancelled.\n * It's possible to observe the status changes of the task.\n */\nclass AsyncTask {\n  private readonly taskInitiator: AsyncTaskInitiator;\n  private cancellable: Cancellable = { cancel: () => {} };\n  private _status: AsyncTaskStatus = \"waiting\";\n\n  // Event manager for status change events.\n  private readonly statusChangeEventManager = new TypedEvent<AsyncTaskStatus>();\n  // List of references to clean the event listeners.\n  private readonly disposables: Disposable[] = [];\n\n  public constructor(taskInitiator: AsyncTaskInitiator) {\n    this.taskInitiator = taskInitiator;\n  }\n\n  /**\n   * Public setter of the `status` property.\n   * @param status.\n   */\n  public set status(status: AsyncTaskStatus) {\n    this._status = status;\n    this.statusChangeEventManager.emit(status);\n  }\n\n  /**\n   * Public accessor of the `status` property.\n   * @return status.\n   */\n  public get status() {\n    return this._status;\n  }\n\n  /**\n   * Start the async task.\n   */\n  public init(): void {\n    this.cancellable = this.taskInitiator(() => {\n      this.status = \"finished\";\n    });\n    this.status = \"started\";\n  }\n\n  /**\n   * Cancel the async task.\n   */\n  public cancel(): void {\n    this.cancellable.cancel();\n    this.status = \"cancelled\";\n  }\n\n  /**\n   * Add an event handler to the status change.\n   * @param listener Function which is going to be executed when the status changes.\n   */\n  public onStatusChange(listener: Listener<AsyncTaskStatus>): Disposable {\n    /*\n     * The '.on' function returns a function which will clean the event\n     * listener when executed. We store all the 'dispose' functions to\n     * call them when the item should be cleared.\n     */\n    const disposable = this.statusChangeEventManager.on(listener);\n    this.disposables.push(disposable);\n\n    return disposable;\n  }\n}\n\n/**\n * Wrap an async task into another which will execute that task indefinitely\n * every time the tash finnish and the chosen period ends.\n * Will last until cancellation.\n *\n * @param task Async task to execute.\n * @param period Time in milliseconds to wait until the next async esecution.\n *\n * @return A new async task.\n */\nfunction asyncPeriodic(task: AsyncTask, period: number): AsyncTask {\n  return new AsyncTask(() => {\n    let ref: number | null = null;\n\n    task.onStatusChange(status => {\n      if (status === \"finished\") {\n        ref = window.setTimeout(() => {\n          task.init();\n        }, period);\n      }\n    });\n\n    task.init();\n\n    return {\n      cancel: () => {\n        if (ref) clearTimeout(ref);\n        task.cancel();\n      }\n    };\n  });\n}\n\n/**\n * Manages a list of async tasks.\n */\nexport default class AsyncTaskManager {\n  private tasks: { [identifier: string]: AsyncTask } = {};\n\n  /**\n   * Adds an async task to the manager.\n   *\n   * @param identifier Unique identifier.\n   * @param taskInitiator Function to initialize the async task.\n   * Should return a structure to cancel the task.\n   * @param period Optional period to repeat the task indefinitely.\n   */\n  public add(\n    identifier: string,\n    taskInitiator: AsyncTaskInitiator,\n    period: number = 0\n  ): AsyncTask {\n    if (this.tasks[identifier] && this.tasks[identifier].status === \"started\") {\n      this.tasks[identifier].cancel();\n    }\n\n    const asyncTask =\n      period > 0\n        ? asyncPeriodic(new AsyncTask(taskInitiator), period)\n        : new AsyncTask(taskInitiator);\n\n    this.tasks[identifier] = asyncTask;\n\n    return this.tasks[identifier];\n  }\n\n  /**\n   * Starts an async task.\n   *\n   * @param identifier Unique identifier.\n   */\n  public init(identifier: string) {\n    if (\n      this.tasks[identifier] &&\n      (this.tasks[identifier].status === \"waiting\" ||\n        this.tasks[identifier].status === \"cancelled\" ||\n        this.tasks[identifier].status === \"finished\")\n    ) {\n      this.tasks[identifier].init();\n    }\n  }\n\n  /**\n   * Cancel a running async task.\n   *\n   * @param identifier Unique identifier.\n   */\n  public cancel(identifier: string) {\n    if (this.tasks[identifier] && this.tasks[identifier].status === \"started\") {\n      this.tasks[identifier].cancel();\n    }\n  }\n}\n","/*\n * Useful resources.\n * http://es6-features.org/\n * http://exploringjs.com/es6\n * https://www.typescriptlang.org/\n */\n\nimport \"./main.css\"; // CSS import.\nimport VisualConsole from \"./VisualConsole\";\nimport * as Form from \"./Form\";\nimport AsyncTaskManager from \"./lib/AsyncTaskManager\";\n\n// Export the VisualConsole class to the global object.\n// eslint-disable-next-line\n(window as any).VisualConsole = VisualConsole;\n\n// Export the VisualConsole's Form classes to the global object.\n// eslint-disable-next-line\n(window as any).VisualConsole.Form = Form;\n\n// Export the AsyncTaskManager class to the global object.\n// eslint-disable-next-line\n(window as any).AsyncTaskManager = AsyncTaskManager;\n"],"names":["name","initialData","_name","currentData","dataRequestedEventManager","this","length","RangeError","_element","element","document","createElement","className","content","createContent","Array","forEach","appendChild","reset","updateData","data","requestData","identifier","params","done","emit","onDataRequested","listener","on","title","inputGroups","enabledInputGroups","inputGroupsByName","enabledInputGroupNames","submitEventManager","itemDataRequestedEventManager","handleItemDataRequested","reduce","prevVal","inputGroup","filter","getInputGroup","inputGroupName","addInputGroup","index","slice","removeInputGroup","getFormElement","type","form","id","addEventListener","e","preventDefault","nativeEvent","formContent","onSubmit","onInputGroupDataRequested","parseLabelPosition","labelPosition","itemBasePropsDecoder","isNaN","parseInt","TypeError","label","isLinkEnabled","link","isOnTop","parentId","aclGroupId","cacheExpiration","colorStatus","cellId","alertOutline","ratio","props","metadata","deferInit","elementRef","labelElementRef","childElementRef","clickEventManager","dblClickEventManager","movedEventManager","movementFinishedEventManager","resizedEventManager","resizeFinishedEventManager","removeEventManager","selectionChangedEventManager","disposables","debouncedMovementSave","x","y","_metadata","isBeingMoved","prevPosition","newPosition","positionChanged","move","item","removeMovement","debouncedResizementSave","width","height","isBeingResized","prevSize","newSize","sizeChanged","resize","removeResizement","itemProps","init","initMovementListener","meta","isSelected","moveElement","stopMovementListener","initResizementListener","getBoundingClientRect","labelWidth","labelHeight","resizeElement","stopResizementListener","createContainerDomElement","createLabelDomElement","createDomElement","changeLabelPosition","box","href","classList","add","style","left","top","unSelectItem","selectItem","editMode","stopPropagation","divParent","divSpinner","path","composedPath","containerId","undefined","includes","containerVC","getElementById","maintenanceMode","isFetching","isUpdating","getLabelWithMacrosReplaced","table","row","emptyRow1","emptyRow2","cell","innerHTML","textAlign","macro","value","Date","agentAlias","agentDescription","agentAddress","moduleName","moduleDescription","updateDomElement","newProps","setProps","prevProps","shouldBeUpdated","render","newMetadata","setMeta","prevMetadata","selected","prevMeta","transform","transformOrigin","minWidth","minHeight","oldLabelHtml","newLabelHtml","remove","container","attrs","attributes","i","nodeName","cloneIsNeeded","getAttributeNode","cloneAttr","cloneNode","setAttributeNode","parentNode","replaceChild","setAttribute","div","querySelector","parentElement","removeChild","removeAttribute","disposable","dispose","ignored","position","flexDirection","tables","getElementsByTagName","onClick","push","onDblClick","onMoved","onMovementFinished","onResized","onResizeFinished","onRemove","onSelectionChanged","getFormContainer","VisualConsoleItem","t","titleItem","FormContainer","parseBarsGraphProps","backgroundColor","parseTypeGraph","typeGraph","barsGraphPropsDecoder","html","encodedHtml","gridColor","agentDisabled","moduleDisabled","opacity","scripts","src","setTimeout","eval","trim","basicChartPropsDecoder","period","parseFloat","status","moduleNameColor","header","textContent","color","numberFormat","moduleValue","legendP","margin","overviewGraphs","getElementsByClassName","insertBefore","firstChild","number","forceInteger","unit","shortData","divisor","Math","round","auxDecimals","pad","Number","pos","abs","input","padding","str","donutGraphPropsDecoder","legendBackgroundColor","eventsHistoryPropsDecoder","maxTime","legendColor","flotText","aux","parseBackgroundType","backgroundType","parseGraphType","graphType","moduleGraphPropsDecoder","customGraphId","svgNS","iconDefinition","size","spin","pulse","iconName","icon","createElementNS","pathData","listeners","listenersOncer","off","once","callbackIndex","indexOf","splice","event","pipe","te","parseIntOr","defaultValue","parseFloatOr","stringIsEmpty","notEmptyStringOr","parseBoolean","leftPad","diffLength","substr","substring","repeatTimes","floor","restLength","newPad","positionPropsDecoder","sizePropsDecoder","modulePropsDecoder","moduleId","agentProps","agentId","agentName","metaconsoleId","agentPropsDecoder","linkedVCPropsDecoder","linkedLayoutStatusProps","linkedLayoutStatusType","weight","linkedLayoutStatusTypeWeight","warningThreshold","linkedLayoutStatusTypeWarningThreshold","criticalThreshold","linkedLayoutStatusTypeCriticalThreshold","linkedLayoutId","linkedLayoutNodeId","itemMetaDecoder","receivedAt","getTime","error","Error","isFromCache","lineMode","prefixedCssRules","ruleName","ruleValue","rule","decodeBase64","decodeURIComponent","escape","window","atob","humanDate","date","locale","Intl","DateTimeFormat","day","month","year","format","getDate","getMonth","getFullYear","humanTime","hours","getHours","minutes","getMinutes","seconds","getSeconds","replaceMacros","macros","text","acc","replace","throttle","delay","fn","last","now","args","debounce","timerRef","clearTimeout","getOffset","el","parent","offsetLeft","offsetTop","scrollLeft","scrollTop","offsetParent","addMovementListener","altContainer","isDraggable","draggable","lastX","lastY","lastMouseX","lastMouseY","mouseElementOffsetX","mouseElementOffsetY","containerBounds","containerOffset","containerTop","containerBottom","containerLeft","containerRight","elementBounds","borderWidth","getComputedStyle","borderFix","debouncedMovement","throttledMovement","handleMove","mouseX","pageX","mouseY","pageY","mouseDeltaX","mouseDeltaY","maxX","maxY","outOfBoundsLeft","outOfBoundsRight","outOfBoundsTop","outOfBoundsBottom","handleEnd","removeEventListener","body","userSelect","handleStart","button","elementOffset","offsetX","offsetY","addResizementListener","resizeDraggable","lastWidth","lastHeight","elementTop","elementLeft","debouncedResizement","throttledResizement","handleResize","ellipsize","max","ellipse","__webpack_module_cache__","__webpack_require__","cachedModule","exports","module","__webpack_modules__","d","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","r","Symbol","toStringTag","parseShowLastValueTooltip","showLastValueTooltip","staticGraphPropsDecoder","imageSrc","statusImageSrc","lastValue","imgSrc","backgroundImage","backgroundRepeat","backgroundSize","backgroundPosition","Item","iconPropsDecoder","image","faPlusCircle","prefix","faTrashAlt","colorCloudPropsDecoder","defaultColor","colorRanges","generalDiv","colorLabel","ColorInput","required","target","InputGroup","rangesLabel","createLabel","rangesControlsContainer","createdRangesContainer","buildRanges","ranges","colorRange","rangeContainer","range","handleRangeUpdatePartial","newRanges","handleDelete","initialRangeContainer","onCreate","initialState","state","rangesContainer","rangesContainerFromValue","rangesLabelFromValue","rangesInputFromValue","createInputNumber","fromValue","rangesDivContainerToValue","rangesLabelToValue","rangesInputToValue","toValue","rangesDivContainerColor","rangesLabelColor","rangesInputColor","createInputColor","createBtn","onUpdate","onDelete","deleteBtn","append","createSvgElement","gradientId","svg","defs","radialGradient","stop0","stop100","circle","ColorCloud","formContainer","ColorInputGroup","RangesInputGroup","linePropsDecoder","startPosition","startX","startY","endPosition","endX","endY","lineWidth","borderColor","viewportOffsetX","viewportOffsetY","labelEnd","labelEndWidth","linkedEnd","linkedStart","labelEndHeight","labelStart","labelStartWidth","labelStartHeight","Line","extractBoxSizeAndPosition","circleRadius","moveMode","isMoving","lineMovedEventManager","TypedEvent","lineMovedEventDisposables","debouncedStartPositionMovementSave","removeStartPositionMovement","debouncedEndPositionMovementSave","removeEndPositionMovement","initStartPositionMovementListener","stopStartPositionMovementListener","initEndPositionMovementListener","stopEndPositionMovementListener","x1","y1","x2","y2","line","cursor","svgs","lines","getElementsByTagNameNS","startCircle","endCircle","circlesStart","circlesEnd","borderRadius","circles","min","startIsLeft","startIsTop","start","end","onLineMovementFinished","networkLinkPropsDecoder","groups","adjustment","lineX1","lineY1","lineX2","lineY2","g","atan2","PI","split","l","labels","arrows","arrow","arrowSize","arrowPosX","arrowPosY","arrowStart","border","borderBottom","arrowEnd","htmlLabelStart","console","htmlLabelEnd","groupPropsDecoder","groupId","showStatistics","extractHtml","parseClockType","clockType","parseClockFormat","clockFormat","clockPropsDecoder","clockTimezone","clockTimezoneOffset","showClockTimezone","intervalRef","startTick","createClock","Clock","TICK_INTERVAL","stopTick","clearInterval","handler","interval","setInterval","getElementSize","newWidth","newHeight","createAnalogicClock","createDigitalClock","colors","dateFontSize","baseTimeFontSize","clockFace","clockFaceBackground","city","getHumanTimezone","timezoneComplication","marksGroup","mainMarkGroup","mark1a","mark1b","mark","hourHand","hourHandA","hourHandB","minuteHand","minuteHandA","minuteHandB","minuteHandPin","secondHand","secondHandBar","secondHandPin","pin","getOriginDate","secAngle","minuteAngle","hourAngle","join","dateElem","fontSize","modified","tzFontSizeMultiplier","timeFontSize","tzFontSize","timeElem","tzElem","initialDate","targetTZOffset","localTZOffset","getTimezoneOffset","utimestamp","timezone","diameter","extraHeigth","boxPropsDecoder","fillColor","fillTransparent","boxSizing","borderStyle","maxBorderWidth","labelPropsDecoder","parseValueType","valueType","parseProcessValue","processValue","simpleValuePropsDecoder","img","pi","tau","epsilon","tauEpsilon","Path","_x0","_y0","_x1","_y1","_","constructor","moveTo","closePath","lineTo","quadraticCurveTo","bezierCurveTo","arcTo","x0","y0","x21","y21","x01","y01","l01_2","x20","y20","l21_2","l20_2","l21","sqrt","l01","tan","acos","t01","t21","arc","a0","a1","ccw","dx","cos","dy","sin","cw","da","rect","w","h","toString","halfPi","asin","arcInnerRadius","innerRadius","arcOuterRadius","outerRadius","arcStartAngle","startAngle","arcEndAngle","endAngle","arcPadAngle","padAngle","cornerTangents","r1","rc","lo","ox","oy","x11","y11","x10","y10","x00","y00","d2","D","cx0","cy0","cx1","cy1","dx0","dy0","dx1","dy1","cx","cy","extractPercentileType","extractValueType","percentilePropsDecoder","percentileType","minValue","maxValue","labelColor","formatValue","background","progress","getProgress","NumberFormat","backgroundRect","progressRect","backgroundCircle","progressCircle","arcProps","cornerRadius","constant","padRadius","context","buffer","r0","apply","arguments","t0","t1","a01","a11","a00","a10","da0","da1","ap","rp","rc0","rc1","p0","p1","oc","x3","y3","x32","y32","intersect","ax","ay","bx","by","kc","lc","centroid","a","trunc","servicePropsDecoder","encodedTitle","serviceId","odometerPropsDecoder","titleColor","titleModule","thresholds","minMaxValue","odometerType","lineWarning","lineWarning2","lineCritical","lineCritical2","JSON","parse","min_warning","max_warning","getCoords","min_critical","max_critical","percent","toFixed","getSubfix","maximumSignificantDigits","maximumFractionDigits","numb","match","rotate","getRotate","anchoB","odometerContainer","odometerA","odometerB","odometerC","gaugeE","SVG_NS","svgWarning","setAttributeNS","pathWarning","svgCritical","pathCritical","h1","innerText","lineHeight","h2","truncateTitle","script","onload","urlPandora","location","pathname","dir","display","minMax","limit","subfix","radio","halfLength","diff","stringBefore","stringAfter","decodeProps","items","elementsById","elementIds","relations","lineLinks","handleElementClick","handleElementDblClick","handleElementMovement","gridSelected","elements","movementX","movementY","newX","newY","gridSize","positionX","positionY","itemId","getItemRelations","relation","getVisualCenter","childId","updateLinesConnected","handleElementMovementFinished","handleLineElementMovementFinished","refreshLink","handleElementResizement","handleElementResizementFinished","handleElementRemove","clearRelations","handleElementSelectionChanged","handleContainerClick","unSelectItems","containerRef","_props","backgroundURL","isFavorite","relationLineWidth","visualConsolePropsDecoder","sort","b","addElement","buildRelations","coordinatesInItem","itemAtStart","itemAtEnd","keys","to","save","lineId","updateElement","options","debouncedLinePositionSave","map","itemInstance","ModuleGraph","EventsHistory","DonutGraph","BarsGraph","BasicChart","itemInstanceFrom","message","updateElements","itemIds","child","addRelationLine","ids","getRelationLine","itemRelations","clientWidth","clientHeight","parentX","parentY","childX","childY","zIndex","onItemClick","onItemDblClick","onItemMoved","onLineMoved","onItemResized","onItemSelectionChanged","enableEditMode","disableEditMode","enableMaintenanceMode","disableMaintenanceMode","updateGridSize","updateGridSelected","unique","currentItemId","itemDescriptiveName","linkedAgentAndModuleProps","taskInitiator","cancellable","cancel","_status","statusChangeEventManager","onStatusChange","tasks","asyncTask","task","AsyncTask","ref","asyncPeriodic","VisualConsole","Form","AsyncTaskManager"],"sourceRoot":""}
\ No newline at end of file
diff --git a/visual_console_client/src/Item.ts b/visual_console_client/src/Item.ts
index f0849c94a6..bf37145805 100644
--- a/visual_console_client/src/Item.ts
+++ b/visual_console_client/src/Item.ts
@@ -851,12 +851,14 @@ abstract class VisualConsoleItem<Props extends ItemProps> {
     const newLabelHtml = this.createLabelDomElement().innerHTML;
     if (oldLabelHtml !== newLabelHtml) {
       this.labelElementRef.innerHTML = newLabelHtml;
+      this.changeLabelPosition(this.itemProps.labelPosition);
+    } else {
+      // Change label position.
+      if (!prevProps || prevProps.labelPosition !== this.props.labelPosition) {
+        this.changeLabelPosition(this.props.labelPosition);
+      }
     }
 
-    // Change label position.
-    if (!prevProps || prevProps.labelPosition !== this.props.labelPosition) {
-      this.changeLabelPosition(this.props.labelPosition);
-    }
     //Change z-index class is-on-top
     if (!prevProps || prevProps.isOnTop !== this.props.isOnTop) {
       if (this.props.isOnTop) {

From a0ad52b75f89dd66e4971c0f5eb1f39d591cc98f Mon Sep 17 00:00:00 2001
From: Jonathan <jonathan.leon@pandorafms.com>
Date: Thu, 21 Dec 2023 13:13:31 +0100
Subject: [PATCH 068/231] #12128 action alert no show when empty

---
 pandora_console/godmode/alerts/alert_view.php | 19 ++++++++++++-------
 1 file changed, 12 insertions(+), 7 deletions(-)

diff --git a/pandora_console/godmode/alerts/alert_view.php b/pandora_console/godmode/alerts/alert_view.php
index 7809742221..499bbded5e 100644
--- a/pandora_console/godmode/alerts/alert_view.php
+++ b/pandora_console/godmode/alerts/alert_view.php
@@ -308,13 +308,18 @@ $table->head[0] = __('Actions');
 $table->style[0] = 'font-weight: bold; text-align: left;';
 
 if (count($actions) == 1 && isset($actions[0])) {
-    $table->head[1] = __('Every time that the alert is fired');
-    $table->data[0][0] = $actions[0]['name'];
-    $table->data[0][1] = html_print_image(
-        'images/tick.png',
-        true,
-        ['class' => 'invert_filter']
-    );
+    if (!empty($actions[0]['name'])) {
+        $table->head[1] = __('Every time that the alert is fired');
+        $table->data[0][0] = $actions[0]['name'];
+        $table->data[0][1] = html_print_image(
+            'images/tick.png',
+            true,
+            ['class' => 'invert_filter']
+        );
+    } else {
+        $table->colspan[0] = 2;
+        $table->data[0] = __('No action defined.');
+    }
 } else {
     foreach ($actions as $kaction => $action) {
         $table->data[$kaction][0] = $action['name'];

From 3499965f80f09b794746581e67f2e1fb02cf1dca Mon Sep 17 00:00:00 2001
From: Jonathan <jonathan.leon@pandorafms.com>
Date: Thu, 21 Dec 2023 16:15:01 +0100
Subject: [PATCH 069/231] #12599 change icon about

---
 pandora_console/include/functions_menu.php | 39 ++--------------------
 1 file changed, 2 insertions(+), 37 deletions(-)

diff --git a/pandora_console/include/functions_menu.php b/pandora_console/include/functions_menu.php
index 06ad796ea9..da0a6f035e 100644
--- a/pandora_console/include/functions_menu.php
+++ b/pandora_console/include/functions_menu.php
@@ -1290,42 +1290,7 @@ if (is_ajax()) {
             $lts_name = ' <i>'.$config['lts_name'].'</i>';
         }
 
-        $image_about = ui_get_full_url('/images/custom_logo/logo-default-pandorafms.png', false, false, false);
-        if (enterprise_installed() === false) {
-            if ($config['style'] === 'pandora_black') {
-                $image_about = 'images/custom_logo/'.HEADER_LOGO_BLACK_CLASSIC;
-            } else if ($config['style'] === 'pandora') {
-                $image_about = 'images/custom_logo/'.HEADER_LOGO_DEFAULT_CLASSIC;
-            }
-        } else {
-            if ($config['style'] === 'pandora_black' && $config['custom_logo'] === HEADER_LOGO_DEFAULT_CLASSIC) {
-                $config['custom_logo'] = HEADER_LOGO_BLACK_CLASSIC;
-            } else if ($config['style'] === 'pandora' && $config['custom_logo'] === HEADER_LOGO_BLACK_CLASSIC) {
-                $config['custom_logo'] = HEADER_LOGO_DEFAULT_CLASSIC;
-            }
-
-            $image_about = 'images/custom_logo/'.$config['custom_logo'];
-
-            if (file_exists(ENTERPRISE_DIR.'/'.$image_about) === true) {
-                $image_about = ENTERPRISE_DIR.'/'.$image_about;
-            }
-        }
-
-        if (is_metaconsole() === true) {
-            $image_about = ui_get_full_url('/enterprise/images/custom_logo/pandoraFMS_metaconsole_full.svg', false, false, false);
-
-            if ($config['meta_custom_logo'] === 'pandoraFMS_metaconsole_full.svg') {
-                $image_about = 'images/custom_logo/'.$config['meta_custom_logo'];
-            } else {
-                $image_about = '../images/custom_logo/'.$config['meta_custom_logo'];
-            }
-
-            if (file_exists(ENTERPRISE_DIR.'/'.$image_about) === true) {
-                $image_about = $image_about;
-            }
-        }
-
-
+        $image_about = ui_get_full_url('/images/custom_logo/logo-default-pandorafms-collapsed.svg', false, false, false);
         $dialog = '
             <div id="about-tabs" class="invisible overflow-hidden">
             <ul>
@@ -1339,7 +1304,7 @@ if (is_ajax()) {
                             <tr>
                                 <th style="width: 40%; border: 0px;">
                                     <a href="javascript:christmas_click('.$config['eastern_eggs_disabled'].')">
-                                        <img src="'.$image_about.'" alt="logo" width="70%">
+                                        <img src="'.$image_about.'" alt="logo" width="50%">
                                         <input id="count_click" type="hidden" value="0" />
                                     </a>
                                 </th>

From f36d36a34fe48b06fb9b7cb0e21c9a580109343a Mon Sep 17 00:00:00 2001
From: "felix.suarez" <felix.suarez@pandorafms.com>
Date: Thu, 21 Dec 2023 11:20:57 -0600
Subject: [PATCH 070/231] Modify the place where maintenance lines are added

---
 pandora_server/util/pandora_db.pl | 39 ++++++++++++++++++++++---------
 1 file changed, 28 insertions(+), 11 deletions(-)

diff --git a/pandora_server/util/pandora_db.pl b/pandora_server/util/pandora_db.pl
index 68407ec51e..eb42cd16b2 100755
--- a/pandora_server/util/pandora_db.pl
+++ b/pandora_server/util/pandora_db.pl
@@ -79,6 +79,15 @@ sub log_message ($$;$) {
 	}
 }
 
+########################################################################
+# Print the given message and writes on error log.
+########################################################################
+sub log_error_message ($$) {
+	my ($conf, $message) = @_;
+	log_message('',,"$message\n\n");
+	log_error_writter($conf, "$message\n");
+}
+
 ########################################################################
 # Delete old data from the database.
 ########################################################################
@@ -1289,9 +1298,6 @@ sub pandoradb_main {
 	# Maintain Referential integrity and other stuff
 	pandora_checkdb_integrity ($conf, $dbh);
 
-	# Close and open error log blocks
-	handle_error_log_block($conf, $dbh);
-
 	# Move old data to the history DB
 	if (defined ($history_dbh)) {
 		undef ($history_dbh) unless defined (enterprise_hook ('pandora_historydb', [$dbh, $history_dbh, $conf->{'_history_db_days'}, $conf->{'_history_db_step'}, $conf->{'_history_db_delay'}, $conf->{'_history_db_string_days'}, $conf->{'_history_db_adv'}]));
@@ -1372,15 +1378,23 @@ sub pandora_check_forgotten_discovery_tasks {
 sub handle_error_log_block {
     my ($conf, $dbh) = @_;
 	my $is_open = get_db_value ($dbh,"SELECT `value` FROM `tconfig` WHERE `token` = 'open_error_log'");
-	open (STDERR, ">> " . $conf->{'errorlog_file'}) or die " [ERROR] " . pandora_get_initial_product_name() . " can't write to Errorlog. Aborting : \n $! \n";
 	
 	if (!defined ($is_open)) {
 		db_do($dbh, "INSERT INTO `tconfig`(`token`, `value`) VALUES ('open_error_log', 1)");
 	} elsif ($is_open eq 1){
-		print STDERR strftime ("%Y-%m-%d %H:%M:%S", localtime()) . ' - ' . $conf->{'servername'} . " pandora_db: pandora_db maintenance tasks ends\n";
+		log_error_writter($conf, strftime ("%Y-%m-%d %H:%M:%S", localtime()) . ' - ' . $conf->{'servername'} . " pandora_db: pandora_db maintenance tasks ends\n");
 	}
 
-	print STDERR strftime ("%Y-%m-%d %H:%M:%S", localtime()) . ' - ' . $conf->{'servername'} . " pandora_db: pandora_db maintenance tasks starts\n"; 
+	log_error_writter($conf, strftime ("%Y-%m-%d %H:%M:%S", localtime()) . ' - ' . $conf->{'servername'} . " pandora_db: pandora_db maintenance tasks starts\n");
+}
+
+###############################################################################
+# Print messages on error log file
+###############################################################################
+sub log_error_writter($$){
+	my ($conf, $message) = @_;
+	open (STDERR, ">> " . $conf->{'errorlog_file'}) or die " [ERROR] " . pandora_get_initial_product_name() . " can't write to Errorlog. Aborting : \n $! \n";
+	print STDERR $message;
 	close (STDERR);
 }
 
@@ -1417,17 +1431,20 @@ if (defined($conf{'_history_db_enabled'}) && $conf{'_history_db_enabled'} eq '1'
 	}
 }
 
+# Close and open error log blocks
+handle_error_log_block(\%conf, $dbh);
+
 # Only run on master servers.
 pandora_set_master(\%conf, $dbh);
 if ($conf{'_force'} == 0 && pandora_is_master(\%conf) == 0) { 
-	log_message ('', " [*] Not a master server.\n\n");
+	log_error_message (\%conf, " [*] Not a master server.");
 	exit 1;
 }
 
 # Get a lock on the main database.
 my $db_lock = db_get_lock ($dbh, $conf{'dbname'} . '_pandora_db', $LOCK_TIMEOUT, 1);
 if ($db_lock == 0) { 
-	log_message ('', " [*] Another instance of DB Tool seems to be running on the main database.\n\n");
+	log_error_message (\%conf, " [*] Another instance of DB Tool seems to be running on the main database.");
 	exit 1;
 }
 
@@ -1435,7 +1452,7 @@ if ($db_lock == 0) {
 if (defined($history_dbh)) {
 	my $history_lock = db_get_lock ($history_dbh, $conf{'_history_db_name'} . '_pandora_db', $LOCK_TIMEOUT, 1);
 	if ($history_lock == 0) { 
-		log_message ('', " [*] Another instance of DB Tool seems to be running on the history database.\n\n");
+		log_error_message (\%conf, " [*] Another instance of DB Tool seems to be running on the history database.");
 		exit 1;
 	}
 }
@@ -1443,14 +1460,14 @@ if (defined($history_dbh)) {
 # Get a lock merging.
 my $lock_merge = db_get_lock ($dbh, 'merge-working', $LOCK_TIMEOUT, 1);
 if ($lock_merge == 0) { 
-	log_message ('', " [*] Merge is running.\n\n");
+	log_error_message (\%conf, " [*] Merge is running.");
 	exit 1;
 }
 
 # Get a lock on merging events.
 my $lock_merge_events = db_get_lock ($dbh, 'merging-events', $LOCK_TIMEOUT, 1);
 if ($lock_merge_events == 0) { 
-	log_message ('', " [*] Merge events is running.\n\n");
+	log_error_message (\%conf, " [*] Merge events is running.");
 	exit 1;
 }
 

From 6dea7254520b33dd86d0b748c290cbc7e4eebcf6 Mon Sep 17 00:00:00 2001
From: "felix.suarez" <felix.suarez@pandorafms.com>
Date: Thu, 21 Dec 2023 21:29:19 -0600
Subject: [PATCH 071/231] Execute command during scanning and not during the
 creation of Agent

---
 pandora_server/lib/PandoraFMS/DiscoveryServer.pm | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/pandora_server/lib/PandoraFMS/DiscoveryServer.pm b/pandora_server/lib/PandoraFMS/DiscoveryServer.pm
index 6c2927f2a6..c50fa2e8f8 100644
--- a/pandora_server/lib/PandoraFMS/DiscoveryServer.pm
+++ b/pandora_server/lib/PandoraFMS/DiscoveryServer.pm
@@ -1662,9 +1662,6 @@ sub PandoraFMS::Recon::Base::report_scanned_agents($;$) {
           $os_id = $self->guess_os($data->{'agent'}{'direccion'});
         }
 
-        if (is_empty($data->{'agent'}{'os_version'})) {
-          $data->{'agent'}{'os_version'} = $self->guess_os($data->{'agent'}{'direccion'}, undef, 1);
-        }
 
         $self->call('message', "Agent accepted: ".$data->{'agent'}{'nombre'}, 5);
 
@@ -2022,8 +2019,14 @@ sub PandoraFMS::Recon::Base::report_scanned_agents($;$) {
       # Retrieve target agent OS.
       $self->{'agents_found'}->{$addr}{'agent'}{'id_os'} = $self->guess_os($addr);
 
+      my $os_version = $self->get_os_version($addr);
+
+      if (is_empty($os_version)) {
+        $os_version = $self->guess_os($addr, undef, 1);
+      }
+
       # Retrieve target agent OS version.
-      $self->{'agents_found'}->{$addr}{'agent'}{'os_version'} = $self->get_os_version($addr);
+      $self->{'agents_found'}->{$addr}{'agent'}{'os_version'} = $os_version;
 
       $self->call('update_progress', $progress);
       $progress += $step;

From 6a7eca83df379369498c4429406bc9dc41a7c1b7 Mon Sep 17 00:00:00 2001
From: Jonathan <jonathan.leon@pandorafms.com>
Date: Fri, 22 Dec 2023 12:16:34 +0100
Subject: [PATCH 072/231] #12539 message 200 modules agent

---
 .../operation/agentes/alerts_status.php       | 45 +++++++++++++++++++
 1 file changed, 45 insertions(+)

diff --git a/pandora_console/operation/agentes/alerts_status.php b/pandora_console/operation/agentes/alerts_status.php
index c262d8c4b3..9cba248063 100755
--- a/pandora_console/operation/agentes/alerts_status.php
+++ b/pandora_console/operation/agentes/alerts_status.php
@@ -535,6 +535,21 @@ echo '</div>';
 
 ui_require_css_file('cluetip', 'include/styles/js/');
 ui_require_jquery_file('cluetip');
+
+$system_higher = false;
+$modules_agent = db_get_all_rows_sql(sprintf('SELECT id_agente FROM tagente_modulo WHERE id_agente = %s', $id_agente));
+if (is_array($modules_agent)) {
+    $all_modules = db_get_all_rows_sql('SELECT id_agente FROM tagente_modulo');
+    $all_agents = db_get_all_rows_sql('SELECT id_agente FROM tagente');
+    if (is_array($all_modules) && is_array($all_agents)) {
+        if ((count($all_modules) / count($all_agents)) >= 200) {
+            $system_higher = true;
+        }
+    }
+}
+
+echo '<div id="system_higher" class="invisible agent_details_agent_data"><img src="images/alert-yellow@svg.svg" width="10%" class="mrgn_right_20px">'.__('Your system has a much higher rate of modules per agent than recommended (200 modules per agent). This implies performance problems in the system, please consider reducing the number of modules in this agent.').'</div>';
+
 ?>
 
 <script type="text/javascript">
@@ -607,6 +622,36 @@ $('table.alert-status-filter #ag_group').change (function () {
     }
 }).change();
 
+<?php if ($system_higher === true) { ?>
+    $("#system_higher").dialog({
+        title: "<?php echo __('Warning'); ?>",
+        resizable: true,
+        draggable: true,
+        modal: true,
+        width: 500,
+        height: 150,
+        buttons: [{
+            text: "OK",
+            click: function() {
+                $(this).dialog("close");
+            },
+            class: 'invisible_important',
+        }],
+        overlay: {
+            opacity: 0.5,
+            background: "black"
+        },
+        closeOnEscape: false,
+        open: function(event, ui) {
+            $(".ui-dialog-titlebar-close").hide();
+            $("#system_higher").removeClass('invisible');
+            setTimeout(() => {
+                $(".ui-dialog-buttonset").find('button').removeClass('invisible_important');
+            }, 1000);
+        }
+    });
+<?php } ?>
+
 function validateAlerts() {
     var alert_ids = [];
 

From a29452de3d98497ab77d606c5757f5451d658cc3 Mon Sep 17 00:00:00 2001
From: Jonathan <jonathan.leon@pandorafms.com>
Date: Fri, 22 Dec 2023 13:12:55 +0100
Subject: [PATCH 073/231] #12539 1 sec to 4 sec ok button

---
 pandora_console/operation/agentes/alerts_status.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pandora_console/operation/agentes/alerts_status.php b/pandora_console/operation/agentes/alerts_status.php
index 9cba248063..36cf0d8404 100755
--- a/pandora_console/operation/agentes/alerts_status.php
+++ b/pandora_console/operation/agentes/alerts_status.php
@@ -647,7 +647,7 @@ $('table.alert-status-filter #ag_group').change (function () {
             $("#system_higher").removeClass('invisible');
             setTimeout(() => {
                 $(".ui-dialog-buttonset").find('button').removeClass('invisible_important');
-            }, 1000);
+            }, 4000);
         }
     });
 <?php } ?>

From 251bf60d5eeaf5b0a08e85fda4b1698d6686f801 Mon Sep 17 00:00:00 2001
From: "felix.suarez" <felix.suarez@pandorafms.com>
Date: Tue, 26 Dec 2023 15:47:42 -0600
Subject: [PATCH 074/231] Add warning time to CLI create

---
 pandora_server/util/pandora_manage.pl | 61 ++++++++++++++-------------
 1 file changed, 32 insertions(+), 29 deletions(-)

diff --git a/pandora_server/util/pandora_manage.pl b/pandora_server/util/pandora_manage.pl
index 678bcdabfb..976654a610 100755
--- a/pandora_server/util/pandora_manage.pl
+++ b/pandora_server/util/pandora_manage.pl
@@ -145,12 +145,12 @@ sub help_screen{
 	help_screen_line('--agent_update_custom_fields', '<id_agent> <type_field> <field_to_change> <new_value>', "Update an agent custom field. The fields can be \n\t  the following: Serial number, Department ... and types can be 0 text and 1 combo ");
 
 	print "\nMODULES:\n\n" unless $param ne '';
-	help_screen_line('--create_data_module', "<module_name> <module_type> <agent_name> [<description> <module_group> \n\t  <min> <max> <post_process> <interval> <warning_min> <warning_max> <critical_min> <critical_max> \n\t <history_data> <definition_file> <warning_str> <critical_str>\n\t  <unknown_events> <ff_threshold> <each_ff> <ff_threshold_normal>\n\t  <ff_threshold_warning> <ff_threshold_critical> <ff_timeout> <warning_inverse> <critical_inverse>\n\t <critical_instructions> <warning_instructions> <unknown_instructions> <use_alias> <ignore_unknown>]", 'Add data server module to agent');
-	help_screen_line('--create_web_module', "<module_name> <module_type> <agent_name> [<description> <module_group> \n\t  <min> <max> <post_process> <interval> <warning_min> <warning_max> <critical_min> <critical_max> \n\t <history_data> <retries> <requests> <agent_browser_id> <auth_server> <auth_realm> <definition_file>\n\t <proxy_url> <proxy_auth_login> <proxy_auth_password> <warning_str> <critical_str>\n\t  <unknown_events> <ff_threshold> <each_ff> <ff_threshold_normal>\n\t  <ff_threshold_warning> <ff_threshold_critical> <ff_timeout> <warning_inverse> <critical_inverse>\n\t <critical_instructions> <warning_instructions> <unknown_instructions> <use_alias> <ignore_unknown>].\n\t The valid data types are web_data, web_proc, web_content_data or web_content_string", 'Add web server module to agent');
-	help_screen_line('--create_network_module', "<module_name> <module_type> <agent_name> <module_address> \n\t  [<module_port> <description> <module_group> <min> <max> <post_process> <interval> \n\t  <warning_min> <warning_max> <critical_min> <critical_max> <history_data> <ff_threshold>\n\t  <warning_str> <critical_str> <unknown_events> <each_ff>\n\t  <ff_threshold_normal> <ff_threshold_warning> <ff_threshold_critical> <timeout> <retries>\n\t <critical_instructions> <warning_instructions> <unknown_instructions>\n\t <warning_inverse> <critical_inverse> <use_alias> <ignore_unknown>]", 'Add not snmp network module to agent');
+	help_screen_line('--create_data_module', "<module_name> <module_type> <agent_name> [<description> <module_group> \n\t  <min> <max> <post_process> <interval> <warning_min> <warning_max> <critical_min> <critical_max> \n\t <history_data> <definition_file> <warning_str> <critical_str>\n\t  <unknown_events> <ff_threshold> <each_ff> <ff_threshold_normal>\n\t  <ff_threshold_warning> <ff_threshold_critical> <ff_timeout> <warning_inverse> <critical_inverse>\n\t <critical_instructions> <warning_instructions> <unknown_instructions> <use_alias> <ignore_unknown> <warning_time>]", 'Add data server module to agent');
+	help_screen_line('--create_web_module', "<module_name> <module_type> <agent_name> [<description> <module_group> \n\t  <min> <max> <post_process> <interval> <warning_min> <warning_max> <critical_min> <critical_max> \n\t <history_data> <retries> <requests> <agent_browser_id> <auth_server> <auth_realm> <definition_file>\n\t <proxy_url> <proxy_auth_login> <proxy_auth_password> <warning_str> <critical_str>\n\t  <unknown_events> <ff_threshold> <each_ff> <ff_threshold_normal>\n\t  <ff_threshold_warning> <ff_threshold_critical> <ff_timeout> <warning_inverse> <critical_inverse>\n\t <critical_instructions> <warning_instructions> <unknown_instructions> <use_alias> <ignore_unknown> <warning_time>].\n\t The valid data types are web_data, web_proc, web_content_data or web_content_string", 'Add web server module to agent');
+	help_screen_line('--create_network_module', "<module_name> <module_type> <agent_name> <module_address> \n\t  [<module_port> <description> <module_group> <min> <max> <post_process> <interval> \n\t  <warning_min> <warning_max> <critical_min> <critical_max> <history_data> <ff_threshold>\n\t  <warning_str> <critical_str> <unknown_events> <each_ff>\n\t  <ff_threshold_normal> <ff_threshold_warning> <ff_threshold_critical> <timeout> <retries>\n\t <critical_instructions> <warning_instructions> <unknown_instructions>\n\t <warning_inverse> <critical_inverse> <use_alias> <ignore_unknown> <warning_time>]", 'Add not snmp network module to agent');
 	help_screen_line('--create_snmp_module', "<module_name> <module_type> <agent_name> <module_address> <module_port>\n\t  <version> [<community> <oid> <description> <module_group> <min> <max> <post_process> <interval>\n\t   <warning_min> <warning_max> <critical_min> <critical_max> <history_data> \n\t  <snmp3_priv_method> <snmp3_priv_pass> <snmp3_sec_level> <snmp3_auth_method> \n\t  <snmp3_auth_user> <snmp3_auth_pass> <ff_threshold> <warning_str> \n\t  <critical_str> <unknown_events> <each_ff> <ff_threshold_normal>\n\t  <ff_threshold_warning> <ff_threshold_critical> <timeout> <retries> <use_alias> <ignore_unknown>]
-	\n\t <critical_instructions> <warning_instructions> <unknown_instructions>\n\t <warning_inverse> <critical_inverse>]", 'Add snmp network module to agent');
-	help_screen_line('--create_plugin_module', "<module_name> <module_type> <agent_name> <module_address> \n\t  <module_port> <plugin_name> <user> <password> <parameters> [<description> \n\t  <module_group> <min> <max> <post_process> <interval> <warning_min> <warning_max> <critical_min> \n\t  <critical_max> <history_data> <ff_threshold> <warning_str> <critical_str>\n\t  <unknown_events> <each_ff> <ff_threshold_normal> <ff_threshold_warning>\n\t  <ff_threshold_critical> <timeout> \n\t <critical_instructions> <warning_instructions> <unknown_instructions>\n\t <warning_inverse> <critical_inverse> <use_alias> <ignore_unknown>]", 'Add plug-in module to agent');
+	\n\t <critical_instructions> <warning_instructions> <unknown_instructions>\n\t <warning_inverse> <critical_inverse> <warning_time>]", 'Add snmp network module to agent');
+	help_screen_line('--create_plugin_module', "<module_name> <module_type> <agent_name> <module_address> \n\t  <module_port> <plugin_name> <user> <password> <parameters> [<description> \n\t  <module_group> <min> <max> <post_process> <interval> <warning_min> <warning_max> <critical_min> \n\t  <critical_max> <history_data> <ff_threshold> <warning_str> <critical_str>\n\t  <unknown_events> <each_ff> <ff_threshold_normal> <ff_threshold_warning>\n\t  <ff_threshold_critical> <timeout> \n\t <critical_instructions> <warning_instructions> <unknown_instructions>\n\t <warning_inverse> <critical_inverse> <use_alias> <ignore_unknown> <warning_time>]", 'Add plug-in module to agent');
     help_screen_line('--get_module_group', '[<module_group_name>]', 'Dysplay all module groups');
     help_screen_line('--create_module_group', '<module_group_name>');
     help_screen_line('--module_group_synch', "<server_name1|server_name2|server_name3...> [<return_type>]", 'Synchronize metaconsole module groups');
@@ -1655,21 +1655,21 @@ sub cli_create_data_module($) {
 		$min,$max,$post_process, $interval, $warning_min, $warning_max, $critical_min,
 		$critical_max, $history_data, $definition_file, $configuration_data, $warning_str, $critical_str, $enable_unknown_events,
 	    $ff_threshold, $each_ff, $ff_threshold_normal, $ff_threshold_warning, $ff_threshold_critical, $ff_timeout, 
-	    $warning_inverse, $critical_inverse, $critical_instructions, $warning_instructions, $unknown_instructions, $use_alias, $ignore_unknown);
+	    $warning_inverse, $critical_inverse, $critical_instructions, $warning_instructions, $unknown_instructions, $use_alias, $ignore_unknown, $warning_time);
 	
 	if ($in_policy == 0) {
 		($module_name, $module_type, $agent_name, $description, $module_group, 
 		$min,$max,$post_process, $interval, $warning_min, $warning_max, $critical_min,
 		$critical_max, $history_data, $definition_file, $warning_str, $critical_str, $enable_unknown_events, $ff_threshold,
-		$each_ff, $ff_threshold_normal, $ff_threshold_warning, $ff_threshold_critical, $ff_timeout, 
-	    $warning_inverse, $critical_inverse, $critical_instructions, $warning_instructions, $unknown_instructions, $use_alias, $ignore_unknown) = @ARGV[2..32];
+		$each_ff, $ff_threshold_normal, $ff_threshold_warning, $ff_threshold_critical, $ff_timeout,$warning_inverse, $critical_inverse,  
+	    $critical_instructions, $warning_instructions, $unknown_instructions, $use_alias, $ignore_unknown, $warning_time) = @ARGV[2..33];
 	}
 	else {
 		($policy_name, $module_name, $module_type, $description, $module_group, 
 		$min,$max,$post_process, $interval, $warning_min, $warning_max, $critical_min,
 		$critical_max, $history_data, $configuration_data, $warning_str, $critical_str, $enable_unknown_events, $ff_threshold,
 		$each_ff, $ff_threshold_normal, $ff_threshold_warning, $ff_threshold_critical, $ff_timeout, 
-	    $warning_inverse, $critical_inverse, $critical_instructions, $warning_instructions, $unknown_instructions, $ignore_unknown) = @ARGV[2..32];
+	    $warning_inverse, $critical_inverse, $critical_instructions, $warning_instructions, $unknown_instructions, $ignore_unknown, $warning_time) = @ARGV[2..33];
 	}
  
 	my $module_name_def;
@@ -1887,6 +1887,7 @@ sub cli_create_data_module($) {
 	$parameters{'warning_instructions'} = $warning_instructions unless !defined ($warning_instructions);
 	$parameters{'unknown_instructions'} = $unknown_instructions unless !defined ($unknown_instructions);
 	$parameters{'ignore_unknown'} = $ignore_unknown unless !defined ($ignore_unknown);
+	$parameters{'warning_time'} = $warning_time unless !defined ($warning_time);
 
 	if ($in_policy == 0) {
 		if (defined $use_alias and $use_alias eq 'use_alias') {
@@ -1918,7 +1919,7 @@ sub cli_create_web_module($) {
 		$critical_max, $history_data, $retries, $requests, $agent_browser_id, $auth_server, $auth_realm, 
 		$definition_file, $proxy_url, $proxy_auth_login, $proxy_auth_password, $configuration_data, $warning_str, $critical_str, $enable_unknown_events,
 	    $ff_threshold, $each_ff, $ff_threshold_normal, $ff_threshold_warning, $ff_threshold_critical, $ff_timeout, 
-	    $warning_inverse, $critical_inverse, $critical_instructions, $warning_instructions, $unknown_instructions, $use_alias, $ignore_unknown);
+	    $warning_inverse, $critical_inverse, $critical_instructions, $warning_instructions, $unknown_instructions, $use_alias, $ignore_unknown, $warning_time);
 	
 	if ($in_policy == 0) {
 		($module_name, $module_type, $agent_name, $description, $module_group, 
@@ -1926,7 +1927,7 @@ sub cli_create_web_module($) {
 		$critical_max, $history_data, $retries, $requests, $agent_browser_id, $auth_server, $auth_realm, 
 		$definition_file, $proxy_url, $proxy_auth_login, $proxy_auth_password, $warning_str, $critical_str, 
 		$enable_unknown_events, $ff_threshold, $each_ff, $ff_threshold_normal, $ff_threshold_warning, $ff_threshold_critical, $ff_timeout, 
-	    $warning_inverse, $critical_inverse, $critical_instructions, $warning_instructions, $unknown_instructions, $use_alias, $ignore_unknown) = @ARGV[2..40];
+	    $warning_inverse, $critical_inverse, $critical_instructions, $warning_instructions, $unknown_instructions, $use_alias, $ignore_unknown, $warning_time) = @ARGV[2..41];
 	}
 	else {
 		($policy_name, $module_name, $module_type, $description, $module_group, 
@@ -1934,7 +1935,7 @@ sub cli_create_web_module($) {
 		$critical_max, $history_data, $retries, $requests, $agent_browser_id, $auth_server, $auth_realm, $configuration_data, $proxy_url,
 		 $proxy_auth_login, $proxy_auth_password, $warning_str, $critical_str, 
 		$enable_unknown_events, $ff_threshold, $each_ff, $ff_threshold_normal, $ff_threshold_warning, $ff_threshold_critical, $ff_timeout, 
-	    $warning_inverse, $critical_inverse, $critical_instructions, $warning_instructions, $unknown_instructions, $ignore_unknown) = @ARGV[2..39];
+	    $warning_inverse, $critical_inverse, $critical_instructions, $warning_instructions, $unknown_instructions, $ignore_unknown, $warning_time) = @ARGV[2..40];
 	}
 	
 	my $module_name_def;
@@ -2163,7 +2164,7 @@ sub cli_create_web_module($) {
 	$parameters{'ip_target'} = $auth_server unless !defined ($auth_server);
 	$parameters{'snmp_community'} = $auth_realm unless !defined ($auth_realm);
 	$parameters{'ignore_unknown'} = $ignore_unknown unless !defined ($ignore_unknown);
-	
+	$parameters{'warning_time'} = $warning_time unless !defined ($warning_time);
 	
 	
 	if ($in_policy == 0) {
@@ -2365,7 +2366,7 @@ sub cli_create_network_module($) {
 	$module_group, $min, $max, $post_process, $interval, $warning_min, $warning_max, $critical_min,
 	$critical_max, $history_data, $ff_threshold, $warning_str, $critical_str, $enable_unknown_events, $each_ff,
 	$ff_threshold_normal, $ff_threshold_warning, $ff_threshold_critical, $timeout, $retries, $critical_instructions, 
-	$warning_instructions, $unknown_instructions, $warning_inverse, $critical_inverse, $use_alias, $ignore_unknown);
+	$warning_instructions, $unknown_instructions, $warning_inverse, $critical_inverse, $use_alias, $ignore_unknown, $warning_time);
 	
 	if ($in_policy == 0) {
 		($module_name, $module_type, $agent_name, $module_address, $module_port, $description, 
@@ -2373,7 +2374,7 @@ sub cli_create_network_module($) {
 		$critical_max, $history_data, $ff_threshold, $warning_str, $critical_str, $enable_unknown_events,
 		$each_ff, $ff_threshold_normal, $ff_threshold_warning,
 		$ff_threshold_critical, $timeout, $retries,$critical_instructions, $warning_instructions, $unknown_instructions,
-		$warning_inverse, $critical_inverse, $use_alias, $ignore_unknown) = @ARGV[2..34];
+		$warning_inverse, $critical_inverse, $use_alias, $ignore_unknown, $warning_time) = @ARGV[2..35];
 	}
 	else {
 		($policy_name, $module_name, $module_type, $module_port, $description, 
@@ -2381,7 +2382,7 @@ sub cli_create_network_module($) {
 		$critical_max, $history_data, $ff_threshold, $warning_str, $critical_str, $enable_unknown_events,
 		$each_ff, $ff_threshold_normal, $ff_threshold_warning,
 		$ff_threshold_critical, $timeout, $retries, $critical_instructions, $warning_instructions, $unknown_instructions,
-		$warning_inverse, $critical_inverse, $ignore_unknown) = @ARGV[2..34];
+		$warning_inverse, $critical_inverse, $ignore_unknown, $warning_time) = @ARGV[2..35];
 	}
 
 	my $module_name_def;
@@ -2518,7 +2519,7 @@ sub cli_create_network_module($) {
 	$parameters{'critical_inverse'} = $critical_inverse unless !defined ($critical_inverse);
 	$parameters{'warning_inverse'} = $warning_inverse unless !defined ($warning_inverse);
 	$parameters{'ignore_unknown'} = $ignore_unknown unless !defined ($ignore_unknown);
-
+	$parameters{'warning_time'} = $warning_time unless !defined ($warning_time);
 	
 	if ($in_policy == 0) {
 		if (defined $use_alias and $use_alias eq 'use_alias') {
@@ -2550,7 +2551,7 @@ sub cli_create_snmp_module($) {
 		$warning_max, $critical_min, $critical_max, $history_data, $snmp3_priv_method, $snmp3_priv_pass,
 		$snmp3_sec_level, $snmp3_auth_method, $snmp3_auth_user, $snmp3_auth_pass, $ff_threshold, $warning_str, $critical_str, $enable_unknown_events,
 	    $each_ff, $ff_threshold_normal, $ff_threshold_warning, $ff_threshold_critical, $timeout, $retries,
-		$critical_instructions, $warning_instructions, $unknown_instructions, $warning_inverse, $critical_inverse, $use_alias, $ignore_unknown);
+		$critical_instructions, $warning_instructions, $unknown_instructions, $warning_inverse, $critical_inverse, $use_alias, $ignore_unknown, $warning_time);
 	
 	if ($in_policy == 0) {
 		($module_name, $module_type, $agent_name, $module_address, $module_port, $version, $community, 
@@ -2558,7 +2559,7 @@ sub cli_create_snmp_module($) {
 		$warning_max, $critical_min, $critical_max, $history_data, $snmp3_priv_method, $snmp3_priv_pass,
 		$snmp3_sec_level, $snmp3_auth_method, $snmp3_auth_user, $snmp3_auth_pass, $ff_threshold, $warning_str, $critical_str, $enable_unknown_events,
 		$each_ff, $ff_threshold_normal, $ff_threshold_warning, $ff_threshold_critical, $timeout, $retries,
-		$critical_instructions, $warning_instructions, $unknown_instructions, $warning_inverse, $critical_inverse, $use_alias, $ignore_unknown) = @ARGV[2..43];
+		$critical_instructions, $warning_instructions, $unknown_instructions, $warning_inverse, $critical_inverse, $use_alias, $ignore_unknown, $warning_time) = @ARGV[2..44];
 	}
 	else {
 		($policy_name, $module_name, $module_type, $module_port, $version, $community, 
@@ -2566,7 +2567,7 @@ sub cli_create_snmp_module($) {
 		$warning_max, $critical_min, $critical_max, $history_data, $snmp3_priv_method, $snmp3_priv_pass,
 		$snmp3_sec_level, $snmp3_auth_method, $snmp3_auth_user, $snmp3_auth_pass, $ff_threshold, $warning_str, $critical_str, $enable_unknown_events,
 		$each_ff, $ff_threshold_normal, $ff_threshold_warning, $ff_threshold_critical, $timeout, $retries,
-		$critical_instructions, $warning_instructions, $unknown_instructions, $warning_inverse, $critical_inverse, $ignore_unknown) = @ARGV[2..41];
+		$critical_instructions, $warning_instructions, $unknown_instructions, $warning_inverse, $critical_inverse, $ignore_unknown, $warning_time) = @ARGV[2..42];
 	}
 	
 	my $module_name_def;
@@ -2708,7 +2709,8 @@ sub cli_create_snmp_module($) {
 	$parameters{'critical_inverse'} = $critical_inverse unless !defined ($critical_inverse);
 	$parameters{'warning_inverse'} = $warning_inverse unless !defined ($warning_inverse);
 	$parameters{'ignore_unknown'} = $ignore_unknown unless !defined ($ignore_unknown);
-	
+	$parameters{'warning_time'} = $warning_time unless !defined ($warning_time);
+
 	if ($in_policy == 0) {
 		if (defined $use_alias and $use_alias eq 'use_alias') {
 			foreach my $id (@id_agents) {
@@ -2736,7 +2738,7 @@ sub cli_create_plugin_module($) {
 		$interval, $warning_min, $warning_max, $critical_min, $critical_max, $history_data, 
 		$ff_threshold, $warning_str, $critical_str, $enable_unknown_events,
 	    $each_ff, $ff_threshold_normal, $ff_threshold_warning, $ff_threshold_critical, $timeout,
-		$critical_instructions, $warning_instructions, $unknown_instructions, $warning_inverse, $critical_inverse, $use_alias, $ignore_unknown);
+		$critical_instructions, $warning_instructions, $unknown_instructions, $warning_inverse, $critical_inverse, $use_alias, $ignore_unknown, $warning_time);
 	
 	if ($in_policy == 0) {
 		($module_name, $module_type, $agent_name, $module_address, $module_port, $plugin_name,
@@ -2744,7 +2746,7 @@ sub cli_create_plugin_module($) {
 			$interval, $warning_min, $warning_max, $critical_min, $critical_max, $history_data, 
 			$ff_threshold, $warning_str, $critical_str, $enable_unknown_events,
 		$each_ff, $ff_threshold_normal, $ff_threshold_warning, $ff_threshold_critical, $timeout,
-		$critical_instructions, $warning_instructions, $unknown_instructions, $warning_inverse, $critical_inverse, $use_alias, $ignore_unknown) = @ARGV[2..37];
+		$critical_instructions, $warning_instructions, $unknown_instructions, $warning_inverse, $critical_inverse, $use_alias, $ignore_unknown, $warning_time) = @ARGV[2..38];
 	}
 	else {
 		($policy_name, $module_name, $module_type, $module_port, $plugin_name,
@@ -2752,7 +2754,7 @@ sub cli_create_plugin_module($) {
 			$interval, $warning_min, $warning_max, $critical_min, $critical_max, $history_data, 
 			$ff_threshold, $warning_str, $critical_str, $enable_unknown_events,
 		$each_ff, $ff_threshold_normal, $ff_threshold_warning, $ff_threshold_critical, $timeout,
-		$critical_instructions, $warning_instructions, $unknown_instructions, $warning_inverse, $critical_inverse, $ignore_unknown) = @ARGV[2..35];
+		$critical_instructions, $warning_instructions, $unknown_instructions, $warning_inverse, $critical_inverse, $ignore_unknown, $warning_time) = @ARGV[2..36];
 	}
 
 	my $module_name_def;
@@ -2909,7 +2911,8 @@ sub cli_create_plugin_module($) {
 	$parameters{'critical_inverse'} = $critical_inverse unless !defined ($critical_inverse);
 	$parameters{'warning_inverse'} = $warning_inverse unless !defined ($warning_inverse);
 	$parameters{'ignore_unknown'} = $ignore_unknown unless !defined ($ignore_unknown);
-	
+	$parameters{'warning_time'} = $warning_time unless !defined ($warning_time);
+
 	if ($in_policy == 0) {
 		if (defined $use_alias and $use_alias eq 'use_alias') {
 			foreach my $id (@id_agents) {
@@ -7816,7 +7819,7 @@ sub pandora_manage_main ($$$) {
 			cli_delete_agent();
 		}
 		elsif ($param eq '--create_data_module') {
-			param_check($ltotal, 31, 24);
+			param_check($ltotal, 32, 25);
 			cli_create_data_module(0);
 		}
 		elsif ($param eq '--create_web_module') {
@@ -7845,7 +7848,7 @@ sub pandora_manage_main ($$$) {
 			cli_create_snmp_module(0);
 		}
 		elsif ($param eq '--create_plugin_module') {
-			param_check($ltotal, 37, 20);
+			param_check($ltotal, 38, 21);
 			cli_create_plugin_module(0);
 		}
 		elsif ($param eq '--delete_module') {
@@ -8033,7 +8036,7 @@ sub pandora_manage_main ($$$) {
 			cli_create_policy();
 		}
 		elsif ($param eq '--create_policy_data_module') {
-			param_check($ltotal, 30, 21);
+			param_check($ltotal, 31, 22);
 			cli_create_data_module(1);
 		}
 		elsif ($param eq '--create_policy_web_module') {
@@ -8049,7 +8052,7 @@ sub pandora_manage_main ($$$) {
 			cli_create_snmp_module(1);
 		}
 		elsif ($param eq '--create_policy_plugin_module') {
-			param_check($ltotal, 35, 19);
+			param_check($ltotal, 36, 20);
 			cli_create_plugin_module(1);
 		}
 		elsif ($param eq '--create_alert_template') {

From 05ec992fac45ae7d56e85e9c47b5b6f23c9379b5 Mon Sep 17 00:00:00 2001
From: Daniel Cebrian <daniel.cebrian@pandorafms.com>
Date: Wed, 27 Dec 2023 16:05:34 +0100
Subject: [PATCH 075/231] #12522 enhanced audit log

---
 pandora_console/extensions/dbmanager.php        | 17 ++++++++---------
 .../godmode/reporting/map_builder.php           |  6 ++++++
 .../godmode/reporting/reporting_builder.php     |  6 +++---
 .../reporting/visual_console_builder.php        |  8 ++++----
 .../include/lib/Dashboard/Manager.php           | 14 ++++++++++++++
 .../operation/reporting/reporting_viewer.php    |  7 +++++++
 6 files changed, 42 insertions(+), 16 deletions(-)

diff --git a/pandora_console/extensions/dbmanager.php b/pandora_console/extensions/dbmanager.php
index acaaadd12c..38bb7c2d8b 100644
--- a/pandora_console/extensions/dbmanager.php
+++ b/pandora_console/extensions/dbmanager.php
@@ -280,18 +280,17 @@ function dbmgr_extension_main()
 
     if (is_array($result) === false) {
         echo '<strong>Output: <strong>'.$result;
-
-        db_pandora_audit(
-            AUDIT_LOG_SYSTEM,
-            'DB Interface Extension. SQL',
-            false,
-            false,
-            $sql
-        );
-
         return;
     }
 
+    db_pandora_audit(
+        AUDIT_LOG_SYSTEM,
+        'DB Interface Extension. SQL',
+        false,
+        false,
+        $sql
+    );
+
     echo "<div class='overflow'>";
     $table = new stdClass();
     $table->width = '100%';
diff --git a/pandora_console/godmode/reporting/map_builder.php b/pandora_console/godmode/reporting/map_builder.php
index 7a8d2df32c..6dbb6a1dbf 100644
--- a/pandora_console/godmode/reporting/map_builder.php
+++ b/pandora_console/godmode/reporting/map_builder.php
@@ -250,6 +250,12 @@ if ($delete_layout || $copy_layout) {
 
         $result = db_process_sql_insert('tlayout', $values);
 
+        $auditMessage = ((bool) $result !== false) ? 'Copy visual console' : 'Fail try to copy visual console';
+        db_pandora_audit(
+            AUDIT_LOG_VISUAL_CONSOLE_MANAGEMENT,
+            sprintf('%s %s #%s', $auditMessage, $visualConsoleName, $id_layout)
+        );
+
         $idNewVisualConsole = $result;
 
         if ($result) {
diff --git a/pandora_console/godmode/reporting/reporting_builder.php b/pandora_console/godmode/reporting/reporting_builder.php
index 842e05147d..777011e4c7 100755
--- a/pandora_console/godmode/reporting/reporting_builder.php
+++ b/pandora_console/godmode/reporting/reporting_builder.php
@@ -626,7 +626,7 @@ switch ($action) {
 
             db_pandora_audit(
                 AUDIT_LOG_REPORT_MANAGEMENT,
-                sprintf('%s #%s', $auditMessage, $idReport)
+                sprintf('%s %s #%s', $auditMessage, $report['name'], $idReport)
             );
 
             ui_print_result_message(
@@ -1461,7 +1461,7 @@ switch ($action) {
                         $auditMessage = ($resultOperationDB === true) ? 'Update report' : 'Fail try to update report';
                         db_pandora_audit(
                             AUDIT_LOG_REPORT_MANAGEMENT,
-                            sprintf('%s #%s', $auditMessage, $idReport)
+                            sprintf('%s %s #%s', $auditMessage, $new_values['name'], $idReport),
                         );
                     } else {
                         $resultOperationDB = false;
@@ -1513,7 +1513,7 @@ switch ($action) {
                             ]
                         );
 
-                        $auditMessage = ((bool) $idOrResult === true) ? sprintf('Create report #%s', $idOrResult) : 'Fail try to create report';
+                        $auditMessage = ((bool) $idOrResult === true) ? sprintf('Create report %s #%s', $reportName, $idOrResult) : 'Fail try to create report';
                         db_pandora_audit(
                             AUDIT_LOG_REPORT_MANAGEMENT,
                             $auditMessage
diff --git a/pandora_console/godmode/reporting/visual_console_builder.php b/pandora_console/godmode/reporting/visual_console_builder.php
index 7c04892524..c49acaf80d 100755
--- a/pandora_console/godmode/reporting/visual_console_builder.php
+++ b/pandora_console/godmode/reporting/visual_console_builder.php
@@ -300,7 +300,7 @@ switch ($activeTab) {
                             ui_update_name_fav_element($idVisualConsole, 'Visual_Console', $values['name']);
                             db_pandora_audit(
                                 AUDIT_LOG_VISUAL_CONSOLE_MANAGEMENT,
-                                sprintf('Update visual console #%s', $idVisualConsole)
+                                sprintf('Update visual console %s #%s', io_safe_output($values['name']), $idVisualConsole)
                             );
                             $action = 'edit';
                             $statusProcessInDB = [
@@ -320,7 +320,7 @@ switch ($activeTab) {
                         } else {
                             db_pandora_audit(
                                 AUDIT_LOG_VISUAL_CONSOLE_MANAGEMENT,
-                                sprintf('Fail update visual console #%s', $idVisualConsole)
+                                sprintf('Fail update visual console %s #%s', $values['name'], $idVisualConsole)
                             );
                             $statusProcessInDB = [
                                 'flag'    => false,
@@ -339,7 +339,7 @@ switch ($activeTab) {
                         if ($idVisualConsole !== false) {
                             db_pandora_audit(
                                 AUDIT_LOG_VISUAL_CONSOLE_MANAGEMENT,
-                                sprintf('Create visual console #%s', $idVisualConsole)
+                                sprintf('Create visual console %s #%s', io_safe_output($values['name']), $idVisualConsole)
                             );
                             $action = 'edit';
                             $statusProcessInDB = [
@@ -359,7 +359,7 @@ switch ($activeTab) {
                         } else {
                             db_pandora_audit(
                                 AUDIT_LOG_VISUAL_CONSOLE_MANAGEMENT,
-                                'Fail try to create visual console'
+                                sprintf('Fail try to create visual console %s #%s', io_safe_output($values['name']), $idVisualConsole)
                             );
                             $statusProcessInDB = [
                                 'flag'    => false,
diff --git a/pandora_console/include/lib/Dashboard/Manager.php b/pandora_console/include/lib/Dashboard/Manager.php
index 720045dccc..7e5562ebef 100644
--- a/pandora_console/include/lib/Dashboard/Manager.php
+++ b/pandora_console/include/lib/Dashboard/Manager.php
@@ -564,6 +564,13 @@ class Manager implements PublicLogin
             ];
         }
 
+        $auditMessage = ($res === false) ? sprintf('Fail try update dashboard %s #%s', $values['name'], $this->dashboardId) : sprintf('Dashboard update %s #%s', $values['name'], $this->dashboardId);
+        db_pandora_audit(
+            AUDIT_LOG_DASHBOARD_MANAGEMENT,
+            $auditMessage,
+            false,
+        );
+
         return $result;
     }
 
@@ -744,6 +751,13 @@ class Manager implements PublicLogin
             }
         }
 
+        $auditMessage = ($result === false) ? sprintf('Fail try copy dashboard %s #%s', $values['name'], $this->dashboardId) : sprintf('Copy dashboard %s #%s', $values['name'], $this->dashboardId);
+        db_pandora_audit(
+            AUDIT_LOG_DASHBOARD_MANAGEMENT,
+            $auditMessage,
+            false,
+        );
+
         return $result;
     }
 
diff --git a/pandora_console/operation/reporting/reporting_viewer.php b/pandora_console/operation/reporting/reporting_viewer.php
index 4bc5a05b61..fdd950575c 100755
--- a/pandora_console/operation/reporting/reporting_viewer.php
+++ b/pandora_console/operation/reporting/reporting_viewer.php
@@ -428,6 +428,13 @@ echo '</div>';
 ui_include_time_picker();
 ui_require_jquery_file('ui.datepicker-'.get_user_language(), 'include/javascript/i18n/');
 
+db_pandora_audit(
+    AUDIT_LOG_REPORT_MANAGEMENT,
+    sprintf('Report visualized %s #%s.', $report['name'], $report['id_report']),
+    false,
+    false
+);
+
 ?>
 <script language="javascript" type="text/javascript">
 

From 5b4531e74f21368d65823281aee92a7b11588f54 Mon Sep 17 00:00:00 2001
From: Daniel Cebrian <daniel.cebrian@pandorafms.com>
Date: Wed, 27 Dec 2023 17:10:11 +0100
Subject: [PATCH 076/231] #12553 fixed titles

---
 pandora_console/godmode/massive/massive_edit_modules.php   | 2 +-
 pandora_console/include/javascript/pandora_dashboards.js   | 7 ++++++-
 .../include/lib/Dashboard/Widgets/security_hardening.php   | 2 +-
 3 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/pandora_console/godmode/massive/massive_edit_modules.php b/pandora_console/godmode/massive/massive_edit_modules.php
index 4711821c52..9b11b86916 100755
--- a/pandora_console/godmode/massive/massive_edit_modules.php
+++ b/pandora_console/godmode/massive/massive_edit_modules.php
@@ -1529,7 +1529,7 @@ $array_os = [
     'windows'   => __('Windows'),
 ];
 $table->data[40][0] = html_print_label_input_block(
-    __('rget OS'),
+    __('Target OS'),
     html_print_select(
         $array_os,
         'custom_string_2',
diff --git a/pandora_console/include/javascript/pandora_dashboards.js b/pandora_console/include/javascript/pandora_dashboards.js
index f4168f2bd9..fefcce070d 100644
--- a/pandora_console/include/javascript/pandora_dashboards.js
+++ b/pandora_console/include/javascript/pandora_dashboards.js
@@ -948,6 +948,11 @@ function processTreeSearch(settings) {
           recipient: $("div#tree-controller-recipient_" + settings.cellId),
           detailRecipient: {
             render: function(element, data) {
+              let title = "Module information";
+              if ($(data).find("#tree_view_agent_detail-name").length > 0) {
+                title = "Agent information";
+              }
+
               return {
                 open: function() {
                   $("#module_details_window")
@@ -958,7 +963,7 @@ function processTreeSearch(settings) {
                       resizable: true,
                       draggable: true,
                       modal: true,
-                      title: "Info module",
+                      title: title,
                       overlay: {
                         opacity: 0.5,
                         background: "black"
diff --git a/pandora_console/include/lib/Dashboard/Widgets/security_hardening.php b/pandora_console/include/lib/Dashboard/Widgets/security_hardening.php
index b3c124f039..cd35b7cd59 100644
--- a/pandora_console/include/lib/Dashboard/Widgets/security_hardening.php
+++ b/pandora_console/include/lib/Dashboard/Widgets/security_hardening.php
@@ -252,7 +252,7 @@ class SecurityHardening extends Widget
         ];
 
         $inputs[] = [
-            'label'     => __('Ingore skipped'),
+            'label'     => __('Ignore skipped'),
             'id'        => 'row_ignore_skipped',
             'class'     => 'row_input',
             'arguments' => [

From 0c13fe6902934bc12f66a724aad3000509e4b143 Mon Sep 17 00:00:00 2001
From: "felix.suarez" <felix.suarez@pandorafms.com>
Date: Wed, 27 Dec 2023 11:09:44 -0600
Subject: [PATCH 077/231] Add warning_time to create API

---
 pandora_console/include/functions_api.php | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/pandora_console/include/functions_api.php b/pandora_console/include/functions_api.php
index 7417a48125..f75f20bca8 100644
--- a/pandora_console/include/functions_api.php
+++ b/pandora_console/include/functions_api.php
@@ -3677,6 +3677,7 @@ function api_set_create_network_module($id, $thrash1, $other, $thrash3)
         'warning_inverse'       => $other['data'][29],
         'ff_type'               => $other['data'][30],
         'ignore_unknown'        => $other['data'][32],
+        'warning_time'          => $other['data'][33],
     ];
 
     if (! $values['descripcion']) {
@@ -3956,6 +3957,7 @@ function api_set_create_plugin_module($id, $thrash1, $other, $thrash3)
         'warning_inverse'       => $other['data'][34],
         'ff_type'               => $other['data'][35],
         'ignore_unknown'        => $other['data'][37],
+        'warning_time'          => $other['data'][38],
     ];
 
     $plugin = db_get_row('tplugin', 'id', $values['id_plugin']);
@@ -4245,6 +4247,7 @@ function api_set_create_data_module($id, $thrash1, $other, $thrash3)
         'warning_inverse'       => $other['data'][25],
         'ff_type'               => $other['data'][26],
         'ignore_unknown'        => $other['data'][27],
+        'warning_time'          => $other['data'][28],
     ];
 
     if (! $values['descripcion']) {
@@ -4909,6 +4912,7 @@ function api_set_create_snmp_module($id, $thrash1, $other, $thrash3)
             'min_ff_event_critical' => $other['data'][33],
             'ff_type'               => $other['data'][34],
             'ignore_unknown'        => $other['data'][36],
+            'warning_time'          => $other['data'][37],
         ];
     } else {
         $values = [
@@ -4942,6 +4946,7 @@ function api_set_create_snmp_module($id, $thrash1, $other, $thrash3)
             'min_ff_event_critical' => $other['data'][27],
             'ff_type'               => $other['data'][28],
             'ignore_unknown'        => $other['data'][29],
+            'warning_time'          => $other['data'][30],
         ];
     }
 

From 6d1f2331d5504cb7d773f9d9396ddb1b37dad284 Mon Sep 17 00:00:00 2001
From: "felix.suarez" <felix.suarez@pandorafms.com>
Date: Wed, 27 Dec 2023 12:37:04 -0600
Subject: [PATCH 078/231] Add warning_time to update API

---
 pandora_console/include/functions_api.php | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/pandora_console/include/functions_api.php b/pandora_console/include/functions_api.php
index f75f20bca8..b2b706da87 100644
--- a/pandora_console/include/functions_api.php
+++ b/pandora_console/include/functions_api.php
@@ -3843,6 +3843,7 @@ function api_set_update_network_module($id_module, $thrash1, $other, $thrash3)
         'policy_linked',
         'ff_type',
         'ignore_unknown',
+        'warning_time',
     ];
 
     $values = [];
@@ -4120,6 +4121,7 @@ function api_set_update_plugin_module($id_module, $thrash1, $other, $thrash3)
         'policy_linked',
         'ff_type',
         'ignore_unknown',
+        'warning_time',
     ];
 
     $values = [];
@@ -4771,6 +4773,7 @@ function api_set_update_data_module($id_module, $thrash1, $other, $thrash3)
         'policy_linked',
         'ff_type',
         'ignore_unknown',
+        'warning_time',
     ];
 
     $values = [];
@@ -5116,6 +5119,7 @@ function api_set_update_snmp_module($id_module, $thrash1, $other, $thrash3)
             'policy_linked',
             'ff_type',
             'ignore_unknown',
+            'warning_time',
         ];
     } else {
         $snmp_module_fields = [
@@ -5149,6 +5153,7 @@ function api_set_update_snmp_module($id_module, $thrash1, $other, $thrash3)
             'policy_linked',
             'ff_type',
             'ignore_unknown',
+            'warning_time',
         ];
     }
 
@@ -7997,6 +8002,7 @@ function api_set_update_data_module_policy($id, $thrash1, $other, $thrash3)
         'disabled_types_event',
         'module_macros',
         'ignore_unknown',
+        'warning_time',
     ];
 
     $cont = 0;
@@ -8239,6 +8245,7 @@ function api_set_update_network_module_policy($id, $thrash1, $other, $thrash3)
         'disabled_types_event',
         'module_macros',
         'ignore_unknown',
+        'warning_time',
     ];
 
     $cont = 0;
@@ -8483,6 +8490,7 @@ function api_set_update_plugin_module_policy($id, $thrash1, $other, $thrash3)
         'macros',
         'module_macros',
         'ignore_unknown',
+        'warning_time',
     ];
 
     $cont = 0;
@@ -8966,6 +8974,7 @@ function api_set_update_snmp_module_policy($id, $thrash1, $other, $thrash3)
             'plugin_user',
             'plugin_pass',
             'ignore_unknown',
+            'warning_time',
         ];
     } else {
         $fields_snmp_module = [
@@ -8991,6 +9000,7 @@ function api_set_update_snmp_module_policy($id, $thrash1, $other, $thrash3)
             'custom_id',
             'description',
             'ignore_unknown',
+            'warning_time',
         ];
     }
 

From 563fe72194f693aea03d7c7a8f7e9b6a8026d75e Mon Sep 17 00:00:00 2001
From: Daniel Cebrian <daniel.cebrian@pandorafms.com>
Date: Thu, 28 Dec 2023 11:08:14 +0100
Subject: [PATCH 079/231] #11329 added secondary group in event list

---
 .../lib/Dashboard/Widgets/events_list.php      | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/pandora_console/include/lib/Dashboard/Widgets/events_list.php b/pandora_console/include/lib/Dashboard/Widgets/events_list.php
index ee0ac5afc0..a50cab93e4 100644
--- a/pandora_console/include/lib/Dashboard/Widgets/events_list.php
+++ b/pandora_console/include/lib/Dashboard/Widgets/events_list.php
@@ -246,6 +246,10 @@ class EventsListWidget extends Widget
             $values['groupRecursion'] = $decoder['groupRecursion'];
         }
 
+        if (isset($decoder['secondaryGroup']) === true) {
+            $values['secondaryGroup'] = $decoder['secondaryGroup'];
+        }
+
         if (isset($decoder['customFilter']) === true) {
             $values['customFilter'] = $decoder['customFilter'];
         }
@@ -456,6 +460,18 @@ class EventsListWidget extends Widget
             ],
         ];
 
+        // Secondary group.
+        $inputs['inputs']['row2'][] = [
+            'label'     => \__('Secondary group'),
+            'arguments' => [
+                'type'   => 'switch',
+                'name'   => 'secondaryGroup',
+                'class'  => 'event-widget-input',
+                'value'  => $values['secondaryGroup'],
+                'return' => true,
+            ],
+        ];
+
         // Group recursion.
         $inputs['inputs']['row2'][] = [
             'label'     => \__('Group recursion'),
@@ -537,6 +553,7 @@ class EventsListWidget extends Widget
         $values['groupId'] = \get_parameter_switch('groupId', []);
         $values['tagsId'] = \get_parameter_switch('tagsId', []);
         $values['groupRecursion'] = \get_parameter_switch('groupRecursion', 0);
+        $values['secondaryGroup'] = \get_parameter('secondaryGroup', 0);
         $values['customFilter'] = \get_parameter('customFilter', -1);
         $values['columns_events_widget'] = \get_parameter('columns_events_widget', []);
 
@@ -721,6 +738,7 @@ class EventsListWidget extends Widget
             $this->values['limit'] = $config['block_size'];
         }
 
+        $filter['search_secondary_groups'] = $this->values['secondaryGroup'];
         // Print datatable.
         $output .= ui_print_datatable(
             [

From 87f1346ee1970dcd919cd9ea04883ab091cf3294 Mon Sep 17 00:00:00 2001
From: miguel angel rasteu <miguelangel.rasteu@pandorafms.com>
Date: Fri, 29 Dec 2023 09:58:20 +0100
Subject: [PATCH 080/231] #12692 Add help tip in Event storm protection token

---
 pandora_console/godmode/setup/setup_general.php | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/pandora_console/godmode/setup/setup_general.php b/pandora_console/godmode/setup/setup_general.php
index bb1617d001..46a91e27c6 100644
--- a/pandora_console/godmode/setup/setup_general.php
+++ b/pandora_console/godmode/setup/setup_general.php
@@ -527,9 +527,12 @@ $table->data[$i++][] = html_print_label_input_block(
         true
     )
 );
-
+$help_tip = ui_print_help_tip(
+    __('No events or alerts will be generated, but data will still be received.'),
+    true
+);
 $table->data[$i][] = html_print_label_input_block(
-    __('Event storm protection'),
+    __('Event storm protection').$help_tip,
     html_print_checkbox_switch(
         'event_storm_protection',
         1,

From 0627ea07cd02a0d91551f16589110b47aae5c734 Mon Sep 17 00:00:00 2001
From: Daniel Cebrian <daniel.cebrian@pandorafms.com>
Date: Fri, 29 Dec 2023 13:43:28 +0100
Subject: [PATCH 081/231] #12503 changed unique ip in agent

---
 .../godmode/agentes/agent_manager.php         | 82 +++++++++++++++----
 .../godmode/agentes/configurar_agente.php     | 19 +----
 pandora_console/include/ajax/agent.php        | 26 ++++++
 pandora_console/include/styles/pandora.css    |  9 ++
 4 files changed, 104 insertions(+), 32 deletions(-)

diff --git a/pandora_console/godmode/agentes/agent_manager.php b/pandora_console/godmode/agentes/agent_manager.php
index 1af5e3d780..09c6ea3939 100644
--- a/pandora_console/godmode/agentes/agent_manager.php
+++ b/pandora_console/godmode/agentes/agent_manager.php
@@ -399,12 +399,12 @@ if ($new_agent === true) {
 
 // Ip adress.
 $tableAgent->data['caption_ip_address'] = __('IP Address');
-$tableAgent->rowclass['ip_address'] = 'w540px';
+$tableAgent->rowclass['ip_address'] = 'w400px';
 $tableAgent->data['ip_address'][0] = html_print_input_text('direccion', $direccion_agente, '', 16, 100, true, false, false, '', 'w540px');
+$tableAgent->data['ip_address'][1] = html_print_button(__('Check unique IP'), 'check_unique_ip', false, '', ['class' => 'secondary w130px'], true);
+$tableAgent->data['message_check_ip'][0] = html_print_div(['id' => 'message_check_ip'], true);
 
 $tableAgent->rowclass['additional_ip_address'] = 'subinput';
-$tableAgent->data['additional_ip_address'][0] = html_print_checkbox_switch('unique_ip', 1, $config['unique_ip'], true);
-$tableAgent->data['additional_ip_address'][1] = __('Unique IP');
 $tableAgent->cellclass['additional_ip_address'][1] = 'w120px';
 $tableAgent->data['additional_ip_address'][2] = html_print_input(
     [
@@ -1301,6 +1301,7 @@ ui_require_jquery_file('bgiframe');
 ?>
 
 <script type="text/javascript">
+    let unique_ip_trigger = false;
     // Show/Hide custom field row.
     function show_custom_field_row(id){
         if( $('#field-'+id).css('display') == 'none'){
@@ -1464,23 +1465,40 @@ ui_require_jquery_file('bgiframe');
         $("#text-agente").prop('readonly', true);
 
 
-        // Disable fixed ip button if empty.
-        if($("#text-direccion").val() == '') {
-                $("#fixed_ip").prop('disabled',true);
-        }
-
-        $("#text-direccion").on('input',function(e){
-            if($("#text-direccion").val() == '') {
-                $("#fixed_ip").prop('disabled',true);
-            } else {
-                $("#fixed_ip").prop('disabled',false);
+        $("#text-direccion").on('change',function(e){
+            const unique_ip_token = '<?php echo $config['unique_ip']; ?>';
+            unique_ip_trigger = false;
+            if (unique_ip_token == 1) {
+                check_unique_ip();
             }
         });
 
         check_basic_options();
         $('#id_os').on('change', function(){
             check_basic_options();
-        })
+        });
+
+        $('#button-check_unique_ip').on('click', function() {
+            check_unique_ip();
+        });
+
+        $('#form_agent').on('submit', function(e) {
+            if (unique_ip_trigger) {
+                e.preventDefault();
+                const form = this;
+                confirmDialog(
+                    {
+                        title: '<?php echo __('Are you sure?'); ?>',
+                        message: '<?php echo __('This IP address is in use. Are you sure you want to save it?'); ?>',
+                        ok: '<?php echo __('Yes'); ?>',
+                        cancel: '<?php echo __('Cancel'); ?>',
+                        onAccept: function() {
+                            form.submit();
+                        }
+                    }
+                );
+            }
+        });
     });
 
     function check_basic_options(){
@@ -1490,4 +1508,40 @@ ui_require_jquery_file('bgiframe');
             $('#basic_options').addClass('invisible');
         }
     }
+
+
+    function check_unique_ip() {
+        const direccion = $('#text-direccion').val();
+        let ip_all = <?php echo json_encode($ip_all); ?>;
+        if (!ip_all) {
+            ip_all = Object.keys(ip_all);
+        }
+        $.ajax({
+                method: "POST",
+                url: "<?php echo ui_get_full_url('ajax.php'); ?>",
+                dataType: 'json',
+                data: {
+                    page: "include/ajax/agent",
+                    check_unique_ip: 1,
+                    direccion,
+                    ip_all
+                },
+                success: function(data) {
+                    if (data.success) {
+                        $('#message_check_ip').attr('class', 'success');
+                    } else {
+                        $('#message_check_ip').attr('class', 'error');
+                    }
+
+                    if(data.exist_ip) {
+                        unique_ip_trigger = true;
+                    } else {
+                        unique_ip_trigger = false;
+                    }
+
+                    $('#message_check_ip').html(data.message);
+                }
+        });
+
+    }
 </script>
diff --git a/pandora_console/godmode/agentes/configurar_agente.php b/pandora_console/godmode/agentes/configurar_agente.php
index 3da403ef80..c2e3a2f4f6 100644
--- a/pandora_console/godmode/agentes/configurar_agente.php
+++ b/pandora_console/godmode/agentes/configurar_agente.php
@@ -102,7 +102,6 @@ $alias_as_name = 0;
 $direccion_agente = get_parameter('direccion', '');
 $direccion_agente = trim(io_safe_output($direccion_agente));
 $direccion_agente = io_safe_input($direccion_agente);
-$unique_ip = 0;
 $intervalo = SECONDS_5MINUTES;
 $ff_interval = 0;
 $quiet_module = 0;
@@ -186,7 +185,6 @@ if ($create_agent) {
     $alias = io_safe_input(trim(preg_replace('/[\/\\\|%#&$]/', '', $alias_safe_output)));
     $alias_as_name = (int) get_parameter_post('alias_as_name', 0);
     $direccion_agente = (string) get_parameter_post('direccion', '');
-    $unique_ip = (int) get_parameter_post('unique_ip', 0);
 
     // Safe_output only validate ip.
     $direccion_agente = trim(io_safe_output($direccion_agente));
@@ -269,12 +267,7 @@ if ($create_agent) {
             $nombre_agente = $alias;
         }
 
-        if ($unique_ip && $direccion_agente != '') {
-            $sql = 'SELECT direccion FROM tagente WHERE direccion = "'.$direccion_agente.'"';
-            $exists_ip  = db_get_row_sql($sql);
-        }
-
-        if (!$exists_alias && !$exists_ip) {
+        if (!$exists_alias) {
             $id_agente = db_process_sql_insert(
                 'tagente',
                 [
@@ -371,8 +364,6 @@ if ($create_agent) {
             $agent_creation_error = __('Could not be created');
             if ($exists_alias) {
                 $agent_creation_error = __('Could not be created, because name already exists');
-            } else if ($exists_ip) {
-                $agent_creation_error = __('Could not be created, because IP already exists');
             }
         }
     }
@@ -962,7 +953,6 @@ if ($update_agent) {
     $alias = io_safe_input(trim(preg_replace('/[\/\\\|%#&$]/', '', $alias_safe_output)));
     $alias_as_name = (int) get_parameter_post('alias_as_name', 0);
     $direccion_agente = (string) get_parameter_post('direccion', '');
-    $unique_ip = (int) get_parameter_post('unique_ip', 0);
     // Safe_output only validate ip.
     $direccion_agente = trim(io_safe_output($direccion_agente));
 
@@ -1097,18 +1087,11 @@ if ($update_agent) {
         // If there is an agent with the same name, but a different ID.
     }
 
-    if ($direccion_agente !== $address_list && (bool) $unique_ip === true && $direccion_agente != '') {
-        $sql = 'SELECT direccion FROM tagente WHERE direccion = "'.$direccion_agente.'"';
-        $exists_ip  = db_get_row_sql($sql);
-    }
-
     $old_group = agents_get_agent_group($id_agente);
     if ($grupo <= 0) {
         ui_print_error_message(__('The group id %d is incorrect.', $grupo));
     } else if ($old_group !== $grupo && group_allow_more_agents($grupo, true, 'update') === false) {
         ui_print_error_message(__('Agent cannot be updated due to the maximum agent limit for this group'));
-    } else if ($exists_ip) {
-        ui_print_error_message(__('Duplicate main IP address'));
     } else {
         // If different IP is specified than previous, add the IP.
         if ($direccion_agente != ''
diff --git a/pandora_console/include/ajax/agent.php b/pandora_console/include/ajax/agent.php
index 65dcd96aef..b03a9e5b40 100644
--- a/pandora_console/include/ajax/agent.php
+++ b/pandora_console/include/ajax/agent.php
@@ -39,6 +39,7 @@ $get_agent_filters = get_parameter('get_agent_filters', 0);
 $save_agent_filter = get_parameter('save_agent_filter', 0);
 $update_agent_filter = get_parameter('update_agent_filter', 0);
 $delete_agent_filter = get_parameter('delete_agent_filter', 0);
+$check_unique_ip = (bool) get_parameter('check_unique_ip', 0);
 
 if (https_is_running()) {
     header('Content-type: application/json');
@@ -1020,4 +1021,29 @@ $(document).ready(function() {
     return;
 }
 
+if ($check_unique_ip === true) {
+    $direccion_agente = (string) get_parameter_post('direccion', '');
+    $ip_all = get_parameter_post('ip_all', '');
+
+    if (empty($direccion_agente) === true) {
+        echo json_encode(['success' => false, 'message' => __('Please enter an IP address.')]);
+        return;
+    }
+
+    $sql = 'SELECT direccion FROM tagente WHERE direccion = "'.$direccion_agente.'"';
+    $exists_ip  = db_get_row_sql($sql);
+
+    if ($exists_ip !== false) {
+        if (is_array($ip_all) === true && in_array($direccion_agente, $ip_all) === true) {
+            echo json_encode(['success' => true, 'message' => __('Success! but this IP is already in the list.')]);
+        } else {
+            echo json_encode(['success' => false, 'message' => __('This IP is already being used'), 'exist_ip' => true]);
+        }
+    } else {
+        echo json_encode(['success' => true, 'message' => __('Success! this IP is available to be used.')]);
+    }
+
+    return;
+}
+
 return;
diff --git a/pandora_console/include/styles/pandora.css b/pandora_console/include/styles/pandora.css
index 94d337bdbe..78425214ec 100644
--- a/pandora_console/include/styles/pandora.css
+++ b/pandora_console/include/styles/pandora.css
@@ -481,6 +481,11 @@ select:-internal-list-box {
   max-width: 120px;
 }
 
+.w130px {
+  width: 130px;
+  max-width: 130px;
+}
+
 .w200px {
   width: 200px;
   max-width: 200px;
@@ -598,6 +603,10 @@ select:-internal-list-box {
   min-width: 120px;
 }
 
+.mw130px {
+  min-width: 130px;
+}
+
 .mw180px {
   min-width: 180px;
 }

From 65a0b4f22aeb03bbfa7d8d21508b16a40ac5aaaa Mon Sep 17 00:00:00 2001
From: "felix.suarez" <felix.suarez@pandorafms.com>
Date: Fri, 29 Dec 2023 09:47:25 -0600
Subject: [PATCH 082/231] Add ff options

---
 pandora_agents/unix/pandora_agent | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/pandora_agents/unix/pandora_agent b/pandora_agents/unix/pandora_agent
index 97ea0fd521..abc2367145 100755
--- a/pandora_agents/unix/pandora_agent
+++ b/pandora_agents/unix/pandora_agent
@@ -4283,6 +4283,10 @@ sub init_module ($) {
 	$module->{'alert_template'} = undef;
 	$module->{'filter'} = undef;
 	$module->{'absoluteinterval'} = undef;
+	$module->{'each_ff'} = undef;
+	$module->{'min_ff_event_normal'} = undef;
+	$module->{'min_ff_event_warning'} = undef;
+	$module->{'min_ff_event_critical'} = undef;
 }
 
 ################################################################################

From 3044ef482383b40434a685b7481a4db123bfabde Mon Sep 17 00:00:00 2001
From: Daniel Cebrian <daniel.cebrian@pandorafms.com>
Date: Tue, 2 Jan 2024 10:26:36 +0100
Subject: [PATCH 083/231] #12419 fixed external url and changed size field

---
 pandora_console/godmode/users/configure_user.php  | 12 ++++--------
 pandora_console/godmode/users/user_management.php | 12 +-----------
 2 files changed, 5 insertions(+), 19 deletions(-)

diff --git a/pandora_console/godmode/users/configure_user.php b/pandora_console/godmode/users/configure_user.php
index 83e54f24c5..7da3069e5a 100644
--- a/pandora_console/godmode/users/configure_user.php
+++ b/pandora_console/godmode/users/configure_user.php
@@ -424,10 +424,8 @@ if ($create_user === true) {
         $values['data_section'] = $dashboard;
     } else if (io_safe_output($values['section']) === HOME_SCREEN_VISUAL_CONSOLE) {
         $values['data_section'] = $visual_console;
-    } else if ($values['section'] === HOME_SCREEN_OTHER) {
-        $values['data_section'] = get_parameter('data_section_other');
-    } else if (io_safe_output($values['section']) === HOME_SCREEN_EXTERNAL_LINK) {
-        $values['data_section'] = get_parameter('data_section_external');
+    } else if ($values['section'] === HOME_SCREEN_OTHER || io_safe_output($values['section']) === HOME_SCREEN_EXTERNAL_LINK) {
+        $values['data_section'] = get_parameter('data_section');
     }
 
     // $values['section'] = $homeScreenValues[$values['section']];
@@ -724,10 +722,8 @@ if ($update_user) {
         $values['data_section'] = $dashboard;
     } else if (io_safe_output($values['section']) === HOME_SCREEN_VISUAL_CONSOLE) {
         $values['data_section'] = $visual_console;
-    } else if ($values['section'] === HOME_SCREEN_OTHER) {
-        $values['data_section'] = get_parameter('data_section_other');
-    } else if (io_safe_output($values['section']) === HOME_SCREEN_EXTERNAL_LINK) {
-        $values['data_section'] = get_parameter('data_section_external');
+    } else if ($values['section'] === HOME_SCREEN_OTHER || io_safe_output($values['section']) === HOME_SCREEN_EXTERNAL_LINK) {
+        $values['data_section'] = get_parameter('data_section');
     }
 
     // $values['section'] = $homeScreenValues[$values['section']];
diff --git a/pandora_console/godmode/users/user_management.php b/pandora_console/godmode/users/user_management.php
index b1212c11ec..afb5a8b1f0 100644
--- a/pandora_console/godmode/users/user_management.php
+++ b/pandora_console/godmode/users/user_management.php
@@ -84,8 +84,7 @@ $customHomeScreenAddition[HOME_SCREEN_DASHBOARD] = html_print_select(
 // Home screen. Visual consoles.
 $customHomeScreenAddition[HOME_SCREEN_VISUAL_CONSOLE] = html_print_select($layouts_aux, 'visual_console', $user_info['data_section'], '', '', '', true, false, true, 'w100p', false, 'width: 100%');
 // Home screen. External link and Other.
-$customHomeScreenAddition[HOME_SCREEN_EXTERNAL_LINK] = html_print_input_text('data_section_external', $user_info['data_section'], '', 60, 255, true);
-$customHomeScreenAddition[HOME_SCREEN_OTHER] = html_print_input_text('data_section_other', $user_info['data_section'], '', 60, 255, true);
+$customHomeScreenAddition[HOME_SCREEN_EXTERNAL_LINK] = html_print_input_text('data_section', $user_info['data_section'], '', 60, 400, true);
 
 $layouts = visual_map_get_user_layouts($config['id_user'], true);
 $layouts_aux = [];
@@ -112,15 +111,6 @@ $customHomeScreenAddition[HOME_SCREEN_VISUAL_CONSOLE] = html_print_select(
     false,
     'width: 100%'
 );
-// Home screen. External link and Other.
-$customHomeScreenAddition[HOME_SCREEN_EXTERNAL_LINK] = html_print_input_text(
-    'data_section',
-    $user_info['data_section'],
-    '',
-    60,
-    255,
-    true
-);
 $customHomeScreenDataField = '';
 foreach ($customHomeScreenAddition as $key => $customField) {
     $customHomeScreenDataField .= html_print_div(

From 70f213811ec045593b5d8c60500233137ed19b68 Mon Sep 17 00:00:00 2001
From: Daniel Cebrian <daniel.cebrian@pandorafms.com>
Date: Tue, 2 Jan 2024 11:18:53 +0100
Subject: [PATCH 084/231] #12716 fixed permission in monitor detail

---
 .../operation/agentes/status_monitor.php      | 27 ++++++++++---------
 1 file changed, 14 insertions(+), 13 deletions(-)

diff --git a/pandora_console/operation/agentes/status_monitor.php b/pandora_console/operation/agentes/status_monitor.php
index cbce3755ad..9978e94715 100644
--- a/pandora_console/operation/agentes/status_monitor.php
+++ b/pandora_console/operation/agentes/status_monitor.php
@@ -1061,19 +1061,20 @@ $buttons .= html_print_button(
     ],
     true
 );
-
-$buttons .= html_print_button(
-    __('Manage filter'),
-    'save-filter',
-    false,
-    '',
-    [
-        'icon'  => 'wand',
-        'mode'  => 'mini secondary',
-        'class' => 'float-left margin-right-2 sub wand',
-    ],
-    true
-);
+if (check_acl($config['id_user'], 0, 'AW')) {
+    $buttons .= html_print_button(
+        __('Manage filter'),
+        'save-filter',
+        false,
+        '',
+        [
+            'icon'  => 'wand',
+            'mode'  => 'mini secondary',
+            'class' => 'float-left margin-right-2 sub wand',
+        ],
+        true
+    );
+}
 
 $filters .= html_print_div(
     [

From 110d7f48421976c261bd894e3a975f52fa62fac2 Mon Sep 17 00:00:00 2001
From: Daniel Cebrian <daniel.cebrian@pandorafms.com>
Date: Tue, 2 Jan 2024 12:57:02 +0100
Subject: [PATCH 085/231] #12323 added netflow interval select

---
 pandora_console/godmode/setup/setup_netflow.php | 17 +++++++++++++++++
 pandora_console/include/functions_config.php    |  8 ++++++++
 pandora_console/pandoradb_data.sql              |  2 +-
 pandora_server/lib/PandoraFMS/Config.pm         |  2 +-
 4 files changed, 27 insertions(+), 2 deletions(-)

diff --git a/pandora_console/godmode/setup/setup_netflow.php b/pandora_console/godmode/setup/setup_netflow.php
index 9e6f6ee180..07db7327a5 100644
--- a/pandora_console/godmode/setup/setup_netflow.php
+++ b/pandora_console/godmode/setup/setup_netflow.php
@@ -83,6 +83,23 @@ $table->data[3][] = html_print_label_input_block(
     html_print_checkbox_switch_extended('netflow_get_ip_hostname', 1, $config['netflow_get_ip_hostname'], false, $onclick, '', true)
 );
 
+$table->data[4][] = html_print_label_input_block(
+    __('Netflow interval').ui_print_help_tip(__('It is necessary to restart the server if the value is changed.'), true),
+    html_print_select(
+        [
+            '600'  => __('10 min'),
+            '1800' => __('30 min'),
+            '3600' => __('60 min'),
+        ],
+        'netflow_interval',
+        $config['netflow_interval'],
+        '',
+        '',
+        0,
+        true
+    )
+);
+
 $table->data[4][] = html_print_label_input_block(
     __('Enable Sflow'),
     html_print_checkbox_switch_extended(
diff --git a/pandora_console/include/functions_config.php b/pandora_console/include/functions_config.php
index 9eb19be28d..dc7bb103db 100644
--- a/pandora_console/include/functions_config.php
+++ b/pandora_console/include/functions_config.php
@@ -1624,6 +1624,10 @@ function config_update_config()
                         $error_update[] = __('Netflow max lifetime');
                     }
 
+                    if (config_update_value('netflow_interval', (int) get_parameter('netflow_interval'), true) === false) {
+                        $error_update[] = __('Netflow interval');
+                    }
+
                     if (config_update_value('netflow_get_ip_hostname', (int) get_parameter('netflow_get_ip_hostname'), true) === false) {
                         $error_update[] = __('Name resolution for IP address');
                     }
@@ -3060,6 +3064,10 @@ function config_process_config()
         config_update_value('netflow_max_lifetime', '5');
     }
 
+    if (!isset($config['netflow_interval'])) {
+        config_update_value('netflow_interval', 1800);
+    }
+
     if (!isset($config['sflow_interval'])) {
         config_update_value('sflow_interval', SECONDS_10MINUTES);
     }
diff --git a/pandora_console/pandoradb_data.sql b/pandora_console/pandoradb_data.sql
index a7df8d9764..25818b1f3e 100644
--- a/pandora_console/pandoradb_data.sql
+++ b/pandora_console/pandoradb_data.sql
@@ -91,7 +91,7 @@ INSERT INTO `tconfig` (`token`, `value`) VALUES
 ('sound_alert', 'include/sounds/air_shock_alarm.wav'),
 ('sound_critical', 'include/sounds/Star_Trek_emergency_simulation.wav'),
 ('sound_warning', 'include/sounds/negativebeep.wav'),
-('netflow_interval', '3600'),
+('netflow_interval', '1800'),
 ('netflow_daemon', '/usr/bin/nfcapd'),
 ('netflow_nfdump', '/usr/bin/nfdump'),
 ('netflow_max_resolution', '50'),
diff --git a/pandora_server/lib/PandoraFMS/Config.pm b/pandora_server/lib/PandoraFMS/Config.pm
index 87c32de026..ee98db9627 100644
--- a/pandora_server/lib/PandoraFMS/Config.pm
+++ b/pandora_server/lib/PandoraFMS/Config.pm
@@ -140,7 +140,7 @@ sub pandora_get_sharedconfig ($$) {
 	# Netflow configuration options
 	$pa_config->{"activate_netflow"} = pandora_get_tconfig_token ($dbh, 'activate_netflow', 0);
 	$pa_config->{"netflow_path"} = pandora_get_tconfig_token ($dbh, 'netflow_path', '/var/spool/pandora/data_in/netflow');
-	$pa_config->{"netflow_interval"} = pandora_get_tconfig_token ($dbh, 'netflow_interval', 3600);
+	$pa_config->{"netflow_interval"} = pandora_get_tconfig_token ($dbh, 'netflow_interval', 1800);
 	$pa_config->{"netflow_daemon"} = pandora_get_tconfig_token ($dbh, 'netflow_daemon', '/usr/bin/nfcapd');
 
 	# Sflow configuration options

From cb29cdb764e35f900ed69171410ad2d1fdb7c0fb Mon Sep 17 00:00:00 2001
From: Daniel Maya <daniel.maya@pandorafms.com>
Date: Wed, 3 Jan 2024 11:32:41 +0100
Subject: [PATCH 086/231] #12624 change of style in dialog

---
 .../include/styles/js/jquery-ui_custom.css    | 25 +++++++++++--------
 .../include/styles/tips_window.css            |  8 +++---
 2 files changed, 19 insertions(+), 14 deletions(-)

diff --git a/pandora_console/include/styles/js/jquery-ui_custom.css b/pandora_console/include/styles/js/jquery-ui_custom.css
index 3c9104cba6..1c68f9783e 100644
--- a/pandora_console/include/styles/js/jquery-ui_custom.css
+++ b/pandora_console/include/styles/js/jquery-ui_custom.css
@@ -9,16 +9,19 @@
 }
 
 .ui-dialog .ui-dialog-titlebar {
-  background-color: transparent;
+  background: linear-gradient(to right, #161628, #1b6a66);
   border-radius: 0;
   margin: 0;
   display: inherit;
   text-align: left;
-  padding: 0.4em 33px 0.4em 12px;
+  padding: 1.2em 33px 1.2em 12px;
   height: 30px;
   position: relative;
   overflow: hidden;
   text-overflow: ellipsis;
+  color: #fff;
+  border-top-left-radius: 10px !important;
+  border-top-right-radius: 10px !important;
 }
 
 /*center ui dialog center*/
@@ -35,14 +38,14 @@
   color: #111;
 }
 .ui-dialog .ui-dialog-title {
-  color: rgb(51, 51, 51);
+  color: #fff;
   white-space: nowrap;
   width: 100%;
   overflow: hidden;
   text-overflow: ellipsis;
   position: relative;
-  font-size: 11pt;
-  top: 2px;
+  font-size: 13pt;
+  /* top: 2px; */
 }
 
 .ui-dialog .ui-dialog-titlebar-minimize {
@@ -214,7 +217,7 @@ a.ui-state-default > span:hover {
   height: fit-content !important;
 }
 .ui-dialog .ui-widget-header {
-  margin: 3px 3px 0px 3px;
+  /* margin: 3px 3px 0px 3px; */
 }
 .ui_tpicker_hour,
 .ui_tpicker_minute,
@@ -243,10 +246,10 @@ a.ui-state-default > span:hover {
   border-radius: 16px;
 }
 .ui-dialog {
-  border-top-left-radius: 16px !important;
-  border-top-right-radius: 16px !important;
-  border-bottom-left-radius: 16px !important;
-  border-bottom-right-radius: 16px !important;
+  border-top-left-radius: 10px !important;
+  border-top-right-radius: 10px !important;
+  border-bottom-left-radius: 10px !important;
+  border-bottom-right-radius: 10px !important;
   box-shadow: 0 10px 6px 0 rgb(0 0 0 / 13%);
   border: 1px solid #e5e9ed;
   padding: 0;
@@ -266,7 +269,7 @@ a.ui-state-default > span:hover {
 }
 .ui-button.ui-corner-all.ui-widget.ui-button-icon-only.ui-dialog-titlebar-close,
 .ui-button.ui-corner-all.ui-widget.ui-button-icon-only.ui-dialog-titlebar-close:hover {
-  background-color: rgb(51, 51, 51);
+  background-color: #fff;
   mask: url(../../../images/close@svg.svg) no-repeat right / contain;
   -webkit-mask: url(../../../images/close@svg.svg) no-repeat right / contain;
 }
diff --git a/pandora_console/include/styles/tips_window.css b/pandora_console/include/styles/tips_window.css
index 53906401a8..5c6114f92a 100644
--- a/pandora_console/include/styles/tips_window.css
+++ b/pandora_console/include/styles/tips_window.css
@@ -23,12 +23,14 @@
   justify-content: space-between;
   height: fit-content !important;
   background-color: white;
-  color: #161628;
-  border-top-left-radius: 25px !important;
-  border-top-right-radius: 25px !important;
+  color: #fff;
+  border-top-left-radius: 10px !important;
+  border-top-right-radius: 10px !important;
 }
 .tips_header .title {
   font-size: 15px;
+  color: #fff;
+  padding: 1.2em 33px 1.2em 12px !important;
 }
 .description {
   padding: 0px 20px 20px 20px;

From 22baa453870587aa349c33dff075037814a1a2bd Mon Sep 17 00:00:00 2001
From: Daniel Cebrian <daniel.cebrian@pandorafms.com>
Date: Wed, 3 Jan 2024 11:39:15 +0100
Subject: [PATCH 087/231] #12537 new icons for notifications

---
 pandora_console/extras/mr/68.sql              |   5 +
 .../images/notification/congrats.svg          |  21 +
 .../images/notification/disable.svg           |  18 +
 pandora_console/images/notification/error.svg |  21 +
 .../images/notification/favorite.svg          |  21 +
 .../images/notification/headsup.svg           |  21 +
 .../images/notification/information.svg       |  17 +
 .../images/notification/popular.svg           |  18 +
 .../images/notification/question.svg          |  18 +
 .../include/class/ConsoleSupervisor.php       | 412 ++++++++++--------
 .../include/functions_notifications.php       |   9 +-
 pandora_console/include/styles/pandora.css    |   6 +-
 pandora_console/pandoradb.sql                 |   1 +
 13 files changed, 411 insertions(+), 177 deletions(-)
 create mode 100644 pandora_console/extras/mr/68.sql
 create mode 100644 pandora_console/images/notification/congrats.svg
 create mode 100644 pandora_console/images/notification/disable.svg
 create mode 100644 pandora_console/images/notification/error.svg
 create mode 100644 pandora_console/images/notification/favorite.svg
 create mode 100644 pandora_console/images/notification/headsup.svg
 create mode 100644 pandora_console/images/notification/information.svg
 create mode 100644 pandora_console/images/notification/popular.svg
 create mode 100644 pandora_console/images/notification/question.svg

diff --git a/pandora_console/extras/mr/68.sql b/pandora_console/extras/mr/68.sql
new file mode 100644
index 0000000000..efa1dd97ec
--- /dev/null
+++ b/pandora_console/extras/mr/68.sql
@@ -0,0 +1,5 @@
+START TRANSACTION;
+
+ALTER TABLE `tmensajes` ADD COLUMN `icon_notification` VARCHAR(250) NULL DEFAULT NULL AFTER `url`;
+
+COMMIT;
\ No newline at end of file
diff --git a/pandora_console/images/notification/congrats.svg b/pandora_console/images/notification/congrats.svg
new file mode 100644
index 0000000000..2f744df78d
--- /dev/null
+++ b/pandora_console/images/notification/congrats.svg
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="40px" height="40px" viewBox="0 0 40 40" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <title>Icons/Dark/40/Alert icon congrats</title>
+    <defs>
+        <linearGradient x1="100%" y1="0%" x2="0%" y2="50%" id="linearGradient-1">
+            <stop stop-color="#82B92E" offset="0%"></stop>
+            <stop stop-color="#2EB9A2" offset="100%"></stop>
+        </linearGradient>
+        <path d="M0,14.605519 L0,5.39448104 C0,1.5951272 4.59496118,0 10,0 C15.4050388,0 20,1.5951272 20,5.39448104 L20,14.605519 C20,18.4048728 15.4050388,20 10,20 C4.59496118,20 0,18.4048728 0,14.605519 Z" id="path-2"></path>
+    </defs>
+    <g id="Icons/Dark/40/Alert-icon-congrats" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <path d="M0,29.2110379 L0,10.7889621 C0,3.19025441 9.18992236,0 20,0 C30.8100776,0 40,3.19025441 40,10.7889621 L40,29.2110379 C40,36.8097456 30.8100776,40 20,40 C9.18992236,40 0,36.8097456 0,29.2110379 Z" id="Path-3" fill="#DBEFBD"></path>
+        <g id="Status-check" transform="translate(10, 10)">
+            <mask id="mask-3" fill="white">
+                <use xlink:href="#path-2"></use>
+            </mask>
+            <use id="Mask" fill="url(#linearGradient-1)" xlink:href="#path-2"></use>
+            <path d="M18.7598238,0.82381606 C19.3047414,0.278898443 20.1882274,0.278898443 20.733145,0.82381606 C21.2562659,1.34693697 21.2771907,2.18208252 20.7959195,2.7301654 L20.733145,2.79713731 L9.36847673,14.1618056 C8.84535581,14.6849265 8.01021026,14.7058513 7.46212738,14.2245801 L7.39515548,14.1618056 L4.74907546,11.5157256 C4.20415784,10.9708079 4.20415784,10.0873219 4.74907546,9.54240432 C5.27219637,9.0192834 6.10734192,8.99835857 6.6554248,9.47962981 L6.72239671,9.54240432 L8.38186047,11.2018605 L18.7598238,0.82381606 Z" id="Path" fill="#FFFFFF" fill-rule="nonzero" mask="url(#mask-3)"></path>
+        </g>
+    </g>
+</svg>
\ No newline at end of file
diff --git a/pandora_console/images/notification/disable.svg b/pandora_console/images/notification/disable.svg
new file mode 100644
index 0000000000..ac34ab01b3
--- /dev/null
+++ b/pandora_console/images/notification/disable.svg
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="40px" height="40px" viewBox="0 0 40 40" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <title>Icons/Dark/40/Alert icon disable</title>
+    <defs>
+        <linearGradient x1="100%" y1="0%" x2="0%" y2="50%" id="linearGradient-1">
+            <stop stop-color="#666666" offset="0%"></stop>
+            <stop stop-color="#999999" offset="100%"></stop>
+        </linearGradient>
+    </defs>
+    <g id="Icons/Dark/40/Alert-icon-disable" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <path d="M0,29.2110379 L0,10.7889621 C0,3.19025441 9.18992236,0 20,0 C30.8100776,0 40,3.19025441 40,10.7889621 L40,29.2110379 C40,36.8097456 30.8100776,40 20,40 C9.18992236,40 0,36.8097456 0,29.2110379 Z" id="Path-3" fill="#E9DFF7"></path>
+        <g id="Group">
+            <path d="M0,29.2110379 L0,10.7889621 C0,3.19025441 9.18992236,0 20,0 C30.8100776,0 40,3.19025441 40,10.7889621 L40,29.2110379 C40,36.8097456 30.8100776,40 20,40 C9.18992236,40 0,36.8097456 0,29.2110379 Z" id="Path-3" fill="#EAEAEA"></path>
+            <path d="M10,24.605519 L10,15.394481 C10,11.5951272 14.5949612,10 20,10 C25.4050388,10 30,11.5951272 30,15.394481 L30,24.605519 C30,28.4048728 25.4050388,30 20,30 C14.5949612,30 10,28.4048728 10,24.605519 Z" id="Path-3" fill="url(#linearGradient-1)"></path>
+        </g>
+        <rect id="Rectangle" fill="#FFFFFF" x="14" y="19" width="12" height="3" rx="1"></rect>
+    </g>
+</svg>
\ No newline at end of file
diff --git a/pandora_console/images/notification/error.svg b/pandora_console/images/notification/error.svg
new file mode 100644
index 0000000000..05b07ebfb9
--- /dev/null
+++ b/pandora_console/images/notification/error.svg
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="40px" height="40px" viewBox="0 0 40 40" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <title>Icons/Dark/40/Alert icon error</title>
+    <defs>
+        <linearGradient x1="100%" y1="0%" x2="0%" y2="50%" id="linearGradient-1">
+            <stop stop-color="#F72222" offset="0%"></stop>
+            <stop stop-color="#E12D81" offset="100%"></stop>
+        </linearGradient>
+        <path d="M0,14.605519 L0,5.39448104 C0,1.5951272 4.59496118,0 10,0 C15.4050388,0 20,1.5951272 20,5.39448104 L20,14.605519 C20,18.4048728 15.4050388,20 10,20 C4.59496118,20 0,18.4048728 0,14.605519 Z" id="path-2"></path>
+    </defs>
+    <g id="Icons/Dark/40/Alert-icon-error" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <path d="M0,29.2110379 L0,10.7889621 C0,3.19025441 9.18992236,0 20,0 C30.8100776,0 40,3.19025441 40,10.7889621 L40,29.2110379 C40,36.8097456 30.8100776,40 20,40 C9.18992236,40 0,36.8097456 0,29.2110379 Z" id="Path-3" fill="#FBDADA"></path>
+        <g id="Path" transform="translate(10, 10)">
+            <mask id="mask-3" fill="white">
+                <use xlink:href="#path-2"></use>
+            </mask>
+            <use id="Mask" fill="url(#linearGradient-1)" xlink:href="#path-2"></use>
+            <path d="M8.29983345,6.3436419 L8.36636552,6.40600414 L10.0000673,8.03953994 L11.6336345,6.40600414 C12.1749733,5.86466529 13.052657,5.86466529 13.5939959,6.40600414 C14.1136812,6.92568943 14.1344686,7.75535013 13.6563581,8.29983345 L13.5939959,8.36636552 L11.9605948,10.0000673 L13.5939959,11.6336345 C14.1353347,12.1749733 14.1353347,13.052657 13.5939959,13.5939959 C13.0743106,14.1136812 12.2446499,14.1344686 11.7001665,13.6563581 L11.6336345,13.5939959 L10.0000673,11.9605948 L8.36636552,13.5939959 C7.82502667,14.1353347 6.94734298,14.1353347 6.40600414,13.5939959 C5.88631884,13.0743106 5.86553143,12.2446499 6.3436419,11.7001665 L6.40600414,11.6336345 L8.03953994,10.0000673 L6.40600414,8.36636552 C5.86466529,7.82502667 5.86466529,6.94734298 6.40600414,6.40600414 C6.90403588,5.9079724 7.68674989,5.86812986 8.23033079,6.28647652 L8.29983345,6.3436419 Z" id="Path-3" fill="#FFFFFF" fill-rule="nonzero" mask="url(#mask-3)"></path>
+        </g>
+    </g>
+</svg>
\ No newline at end of file
diff --git a/pandora_console/images/notification/favorite.svg b/pandora_console/images/notification/favorite.svg
new file mode 100644
index 0000000000..eff171b67f
--- /dev/null
+++ b/pandora_console/images/notification/favorite.svg
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="40px" height="40px" viewBox="0 0 40 40" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <title>Icons/Dark/40/Alert icon favorite</title>
+    <defs>
+        <linearGradient x1="100%" y1="0%" x2="0%" y2="50%" id="linearGradient-1">
+            <stop stop-color="#814CCB" offset="0%"></stop>
+            <stop stop-color="#B66BD9" offset="100%"></stop>
+        </linearGradient>
+        <path d="M0,14.605519 L0,5.39448104 C0,1.5951272 4.59496118,0 10,0 C15.4050388,0 20,1.5951272 20,5.39448104 L20,14.605519 C20,18.4048728 15.4050388,20 10,20 C4.59496118,20 0,18.4048728 0,14.605519 Z" id="path-2"></path>
+    </defs>
+    <g id="Icons/Dark/40/Alert-icon-favorite" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <path d="M0,29.2110379 L0,10.7889621 C0,3.19025441 9.18992236,0 20,0 C30.8100776,0 40,3.19025441 40,10.7889621 L40,29.2110379 C40,36.8097456 30.8100776,40 20,40 C9.18992236,40 0,36.8097456 0,29.2110379 Z" id="Path-3" fill="#E9DFF7"></path>
+        <g id="Status-check" transform="translate(10, 10)">
+            <mask id="mask-3" fill="white">
+                <use xlink:href="#path-2"></use>
+            </mask>
+            <use id="Mask" fill="url(#linearGradient-1)" xlink:href="#path-2"></use>
+            <path d="M14.2568899,6.39303483 C13.7790757,5.7960199 13.0840733,5.44776119 12.3890709,5.39800995 L12.3021956,5.39800995 C11.4334425,5.39800995 10.6515648,5.89552239 10.130313,6.69154229 C9.65249878,5.64676617 8.74030808,5 7.74124208,5 C7.74124208,5 7.69780443,5 7.69780443,5 C6.95936434,5 6.22092425,5.34825871 5.74311008,5.99502488 C5.22185825,6.5920398 4.96123233,7.43781095 5.00466999,8.28358209 C5.09154529,9.7761194 5.74311008,10.5223881 6.35123721,11.1691542 C7.04623964,11.9651741 7.69780443,12.6119403 7.48061617,14.5024876 C7.48061617,14.800995 7.61092912,15 7.82811739,15 C7.91499269,15 7.95843034,15 8.0887433,14.9502488 C12.6062591,13.358209 14.99533,11.2189055 14.99533,8.83084577 L14.99533,8.78109453 C15.0387677,7.8358209 14.7781418,7.039801 14.2568899,6.39303483 Z M7.82811739,14.7014925 L7.82811739,14.4527363 C7.82811739,14.4527363 7.82811739,14.4527363 7.82811739,14.4527363 L7.82811739,14.7014925 Z" id="Shape" fill="#FFFFFF" fill-rule="nonzero" mask="url(#mask-3)"></path>
+        </g>
+    </g>
+</svg>
\ No newline at end of file
diff --git a/pandora_console/images/notification/headsup.svg b/pandora_console/images/notification/headsup.svg
new file mode 100644
index 0000000000..57e26bc4d9
--- /dev/null
+++ b/pandora_console/images/notification/headsup.svg
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="40px" height="40px" viewBox="0 0 40 40" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <title>Icons/Dark/40/Alert icon heads up</title>
+    <defs>
+        <linearGradient x1="100%" y1="0%" x2="0%" y2="50%" id="linearGradient-1">
+            <stop stop-color="#FAD961" offset="0%"></stop>
+            <stop stop-color="#F5A623" offset="100%"></stop>
+        </linearGradient>
+        <path d="M0,14.605519 L0,5.39448104 C0,1.5951272 4.59496118,0 10,0 C15.4050388,0 20,1.5951272 20,5.39448104 L20,14.605519 C20,18.4048728 15.4050388,20 10,20 C4.59496118,20 0,18.4048728 0,14.605519 Z" id="path-2"></path>
+    </defs>
+    <g id="Icons/Dark/40/Alert-icon-heads-up" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <path d="M0,29.2110379 L0,10.7889621 C0,3.19025441 9.18992236,0 20,0 C30.8100776,0 40,3.19025441 40,10.7889621 L40,29.2110379 C40,36.8097456 30.8100776,40 20,40 C9.18992236,40 0,36.8097456 0,29.2110379 Z" id="Path-3" fill="#FFEDCF"></path>
+        <g id="Status-check" transform="translate(10, 10)">
+            <mask id="mask-3" fill="white">
+                <use xlink:href="#path-2"></use>
+            </mask>
+            <use id="Mask" fill="url(#linearGradient-1)" xlink:href="#path-2"></use>
+            <path d="M8.00083253,4.5536125 L8.34039759,10.5036125 C8.3562818,10.7820375 8.59715418,11 8.88888351,11 L11.1111166,11 C11.402846,11 11.6437183,10.7820375 11.6596026,10.5036125 L11.9991676,4.5536125 C12.0163335,4.252875 11.7658025,4 11.4506817,4 L8.54927267,4 C8.2341519,4 7.98366659,4.252875 8.00083253,4.5536125 L8.00083253,4.5536125 Z M10,12 C8.89543478,12 8,12.8954348 8,14 C8,15.1045652 8.89543478,16 10,16 C11.1045652,16 12,15.1045652 12,14 C12,12.8954348 11.1045652,12 10,12 Z" id="Path-4" fill="#FFFFFF" fill-rule="nonzero" mask="url(#mask-3)"></path>
+        </g>
+    </g>
+</svg>
\ No newline at end of file
diff --git a/pandora_console/images/notification/information.svg b/pandora_console/images/notification/information.svg
new file mode 100644
index 0000000000..11319a4bb5
--- /dev/null
+++ b/pandora_console/images/notification/information.svg
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="40px" height="40px" viewBox="0 0 40 40" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <title>Icons/Dark/40/Alert icon information</title>
+    <defs>
+        <linearGradient x1="0%" y1="50%" x2="100%" y2="0%" id="linearGradient-1">
+            <stop stop-color="#0086FF" offset="0%"></stop>
+            <stop stop-color="#004EFF" offset="100%"></stop>
+        </linearGradient>
+    </defs>
+    <g id="Icons/Dark/40/Alert-icon-information" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="Group">
+            <path d="M0,29.2110379 L0,10.7889621 C0,3.19025441 9.18992236,0 20,0 C30.8100776,0 40,3.19025441 40,10.7889621 L40,29.2110379 C40,36.8097456 30.8100776,40 20,40 C9.18992236,40 0,36.8097456 0,29.2110379 Z" id="Path-3" fill="#D6E2FF"></path>
+            <path d="M10,24.605519 L10,15.394481 C10,11.5951272 14.5949612,10 20,10 C25.4050388,10 30,11.5951272 30,15.394481 L30,24.605519 C30,28.4048728 25.4050388,30 20,30 C14.5949612,30 10,28.4048728 10,24.605519 Z" id="Path-3" fill="url(#linearGradient-1)"></path>
+            <path d="M22.5713807,24.7563706 C22.5312282,24.8064951 21.5738418,26 19.9765248,26 C19.9125317,26 19.8472839,25.9986453 19.7832908,25.9945811 C19.1458697,25.9539397 18.618868,25.6491285 18.2963932,25.1356911 C17.9011419,24.5057481 17.847187,23.6278921 18.1445665,22.6633342 L18.6540015,21.0092259 C18.9363238,20.0839548 18.6665491,19.9362907 18.5209963,19.8577172 C18.4820985,19.8360417 18.420615,19.8238493 18.345329,19.8238493 C18.0303828,19.8238493 17.5962338,20.0243473 17.4569548,20.1029208 C17.3264591,20.1760755 17.1620848,20.1381434 17.0667225,20.0121548 C16.9751246,19.8834568 16.9776342,19.7046343 17.0755059,19.5813551 C17.1169132,19.5285212 18.163388,18.2334126 19.8648506,18.3431446 C20.4985074,18.3824313 21.0255091,18.6858877 21.3479839,19.1979704 C21.74449,19.8279134 21.7996997,20.7071242 21.5035749,21.6743915 L20.9941399,23.3284998 C20.7093081,24.2524162 20.9815923,24.401435 21.1271451,24.4800085 C21.1522405,24.4935557 21.2049406,24.511167 21.2990481,24.511167 C21.6177586,24.511167 22.0519076,24.310669 22.1924414,24.2334502 C22.3254466,24.1575861 22.4873114,24.1982276 22.5814189,24.3255709 C22.671762,24.4542689 22.6692525,24.6330914 22.5713807,24.7563706 Z M20.2693902,14 C21.2410593,14.0022763 22.0318205,14.7944306 22.0340961,15.7641368 C22.0340961,16.7349811 21.2433349,17.5271355 20.270528,17.5294118 C19.2988589,17.5271355 18.5069599,16.7349811 18.5046843,15.765275 C18.5046843,14.7921543 19.2965833,14 20.2693902,14 Z" id="Path-3" fill="#FFFFFF" fill-rule="nonzero"></path>
+        </g>
+    </g>
+</svg>
\ No newline at end of file
diff --git a/pandora_console/images/notification/popular.svg b/pandora_console/images/notification/popular.svg
new file mode 100644
index 0000000000..20b00a83ad
--- /dev/null
+++ b/pandora_console/images/notification/popular.svg
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="40px" height="40px" viewBox="0 0 40 40" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <title>Icons/Dark/40/Alert icon popular</title>
+    <defs>
+        <linearGradient x1="100%" y1="0%" x2="0%" y2="50%" id="linearGradient-1">
+            <stop stop-color="#E4EE3B" offset="0%"></stop>
+            <stop stop-color="#DFAA1E" offset="100%"></stop>
+        </linearGradient>
+    </defs>
+    <g id="Icons/Dark/40/Alert-icon-popular" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <path d="M0,29.2110379 L0,10.7889621 C0,3.19025441 9.18992236,0 20,0 C30.8100776,0 40,3.19025441 40,10.7889621 L40,29.2110379 C40,36.8097456 30.8100776,40 20,40 C9.18992236,40 0,36.8097456 0,29.2110379 Z" id="Path-3" fill="#E9DFF7"></path>
+        <g id="Group">
+            <path d="M0,29.2110379 L0,10.7889621 C0,3.19025441 9.18992236,0 20,0 C30.8100776,0 40,3.19025441 40,10.7889621 L40,29.2110379 C40,36.8097456 30.8100776,40 20,40 C9.18992236,40 0,36.8097456 0,29.2110379 Z" id="Path-3" fill="#FFFAB8"></path>
+            <path d="M10,24.605519 L10,15.394481 C10,11.5951272 14.5949612,10 20,10 C25.4050388,10 30,11.5951272 30,15.394481 L30,24.605519 C30,28.4048728 25.4050388,30 20,30 C14.5949612,30 10,28.4048728 10,24.605519 Z" id="Path-3" fill="url(#linearGradient-1)"></path>
+            <path d="M24.9626788,18.7571206 C24.8787507,18.5056935 24.6666091,18.3253374 24.4094678,18.2860519 L21.7991261,17.8949828 L20.6241331,15.4007119 C20.5073481,15.1535705 20.2684209,15 20.0002082,15 C19.7319955,15 19.4930684,15.1535705 19.3762834,15.4007119 L18.2184331,17.8860543 L15.5909487,18.2860519 C15.3338073,18.3253374 15.1220229,18.5056935 15.0377377,18.7571206 C14.9516667,19.0153333 15.0152378,19.2953317 15.2038081,19.4878305 L17.104154,21.432819 L16.6552281,24.1742313 C16.6105855,24.4481583 16.7212991,24.716371 16.9448692,24.87387 C17.1598679,25.0263691 17.4362949,25.041369 17.6662935,24.9145841 L19.9837798,23.620306 L22.334123,24.9145841 C22.5648359,25.041369 22.8405485,25.0256548 23.0555472,24.87387 C23.2791174,24.716371 23.3901881,24.4481583 23.3451884,24.1742313 L22.8955482,21.4292476 L24.7966084,19.4878305 C24.9851787,19.2953317 25.0487497,19.0153333 24.9626788,18.7571206 Z" id="XMLID_328_" fill="#FFFFFF" fill-rule="nonzero"></path>
+        </g>
+    </g>
+</svg>
\ No newline at end of file
diff --git a/pandora_console/images/notification/question.svg b/pandora_console/images/notification/question.svg
new file mode 100644
index 0000000000..5694e5d9b2
--- /dev/null
+++ b/pandora_console/images/notification/question.svg
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="40px" height="40px" viewBox="0 0 40 40" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <title>Icons/Dark/40/Alert icon question</title>
+    <defs>
+        <linearGradient x1="0%" y1="50%" x2="100%" y2="0%" id="linearGradient-1">
+            <stop stop-color="#3F5393" offset="0%"></stop>
+            <stop stop-color="#1F76B7" offset="100%"></stop>
+        </linearGradient>
+    </defs>
+    <g id="Icons/Dark/40/Alert-icon-question" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <path d="M0,29.2110379 L0,10.7889621 C0,3.19025441 9.18992236,0 20,0 C30.8100776,0 40,3.19025441 40,10.7889621 L40,29.2110379 C40,36.8097456 30.8100776,40 20,40 C9.18992236,40 0,36.8097456 0,29.2110379 Z" id="Path-3" fill="#E9DFF7"></path>
+        <g id="Group">
+            <path d="M0,29.2110379 L0,10.7889621 C0,3.19025441 9.18992236,0 20,0 C30.8100776,0 40,3.19025441 40,10.7889621 L40,29.2110379 C40,36.8097456 30.8100776,40 20,40 C9.18992236,40 0,36.8097456 0,29.2110379 Z" id="Path-3" fill="#E2E7F3"></path>
+            <path d="M10,24.605519 L10,15.394481 C10,11.5951272 14.5949612,10 20,10 C25.4050388,10 30,11.5951272 30,15.394481 L30,24.605519 C30,28.4048728 25.4050388,30 20,30 C14.5949612,30 10,28.4048728 10,24.605519 Z" id="Path-3" fill="url(#linearGradient-1)"></path>
+            <path d="M22.5458333,19.7352941 L20.6666667,20.9705882 L20.6666667,21.0588235 C20.6666667,21.6323529 20.2083333,22.1176471 19.6666667,22.1176471 C19.125,22.1176471 18.6666667,21.6323529 18.6666667,21.0588235 L18.6666667,20.3529412 C18.6666667,20 18.8333333,19.6470588 19.1666667,19.4264706 L21.5416667,17.9264706 C21.8333333,17.75 22,17.4411765 22,17.0882353 C22,16.5588235 21.5458333,16.1176471 21.0458333,16.1176471 L18.9166667,16.1176471 C18.3791667,16.1176471 18,16.5588235 18,17.0882353 C18,17.6617647 17.5416667,18.1470588 17,18.1470588 C16.4583333,18.1470588 16,17.6617647 16,17.0882353 C16,15.3676471 17.2916667,14 18.8791667,14 L21.0083333,14 C22.7083333,14 24,15.3676471 24,17.0882353 C24,18.1470588 23.4583333,19.1617647 22.5458333,19.7352941 Z M19.6666667,26 C18.9166667,26 18.3333333,25.3823529 18.3333333,24.5882353 C18.3333333,23.7941176 18.8791667,23.1764706 19.6666667,23.1764706 C20.3791667,23.1764706 21,23.7941176 21,24.5882353 C21,25.3823529 20.3791667,26 19.6666667,26 Z" id="Path-3" fill="#FFFFFF" fill-rule="nonzero"></path>
+        </g>
+    </g>
+</svg>
\ No newline at end of file
diff --git a/pandora_console/include/class/ConsoleSupervisor.php b/pandora_console/include/class/ConsoleSupervisor.php
index 92552242f3..b1fcd80d7f 100644
--- a/pandora_console/include/class/ConsoleSupervisor.php
+++ b/pandora_console/include/class/ConsoleSupervisor.php
@@ -58,6 +58,18 @@ class ConsoleSupervisor
      */
     public const MIN_SYNC_QUEUE_LENGTH = 200;
 
+    /**
+     * Icons for notifications.
+     */
+    public const ICON_CONGRATS = 'images/notification/congrats.svg';
+    public const ICON_DISABLE = 'images/notification/disable.svg';
+    public const ICON_ERROR = 'images/notification/error.svg';
+    public const ICON_FAVORITE = 'images/notification/favorite.svg';
+    public const ICON_HEADSUP = 'images/notification/headsup.svg';
+    public const ICON_INFORMATION = 'images/notification/information.svg';
+    public const ICON_POPULAR = 'images/notification/popular.svg';
+    public const ICON_QUESTION = 'images/notification/question.svg';
+
     /**
      * Show if console supervisor is enabled or not.
      *
@@ -666,14 +678,15 @@ class ConsoleSupervisor
 
                 $this->notify(
                     [
-                        'type'    => 'NOTIF.VARIABLES.PERFORMANCE.'.$variable,
-                        'title'   => __('Incorrect config value'),
-                        'message' => __(
+                        'type'              => 'NOTIF.VARIABLES.PERFORMANCE.'.$variable,
+                        'title'             => __('Incorrect config value'),
+                        'message'           => __(
                             $message,
                             $names[$variable],
                             $limit_value
                         ),
-                        'url'     => $url,
+                        'url'               => $url,
+                        'icon_notification' => self::ICON_HEADSUP,
                     ]
                 );
             }
@@ -710,12 +723,13 @@ class ConsoleSupervisor
                 db_process_sql_update('tconfig', ['value' => 0], ['token' => 'agentaccess']);
                 $this->notify(
                     [
-                        'type'    => 'NOTIF.ACCESSSTASTICS.PERFORMANCE',
-                        'title'   => __('Access statistics performance'),
-                        'message' => __(
+                        'type'              => 'NOTIF.ACCESSSTASTICS.PERFORMANCE',
+                        'title'             => __('Access statistics performance'),
+                        'message'           => __(
                             'Usage of agent access statistics IS NOT RECOMMENDED on systems with more than 200 agents due performance penalty'
                         ),
-                        'url'     => '__url__/index.php?sec=general&sec2=godmode/setup/setup&section=perf',
+                        'url'               => '__url__/index.php?sec=general&sec2=godmode/setup/setup&section=perf',
+                        'icon_notification' => self::ICON_HEADSUP,
                     ]
                 );
             } else {
@@ -960,6 +974,9 @@ class ConsoleSupervisor
         $notification['subject'] = io_safe_input($data['title']);
         $notification['subtype'] = $data['type'];
         $notification['url'] = io_safe_input($data['url']);
+        if (isset($data['icon_notification']) === true) {
+            $notification['icon_notification'] = $data['icon_notification'];
+        }
 
         $id = db_process_sql_insert('tmensajes', $notification);
 
@@ -1053,13 +1070,14 @@ class ConsoleSupervisor
             // Warn user if license is going to expire in 15 days or less.
             $this->notify(
                 [
-                    'type'    => 'NOTIF.LICENSE.EXPIRATION',
-                    'title'   => $title,
-                    'message' => __(
+                    'type'              => 'NOTIF.LICENSE.EXPIRATION',
+                    'title'             => $title,
+                    'message'           => __(
                         $msg,
                         $days_to_expiry
                     ),
-                    'url'     => '__url__/index.php?sec=gsetup&sec2=godmode/setup/license',
+                    'url'               => '__url__/index.php?sec=gsetup&sec2=godmode/setup/license',
+                    'icon_notification' => self::ICON_HEADSUP,
                 ]
             );
         } else if (($days_to_expiry <= 0) && ((is_user_admin($config['id_user'])) || (check_acl($config['id_user'], 0, 'PM')))) {
@@ -1074,10 +1092,11 @@ class ConsoleSupervisor
             // Warn user, license has expired.
             $this->notify(
                 [
-                    'type'    => 'NOTIF.LICENSE.EXPIRATION',
-                    'title'   => $title,
-                    'message' => $msg,
-                    'url'     => '__url__/index.php?sec=gsetup&sec2=godmode/setup/license',
+                    'type'              => 'NOTIF.LICENSE.EXPIRATION',
+                    'title'             => $title,
+                    'message'           => $msg,
+                    'url'               => '__url__/index.php?sec=gsetup&sec2=godmode/setup/license',
+                    'icon_notification' => self::ICON_HEADSUP,
                 ]
             );
             return false;
@@ -1148,13 +1167,14 @@ class ConsoleSupervisor
         if (is_writable($config['attachment_store']) !== true) {
             $this->notify(
                 [
-                    'type'    => 'NOTIF.WRITABLE.ATTACHMENT',
-                    'title'   => __('Attachment directory is not writable'),
-                    'message' => __(
+                    'type'              => 'NOTIF.WRITABLE.ATTACHMENT',
+                    'title'             => __('Attachment directory is not writable'),
+                    'message'           => __(
                         'Directory %s is not writable. Please, configure corresponding permissions.',
                         $config['attachment_store']
                     ),
-                    'url'     => '__url__/index.php?sec=general&sec2=godmode/setup/setup&section=general',
+                    'url'               => '__url__/index.php?sec=general&sec2=godmode/setup/setup&section=general',
+                    'icon_notification' => self::ICON_ERROR,
                 ]
             );
             return;
@@ -1204,13 +1224,14 @@ class ConsoleSupervisor
             if (is_readable($remote_config_dir) !== true) {
                 $this->notify(
                     [
-                        'type'    => 'NOTIF.PERMISSIONS.REMOTE_CONFIG',
-                        'title'   => __('Remote configuration directory is not readable'),
-                        'message' => __(
+                        'type'              => 'NOTIF.PERMISSIONS.REMOTE_CONFIG',
+                        'title'             => __('Remote configuration directory is not readable'),
+                        'message'           => __(
                             'Remote configuration directory %s is not readable. Please, adjust configuration.',
                             $remote_config_dir
                         ),
-                        'url'     => '__url__/index.php?sec=general&sec2=godmode/setup/setup&section=general',
+                        'url'               => '__url__/index.php?sec=general&sec2=godmode/setup/setup&section=general',
+                        'icon_notification' => self::ICON_ERROR,
                     ]
                 );
                 return;
@@ -1223,13 +1244,14 @@ class ConsoleSupervisor
             if (is_writable($remote_config_dir.'/conf') !== true) {
                 $this->notify(
                     [
-                        'type'    => 'NOTIF.PERMISSIONS.REMOTE_CONFIG.CONF',
-                        'title'   => __('Remote configuration directory is not writable'),
-                        'message' => __(
+                        'type'              => 'NOTIF.PERMISSIONS.REMOTE_CONFIG.CONF',
+                        'title'             => __('Remote configuration directory is not writable'),
+                        'message'           => __(
                             'Remote configuration directory %s is not writable. Please, adjust configuration.',
                             $remote_config_dir.'/conf'
                         ),
-                        'url'     => '__url__/index.php?sec=general&sec2=godmode/setup/setup&section=general',
+                        'url'               => '__url__/index.php?sec=general&sec2=godmode/setup/setup&section=general',
+                        'icon_notification' => self::ICON_ERROR,
                     ]
                 );
             } else {
@@ -1241,13 +1263,14 @@ class ConsoleSupervisor
             if (is_writable($remote_config_dir.'/collections') !== true) {
                 $this->notify(
                     [
-                        'type'    => 'NOTIF.PERMISSIONS.REMOTE_CONFIG.COLLECTIONS',
-                        'title'   => __('Remote collections directory is not writable'),
-                        'message' => __(
+                        'type'              => 'NOTIF.PERMISSIONS.REMOTE_CONFIG.COLLECTIONS',
+                        'title'             => __('Remote collections directory is not writable'),
+                        'message'           => __(
                             'Collections directory %s is not writable. Please, adjust configuration.',
                             $remote_config_dir.'/collections'
                         ),
-                        'url'     => '__url__/index.php?sec=general&sec2=godmode/setup/setup&section=general',
+                        'url'               => '__url__/index.php?sec=general&sec2=godmode/setup/setup&section=general',
+                        'icon_notification' => self::ICON_ERROR,
                     ]
                 );
             } else {
@@ -1259,13 +1282,14 @@ class ConsoleSupervisor
             if (is_writable($remote_config_dir.'/md5') !== true) {
                 $this->notify(
                     [
-                        'type'    => 'NOTIF.PERMISSIONS.REMOTE_CONFIG.MD5',
-                        'title'   => __('Remote md5 directory is not writable'),
-                        'message' => __(
+                        'type'              => 'NOTIF.PERMISSIONS.REMOTE_CONFIG.MD5',
+                        'title'             => __('Remote md5 directory is not writable'),
+                        'message'           => __(
                             'MD5 directory %s is not writable. Please, adjust configuration.',
                             $remote_config_dir.'/md5'
                         ),
-                        'url'     => '__url__/index.php?sec=general&sec2=godmode/setup/setup&section=general',
+                        'url'               => '__url__/index.php?sec=general&sec2=godmode/setup/setup&section=general',
+                        'icon_notification' => self::ICON_ERROR,
                     ]
                 );
             } else {
@@ -1289,14 +1313,15 @@ class ConsoleSupervisor
         if ($filecount > $MAX_FILES_DATA_IN) {
             $this->notify(
                 [
-                    'type'    => 'NOTIF.FILES.DATAIN',
-                    'title'   => __('There are too much files in spool').'.',
-                    'message' => __(
+                    'type'              => 'NOTIF.FILES.DATAIN',
+                    'title'             => __('There are too much files in spool').'.',
+                    'message'           => __(
                         'There are more than %d files in %s. Consider checking DataServer performance',
                         $MAX_FILES_DATA_IN,
                         $remote_config_dir
                     ),
-                    'url'     => '__url__/index.php?sec=general&sec2=godmode/setup/setup&section=perf',
+                    'url'               => '__url__/index.php?sec=general&sec2=godmode/setup/setup&section=perf',
+                    'icon_notification' => self::ICON_HEADSUP,
                 ]
             );
         } else {
@@ -1312,14 +1337,15 @@ class ConsoleSupervisor
         if ($filecount > $MAX_BADXML_FILES_DATA_IN) {
             $this->notify(
                 [
-                    'type'    => 'NOTIF.FILES.DATAIN.BADXML',
-                    'title'   => __('There are too many BADXML files in spool'),
-                    'message' => __(
+                    'type'              => 'NOTIF.FILES.DATAIN.BADXML',
+                    'title'             => __('There are too many BADXML files in spool'),
+                    'message'           => __(
                         'There are more than %d files in %s. Consider checking software agents.',
                         $MAX_BADXML_FILES_DATA_IN,
                         $remote_config_dir
                     ),
-                    'url'     => '__url__/index.php?sec=general&sec2=godmode/setup/setup&section=perf',
+                    'url'               => '__url__/index.php?sec=general&sec2=godmode/setup/setup&section=perf',
+                    'icon_notification' => self::ICON_HEADSUP,
                 ]
             );
         } else {
@@ -1400,18 +1426,19 @@ class ConsoleSupervisor
 
                     $this->notify(
                         [
-                            'type'    => 'NOTIF.SERVER.QUEUE.'.$key,
-                            'title'   => __(
+                            'type'              => 'NOTIF.SERVER.QUEUE.'.$key,
+                            'title'             => __(
                                 '%s (%s) is lacking performance.',
                                 servers_get_server_string_name($type),
                                 $queue['name']
                             ),
-                            'message' => __(
+                            'message'           => __(
                                 $msg,
                                 $modules_queued,
                                 $queue['queued_modules']
                             ),
-                            'url'     => '__url__/index.php?sec=gservers&sec2=godmode/servers/modificar_server&refr=60',
+                            'url'               => '__url__/index.php?sec=gservers&sec2=godmode/servers/modificar_server&refr=60',
+                            'icon_notification' => self::ICON_HEADSUP,
                         ]
                     );
                 } else {
@@ -1469,10 +1496,11 @@ class ConsoleSupervisor
 
                 $this->notify(
                     [
-                        'type'    => 'NOTIF.SERVER.STATUS',
-                        'title'   => __('No servers available.'),
-                        'message' => __('There are no servers registered in this console. Please, check installation guide.'),
-                        'url'     => $url,
+                        'type'              => 'NOTIF.SERVER.STATUS',
+                        'title'             => __('No servers available.'),
+                        'message'           => __('There are no servers registered in this console. Please, check installation guide.'),
+                        'url'               => $url,
+                        'icon_notification' => self::ICON_ERROR,
                     ]
                 );
             }
@@ -1513,6 +1541,7 @@ class ConsoleSupervisor
                 }
             }
 
+            $icon_notification = self::ICON_QUESTION;
             if ($server['status'] == 1) {
                 // Fatal error. Component has die.
                 $msg = __(
@@ -1526,6 +1555,8 @@ class ConsoleSupervisor
                     servers_get_server_string_name($server['server_type']),
                     $server['name']
                 );
+
+                $icon_notification = self::ICON_ERROR;
             } else {
                 // Non-fatal error. Controlated exit. Component is not running.
                 $msg = __(
@@ -1542,10 +1573,11 @@ class ConsoleSupervisor
 
             $this->notify(
                 [
-                    'type'    => 'NOTIF.SERVER.STATUS.'.$server['id_server'],
-                    'title'   => $msg,
-                    'message' => $description,
-                    'url'     => '__url__/index.php?sec=gservers&sec2=godmode/servers/modificar_server&refr=60',
+                    'type'              => 'NOTIF.SERVER.STATUS.'.$server['id_server'],
+                    'title'             => $msg,
+                    'message'           => $description,
+                    'url'               => '__url__/index.php?sec=gservers&sec2=godmode/servers/modificar_server&refr=60',
+                    'icon_notification' => $icon_notification,
                 ]
             );
         }
@@ -1585,10 +1617,11 @@ class ConsoleSupervisor
 
             $this->notify(
                 [
-                    'type'    => 'NOTIF.SERVER.MASTER',
-                    'title'   => __('No master servers found.'),
-                    'message' => __('At least one server must be defined to run as master. Please, check documentation.'),
-                    'url'     => $url,
+                    'type'              => 'NOTIF.SERVER.MASTER',
+                    'title'             => __('No master servers found.'),
+                    'message'           => __('At least one server must be defined to run as master. Please, check documentation.'),
+                    'url'               => $url,
+                    'icon_notification' => self::ICON_INFORMATION,
                 ]
             );
         } else {
@@ -1641,10 +1674,11 @@ class ConsoleSupervisor
 
             $this->notify(
                 [
-                    'type'    => 'NOTIF.PHP.SAFE_MODE',
-                    'title'   => __('PHP safe mode is enabled. Some features may not work properly'),
-                    'message' => __('To disable it, go to your PHP configuration file (php.ini) and put safe_mode = Off (Do not forget to restart apache process after changes)'),
-                    'url'     => $url,
+                    'type'              => 'NOTIF.PHP.SAFE_MODE',
+                    'title'             => __('PHP safe mode is enabled. Some features may not work properly'),
+                    'message'           => __('To disable it, go to your PHP configuration file (php.ini) and put safe_mode = Off (Do not forget to restart apache process after changes)'),
+                    'url'               => $url,
+                    'icon_notification' => self::ICON_HEADSUP,
                 ]
             );
         } else {
@@ -1659,16 +1693,17 @@ class ConsoleSupervisor
 
             $this->notify(
                 [
-                    'type'    => 'NOTIF.PHP.INPUT_TIME',
-                    'title'   => sprintf(
+                    'type'              => 'NOTIF.PHP.INPUT_TIME',
+                    'title'             => sprintf(
                         __('%s value in PHP configuration is not recommended'),
                         'max_input_time'
                     ),
-                    'message' => sprintf(
+                    'message'           => sprintf(
                         __('Recommended value is %s'),
                         '-1 ('.__('Unlimited').')'
                     ).'<br><br>'.__('Please, change it on your PHP configuration file (php.ini) or contact with administrator (Do not forget to restart Apache process after)'),
-                    'url'     => $url,
+                    'url'               => $url,
+                    'icon_notification' => self::ICON_INFORMATION,
                 ]
             );
         } else {
@@ -1683,16 +1718,17 @@ class ConsoleSupervisor
 
             $this->notify(
                 [
-                    'type'    => 'NOTIF.PHP.EXECUTION_TIME',
-                    'title'   => sprintf(
+                    'type'              => 'NOTIF.PHP.EXECUTION_TIME',
+                    'title'             => sprintf(
                         __("Not recommended '%s' value in PHP configuration"),
                         'max_execution_time'
                     ),
-                    'message' => sprintf(
+                    'message'           => sprintf(
                         __('Recommended value is: %s'),
                         '0 ('.__('Unlimited').')'
                     ).'<br><br>'.__('Please, change it on your PHP configuration file (php.ini) or contact with administrator (Dont forget restart apache process after changes)'),
-                    'url'     => $url,
+                    'url'               => $url,
+                    'icon_notification' => self::ICON_INFORMATION,
                 ]
             );
         } else {
@@ -1707,16 +1743,17 @@ class ConsoleSupervisor
 
             $this->notify(
                 [
-                    'type'    => 'NOTIF.PHP.UPLOAD_MAX_FILESIZE',
-                    'title'   => sprintf(
+                    'type'              => 'NOTIF.PHP.UPLOAD_MAX_FILESIZE',
+                    'title'             => sprintf(
                         __("Not recommended '%s' value in PHP configuration"),
                         'upload_max_filesize'
                     ),
-                    'message' => sprintf(
+                    'message'           => sprintf(
                         __('Recommended value is: %s'),
                         sprintf(__('%s or greater'), '800M')
                     ).'<br><br>'.__('Please, change it on your PHP configuration file (php.ini) or contact with administrator (Dont forget restart apache process after changes)'),
-                    'url'     => $url,
+                    'url'               => $url,
+                    'icon_notification' => self::ICON_INFORMATION,
                 ]
             );
         } else {
@@ -1736,16 +1773,17 @@ class ConsoleSupervisor
 
             $this->notify(
                 [
-                    'type'    => 'NOTIF.PHP.MEMORY_LIMIT',
-                    'title'   => sprintf(
+                    'type'              => 'NOTIF.PHP.MEMORY_LIMIT',
+                    'title'             => sprintf(
                         __("Not recommended '%s' value in PHP configuration"),
                         'memory_limit'
                     ),
-                    'message' => sprintf(
+                    'message'           => sprintf(
                         __('Recommended value is: %s'),
                         sprintf(__('%s or greater'), $recommended_memory)
                     ).'<br><br>'.__('Please, change it on your PHP configuration file (php.ini) or contact with administrator'),
-                    'url'     => $url,
+                    'url'               => $url,
+                    'icon_notification' => self::ICON_INFORMATION,
                 ]
             );
         } else {
@@ -1760,10 +1798,11 @@ class ConsoleSupervisor
 
             $this->notify(
                 [
-                    'type'    => 'NOTIF.PHP.DISABLE_FUNCTIONS',
-                    'title'   => __('Problems with disable_functions in php.ini'),
-                    'message' => __('The variable disable_functions contains functions system() or exec() in PHP configuration file (php.ini)').'<br /><br />'.__('Please, change it on your PHP configuration file (php.ini) or contact with administrator (Dont forget restart apache process after changes)'),
-                    'url'     => $url,
+                    'type'              => 'NOTIF.PHP.DISABLE_FUNCTIONS',
+                    'title'             => __('Problems with disable_functions in php.ini'),
+                    'message'           => __('The variable disable_functions contains functions system() or exec() in PHP configuration file (php.ini)').'<br /><br />'.__('Please, change it on your PHP configuration file (php.ini) or contact with administrator (Dont forget restart apache process after changes)'),
+                    'url'               => $url,
+                    'icon_notification' => self::ICON_HEADSUP,
                 ]
             );
         } else {
@@ -1777,10 +1816,11 @@ class ConsoleSupervisor
             // }
             $this->notify(
                 [
-                    'type'    => 'NOTIF.PHP.CHROMIUM',
-                    'title'   => __('chromium is not installed'),
-                    'message' => __('To be able to create images of the graphs for PDFs, please install the chromium extension. For that, it is necessary to follow these steps:'),
-                    'url'     => $url,
+                    'type'              => 'NOTIF.PHP.CHROMIUM',
+                    'title'             => __('chromium is not installed'),
+                    'message'           => __('To be able to create images of the graphs for PDFs, please install the chromium extension. For that, it is necessary to follow these steps:'),
+                    'url'               => $url,
+                    'icon_notification' => self::ICON_HEADSUP,
                 ]
             );
         } else {
@@ -1838,10 +1878,11 @@ class ConsoleSupervisor
             $url = 'https://www.php.net/supported-versions.php';
             $this->notify(
                 [
-                    'type'    => 'NOTIF.PHP.VERSION.SUPPORT',
-                    'title'   => __('PHP UPDATE REQUIRED'),
-                    'message' => __('You should update your PHP version because it will be out of official support').'<br>'.__('Current PHP version: ').PHP_VERSION,
-                    'url'     => $url,
+                    'type'              => 'NOTIF.PHP.VERSION.SUPPORT',
+                    'title'             => __('PHP UPDATE REQUIRED'),
+                    'message'           => __('You should update your PHP version because it will be out of official support').'<br>'.__('Current PHP version: ').PHP_VERSION,
+                    'url'               => $url,
+                    'icon_notification' => self::ICON_HEADSUP,
                 ]
             );
         } else {
@@ -1864,10 +1905,11 @@ class ConsoleSupervisor
             $url = 'https://www.mysql.com/support/eol-notice.html';
             $this->notify(
                 [
-                    'type'    => 'NOTIF.MYSQL.VERSION',
-                    'title'   => __('MYSQL UPDATE REQUIRED'),
-                    'message' => __('You should update your MYSQL version because it will be out of official support').'<br>'.__('Current MYSQL version: ').$mysql_version,
-                    'url'     => $url,
+                    'type'              => 'NOTIF.MYSQL.VERSION',
+                    'title'             => __('MYSQL UPDATE REQUIRED'),
+                    'message'           => __('You should update your MYSQL version because it will be out of official support').'<br>'.__('Current MYSQL version: ').$mysql_version,
+                    'url'               => $url,
+                    'icon_notification' => self::ICON_HEADSUP,
                 ]
             );
         } else {
@@ -1906,10 +1948,11 @@ class ConsoleSupervisor
             if ($config['history_db_connection'] === false) {
                 $this->notify(
                     [
-                        'type'    => 'NOTIF.HISTORYDB',
-                        'title'   => __('Historical database not available'),
-                        'message' => __('Historical database is enabled, though not accessible with the current configuration.'),
-                        'url'     => '__url__/index.php?sec=general&sec2=godmode/setup/setup&section=hist_db',
+                        'type'              => 'NOTIF.HISTORYDB',
+                        'title'             => __('Historical database not available'),
+                        'message'           => __('Historical database is enabled, though not accessible with the current configuration.'),
+                        'url'               => '__url__/index.php?sec=general&sec2=godmode/setup/setup&section=hist_db',
+                        'icon_notification' => self::ICON_QUESTION,
                     ]
                 );
             } else {
@@ -1950,13 +1993,14 @@ class ConsoleSupervisor
         if ($last_maintance > 172800) {
             $this->notify(
                 [
-                    'type'    => 'NOTIF.PANDORADB',
-                    'title'   => __('Database maintenance problem'),
-                    'message' => __(
+                    'type'              => 'NOTIF.PANDORADB',
+                    'title'             => __('Database maintenance problem'),
+                    'message'           => __(
                         'Your database hasn\'t been through maintenance for 48hrs. Please, check documentation on how to perform this maintenance process on %s and enable it as soon as possible.',
                         io_safe_output(get_product_name())
                     ),
-                    'url'     => '__url__/index.php?sec=general&sec2=godmode/setup/setup&section=perf',
+                    'url'               => '__url__/index.php?sec=general&sec2=godmode/setup/setup&section=perf',
+                    'icon_notification' => self::ICON_HEADSUP,
                 ]
             );
         } else {
@@ -2011,12 +2055,13 @@ class ConsoleSupervisor
             if ($last_maintance > 172800) {
                 $this->notify(
                     [
-                        'type'    => 'NOTIF.PANDORADB.HISTORY',
-                        'title'   => __(
+                        'type'              => 'NOTIF.PANDORADB.HISTORY',
+                        'title'             => __(
                             'Historical database maintenance problem.'
                         ),
-                        'message' => __('Your historical database hasn\'t been through maintenance for 48hrs. Please, check documentation on how to perform this maintenance process on %s and enable it as soon as possible.', get_product_name()),
-                        'url'     => '__url__/index.php?sec=general&sec2=godmode/setup/setup&section=perf',
+                        'message'           => __('Your historical database hasn\'t been through maintenance for 48hrs. Please, check documentation on how to perform this maintenance process on %s and enable it as soon as possible.', get_product_name()),
+                        'url'               => '__url__/index.php?sec=general&sec2=godmode/setup/setup&section=perf',
+                        'icon_notification' => self::ICON_ERROR,
                     ]
                 );
             } else {
@@ -2052,10 +2097,11 @@ class ConsoleSupervisor
             if ($mrh_version != $config['MR']) {
                 $this->notify(
                     [
-                        'type'    => 'NOTIF.HISTORYDB.MR',
-                        'title'   => __('Historical database MR mismatch'),
-                        'message' => __('Your historical database is not using the same schema as the main DB. This could produce anomalies while storing historical data.'),
-                        'url'     => '__url__/index.php?sec=general&sec2=godmode/setup/setup&section=hist_db',
+                        'type'              => 'NOTIF.HISTORYDB.MR',
+                        'title'             => __('Historical database MR mismatch'),
+                        'message'           => __('Your historical database is not using the same schema as the main DB. This could produce anomalies while storing historical data.'),
+                        'url'               => '__url__/index.php?sec=general&sec2=godmode/setup/setup&section=hist_db',
+                        'icon_notification' => self::ICON_QUESTION,
                     ]
                 );
             } else {
@@ -2093,10 +2139,11 @@ class ConsoleSupervisor
             if ($elasticsearch === false) {
                 $this->notify(
                     [
-                        'type'    => 'NOTIF.EXT.ELASTICSEARCH',
-                        'title'   => __('Log collector cannot connect to OpenSearch'),
-                        'message' => __('OpenSearch is not available using current configuration.'),
-                        'url'     => '__url__/index.php?sec=general&sec2=godmode/setup/setup&section=log',
+                        'type'              => 'NOTIF.EXT.ELASTICSEARCH',
+                        'title'             => __('Log collector cannot connect to OpenSearch'),
+                        'message'           => __('OpenSearch is not available using current configuration.'),
+                        'url'               => '__url__/index.php?sec=general&sec2=godmode/setup/setup&section=log',
+                        'icon_notification' => self::ICON_ERROR,
                     ]
                 );
             } else {
@@ -2163,10 +2210,11 @@ class ConsoleSupervisor
         } else {
             $this->notify(
                 [
-                    'type'    => 'NOTIF.METACONSOLE.DB_CONNECTION',
-                    'title'   => __('Metaconsole DB is not available.'),
-                    'message' => __('Cannot connect with Metaconsole DB using current configuration.'),
-                    'url'     => '__url__/index.php?sec=general&sec2=godmode/setup/setup&section=enterprise',
+                    'type'              => 'NOTIF.METACONSOLE.DB_CONNECTION',
+                    'title'             => __('Metaconsole DB is not available.'),
+                    'message'           => __('Cannot connect with Metaconsole DB using current configuration.'),
+                    'url'               => '__url__/index.php?sec=general&sec2=godmode/setup/setup&section=enterprise',
+                    'icon_notification' => self::ICON_ERROR,
                 ]
             );
         }
@@ -2382,10 +2430,11 @@ class ConsoleSupervisor
             if (update_manager_verify_registration() === false) {
                 $this->notify(
                     [
-                        'type'    => 'NOTIF.UPDATEMANAGER.REGISTRATION',
-                        'title'   => __('This instance is not registered in the Warp Update section'),
-                        'message' => __('Click here to start the registration process'),
-                        'url'     => '__url__/index.php?sec=messages&sec2=godmode/update_manager/update_manager&tab=online',
+                        'type'              => 'NOTIF.UPDATEMANAGER.REGISTRATION',
+                        'title'             => __('This instance is not registered in the Warp Update section'),
+                        'message'           => __('Click here to start the registration process'),
+                        'url'               => '__url__/index.php?sec=messages&sec2=godmode/update_manager/update_manager&tab=online',
+                        'icon_notification' => self::ICON_QUESTION,
                     ]
                 );
             } else {
@@ -2412,9 +2461,10 @@ class ConsoleSupervisor
         if (update_manager_verify_api() === false) {
             $this->notify(
                 [
-                    'type'    => 'NOTIF.API.ACCESS',
-                    'title'   => __('Cannot access the Pandora FMS API '),
-                    'message' => __('Please check the configuration, some components may fail due to this misconfiguration in '.$server_name.' ('.$config['public_url'].')'),
+                    'type'              => 'NOTIF.API.ACCESS',
+                    'title'             => __('Cannot access the Pandora FMS API '),
+                    'message'           => __('Please check the configuration, some components may fail due to this misconfiguration in '.$server_name.' ('.$config['public_url'].')'),
+                    'icon_notification' => self::ICON_ERROR,
                 ]
             );
         } else {
@@ -2445,10 +2495,11 @@ class ConsoleSupervisor
         if ($admin_with_default_pass > 0) {
             $this->notify(
                 [
-                    'type'    => 'NOTIF.SECURITY.DEFAULT_PASSWORD',
-                    'title'   => __('Default password for "Admin" user has not been changed'),
-                    'message' => __('Please, change the default password since it is a commonly reported vulnerability.'),
-                    'url'     => '__url__/index.php?sec=gusuarios&sec2=godmode/users/user_list',
+                    'type'              => 'NOTIF.SECURITY.DEFAULT_PASSWORD',
+                    'title'             => __('Default password for "Admin" user has not been changed'),
+                    'message'           => __('Please, change the default password since it is a commonly reported vulnerability.'),
+                    'url'               => '__url__/index.php?sec=gusuarios&sec2=godmode/users/user_list',
+                    'icon_notification' => self::ICON_HEADSUP,
                 ]
             );
         } else {
@@ -2560,10 +2611,11 @@ class ConsoleSupervisor
                     foreach ($_SESSION['return_installation_open']['text'] as $message) {
                         $this->notify(
                             [
-                                'type'    => 'NOTIF.UPDATEMANAGER.OPENSETUP',
-                                'title'   => __('Failed to retrieve updates, please configure utility'),
-                                'message' => $message,
-                                'url'     => '__url__/index.php?sec=gsetup&sec2=godmode/setup/setup&section=general',
+                                'type'              => 'NOTIF.UPDATEMANAGER.OPENSETUP',
+                                'title'             => __('Failed to retrieve updates, please configure utility'),
+                                'message'           => $message,
+                                'url'               => '__url__/index.php?sec=gsetup&sec2=godmode/setup/setup&section=general',
+                                'icon_notification' => self::ICON_ERROR,
                             ]
                         );
                     }
@@ -2577,13 +2629,14 @@ class ConsoleSupervisor
             if ($_SESSION['new_update'] == 'new') {
                 $this->notify(
                     [
-                        'type'    => 'NOTIF.UPDATEMANAGER.UPDATE',
-                        'title'   => __(
+                        'type'              => 'NOTIF.UPDATEMANAGER.UPDATE',
+                        'title'             => __(
                             'New %s Console update',
                             get_product_name()
                         ),
-                        'message' => __('There is a new update available. Please<a class="bolder" href="'.ui_get_full_url('index.php?sec=gsetup&sec2=godmode/update_manager/update_manager&tab=online').'"> go to Administration:Setup:Update Manager</a> for more details.'),
-                        'url'     => '__url__/index.php?sec=gsetup&sec2=godmode/update_manager/update_manager&tab=online',
+                        'message'           => __('There is a new update available. Please<a class="bolder" href="'.ui_get_full_url('index.php?sec=gsetup&sec2=godmode/update_manager/update_manager&tab=online').'"> go to Administration:Setup:Update Manager</a> for more details.'),
+                        'url'               => '__url__/index.php?sec=gsetup&sec2=godmode/update_manager/update_manager&tab=online',
+                        'icon_notification' => self::ICON_CONGRATS,
                     ]
                 );
             } else {
@@ -2615,13 +2668,14 @@ class ConsoleSupervisor
 
             $this->notify(
                 [
-                    'type'    => 'NOTIF.UPDATEMANAGER.MINOR',
-                    'title'   => __('Minor release/s available'),
-                    'message' => __(
+                    'type'              => 'NOTIF.UPDATEMANAGER.MINOR',
+                    'title'             => __('Minor release/s available'),
+                    'message'           => __(
                         'There is one or more minor releases available. <a id="aviable_updates" target="blank" href="%s">.About minor release update</a>.',
                         $url
                     ),
-                    'url'     => '__url__/index.php?sec=messages&sec2=godmode/update_manager/update_manager&tab=online',
+                    'url'               => '__url__/index.php?sec=messages&sec2=godmode/update_manager/update_manager&tab=online',
+                    'icon_notification' => self::ICON_CONGRATS,
                 ]
             );
         } else {
@@ -2678,10 +2732,11 @@ class ConsoleSupervisor
 
             $this->notify(
                 [
-                    'type'    => 'NOTIF.CRON.CONFIGURED',
-                    'title'   => __('DiscoveryConsoleTasks is not configured.'),
-                    'message' => __($message_conf_cron),
-                    'url'     => $url,
+                    'type'              => 'NOTIF.CRON.CONFIGURED',
+                    'title'             => __('DiscoveryConsoleTasks is not configured.'),
+                    'message'           => __($message_conf_cron),
+                    'url'               => $url,
+                    'icon_notification' => self::ICON_QUESTION,
                 ]
             );
         } else {
@@ -2780,10 +2835,11 @@ class ConsoleSupervisor
 
                     $this->notify(
                         [
-                            'type'    => 'NOTIF.SERVER.MISALIGNED',
-                            'title'   => __($title_ver_misaligned),
-                            'message' => __($message_ver_misaligned),
-                            'url'     => '__url__/index.php?sec=messages&sec2=godmode/update_manager/update_manager&tab=online',
+                            'type'              => 'NOTIF.SERVER.MISALIGNED',
+                            'title'             => __($title_ver_misaligned),
+                            'message'           => __($message_ver_misaligned),
+                            'url'               => '__url__/index.php?sec=messages&sec2=godmode/update_manager/update_manager&tab=online',
+                            'icon_notification' => self::ICON_HEADSUP,
                         ]
                     );
 
@@ -2836,10 +2892,11 @@ class ConsoleSupervisor
                     $is_none = true;
                     $this->notify(
                         [
-                            'type'    => 'NOTIF.ALLOWOVERRIDE.MESSAGE',
-                            'title'   => __('AllowOverride is disabled'),
-                            'message' => __($message),
-                            'url'     => '__url__/index.php',
+                            'type'              => 'NOTIF.ALLOWOVERRIDE.MESSAGE',
+                            'title'             => __('AllowOverride is disabled'),
+                            'message'           => __($message),
+                            'url'               => '__url__/index.php',
+                            'icon_notification' => self::ICON_HEADSUP,
                         ]
                     );
                 }
@@ -2882,10 +2939,11 @@ class ConsoleSupervisor
             if ((int) $db_master !== (int) $cluster_master) {
                 $this->notify(
                     [
-                        'type'    => 'NOTIF.HAMASTER.MESSAGE',
-                        'title'   => __('Desynchronized operation on the node '.$node['host']),
-                        'message' => __($message),
-                        'url'     => '__url__/index.php?sec=gservers&sec2=enterprise/godmode/servers/HA_cluster',
+                        'type'              => 'NOTIF.HAMASTER.MESSAGE',
+                        'title'             => __('Desynchronized operation on the node '.$node['host']),
+                        'message'           => __($message),
+                        'url'               => '__url__/index.php?sec=gservers&sec2=enterprise/godmode/servers/HA_cluster',
+                        'icon_notification' => self::ICON_ERROR,
                     ]
                 );
             } else {
@@ -2922,10 +2980,11 @@ class ConsoleSupervisor
 
             $this->notify(
                 [
-                    'type'    => 'NOTIF.PANDORACONSOLE.LOG.OLD',
-                    'title'   => __($title_pandoraconsole_old_log),
-                    'message' => __($message_pandoraconsole_old_log),
-                    'url'     => $url,
+                    'type'              => 'NOTIF.PANDORACONSOLE.LOG.OLD',
+                    'title'             => __($title_pandoraconsole_old_log),
+                    'message'           => __($message_pandoraconsole_old_log),
+                    'url'               => $url,
+                    'icon_notification' => self::ICON_QUESTION,
                 ]
             );
         } else {
@@ -3006,15 +3065,16 @@ class ConsoleSupervisor
 
                     $this->notify(
                         [
-                            'type'    => 'NOTIF.SYNCQUEUE.LENGTH.'.$node_id,
-                            'title'   => __('Node %s sync queue length exceeded, ', $node->server_name()),
-                            'message' => __(
+                            'type'              => 'NOTIF.SYNCQUEUE.LENGTH.'.$node_id,
+                            'title'             => __('Node %s sync queue length exceeded, ', $node->server_name()),
+                            'message'           => __(
                                 'Synchronization queue lenght for node %s is %d items, this value should be 0 or lower than %d, please check the queue status.',
                                 $node->server_name(),
                                 $count,
                                 $items_min
                             ),
-                            'url'     => $url,
+                            'url'               => $url,
+                            'icon_notification' => self::ICON_HEADSUP,
                         ]
                     );
                 } catch (\Exception $e) {
@@ -3061,14 +3121,15 @@ class ConsoleSupervisor
 
                     $this->notify(
                         [
-                            'type'    => 'NOTIF.SYNCQUEUE.STATUS.'.$node_id,
-                            'title'   => __('Node %s sync queue failed, ', $node->server_name()),
-                            'message' => __(
+                            'type'              => 'NOTIF.SYNCQUEUE.STATUS.'.$node_id,
+                            'title'             => __('Node %s sync queue failed, ', $node->server_name()),
+                            'message'           => __(
                                 'Node %s cannot process synchronization queue due %s, please check the queue status.',
                                 $node->server_name(),
                                 $item->error()
                             ),
-                            'url'     => $url,
+                            'url'               => $url,
+                            'icon_notification' => self::ICON_ERROR,
                         ]
                     );
                 } catch (\Exception $e) {
@@ -3094,13 +3155,14 @@ class ConsoleSupervisor
         if ($error_dependecies > 0) {
             $this->notify(
                 [
-                    'type'    => 'NOTIF.AGENT.LIBRARY',
-                    'title'   => __('Agent dependency error'),
-                    'message' => __(
+                    'type'              => 'NOTIF.AGENT.LIBRARY',
+                    'title'             => __('Agent dependency error'),
+                    'message'           => __(
                         'There are omnishell agents with dependency errors',
                     ),
 
-                    'url'     => '__url__/index.php?sec=gextensions&sec2=enterprise/tools/omnishell',
+                    'url'               => '__url__/index.php?sec=gextensions&sec2=enterprise/tools/omnishell',
+                    'icon_notification' => self::ICON_ERROR,
                 ]
             );
         }
diff --git a/pandora_console/include/functions_notifications.php b/pandora_console/include/functions_notifications.php
index c65c475550..c2de6fd53a 100644
--- a/pandora_console/include/functions_notifications.php
+++ b/pandora_console/include/functions_notifications.php
@@ -27,6 +27,7 @@
  */
 
 require_once $config['homedir'].'/include/functions_messages.php';
+require_once __DIR__.'/class/ConsoleSupervisor.php';
 
 define('NOTIFICATIONS_POSTPONE_FOREVER', -1);
 
@@ -1232,6 +1233,12 @@ function notifications_print_dropdown_element($message_info)
         $body_preview .= __('. Read More...');
     }
 
+    $icon_notification = ConsoleSupervisor::ICON_INFORMATION;
+
+    if (isset($message_info['icon_notification']) === true && empty($message_info['icon_notification']) === false) {
+        $icon_notification = $message_info['icon_notification'];
+    }
+
     return sprintf(
         "<a
             class='notification-item'
@@ -1256,7 +1263,7 @@ function notifications_print_dropdown_element($message_info)
         $type,
         messages_get_url($message_info['id_mensaje']),
         $target,
-        html_print_image('images/info.svg', true, ['style' => 'height: 40px;margin-left: -20px;margin-top: -40px;']),
+        html_print_image($icon_notification, true, ['style' => 'height: 56px; padding: 0px;']),
         io_safe_output($message_info['subject']),
         $body_preview
     );
diff --git a/pandora_console/include/styles/pandora.css b/pandora_console/include/styles/pandora.css
index 94d337bdbe..07bcb4587f 100644
--- a/pandora_console/include/styles/pandora.css
+++ b/pandora_console/include/styles/pandora.css
@@ -4977,7 +4977,7 @@ div#dialog_messages table th:last-child {
 }
 
 .notification-item > * {
-  padding-left: 15px;
+  padding-left: 7px;
   pointer-events: none;
 }
 
@@ -5003,6 +5003,10 @@ div#dialog_messages table th:last-child {
   margin: 0;
 }
 
+.notification-subtitle {
+  margin-top: 2px;
+}
+
 .notification-subtitle,
 .color-black-grey {
   color: #373737;
diff --git a/pandora_console/pandoradb.sql b/pandora_console/pandoradb.sql
index 697dd2a3d9..b0bc81ffa7 100644
--- a/pandora_console/pandoradb.sql
+++ b/pandora_console/pandoradb.sql
@@ -1395,6 +1395,7 @@ CREATE TABLE IF NOT EXISTS `tmensajes` (
   `subject` VARCHAR(255) NOT NULL DEFAULT '',
   `estado` INT UNSIGNED NOT NULL DEFAULT 0,
   `url` TEXT,
+  `icon_notification` VARCHAR(250) DEFAULT NULL,
   `response_mode` VARCHAR(200) DEFAULT NULL,
   `citicity` INT UNSIGNED DEFAULT 0,
   `id_source` BIGINT UNSIGNED NOT NULL,

From 3287ab2ee43ea7a97ad96354d586bcdb2a11e3e7 Mon Sep 17 00:00:00 2001
From: Daniel Cebrian <daniel.cebrian@pandorafms.com>
Date: Wed, 3 Jan 2024 17:06:20 +0100
Subject: [PATCH 088/231] #11165 new popup for command whois in netflow

---
 pandora_console/include/functions_netflow.php | 47 ++++++++++++++
 .../operation/network/network_report.php      | 64 +++++++++++++++++++
 2 files changed, 111 insertions(+)

diff --git a/pandora_console/include/functions_netflow.php b/pandora_console/include/functions_netflow.php
index bc8495969f..b78be40301 100644
--- a/pandora_console/include/functions_netflow.php
+++ b/pandora_console/include/functions_netflow.php
@@ -2293,3 +2293,50 @@ function netflow_build_map_data($start_date, $end_date, $top, $aggregate, $advan
         array_merge($relations, $orphan_hosts)
     );
 }
+
+
+/**
+ * Run whois command and return all results as array.
+ *
+ * @param integer $ip Ip for search info with command whois.
+ *
+ * @return array
+ */
+function command_whois($ip)
+{
+    $command = 'whois '.$ip;
+    $result = '';
+    exec($command, $result);
+    if (empty($result) === false && is_array($result) === true) {
+        $resultArray = parse_whois_output($result);
+    } else {
+        $resultArray = [];
+    }
+
+    return $resultArray;
+}
+
+
+/**
+ * Parse the result of command whois to array.
+ *
+ * @param array $lines Lines result of command whois.
+ *
+ * @return array
+ */
+function parse_whois_output($lines)
+{
+    $resultArray = [];
+    if (is_array($lines) === true) {
+        foreach ($lines as $line) {
+            $parts = explode(':', $line, 2);
+            if (count($parts) === 2 && strpos($line, '#') !== 0) {
+                $key = trim($parts[0]);
+                $value = trim($parts[1]);
+                $resultArray[$key] = $value;
+            }
+        }
+    }
+
+    return $resultArray;
+}
diff --git a/pandora_console/operation/network/network_report.php b/pandora_console/operation/network/network_report.php
index 66847f4c1b..bc72602fd0 100644
--- a/pandora_console/operation/network/network_report.php
+++ b/pandora_console/operation/network/network_report.php
@@ -41,7 +41,10 @@ if (! check_acl($config['id_user'], 0, 'AR')) {
 
 // Ajax callbacks.
 if (is_ajax() === true) {
+    include_once $config['homedir'].'/include/functions_netflow.php';
     $get_filter_values = get_parameter('get_filter_values', 0);
+    $whois = (bool) get_parameter('whois', 0);
+
     // Get values of the current network filter.
     if ($get_filter_values) {
         $id = get_parameter('id');
@@ -51,6 +54,34 @@ if (is_ajax() === true) {
         echo json_encode($filter_values);
     }
 
+    if ($whois) {
+        $ip = get_parameter('ip');
+        $info = command_whois($ip);
+        $output = '';
+        if (is_array($info) === true && count($info) > 0) {
+            $table = new \stdClass();
+            $table->class = 'details_table dataTable info_table';
+            $table->data = [];
+            $row = 0;
+            foreach ($info as $key => $value) {
+                $table->data[$row][0] = $key;
+                $table->data[$row][1] = $value;
+                $row++;
+            }
+
+            $output = html_print_table($table, true);
+        } else {
+            $output = ui_print_info_message(__('No data found'));
+        }
+
+        html_print_div(
+            [
+                'content' => $output,
+                'style'   => 'max-height: 600px;',
+            ],
+        );
+    }
+
     return;
 }
 
@@ -462,6 +493,7 @@ foreach ($data as $item) {
             array_merge($hidden_main_link, ['main_value' => $item['host']]),
             'image'
         );
+        $row['main'] .= html_print_input_image('whois', 'images/eye.png', 'whois', '', true, ['onclick' => 'whois(\''.$item['host'].'\')']);
     }
 
     $row['main'] .= '</div>';
@@ -572,6 +604,13 @@ html_print_div(
         'style'   => 'position: initial;',
     ]
 );
+
+html_print_div(
+    [
+        'id'    => 'modal_whois',
+        'class' => 'invisible',
+    ]
+);
 ?>
 <script>
 $(document).ready(function(){
@@ -654,4 +693,29 @@ function nf_view_click_period() {
     document.getElementById('period_container').style.display = !is_period ? 'none' : 'flex';
     document.getElementById('end_date_container').style.display = is_period ? 'none' : 'flex';
 }
+
+function whois(ip) {
+    load_modal({
+        target: $('#modal_whois'),
+        url: '<?php echo ui_get_full_url('ajax.php', false, false, false); ?>',
+        modal: {
+            title: '<?php echo __('Details'); ?>',
+            ok: '<?php echo __('Ok'); ?>',
+        },
+        extradata: [
+            {
+                name: "ip",
+                value: ip,
+            },
+            {
+                name: "whois",
+                value: 1,
+            }
+        ],
+        onshow: {
+            page: '<?php echo $config['homedir'].'/operation/network/network_report'; ?>',
+            width: 800,
+        }
+    });
+}
 </script>

From e99c7be6b80778e4c3dfa8e58952d01c6b307f40 Mon Sep 17 00:00:00 2001
From: Daniel Cebrian <daniel.cebrian@pandorafms.com>
Date: Wed, 3 Jan 2024 17:58:23 +0100
Subject: [PATCH 089/231] #12034 fixed empty screen in public link

---
 pandora_console/include/lib/Dashboard/Manager.php | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/pandora_console/include/lib/Dashboard/Manager.php b/pandora_console/include/lib/Dashboard/Manager.php
index 720045dccc..08765b5eba 100644
--- a/pandora_console/include/lib/Dashboard/Manager.php
+++ b/pandora_console/include/lib/Dashboard/Manager.php
@@ -311,6 +311,15 @@ class Manager implements PublicLogin
 
         if ($this->dashboardId !== 0) {
             $this->dashboardFields = $this->get();
+            if (is_array($this->dashboardFields) === true && count($this->dashboardFields) === 0) {
+                db_pandora_audit(
+                    AUDIT_LOG_HACK_ATTEMPT,
+                    'Trying to access to dashboard that not exist'
+                );
+                include 'general/noaccess.php';
+                exit;
+            }
+
             $this->cells = Cell::getCells($this->dashboardId);
         }
 

From b80bfa2799c33f2aa6af2496b4e9fe4174176d04 Mon Sep 17 00:00:00 2001
From: Daniel Maya <daniel.maya@pandorafms.com>
Date: Thu, 4 Jan 2024 15:39:27 +0100
Subject: [PATCH 090/231] #12624 change of style in dialog 2

---
 .../include/functions_register.php            |  2 +-
 .../include/javascript/pandora_ui.js          |  4 +-
 .../include/styles/js/datatables.min.css      |  2 +-
 .../include/styles/js/jquery-ui_custom.css    | 38 +++++++++++++++++--
 pandora_console/include/styles/pandora.css    |  2 +-
 .../include/styles/tips_window.css            |  9 ++++-
 .../operation/visual_console/view.php         |  2 +-
 .../resources/styles/um.css                   |  3 --
 .../update_manager_client/views/register.php  |  2 +-
 .../views/dashboard/tipsWindow.php            |  2 +-
 10 files changed, 49 insertions(+), 17 deletions(-)

diff --git a/pandora_console/include/functions_register.php b/pandora_console/include/functions_register.php
index e9c74c8c9a..db1bc8bf21 100644
--- a/pandora_console/include/functions_register.php
+++ b/pandora_console/include/functions_register.php
@@ -293,7 +293,7 @@ function show_configuration_wizard() {
             buttons: [
                 {
                     "text": "No",
-                    "class": 'submit-cancel',
+                    "class": 'submit-cancel secondaryButton',
                     "click" : function() {
                         $(this).dialog("close");
                     }
diff --git a/pandora_console/include/javascript/pandora_ui.js b/pandora_console/include/javascript/pandora_ui.js
index cd71ef51c3..2d84d60794 100644
--- a/pandora_console/include/javascript/pandora_ui.js
+++ b/pandora_console/include/javascript/pandora_ui.js
@@ -157,7 +157,7 @@ function load_modal(settings) {
 
     required_buttons.push({
       class:
-        "ui-widget ui-state-default ui-corner-all ui-button-text-only sub upd submit-cancel",
+        "ui-widget ui-state-default ui-corner-all ui-button-text-only sub upd submit-cancel secondaryButton",
       id: settings.modal.cancel_button_id,
       text: settings.modal.cancel,
       click: function() {
@@ -574,7 +574,7 @@ function confirmDialog(settings, idDialog = uniqId()) {
         : settings.strCancelButton,
       class:
         hideCancelButton +
-        "ui-widget ui-state-default ui-corner-all ui-button-text-only sub upd submit-cancel",
+        "ui-widget ui-state-default ui-corner-all ui-button-text-only sub upd submit-cancel secondaryButton",
       click: function() {
         if (typeof settings.notCloseOnDeny == "undefined") {
           $(this).dialog("close");
diff --git a/pandora_console/include/styles/js/datatables.min.css b/pandora_console/include/styles/js/datatables.min.css
index c5a5598611..e06d28a60b 100644
--- a/pandora_console/include/styles/js/datatables.min.css
+++ b/pandora_console/include/styles/js/datatables.min.css
@@ -865,7 +865,7 @@ body .ui-tooltip {
   color: #333;
 }
 .ui-dialog .ui-widget-header {
-  margin: -3px -3px 0px -3px;
+  /* margin: -3px -3px 0px -3px; */
 }
 .ui-state-default,
 .ui-widget-content .ui-state-default,
diff --git a/pandora_console/include/styles/js/jquery-ui_custom.css b/pandora_console/include/styles/js/jquery-ui_custom.css
index 1c68f9783e..440540ab05 100644
--- a/pandora_console/include/styles/js/jquery-ui_custom.css
+++ b/pandora_console/include/styles/js/jquery-ui_custom.css
@@ -14,7 +14,7 @@
   margin: 0;
   display: inherit;
   text-align: left;
-  padding: 1.2em 33px 1.2em 12px;
+  padding: 1.2em 33px 1.2em 12px !important;
   height: 30px;
   position: relative;
   overflow: hidden;
@@ -102,6 +102,36 @@
   border: 1px solid #82b92e;
   height: 30px;
   width: 90px;
+  border: 2px solid var(--primary-color) !important;
+}
+
+button.secondaryButton {
+  background-color: #fff !important;
+  color: var(--primary-color) !important;
+  border: 2px solid var(--primary-color) !important;
+  box-shadow: none;
+}
+
+button.secondaryButton > div {
+  background-color: var(--primary-color) !important;
+}
+
+button.secondaryButton:hover {
+  color: #1d7873 !important;
+  border-color: #1d7873 !important;
+}
+
+button.secondaryButton:hover > div {
+  background-color: #1d7873 !important;
+}
+
+button.secondaryButton:active {
+  color: #0d312f !important;
+  border-color: #0d312f !important;
+}
+
+button.secondaryButton:active > div {
+  background-color: #0d312f !important;
 }
 
 .ui-datepicker-prev {
@@ -252,7 +282,7 @@ a.ui-state-default > span:hover {
   border-bottom-right-radius: 10px !important;
   box-shadow: 0 10px 6px 0 rgb(0 0 0 / 13%);
   border: 1px solid #e5e9ed;
-  padding: 0;
+  padding: 0 !important;
 }
 .ui-dialog-titlebar {
   border: 0px;
@@ -270,8 +300,8 @@ a.ui-state-default > span:hover {
 .ui-button.ui-corner-all.ui-widget.ui-button-icon-only.ui-dialog-titlebar-close,
 .ui-button.ui-corner-all.ui-widget.ui-button-icon-only.ui-dialog-titlebar-close:hover {
   background-color: #fff;
-  mask: url(../../../images/close@svg.svg) no-repeat right / contain;
-  -webkit-mask: url(../../../images/close@svg.svg) no-repeat right / contain;
+  mask: url(../../../images/close_dialog.svg) no-repeat right / contain;
+  -webkit-mask: url(../../../images/close_dialog.svg) no-repeat right / contain;
 }
 
 .ui-dialog-title {
diff --git a/pandora_console/include/styles/pandora.css b/pandora_console/include/styles/pandora.css
index 94d337bdbe..75059d8370 100644
--- a/pandora_console/include/styles/pandora.css
+++ b/pandora_console/include/styles/pandora.css
@@ -10454,7 +10454,7 @@ button.submitButton {
   display: flex;
   justify-content: space-between;
   flex-direction: row;
-  min-width: 110px;
+  /* min-width: 110px; */
   height: 45px;
   font-size: 14px;
   /*font-family: "lato";*/
diff --git a/pandora_console/include/styles/tips_window.css b/pandora_console/include/styles/tips_window.css
index 5c6114f92a..4c50f7214c 100644
--- a/pandora_console/include/styles/tips_window.css
+++ b/pandora_console/include/styles/tips_window.css
@@ -28,9 +28,10 @@
   border-top-right-radius: 10px !important;
 }
 .tips_header .title {
-  font-size: 15px;
+  font-size: 13pt !important;
   color: #fff;
-  padding: 1.2em 33px 1.2em 12px !important;
+  padding: 1em 33px 1em 12px !important;
+  margin: 0;
 }
 .description {
   padding: 0px 20px 20px 20px;
@@ -91,6 +92,10 @@
   width: 100%;
   justify-content: space-between;
 }
+
+.ui-dialog-titlebar > p {
+  display: flex;
+}
 #tips_window_modal .ui-dialog-buttonset button.submit-cancel-tips,
 #tips_window_modal_preview .ui-dialog-buttonset button.submit-cancel-tips {
   border-radius: 6px;
diff --git a/pandora_console/operation/visual_console/view.php b/pandora_console/operation/visual_console/view.php
index 6f193c05c5..7d44c7b69b 100644
--- a/pandora_console/operation/visual_console/view.php
+++ b/pandora_console/operation/visual_console/view.php
@@ -901,7 +901,7 @@ if ($edit_capable === true) {
             draggable: true,
             modal: true,
             close: false,
-            height: 200,
+            height: 210,
             width: 480,
             overlay: {
                 opacity: 0.5,
diff --git a/pandora_console/update_manager_client/resources/styles/um.css b/pandora_console/update_manager_client/resources/styles/um.css
index fe28eaa176..cd88b1d30d 100644
--- a/pandora_console/update_manager_client/resources/styles/um.css
+++ b/pandora_console/update_manager_client/resources/styles/um.css
@@ -321,9 +321,6 @@ a.update_manager_button:after {
   margin: 20px;
 }
 
-.ui-widget.ui-widget-content {
-  border: none;
-}
 #um-update-details {
   display: none;
   background: #fff;
diff --git a/pandora_console/update_manager_client/views/register.php b/pandora_console/update_manager_client/views/register.php
index 5c05d04678..bfc70570f3 100644
--- a/pandora_console/update_manager_client/views/register.php
+++ b/pandora_console/update_manager_client/views/register.php
@@ -156,7 +156,7 @@ $("#submit-cancel_registration").click(function(e) {
     buttons: [
       {
         text: "No",
-        class: "submit-cancel",
+        class: "submit-cancel secondaryButton",
         click: function() {
           $(this).dialog("close");
         }
diff --git a/pandora_console/views/dashboard/tipsWindow.php b/pandora_console/views/dashboard/tipsWindow.php
index 573a11abcc..d2714ae1f2 100644
--- a/pandora_console/views/dashboard/tipsWindow.php
+++ b/pandora_console/views/dashboard/tipsWindow.php
@@ -41,7 +41,7 @@ $output .= '<p>'.html_print_checkbox(
     false,
     '',
     ($preview === true) ? '' : 'checkbox_tips_startup'
-).__('Show usage tips at startup').'</p>';
+).'&nbsp;'.__('Show usage tips at startup').'</p>';
 $output .= '</div>';
 $output .= '<div class="carousel '.((empty($files) === true && empty($files64) === true) ? 'invisible' : '').'">';
 $output .= '<div class="images">';

From ebbc4d77beed80942ec527d7f5ef0d38a39deea1 Mon Sep 17 00:00:00 2001
From: Jonathan <jonathan.leon@pandorafms.com>
Date: Mon, 8 Jan 2024 08:39:58 +0100
Subject: [PATCH 091/231] #12527 redirect to all messages

---
 pandora_console/include/functions_notifications.php | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/pandora_console/include/functions_notifications.php b/pandora_console/include/functions_notifications.php
index c65c475550..f511450ad1 100644
--- a/pandora_console/include/functions_notifications.php
+++ b/pandora_console/include/functions_notifications.php
@@ -1137,6 +1137,15 @@ function notifications_print_dropdown()
         $mess = [];
     }
 
+    $redirection_notifications = html_print_menu_button(
+        [
+            'href'    => 'javascript:',
+            'class'   => 'notification_menu_actions',
+            'text'    => __('View all messages'),
+            'onClick' => "window.location='".ui_get_full_url('index.php?sec=message_list&sec2=operation/messages/message_list')."'",
+        ],
+        true
+    );
     $notification_menu = html_print_menu_button(
         [
             'href'    => 'javascript:',
@@ -1154,6 +1163,7 @@ function notifications_print_dropdown()
                 <div class='notificaion_menu_container'>
                     <div class='menu_tab filter_notification'>%s</div>
                     <div class='menu_tab notification_menu'>%s</div>
+                    <div class='menu_tab notification_menu'>%s</div>
                 </div>
                 %s
             </div>
@@ -1166,6 +1176,7 @@ function notifications_print_dropdown()
         ",
         $notification_filter,
         $notification_menu,
+        $redirection_notifications,
         array_reduce(
             $mess,
             function ($carry, $message) {

From 706426471ecfa0c453a550ac68a450d5efcfb5fd Mon Sep 17 00:00:00 2001
From: Jonathan <jonathan.leon@pandorafms.com>
Date: Mon, 8 Jan 2024 10:57:32 +0100
Subject: [PATCH 092/231] #12366 fix for spaces on users

---
 pandora_console/godmode/users/user_list.php | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)

diff --git a/pandora_console/godmode/users/user_list.php b/pandora_console/godmode/users/user_list.php
index 89607ced69..832c85027e 100644
--- a/pandora_console/godmode/users/user_list.php
+++ b/pandora_console/godmode/users/user_list.php
@@ -780,8 +780,9 @@ foreach ($info as $user_id => $user_info) {
 
         $data[4] .= '<div class="flex-column-start">';
         foreach ($user_profiles as $row) {
+            $total_profile++;
             if ($total_profile > 5) {
-                $data[4] .= "<div class='invisible checkhide_".$row['id_usuario']."'>";
+                $data[4] .= "<div class='invisible checkhide_".str_replace(' ', '_', io_safe_output($row['id_usuario']))."'>";
             }
 
             $data[4] .= "<div class='float-left'>";
@@ -794,8 +795,8 @@ foreach ($info as $user_id => $user_info) {
                 $data[4] .= '</div>';
             }
 
-            if ($total_profile == 0 && count($user_profiles) > 5) {
-                $data[4] .= '<span class="show-profiles" onclick="showGroups(`'.$row['id_usuario'].'`)">'.html_print_image(
+            if ($total_profile == 1 && count($user_profiles) > 5) {
+                $data[4] .= '<span class="show-profiles" onclick="showGroups(`'.str_replace(' ', '_', io_safe_output($row['id_usuario'])).'`)">'.html_print_image(
                     'images/zoom.png',
                     true,
                     [
@@ -810,8 +811,6 @@ foreach ($info as $user_id => $user_info) {
                     true
                 );
             }
-
-            $total_profile++;
         }
 
         if (isset($user_info['not_delete']) === true) {

From 981ae0977dbfc3586a0f2cc3809832bee0c4c6a3 Mon Sep 17 00:00:00 2001
From: daniel <daniel.barbero@artica.es>
Date: Mon, 8 Jan 2024 12:36:08 +0100
Subject: [PATCH 093/231] fix visual error um-offline pandora_enterprise#12399

---
 .../resources/images/info-warning.svg                 | 11 +++++++++++
 .../update_manager_client/resources/styles/um.css     |  2 +-
 2 files changed, 12 insertions(+), 1 deletion(-)
 create mode 100644 pandora_console/update_manager_client/resources/images/info-warning.svg

diff --git a/pandora_console/update_manager_client/resources/images/info-warning.svg b/pandora_console/update_manager_client/resources/images/info-warning.svg
new file mode 100644
index 0000000000..f707aa9410
--- /dev/null
+++ b/pandora_console/update_manager_client/resources/images/info-warning.svg
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg viewBox="0 0 14 14" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <!-- Generator: Sketch 61.2 (89653) - https://sketch.com -->
+    <title>Dark / 14 / info@svg</title>
+    <desc>Created with Sketch.</desc>
+    <g id="Dark-/-14-/-info" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="Icons/Elements/Help-mini" fill="#f3b200">
+            <path d="M7,0 C10.8659932,0 14,3.13400675 14,7 C14,10.8659932 10.8659932,14 7,14 C3.13400675,14 0,10.8659932 0,7 C0,3.13400675 3.13400675,0 7,0 Z M7,6 C6.44771525,6 6,6.44771525 6,7 L6,7 L6,10 C6,10.5522847 6.44771525,11 7,11 C7.55228475,11 8,10.5522847 8,10 L8,10 L8,7 C8,6.44771525 7.55228475,6 7,6 Z M7,3 C6.44771525,3 6,3.44771525 6,4 C6,4.55228475 6.44771525,5 7,5 C7.55228475,5 8,4.55228475 8,4 C8,3.44771525 7.55228475,3 7,3 Z" id="Elements-/-Help-mini"></path>
+        </g>
+    </g>
+</svg>
\ No newline at end of file
diff --git a/pandora_console/update_manager_client/resources/styles/um.css b/pandora_console/update_manager_client/resources/styles/um.css
index fe28eaa176..439e33c957 100644
--- a/pandora_console/update_manager_client/resources/styles/um.css
+++ b/pandora_console/update_manager_client/resources/styles/um.css
@@ -441,7 +441,7 @@ div#upload span.browse {
 span.warning {
   min-width: 10em;
   min-height: 10em;
-  background: url(../images/icono_warning.png);
+  background: url(../images/info-warning.svg);
   background-repeat: no-repeat;
   background-position: center;
   background-size: 80%;

From 71b491a49df946fa17f8cafa5f5abeec98f6fcc4 Mon Sep 17 00:00:00 2001
From: Jonathan <jonathan.leon@pandorafms.com>
Date: Mon, 8 Jan 2024 13:07:48 +0100
Subject: [PATCH 094/231] #12484 same about

---
 pandora_console/include/functions_menu.php    | 39 ++-----------------
 pandora_console/include/javascript/pandora.js |  2 +-
 2 files changed, 4 insertions(+), 37 deletions(-)

diff --git a/pandora_console/include/functions_menu.php b/pandora_console/include/functions_menu.php
index 06ad796ea9..7b6db39c0a 100644
--- a/pandora_console/include/functions_menu.php
+++ b/pandora_console/include/functions_menu.php
@@ -923,40 +923,7 @@ if (is_ajax()) {
             );
         }
 
-        $image_about = ui_get_full_url('/images/custom_logo/logo-default-pandorafms.png', false, false, false);
-        if (enterprise_installed() === false) {
-            if ($config['style'] === 'pandora_black') {
-                $image_about = 'images/custom_logo/'.HEADER_LOGO_BLACK_CLASSIC;
-            } else if ($config['style'] === 'pandora') {
-                $image_about = 'images/custom_logo/'.HEADER_LOGO_DEFAULT_CLASSIC;
-            }
-        } else {
-            if ($config['style'] === 'pandora_black' && $config['custom_logo'] === HEADER_LOGO_DEFAULT_CLASSIC) {
-                $config['custom_logo'] = HEADER_LOGO_BLACK_CLASSIC;
-            } else if ($config['style'] === 'pandora' && $config['custom_logo'] === HEADER_LOGO_BLACK_CLASSIC) {
-                $config['custom_logo'] = HEADER_LOGO_DEFAULT_CLASSIC;
-            }
-
-            $image_about = 'images/custom_logo/'.$config['custom_logo'];
-
-            if (file_exists(ENTERPRISE_DIR.'/'.$image_about) === true) {
-                $image_about = ENTERPRISE_DIR.'/'.$image_about;
-            }
-        }
-
-        if (is_metaconsole() === true) {
-            $image_about = ui_get_full_url('/enterprise/images/custom_logo/pandoraFMS_metaconsole_full.svg', false, false, false);
-
-            if ($config['meta_custom_logo'] === 'pandoraFMS_metaconsole_full.svg') {
-                $image_about = 'images/custom_logo/'.$config['meta_custom_logo'];
-            } else {
-                $image_about = '../images/custom_logo/'.$config['meta_custom_logo'];
-            }
-
-            if (file_exists(ENTERPRISE_DIR.'/'.$image_about) === true) {
-                $image_about = $image_about;
-            }
-        }
+        $image_about = ui_get_full_url('/images/custom_logo/logo-default-pandorafms-collapsed.svg', false, false, false);
 
         $dialog = '
             <div id="about-tabs" class="invisible overflow-hidden">
@@ -977,8 +944,8 @@ if (is_ajax()) {
                         <tbody>
                             <tr>
                                 <th style="width: 40%; border: 0px;">
-                                    <a href="https://pandorafms.com/" target="_blank">
-                                        <img src="'.$image_about.'" alt="logo" width="70%">
+                                    <a href="https://pandorafms.com/" target="_blank" class="header_center">
+                                        <img src="'.$image_about.'" alt="logo" width="50%">
                                     </a>
                                 </th>
                                 <th style="width: 60%; text-align: left; border: 0px;">
diff --git a/pandora_console/include/javascript/pandora.js b/pandora_console/include/javascript/pandora.js
index 247a0a8eda..8d7bf3a1b2 100644
--- a/pandora_console/include/javascript/pandora.js
+++ b/pandora_console/include/javascript/pandora.js
@@ -2366,7 +2366,7 @@ $(document).ready(function() {
     // Hidden  tips modal.
     $(".window").css("display", "none");
 
-    var type_about = "about_operation";
+    var type_about = "about";
     if ($(this).attr("id") === "icon_about") {
       type_about = "about";
     }

From 64b0bb55a8ee771d8c6b295349ee3325d155619b Mon Sep 17 00:00:00 2001
From: Daniel Maya <daniel.maya@pandorafms.com>
Date: Mon, 8 Jan 2024 16:10:07 +0100
Subject: [PATCH 095/231] #12729 Fixed weekly task

---
 pandora_console/include/functions_cron_task.php | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/pandora_console/include/functions_cron_task.php b/pandora_console/include/functions_cron_task.php
index 40a6e159cc..042d79dad7 100644
--- a/pandora_console/include/functions_cron_task.php
+++ b/pandora_console/include/functions_cron_task.php
@@ -383,6 +383,13 @@ function cron_task_run(
                             $nameday = strtolower($datetime->format('l'));
                         }
                     }
+                } else if (empty($old_args['first_execution']) === false) {
+                    $datetime = new DateTime();
+                    $datetime->setTimestamp($old_args['first_execution']);
+                    $datetime->modify('+7 day');
+                    $weekly_date = $datetime->format('Y-m-d');
+                    $weekly_time = $datetime->format('H:i:s');
+                    $old_args['first_execution'] = strtotime($weekly_date.' '.$weekly_time);
                 }
             } else {
                 // Add it to next execution.

From b220cc1eb45f9f972cb741a740f8fbbc8fcbb484 Mon Sep 17 00:00:00 2001
From: Daniel Maya <daniel.maya@pandorafms.com>
Date: Mon, 8 Jan 2024 16:19:37 +0100
Subject: [PATCH 096/231] #12624 Added close_dialog.svg

---
 pandora_console/images/close_dialog.svg | 14 ++++++++++++++
 1 file changed, 14 insertions(+)
 create mode 100644 pandora_console/images/close_dialog.svg

diff --git a/pandora_console/images/close_dialog.svg b/pandora_console/images/close_dialog.svg
new file mode 100644
index 0000000000..79938dacf8
--- /dev/null
+++ b/pandora_console/images/close_dialog.svg
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="20px" height="20px" viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <title>F911E81E-C05E-4E17-B88A-07CFEEBD0229</title>
+    <g id="Support" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="Pandora-ITSM---Soporte---4d2-Contact-info-popup" transform="translate(-410, -34)">
+            <g id="Content" transform="translate(10, 10)">
+                <g id="popup-close" transform="translate(400, 24)">
+                    <rect id="Rectangle" x="0" y="0" width="20" height="20"></rect>
+                    <path d="M2.46745396,2.46745396 C3.09072592,1.84418201 4.10124942,1.84418201 4.72452137,2.46745396 L10,7.743 L15.2754786,2.46745396 C15.8987506,1.84418201 16.9092741,1.84418201 17.532546,2.46745396 C18.1168635,3.05177142 18.1533833,3.97644668 17.6421056,4.60330886 L17.532546,4.72452137 L12.257,10 L17.532546,15.2754786 L17.6421056,15.3966911 C18.1533833,16.0235533 18.1168635,16.9482286 17.532546,17.532546 C16.9092741,18.155818 15.8987506,18.155818 15.2754786,17.532546 L10,12.257 L4.72452137,17.532546 C4.10124942,18.155818 3.09072592,18.155818 2.46745396,17.532546 C1.88313651,16.9482286 1.84661667,16.0235533 2.35789444,15.3966911 L2.46745396,15.2754786 L7.743,10 L2.46745396,4.72452137 L2.35789444,4.60330886 C1.84661667,3.97644668 1.88313651,3.05177142 2.46745396,2.46745396 Z" id="Path-6" fill="#FFFFFF"></path>
+                </g>
+            </g>
+        </g>
+    </g>
+</svg>
\ No newline at end of file

From d8a5f1a521bff115a2ab435e5ea1ec91e738ac41 Mon Sep 17 00:00:00 2001
From: Jonathan <jonathan.leon@pandorafms.com>
Date: Mon, 8 Jan 2024 16:35:37 +0100
Subject: [PATCH 097/231] #12560 fix type

---
 pandora_console/include/class/ConsoleSupervisor.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pandora_console/include/class/ConsoleSupervisor.php b/pandora_console/include/class/ConsoleSupervisor.php
index ae12f37772..b41cd23cb9 100644
--- a/pandora_console/include/class/ConsoleSupervisor.php
+++ b/pandora_console/include/class/ConsoleSupervisor.php
@@ -928,7 +928,7 @@ class ConsoleSupervisor
             false
         );
 
-        if ($data['type'] === 'NOTIF.UPDATEMANAGER.REGISTRATION' && $prev !== false) {
+        if ($data['type'] === 'NOTIF.LOG.ALERT' && $prev !== false) {
             return;
         } else if ($prev !== false
             && (time() - $prev['timestamp']) > $max_age

From 9a7ef16f9cabf17def8db87cf3adcc7dbd029740 Mon Sep 17 00:00:00 2001
From: "alejandro.campos@artica.es" <alejandro.campos@artica.es>
Date: Mon, 8 Jan 2024 17:31:52 +0100
Subject: [PATCH 098/231] implement several changes in top-n connection report
 item

---
 .../reporting_builder.item_editor.php         |  83 ++++++++-
 .../godmode/reporting/reporting_builder.php   |  13 ++
 pandora_console/include/functions_netflow.php | 170 ++++++++++++++----
 .../include/functions_reporting.php           |  23 ++-
 pandora_console/include/styles/pandora.css    |   4 +
 5 files changed, 253 insertions(+), 40 deletions(-)

diff --git a/pandora_console/godmode/reporting/reporting_builder.item_editor.php b/pandora_console/godmode/reporting/reporting_builder.item_editor.php
index 7199c5e15b..49a8419aa6 100755
--- a/pandora_console/godmode/reporting/reporting_builder.item_editor.php
+++ b/pandora_console/godmode/reporting/reporting_builder.item_editor.php
@@ -1042,7 +1042,11 @@ switch ($action) {
                     $resolution = $item['top_n'];
                     // Interval resolution.
                     $max_values = $item['top_n_value'];
-                    // Max values.
+                    $es = json_decode($item['external_source'], true);
+                    $top_n_type = $es['top_n_type'];
+                    $display_graph = $es['display_graph'];
+                    $display_summary = $es['display_summary'];
+                    $display_data_table = $es['display_data_table'];
                 break;
 
                 case 'permissions_report':
@@ -1687,6 +1691,75 @@ if (is_metaconsole() === true) {
             </td>
         </tr>
 
+        <tr id="row_top_n_type"   class="datos">
+            <td class="bolder"><?php echo __('Type'); ?></td>
+            <td  >
+                <?php
+                $types = [
+                    0 => __('Show aggregate by destination port'),
+                    1 => __('Show InBound/Outbound traffic per SrcIP/DestIP'),
+                ];
+                html_print_select(
+                    $types,
+                    'top_n_type',
+                    $top_n_type,
+                    ''
+                );
+                ?>
+            </td>
+        </tr>
+
+        <tr id="row_display_graph" class="datos">
+            <td class="bolder">
+                <?php
+                echo __('Display graph');
+                ?>
+            </td>
+            <td  >
+                <?php
+                html_print_checkbox_switch(
+                    'display_graph',
+                    1,
+                    ($display_graph ?? true)
+                );
+                ?>
+            </td>
+        </tr>
+
+        <tr id="row_display_summary_table" class="datos">
+            <td class="bolder">
+                <?php
+                echo __('Display summary table');
+                ?>
+            </td>
+            <td  >
+                <?php
+                html_print_checkbox_switch(
+                    'display_summary',
+                    1,
+                    ($display_summary ?? true)
+                );
+                ?>
+            </td>
+        </tr>
+
+        <tr id="row_display_data_table" class="datos">
+            <td class="bolder">
+                <?php
+                echo __('Display data table');
+                ?>
+            </td>
+            <td  >
+                <?php
+                html_print_checkbox_switch(
+                    'display_data_table',
+                    1,
+                    ($display_data_table ?? true)
+                );
+                ?>
+            </td>
+        </tr>
+
         <tr id="row_period_service_level"   class="datos">
             <td class="bolder">
                 <?php
@@ -7283,6 +7356,10 @@ function chooseType() {
     $("#row_alert_templates").hide();
     $("#row_alert_actions").hide();
     $("#row_servers").hide();
+    $("#row_top_n_type").hide();
+    $("#row_display_graph").hide();
+    $("#row_display_summary_table").hide();
+    $("#row_display_data_table").hide();
     $("#row_servers_all_opt").hide();
     $("#row_servers_all").hide();
     $("#row_multiple_servers").hide();
@@ -8219,6 +8296,10 @@ function chooseType() {
             $("#row_max_values").show();
             $("#row_resolution").show();
             $("#row_servers").show();
+            $("#row_top_n_type").show();
+            $("#row_display_graph").show();
+            $("#row_display_summary_table").show();
+            $("#row_display_data_table").show();
             $("#row_historical_db_check").hide();
             break;
 
diff --git a/pandora_console/godmode/reporting/reporting_builder.php b/pandora_console/godmode/reporting/reporting_builder.php
index 7d75b5bd27..4e071892e0 100755
--- a/pandora_console/godmode/reporting/reporting_builder.php
+++ b/pandora_console/godmode/reporting/reporting_builder.php
@@ -1874,6 +1874,13 @@ switch ($action) {
                                 $values['top_n_value'] = get_parameter(
                                     'max_values'
                                 );
+
+                                $es['top_n_type'] = get_parameter('top_n_type', '');
+                                $es['display_graph'] = get_parameter('display_graph', '');
+                                $es['display_summary'] = get_parameter('display_summary', '');
+                                $es['display_data_table'] = get_parameter('display_data_table', '');
+                                $values['external_source'] = json_encode($es);
+
                                 $good_format = true;
                             break;
 
@@ -2949,6 +2956,12 @@ switch ($action) {
                                 $values['top_n_value'] = get_parameter(
                                     'max_values'
                                 );
+
+                                $es['top_n_type'] = get_parameter('top_n_type', '');
+                                $es['display_graph'] = get_parameter('display_graph', '');
+                                $es['display_summary'] = get_parameter('display_summary', '');
+                                $es['display_data_table'] = get_parameter('display_data_table', '');
+                                $values['external_source'] = json_encode($es);
                                 $good_format = true;
                             break;
 
diff --git a/pandora_console/include/functions_netflow.php b/pandora_console/include/functions_netflow.php
index bc8495969f..c4d6b4dfe0 100644
--- a/pandora_console/include/functions_netflow.php
+++ b/pandora_console/include/functions_netflow.php
@@ -328,12 +328,13 @@ function netflow_data_table($data, $start_date, $end_date, $aggregate, $pdf=fals
 /**
  * Show a table with netflow top N data.
  *
- * @param array   $data        Netflow data.
- * @param integer $total_bytes Total bytes count to calculate percent data.
+ * @param array   $data          Netflow data.
+ * @param integer $total_bytes   Total bytes count to calculate percent data.
+ * @param boolean $show_extended Display extended table.
  *
  * @return string HTML data table.
  */
-function netflow_top_n_table(array $data, int $total_bytes)
+function netflow_top_n_table(array $data, int $total_bytes, bool $show_extended=false)
 {
     global $nfdump_date_format;
 
@@ -344,31 +345,42 @@ function netflow_top_n_table(array $data, int $total_bytes)
     $table->data = [];
 
     $table->head = [];
-    $table->head[0] = '<b>'.__('Source IP').'</b>';
-    $table->head[1] = '<b>'.__('Destination IP').'</b>';
-    $table->head[2] = '<b>'.__('Bytes').'</b>';
-    $table->head[3] = '<b>'.__('% Traffic').'</b>';
-    $table->head[4] = '<b>'.__('Avg. Throughput').'</b>';
-    $table->style[0] = 'padding: 4px';
+    if ($show_extended === false) {
+        $table->head[0] = '<b>'.__('Source IP').'</b>';
+        $table->head[1] = '<b>'.__('Destination IP').'</b>';
+        $table->head[2] = '<b>'.__('Bytes').'</b>';
+        $table->head[3] = '<b>'.__('% Traffic').'</b>';
+        $table->head[4] = '<b>'.__('Avg. Throughput').'</b>';
+        $table->style[0] = 'padding: 4px';
+    } else {
+        $table->head[0] = '<b>'.__('Source IP').'</b>';
+        $table->head[1] = '<b>'.__('Destination IP').'</b>';
+        $table->head[2] = '<b>'.__('Ingress bytes').'</b>';
+        $table->head[3] = '<b>'.__('Egress bytes').'</b>';
+        $table->head[4] = '<b>'.__('Ingress packets').'</b>';
+        $table->head[5] = '<b>'.__('Egress packets').'</b>';
+        $table->head[6] = '<b>'.__('% Traffic').'</b>';
+        $table->head[7] = '<b>'.__('Avg. Throughput').'</b>';
+        $table->style[0] = 'padding: 4px';
+    }
 
     $i = 0;
 
     foreach ($data as $value) {
         $table->data[$i][0] = $value['ip_src'];
         $table->data[$i][1] = $value['ip_dst'];
-        $table->data[$i][2] = network_format_bytes($value['bytes']);
 
-        $traffic = '-';
-
-        if ($total_bytes > 0) {
-            $traffic = sprintf(
-                '%.2f',
-                (($value['bytes'] / $total_bytes) * 100)
-            );
+        if ($show_extended === true) {
+            $table->data[$i][2] = network_format_bytes($value['ibytes']);
+            $table->data[$i][3] = network_format_bytes($value['obytes']);
+            $table->data[$i][4] = network_format_bytes($value['ipackages']);
+            $table->data[$i][5] = network_format_bytes($value['opackages']);
+            $table->data[$i][6] = $value['traffic'].' %';
+        } else {
+            $table->data[$i][2] = network_format_bytes($value['bytes']);
+            $table->data[$i][3] = $value['traffic'].' %';
         }
 
-        $table->data[$i][3] = $traffic.' %';
-
         $units = [
             'bps',
             'Kbps',
@@ -382,7 +394,11 @@ function netflow_top_n_table(array $data, int $total_bytes)
 
         $value['bps'] /= pow(1024, $pow);
 
-        $table->data[$i][4] = round($value['bps'], 2).' '.$units[$pow];
+        if ($show_extended === true) {
+            $table->data[$i][7] = round($value['bps'], 2).' '.$units[$pow];
+        } else {
+            $table->data[$i][4] = round($value['bps'], 2).' '.$units[$pow];
+        }
 
         $i++;
     }
@@ -481,7 +497,9 @@ function netflow_get_top_N(
     string $end_date,
     array $filter,
     int $max,
-    string $connection_name=''
+    string $connection_name='',
+    bool $extended_info=false,
+    int $total_bytes=0
 ) {
     global $nfdump_date_format;
 
@@ -496,7 +514,8 @@ function netflow_get_top_N(
         return json_decode($data, true);
     }
 
-    $options = '-o "fmt:%sap,%dap,%ibyt,%bps" -q -n '.$max.' -s record/bytes -t '.date($nfdump_date_format, $start_date).'-'.date($nfdump_date_format, $end_date);
+    $opts = ($extended_info === true) ? 'fmt:%sap,%dap,%ibyt,%obyt,%ipkt,%opkt,%bps' : 'fmt:%sap,%dap,%ibyt,%ipkt,%bps';
+    $options = '-o "'.$opts.'" -q -n '.$max.' -s record/bytes -t '.date($nfdump_date_format, $start_date).'-'.date($nfdump_date_format, $end_date);
 
     $command = netflow_get_command($options, $filter, $start_date, $end_date);
 
@@ -516,8 +535,29 @@ function netflow_get_top_N(
 
         $values[$i]['ip_src'] = $parsed_line[0];
         $values[$i]['ip_dst'] = $parsed_line[1];
-        $values[$i]['bytes'] = $parsed_line[2];
-        $values[$i]['bps'] = $parsed_line[3];
+
+        $traffic = '-';
+        if ($total_bytes > 0) {
+            $conn_bytes = $parsed_line[2];
+
+            $traffic = sprintf(
+                '%.2f',
+                (($conn_bytes / $total_bytes) * 100)
+            );
+        }
+
+        $values[$i]['traffic'] = $traffic;
+
+        if ($extended_info === true) {
+            $values[$i]['ibytes'] = $parsed_line[2];
+            $values[$i]['obytes'] = $parsed_line[3];
+            $values[$i]['ipackets'] = $parsed_line[4];
+            $values[$i]['opackets'] = $parsed_line[5];
+            $values[$i]['bps'] = $parsed_line[6];
+        } else {
+            $values[$i]['bytes'] = $parsed_line[2];
+            $values[$i]['bps'] = $parsed_line[3];
+        }
 
         $i++;
     }
@@ -1341,7 +1381,11 @@ function netflow_draw_item(
     $output='HTML',
     $address_resolution=false,
     $width_content=false,
-    $height_content=false
+    $height_content=false,
+    $extended=false,
+    $show_graph=true,
+    $show_summary=true,
+    $show_table=true
 ) {
     $aggregate = $filter['aggregate'];
     $interval = ($end_date - $start_date);
@@ -1496,7 +1540,9 @@ function netflow_draw_item(
                 $end_date,
                 $filter,
                 $max_aggregates,
-                $connection_name
+                $connection_name,
+                $extended,
+                $data_summary['totalbytes']
             );
 
             if (empty($data_top_n) === true) {
@@ -1505,16 +1551,61 @@ function netflow_draw_item(
 
             if ($output === 'HTML' || $output === 'PDF') {
                 $html = '<table class="w100p">';
-                $html .= '<tr>';
-                $html .= "<td class='w50p'>";
-                $html .= netflow_summary_table($data_summary);
-                $html .= '</td>';
-                $html .= '</tr>';
-                $html .= '<tr>';
-                $html .= "<td class='w100p'>";
-                $html .= netflow_top_n_table($data_top_n, $data_summary['totalbytes']);
-                $html .= '</td>';
-                $html .= '</tr>';
+
+                if ($show_graph === true && $max_aggregates <= 10) {
+                    $labels = array_map(
+                        function ($conn) {
+                            return __('% Traffic').' '.$conn['ip_src'].' - '.$conn['ip_dst'];
+                        },
+                        $data_top_n
+                    );
+
+                    $pie_data = array_map(
+                        function ($conn) {
+                            return $conn['traffic'];
+                        },
+                        $data_top_n
+                    );
+
+                    $graph_output = pie_graph(
+                        $pie_data,
+                        [
+                            'legend' => [
+                                'display'  => true,
+                                'position' => 'right',
+                                'align'    => 'center',
+                            ],
+                            'labels' => $labels,
+                        ]
+                    );
+
+                    $html .= '<tr>';
+                    $html .= "<td class='w500p padding-bottom-25px'>";
+                    $html .= $graph_output;
+                    $html .= '</td>';
+                    $html .= '</tr>';
+                }
+
+                if ($show_summary === true) {
+                    $html .= '<tr>';
+                    $html .= "<td class='w50p'>";
+                    $html .= netflow_summary_table($data_summary);
+                    $html .= '</td>';
+                    $html .= '</tr>';
+                }
+
+                if ($show_table === true) {
+                    $html .= '<tr>';
+                    $html .= "<td class='w100p'>";
+                    $html .= netflow_top_n_table(
+                        $data_top_n,
+                        $data_summary['totalbytes'],
+                        $extended
+                    );
+                    $html .= '</td>';
+                    $html .= '</tr>';
+                }
+
                 $html .= '</table>';
 
                 return $html;
@@ -1638,7 +1729,8 @@ function netflow_get_item_data(
     string $type_netflow,
     array $filter,
     int $max_aggregates,
-    string $connection_name
+    string $connection_name,
+    bool $extended=false
 ) {
     $data = [];
 
@@ -1656,7 +1748,9 @@ function netflow_get_item_data(
                 $end_date,
                 $filter,
                 $max_aggregates,
-                $connection_name
+                $connection_name,
+                $extended,
+                $data_summary['totalbytes']
             );
 
             $data = [
diff --git a/pandora_console/include/functions_reporting.php b/pandora_console/include/functions_reporting.php
index bccada9cb8..2b8a0f01ef 100755
--- a/pandora_console/include/functions_reporting.php
+++ b/pandora_console/include/functions_reporting.php
@@ -6981,6 +6981,20 @@ function reporting_netflow(
         $filter['aggregate'] = 'dstport';
     }
 
+    $es = json_decode($content['external_source'], true);
+
+    $extended = false;
+    $show_graph = false;
+    $show_summary = false;
+    $show_table = false;
+
+    if (empty($es) === false) {
+        $extended = ((int) $es['top_n_type'] === 1);
+        $show_graph = ((int) $es['display_graph'] === 1);
+        $show_summary = ((int) $es['display_summary'] === 1);
+        $show_table = ((int) $es['display_data_table'] === 1);
+    }
+
     switch ($type) {
         case 'dinamic':
         case 'static':
@@ -6992,7 +7006,14 @@ function reporting_netflow(
                 $filter,
                 $content['top_n_value'],
                 $content['server_name'],
-                (($pdf === true) ? 'PDF' : 'HTML')
+                (($pdf === true) ? 'PDF' : 'HTML'),
+                false,
+                false,
+                false,
+                $extended,
+                $show_graph,
+                $show_summary,
+                $show_table
             );
         break;
 
diff --git a/pandora_console/include/styles/pandora.css b/pandora_console/include/styles/pandora.css
index 71118e529a..835c964758 100644
--- a/pandora_console/include/styles/pandora.css
+++ b/pandora_console/include/styles/pandora.css
@@ -1017,6 +1017,10 @@ select:-internal-list-box {
   padding-bottom: 5px;
 }
 
+.padding-bottom-25px {
+  padding-bottom: 25px;
+}
+
 .padding-right-2 {
   padding-right: 2em;
 }

From f6ee798603d5e4d939a6f6f1555c3dd8f06d1084 Mon Sep 17 00:00:00 2001
From: "alejandro.campos@artica.es" <alejandro.campos@artica.es>
Date: Mon, 8 Jan 2024 17:59:23 +0100
Subject: [PATCH 099/231] implement several changes in top-n connection report
 item

---
 pandora_console/include/functions_netflow.php | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/pandora_console/include/functions_netflow.php b/pandora_console/include/functions_netflow.php
index c4d6b4dfe0..51b74c59b0 100644
--- a/pandora_console/include/functions_netflow.php
+++ b/pandora_console/include/functions_netflow.php
@@ -349,8 +349,9 @@ function netflow_top_n_table(array $data, int $total_bytes, bool $show_extended=
         $table->head[0] = '<b>'.__('Source IP').'</b>';
         $table->head[1] = '<b>'.__('Destination IP').'</b>';
         $table->head[2] = '<b>'.__('Bytes').'</b>';
-        $table->head[3] = '<b>'.__('% Traffic').'</b>';
-        $table->head[4] = '<b>'.__('Avg. Throughput').'</b>';
+        $table->head[3] = '<b>'.__('Packets').'</b>';
+        $table->head[4] = '<b>'.__('% Traffic').'</b>';
+        $table->head[5] = '<b>'.__('Avg. Throughput').'</b>';
         $table->style[0] = 'padding: 4px';
     } else {
         $table->head[0] = '<b>'.__('Source IP').'</b>';
@@ -378,7 +379,8 @@ function netflow_top_n_table(array $data, int $total_bytes, bool $show_extended=
             $table->data[$i][6] = $value['traffic'].' %';
         } else {
             $table->data[$i][2] = network_format_bytes($value['bytes']);
-            $table->data[$i][3] = $value['traffic'].' %';
+            $table->data[$i][3] = network_format_bytes($value['ipackages']);
+            $table->data[$i][4] = $value['traffic'].' %';
         }
 
         $units = [
@@ -397,7 +399,7 @@ function netflow_top_n_table(array $data, int $total_bytes, bool $show_extended=
         if ($show_extended === true) {
             $table->data[$i][7] = round($value['bps'], 2).' '.$units[$pow];
         } else {
-            $table->data[$i][4] = round($value['bps'], 2).' '.$units[$pow];
+            $table->data[$i][5] = round($value['bps'], 2).' '.$units[$pow];
         }
 
         $i++;

From 19024e63d304a6d854e1f8f05e324813a813f450 Mon Sep 17 00:00:00 2001
From: "alejandro.campos@artica.es" <alejandro.campos@artica.es>
Date: Mon, 8 Jan 2024 18:05:29 +0100
Subject: [PATCH 100/231] implement several changes in top-n connection report
 item

---
 pandora_console/include/functions_netflow.php | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/pandora_console/include/functions_netflow.php b/pandora_console/include/functions_netflow.php
index 51b74c59b0..770314f507 100644
--- a/pandora_console/include/functions_netflow.php
+++ b/pandora_console/include/functions_netflow.php
@@ -374,12 +374,12 @@ function netflow_top_n_table(array $data, int $total_bytes, bool $show_extended=
         if ($show_extended === true) {
             $table->data[$i][2] = network_format_bytes($value['ibytes']);
             $table->data[$i][3] = network_format_bytes($value['obytes']);
-            $table->data[$i][4] = network_format_bytes($value['ipackages']);
-            $table->data[$i][5] = network_format_bytes($value['opackages']);
+            $table->data[$i][4] = (empty($value['ipackages']) === true) ? 0 : $value['ipackages'];
+            $table->data[$i][5] = (empty($value['opackages']) === true) ? 0 : $value['opackages'];
             $table->data[$i][6] = $value['traffic'].' %';
         } else {
             $table->data[$i][2] = network_format_bytes($value['bytes']);
-            $table->data[$i][3] = network_format_bytes($value['ipackages']);
+            $table->data[$i][3] = (empty($value['ipackages']) === true) ? 0 : $value['ipackages'];
             $table->data[$i][4] = $value['traffic'].' %';
         }
 

From 600797d531a2ba9e51db042f17a8fc3055c933fe Mon Sep 17 00:00:00 2001
From: "felix.suarez" <felix.suarez@pandorafms.com>
Date: Mon, 8 Jan 2024 14:50:11 -0600
Subject: [PATCH 101/231] Previous installation verification

---
 pandora_server/pandora_server_installer | 31 ++++++++++++++++++++++++-
 1 file changed, 30 insertions(+), 1 deletion(-)

diff --git a/pandora_server/pandora_server_installer b/pandora_server/pandora_server_installer
index ca831fb1e5..f77a2c294d 100755
--- a/pandora_server/pandora_server_installer
+++ b/pandora_server/pandora_server_installer
@@ -191,7 +191,36 @@ install () {
 		esac
 		shift
 	done
-	
+
+	# Alternative destdir has been selected	
+	if [ ! -z "$DESTDIR" ]
+	then
+		# Files from previous installation were found
+		if [ -d "/usr/lib/perl5/PandoraFMS" ] 
+		then
+			GREEN='\033[01;32m'
+			NONE='\033[0m'
+			
+			echo -e -n "Files from a previous installation were found in ${GREEN}/usr/lib/perl5/PandoraFMS/${NONE}. " 	
+			read -p "That directory will be deleted in order to preserve integrity. Do you wish to proceed? (y/N): " USERAPPROVAL
+
+			if [ "${USERAPPROVAL,,}" = "y" ]; then
+				rm -rf "/usr/lib/perl5/PandoraFMS"
+				echo -e "Previous PandoraFMS directory deleted successfully"
+			else
+				echo -e -n "Files in ${GREEN}/usr/lib/perl5/PandoraFMS/${NONE} will not be deleted. This may cause issues. " 	
+				read -p "Do you want to proceed with the installation anyway? (y/N): " USERAPPROVAL
+
+				if [ "${USERAPPROVAL,,}" = "y" ]; then
+					echo "Proceeding with the installation anyway. This may cause problems in the future due to the existence of files from previous installations."
+				else
+					echo "Installation aborted. You chose not to proceed."
+					exit 1
+				fi
+			fi
+		fi
+	fi
+
 	if [ "$LINUX" = YES ]
 	then
 		echo "$DISTRO distribution detected"

From 2ace34425cd1fc001b8c05ee3f9ebb69421f6dc7 Mon Sep 17 00:00:00 2001
From: Jonathan <jonathan.leon@pandorafms.com>
Date: Tue, 9 Jan 2024 16:04:28 +0100
Subject: [PATCH 102/231] #12143 fix datepicker

---
 .../include/javascript/pandora_dashboards.js          | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/pandora_console/include/javascript/pandora_dashboards.js b/pandora_console/include/javascript/pandora_dashboards.js
index 1adc27eec9..3b2824a89e 100644
--- a/pandora_console/include/javascript/pandora_dashboards.js
+++ b/pandora_console/include/javascript/pandora_dashboards.js
@@ -8,7 +8,8 @@ function show_option_dialog(settings) {
     modal: {
       title: settings.title,
       cancel: settings.btn_cancel,
-      ok: settings.btn_text
+      ok: settings.btn_text,
+      overlay: true
     },
     onshow: {
       page: settings.url,
@@ -25,6 +26,9 @@ function show_option_dialog(settings) {
     oncancel: {
       reload: true
     },
+    onclose: {
+      reload: true
+    },
     ajax_callback: update_dashboard
   });
 }
@@ -462,8 +466,10 @@ function initialiceLayout(data) {
 
   function configurationWidget(cellId, widgetId, size) {
     var reload = 0;
+    var overlay = false;
     if (widgetId == 46) {
       reload = 1;
+      overlay = true;
     }
     title = $("#hidden-widget_name_" + cellId).val();
     load_modal({
@@ -473,7 +479,8 @@ function initialiceLayout(data) {
       modal: {
         title: "Configure widget " + title,
         cancel: "Cancel",
-        ok: "Ok"
+        ok: "Ok",
+        overlay: overlay
       },
       onshow: {
         page: data.page,

From 6bb619fb62580f413094aa942d1e1f888e1b0c53 Mon Sep 17 00:00:00 2001
From: Jonathan <jonathan.leon@pandorafms.com>
Date: Tue, 9 Jan 2024 16:47:53 +0100
Subject: [PATCH 103/231] #12733 fix delete button

---
 pandora_console/godmode/events/event_filter.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pandora_console/godmode/events/event_filter.php b/pandora_console/godmode/events/event_filter.php
index c4f1860e6f..617fa3da73 100644
--- a/pandora_console/godmode/events/event_filter.php
+++ b/pandora_console/godmode/events/event_filter.php
@@ -210,7 +210,7 @@ foreach ($filters as $filter) {
             true,
             [
                 'title' => __('Delete'),
-                'class' => 'invert_filter',
+                'class' => 'invert_filter main_menu_icon',
             ]
         ).'</a>';
     }

From 678972bc587a9938cf7931b938ee7545125db77b Mon Sep 17 00:00:00 2001
From: "felix.suarez" <felix.suarez@pandorafms.com>
Date: Tue, 9 Jan 2024 16:01:00 -0600
Subject: [PATCH 104/231] Add monitoring types

---
 pandora_agents/unix/pandora_agent | 59 ++++++++++++++++++++++---------
 1 file changed, 43 insertions(+), 16 deletions(-)

diff --git a/pandora_agents/unix/pandora_agent b/pandora_agents/unix/pandora_agent
index 65e217abf7..c56ccf33aa 100755
--- a/pandora_agents/unix/pandora_agent
+++ b/pandora_agents/unix/pandora_agent
@@ -3889,7 +3889,8 @@ sub module_logger ($) {
 	my $status = grep_logs(
 		$module->{'name'}, 
 		$module->{'params'}, 
-		$module->{'filter'} 
+		$module->{'filter'},
+		$module->{'type'}
 	);
 
 	return $status;
@@ -3926,20 +3927,25 @@ my $encode_sub = defined(&MIME::Base64::encode_base64) ? \&MIME::Base64::encode_
 };
 
 sub grep_logs {
-    my ($str_name, $str_file, $str_regex) = @_;
+    my ($module_name, $log_file, $reg_exp, $module_type) = @_;
 
-    if(!$str_name){
+    if(!$module_name){
         log_message("module_logger", "Missing module name");
         return;
     }
 
-    if(!$str_file){
+    if(!$log_file){
         log_message("module_logger", "Missing file name");
         return;
     }
 
-	if(!$str_regex){
-		$str_regex = '.*';
+	if(!$module_type){
+        log_message("module_logger", "Missing module type");
+        return;
+    }
+
+	if(!$reg_exp){
+		$reg_exp = '.*';
 	}
 
     my $idx_dir = '/tmp/'; 
@@ -3947,9 +3953,6 @@ sub grep_logs {
     my $idx_pos = 0;
     my $idx_size = 0;
     my $idx_ino = '';
-    my $module_name = $str_name;
-    my $log_file = $str_file;
-    my $reg_exp = $str_regex;
 
     # Check that log file exists
     if (! -e $log_file) {
@@ -3975,7 +3978,7 @@ sub grep_logs {
         return if load_idx(\$idx_pos, \$idx_ino, \$idx_file, \$idx_size) == 1;
         my @data = parse_log(\$idx_pos, \$idx_ino, \$idx_file, \$log_file, \$module_name, \$reg_exp, \$idx_size);
 
-		my $output = create_log($module_name, @data);
+		my $output = create_log($module_name, $module_type, @data);
 	
         return $output;
     }
@@ -4090,19 +4093,26 @@ sub grep_logs {
     }
 
     sub create_log {
-        my ($module_name, @data) = @_;
+        my ($module_name, $module_type, @data) = @_;
 
         # No data
-        if ($#data < 0) {
+        if ($#data < 0 && $module_type ne "generic_proc") {
             return;
         }
         
         # Log module
         my $output = "<log_module>\n";
-        $output .= "<source><![CDATA[" . $module_name . "]]></source>\n";
-        $output .= "<encoding>base64</encoding>\n";
-        $output .= "<data><![CDATA[";
-        $output .= &$encode_sub(join('', @data), '');
+        $output .= "	<source><![CDATA[" . $module_name . "]]></source>\n";
+		$output .= "	<type><![CDATA[" . $module_type . "]]></type>\n";
+
+		my $data_content = process_log_monitoring($module_type, @data);
+
+		if($module_type eq "log"){
+			$output .= "	<encoding>base64</encoding>\n";
+		}
+
+        $output .= "	<data><![CDATA[";
+        $output .= $data_content;
         $output .= "]]></data>\n";
         $output .= "</log_module>\n";
 
@@ -4111,6 +4121,23 @@ sub grep_logs {
 
 }
 
+sub process_log_monitoring {
+	my ($module_type, @data) = @_;
+	my $output = "";
+
+	if ($module_type eq "log"){
+		$output = &$encode_sub(join('', @data), '');
+	} elsif ($module_type eq "generic_data") {
+		$output = scalar @data;
+	} elsif ($module_type eq "generic_proc"){
+		$output = scalar @data > 0 ? 1 : 0;
+	} elsif ($module_type eq "generic_data_string" || $module_type eq "async_string"){
+		$output = join('', @data);
+	}
+
+	return $output;
+}
+
 ################################################################################
 # TERM Handler
 ################################################################################

From 353c7e1fa14d9b527c430664165c43247443adc5 Mon Sep 17 00:00:00 2001
From: artica <artica.devel@gmail.com>
Date: Wed, 10 Jan 2024 01:00:40 +0100
Subject: [PATCH 105/231] Auto-updated build strings.

---
 pandora_agents/unix/DEBIAN/control                    | 2 +-
 pandora_agents/unix/DEBIAN/make_deb_package.sh        | 2 +-
 pandora_agents/unix/pandora_agent                     | 2 +-
 pandora_agents/unix/pandora_agent.redhat.spec         | 2 +-
 pandora_agents/unix/pandora_agent.redhat_bin.el8.spec | 2 +-
 pandora_agents/unix/pandora_agent.redhat_bin.el9.spec | 2 +-
 pandora_agents/unix/pandora_agent.redhat_bin.spec     | 2 +-
 pandora_agents/unix/pandora_agent.spec                | 2 +-
 pandora_agents/unix/pandora_agent_installer           | 2 +-
 pandora_agents/win32/installer/pandora.mpi            | 2 +-
 pandora_agents/win32/pandora.cc                       | 2 +-
 pandora_agents/win32/versioninfo.rc                   | 2 +-
 pandora_console/DEBIAN/control                        | 2 +-
 pandora_console/DEBIAN/make_deb_package.sh            | 2 +-
 pandora_console/include/config_process.php            | 2 +-
 pandora_console/install.php                           | 2 +-
 pandora_console/pandora_console.redhat.spec           | 2 +-
 pandora_console/pandora_console.rhel7.spec            | 2 +-
 pandora_console/pandora_console.spec                  | 2 +-
 pandora_server/DEBIAN/control                         | 2 +-
 pandora_server/DEBIAN/make_deb_package.sh             | 2 +-
 pandora_server/lib/PandoraFMS/Config.pm               | 2 +-
 pandora_server/lib/PandoraFMS/PluginTools.pm          | 2 +-
 pandora_server/pandora_server.redhat.spec             | 2 +-
 pandora_server/pandora_server.spec                    | 2 +-
 pandora_server/pandora_server_installer               | 2 +-
 pandora_server/util/pandora_db.pl                     | 2 +-
 pandora_server/util/pandora_manage.pl                 | 2 +-
 28 files changed, 28 insertions(+), 28 deletions(-)

diff --git a/pandora_agents/unix/DEBIAN/control b/pandora_agents/unix/DEBIAN/control
index f4cf6d6873..38f1c407fb 100644
--- a/pandora_agents/unix/DEBIAN/control
+++ b/pandora_agents/unix/DEBIAN/control
@@ -1,5 +1,5 @@
 package: pandorafms-agent-unix
-Version: 7.0NG.775-240109
+Version: 7.0NG.775-240110
 Architecture: all
 Priority: optional
 Section: admin
diff --git a/pandora_agents/unix/DEBIAN/make_deb_package.sh b/pandora_agents/unix/DEBIAN/make_deb_package.sh
index 0d7bf85256..ec1ed096e0 100644
--- a/pandora_agents/unix/DEBIAN/make_deb_package.sh
+++ b/pandora_agents/unix/DEBIAN/make_deb_package.sh
@@ -14,7 +14,7 @@
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 # GNU General Public License for more details.
 
-pandora_version="7.0NG.775-240109"
+pandora_version="7.0NG.775-240110"
 
 echo "Test if you has the tools for to make the packages."
 whereis dpkg-deb | cut -d":" -f2 | grep dpkg-deb > /dev/null
diff --git a/pandora_agents/unix/pandora_agent b/pandora_agents/unix/pandora_agent
index 65e217abf7..5e32d4cda2 100755
--- a/pandora_agents/unix/pandora_agent
+++ b/pandora_agents/unix/pandora_agent
@@ -1039,7 +1039,7 @@ my $Sem = undef;
 my $ThreadSem = undef;
 
 use constant AGENT_VERSION => '7.0NG.775';
-use constant AGENT_BUILD => '240109';
+use constant AGENT_BUILD => '240110';
 
 # Agent log default file size maximum and instances
 use constant DEFAULT_MAX_LOG_SIZE => 600000;
diff --git a/pandora_agents/unix/pandora_agent.redhat.spec b/pandora_agents/unix/pandora_agent.redhat.spec
index 25a839e06d..f50c52a799 100644
--- a/pandora_agents/unix/pandora_agent.redhat.spec
+++ b/pandora_agents/unix/pandora_agent.redhat.spec
@@ -4,7 +4,7 @@
 %global __os_install_post %{nil}
 %define name        pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240109
+%define release     240110
 
 Summary:            Pandora FMS Linux agent, PERL version
 Name:               %{name}
diff --git a/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec b/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec
index 71642c1bea..e47ca2fccc 100644
--- a/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec
+++ b/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec
@@ -5,7 +5,7 @@
 %define name        pandorafms_agent_linux_bin
 %define source_name pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240109
+%define release     240110
 %define debug_package %{nil}
 
 Summary:            Pandora FMS Linux agent, binary version
diff --git a/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec b/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec
index bbd4bddda3..7e3f12c1b9 100644
--- a/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec
+++ b/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec
@@ -5,7 +5,7 @@
 %define name        pandorafms_agent_linux_bin
 %define source_name pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240109
+%define release     240110
 %define debug_package %{nil}
 
 Summary:            Pandora FMS Linux agent, binary version
diff --git a/pandora_agents/unix/pandora_agent.redhat_bin.spec b/pandora_agents/unix/pandora_agent.redhat_bin.spec
index bea5350cf4..33f183ece0 100644
--- a/pandora_agents/unix/pandora_agent.redhat_bin.spec
+++ b/pandora_agents/unix/pandora_agent.redhat_bin.spec
@@ -5,7 +5,7 @@
 %define name        pandorafms_agent_linux_bin
 %define source_name pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240109
+%define release     240110
 
 Summary:            Pandora FMS Linux agent, binary version
 Name:               %{name}
diff --git a/pandora_agents/unix/pandora_agent.spec b/pandora_agents/unix/pandora_agent.spec
index 77a2f924c5..f368c1d849 100644
--- a/pandora_agents/unix/pandora_agent.spec
+++ b/pandora_agents/unix/pandora_agent.spec
@@ -4,7 +4,7 @@
 %global __os_install_post %{nil}
 %define name        pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240109
+%define release     240110
 
 Summary:            Pandora FMS Linux agent, PERL version
 Name:               %{name}
diff --git a/pandora_agents/unix/pandora_agent_installer b/pandora_agents/unix/pandora_agent_installer
index 5d28ca2209..2607868f4c 100755
--- a/pandora_agents/unix/pandora_agent_installer
+++ b/pandora_agents/unix/pandora_agent_installer
@@ -10,7 +10,7 @@
 # **********************************************************************
 
 PI_VERSION="7.0NG.775"
-PI_BUILD="240109"
+PI_BUILD="240110"
 OS_NAME=`uname -s`
 
 FORCE=0
diff --git a/pandora_agents/win32/installer/pandora.mpi b/pandora_agents/win32/installer/pandora.mpi
index 47edea04b1..6881464877 100644
--- a/pandora_agents/win32/installer/pandora.mpi
+++ b/pandora_agents/win32/installer/pandora.mpi
@@ -186,7 +186,7 @@ UpgradeApplicationID
 {}
 
 Version
-{240109}
+{240110}
 
 ViewReadme
 {Yes}
diff --git a/pandora_agents/win32/pandora.cc b/pandora_agents/win32/pandora.cc
index d2b31d56fb..f128cb7ae7 100644
--- a/pandora_agents/win32/pandora.cc
+++ b/pandora_agents/win32/pandora.cc
@@ -30,7 +30,7 @@ using namespace Pandora;
 using namespace Pandora_Strutils;
 
 #define PATH_SIZE    _MAX_PATH+1
-#define PANDORA_VERSION ("7.0NG.775 Build 240109")
+#define PANDORA_VERSION ("7.0NG.775 Build 240110")
 
 string pandora_path;
 string pandora_dir;
diff --git a/pandora_agents/win32/versioninfo.rc b/pandora_agents/win32/versioninfo.rc
index ace88b3231..e459b72a99 100644
--- a/pandora_agents/win32/versioninfo.rc
+++ b/pandora_agents/win32/versioninfo.rc
@@ -11,7 +11,7 @@ BEGIN
       VALUE "LegalCopyright", "Pandora FMS"
       VALUE "OriginalFilename", "PandoraAgent.exe"
       VALUE "ProductName", "Pandora FMS Windows Agent"
-      VALUE "ProductVersion", "(7.0NG.775(Build 240109))"
+      VALUE "ProductVersion", "(7.0NG.775(Build 240110))"
       VALUE "FileVersion", "1.0.0.0"
     END
   END
diff --git a/pandora_console/DEBIAN/control b/pandora_console/DEBIAN/control
index bad60d688e..295a0b97c4 100644
--- a/pandora_console/DEBIAN/control
+++ b/pandora_console/DEBIAN/control
@@ -1,5 +1,5 @@
 package: pandorafms-console
-Version: 7.0NG.775-240109
+Version: 7.0NG.775-240110
 Architecture: all
 Priority: optional
 Section: admin
diff --git a/pandora_console/DEBIAN/make_deb_package.sh b/pandora_console/DEBIAN/make_deb_package.sh
index 58da53bd56..4e047827f3 100644
--- a/pandora_console/DEBIAN/make_deb_package.sh
+++ b/pandora_console/DEBIAN/make_deb_package.sh
@@ -14,7 +14,7 @@
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 # GNU General Public License for more details.
 
-pandora_version="7.0NG.775-240109"
+pandora_version="7.0NG.775-240110"
 
 package_pear=0
 package_pandora=1
diff --git a/pandora_console/include/config_process.php b/pandora_console/include/config_process.php
index 3b0e78ab45..f1279398b4 100644
--- a/pandora_console/include/config_process.php
+++ b/pandora_console/include/config_process.php
@@ -20,7 +20,7 @@
 /**
  * Pandora build version and version
  */
-$build_version = 'PC240109';
+$build_version = 'PC240110';
 $pandora_version = 'v7.0NG.775';
 
 // Do not overwrite default timezone set if defined.
diff --git a/pandora_console/install.php b/pandora_console/install.php
index 87409ba611..035c6009da 100644
--- a/pandora_console/install.php
+++ b/pandora_console/install.php
@@ -131,7 +131,7 @@
         <div style='padding-bottom: 50px'>
             <?php
             $version = '7.0NG.775';
-            $build = '240109';
+            $build = '240110';
             $banner = "v$version Build $build";
             error_reporting(0);
 
diff --git a/pandora_console/pandora_console.redhat.spec b/pandora_console/pandora_console.redhat.spec
index 15e64563ea..77fe95d2c8 100644
--- a/pandora_console/pandora_console.redhat.spec
+++ b/pandora_console/pandora_console.redhat.spec
@@ -6,7 +6,7 @@
 %define debug_package %{nil}
 %define name        pandorafms_console
 %define version     7.0NG.775
-%define release     240109
+%define release     240110
 
 # User and Group under which Apache is running
 %define httpd_name  httpd
diff --git a/pandora_console/pandora_console.rhel7.spec b/pandora_console/pandora_console.rhel7.spec
index c7e810be7e..e939983d8c 100644
--- a/pandora_console/pandora_console.rhel7.spec
+++ b/pandora_console/pandora_console.rhel7.spec
@@ -6,7 +6,7 @@
 %define debug_package %{nil}
 %define name        pandorafms_console
 %define version     7.0NG.775
-%define release     240109
+%define release     240110
 
 # User and Group under which Apache is running
 %define httpd_name  httpd
diff --git a/pandora_console/pandora_console.spec b/pandora_console/pandora_console.spec
index 854e852358..e9b370b358 100644
--- a/pandora_console/pandora_console.spec
+++ b/pandora_console/pandora_console.spec
@@ -3,7 +3,7 @@
 #
 %define name        pandorafms_console
 %define version     7.0NG.775
-%define release     240109
+%define release     240110
 %define httpd_name      httpd
 # User and Group under which Apache is running
 %define httpd_name  apache2
diff --git a/pandora_server/DEBIAN/control b/pandora_server/DEBIAN/control
index 258d8fda89..87ae731961 100644
--- a/pandora_server/DEBIAN/control
+++ b/pandora_server/DEBIAN/control
@@ -1,5 +1,5 @@
 package: pandorafms-server
-Version: 7.0NG.775-240109
+Version: 7.0NG.775-240110
 Architecture: all
 Priority: optional
 Section: admin
diff --git a/pandora_server/DEBIAN/make_deb_package.sh b/pandora_server/DEBIAN/make_deb_package.sh
index 64668c31b0..9505766b5b 100644
--- a/pandora_server/DEBIAN/make_deb_package.sh
+++ b/pandora_server/DEBIAN/make_deb_package.sh
@@ -14,7 +14,7 @@
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 # GNU General Public License for more details.
 
-pandora_version="7.0NG.775-240109"
+pandora_version="7.0NG.775-240110"
 
 package_cpan=0
 package_pandora=1
diff --git a/pandora_server/lib/PandoraFMS/Config.pm b/pandora_server/lib/PandoraFMS/Config.pm
index 018471caa1..10cbd215ad 100644
--- a/pandora_server/lib/PandoraFMS/Config.pm
+++ b/pandora_server/lib/PandoraFMS/Config.pm
@@ -46,7 +46,7 @@ our @EXPORT = qw(
 
 # version: Defines actual version of Pandora Server for this module only
 my $pandora_version = "7.0NG.775";
-my $pandora_build = "240109";
+my $pandora_build = "240110";
 our $VERSION = $pandora_version." ".$pandora_build;
 
 # Setup hash
diff --git a/pandora_server/lib/PandoraFMS/PluginTools.pm b/pandora_server/lib/PandoraFMS/PluginTools.pm
index 09219a05a5..393dbddb4a 100644
--- a/pandora_server/lib/PandoraFMS/PluginTools.pm
+++ b/pandora_server/lib/PandoraFMS/PluginTools.pm
@@ -34,7 +34,7 @@ our @ISA = qw(Exporter);
 
 # version: Defines actual version of Pandora Server for this module only
 my $pandora_version = "7.0NG.775";
-my $pandora_build = "240109";
+my $pandora_build = "240110";
 our $VERSION = $pandora_version." ".$pandora_build;
 
 our %EXPORT_TAGS = ( 'all' => [ qw() ] );
diff --git a/pandora_server/pandora_server.redhat.spec b/pandora_server/pandora_server.redhat.spec
index 5f3e73dae5..70ca075e31 100644
--- a/pandora_server/pandora_server.redhat.spec
+++ b/pandora_server/pandora_server.redhat.spec
@@ -7,7 +7,7 @@
 %define debug_package %{nil}
 %define name        pandorafms_server
 %define version     7.0NG.775
-%define release     240109
+%define release     240110
 
 Summary:            Pandora FMS Server
 Name:               %{name}
diff --git a/pandora_server/pandora_server.spec b/pandora_server/pandora_server.spec
index 459e088489..85672ad76a 100644
--- a/pandora_server/pandora_server.spec
+++ b/pandora_server/pandora_server.spec
@@ -4,7 +4,7 @@
 %global __os_install_post %{nil}
 %define name        pandorafms_server
 %define version     7.0NG.775
-%define release     240109
+%define release     240110
 
 Summary:            Pandora FMS Server
 Name:               %{name}
diff --git a/pandora_server/pandora_server_installer b/pandora_server/pandora_server_installer
index 6dfbc64015..2ff1e0f1ca 100755
--- a/pandora_server/pandora_server_installer
+++ b/pandora_server/pandora_server_installer
@@ -9,7 +9,7 @@
 # **********************************************************************
 
 PI_VERSION="7.0NG.775"
-PI_BUILD="240109"
+PI_BUILD="240110"
 
 MODE=$1
 if [ $# -gt 1 ]; then
diff --git a/pandora_server/util/pandora_db.pl b/pandora_server/util/pandora_db.pl
index 982fd78c47..492ad5a954 100755
--- a/pandora_server/util/pandora_db.pl
+++ b/pandora_server/util/pandora_db.pl
@@ -38,7 +38,7 @@ use PandoraFMS::Config;
 use PandoraFMS::DB;
 
 # version: define current version
-my $version = "7.0NG.775 Build 240109";
+my $version = "7.0NG.775 Build 240110";
 
 # Pandora server configuration
 my %conf;
diff --git a/pandora_server/util/pandora_manage.pl b/pandora_server/util/pandora_manage.pl
index 501b3cf072..5634f84abb 100755
--- a/pandora_server/util/pandora_manage.pl
+++ b/pandora_server/util/pandora_manage.pl
@@ -36,7 +36,7 @@ use Encode::Locale;
 Encode::Locale::decode_argv;
 
 # version: define current version
-my $version = "7.0NG.775 Build 240109";
+my $version = "7.0NG.775 Build 240110";
 
 # save program name for logging
 my $progname = basename($0);

From f42a0de0edebd4891bcf3d7b253b8ec9b6a31198 Mon Sep 17 00:00:00 2001
From: Jonathan <jonathan.leon@pandorafms.com>
Date: Wed, 10 Jan 2024 08:53:49 +0100
Subject: [PATCH 106/231] #12727 fix search agents

---
 pandora_console/operation/search_results.php | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/pandora_console/operation/search_results.php b/pandora_console/operation/search_results.php
index 76638e3525..3903ddca19 100644
--- a/pandora_console/operation/search_results.php
+++ b/pandora_console/operation/search_results.php
@@ -33,7 +33,7 @@ foreach ($arrayKeywords as $keyword) {
     array_push($temp, '%'.$keyword.'%');
 }
 
-$stringSearchSQL = implode('&#x20;', $temp);
+$stringSearchSQL = implode('', $temp);
 $stringSearchSQL = str_replace('_', '\_', $stringSearchSQL);
 
 $_SESSION['stringSearchSQL'] = $stringSearchSQL;
@@ -206,7 +206,7 @@ ui_print_standard_header(
 );
 
 $only_count = false;
-
+hd(io_safe_input($_SESSION['stringSearchSQL']), true);
 switch ($searchTab) {
     case 'main':
         $only_count = true;

From 034b9805cc1cee6d171e673920e83fc29ecb6e46 Mon Sep 17 00:00:00 2001
From: Daniel Maya <daniel.maya@pandorafms.com>
Date: Wed, 10 Jan 2024 11:17:46 +0100
Subject: [PATCH 107/231] #12734 Fixed visible

---
 .../godmode/gis_maps/configure_gis_map.php    | 24 ++++++++++++++-----
 pandora_console/operation/gis_maps/ajax.php   | 10 ++++++++
 2 files changed, 28 insertions(+), 6 deletions(-)

diff --git a/pandora_console/godmode/gis_maps/configure_gis_map.php b/pandora_console/godmode/gis_maps/configure_gis_map.php
index cc9ed5d5f0..7a0e4b61e1 100644
--- a/pandora_console/godmode/gis_maps/configure_gis_map.php
+++ b/pandora_console/godmode/gis_maps/configure_gis_map.php
@@ -68,7 +68,7 @@ foreach ($layer_ids as $layer_id) {
     $layer_list[] = [
         'id'               => (strpos($layer_id, 'new_') === false) ? (int) $layer_id : null,
         'layer_name'       => $trimmed_name,
-        'layer_visible'    => ($layers[$layer_id]['visible'] === 'true'),
+        'layer_visible'    => ($layers[$layer_id]['visible'] == 'true' || $layers[$layer_id]['visible'] === '1'),
         'layer_group'      => (int) $layers[$layer_id]['agents_from_group'],
         'layer_agent_list' => $layers[$layer_id]['agents'],
         'layer_group_list' => $layers[$layer_id]['groups'],
@@ -562,8 +562,6 @@ $table->data[9][1] = html_print_input_text('map_default_altitude', $map_default_
 
 html_print_table($table);
 
-$user_groups = users_get_groups($config['user'], 'AR', false);
-
 echo '<fieldset class="margin-bottom-10"><legend>'.__('Layers').'</legend>';
 
 $table->width = '100%';
@@ -589,7 +587,7 @@ $table->data[1][0] = '<div id="form_layer" class="invisible">
 			</tr>
 			<tr>
 				<td>'.__('Show agents from group').':</td>
-                <td colspan="3">'.html_print_select($user_groups, 'layer_group_form', '-1', '', __('none'), '-1', true).'</td>
+                <td colspan="3">'.html_print_select_groups($config['id_user'], 'AR', true, 'layer_group_form', '', '', __('none'), '-1', true).'</td>
 			</tr>
 			<tr>
 				<td colspan="4"><hr /></td>
@@ -923,11 +921,25 @@ function setLayerEditorData (data) {
     var $layerFormAgentsListItems = $("tr.agents_list_item");
     var $layerFormGroupsListItems = $("tr.groups_list_item");
 
+    $.ajax({
+        url: 'ajax.php',
+        data: {
+            page: 'operation/gis_maps/ajax',
+            opt: 'get_group_name',
+            id_group: data.agentsFromGroup
+        },
+        type: 'POST',
+        async: false,
+        dataType: 'json',
+        success: function (name) {
+            var newOption = new Option(name, data.agentsFromGroup, true, true);
+            $layerFormAgentsFromGroupSelect.append(newOption).trigger('change');
+        },
+    });
+
     $layerFormIdInput.val(data.id);
     $layerFormNameInput.val(data.name);
     $layerFormVisibleCheckbox.prop("checked", data.visible);
-    $(`#layer_group_form option[value=${data.agentsFromGroup}]`).attr('selected', 'selected');
-    $(`#layer_group_form`).trigger('change');
     $layerFormAgentInput.val("");
     $layerFormAgentButton.prop("disabled", true);
     $layerFormAgentsListItems.remove();
diff --git a/pandora_console/operation/gis_maps/ajax.php b/pandora_console/operation/gis_maps/ajax.php
index 80a3329ac9..baf52c0a92 100644
--- a/pandora_console/operation/gis_maps/ajax.php
+++ b/pandora_console/operation/gis_maps/ajax.php
@@ -541,4 +541,14 @@ switch ($opt) {
 
         echo json_encode($returnJSON);
     break;
+
+    case 'get_group_name':
+        $id_group = (int) get_parameter('id_group', -1);
+        if ($id_group === -1) {
+            echo json_encode(__('None'));
+        } else {
+            $result = groups_get_name($id_group, true);
+            echo json_encode($result);
+        }
+    break;
 }

From a7126106243924d7d9bafc6a9093e83ae0c1a606 Mon Sep 17 00:00:00 2001
From: "alejandro.campos@artica.es" <alejandro.campos@artica.es>
Date: Wed, 10 Jan 2024 11:27:43 +0100
Subject: [PATCH 108/231] fix tactical item

---
 pandora_console/include/lib/TacticalView/elements/Groups.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pandora_console/include/lib/TacticalView/elements/Groups.php b/pandora_console/include/lib/TacticalView/elements/Groups.php
index 4fe07b743a..f63587e716 100644
--- a/pandora_console/include/lib/TacticalView/elements/Groups.php
+++ b/pandora_console/include/lib/TacticalView/elements/Groups.php
@@ -484,7 +484,7 @@ class Groups extends Element
         $y = 0;
         $cont = 1;
         foreach ($groups as $key => $value) {
-            if ($value['_name_'] === 'All') {
+            if ($value['_name_'] === __('All')) {
                 continue;
             }
 

From bcf945daa2ed7c34112be76af0e16e48af9f5196 Mon Sep 17 00:00:00 2001
From: Jonathan <jonathan.leon@pandorafms.com>
Date: Wed, 10 Jan 2024 15:16:15 +0100
Subject: [PATCH 109/231] #12685 fix invisible add widget

---
 pandora_console/include/javascript/pandora_dashboards.js | 4 ++--
 pandora_console/views/dashboard/header.php               | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/pandora_console/include/javascript/pandora_dashboards.js b/pandora_console/include/javascript/pandora_dashboards.js
index f4168f2bd9..855ecdd135 100644
--- a/pandora_console/include/javascript/pandora_dashboards.js
+++ b/pandora_console/include/javascript/pandora_dashboards.js
@@ -528,7 +528,7 @@ function initialiceLayout(data) {
       $(".add-widget").show();
       $(".new-widget-message").hide();
       $("#container-layout").addClass("container-layout");
-      $("#add-widget").removeClass("invisible");
+      $("#add-widget").removeClass("invisible_important");
     } else {
       grid.movable(".grid-stack-item", false);
       grid.resizable(".grid-stack-item", false);
@@ -537,7 +537,7 @@ function initialiceLayout(data) {
       $(".add-widget").hide();
       $(".new-widget-message").show();
       $("#container-layout").removeClass("container-layout");
-      $("#add-widget").addClass("invisible");
+      $("#add-widget").addClass("invisible_important");
     }
   });
 
diff --git a/pandora_console/views/dashboard/header.php b/pandora_console/views/dashboard/header.php
index f59391a083..6dce805533 100644
--- a/pandora_console/views/dashboard/header.php
+++ b/pandora_console/views/dashboard/header.php
@@ -214,7 +214,7 @@ $enable_disable['text'] = html_print_div(
 );
 
 // New Widget.
-$newWidget['text'] = '<a href="#" id="add-widget" class="invisible">';
+$newWidget['text'] = '<a href="#" id="add-widget" class="invisible_important">';
 $newWidget['text'] .= html_print_image(
     'images/plus@svg.svg',
     true,

From 62d7adec3924bc0e0db40dff3f376ede75a0650a Mon Sep 17 00:00:00 2001
From: artica <artica.devel@gmail.com>
Date: Thu, 11 Jan 2024 01:00:34 +0100
Subject: [PATCH 110/231] Auto-updated build strings.

---
 pandora_agents/unix/DEBIAN/control                    | 2 +-
 pandora_agents/unix/DEBIAN/make_deb_package.sh        | 2 +-
 pandora_agents/unix/pandora_agent                     | 2 +-
 pandora_agents/unix/pandora_agent.redhat.spec         | 2 +-
 pandora_agents/unix/pandora_agent.redhat_bin.el8.spec | 2 +-
 pandora_agents/unix/pandora_agent.redhat_bin.el9.spec | 2 +-
 pandora_agents/unix/pandora_agent.redhat_bin.spec     | 2 +-
 pandora_agents/unix/pandora_agent.spec                | 2 +-
 pandora_agents/unix/pandora_agent_installer           | 2 +-
 pandora_agents/win32/installer/pandora.mpi            | 2 +-
 pandora_agents/win32/pandora.cc                       | 2 +-
 pandora_agents/win32/versioninfo.rc                   | 2 +-
 pandora_console/DEBIAN/control                        | 2 +-
 pandora_console/DEBIAN/make_deb_package.sh            | 2 +-
 pandora_console/include/config_process.php            | 2 +-
 pandora_console/install.php                           | 2 +-
 pandora_console/pandora_console.redhat.spec           | 2 +-
 pandora_console/pandora_console.rhel7.spec            | 2 +-
 pandora_console/pandora_console.spec                  | 2 +-
 pandora_server/DEBIAN/control                         | 2 +-
 pandora_server/DEBIAN/make_deb_package.sh             | 2 +-
 pandora_server/lib/PandoraFMS/Config.pm               | 2 +-
 pandora_server/lib/PandoraFMS/PluginTools.pm          | 2 +-
 pandora_server/pandora_server.redhat.spec             | 2 +-
 pandora_server/pandora_server.spec                    | 2 +-
 pandora_server/pandora_server_installer               | 2 +-
 pandora_server/util/pandora_db.pl                     | 2 +-
 pandora_server/util/pandora_manage.pl                 | 2 +-
 28 files changed, 28 insertions(+), 28 deletions(-)

diff --git a/pandora_agents/unix/DEBIAN/control b/pandora_agents/unix/DEBIAN/control
index 38f1c407fb..736023d74c 100644
--- a/pandora_agents/unix/DEBIAN/control
+++ b/pandora_agents/unix/DEBIAN/control
@@ -1,5 +1,5 @@
 package: pandorafms-agent-unix
-Version: 7.0NG.775-240110
+Version: 7.0NG.775-240111
 Architecture: all
 Priority: optional
 Section: admin
diff --git a/pandora_agents/unix/DEBIAN/make_deb_package.sh b/pandora_agents/unix/DEBIAN/make_deb_package.sh
index ec1ed096e0..96332b40eb 100644
--- a/pandora_agents/unix/DEBIAN/make_deb_package.sh
+++ b/pandora_agents/unix/DEBIAN/make_deb_package.sh
@@ -14,7 +14,7 @@
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 # GNU General Public License for more details.
 
-pandora_version="7.0NG.775-240110"
+pandora_version="7.0NG.775-240111"
 
 echo "Test if you has the tools for to make the packages."
 whereis dpkg-deb | cut -d":" -f2 | grep dpkg-deb > /dev/null
diff --git a/pandora_agents/unix/pandora_agent b/pandora_agents/unix/pandora_agent
index 5e32d4cda2..46363099e7 100755
--- a/pandora_agents/unix/pandora_agent
+++ b/pandora_agents/unix/pandora_agent
@@ -1039,7 +1039,7 @@ my $Sem = undef;
 my $ThreadSem = undef;
 
 use constant AGENT_VERSION => '7.0NG.775';
-use constant AGENT_BUILD => '240110';
+use constant AGENT_BUILD => '240111';
 
 # Agent log default file size maximum and instances
 use constant DEFAULT_MAX_LOG_SIZE => 600000;
diff --git a/pandora_agents/unix/pandora_agent.redhat.spec b/pandora_agents/unix/pandora_agent.redhat.spec
index f50c52a799..fec771056d 100644
--- a/pandora_agents/unix/pandora_agent.redhat.spec
+++ b/pandora_agents/unix/pandora_agent.redhat.spec
@@ -4,7 +4,7 @@
 %global __os_install_post %{nil}
 %define name        pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240110
+%define release     240111
 
 Summary:            Pandora FMS Linux agent, PERL version
 Name:               %{name}
diff --git a/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec b/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec
index e47ca2fccc..e92767ae61 100644
--- a/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec
+++ b/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec
@@ -5,7 +5,7 @@
 %define name        pandorafms_agent_linux_bin
 %define source_name pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240110
+%define release     240111
 %define debug_package %{nil}
 
 Summary:            Pandora FMS Linux agent, binary version
diff --git a/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec b/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec
index 7e3f12c1b9..ffa3776334 100644
--- a/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec
+++ b/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec
@@ -5,7 +5,7 @@
 %define name        pandorafms_agent_linux_bin
 %define source_name pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240110
+%define release     240111
 %define debug_package %{nil}
 
 Summary:            Pandora FMS Linux agent, binary version
diff --git a/pandora_agents/unix/pandora_agent.redhat_bin.spec b/pandora_agents/unix/pandora_agent.redhat_bin.spec
index 33f183ece0..a433acbaf4 100644
--- a/pandora_agents/unix/pandora_agent.redhat_bin.spec
+++ b/pandora_agents/unix/pandora_agent.redhat_bin.spec
@@ -5,7 +5,7 @@
 %define name        pandorafms_agent_linux_bin
 %define source_name pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240110
+%define release     240111
 
 Summary:            Pandora FMS Linux agent, binary version
 Name:               %{name}
diff --git a/pandora_agents/unix/pandora_agent.spec b/pandora_agents/unix/pandora_agent.spec
index f368c1d849..05994e8efd 100644
--- a/pandora_agents/unix/pandora_agent.spec
+++ b/pandora_agents/unix/pandora_agent.spec
@@ -4,7 +4,7 @@
 %global __os_install_post %{nil}
 %define name        pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240110
+%define release     240111
 
 Summary:            Pandora FMS Linux agent, PERL version
 Name:               %{name}
diff --git a/pandora_agents/unix/pandora_agent_installer b/pandora_agents/unix/pandora_agent_installer
index 2607868f4c..8710e37350 100755
--- a/pandora_agents/unix/pandora_agent_installer
+++ b/pandora_agents/unix/pandora_agent_installer
@@ -10,7 +10,7 @@
 # **********************************************************************
 
 PI_VERSION="7.0NG.775"
-PI_BUILD="240110"
+PI_BUILD="240111"
 OS_NAME=`uname -s`
 
 FORCE=0
diff --git a/pandora_agents/win32/installer/pandora.mpi b/pandora_agents/win32/installer/pandora.mpi
index 6881464877..652e97ea30 100644
--- a/pandora_agents/win32/installer/pandora.mpi
+++ b/pandora_agents/win32/installer/pandora.mpi
@@ -186,7 +186,7 @@ UpgradeApplicationID
 {}
 
 Version
-{240110}
+{240111}
 
 ViewReadme
 {Yes}
diff --git a/pandora_agents/win32/pandora.cc b/pandora_agents/win32/pandora.cc
index f128cb7ae7..7366a01592 100644
--- a/pandora_agents/win32/pandora.cc
+++ b/pandora_agents/win32/pandora.cc
@@ -30,7 +30,7 @@ using namespace Pandora;
 using namespace Pandora_Strutils;
 
 #define PATH_SIZE    _MAX_PATH+1
-#define PANDORA_VERSION ("7.0NG.775 Build 240110")
+#define PANDORA_VERSION ("7.0NG.775 Build 240111")
 
 string pandora_path;
 string pandora_dir;
diff --git a/pandora_agents/win32/versioninfo.rc b/pandora_agents/win32/versioninfo.rc
index e459b72a99..255d96f00e 100644
--- a/pandora_agents/win32/versioninfo.rc
+++ b/pandora_agents/win32/versioninfo.rc
@@ -11,7 +11,7 @@ BEGIN
       VALUE "LegalCopyright", "Pandora FMS"
       VALUE "OriginalFilename", "PandoraAgent.exe"
       VALUE "ProductName", "Pandora FMS Windows Agent"
-      VALUE "ProductVersion", "(7.0NG.775(Build 240110))"
+      VALUE "ProductVersion", "(7.0NG.775(Build 240111))"
       VALUE "FileVersion", "1.0.0.0"
     END
   END
diff --git a/pandora_console/DEBIAN/control b/pandora_console/DEBIAN/control
index 295a0b97c4..6831b86b26 100644
--- a/pandora_console/DEBIAN/control
+++ b/pandora_console/DEBIAN/control
@@ -1,5 +1,5 @@
 package: pandorafms-console
-Version: 7.0NG.775-240110
+Version: 7.0NG.775-240111
 Architecture: all
 Priority: optional
 Section: admin
diff --git a/pandora_console/DEBIAN/make_deb_package.sh b/pandora_console/DEBIAN/make_deb_package.sh
index 4e047827f3..59e86d11a7 100644
--- a/pandora_console/DEBIAN/make_deb_package.sh
+++ b/pandora_console/DEBIAN/make_deb_package.sh
@@ -14,7 +14,7 @@
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 # GNU General Public License for more details.
 
-pandora_version="7.0NG.775-240110"
+pandora_version="7.0NG.775-240111"
 
 package_pear=0
 package_pandora=1
diff --git a/pandora_console/include/config_process.php b/pandora_console/include/config_process.php
index f1279398b4..f0c1c60fca 100644
--- a/pandora_console/include/config_process.php
+++ b/pandora_console/include/config_process.php
@@ -20,7 +20,7 @@
 /**
  * Pandora build version and version
  */
-$build_version = 'PC240110';
+$build_version = 'PC240111';
 $pandora_version = 'v7.0NG.775';
 
 // Do not overwrite default timezone set if defined.
diff --git a/pandora_console/install.php b/pandora_console/install.php
index 035c6009da..d5c11694c1 100644
--- a/pandora_console/install.php
+++ b/pandora_console/install.php
@@ -131,7 +131,7 @@
         <div style='padding-bottom: 50px'>
             <?php
             $version = '7.0NG.775';
-            $build = '240110';
+            $build = '240111';
             $banner = "v$version Build $build";
             error_reporting(0);
 
diff --git a/pandora_console/pandora_console.redhat.spec b/pandora_console/pandora_console.redhat.spec
index 77fe95d2c8..b3856e1d15 100644
--- a/pandora_console/pandora_console.redhat.spec
+++ b/pandora_console/pandora_console.redhat.spec
@@ -6,7 +6,7 @@
 %define debug_package %{nil}
 %define name        pandorafms_console
 %define version     7.0NG.775
-%define release     240110
+%define release     240111
 
 # User and Group under which Apache is running
 %define httpd_name  httpd
diff --git a/pandora_console/pandora_console.rhel7.spec b/pandora_console/pandora_console.rhel7.spec
index e939983d8c..bafb51f54e 100644
--- a/pandora_console/pandora_console.rhel7.spec
+++ b/pandora_console/pandora_console.rhel7.spec
@@ -6,7 +6,7 @@
 %define debug_package %{nil}
 %define name        pandorafms_console
 %define version     7.0NG.775
-%define release     240110
+%define release     240111
 
 # User and Group under which Apache is running
 %define httpd_name  httpd
diff --git a/pandora_console/pandora_console.spec b/pandora_console/pandora_console.spec
index e9b370b358..cbaa1f11cc 100644
--- a/pandora_console/pandora_console.spec
+++ b/pandora_console/pandora_console.spec
@@ -3,7 +3,7 @@
 #
 %define name        pandorafms_console
 %define version     7.0NG.775
-%define release     240110
+%define release     240111
 %define httpd_name      httpd
 # User and Group under which Apache is running
 %define httpd_name  apache2
diff --git a/pandora_server/DEBIAN/control b/pandora_server/DEBIAN/control
index 87ae731961..af44982e4c 100644
--- a/pandora_server/DEBIAN/control
+++ b/pandora_server/DEBIAN/control
@@ -1,5 +1,5 @@
 package: pandorafms-server
-Version: 7.0NG.775-240110
+Version: 7.0NG.775-240111
 Architecture: all
 Priority: optional
 Section: admin
diff --git a/pandora_server/DEBIAN/make_deb_package.sh b/pandora_server/DEBIAN/make_deb_package.sh
index 9505766b5b..b11bb217f8 100644
--- a/pandora_server/DEBIAN/make_deb_package.sh
+++ b/pandora_server/DEBIAN/make_deb_package.sh
@@ -14,7 +14,7 @@
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 # GNU General Public License for more details.
 
-pandora_version="7.0NG.775-240110"
+pandora_version="7.0NG.775-240111"
 
 package_cpan=0
 package_pandora=1
diff --git a/pandora_server/lib/PandoraFMS/Config.pm b/pandora_server/lib/PandoraFMS/Config.pm
index 10cbd215ad..4f45c28b19 100644
--- a/pandora_server/lib/PandoraFMS/Config.pm
+++ b/pandora_server/lib/PandoraFMS/Config.pm
@@ -46,7 +46,7 @@ our @EXPORT = qw(
 
 # version: Defines actual version of Pandora Server for this module only
 my $pandora_version = "7.0NG.775";
-my $pandora_build = "240110";
+my $pandora_build = "240111";
 our $VERSION = $pandora_version." ".$pandora_build;
 
 # Setup hash
diff --git a/pandora_server/lib/PandoraFMS/PluginTools.pm b/pandora_server/lib/PandoraFMS/PluginTools.pm
index 393dbddb4a..3da93e4349 100644
--- a/pandora_server/lib/PandoraFMS/PluginTools.pm
+++ b/pandora_server/lib/PandoraFMS/PluginTools.pm
@@ -34,7 +34,7 @@ our @ISA = qw(Exporter);
 
 # version: Defines actual version of Pandora Server for this module only
 my $pandora_version = "7.0NG.775";
-my $pandora_build = "240110";
+my $pandora_build = "240111";
 our $VERSION = $pandora_version." ".$pandora_build;
 
 our %EXPORT_TAGS = ( 'all' => [ qw() ] );
diff --git a/pandora_server/pandora_server.redhat.spec b/pandora_server/pandora_server.redhat.spec
index 70ca075e31..f384189dc9 100644
--- a/pandora_server/pandora_server.redhat.spec
+++ b/pandora_server/pandora_server.redhat.spec
@@ -7,7 +7,7 @@
 %define debug_package %{nil}
 %define name        pandorafms_server
 %define version     7.0NG.775
-%define release     240110
+%define release     240111
 
 Summary:            Pandora FMS Server
 Name:               %{name}
diff --git a/pandora_server/pandora_server.spec b/pandora_server/pandora_server.spec
index 85672ad76a..cc32de3f0f 100644
--- a/pandora_server/pandora_server.spec
+++ b/pandora_server/pandora_server.spec
@@ -4,7 +4,7 @@
 %global __os_install_post %{nil}
 %define name        pandorafms_server
 %define version     7.0NG.775
-%define release     240110
+%define release     240111
 
 Summary:            Pandora FMS Server
 Name:               %{name}
diff --git a/pandora_server/pandora_server_installer b/pandora_server/pandora_server_installer
index 2ff1e0f1ca..b0ab4572b7 100755
--- a/pandora_server/pandora_server_installer
+++ b/pandora_server/pandora_server_installer
@@ -9,7 +9,7 @@
 # **********************************************************************
 
 PI_VERSION="7.0NG.775"
-PI_BUILD="240110"
+PI_BUILD="240111"
 
 MODE=$1
 if [ $# -gt 1 ]; then
diff --git a/pandora_server/util/pandora_db.pl b/pandora_server/util/pandora_db.pl
index 492ad5a954..f5546d746c 100755
--- a/pandora_server/util/pandora_db.pl
+++ b/pandora_server/util/pandora_db.pl
@@ -38,7 +38,7 @@ use PandoraFMS::Config;
 use PandoraFMS::DB;
 
 # version: define current version
-my $version = "7.0NG.775 Build 240110";
+my $version = "7.0NG.775 Build 240111";
 
 # Pandora server configuration
 my %conf;
diff --git a/pandora_server/util/pandora_manage.pl b/pandora_server/util/pandora_manage.pl
index 5634f84abb..4daeb48656 100755
--- a/pandora_server/util/pandora_manage.pl
+++ b/pandora_server/util/pandora_manage.pl
@@ -36,7 +36,7 @@ use Encode::Locale;
 Encode::Locale::decode_argv;
 
 # version: define current version
-my $version = "7.0NG.775 Build 240110";
+my $version = "7.0NG.775 Build 240111";
 
 # save program name for logging
 my $progname = basename($0);

From 12f6f2e02bb443508ab56162afe2f9fbef8c29af Mon Sep 17 00:00:00 2001
From: Pablo Aragon <pablo.aragon@pandorafms.com>
Date: Thu, 11 Jan 2024 09:33:51 +0100
Subject: [PATCH 111/231] 12320-Welcome wizard new styles

---
 pandora_console/images/check-white.svg        |  21 +
 .../images/welcome-wizard-image.png           | Bin 0 -> 252236 bytes
 .../include/class/WelcomeWindow.class.php     |  77 +++-
 .../include/javascript/pandora_ui.js          |  11 +-
 .../new_installation_welcome_window.css       | 413 +++++++++++++++++-
 5 files changed, 497 insertions(+), 25 deletions(-)
 create mode 100644 pandora_console/images/check-white.svg
 create mode 100644 pandora_console/images/welcome-wizard-image.png

diff --git a/pandora_console/images/check-white.svg b/pandora_console/images/check-white.svg
new file mode 100644
index 0000000000..e7863cf1ba
--- /dev/null
+++ b/pandora_console/images/check-white.svg
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="16px" height="12px" viewBox="0 0 16 12" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <title>F1630B1D-C694-489C-8C8F-E98AF57D4F04</title>
+    <g id="Welcome-wizard" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="Pandora-FMS---Welcome-Wizard-2023---1a-Welcome-wizard" transform="translate(-905, -629)" fill="#FFFFFF">
+            <g id="Popup" transform="translate(460, 200)">
+                <g id="Content" transform="translate(20, 96)">
+                    <g id="Form" transform="translate(0, 292)">
+                        <g id="Principal-por-defecto" transform="translate(305, 26)">
+                            <g id="Group-2" transform="translate(38, 11)">
+                                <g id="check" transform="translate(82, 4)">
+                                    <path d="M6,12 C5.5,12 5,11.8 4.6,11.4 L0.6,7.4 C-0.2,6.6 -0.2,5.4 0.6,4.6 C1.4,3.8 2.7,3.8 3.4,4.6 L6,7.2 L12.6,0.6 C13.4,-0.2 14.6,-0.2 15.4,0.6 C16.2,1.4 16.2,2.6 15.4,3.4 L7.4,11.4 C7,11.8 6.5,12 6,12 Z"></path>
+                                </g>
+                            </g>
+                        </g>
+                    </g>
+                </g>
+            </g>
+        </g>
+    </g>
+</svg>
\ No newline at end of file
diff --git a/pandora_console/images/welcome-wizard-image.png b/pandora_console/images/welcome-wizard-image.png
new file mode 100644
index 0000000000000000000000000000000000000000..aba9647c547b8f9e38e5eebf88400e78b0f2e80f
GIT binary patch
literal 252236
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
Vm*rpXUm)<OqjBqIi5mLJ{{z8z`IG<v

literal 0
HcmV?d00001

diff --git a/pandora_console/include/class/WelcomeWindow.class.php b/pandora_console/include/class/WelcomeWindow.class.php
index 4c72046548..378a194e32 100644
--- a/pandora_console/include/class/WelcomeWindow.class.php
+++ b/pandora_console/include/class/WelcomeWindow.class.php
@@ -156,11 +156,14 @@ class WelcomeWindow extends Wizard
             modal: {
                 title: "<?php echo __('Welcome to').' '.io_safe_output(get_product_name()); ?>",
                 cancel: '<?php echo __('Do not show anymore'); ?>',
-                ok: '<?php echo __('Close'); ?>'
+                ok: '<?php echo __('Close wizard'); ?>',
+                overlay: true,
+                overlayExtraClass: 'welcome-overlay',
             },
             onshow: {
                 page: '<?php echo $this->ajaxController; ?>',
                 method: 'loadWelcomeWindow',
+                width: 1000,
             },
             oncancel: {
                 page: '<?php echo $this->ajaxController; ?>',
@@ -178,6 +181,34 @@ class WelcomeWindow extends Wizard
                         }
                     })
                 }
+            },
+            onload: () => {
+                $(document).ready(function () {
+                    var buttonpane = $("div[aria-describedby='welcome_modal_window'] .ui-dialog-buttonpane.ui-widget-content.ui-helper-clearfix");
+                    $(buttonpane).append(`
+                    <div class="welcome-wizard-buttons">
+                        <label>
+                            <input type="checkbox" class="welcome-wizard-do-not-show" value="1" />
+                            <?php echo __('Do not show anymore'); ?>
+                        </label>
+                        <button class="close-wizard-button"><?php echo __('Close wizard'); ?></button>
+                    </div>
+                    `);
+
+                    var closeWizard = $("button.close-wizard-button");
+
+                    $(closeWizard).click(function (e) {
+                        var close = $("div[aria-describedby='welcome_modal_window'] button.sub.ok.submit-next.ui-button");
+                        var cancel = $("div[aria-describedby='welcome_modal_window'] button.sub.upd.submit-cancel.ui-button");
+                        var checkbox = $("div[aria-describedby='welcome_modal_window'] .welcome-wizard-do-not-show:checked").length;
+
+                        if (checkbox === 1) {
+                            $(cancel).click();
+                        } else {
+                            $(close).click()
+                        }
+                    });
+                });
             }
         });
 
@@ -412,11 +443,11 @@ class WelcomeWindow extends Wizard
             $inputs[] = [
                 'wrapper'       => 'div',
                 'block_id'      => 'div_diagnosis',
-                'class'         => 'flex-row flex-items-center w98p ',
+                'class'         => 'flex-row flex-items-center ',
                 'direct'        => 1,
                 'block_content' => [
                     [
-                        'label'     => __('Post-installation status diagnostic'),
+                        'label'     => __('This is your post-installation status diagnostic:'),
                         'arguments' => [
                             'class' => 'first_lbl',
                             'name'  => 'lbl_diagnosis',
@@ -434,7 +465,7 @@ class WelcomeWindow extends Wizard
                     'direct'        => 1,
                     'block_content' => [
                         [
-                            'label'     => __('Warp Update registration'),
+                            'label'     => '<span class="status"></span>'.__('Warp Update registration'),
                             'arguments' => [
                                 'class' => 'first_lbl',
                                 'name'  => 'lbl_update_manager',
@@ -443,7 +474,7 @@ class WelcomeWindow extends Wizard
                         ],
                         [
                             'arguments' => [
-                                'label'      => '',
+                                'label'      => __('Cancel'),
                                 'type'       => 'button',
                                 'attributes' => [
                                     'class' => (empty($btn_update_manager_class) === false) ? $btn_update_manager_class : 'invisible_important',
@@ -462,7 +493,7 @@ class WelcomeWindow extends Wizard
                     'direct'        => 1,
                     'block_content' => [
                         [
-                            'label'     => __('Default mail to send alerts'),
+                            'label'     => '<span class="status"></span>'.__('Default mail to send alerts'),
                             'arguments' => [
                                 'class' => 'first_lbl',
                                 'name'  => 'lbl_create_agent',
@@ -471,7 +502,7 @@ class WelcomeWindow extends Wizard
                         ],
                         [
                             'arguments' => [
-                                'label'      => '',
+                                'label'      => __('Cancel'),
                                 'type'       => 'button',
                                 'attributes' => [
                                     'class' => (empty($btn_configure_mail_class) === false) ? $btn_configure_mail_class : 'invisible_important',
@@ -490,7 +521,7 @@ class WelcomeWindow extends Wizard
                     'direct'        => 1,
                     'block_content' => [
                         [
-                            'label'     => __('All servers running'),
+                            'label'     => '<span class="status"></span>'.__('All servers running'),
                             'arguments' => [
                                 'class' => 'first_lbl',
                                 'name'  => 'lbl_servers_up',
@@ -499,7 +530,7 @@ class WelcomeWindow extends Wizard
                         ],
                         [
                             'arguments' => [
-                                'label'      => '',
+                                'label'      => __('Cancel'),
                                 'type'       => 'button',
                                 'attributes' => [
                                     'class' => (empty($btn_servers_up_class) === false) ? $btn_servers_up_class : 'invisible_important',
@@ -518,7 +549,7 @@ class WelcomeWindow extends Wizard
                     'direct'        => 1,
                     'block_content' => [
                         [
-                            'label'     => __('Enterprise licence valid'),
+                            'label'     => '<span class="status"></span>'.__('Enterprise licence valid'),
                             'arguments' => [
                                 'class' => 'first_lbl',
                                 'name'  => 'lbl_license_valid',
@@ -527,7 +558,7 @@ class WelcomeWindow extends Wizard
                         ],
                         [
                             'arguments' => [
-                                'label'      => '',
+                                'label'      => __('Cancel'),
                                 'type'       => 'button',
                                 'attributes' => [
                                     'class' => (empty($btn_license_valid_class) === false) ? $btn_license_valid_class : 'invisible_important',
@@ -567,7 +598,7 @@ class WelcomeWindow extends Wizard
         $inputs[] = [
             'wrapper'       => 'div',
             'block_id'      => 'div_task_todo',
-            'class'         => 'flex-row flex-items-center w98p',
+            'class'         => 'flex-row flex-items-center',
             'direct'        => 1,
             'block_content' => [
                 [
@@ -591,7 +622,7 @@ class WelcomeWindow extends Wizard
         $inputs[] = [
             'wrapper'       => 'div',
             'block_id'      => 'div_wizard_agent',
-            'class'         => 'flex space-between w98p',
+            'class'         => 'flex space-between',
             'direct'        => 1,
             'block_content' => [
                 [
@@ -599,7 +630,7 @@ class WelcomeWindow extends Wizard
                         'type'          => 'select',
                         'fields'        => $fields,
                         'name'          => 'task_to_perform',
-                        'selected'      => '',
+                        'selected'      => 'check_net',
                         'return'        => true,
                         'nothing'       => \__('Please select one'),
                         'nothing_value' => '',
@@ -630,6 +661,24 @@ class WelcomeWindow extends Wizard
 
         $output .= $this->loadJS($flag_task);
         echo $output;
+
+        echo '
+            <div class="welcome-wizard-right-content">
+                <ul class="welcome-circles">
+                        <li></li>
+                        <li></li>
+                        <li></li>
+                        <li></li>
+                        <li></li>
+                        <li></li>
+                        <li></li>
+                        <li></li>
+                        <li></li>
+                        <li></li>
+                </ul>
+                <img src="images/welcome-wizard-image.png" />
+            </div>
+        ';
         ?>
         <div id="dialog_goliat" class="invisible">
             <?php
diff --git a/pandora_console/include/javascript/pandora_ui.js b/pandora_console/include/javascript/pandora_ui.js
index cd71ef51c3..49e7062f04 100644
--- a/pandora_console/include/javascript/pandora_ui.js
+++ b/pandora_console/include/javascript/pandora_ui.js
@@ -105,7 +105,16 @@ function load_modal(settings) {
   }
 
   if (settings.modal.overlay === true) {
-    $("body").append("<div id='modal_overlay'class='ui-widget-overlay'></div>");
+    var extraClass = "";
+    if (typeof settings.modal.overlayExtraClass !== "undefined") {
+      extraClass = " " + settings.modal.overlayExtraClass;
+    }
+
+    $("body").append(
+      "<div id='modal_overlay'class='ui-widget-overlay" +
+        extraClass +
+        "'></div>"
+    );
   }
 
   if (settings.beforeClose == undefined) {
diff --git a/pandora_console/include/styles/new_installation_welcome_window.css b/pandora_console/include/styles/new_installation_welcome_window.css
index 6d354b0c33..e4c16ca29c 100644
--- a/pandora_console/include/styles/new_installation_welcome_window.css
+++ b/pandora_console/include/styles/new_installation_welcome_window.css
@@ -80,7 +80,7 @@
 }
 
 #welcome_form li.hole {
-  margin-bottom: 0.8em;
+  margin-bottom: 10px;
 }
 
 #welcome_form li.extra {
@@ -98,17 +98,410 @@
   font-weight: bold;
 }
 
-button.buttonButton.onlyIcon.fail,
-button.submitButton.onlyIcon.fail {
-  mask: url(../../images/fail@svg.svg) no-repeat center / contain;
-  -webkit-mask: url(../../images/fail@svg.svg) no-repeat center / contain;
-}
-
 .select2-container .select2-container--default .select2-container--open {
   z-index: 2000;
 }
 
-#div_wizard_agent > .select2 {
-  width: 75% !important;
-  max-width: 75% !important;
+.ui-widget-overlay.welcome-overlay {
+  background-color: rgba(19, 23, 39, 0.8) !important;
+  opacity: 1 !important;
+}
+
+div.ui-widget.ui-widget-content[aria-describedby="welcome_modal_window"] {
+  background-color: #131727;
+  border-radius: 8px !important;
+  border: 0;
+}
+
+div.ui-widget.ui-widget-content[aria-describedby="welcome_modal_window"] * {
+  color: #fff;
+}
+
+div.ui-widget.ui-widget-content[aria-describedby="welcome_modal_window"]
+  .ui-dialog-titlebar {
+  margin: 0;
+  padding-top: 25px;
+  padding-bottom: 0px;
+  padding-left: 20px;
+}
+
+div.ui-widget.ui-widget-content[aria-describedby="welcome_modal_window"]
+  .ui-dialog-title {
+  font-size: 40px;
+  line-height: 48px;
+  margin: 0;
+}
+
+div.ui-widget.ui-widget-content[aria-describedby="welcome_modal_window"]
+  .ui-dialog-titlebar-close {
+  background-color: #95a3bf !important;
+  right: 20px !important;
+}
+
+div#welcome_modal_window {
+  padding: 0px 0px 0px 20px;
+  display: flex !important;
+  flex-direction: row;
+  flex-wrap: nowrap;
+  align-items: flex-end;
+  justify-content: space-between;
+}
+
+div#welcome_modal_window[style=""] {
+  display: none !important;
+}
+
+div#welcome_modal_window .wizard * {
+  font-weight: bold;
+}
+
+div#welcome_modal_window .wizard li#li-div_diagnosis,
+div#welcome_modal_window .wizard li#li-div_task_todo,
+div#welcome_modal_window .wizard li#li-div_wizard_agent {
+  padding-left: 0;
+}
+
+div#welcome_modal_window .wizard li#li-div_diagnosis label {
+  font-size: 17px;
+  line-height: 20px;
+  color: #c1ccdc;
+  padding: 20px 0px;
+  font-weight: normal;
+}
+
+div#welcome_modal_window
+  .wizard
+  li:not(:nth-child(1)):not(:nth-last-child(1)):not(:nth-last-child(2)) {
+  padding: 14px 15px;
+  box-sizing: border-box;
+  background-color: rgba(0, 0, 0, 0.2);
+  border: 1px solid #c1ccdc;
+  border-radius: 6px;
+  width: 480px;
+  height: 50px;
+}
+
+div#welcome_modal_window
+  .wizard
+  li:not(:nth-child(1)):not(:nth-last-child(1)):not(:nth-last-child(2))
+  label {
+  font-size: 17px;
+  line-height: 20px;
+  display: flex;
+  flex-direction: row;
+  flex-wrap: nowrap;
+  align-items: center;
+}
+
+div#welcome_modal_window
+  .wizard
+  li:not(:nth-child(1)):not(:nth-last-child(1)):not(:nth-last-child(2))
+  label {
+  font-size: 17px;
+  line-height: 20px;
+  font-weight: normal;
+}
+
+div#welcome_modal_window .wizard .status {
+  background-color: #c1ccdc;
+  opacity: 0.2;
+  display: block;
+  width: 20px;
+  height: 20px;
+  margin-right: 15px;
+  border-radius: 14px / 7px;
+}
+
+div#welcome_modal_window .wizard li.row_green .status {
+  background-color: #82b92e;
+  opacity: 1;
+}
+
+div#welcome_modal_window .wizard .fail.onlyIcon.buttonButton {
+  background-color: unset;
+  width: unset !important;
+}
+
+div#welcome_modal_window .wizard .fail.onlyIcon.buttonButton span {
+  color: #26b1b5;
+  font-size: 15px;
+  line-height: 20px;
+}
+
+div#welcome_modal_window .wizard .fail.onlyIcon.buttonButton:hover span {
+  color: #3bdce1;
+}
+
+div#welcome_modal_window .wizard #li-div_task_todo {
+  padding-bottom: 2px;
+}
+
+div#welcome_modal_window .wizard #li-div_task_todo label {
+  font-size: 13px;
+  line-height: 16px;
+  color: #c1ccdc;
+}
+
+div#welcome_modal_window .wizard #li-div_wizard_agent {
+  width: 480px;
+}
+
+div#welcome_modal_window .wizard #li-div_wizard_agent > div {
+  width: 100%;
+}
+
+div#welcome_modal_window .wizard #li-div_wizard_agent .select2-selection {
+  background-color: #f6f7fb !important;
+  border: 1px solid #c0ccdc !important;
+  border-radius: 6px !important;
+  width: 290px;
+  height: 42px !important;
+  font-weight: normal !important;
+}
+
+div#welcome_modal_window .wizard #li-div_wizard_agent .select2 {
+  width: 290px !important;
+}
+
+div#welcome_modal_window
+  .wizard
+  #li-div_wizard_agent
+  .select2-selection
+  .select2-selection__rendered {
+  font-weight: normal !important;
+  line-height: 38px !important;
+}
+
+div#welcome_modal_window .wizard #button-go_wizard {
+  background-color: #82b92e;
+  border: 0;
+  border-radius: 8px;
+  padding-top: 11px;
+  padding-bottom: 11px;
+  padding-left: 38px;
+  height: 42px;
+  width: 175px;
+}
+
+div#welcome_modal_window .wizard #button-go_wizard:hover {
+  background-color: #8ac531;
+}
+
+div#welcome_modal_window .wizard #button-go_wizard span {
+  font-size: 15px;
+  line-height: 20px;
+  text-wrap: nowrap;
+}
+
+div#welcome_modal_window .wizard #button-go_wizard div.next {
+  mask: url(../../images/check-white.svg) no-repeat center / contain;
+  -webkit-mask: url(../../images/check-white.svg) no-repeat center / contain;
+  background-color: #fff !important;
+  height: 12px;
+  margin-left: 12px;
+  margin-right: 20px;
+}
+
+div.ui-widget.ui-widget-content[aria-describedby="welcome_modal_window"]
+  .ui-dialog-buttonpane.ui-widget-content {
+  background-color: #131727;
+  padding: 10px 10px 10px 20px !important;
+  margin: 0;
+  border-top: 1px solid #8190ad;
+  border-top-left-radius: 0;
+  border-top-right-radius: 0;
+}
+
+div.ui-widget.ui-widget-content[aria-describedby="welcome_modal_window"]
+  .ui-dialog-buttonpane.ui-widget-content
+  .ui-dialog-buttonset {
+  justify-content: space-between;
+  display: none;
+}
+
+div.ui-widget.ui-widget-content[aria-describedby="welcome_modal_window"]
+  .welcome-wizard-buttons,
+div.ui-widget.ui-widget-content[aria-describedby="welcome_modal_window"]
+  .welcome-wizard-buttons
+  label {
+  display: flex;
+  flex-direction: row;
+  justify-content: space-between;
+  align-items: center;
+  flex-wrap: nowrap;
+}
+
+div.ui-widget.ui-widget-content[aria-describedby="welcome_modal_window"]
+  .welcome-wizard-buttons
+  label {
+  font-size: 15px;
+  line-height: 18px;
+  cursor: pointer;
+  font-weight: normal;
+}
+
+div.ui-widget.ui-widget-content[aria-describedby="welcome_modal_window"]
+  .welcome-wizard-buttons
+  label
+  input[type="checkbox"] {
+  margin-right: 10px;
+  width: 20px;
+}
+
+div.ui-widget.ui-widget-content[aria-describedby="welcome_modal_window"]
+  .ui-dialog-buttonpane.ui-widget-content
+  .ui-dialog-buttonset {
+  justify-content: space-between;
+  display: none;
+}
+
+div.ui-widget.ui-widget-content[aria-describedby="welcome_modal_window"]
+  .ui-dialog-buttonpane.ui-widget-content
+  button {
+  background-color: #313b62;
+  box-shadow: none;
+  border: 0;
+  border-radius: 8px;
+  height: 42px;
+  width: unset;
+  padding: 10px 20px;
+  font-size: 15px;
+  line-height: 20px;
+  font-weight: bold;
+  margin: 0;
+}
+
+div.ui-widget.ui-widget-content[aria-describedby="welcome_modal_window"]
+  .ui-dialog-buttonpane.ui-widget-content
+  button:hover {
+  background-color: #384372;
+}
+
+.welcome-wizard-right-content {
+  background-image: linear-gradient(225deg, #731dd8 0%, #2eb9b8 100%);
+  border-radius: 100px 0 0;
+  width: 432px;
+  height: 375px;
+  margin-bottom: 8px;
+}
+
+.welcome-wizard-right-content img {
+  width: 348px;
+  height: 260px;
+  position: absolute;
+  right: 43px;
+  bottom: 65px;
+  filter: drop-shadow(0 0 10px #0000005b);
+}
+
+/* Background bubbles */
+.welcome-circles {
+  overflow: hidden;
+  position: absolute;
+  right: 0;
+  position: absolute;
+  bottom: 8px;
+  width: 430px;
+  height: 373px;
+  overflow: hidden;
+  border-top-left-radius: 100px;
+}
+
+.welcome-circles li {
+  position: absolute;
+  display: block;
+  list-style: none;
+  width: 20px;
+  height: 20px;
+  background: rgba(255, 255, 255, 0.2);
+  animation: animate 10s linear infinite;
+  bottom: -150px;
+}
+
+.welcome-circles li:nth-child(1) {
+  left: 25%;
+  width: 10px;
+  height: 10px;
+  animation-delay: 0s;
+}
+
+.welcome-circles li:nth-child(2) {
+  left: 10%;
+  width: 20px;
+  height: 20px;
+  animation-delay: 2s;
+  animation-duration: 12s;
+}
+
+.welcome-circles li:nth-child(3) {
+  left: 70%;
+  width: 15px;
+  height: 15px;
+  animation-delay: 4s;
+}
+
+.welcome-circles li:nth-child(4) {
+  left: 40%;
+  width: 60px;
+  height: 60px;
+  animation-delay: 3s;
+  animation-duration: 6s;
+}
+
+.welcome-circles li:nth-child(5) {
+  left: 65%;
+  width: 15px;
+  height: 15px;
+  animation-delay: 0s;
+}
+
+.welcome-circles li:nth-child(6) {
+  left: 75%;
+  width: 30px;
+  height: 30px;
+  animation-delay: 3s;
+}
+
+.welcome-circles li:nth-child(7) {
+  left: 35%;
+  width: 50px;
+  height: 50px;
+  animation-delay: 7s;
+}
+
+.welcome-circles li:nth-child(8) {
+  left: 50%;
+  width: 25px;
+  height: 25px;
+  animation-delay: 15s;
+  animation-duration: 45s;
+}
+
+.welcome-circles li:nth-child(9) {
+  left: 20%;
+  width: 15px;
+  height: 15px;
+  animation-delay: 2s;
+  animation-duration: 35s;
+}
+
+.welcome-circles li:nth-child(10) {
+  left: 85%;
+  width: 50px;
+  height: 50px;
+  animation-delay: 0s;
+  animation-duration: 11s;
+}
+
+@keyframes animate {
+  0% {
+    transform: translateY(0) rotate(0deg);
+    opacity: 1;
+    border-radius: 0;
+  }
+  100% {
+    transform: translateY(-1000px) rotate(720deg);
+    opacity: 0;
+    border-radius: 50%;
+  }
 }

From 40d1efac1127a110dec31160ad8b5d774b5a66ec Mon Sep 17 00:00:00 2001
From: Pablo Aragon <pablo.aragon@pandorafms.com>
Date: Thu, 11 Jan 2024 11:39:14 +0100
Subject: [PATCH 112/231] 12320-Welcome wizard new styles, fix in
 Configuration->Configuration Wizard

---
 pandora_console/godmode/menu.php | 33 +++++++++++++++++++++++++++++++-
 1 file changed, 32 insertions(+), 1 deletion(-)

diff --git a/pandora_console/godmode/menu.php b/pandora_console/godmode/menu.php
index 2c6661c1f6..a77e63b95b 100644
--- a/pandora_console/godmode/menu.php
+++ b/pandora_console/godmode/menu.php
@@ -770,11 +770,14 @@ $("#conf_wizard").click(function() {
         modal: {
             title: "<?php echo __('Welcome to').' '.io_safe_output(get_product_name()); ?>",
             cancel: '<?php echo __('Do not show anymore'); ?>',
-            ok: '<?php echo __('Close'); ?>'
+            ok: '<?php echo __('Close wizard'); ?>',
+            overlay: true,
+            overlayExtraClass: 'welcome-overlay',
         },
         onshow: {
             page: 'include/ajax/welcome_window',
             method: 'loadWelcomeWindow',
+            width: 1000,
         },
         oncancel: {
             page: 'include/ajax/welcome_window',
@@ -792,6 +795,34 @@ $("#conf_wizard").click(function() {
                     }
                 })
             }
+        },
+        onload: () => {
+            $(document).ready(function () {
+                var buttonpane = $("div[aria-describedby='welcome_modal_window'] .ui-dialog-buttonpane.ui-widget-content.ui-helper-clearfix");
+                $(buttonpane).append(`
+                <div class="welcome-wizard-buttons">
+                    <label>
+                        <input type="checkbox" class="welcome-wizard-do-not-show" value="1" />
+                        <?php echo __('Do not show anymore'); ?>
+                    </label>
+                    <button class="close-wizard-button"><?php echo __('Close wizard'); ?></button>
+                </div>
+                `);
+
+                var closeWizard = $("button.close-wizard-button");
+
+                $(closeWizard).click(function (e) {
+                    var close = $("div[aria-describedby='welcome_modal_window'] button.sub.ok.submit-next.ui-button");
+                    var cancel = $("div[aria-describedby='welcome_modal_window'] button.sub.upd.submit-cancel.ui-button");
+                    var checkbox = $("div[aria-describedby='welcome_modal_window'] .welcome-wizard-do-not-show:checked").length;
+
+                    if (checkbox === 1) {
+                        $(cancel).click();
+                    } else {
+                        $(close).click()
+                    }
+                });
+            });
         }
     });
 });

From cca1392000b367ce059efeaba3d05c04a3b43448 Mon Sep 17 00:00:00 2001
From: Enrique Martin <enrique.martin@pandorafms.com>
Date: Thu, 11 Jan 2024 12:01:51 +0100
Subject: [PATCH 113/231] Updated some discovery apps logos

---
 .../images/discovery/pandorafms.mongodb.png   | Bin 7782 -> 6821 bytes
 .../images/discovery/pandorafms.ovh.png       | Bin 4361 -> 3723 bytes
 2 files changed, 0 insertions(+), 0 deletions(-)

diff --git a/pandora_console/images/discovery/pandorafms.mongodb.png b/pandora_console/images/discovery/pandorafms.mongodb.png
index 1042463eda83f83c1bcb63cd99946d7554fabe0f..37f3b2d542e9e022691f469ce298e9059ddfe4b1 100644
GIT binary patch
literal 6821
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
T9*i;?00000NkvXXu0mjfC7W5_

literal 7782
zcmchc=Q|sY*TxgIzh+Ssr4+SlZ>?BWd+%AB*n7p^N~>z`*n4kcwV|Z;R<yMmB#IId
z<LU38c+Pd5bH6>W&bdG5B<pIcl9N6r1pol#YHyVF|7pknl9=#ceff=0<e%XCDXJL~
z|BG;9ha>>t35%Mtf?;qWYBMC<%BWZJ&vyIrlWA#bHJNIq^$IHUQr%LZy2YOag^qU^
zqjG34Dhs2+4>eH$fk>dlp$f{kzxgKp1-&~>lo@%6#pV^Kba_6_@^~yf(;64^NDxI0
zF8kd}NxOb5&P*s99>icHUNPpkUv7a<ZjU=xI)Z>t<ERvg|Njd9i$+=bKxAWQC9D6d
zIEIwRo}-#Z?oJ1}e>4(BL=^`t#z=n)ZU!p&kmi9G(t8`KnyPMeoz;_q)LHpQ=u8l-
z8v*{i@~h&klEVy@oubHHwHdJ`$u$f|tl|KR5}`ke<v>ea6Z0e<tYZ%%0FJpKe9P9~
z3+7#5y0=18x0~OQ3NsVbGt=Mi($Lf(dg))3AOOIq<&=ib7g;jhT>Jh4pp)(RtCk51
zMZuc-WCt$QNW2y6q+11@WjqC!q&%xD|HBSZiZJk)jYL!AeH-8BS&HXnM~8=oP~Y9k
zKd1ws%jBa`d_Z=)I2j)GgL2*7yF=C!nUh_N=$IneUev?Tzr7jugQs_p<yD4gz`9MN
z5Fv5ex7%dXr=D~rLVK$`@7=Atq_GiBmPz4+`2HSNjR%HxiTuZZqelvFN3yBn2$dIc
z)HJkQQn0gEk&|B{8=ISRUPG@y<TbvlYDk^2F9Rc-q8E2nH8xBwk|Ym4`&{hpxgiHI
z+*69Q%k;C(R({5{2Ff->O7y%=$%FxJ4zc;eNwuw8-vHm0a*Uo*G&K|1D;v$lPgdrU
z5$fHcrS|2@whBI4A@U-p*65!=!%2ntNdayrHEB{l5Mj~6@Ycdq`vSpIjNg)r^G|G!
z@i>LTt9XV-1b{~`MN3i12+eol3RAHW6d(HunPqqiWv*!_qEfG-o(m<V7K*+p`vfX|
zz&nX!sfgoxkgk{Pr{Lj%YH>a#IkndR&$I57gX3atnR#Hm(Ypp?$Hh|C9%O`mjN5Y1
zN$OTz%lNW0I$Ip&E@&D3;oDtE(rEulJ5{)HxbIB`My6bmEODJF7r9<dt;BhlYX77!
zX__LrJtnpN>4nQF&^raLTECX7_%h%@P3)31F(CGxNHt=}4%U6;oVswLCGiD^nm@0%
zPjCtSd?EUDRP#gIYaYAGw3I$-?hbE7CaJtx7jQeL)naOehTYZ{n(Q*YK(C~xeoWy2
z5m_Fn-N7BpD+ygtka2C8djx23O!>^br-+;#74G$Tp7m!uD^Pi|cs0lCHk~B4e1fG<
zI9K%DGXP+(#$Nq(y&d4;>^-?~tS8QG&5_#1X69W~68{GlT0&DGo0ChFILKiHFh(`v
zreEt%bqq~Ew}GKQ?$Xo;1@ea+w`L_PZuDNHP}?M7w<vSh077dXfZjvEgZ#X96;6<O
ztq}3p;J`s)PScGg2GTA6_vZX|rM9}n;zD42CG)?P5}b3?2a?gUqj@&FnD(GC^tR++
zU%<v6in1%AUL=?8az<th+P_Emp-<-WnH~Tx>?bUmk~=q-rMbPGH7Pf@$--}tvLaLL
z*&WTOqOQe0`i#9UU3GB%E2qi<;#HO1IU~KNTU|5j>Pgsw)^MSHU0)D-4de8Ap&xW;
zN~mMIZx{6|Z+2j$w3@_}GTwu0HzUR6A!sLQ(TDSNLPeb0Fblo+@!Dgf%M4Jeb8~s~
z&Dzq0nZGoTarwDFr@m6oB3V?Fp~l%LXMo1t4Vtp~suY6JaEACQyZ!|_DJM^aruUuK
z%SZgRU=R}$9;%xxk?y{!_!zufptn*qL;8e4IZo3=XFt@s<j&O!0?GAaLX=tzN!*t}
z#(N7GcV&222fJ|t1?Y%NM(A<i{!H^(J-61YAZ7kQSyv+<A+6qrH<f}zcR4z@j{x;9
z$@2TU%yH1Uxw%BU!C$uryaRhueS8=%d+D0`df8G#i|?zsFjVxlqs6FI$=b$RI~8I>
z!Im)Ov<3swJb$#jv?PV?Qouhx{JrKuc5wLRSY~}Uh7s^c&{H$=UQ*);QZ3$wz4QTq
zzkMfkI)?9+{15|xc6bise-cLbo<E&6<st=BVnW+q=Y@x#M7t;8=ofK&lr@4uL(q3c
zxX?#2b0kiLBYZq(L*?eT((&2$_R>M;+)<6tfmjZ&zz!Hy+|9$#qX*REc_NM#qK^Tz
z)OoQeT~GawsKMYfZT*M$_R{8}nRWnMA+n91_)%%b{2}~g-->vda`A0H(FZg&H#S~S
z^oarW8qY32B69VZUPC%5KB4w(LGcphK#=2n6{JV@^`~2j!maeC^d|Jrrl1-vifgR)
z!oVhK(1dsmD{|sAX!rvY)K`o-3ns5^q6pLiZ|F4c2~1?i?#f>O<@kjfCvy&|d~VT2
z>ARB_;GP!XYj9?OwB0#dDF_5a*?%0NFgkw6>h?u>F=&httv7M36-358vqZ!FnreXt
z`a(+!o`2uv%NbKw$2&xpSNG;qI;EoW=&a|DXG3iRot^jg)}et*6(qtsMnu_@#EZqG
zF*!DCt6g+b!S~#Ny4r@nVa#E{2oq5)TR#4V6RGLTcdcG-%G<$jH~Tzk3o{7tK%(&U
zv@fZ*B(Umzk&Tt?Ca{&2nHe%?d~|1GKF>D4j#k{lzIgt~;@+B)ETn(BvA?cvlCSM+
zN`{`7lWoi?DepITi;q0Fp{I)i{f9>x{q6Jb&d#XG8ymyU8f*F<H=$qfVLpY)iLz*y
z_870)3p8tt!LHBN8^aP-$AeHXRTES{cD{{h$LBs23?wXsLMI3ScX!$=Aq!v5Q+LXJ
zM0lv897H@KP7mmp1AtLGGH&Ft@0q5DCpR*Xni6zZN&7}x((5&U7`88*GWN{U%hM&Y
zEdm4HV}BoyZRY7o_Nem(5DKTAF@LDfAhWu`R!p{<z~(!^IJGSMan<tHsh5qfriMQy
zB{&iGuWyK*Oz?E~>`;caz(C->oMH=ctmdV6NbS5If4lF?Mo=FEpjVxnf4=#fwC|a~
z)Jm6JngVw?TF-#*6Uj^f%gap>ZEtZS;qw~*B*DVq;5>oLQ>(`B?Pb)?gw(^chfKAu
z1`&qsFs#i{BJpAVW2vu=2HNkXMjXvU#;Kmxc3P;D(ljjnNo^JXZq)0(mEjb?5LZ-u
zWb}M=4)7{DnqH(xU;Gqb{%80Xzl(8lzrrLk>J*@hF){Ogr{DYB@Re81yCVq+2?+1$
zBiXsFwR21UeF&3seqLGbxlS6}<173u&L@_PJ$4aU&8ef!d?*C|>{8a`O-owfy)dTN
zUf|Y>8dBBWkFrt~k2SMcGN@R}4lkL>1)4Bf|B$_-Ct=W%vADLFlASbkFJoHTZb2l^
zu5(q=f@h^bbkd|H>0h9E(uq0uFCP1NazK&rGYa-&0vED2RCHZZ`N<pi?E&C$Dz?kU
zz>JXux^F>^vLs>4ARPrO)*Ay{U3{JT(qZ#@hK-<VIP*bJ^%FCg_uBe$;&t=b+a@15
zE7j6D(!n|HPr#pu`8UU^WG_e*t()n_)oRBSc16yUlB&JlXz|%3UNlA`awGvML7G^n
z?*=QvZ#7KVLwtBOCEx?W8TE?<u!9>aP^FR~Qi>vTM+iWwhyxH3oELI%MM@kZS!wiK
zZI3-%B_by)+<&O}$7}qhGdVh^n?ux`+>Ca=RAshGJ>fTx8$i|0GMrrqsV-4`-b}Vl
zV^=rZXLmSpr<+LQqqik1R2K33+D%^=l5b2aBuXvR)FBoMwaaHosPe;2PivST$9+kC
z^l~Z3D{Gx;k%s!9glMyXV}Hwo@?_dU5$9x3QO>>XOin%_H`KMa?!YBA(lW?xA<FIB
zA(IVq=F}f?*2j%9_8XnM_V*v_DY!(uR@RIP{B)<Nw+MMIcH<ug#jQ>c=9M!S$?<2B
z$dl}&20L%4VZZ9ZZr&h_u7^NJT0S4gdhe5{k~dZIo$gjsgM1S1X6<%kUE+cbURWy=
zb%>b59gQPpaB}sg&Gf5q#en;Zf6XAb^}p^4M+>h2-#jf?K4-p7t{_3LE;-f*9zhK}
zVw^7Uk)jQqOl=zah=A`?&e>UXd$JPMS|#DI@(T=5D%tSr!bHL&(lOv1mY(ytyX%F;
z_Suv_*FZ8rgRSiy3v%}Exd+0izhAcLaH!azIwz8UUv}szv~745e6-@;>xf-nUg9fQ
zUw&b;arVi4;ik5O#0&Ydj9SHiX<2eoaP(=Ni3y81Cqb!K$E;s~8q9O(uA#H<*^^!u
zf3?2})Ta{|cshSy$Z^fpir8;MD!Ims-)c0kw?x72n4;~QV^uCpI+tRA1ovZ)sLlxq
z+r)RKPH5a@31IDjOf<N*tm!F(oskpvdb#ToQrpkJAvTOakZ&TVbp*WJArT>9a9bHL
zZ|U1N77P8u$6fm;WJ1)nhE!XpH|qi>&FdZDvB|Ek&kJ71zs>q!dpfnVmW18_K#I#&
zadw+ttmOKQ8<tGxh!5CP*7;s=d$r5XJ3p&H0(GS32=iR^#0Rj`jzjOn8LmLB5TBj&
zqM2sbJK-qzmWQT5`3N76qZt!P$sjQ?F^9u~e0{#<&cR&u0=^_FAqMlePHMF_*(asX
zE1L*QvlI<Vj|*boH=RgRip+ks<%+3S2okhf2zOQjJKNm$x-Hf`obf^9Q31~jqD3g}
zbqk<Rh%<2r$~55%00TaYPa(Kkht=;*pSgXqC!t?%!QP_;IYak<Bx#)IpmWU!E(k1Y
za|GkQE6W(P*AJez*RtJ+Cv`j6kjDxapYRuo!Ti4l-EFJh0|B+I7UO|FlP|bb2zI1b
z>dRb`On&-w^_9ILc(bEMRxZ{3)^;|m<pEgcLkeMR4%p32y;2G1g7yt$X(X%$4g=Td
zr8e@p8W$(@iX}b&cn0g;st{&9OnSFB1O@G!W~F%uaDBdAn<4ppHKDdJ$$O4cY&uHH
z1wuDN=DjUeFWNc-xf!yfp>bN2(@ea4s_(ozWF!g<vX~iPQ%E6aV7(#T1d>l>=bqZB
zkw-kwn}oxsO_URXKW5KTr<lw!dmH0f9v*7;R|oi{zz_O{;-jI}yBau8&Uv30_U3Nq
z=tkj<fAE#y-or-_$bn8cGdthDS!2y^zP_BfZ~KMA2w-;thD^h;=|!8YYFrB#ycSz3
zVgpsWaWpJYK`Y+8!zF{n;F1#Hs2Y>-ywZ>J{DYq~|FZH!rzP(|L!R{^1EshjM|Wk<
z&q-fra^U{H^D#kAHqlDICFFjr!4KV}@=vK9aK~@)HslPqM3!%|qVR`xl{w03YZ006
zhOx5uII!FL1_3mE%e-7aAyxSIC7Ovl`v}^WpmDj@6#l?En*j(g-Pd-|uN}eqFdw*2
zFAuI7xiOKlnk_HG+*Z-0$KJ&Tw5QGo8mmLB*F~l)i-x1`VCM?z<VP1i>O8PhxD4U&
zAV&gORODY<2)HKzGsIw@Lp3}h!BU;Ad^^Jfc%GbY9S?{+l1HrCG$ph~8j9#V7K*j?
zSik!zC0Ep35jy?}TKpYrGPygLfB9vd%%Z}tTijXq-q9zl(m18+@5_cCe?ByZN<Q(#
zD<hhizEWRf^AeA~hOovw^?nS<1(6*@5fo-`_Gf4*u^B4c%`wI<7_v&V#YOR~k)PE`
zxNS&3CjmoACX6|Ti5SJeq??<z?$eIjoRH^Le6tnFr}m7;vBc&)+Lf`++bH#;Cl-0f
z+RsiVi@cn;P(9VWfF7?Ah^zLQ;P59~p&k&YnO?LifgfZsj-^lae%yP11aDCC{AY!z
z|Lg_!6+`Gf2^o=9AyVks-$9-fTk?d$v9{`^XN{e`5iW!WtY}BO$J+L03K(Opv&b!g
zgJSAIsQuJJDcE_Mc{cc&4t<eE3LNh@86K>?)n@|P``KMXNO?a$KVQFM*5uyFI~x62
zED0s+DHI9|s+y#5^0w6s8~xR*=(-JO6BD%Q58xE7zMiC!;9Mi-Y`L8(pYcthCpRi;
z>GHOu&M<NfIN8|_9q{RqZbOWP=4M|gJjs%_1-3{yfskVC4_grfd_fWAO`^LlOP-av
z8G|2)iL>^*1}qM7@xw}JohG=UlnQ(1O|jz^A;7#=RJGtYhhLS}&G<rkU9R{)Q<Vdk
z!vunRIcO5LO}k*yHax0q$4Xu5I`FfMtgNh%dKaw2sCO7_DADPjB_1?eL3s_mDZCFG
zIrcfNxpxIKrX<C(g|kWQHHUQX)I~#LjmaU@Dwfl_Lscd7)0Z%s78mMwL*JI8dBT1X
zE>`w#V-!M}Vu@ST#4o=m<Nb3npLSgS!XjOtXZM}}M2-ebjAY2|`sGVa>w%Tue!<~@
z(j`z}s-{$bU=lryRUUrP36%mc>=z-Go&1U&9*8s<{$yz#tH~MY^BFHFszp?%bqWIB
zfT8Uva`*BtwKO2A+sx+H>qVL+?fxE9kcmhcDHaFoDLQrYxl@{Q<bV+;poY+ra2yy#
ztiUTYbyg|*mG(4>==8XS6uNHydyMP-Kt3@Iaa5;i*4K)N{1Xam6BAYY*R;JAZ}uc;
zt4O^P8O2~d{=A~$RHd{}Gc@I8ZKH{rAPsAQXWgHmQDGdN_XimxX@^_3T+rc;>LKhZ
z>cXoY-O#aP%WyA1I2PJ_t~wD}Ks=_-9y7To^$QofU^aGnYIzId69;c}@DMmh1aQTw
zfx4cKW#3<$Pocvp`CPoah6(^&#soTmi$EMTh@y7D;5qQeQksV#8mV@h`4(sHf|^or
zd4$$*d~ql|GO$^P{FNi=5!N}|23U=|p?8`Fu(9)+{FzpYPW_rE<4G%QBqW-cU}Esl
zYgZ#@7i6);YKfpldNh!$u*jo#I`y{uD=-j2i=eKc$VRl}MI-j%cCbB5<|G`CgQ=yK
zZHLZng&Md=qYC**%M&Fn7C5%N`Bjxt3TSzFx8=Vk3tY9-rJ)uR8<%d2+{4AL`Oa_M
z`R}iBQ?|tt&9bpZO<z8H&drcHG_o=jk08+2W=K#b>u!#=SBh0|4b!};aP<7`!6B7i
zRZ=MDs=t-+;Q)J|D3FpD942G$sdD#l&aq{ooAFl+y>nBXJz+*$Jf8WtJnOsGIh71m
zW_@m=w^#K;jUKRrC3x4kjrl@fSs9RsrPz9I_0pVSeLRc^lGXhCI%I)cdn)sj<w}8u
zvH_qXQ(^yludy*UObY;D!HrTck4~Y93}omK*qoUnX$perFQe=ES3!c(=lQt@x0B{C
zoOJCMmM?WSFHdF!Sb0y(7l<2aV~NXJ(|3BE7nhb;sLDG#JFgQ6s%PG-4o<C#te&BZ
zn-)#(?^&}wX9~*JW!=iB@x$c7=gIDaAATt6nK_X?o)_qK&`fEdndMlmdL(CzG2J?V
zla?MP)0EHkSW}%Al?c-?>^Bw{@0tmEZ1vLI##9q}AM0g${q68$Nt%fJ`Jf0l8qc?}
ze(m*sUz4wd!KcW%Q-6WD<z?QFOypG$w@H(wbg4Y1gM&|gU*@kD{yX3>{7-wW(Cvlo
zSQk7CWNKuzmu6J!2W<+Iq@K-Gk91YB-vH`t8R`@=oO6V}ezq^CP%4byRn|G=ezJd(
z?&*oHJ1J_`v$lRB;OG7&iTy;HDhmjr$}cbwk`D_(Ee{Ug{oKzp;MQif*lou9K}~H2
z4r<#=RJ66Q)g)r<VETnh2X7d@-{@`V4Pia|TRBrCQ^x)<RZdAc@c|h)L<w~H5#@T4
z1&71Q00DMOpYy)Ja4qcO(jEv57qckNhF-v2taP)rrHkuT({mAcaxD|I*gEPqh>=1G
z_d19jGJ`Juobr`MJy5z#gULKFt-#P&WX10<Jv&TxL4;cr`C|?hCfjt491}!M&=UuU
zi))A0F}i;2v)j#GWq}<b>`Q|rn1fDGnw#^jf>_Njae64gY@46XUXPwiNs7u%B;Hdy
z#Rz*76U?4`Uvq?t*Vb9VJ!%1-J<aSVDONI$;3Z^Ti1jtkw<a3PPM%<|;C5k(#D4AL
zJ~ux5Px|&ZkBxzP<fGwJ{NO=s3nDP<ZNqB8DyGOtE399;=+&O@_MCI9_hZoM7R6)x
zJR9;fNT0yph}G5AiGNn!xBcihb}-YQcn$7LA8VsY@N-PC2@Ija2|mo1Yz&8;$aM2T
zIixn2TE;~N?HV?JN^29WPPYy7+F$h@tazHGD^#AVCF&G1zYk6&&aFzizIU#Gi+FYX
za6V+}3P<&voh5T<EPBx)Gil4j{&Ac;<G&k-{GEr^`BHEE|A->(30;V#>jm|smJh<n
z3bO)W1g(p7n@-J`|JbhtcQNa-$ONoc>@bgGdyNmD;aN_-5xJtXKYpZIuLsZuo~Aoc
zMKp(RE~`Fz`$H}rYh-kXJkZ3o8;5r38y23(T^7818>&;vr902CkWJzNG0{1UxWD6^
zIwGBksOZy}?yLDn6I!lD2@&P3y|SmJ9xbg6bb3Kl`2k-IueZBB(ZN4fW*Ux}<akYU
zEN;ds`=?=U=*sds?wfr7VC&DJZp`Ys6%hZmPb$MYvl0U+Tf(SWcGt8uVz^A>ht@UO
zJfbe@dB_Q|9wJb29h#V1>>v@%Zs#=L@PoH2g98wkm6h^VUG!}WX@xOc(4Sl@ycF8n
z5yAJn^vm6^q@B&NN9o3$DZk5$mosUFmgegCX$b4d&Szw4+`b;}?++N*rgpZKby_s+
zr2+KWNNGXYUpc)IQQZ#!IE4=+16uhA3H|R6pa6jIL_7R-UNER&CyhlmbRW*e@6EAA
zo^EWz7L!SS=-x>=I7mM+JtU>*S|_snMDL}~ulQKBscBcl(UITel;GbKtR>;}1<T8{
zGB~*MHBqz~eH%7V9r<q*Ox?5j>AG<sKZShp2^JU4bUb4CFa>`o%4}bj3_{qh7}Vw-
z91A~^4MZVBU;dI}iu^O|x1lTbAxwwbdz>z!+bEoJHHtA`0Ldoi>Eiy`^zxk}JwQ(N
z;&aN)=F4P5FqHc|v@TKNJJ#iPYvf4IWeOKle?X`D{z;fcyd;`$e2vGY4Ru+$3-4dI
zal1$VhZ&d+XxaOZ%|Wp0PPDk~JQe5$>S{72@8OAJ2Q(k&coKr_ffhrNkE>)|tN@@T
z0Nn#io8UgKB}3zDweeHvsV;%qcF)l==TUp*(ucHS#;BE+$b#GRD#ASh6PHy5Tt3q%
ztFFisY1jGRBplym0SF33zk=qX*Og|KN-szo8~=3VS7*uOfGP(eI&ay@hI+z1rpDqg
zeF%TR>+9I(f@?l*rlT&I49Ll)Z1WY$_Ren`YHN|HMc3D%Q)Dn?m5j{lhrm}j?o-jE
z>tfHR07C-<rHhLT(B)DJ(I&j*ItYB^HrURa9?FKk?tII2v$4Pb?O<_fGp8H)bgOsG
zXy<)8HiL-n>C#fx&G#vbK(Py)6n%JIpWE4@zKwjtCz*^q0Z~s#)7x`$R#3LQf5KA9
z6^@CXpo=fuJi4^wd@)UOi(BwR$onFxfM0*v<@-#jjW}a}TyNP<OM0y|xx26B3ST<y
zA2*11ea8YFuu86`KrMVU5@|;Mx~01u_p+$^DF8s5Dzp7ev6uZ&FV2{`LdG_xh2@=C
zlxDY@KuBa8_NU}AMoQ;7)AlqdhzkE}(9Lno^SBOu4q#NC2LJEXSb-m*XcD&1Wal<1
zT%M7rS?ANC#J5C$_q(hVWU?|s&&x*gW?v~NXGbSB7j698QSywq5{8re%6;vE@Q=oa
zkHH~hFy(8ei;J<)KbMj5F`I$0JaiQu<r{flk=rkMw`gug*Y^{3<U=P_)RFD9b8m%b
zAcw3@hH}ak^g)<sfp{RF&#W}&IK360S6*wdj5qQB*=!65oU|9*Tae3^issFsJOsjC
z9el}nAqIP~m8I#-U~O69(_U{VK>b>(;swVq!5lbL!IPBUbt#twL5a5jIhiWBd}HrT
z#p5jRPzPLT%nxojkv<3cSNuoIlxjH9#e;9`)L_=@3$c(*SV`pn|NWH4U9s*C0hYsj
WFRR^F*Zw_@0ctAR%1w&4G5-h2UO5~9

diff --git a/pandora_console/images/discovery/pandorafms.ovh.png b/pandora_console/images/discovery/pandorafms.ovh.png
index 69eddb9a31610ff374fb5e76e8e3ac5d9c8267d6..37910c38aafd220a989f5687f216599cab04f9f3 100644
GIT binary patch
literal 3723
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
AP5=M^

literal 4361
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
CT5|XR


From bd808d72f39447e04c95f5a611a9d984f588901e Mon Sep 17 00:00:00 2001
From: Pablo Aragon <pablo.aragon@pandorafms.com>
Date: Thu, 11 Jan 2024 12:52:23 +0100
Subject: [PATCH 114/231] 12320-Welcome wizard new styles. Fix all complete li

---
 .../styles/new_installation_welcome_window.css     | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/pandora_console/include/styles/new_installation_welcome_window.css b/pandora_console/include/styles/new_installation_welcome_window.css
index e4c16ca29c..64a8d44266 100644
--- a/pandora_console/include/styles/new_installation_welcome_window.css
+++ b/pandora_console/include/styles/new_installation_welcome_window.css
@@ -161,6 +161,11 @@ div#welcome_modal_window .wizard li#li-div_wizard_agent {
   padding-left: 0;
 }
 
+/* div#welcome_modal_window .wizard li#li-div_diagnosis {
+  top: 0;
+  position: absolute;
+} */
+
 div#welcome_modal_window .wizard li#li-div_diagnosis label {
   font-size: 17px;
   line-height: 20px;
@@ -232,6 +237,15 @@ div#welcome_modal_window .wizard .fail.onlyIcon.buttonButton:hover span {
   color: #3bdce1;
 }
 
+div#welcome_modal_window .wizard #li-div_all_correct {
+  height: 100%;
+  margin-bottom: 145px;
+}
+
+div#welcome_modal_window .wizard #li-div_all_correct * {
+  font-size: 10pt;
+}
+
 div#welcome_modal_window .wizard #li-div_task_todo {
   padding-bottom: 2px;
 }

From 5cf9d70c6f57ccc00ef383e5b36a00de3be7d2cd Mon Sep 17 00:00:00 2001
From: "felix.suarez" <felix.suarez@pandorafms.com>
Date: Thu, 11 Jan 2024 09:58:06 -0600
Subject: [PATCH 115/231] Add config token for mail_subject_encoding

---
 pandora_server/conf/pandora_server.conf.new | 2 ++
 pandora_server/lib/PandoraFMS/Config.pm     | 5 +++++
 pandora_server/lib/PandoraFMS/Tools.pm      | 3 ++-
 3 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/pandora_server/conf/pandora_server.conf.new b/pandora_server/conf/pandora_server.conf.new
index bddb11a293..1945cbd08f 100644
--- a/pandora_server/conf/pandora_server.conf.new
+++ b/pandora_server/conf/pandora_server.conf.new
@@ -816,3 +816,5 @@ madeserver_autofit 7d
 # Model sensitivity. A lower value triggers less anomalies (PANDORA FMS ENTERPRISE ONLY).
 madeserver_sensitivity 0.1
 
+# Encoding to use on mail subject (MIME-Header by default)
+# mail_subject_encoding MIME-Header-ISO_2022_JP
\ No newline at end of file
diff --git a/pandora_server/lib/PandoraFMS/Config.pm b/pandora_server/lib/PandoraFMS/Config.pm
index 4f45c28b19..4b7a6c142a 100644
--- a/pandora_server/lib/PandoraFMS/Config.pm
+++ b/pandora_server/lib/PandoraFMS/Config.pm
@@ -589,6 +589,8 @@ sub pandora_load_config {
 
 	$pa_config->{"madeserver"} = 0; # 774.
 
+	$pa_config->{"mail_subject_encoding"} = 'MIME-Header'; # 776.
+
 	# Check for UID0
 	if ($pa_config->{"quiet"} != 0){
 		if ($> == 0){
@@ -691,6 +693,9 @@ sub pandora_load_config {
 		elsif ($parametro =~ m/^mail_in_separate\s+([0-9]*)/i) { 
 			$pa_config->{'mail_in_separate'}= clean_blank($1); 
 		}
+		elsif ($parametro =~ m/^mail_subject_encoding\s(.*)/i) { 
+			$pa_config->{'mail_subject_encoding'}= clean_blank($1); 
+		}
 		elsif ($parametro =~ m/^snmp_logfile\s(.*)/i) { 
 			$pa_config->{'snmp_logfile'}= clean_blank($1); 
 		}
diff --git a/pandora_server/lib/PandoraFMS/Tools.pm b/pandora_server/lib/PandoraFMS/Tools.pm
index 580344542c..543ea45556 100755
--- a/pandora_server/lib/PandoraFMS/Tools.pm
+++ b/pandora_server/lib/PandoraFMS/Tools.pm
@@ -748,6 +748,7 @@ sub pandora_sendmail {
 	my $subject = $_[2];
 	my $message = $_[3];
 	my $content_type = $_[4];
+	my $encoding = $pa_config->{"mail_subject_encoding"} || 'MIME-Header';
 	
 	$subject = decode_entities ($subject);
 
@@ -758,7 +759,7 @@ sub pandora_sendmail {
 	
 	my %mail = ( To	=> $to_address,
 		Message		=> $message,
-		Subject		=> encode('MIME-Header', $subject),
+		Subject		=> encode($encoding, $subject),
 		'X-Mailer'	=> $pa_config->{"rb_product_name"},
 		Smtp		=> $pa_config->{"mta_address"},
 		Port		=> $pa_config->{"mta_port"},

From 3a509b94151d23ef8e8db8e8ed57a7e1e6a2cd50 Mon Sep 17 00:00:00 2001
From: artica <artica.devel@gmail.com>
Date: Fri, 12 Jan 2024 01:02:06 +0100
Subject: [PATCH 116/231] Auto-updated build strings.

---
 pandora_agents/unix/DEBIAN/control                    | 2 +-
 pandora_agents/unix/DEBIAN/make_deb_package.sh        | 2 +-
 pandora_agents/unix/pandora_agent                     | 2 +-
 pandora_agents/unix/pandora_agent.redhat.spec         | 2 +-
 pandora_agents/unix/pandora_agent.redhat_bin.el8.spec | 2 +-
 pandora_agents/unix/pandora_agent.redhat_bin.el9.spec | 2 +-
 pandora_agents/unix/pandora_agent.redhat_bin.spec     | 2 +-
 pandora_agents/unix/pandora_agent.spec                | 2 +-
 pandora_agents/unix/pandora_agent_installer           | 2 +-
 pandora_agents/win32/installer/pandora.mpi            | 2 +-
 pandora_agents/win32/pandora.cc                       | 2 +-
 pandora_agents/win32/versioninfo.rc                   | 2 +-
 pandora_console/DEBIAN/control                        | 2 +-
 pandora_console/DEBIAN/make_deb_package.sh            | 2 +-
 pandora_console/include/config_process.php            | 2 +-
 pandora_console/install.php                           | 2 +-
 pandora_console/pandora_console.redhat.spec           | 2 +-
 pandora_console/pandora_console.rhel7.spec            | 2 +-
 pandora_console/pandora_console.spec                  | 2 +-
 pandora_server/DEBIAN/control                         | 2 +-
 pandora_server/DEBIAN/make_deb_package.sh             | 2 +-
 pandora_server/lib/PandoraFMS/Config.pm               | 2 +-
 pandora_server/lib/PandoraFMS/PluginTools.pm          | 2 +-
 pandora_server/pandora_server.redhat.spec             | 2 +-
 pandora_server/pandora_server.spec                    | 2 +-
 pandora_server/pandora_server_installer               | 2 +-
 pandora_server/util/pandora_db.pl                     | 2 +-
 pandora_server/util/pandora_manage.pl                 | 2 +-
 28 files changed, 28 insertions(+), 28 deletions(-)

diff --git a/pandora_agents/unix/DEBIAN/control b/pandora_agents/unix/DEBIAN/control
index 736023d74c..8ab7ed2464 100644
--- a/pandora_agents/unix/DEBIAN/control
+++ b/pandora_agents/unix/DEBIAN/control
@@ -1,5 +1,5 @@
 package: pandorafms-agent-unix
-Version: 7.0NG.775-240111
+Version: 7.0NG.775-240112
 Architecture: all
 Priority: optional
 Section: admin
diff --git a/pandora_agents/unix/DEBIAN/make_deb_package.sh b/pandora_agents/unix/DEBIAN/make_deb_package.sh
index 96332b40eb..de56e36492 100644
--- a/pandora_agents/unix/DEBIAN/make_deb_package.sh
+++ b/pandora_agents/unix/DEBIAN/make_deb_package.sh
@@ -14,7 +14,7 @@
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 # GNU General Public License for more details.
 
-pandora_version="7.0NG.775-240111"
+pandora_version="7.0NG.775-240112"
 
 echo "Test if you has the tools for to make the packages."
 whereis dpkg-deb | cut -d":" -f2 | grep dpkg-deb > /dev/null
diff --git a/pandora_agents/unix/pandora_agent b/pandora_agents/unix/pandora_agent
index 46363099e7..44f466714e 100755
--- a/pandora_agents/unix/pandora_agent
+++ b/pandora_agents/unix/pandora_agent
@@ -1039,7 +1039,7 @@ my $Sem = undef;
 my $ThreadSem = undef;
 
 use constant AGENT_VERSION => '7.0NG.775';
-use constant AGENT_BUILD => '240111';
+use constant AGENT_BUILD => '240112';
 
 # Agent log default file size maximum and instances
 use constant DEFAULT_MAX_LOG_SIZE => 600000;
diff --git a/pandora_agents/unix/pandora_agent.redhat.spec b/pandora_agents/unix/pandora_agent.redhat.spec
index fec771056d..d87249cc31 100644
--- a/pandora_agents/unix/pandora_agent.redhat.spec
+++ b/pandora_agents/unix/pandora_agent.redhat.spec
@@ -4,7 +4,7 @@
 %global __os_install_post %{nil}
 %define name        pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240111
+%define release     240112
 
 Summary:            Pandora FMS Linux agent, PERL version
 Name:               %{name}
diff --git a/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec b/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec
index e92767ae61..4bf5bb42d9 100644
--- a/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec
+++ b/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec
@@ -5,7 +5,7 @@
 %define name        pandorafms_agent_linux_bin
 %define source_name pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240111
+%define release     240112
 %define debug_package %{nil}
 
 Summary:            Pandora FMS Linux agent, binary version
diff --git a/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec b/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec
index ffa3776334..9470be01b5 100644
--- a/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec
+++ b/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec
@@ -5,7 +5,7 @@
 %define name        pandorafms_agent_linux_bin
 %define source_name pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240111
+%define release     240112
 %define debug_package %{nil}
 
 Summary:            Pandora FMS Linux agent, binary version
diff --git a/pandora_agents/unix/pandora_agent.redhat_bin.spec b/pandora_agents/unix/pandora_agent.redhat_bin.spec
index a433acbaf4..cd42cc9d21 100644
--- a/pandora_agents/unix/pandora_agent.redhat_bin.spec
+++ b/pandora_agents/unix/pandora_agent.redhat_bin.spec
@@ -5,7 +5,7 @@
 %define name        pandorafms_agent_linux_bin
 %define source_name pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240111
+%define release     240112
 
 Summary:            Pandora FMS Linux agent, binary version
 Name:               %{name}
diff --git a/pandora_agents/unix/pandora_agent.spec b/pandora_agents/unix/pandora_agent.spec
index 05994e8efd..59adc646e9 100644
--- a/pandora_agents/unix/pandora_agent.spec
+++ b/pandora_agents/unix/pandora_agent.spec
@@ -4,7 +4,7 @@
 %global __os_install_post %{nil}
 %define name        pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240111
+%define release     240112
 
 Summary:            Pandora FMS Linux agent, PERL version
 Name:               %{name}
diff --git a/pandora_agents/unix/pandora_agent_installer b/pandora_agents/unix/pandora_agent_installer
index 8710e37350..cddd5afa5f 100755
--- a/pandora_agents/unix/pandora_agent_installer
+++ b/pandora_agents/unix/pandora_agent_installer
@@ -10,7 +10,7 @@
 # **********************************************************************
 
 PI_VERSION="7.0NG.775"
-PI_BUILD="240111"
+PI_BUILD="240112"
 OS_NAME=`uname -s`
 
 FORCE=0
diff --git a/pandora_agents/win32/installer/pandora.mpi b/pandora_agents/win32/installer/pandora.mpi
index 652e97ea30..48be618d30 100644
--- a/pandora_agents/win32/installer/pandora.mpi
+++ b/pandora_agents/win32/installer/pandora.mpi
@@ -186,7 +186,7 @@ UpgradeApplicationID
 {}
 
 Version
-{240111}
+{240112}
 
 ViewReadme
 {Yes}
diff --git a/pandora_agents/win32/pandora.cc b/pandora_agents/win32/pandora.cc
index 7366a01592..bc28a306f8 100644
--- a/pandora_agents/win32/pandora.cc
+++ b/pandora_agents/win32/pandora.cc
@@ -30,7 +30,7 @@ using namespace Pandora;
 using namespace Pandora_Strutils;
 
 #define PATH_SIZE    _MAX_PATH+1
-#define PANDORA_VERSION ("7.0NG.775 Build 240111")
+#define PANDORA_VERSION ("7.0NG.775 Build 240112")
 
 string pandora_path;
 string pandora_dir;
diff --git a/pandora_agents/win32/versioninfo.rc b/pandora_agents/win32/versioninfo.rc
index 255d96f00e..3dfd32e864 100644
--- a/pandora_agents/win32/versioninfo.rc
+++ b/pandora_agents/win32/versioninfo.rc
@@ -11,7 +11,7 @@ BEGIN
       VALUE "LegalCopyright", "Pandora FMS"
       VALUE "OriginalFilename", "PandoraAgent.exe"
       VALUE "ProductName", "Pandora FMS Windows Agent"
-      VALUE "ProductVersion", "(7.0NG.775(Build 240111))"
+      VALUE "ProductVersion", "(7.0NG.775(Build 240112))"
       VALUE "FileVersion", "1.0.0.0"
     END
   END
diff --git a/pandora_console/DEBIAN/control b/pandora_console/DEBIAN/control
index 6831b86b26..412b9f14a2 100644
--- a/pandora_console/DEBIAN/control
+++ b/pandora_console/DEBIAN/control
@@ -1,5 +1,5 @@
 package: pandorafms-console
-Version: 7.0NG.775-240111
+Version: 7.0NG.775-240112
 Architecture: all
 Priority: optional
 Section: admin
diff --git a/pandora_console/DEBIAN/make_deb_package.sh b/pandora_console/DEBIAN/make_deb_package.sh
index 59e86d11a7..01b0eb0de2 100644
--- a/pandora_console/DEBIAN/make_deb_package.sh
+++ b/pandora_console/DEBIAN/make_deb_package.sh
@@ -14,7 +14,7 @@
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 # GNU General Public License for more details.
 
-pandora_version="7.0NG.775-240111"
+pandora_version="7.0NG.775-240112"
 
 package_pear=0
 package_pandora=1
diff --git a/pandora_console/include/config_process.php b/pandora_console/include/config_process.php
index f0c1c60fca..0162b3c26e 100644
--- a/pandora_console/include/config_process.php
+++ b/pandora_console/include/config_process.php
@@ -20,7 +20,7 @@
 /**
  * Pandora build version and version
  */
-$build_version = 'PC240111';
+$build_version = 'PC240112';
 $pandora_version = 'v7.0NG.775';
 
 // Do not overwrite default timezone set if defined.
diff --git a/pandora_console/install.php b/pandora_console/install.php
index d5c11694c1..a2fa1810f1 100644
--- a/pandora_console/install.php
+++ b/pandora_console/install.php
@@ -131,7 +131,7 @@
         <div style='padding-bottom: 50px'>
             <?php
             $version = '7.0NG.775';
-            $build = '240111';
+            $build = '240112';
             $banner = "v$version Build $build";
             error_reporting(0);
 
diff --git a/pandora_console/pandora_console.redhat.spec b/pandora_console/pandora_console.redhat.spec
index b3856e1d15..395565e1b2 100644
--- a/pandora_console/pandora_console.redhat.spec
+++ b/pandora_console/pandora_console.redhat.spec
@@ -6,7 +6,7 @@
 %define debug_package %{nil}
 %define name        pandorafms_console
 %define version     7.0NG.775
-%define release     240111
+%define release     240112
 
 # User and Group under which Apache is running
 %define httpd_name  httpd
diff --git a/pandora_console/pandora_console.rhel7.spec b/pandora_console/pandora_console.rhel7.spec
index bafb51f54e..b264864bf8 100644
--- a/pandora_console/pandora_console.rhel7.spec
+++ b/pandora_console/pandora_console.rhel7.spec
@@ -6,7 +6,7 @@
 %define debug_package %{nil}
 %define name        pandorafms_console
 %define version     7.0NG.775
-%define release     240111
+%define release     240112
 
 # User and Group under which Apache is running
 %define httpd_name  httpd
diff --git a/pandora_console/pandora_console.spec b/pandora_console/pandora_console.spec
index cbaa1f11cc..06fb5bbce4 100644
--- a/pandora_console/pandora_console.spec
+++ b/pandora_console/pandora_console.spec
@@ -3,7 +3,7 @@
 #
 %define name        pandorafms_console
 %define version     7.0NG.775
-%define release     240111
+%define release     240112
 %define httpd_name      httpd
 # User and Group under which Apache is running
 %define httpd_name  apache2
diff --git a/pandora_server/DEBIAN/control b/pandora_server/DEBIAN/control
index af44982e4c..c144bdcd3b 100644
--- a/pandora_server/DEBIAN/control
+++ b/pandora_server/DEBIAN/control
@@ -1,5 +1,5 @@
 package: pandorafms-server
-Version: 7.0NG.775-240111
+Version: 7.0NG.775-240112
 Architecture: all
 Priority: optional
 Section: admin
diff --git a/pandora_server/DEBIAN/make_deb_package.sh b/pandora_server/DEBIAN/make_deb_package.sh
index b11bb217f8..2259839ba7 100644
--- a/pandora_server/DEBIAN/make_deb_package.sh
+++ b/pandora_server/DEBIAN/make_deb_package.sh
@@ -14,7 +14,7 @@
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 # GNU General Public License for more details.
 
-pandora_version="7.0NG.775-240111"
+pandora_version="7.0NG.775-240112"
 
 package_cpan=0
 package_pandora=1
diff --git a/pandora_server/lib/PandoraFMS/Config.pm b/pandora_server/lib/PandoraFMS/Config.pm
index 4f45c28b19..f37671c248 100644
--- a/pandora_server/lib/PandoraFMS/Config.pm
+++ b/pandora_server/lib/PandoraFMS/Config.pm
@@ -46,7 +46,7 @@ our @EXPORT = qw(
 
 # version: Defines actual version of Pandora Server for this module only
 my $pandora_version = "7.0NG.775";
-my $pandora_build = "240111";
+my $pandora_build = "240112";
 our $VERSION = $pandora_version." ".$pandora_build;
 
 # Setup hash
diff --git a/pandora_server/lib/PandoraFMS/PluginTools.pm b/pandora_server/lib/PandoraFMS/PluginTools.pm
index 3da93e4349..02cf45e943 100644
--- a/pandora_server/lib/PandoraFMS/PluginTools.pm
+++ b/pandora_server/lib/PandoraFMS/PluginTools.pm
@@ -34,7 +34,7 @@ our @ISA = qw(Exporter);
 
 # version: Defines actual version of Pandora Server for this module only
 my $pandora_version = "7.0NG.775";
-my $pandora_build = "240111";
+my $pandora_build = "240112";
 our $VERSION = $pandora_version." ".$pandora_build;
 
 our %EXPORT_TAGS = ( 'all' => [ qw() ] );
diff --git a/pandora_server/pandora_server.redhat.spec b/pandora_server/pandora_server.redhat.spec
index f384189dc9..1b7d2f53dd 100644
--- a/pandora_server/pandora_server.redhat.spec
+++ b/pandora_server/pandora_server.redhat.spec
@@ -7,7 +7,7 @@
 %define debug_package %{nil}
 %define name        pandorafms_server
 %define version     7.0NG.775
-%define release     240111
+%define release     240112
 
 Summary:            Pandora FMS Server
 Name:               %{name}
diff --git a/pandora_server/pandora_server.spec b/pandora_server/pandora_server.spec
index cc32de3f0f..977cca174d 100644
--- a/pandora_server/pandora_server.spec
+++ b/pandora_server/pandora_server.spec
@@ -4,7 +4,7 @@
 %global __os_install_post %{nil}
 %define name        pandorafms_server
 %define version     7.0NG.775
-%define release     240111
+%define release     240112
 
 Summary:            Pandora FMS Server
 Name:               %{name}
diff --git a/pandora_server/pandora_server_installer b/pandora_server/pandora_server_installer
index b0ab4572b7..47539c4ee9 100755
--- a/pandora_server/pandora_server_installer
+++ b/pandora_server/pandora_server_installer
@@ -9,7 +9,7 @@
 # **********************************************************************
 
 PI_VERSION="7.0NG.775"
-PI_BUILD="240111"
+PI_BUILD="240112"
 
 MODE=$1
 if [ $# -gt 1 ]; then
diff --git a/pandora_server/util/pandora_db.pl b/pandora_server/util/pandora_db.pl
index f5546d746c..90a6defdcc 100755
--- a/pandora_server/util/pandora_db.pl
+++ b/pandora_server/util/pandora_db.pl
@@ -38,7 +38,7 @@ use PandoraFMS::Config;
 use PandoraFMS::DB;
 
 # version: define current version
-my $version = "7.0NG.775 Build 240111";
+my $version = "7.0NG.775 Build 240112";
 
 # Pandora server configuration
 my %conf;
diff --git a/pandora_server/util/pandora_manage.pl b/pandora_server/util/pandora_manage.pl
index 4daeb48656..1d36d15f9c 100755
--- a/pandora_server/util/pandora_manage.pl
+++ b/pandora_server/util/pandora_manage.pl
@@ -36,7 +36,7 @@ use Encode::Locale;
 Encode::Locale::decode_argv;
 
 # version: define current version
-my $version = "7.0NG.775 Build 240111";
+my $version = "7.0NG.775 Build 240112";
 
 # save program name for logging
 my $progname = basename($0);

From e2b837186c31bea29f7016c3ce14f550010b30c5 Mon Sep 17 00:00:00 2001
From: artica <artica.devel@gmail.com>
Date: Sat, 13 Jan 2024 01:00:46 +0100
Subject: [PATCH 117/231] Auto-updated build strings.

---
 pandora_agents/unix/DEBIAN/control                    | 2 +-
 pandora_agents/unix/DEBIAN/make_deb_package.sh        | 2 +-
 pandora_agents/unix/pandora_agent                     | 2 +-
 pandora_agents/unix/pandora_agent.redhat.spec         | 2 +-
 pandora_agents/unix/pandora_agent.redhat_bin.el8.spec | 2 +-
 pandora_agents/unix/pandora_agent.redhat_bin.el9.spec | 2 +-
 pandora_agents/unix/pandora_agent.redhat_bin.spec     | 2 +-
 pandora_agents/unix/pandora_agent.spec                | 2 +-
 pandora_agents/unix/pandora_agent_installer           | 2 +-
 pandora_agents/win32/installer/pandora.mpi            | 2 +-
 pandora_agents/win32/pandora.cc                       | 2 +-
 pandora_agents/win32/versioninfo.rc                   | 2 +-
 pandora_console/DEBIAN/control                        | 2 +-
 pandora_console/DEBIAN/make_deb_package.sh            | 2 +-
 pandora_console/include/config_process.php            | 2 +-
 pandora_console/install.php                           | 2 +-
 pandora_console/pandora_console.redhat.spec           | 2 +-
 pandora_console/pandora_console.rhel7.spec            | 2 +-
 pandora_console/pandora_console.spec                  | 2 +-
 pandora_server/DEBIAN/control                         | 2 +-
 pandora_server/DEBIAN/make_deb_package.sh             | 2 +-
 pandora_server/lib/PandoraFMS/Config.pm               | 2 +-
 pandora_server/lib/PandoraFMS/PluginTools.pm          | 2 +-
 pandora_server/pandora_server.redhat.spec             | 2 +-
 pandora_server/pandora_server.spec                    | 2 +-
 pandora_server/pandora_server_installer               | 2 +-
 pandora_server/util/pandora_db.pl                     | 2 +-
 pandora_server/util/pandora_manage.pl                 | 2 +-
 28 files changed, 28 insertions(+), 28 deletions(-)

diff --git a/pandora_agents/unix/DEBIAN/control b/pandora_agents/unix/DEBIAN/control
index 8ab7ed2464..237b46fdb2 100644
--- a/pandora_agents/unix/DEBIAN/control
+++ b/pandora_agents/unix/DEBIAN/control
@@ -1,5 +1,5 @@
 package: pandorafms-agent-unix
-Version: 7.0NG.775-240112
+Version: 7.0NG.775-240113
 Architecture: all
 Priority: optional
 Section: admin
diff --git a/pandora_agents/unix/DEBIAN/make_deb_package.sh b/pandora_agents/unix/DEBIAN/make_deb_package.sh
index de56e36492..ddaf6da5ac 100644
--- a/pandora_agents/unix/DEBIAN/make_deb_package.sh
+++ b/pandora_agents/unix/DEBIAN/make_deb_package.sh
@@ -14,7 +14,7 @@
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 # GNU General Public License for more details.
 
-pandora_version="7.0NG.775-240112"
+pandora_version="7.0NG.775-240113"
 
 echo "Test if you has the tools for to make the packages."
 whereis dpkg-deb | cut -d":" -f2 | grep dpkg-deb > /dev/null
diff --git a/pandora_agents/unix/pandora_agent b/pandora_agents/unix/pandora_agent
index 44f466714e..6fceed9524 100755
--- a/pandora_agents/unix/pandora_agent
+++ b/pandora_agents/unix/pandora_agent
@@ -1039,7 +1039,7 @@ my $Sem = undef;
 my $ThreadSem = undef;
 
 use constant AGENT_VERSION => '7.0NG.775';
-use constant AGENT_BUILD => '240112';
+use constant AGENT_BUILD => '240113';
 
 # Agent log default file size maximum and instances
 use constant DEFAULT_MAX_LOG_SIZE => 600000;
diff --git a/pandora_agents/unix/pandora_agent.redhat.spec b/pandora_agents/unix/pandora_agent.redhat.spec
index d87249cc31..f803674d68 100644
--- a/pandora_agents/unix/pandora_agent.redhat.spec
+++ b/pandora_agents/unix/pandora_agent.redhat.spec
@@ -4,7 +4,7 @@
 %global __os_install_post %{nil}
 %define name        pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240112
+%define release     240113
 
 Summary:            Pandora FMS Linux agent, PERL version
 Name:               %{name}
diff --git a/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec b/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec
index 4bf5bb42d9..08ccec8f26 100644
--- a/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec
+++ b/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec
@@ -5,7 +5,7 @@
 %define name        pandorafms_agent_linux_bin
 %define source_name pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240112
+%define release     240113
 %define debug_package %{nil}
 
 Summary:            Pandora FMS Linux agent, binary version
diff --git a/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec b/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec
index 9470be01b5..c2efe9b516 100644
--- a/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec
+++ b/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec
@@ -5,7 +5,7 @@
 %define name        pandorafms_agent_linux_bin
 %define source_name pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240112
+%define release     240113
 %define debug_package %{nil}
 
 Summary:            Pandora FMS Linux agent, binary version
diff --git a/pandora_agents/unix/pandora_agent.redhat_bin.spec b/pandora_agents/unix/pandora_agent.redhat_bin.spec
index cd42cc9d21..a3f30db28a 100644
--- a/pandora_agents/unix/pandora_agent.redhat_bin.spec
+++ b/pandora_agents/unix/pandora_agent.redhat_bin.spec
@@ -5,7 +5,7 @@
 %define name        pandorafms_agent_linux_bin
 %define source_name pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240112
+%define release     240113
 
 Summary:            Pandora FMS Linux agent, binary version
 Name:               %{name}
diff --git a/pandora_agents/unix/pandora_agent.spec b/pandora_agents/unix/pandora_agent.spec
index 59adc646e9..e43308e6a4 100644
--- a/pandora_agents/unix/pandora_agent.spec
+++ b/pandora_agents/unix/pandora_agent.spec
@@ -4,7 +4,7 @@
 %global __os_install_post %{nil}
 %define name        pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240112
+%define release     240113
 
 Summary:            Pandora FMS Linux agent, PERL version
 Name:               %{name}
diff --git a/pandora_agents/unix/pandora_agent_installer b/pandora_agents/unix/pandora_agent_installer
index cddd5afa5f..f38ed3fcc9 100755
--- a/pandora_agents/unix/pandora_agent_installer
+++ b/pandora_agents/unix/pandora_agent_installer
@@ -10,7 +10,7 @@
 # **********************************************************************
 
 PI_VERSION="7.0NG.775"
-PI_BUILD="240112"
+PI_BUILD="240113"
 OS_NAME=`uname -s`
 
 FORCE=0
diff --git a/pandora_agents/win32/installer/pandora.mpi b/pandora_agents/win32/installer/pandora.mpi
index 48be618d30..096676f9c3 100644
--- a/pandora_agents/win32/installer/pandora.mpi
+++ b/pandora_agents/win32/installer/pandora.mpi
@@ -186,7 +186,7 @@ UpgradeApplicationID
 {}
 
 Version
-{240112}
+{240113}
 
 ViewReadme
 {Yes}
diff --git a/pandora_agents/win32/pandora.cc b/pandora_agents/win32/pandora.cc
index bc28a306f8..7bfa67fbfb 100644
--- a/pandora_agents/win32/pandora.cc
+++ b/pandora_agents/win32/pandora.cc
@@ -30,7 +30,7 @@ using namespace Pandora;
 using namespace Pandora_Strutils;
 
 #define PATH_SIZE    _MAX_PATH+1
-#define PANDORA_VERSION ("7.0NG.775 Build 240112")
+#define PANDORA_VERSION ("7.0NG.775 Build 240113")
 
 string pandora_path;
 string pandora_dir;
diff --git a/pandora_agents/win32/versioninfo.rc b/pandora_agents/win32/versioninfo.rc
index 3dfd32e864..72cbf73de4 100644
--- a/pandora_agents/win32/versioninfo.rc
+++ b/pandora_agents/win32/versioninfo.rc
@@ -11,7 +11,7 @@ BEGIN
       VALUE "LegalCopyright", "Pandora FMS"
       VALUE "OriginalFilename", "PandoraAgent.exe"
       VALUE "ProductName", "Pandora FMS Windows Agent"
-      VALUE "ProductVersion", "(7.0NG.775(Build 240112))"
+      VALUE "ProductVersion", "(7.0NG.775(Build 240113))"
       VALUE "FileVersion", "1.0.0.0"
     END
   END
diff --git a/pandora_console/DEBIAN/control b/pandora_console/DEBIAN/control
index 412b9f14a2..6e3edf5eda 100644
--- a/pandora_console/DEBIAN/control
+++ b/pandora_console/DEBIAN/control
@@ -1,5 +1,5 @@
 package: pandorafms-console
-Version: 7.0NG.775-240112
+Version: 7.0NG.775-240113
 Architecture: all
 Priority: optional
 Section: admin
diff --git a/pandora_console/DEBIAN/make_deb_package.sh b/pandora_console/DEBIAN/make_deb_package.sh
index 01b0eb0de2..bd7a7c19e6 100644
--- a/pandora_console/DEBIAN/make_deb_package.sh
+++ b/pandora_console/DEBIAN/make_deb_package.sh
@@ -14,7 +14,7 @@
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 # GNU General Public License for more details.
 
-pandora_version="7.0NG.775-240112"
+pandora_version="7.0NG.775-240113"
 
 package_pear=0
 package_pandora=1
diff --git a/pandora_console/include/config_process.php b/pandora_console/include/config_process.php
index 0162b3c26e..52026317cf 100644
--- a/pandora_console/include/config_process.php
+++ b/pandora_console/include/config_process.php
@@ -20,7 +20,7 @@
 /**
  * Pandora build version and version
  */
-$build_version = 'PC240112';
+$build_version = 'PC240113';
 $pandora_version = 'v7.0NG.775';
 
 // Do not overwrite default timezone set if defined.
diff --git a/pandora_console/install.php b/pandora_console/install.php
index a2fa1810f1..9e3bad5621 100644
--- a/pandora_console/install.php
+++ b/pandora_console/install.php
@@ -131,7 +131,7 @@
         <div style='padding-bottom: 50px'>
             <?php
             $version = '7.0NG.775';
-            $build = '240112';
+            $build = '240113';
             $banner = "v$version Build $build";
             error_reporting(0);
 
diff --git a/pandora_console/pandora_console.redhat.spec b/pandora_console/pandora_console.redhat.spec
index 395565e1b2..9eda9eea04 100644
--- a/pandora_console/pandora_console.redhat.spec
+++ b/pandora_console/pandora_console.redhat.spec
@@ -6,7 +6,7 @@
 %define debug_package %{nil}
 %define name        pandorafms_console
 %define version     7.0NG.775
-%define release     240112
+%define release     240113
 
 # User and Group under which Apache is running
 %define httpd_name  httpd
diff --git a/pandora_console/pandora_console.rhel7.spec b/pandora_console/pandora_console.rhel7.spec
index b264864bf8..4ad5e0046f 100644
--- a/pandora_console/pandora_console.rhel7.spec
+++ b/pandora_console/pandora_console.rhel7.spec
@@ -6,7 +6,7 @@
 %define debug_package %{nil}
 %define name        pandorafms_console
 %define version     7.0NG.775
-%define release     240112
+%define release     240113
 
 # User and Group under which Apache is running
 %define httpd_name  httpd
diff --git a/pandora_console/pandora_console.spec b/pandora_console/pandora_console.spec
index 06fb5bbce4..49ca78498b 100644
--- a/pandora_console/pandora_console.spec
+++ b/pandora_console/pandora_console.spec
@@ -3,7 +3,7 @@
 #
 %define name        pandorafms_console
 %define version     7.0NG.775
-%define release     240112
+%define release     240113
 %define httpd_name      httpd
 # User and Group under which Apache is running
 %define httpd_name  apache2
diff --git a/pandora_server/DEBIAN/control b/pandora_server/DEBIAN/control
index c144bdcd3b..e4a34c7902 100644
--- a/pandora_server/DEBIAN/control
+++ b/pandora_server/DEBIAN/control
@@ -1,5 +1,5 @@
 package: pandorafms-server
-Version: 7.0NG.775-240112
+Version: 7.0NG.775-240113
 Architecture: all
 Priority: optional
 Section: admin
diff --git a/pandora_server/DEBIAN/make_deb_package.sh b/pandora_server/DEBIAN/make_deb_package.sh
index 2259839ba7..0b2f5d074b 100644
--- a/pandora_server/DEBIAN/make_deb_package.sh
+++ b/pandora_server/DEBIAN/make_deb_package.sh
@@ -14,7 +14,7 @@
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 # GNU General Public License for more details.
 
-pandora_version="7.0NG.775-240112"
+pandora_version="7.0NG.775-240113"
 
 package_cpan=0
 package_pandora=1
diff --git a/pandora_server/lib/PandoraFMS/Config.pm b/pandora_server/lib/PandoraFMS/Config.pm
index f37671c248..ae24643d26 100644
--- a/pandora_server/lib/PandoraFMS/Config.pm
+++ b/pandora_server/lib/PandoraFMS/Config.pm
@@ -46,7 +46,7 @@ our @EXPORT = qw(
 
 # version: Defines actual version of Pandora Server for this module only
 my $pandora_version = "7.0NG.775";
-my $pandora_build = "240112";
+my $pandora_build = "240113";
 our $VERSION = $pandora_version." ".$pandora_build;
 
 # Setup hash
diff --git a/pandora_server/lib/PandoraFMS/PluginTools.pm b/pandora_server/lib/PandoraFMS/PluginTools.pm
index 02cf45e943..9776b2ed35 100644
--- a/pandora_server/lib/PandoraFMS/PluginTools.pm
+++ b/pandora_server/lib/PandoraFMS/PluginTools.pm
@@ -34,7 +34,7 @@ our @ISA = qw(Exporter);
 
 # version: Defines actual version of Pandora Server for this module only
 my $pandora_version = "7.0NG.775";
-my $pandora_build = "240112";
+my $pandora_build = "240113";
 our $VERSION = $pandora_version." ".$pandora_build;
 
 our %EXPORT_TAGS = ( 'all' => [ qw() ] );
diff --git a/pandora_server/pandora_server.redhat.spec b/pandora_server/pandora_server.redhat.spec
index 1b7d2f53dd..d4be42c1a4 100644
--- a/pandora_server/pandora_server.redhat.spec
+++ b/pandora_server/pandora_server.redhat.spec
@@ -7,7 +7,7 @@
 %define debug_package %{nil}
 %define name        pandorafms_server
 %define version     7.0NG.775
-%define release     240112
+%define release     240113
 
 Summary:            Pandora FMS Server
 Name:               %{name}
diff --git a/pandora_server/pandora_server.spec b/pandora_server/pandora_server.spec
index 977cca174d..c71d131026 100644
--- a/pandora_server/pandora_server.spec
+++ b/pandora_server/pandora_server.spec
@@ -4,7 +4,7 @@
 %global __os_install_post %{nil}
 %define name        pandorafms_server
 %define version     7.0NG.775
-%define release     240112
+%define release     240113
 
 Summary:            Pandora FMS Server
 Name:               %{name}
diff --git a/pandora_server/pandora_server_installer b/pandora_server/pandora_server_installer
index 47539c4ee9..13bedfb49d 100755
--- a/pandora_server/pandora_server_installer
+++ b/pandora_server/pandora_server_installer
@@ -9,7 +9,7 @@
 # **********************************************************************
 
 PI_VERSION="7.0NG.775"
-PI_BUILD="240112"
+PI_BUILD="240113"
 
 MODE=$1
 if [ $# -gt 1 ]; then
diff --git a/pandora_server/util/pandora_db.pl b/pandora_server/util/pandora_db.pl
index 90a6defdcc..5e791704c9 100755
--- a/pandora_server/util/pandora_db.pl
+++ b/pandora_server/util/pandora_db.pl
@@ -38,7 +38,7 @@ use PandoraFMS::Config;
 use PandoraFMS::DB;
 
 # version: define current version
-my $version = "7.0NG.775 Build 240112";
+my $version = "7.0NG.775 Build 240113";
 
 # Pandora server configuration
 my %conf;
diff --git a/pandora_server/util/pandora_manage.pl b/pandora_server/util/pandora_manage.pl
index 1d36d15f9c..871c363124 100755
--- a/pandora_server/util/pandora_manage.pl
+++ b/pandora_server/util/pandora_manage.pl
@@ -36,7 +36,7 @@ use Encode::Locale;
 Encode::Locale::decode_argv;
 
 # version: define current version
-my $version = "7.0NG.775 Build 240112";
+my $version = "7.0NG.775 Build 240113";
 
 # save program name for logging
 my $progname = basename($0);

From 2e45362944a522535d9e84e2c734ff5437c46faf Mon Sep 17 00:00:00 2001
From: artica <artica.devel@gmail.com>
Date: Sun, 14 Jan 2024 01:01:50 +0100
Subject: [PATCH 118/231] Auto-updated build strings.

---
 pandora_agents/unix/DEBIAN/control                    | 2 +-
 pandora_agents/unix/DEBIAN/make_deb_package.sh        | 2 +-
 pandora_agents/unix/pandora_agent                     | 2 +-
 pandora_agents/unix/pandora_agent.redhat.spec         | 2 +-
 pandora_agents/unix/pandora_agent.redhat_bin.el8.spec | 2 +-
 pandora_agents/unix/pandora_agent.redhat_bin.el9.spec | 2 +-
 pandora_agents/unix/pandora_agent.redhat_bin.spec     | 2 +-
 pandora_agents/unix/pandora_agent.spec                | 2 +-
 pandora_agents/unix/pandora_agent_installer           | 2 +-
 pandora_agents/win32/installer/pandora.mpi            | 2 +-
 pandora_agents/win32/pandora.cc                       | 2 +-
 pandora_agents/win32/versioninfo.rc                   | 2 +-
 pandora_console/DEBIAN/control                        | 2 +-
 pandora_console/DEBIAN/make_deb_package.sh            | 2 +-
 pandora_console/include/config_process.php            | 2 +-
 pandora_console/install.php                           | 2 +-
 pandora_console/pandora_console.redhat.spec           | 2 +-
 pandora_console/pandora_console.rhel7.spec            | 2 +-
 pandora_console/pandora_console.spec                  | 2 +-
 pandora_server/DEBIAN/control                         | 2 +-
 pandora_server/DEBIAN/make_deb_package.sh             | 2 +-
 pandora_server/lib/PandoraFMS/Config.pm               | 2 +-
 pandora_server/lib/PandoraFMS/PluginTools.pm          | 2 +-
 pandora_server/pandora_server.redhat.spec             | 2 +-
 pandora_server/pandora_server.spec                    | 2 +-
 pandora_server/pandora_server_installer               | 2 +-
 pandora_server/util/pandora_db.pl                     | 2 +-
 pandora_server/util/pandora_manage.pl                 | 2 +-
 28 files changed, 28 insertions(+), 28 deletions(-)

diff --git a/pandora_agents/unix/DEBIAN/control b/pandora_agents/unix/DEBIAN/control
index 237b46fdb2..76d63f03cb 100644
--- a/pandora_agents/unix/DEBIAN/control
+++ b/pandora_agents/unix/DEBIAN/control
@@ -1,5 +1,5 @@
 package: pandorafms-agent-unix
-Version: 7.0NG.775-240113
+Version: 7.0NG.775-240114
 Architecture: all
 Priority: optional
 Section: admin
diff --git a/pandora_agents/unix/DEBIAN/make_deb_package.sh b/pandora_agents/unix/DEBIAN/make_deb_package.sh
index ddaf6da5ac..67b43b5a3d 100644
--- a/pandora_agents/unix/DEBIAN/make_deb_package.sh
+++ b/pandora_agents/unix/DEBIAN/make_deb_package.sh
@@ -14,7 +14,7 @@
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 # GNU General Public License for more details.
 
-pandora_version="7.0NG.775-240113"
+pandora_version="7.0NG.775-240114"
 
 echo "Test if you has the tools for to make the packages."
 whereis dpkg-deb | cut -d":" -f2 | grep dpkg-deb > /dev/null
diff --git a/pandora_agents/unix/pandora_agent b/pandora_agents/unix/pandora_agent
index 6fceed9524..76507d6318 100755
--- a/pandora_agents/unix/pandora_agent
+++ b/pandora_agents/unix/pandora_agent
@@ -1039,7 +1039,7 @@ my $Sem = undef;
 my $ThreadSem = undef;
 
 use constant AGENT_VERSION => '7.0NG.775';
-use constant AGENT_BUILD => '240113';
+use constant AGENT_BUILD => '240114';
 
 # Agent log default file size maximum and instances
 use constant DEFAULT_MAX_LOG_SIZE => 600000;
diff --git a/pandora_agents/unix/pandora_agent.redhat.spec b/pandora_agents/unix/pandora_agent.redhat.spec
index f803674d68..964d3c4c6b 100644
--- a/pandora_agents/unix/pandora_agent.redhat.spec
+++ b/pandora_agents/unix/pandora_agent.redhat.spec
@@ -4,7 +4,7 @@
 %global __os_install_post %{nil}
 %define name        pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240113
+%define release     240114
 
 Summary:            Pandora FMS Linux agent, PERL version
 Name:               %{name}
diff --git a/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec b/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec
index 08ccec8f26..997439bc0d 100644
--- a/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec
+++ b/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec
@@ -5,7 +5,7 @@
 %define name        pandorafms_agent_linux_bin
 %define source_name pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240113
+%define release     240114
 %define debug_package %{nil}
 
 Summary:            Pandora FMS Linux agent, binary version
diff --git a/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec b/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec
index c2efe9b516..c1a62f08d3 100644
--- a/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec
+++ b/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec
@@ -5,7 +5,7 @@
 %define name        pandorafms_agent_linux_bin
 %define source_name pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240113
+%define release     240114
 %define debug_package %{nil}
 
 Summary:            Pandora FMS Linux agent, binary version
diff --git a/pandora_agents/unix/pandora_agent.redhat_bin.spec b/pandora_agents/unix/pandora_agent.redhat_bin.spec
index a3f30db28a..143a10ca11 100644
--- a/pandora_agents/unix/pandora_agent.redhat_bin.spec
+++ b/pandora_agents/unix/pandora_agent.redhat_bin.spec
@@ -5,7 +5,7 @@
 %define name        pandorafms_agent_linux_bin
 %define source_name pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240113
+%define release     240114
 
 Summary:            Pandora FMS Linux agent, binary version
 Name:               %{name}
diff --git a/pandora_agents/unix/pandora_agent.spec b/pandora_agents/unix/pandora_agent.spec
index e43308e6a4..480dc0270e 100644
--- a/pandora_agents/unix/pandora_agent.spec
+++ b/pandora_agents/unix/pandora_agent.spec
@@ -4,7 +4,7 @@
 %global __os_install_post %{nil}
 %define name        pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240113
+%define release     240114
 
 Summary:            Pandora FMS Linux agent, PERL version
 Name:               %{name}
diff --git a/pandora_agents/unix/pandora_agent_installer b/pandora_agents/unix/pandora_agent_installer
index f38ed3fcc9..53ec5d4ea2 100755
--- a/pandora_agents/unix/pandora_agent_installer
+++ b/pandora_agents/unix/pandora_agent_installer
@@ -10,7 +10,7 @@
 # **********************************************************************
 
 PI_VERSION="7.0NG.775"
-PI_BUILD="240113"
+PI_BUILD="240114"
 OS_NAME=`uname -s`
 
 FORCE=0
diff --git a/pandora_agents/win32/installer/pandora.mpi b/pandora_agents/win32/installer/pandora.mpi
index 096676f9c3..dcc7438e3c 100644
--- a/pandora_agents/win32/installer/pandora.mpi
+++ b/pandora_agents/win32/installer/pandora.mpi
@@ -186,7 +186,7 @@ UpgradeApplicationID
 {}
 
 Version
-{240113}
+{240114}
 
 ViewReadme
 {Yes}
diff --git a/pandora_agents/win32/pandora.cc b/pandora_agents/win32/pandora.cc
index 7bfa67fbfb..8d43843685 100644
--- a/pandora_agents/win32/pandora.cc
+++ b/pandora_agents/win32/pandora.cc
@@ -30,7 +30,7 @@ using namespace Pandora;
 using namespace Pandora_Strutils;
 
 #define PATH_SIZE    _MAX_PATH+1
-#define PANDORA_VERSION ("7.0NG.775 Build 240113")
+#define PANDORA_VERSION ("7.0NG.775 Build 240114")
 
 string pandora_path;
 string pandora_dir;
diff --git a/pandora_agents/win32/versioninfo.rc b/pandora_agents/win32/versioninfo.rc
index 72cbf73de4..93ec170364 100644
--- a/pandora_agents/win32/versioninfo.rc
+++ b/pandora_agents/win32/versioninfo.rc
@@ -11,7 +11,7 @@ BEGIN
       VALUE "LegalCopyright", "Pandora FMS"
       VALUE "OriginalFilename", "PandoraAgent.exe"
       VALUE "ProductName", "Pandora FMS Windows Agent"
-      VALUE "ProductVersion", "(7.0NG.775(Build 240113))"
+      VALUE "ProductVersion", "(7.0NG.775(Build 240114))"
       VALUE "FileVersion", "1.0.0.0"
     END
   END
diff --git a/pandora_console/DEBIAN/control b/pandora_console/DEBIAN/control
index 6e3edf5eda..b342b75837 100644
--- a/pandora_console/DEBIAN/control
+++ b/pandora_console/DEBIAN/control
@@ -1,5 +1,5 @@
 package: pandorafms-console
-Version: 7.0NG.775-240113
+Version: 7.0NG.775-240114
 Architecture: all
 Priority: optional
 Section: admin
diff --git a/pandora_console/DEBIAN/make_deb_package.sh b/pandora_console/DEBIAN/make_deb_package.sh
index bd7a7c19e6..8d50e381db 100644
--- a/pandora_console/DEBIAN/make_deb_package.sh
+++ b/pandora_console/DEBIAN/make_deb_package.sh
@@ -14,7 +14,7 @@
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 # GNU General Public License for more details.
 
-pandora_version="7.0NG.775-240113"
+pandora_version="7.0NG.775-240114"
 
 package_pear=0
 package_pandora=1
diff --git a/pandora_console/include/config_process.php b/pandora_console/include/config_process.php
index 52026317cf..263269ff54 100644
--- a/pandora_console/include/config_process.php
+++ b/pandora_console/include/config_process.php
@@ -20,7 +20,7 @@
 /**
  * Pandora build version and version
  */
-$build_version = 'PC240113';
+$build_version = 'PC240114';
 $pandora_version = 'v7.0NG.775';
 
 // Do not overwrite default timezone set if defined.
diff --git a/pandora_console/install.php b/pandora_console/install.php
index 9e3bad5621..f4b000af8f 100644
--- a/pandora_console/install.php
+++ b/pandora_console/install.php
@@ -131,7 +131,7 @@
         <div style='padding-bottom: 50px'>
             <?php
             $version = '7.0NG.775';
-            $build = '240113';
+            $build = '240114';
             $banner = "v$version Build $build";
             error_reporting(0);
 
diff --git a/pandora_console/pandora_console.redhat.spec b/pandora_console/pandora_console.redhat.spec
index 9eda9eea04..f5a22bc7ea 100644
--- a/pandora_console/pandora_console.redhat.spec
+++ b/pandora_console/pandora_console.redhat.spec
@@ -6,7 +6,7 @@
 %define debug_package %{nil}
 %define name        pandorafms_console
 %define version     7.0NG.775
-%define release     240113
+%define release     240114
 
 # User and Group under which Apache is running
 %define httpd_name  httpd
diff --git a/pandora_console/pandora_console.rhel7.spec b/pandora_console/pandora_console.rhel7.spec
index 4ad5e0046f..d0466eccd8 100644
--- a/pandora_console/pandora_console.rhel7.spec
+++ b/pandora_console/pandora_console.rhel7.spec
@@ -6,7 +6,7 @@
 %define debug_package %{nil}
 %define name        pandorafms_console
 %define version     7.0NG.775
-%define release     240113
+%define release     240114
 
 # User and Group under which Apache is running
 %define httpd_name  httpd
diff --git a/pandora_console/pandora_console.spec b/pandora_console/pandora_console.spec
index 49ca78498b..b96c75e277 100644
--- a/pandora_console/pandora_console.spec
+++ b/pandora_console/pandora_console.spec
@@ -3,7 +3,7 @@
 #
 %define name        pandorafms_console
 %define version     7.0NG.775
-%define release     240113
+%define release     240114
 %define httpd_name      httpd
 # User and Group under which Apache is running
 %define httpd_name  apache2
diff --git a/pandora_server/DEBIAN/control b/pandora_server/DEBIAN/control
index e4a34c7902..a2c39ef424 100644
--- a/pandora_server/DEBIAN/control
+++ b/pandora_server/DEBIAN/control
@@ -1,5 +1,5 @@
 package: pandorafms-server
-Version: 7.0NG.775-240113
+Version: 7.0NG.775-240114
 Architecture: all
 Priority: optional
 Section: admin
diff --git a/pandora_server/DEBIAN/make_deb_package.sh b/pandora_server/DEBIAN/make_deb_package.sh
index 0b2f5d074b..8dbb94f690 100644
--- a/pandora_server/DEBIAN/make_deb_package.sh
+++ b/pandora_server/DEBIAN/make_deb_package.sh
@@ -14,7 +14,7 @@
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 # GNU General Public License for more details.
 
-pandora_version="7.0NG.775-240113"
+pandora_version="7.0NG.775-240114"
 
 package_cpan=0
 package_pandora=1
diff --git a/pandora_server/lib/PandoraFMS/Config.pm b/pandora_server/lib/PandoraFMS/Config.pm
index ae24643d26..c997c99a1a 100644
--- a/pandora_server/lib/PandoraFMS/Config.pm
+++ b/pandora_server/lib/PandoraFMS/Config.pm
@@ -46,7 +46,7 @@ our @EXPORT = qw(
 
 # version: Defines actual version of Pandora Server for this module only
 my $pandora_version = "7.0NG.775";
-my $pandora_build = "240113";
+my $pandora_build = "240114";
 our $VERSION = $pandora_version." ".$pandora_build;
 
 # Setup hash
diff --git a/pandora_server/lib/PandoraFMS/PluginTools.pm b/pandora_server/lib/PandoraFMS/PluginTools.pm
index 9776b2ed35..21fcca6e85 100644
--- a/pandora_server/lib/PandoraFMS/PluginTools.pm
+++ b/pandora_server/lib/PandoraFMS/PluginTools.pm
@@ -34,7 +34,7 @@ our @ISA = qw(Exporter);
 
 # version: Defines actual version of Pandora Server for this module only
 my $pandora_version = "7.0NG.775";
-my $pandora_build = "240113";
+my $pandora_build = "240114";
 our $VERSION = $pandora_version." ".$pandora_build;
 
 our %EXPORT_TAGS = ( 'all' => [ qw() ] );
diff --git a/pandora_server/pandora_server.redhat.spec b/pandora_server/pandora_server.redhat.spec
index d4be42c1a4..bfc425deac 100644
--- a/pandora_server/pandora_server.redhat.spec
+++ b/pandora_server/pandora_server.redhat.spec
@@ -7,7 +7,7 @@
 %define debug_package %{nil}
 %define name        pandorafms_server
 %define version     7.0NG.775
-%define release     240113
+%define release     240114
 
 Summary:            Pandora FMS Server
 Name:               %{name}
diff --git a/pandora_server/pandora_server.spec b/pandora_server/pandora_server.spec
index c71d131026..6a06291b07 100644
--- a/pandora_server/pandora_server.spec
+++ b/pandora_server/pandora_server.spec
@@ -4,7 +4,7 @@
 %global __os_install_post %{nil}
 %define name        pandorafms_server
 %define version     7.0NG.775
-%define release     240113
+%define release     240114
 
 Summary:            Pandora FMS Server
 Name:               %{name}
diff --git a/pandora_server/pandora_server_installer b/pandora_server/pandora_server_installer
index 13bedfb49d..10028244f5 100755
--- a/pandora_server/pandora_server_installer
+++ b/pandora_server/pandora_server_installer
@@ -9,7 +9,7 @@
 # **********************************************************************
 
 PI_VERSION="7.0NG.775"
-PI_BUILD="240113"
+PI_BUILD="240114"
 
 MODE=$1
 if [ $# -gt 1 ]; then
diff --git a/pandora_server/util/pandora_db.pl b/pandora_server/util/pandora_db.pl
index 5e791704c9..1a99a07347 100755
--- a/pandora_server/util/pandora_db.pl
+++ b/pandora_server/util/pandora_db.pl
@@ -38,7 +38,7 @@ use PandoraFMS::Config;
 use PandoraFMS::DB;
 
 # version: define current version
-my $version = "7.0NG.775 Build 240113";
+my $version = "7.0NG.775 Build 240114";
 
 # Pandora server configuration
 my %conf;
diff --git a/pandora_server/util/pandora_manage.pl b/pandora_server/util/pandora_manage.pl
index 871c363124..acea515547 100755
--- a/pandora_server/util/pandora_manage.pl
+++ b/pandora_server/util/pandora_manage.pl
@@ -36,7 +36,7 @@ use Encode::Locale;
 Encode::Locale::decode_argv;
 
 # version: define current version
-my $version = "7.0NG.775 Build 240113";
+my $version = "7.0NG.775 Build 240114";
 
 # save program name for logging
 my $progname = basename($0);

From 616af6450bb22ea5ef6ebe5f450a4264ce6fd8b2 Mon Sep 17 00:00:00 2001
From: artica <artica.devel@gmail.com>
Date: Mon, 15 Jan 2024 01:00:21 +0100
Subject: [PATCH 119/231] Auto-updated build strings.

---
 pandora_agents/unix/DEBIAN/control                    | 2 +-
 pandora_agents/unix/DEBIAN/make_deb_package.sh        | 2 +-
 pandora_agents/unix/pandora_agent                     | 2 +-
 pandora_agents/unix/pandora_agent.redhat.spec         | 2 +-
 pandora_agents/unix/pandora_agent.redhat_bin.el8.spec | 2 +-
 pandora_agents/unix/pandora_agent.redhat_bin.el9.spec | 2 +-
 pandora_agents/unix/pandora_agent.redhat_bin.spec     | 2 +-
 pandora_agents/unix/pandora_agent.spec                | 2 +-
 pandora_agents/unix/pandora_agent_installer           | 2 +-
 pandora_agents/win32/installer/pandora.mpi            | 2 +-
 pandora_agents/win32/pandora.cc                       | 2 +-
 pandora_agents/win32/versioninfo.rc                   | 2 +-
 pandora_console/DEBIAN/control                        | 2 +-
 pandora_console/DEBIAN/make_deb_package.sh            | 2 +-
 pandora_console/include/config_process.php            | 2 +-
 pandora_console/install.php                           | 2 +-
 pandora_console/pandora_console.redhat.spec           | 2 +-
 pandora_console/pandora_console.rhel7.spec            | 2 +-
 pandora_console/pandora_console.spec                  | 2 +-
 pandora_server/DEBIAN/control                         | 2 +-
 pandora_server/DEBIAN/make_deb_package.sh             | 2 +-
 pandora_server/lib/PandoraFMS/Config.pm               | 2 +-
 pandora_server/lib/PandoraFMS/PluginTools.pm          | 2 +-
 pandora_server/pandora_server.redhat.spec             | 2 +-
 pandora_server/pandora_server.spec                    | 2 +-
 pandora_server/pandora_server_installer               | 2 +-
 pandora_server/util/pandora_db.pl                     | 2 +-
 pandora_server/util/pandora_manage.pl                 | 2 +-
 28 files changed, 28 insertions(+), 28 deletions(-)

diff --git a/pandora_agents/unix/DEBIAN/control b/pandora_agents/unix/DEBIAN/control
index 76d63f03cb..b4d349663e 100644
--- a/pandora_agents/unix/DEBIAN/control
+++ b/pandora_agents/unix/DEBIAN/control
@@ -1,5 +1,5 @@
 package: pandorafms-agent-unix
-Version: 7.0NG.775-240114
+Version: 7.0NG.775-240115
 Architecture: all
 Priority: optional
 Section: admin
diff --git a/pandora_agents/unix/DEBIAN/make_deb_package.sh b/pandora_agents/unix/DEBIAN/make_deb_package.sh
index 67b43b5a3d..d692106e65 100644
--- a/pandora_agents/unix/DEBIAN/make_deb_package.sh
+++ b/pandora_agents/unix/DEBIAN/make_deb_package.sh
@@ -14,7 +14,7 @@
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 # GNU General Public License for more details.
 
-pandora_version="7.0NG.775-240114"
+pandora_version="7.0NG.775-240115"
 
 echo "Test if you has the tools for to make the packages."
 whereis dpkg-deb | cut -d":" -f2 | grep dpkg-deb > /dev/null
diff --git a/pandora_agents/unix/pandora_agent b/pandora_agents/unix/pandora_agent
index 76507d6318..1129b081d8 100755
--- a/pandora_agents/unix/pandora_agent
+++ b/pandora_agents/unix/pandora_agent
@@ -1039,7 +1039,7 @@ my $Sem = undef;
 my $ThreadSem = undef;
 
 use constant AGENT_VERSION => '7.0NG.775';
-use constant AGENT_BUILD => '240114';
+use constant AGENT_BUILD => '240115';
 
 # Agent log default file size maximum and instances
 use constant DEFAULT_MAX_LOG_SIZE => 600000;
diff --git a/pandora_agents/unix/pandora_agent.redhat.spec b/pandora_agents/unix/pandora_agent.redhat.spec
index 964d3c4c6b..a0106b1960 100644
--- a/pandora_agents/unix/pandora_agent.redhat.spec
+++ b/pandora_agents/unix/pandora_agent.redhat.spec
@@ -4,7 +4,7 @@
 %global __os_install_post %{nil}
 %define name        pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240114
+%define release     240115
 
 Summary:            Pandora FMS Linux agent, PERL version
 Name:               %{name}
diff --git a/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec b/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec
index 997439bc0d..d7f30e9b26 100644
--- a/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec
+++ b/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec
@@ -5,7 +5,7 @@
 %define name        pandorafms_agent_linux_bin
 %define source_name pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240114
+%define release     240115
 %define debug_package %{nil}
 
 Summary:            Pandora FMS Linux agent, binary version
diff --git a/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec b/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec
index c1a62f08d3..5249f61928 100644
--- a/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec
+++ b/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec
@@ -5,7 +5,7 @@
 %define name        pandorafms_agent_linux_bin
 %define source_name pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240114
+%define release     240115
 %define debug_package %{nil}
 
 Summary:            Pandora FMS Linux agent, binary version
diff --git a/pandora_agents/unix/pandora_agent.redhat_bin.spec b/pandora_agents/unix/pandora_agent.redhat_bin.spec
index 143a10ca11..9a2de6bd96 100644
--- a/pandora_agents/unix/pandora_agent.redhat_bin.spec
+++ b/pandora_agents/unix/pandora_agent.redhat_bin.spec
@@ -5,7 +5,7 @@
 %define name        pandorafms_agent_linux_bin
 %define source_name pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240114
+%define release     240115
 
 Summary:            Pandora FMS Linux agent, binary version
 Name:               %{name}
diff --git a/pandora_agents/unix/pandora_agent.spec b/pandora_agents/unix/pandora_agent.spec
index 480dc0270e..4c014cff15 100644
--- a/pandora_agents/unix/pandora_agent.spec
+++ b/pandora_agents/unix/pandora_agent.spec
@@ -4,7 +4,7 @@
 %global __os_install_post %{nil}
 %define name        pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240114
+%define release     240115
 
 Summary:            Pandora FMS Linux agent, PERL version
 Name:               %{name}
diff --git a/pandora_agents/unix/pandora_agent_installer b/pandora_agents/unix/pandora_agent_installer
index 53ec5d4ea2..a2a0c0fe46 100755
--- a/pandora_agents/unix/pandora_agent_installer
+++ b/pandora_agents/unix/pandora_agent_installer
@@ -10,7 +10,7 @@
 # **********************************************************************
 
 PI_VERSION="7.0NG.775"
-PI_BUILD="240114"
+PI_BUILD="240115"
 OS_NAME=`uname -s`
 
 FORCE=0
diff --git a/pandora_agents/win32/installer/pandora.mpi b/pandora_agents/win32/installer/pandora.mpi
index dcc7438e3c..82074313de 100644
--- a/pandora_agents/win32/installer/pandora.mpi
+++ b/pandora_agents/win32/installer/pandora.mpi
@@ -186,7 +186,7 @@ UpgradeApplicationID
 {}
 
 Version
-{240114}
+{240115}
 
 ViewReadme
 {Yes}
diff --git a/pandora_agents/win32/pandora.cc b/pandora_agents/win32/pandora.cc
index 8d43843685..aeded4b511 100644
--- a/pandora_agents/win32/pandora.cc
+++ b/pandora_agents/win32/pandora.cc
@@ -30,7 +30,7 @@ using namespace Pandora;
 using namespace Pandora_Strutils;
 
 #define PATH_SIZE    _MAX_PATH+1
-#define PANDORA_VERSION ("7.0NG.775 Build 240114")
+#define PANDORA_VERSION ("7.0NG.775 Build 240115")
 
 string pandora_path;
 string pandora_dir;
diff --git a/pandora_agents/win32/versioninfo.rc b/pandora_agents/win32/versioninfo.rc
index 93ec170364..a60563005e 100644
--- a/pandora_agents/win32/versioninfo.rc
+++ b/pandora_agents/win32/versioninfo.rc
@@ -11,7 +11,7 @@ BEGIN
       VALUE "LegalCopyright", "Pandora FMS"
       VALUE "OriginalFilename", "PandoraAgent.exe"
       VALUE "ProductName", "Pandora FMS Windows Agent"
-      VALUE "ProductVersion", "(7.0NG.775(Build 240114))"
+      VALUE "ProductVersion", "(7.0NG.775(Build 240115))"
       VALUE "FileVersion", "1.0.0.0"
     END
   END
diff --git a/pandora_console/DEBIAN/control b/pandora_console/DEBIAN/control
index b342b75837..5542578ce4 100644
--- a/pandora_console/DEBIAN/control
+++ b/pandora_console/DEBIAN/control
@@ -1,5 +1,5 @@
 package: pandorafms-console
-Version: 7.0NG.775-240114
+Version: 7.0NG.775-240115
 Architecture: all
 Priority: optional
 Section: admin
diff --git a/pandora_console/DEBIAN/make_deb_package.sh b/pandora_console/DEBIAN/make_deb_package.sh
index 8d50e381db..b47333a6ce 100644
--- a/pandora_console/DEBIAN/make_deb_package.sh
+++ b/pandora_console/DEBIAN/make_deb_package.sh
@@ -14,7 +14,7 @@
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 # GNU General Public License for more details.
 
-pandora_version="7.0NG.775-240114"
+pandora_version="7.0NG.775-240115"
 
 package_pear=0
 package_pandora=1
diff --git a/pandora_console/include/config_process.php b/pandora_console/include/config_process.php
index 263269ff54..2bd0f41438 100644
--- a/pandora_console/include/config_process.php
+++ b/pandora_console/include/config_process.php
@@ -20,7 +20,7 @@
 /**
  * Pandora build version and version
  */
-$build_version = 'PC240114';
+$build_version = 'PC240115';
 $pandora_version = 'v7.0NG.775';
 
 // Do not overwrite default timezone set if defined.
diff --git a/pandora_console/install.php b/pandora_console/install.php
index f4b000af8f..eaf5c72df9 100644
--- a/pandora_console/install.php
+++ b/pandora_console/install.php
@@ -131,7 +131,7 @@
         <div style='padding-bottom: 50px'>
             <?php
             $version = '7.0NG.775';
-            $build = '240114';
+            $build = '240115';
             $banner = "v$version Build $build";
             error_reporting(0);
 
diff --git a/pandora_console/pandora_console.redhat.spec b/pandora_console/pandora_console.redhat.spec
index f5a22bc7ea..eab6216432 100644
--- a/pandora_console/pandora_console.redhat.spec
+++ b/pandora_console/pandora_console.redhat.spec
@@ -6,7 +6,7 @@
 %define debug_package %{nil}
 %define name        pandorafms_console
 %define version     7.0NG.775
-%define release     240114
+%define release     240115
 
 # User and Group under which Apache is running
 %define httpd_name  httpd
diff --git a/pandora_console/pandora_console.rhel7.spec b/pandora_console/pandora_console.rhel7.spec
index d0466eccd8..c912b550d1 100644
--- a/pandora_console/pandora_console.rhel7.spec
+++ b/pandora_console/pandora_console.rhel7.spec
@@ -6,7 +6,7 @@
 %define debug_package %{nil}
 %define name        pandorafms_console
 %define version     7.0NG.775
-%define release     240114
+%define release     240115
 
 # User and Group under which Apache is running
 %define httpd_name  httpd
diff --git a/pandora_console/pandora_console.spec b/pandora_console/pandora_console.spec
index b96c75e277..98a52b4e68 100644
--- a/pandora_console/pandora_console.spec
+++ b/pandora_console/pandora_console.spec
@@ -3,7 +3,7 @@
 #
 %define name        pandorafms_console
 %define version     7.0NG.775
-%define release     240114
+%define release     240115
 %define httpd_name      httpd
 # User and Group under which Apache is running
 %define httpd_name  apache2
diff --git a/pandora_server/DEBIAN/control b/pandora_server/DEBIAN/control
index a2c39ef424..aa414dadc2 100644
--- a/pandora_server/DEBIAN/control
+++ b/pandora_server/DEBIAN/control
@@ -1,5 +1,5 @@
 package: pandorafms-server
-Version: 7.0NG.775-240114
+Version: 7.0NG.775-240115
 Architecture: all
 Priority: optional
 Section: admin
diff --git a/pandora_server/DEBIAN/make_deb_package.sh b/pandora_server/DEBIAN/make_deb_package.sh
index 8dbb94f690..7c83b4ef19 100644
--- a/pandora_server/DEBIAN/make_deb_package.sh
+++ b/pandora_server/DEBIAN/make_deb_package.sh
@@ -14,7 +14,7 @@
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 # GNU General Public License for more details.
 
-pandora_version="7.0NG.775-240114"
+pandora_version="7.0NG.775-240115"
 
 package_cpan=0
 package_pandora=1
diff --git a/pandora_server/lib/PandoraFMS/Config.pm b/pandora_server/lib/PandoraFMS/Config.pm
index c997c99a1a..26052a676a 100644
--- a/pandora_server/lib/PandoraFMS/Config.pm
+++ b/pandora_server/lib/PandoraFMS/Config.pm
@@ -46,7 +46,7 @@ our @EXPORT = qw(
 
 # version: Defines actual version of Pandora Server for this module only
 my $pandora_version = "7.0NG.775";
-my $pandora_build = "240114";
+my $pandora_build = "240115";
 our $VERSION = $pandora_version." ".$pandora_build;
 
 # Setup hash
diff --git a/pandora_server/lib/PandoraFMS/PluginTools.pm b/pandora_server/lib/PandoraFMS/PluginTools.pm
index 21fcca6e85..744510de1f 100644
--- a/pandora_server/lib/PandoraFMS/PluginTools.pm
+++ b/pandora_server/lib/PandoraFMS/PluginTools.pm
@@ -34,7 +34,7 @@ our @ISA = qw(Exporter);
 
 # version: Defines actual version of Pandora Server for this module only
 my $pandora_version = "7.0NG.775";
-my $pandora_build = "240114";
+my $pandora_build = "240115";
 our $VERSION = $pandora_version." ".$pandora_build;
 
 our %EXPORT_TAGS = ( 'all' => [ qw() ] );
diff --git a/pandora_server/pandora_server.redhat.spec b/pandora_server/pandora_server.redhat.spec
index bfc425deac..ff30f62af7 100644
--- a/pandora_server/pandora_server.redhat.spec
+++ b/pandora_server/pandora_server.redhat.spec
@@ -7,7 +7,7 @@
 %define debug_package %{nil}
 %define name        pandorafms_server
 %define version     7.0NG.775
-%define release     240114
+%define release     240115
 
 Summary:            Pandora FMS Server
 Name:               %{name}
diff --git a/pandora_server/pandora_server.spec b/pandora_server/pandora_server.spec
index 6a06291b07..9837a79873 100644
--- a/pandora_server/pandora_server.spec
+++ b/pandora_server/pandora_server.spec
@@ -4,7 +4,7 @@
 %global __os_install_post %{nil}
 %define name        pandorafms_server
 %define version     7.0NG.775
-%define release     240114
+%define release     240115
 
 Summary:            Pandora FMS Server
 Name:               %{name}
diff --git a/pandora_server/pandora_server_installer b/pandora_server/pandora_server_installer
index 10028244f5..35a8e340a1 100755
--- a/pandora_server/pandora_server_installer
+++ b/pandora_server/pandora_server_installer
@@ -9,7 +9,7 @@
 # **********************************************************************
 
 PI_VERSION="7.0NG.775"
-PI_BUILD="240114"
+PI_BUILD="240115"
 
 MODE=$1
 if [ $# -gt 1 ]; then
diff --git a/pandora_server/util/pandora_db.pl b/pandora_server/util/pandora_db.pl
index 1a99a07347..3a0c624602 100755
--- a/pandora_server/util/pandora_db.pl
+++ b/pandora_server/util/pandora_db.pl
@@ -38,7 +38,7 @@ use PandoraFMS::Config;
 use PandoraFMS::DB;
 
 # version: define current version
-my $version = "7.0NG.775 Build 240114";
+my $version = "7.0NG.775 Build 240115";
 
 # Pandora server configuration
 my %conf;
diff --git a/pandora_server/util/pandora_manage.pl b/pandora_server/util/pandora_manage.pl
index acea515547..44d8cd6d1e 100755
--- a/pandora_server/util/pandora_manage.pl
+++ b/pandora_server/util/pandora_manage.pl
@@ -36,7 +36,7 @@ use Encode::Locale;
 Encode::Locale::decode_argv;
 
 # version: define current version
-my $version = "7.0NG.775 Build 240114";
+my $version = "7.0NG.775 Build 240115";
 
 # save program name for logging
 my $progname = basename($0);

From 0b18397095782751b4162bf3c79e3bcd4c188d28 Mon Sep 17 00:00:00 2001
From: Daniel Cebrian <daniel.cebrian@pandorafms.com>
Date: Mon, 15 Jan 2024 09:19:37 +0100
Subject: [PATCH 120/231] #12503 fixed empty all_ip in create agent

---
 pandora_console/godmode/agentes/agent_manager.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pandora_console/godmode/agentes/agent_manager.php b/pandora_console/godmode/agentes/agent_manager.php
index 09c6ea3939..d0c255e25e 100644
--- a/pandora_console/godmode/agentes/agent_manager.php
+++ b/pandora_console/godmode/agentes/agent_manager.php
@@ -1513,7 +1513,7 @@ ui_require_jquery_file('bgiframe');
     function check_unique_ip() {
         const direccion = $('#text-direccion').val();
         let ip_all = <?php echo json_encode($ip_all); ?>;
-        if (!ip_all) {
+        if (ip_all) {
             ip_all = Object.keys(ip_all);
         }
         $.ajax({

From ed165423fd6f115172f01a2c3b9527d85c17b32a Mon Sep 17 00:00:00 2001
From: Jonathan <jonathan.leon@pandorafms.com>
Date: Mon, 15 Jan 2024 09:38:29 +0100
Subject: [PATCH 121/231] #12725 add quiet agent tree view

---
 pandora_console/include/class/Tree.class.php | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/pandora_console/include/class/Tree.class.php b/pandora_console/include/class/Tree.class.php
index 99b4f5b039..ed515dee87 100644
--- a/pandora_console/include/class/Tree.class.php
+++ b/pandora_console/include/class/Tree.class.php
@@ -995,6 +995,11 @@ class Tree
                 }
             }
         }
+
+        // Quiet name on agent.
+        if (isset($agent['quiet']) && $agent['quiet']) {
+            $agent['alias'] .= ' '.__('(Quiet)');
+        }
     }
 
 

From 43b8db9c8419ec6e6fa9dac94a03ffddde0fe270 Mon Sep 17 00:00:00 2001
From: Jonathan <jonathan.leon@pandorafms.com>
Date: Mon, 15 Jan 2024 10:15:46 +0100
Subject: [PATCH 122/231] #12156 also mail added notification on create

---
 .../include/functions_notifications.php       | 20 ++++++++++---------
 1 file changed, 11 insertions(+), 9 deletions(-)

diff --git a/pandora_console/include/functions_notifications.php b/pandora_console/include/functions_notifications.php
index 9e7db33bae..78b5facde4 100644
--- a/pandora_console/include/functions_notifications.php
+++ b/pandora_console/include/functions_notifications.php
@@ -684,18 +684,20 @@ function notifications_set_user_label_status($source, $user, $label, $value)
                 'id_user'   => $user,
                 'id_source' => $source,
                 'enabled'   => '1',
+                'also_mail' => '1',
+            ]
+        );
+        return true;
+    } else {
+        return (bool) db_process_sql_update(
+            'tnotification_source_user',
+            [$label => $value],
+            [
+                'id_user'   => $user,
+                'id_source' => $source,
             ]
         );
     }
-
-    return (bool) db_process_sql_update(
-        'tnotification_source_user',
-        [$label => $value],
-        [
-            'id_user'   => $user,
-            'id_source' => $source,
-        ]
-    );
 }
 
 

From 31acb0964a8a42ebf7b32d9b635818bc88cd6b7e Mon Sep 17 00:00:00 2001
From: Daniel Maya <daniel.maya@pandorafms.com>
Date: Mon, 15 Jan 2024 11:18:31 +0100
Subject: [PATCH 123/231] #12026 Fixed configuration

---
 pandora_console/include/lib/Dashboard/Widgets/inventory.php | 5 +----
 1 file changed, 1 insertion(+), 4 deletions(-)

diff --git a/pandora_console/include/lib/Dashboard/Widgets/inventory.php b/pandora_console/include/lib/Dashboard/Widgets/inventory.php
index 8424d6cfbf..657e67828e 100644
--- a/pandora_console/include/lib/Dashboard/Widgets/inventory.php
+++ b/pandora_console/include/lib/Dashboard/Widgets/inventory.php
@@ -177,10 +177,7 @@ class InventoryWidget extends Widget
 
         // Must be configured before using.
         $this->configurationRequired = false;
-        if (isset($this->values['inventoryModuleId'])
-            && $this->values['inventoryModuleId'] === 'basic'
-            && $this->values['agentId'] === 0
-        ) {
+        if (isset($this->values['idGroup']) === false) {
             $this->configurationRequired = true;
         }
     }

From 87e17be08484bfaa1fd74a28bd6232ee9243c5ee Mon Sep 17 00:00:00 2001
From: Jonathan <jonathan.leon@pandorafms.com>
Date: Mon, 15 Jan 2024 12:38:42 +0100
Subject: [PATCH 124/231] #12156 fix error on update when empty db values

---
 pandora_console/include/functions_notifications.php | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/pandora_console/include/functions_notifications.php b/pandora_console/include/functions_notifications.php
index 78b5facde4..89027fbf81 100644
--- a/pandora_console/include/functions_notifications.php
+++ b/pandora_console/include/functions_notifications.php
@@ -677,6 +677,12 @@ function notifications_set_user_label_status($source, $user, $label, $value)
     }
 
     $eixsts = db_get_row('tnotification_source_user', 'id_user', $user);
+    if (empty($eixsts['enabled']) && empty($eixsts['also_mail'])) {
+        $sql = sprintf('DELETE FROM tnotification_source_user WHERE id_user = "%s" AND id_source = "%s"', $user, $source);
+        db_process_sql($sql);
+        $eixsts = false;
+    }
+
     if ($eixsts === false) {
         db_process_sql_insert(
             'tnotification_source_user',

From d34bd3f22334d7bd761555b63f769a3edeb11534 Mon Sep 17 00:00:00 2001
From: Jonathan <jonathan.leon@pandorafms.com>
Date: Mon, 15 Jan 2024 13:26:28 +0100
Subject: [PATCH 125/231] #12156 fix sql error check exists

---
 pandora_console/include/functions_notifications.php | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/pandora_console/include/functions_notifications.php b/pandora_console/include/functions_notifications.php
index 89027fbf81..e59208f8ef 100644
--- a/pandora_console/include/functions_notifications.php
+++ b/pandora_console/include/functions_notifications.php
@@ -676,14 +676,14 @@ function notifications_set_user_label_status($source, $user, $label, $value)
         return false;
     }
 
-    $eixsts = db_get_row('tnotification_source_user', 'id_user', $user);
-    if (empty($eixsts['enabled']) && empty($eixsts['also_mail'])) {
+    $exists = db_process_sql(sprintf('SELECT * FROM tnotification_source_user WHERE id_user = "%s" AND id_source = "%s"', $user, $source));
+    if (empty($exists['enabled']) && empty($exists['also_mail'])) {
         $sql = sprintf('DELETE FROM tnotification_source_user WHERE id_user = "%s" AND id_source = "%s"', $user, $source);
         db_process_sql($sql);
-        $eixsts = false;
+        $exists = false;
     }
 
-    if ($eixsts === false) {
+    if ($exists === false) {
         db_process_sql_insert(
             'tnotification_source_user',
             [

From 234f4d2df1626b0762b46721a33771fb99c2b6c2 Mon Sep 17 00:00:00 2001
From: Jonathan <jonathan.leon@pandorafms.com>
Date: Mon, 15 Jan 2024 14:32:52 +0100
Subject: [PATCH 126/231] #12579 add title on images

---
 pandora_console/include/class/SatelliteAgent.class.php | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/pandora_console/include/class/SatelliteAgent.class.php b/pandora_console/include/class/SatelliteAgent.class.php
index 09b023958d..a40b3ecc7a 100644
--- a/pandora_console/include/class/SatelliteAgent.class.php
+++ b/pandora_console/include/class/SatelliteAgent.class.php
@@ -395,6 +395,7 @@ class SatelliteAgent extends HTML
                                         ($disable === true) ? 'images/lightbulb_off.png' : 'images/lightbulb.png',
                                         true,
                                         [
+                                            'title'   => ($disable === true) ? __('Enable') : __('Disable'),
                                             'border'  => '0',
                                             'class'   => 'main_menu_icon mrgn_lft_05em invert_filter',
                                             'onclick' => 'disable_agent(\''.$tmp->address.'\',\''.strip_tags($tmp->name).'\',\''.(int) $disable.'\',\''.$id_agente.'\')',
@@ -413,6 +414,7 @@ class SatelliteAgent extends HTML
                                         ($delete === true) ? 'images/add.png' : 'images/delete.svg',
                                         true,
                                         [
+                                            'title'   => ($delete === true) ? __('Add') : __('Delete'),
                                             'border'  => '0',
                                             'class'   => 'main_menu_icon mrgn_lft_05em invert_filter',
                                             'onclick' => 'delete_agent(\''.$tmp->address.'\',\''.strip_tags($tmp->name).'\',\''.(int) $delete.'\',\''.$id_agente.'\')',

From f52700f3927f0cc156eeba17565549184cc81eac Mon Sep 17 00:00:00 2001
From: "alejandro.campos@artica.es" <alejandro.campos@artica.es>
Date: Mon, 15 Jan 2024 17:42:41 +0100
Subject: [PATCH 127/231] fix home screen

---
 pandora_console/godmode/users/configure_user.php | 5 +++++
 pandora_console/include/auth/mysql.php           | 2 --
 2 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/pandora_console/godmode/users/configure_user.php b/pandora_console/godmode/users/configure_user.php
index 83e54f24c5..62dc8cba5f 100644
--- a/pandora_console/godmode/users/configure_user.php
+++ b/pandora_console/godmode/users/configure_user.php
@@ -430,6 +430,11 @@ if ($create_user === true) {
         $values['data_section'] = get_parameter('data_section_external');
     }
 
+    if (is_metaconsole() === true) {
+        $values['metaconsole_section'] = $values['section'];
+        $values['metaconsole_data_section'] = $values['data_section'];
+    }
+
     // $values['section'] = $homeScreenValues[$values['section']];
     if (enterprise_installed() === true) {
         $values['force_change_pass'] = 1;
diff --git a/pandora_console/include/auth/mysql.php b/pandora_console/include/auth/mysql.php
index 76a6458f32..3141272352 100644
--- a/pandora_console/include/auth/mysql.php
+++ b/pandora_console/include/auth/mysql.php
@@ -816,8 +816,6 @@ function update_user(string $id_user, array $values)
             $values['metaconsole_data_section'] = $values['data_section'];
             $values['metaconsole_default_event_filter'] = $values['default_event_filter'];
             unset($values['id_skin']);
-            unset($values['section']);
-            unset($values['data_section']);
             unset($values['default_event_filter']);
         }
     }

From a16fa51922b0d9c89b61b49d4cb982e7562b61c7 Mon Sep 17 00:00:00 2001
From: artica <artica.devel@gmail.com>
Date: Tue, 16 Jan 2024 01:01:13 +0100
Subject: [PATCH 128/231] Auto-updated build strings.

---
 pandora_agents/unix/DEBIAN/control                    | 2 +-
 pandora_agents/unix/DEBIAN/make_deb_package.sh        | 2 +-
 pandora_agents/unix/pandora_agent                     | 2 +-
 pandora_agents/unix/pandora_agent.redhat.spec         | 2 +-
 pandora_agents/unix/pandora_agent.redhat_bin.el8.spec | 2 +-
 pandora_agents/unix/pandora_agent.redhat_bin.el9.spec | 2 +-
 pandora_agents/unix/pandora_agent.redhat_bin.spec     | 2 +-
 pandora_agents/unix/pandora_agent.spec                | 2 +-
 pandora_agents/unix/pandora_agent_installer           | 2 +-
 pandora_agents/win32/installer/pandora.mpi            | 2 +-
 pandora_agents/win32/pandora.cc                       | 2 +-
 pandora_agents/win32/versioninfo.rc                   | 2 +-
 pandora_console/DEBIAN/control                        | 2 +-
 pandora_console/DEBIAN/make_deb_package.sh            | 2 +-
 pandora_console/include/config_process.php            | 2 +-
 pandora_console/install.php                           | 2 +-
 pandora_console/pandora_console.redhat.spec           | 2 +-
 pandora_console/pandora_console.rhel7.spec            | 2 +-
 pandora_console/pandora_console.spec                  | 2 +-
 pandora_server/DEBIAN/control                         | 2 +-
 pandora_server/DEBIAN/make_deb_package.sh             | 2 +-
 pandora_server/lib/PandoraFMS/Config.pm               | 2 +-
 pandora_server/lib/PandoraFMS/PluginTools.pm          | 2 +-
 pandora_server/pandora_server.redhat.spec             | 2 +-
 pandora_server/pandora_server.spec                    | 2 +-
 pandora_server/pandora_server_installer               | 2 +-
 pandora_server/util/pandora_db.pl                     | 2 +-
 pandora_server/util/pandora_manage.pl                 | 2 +-
 28 files changed, 28 insertions(+), 28 deletions(-)

diff --git a/pandora_agents/unix/DEBIAN/control b/pandora_agents/unix/DEBIAN/control
index b4d349663e..21b762f14f 100644
--- a/pandora_agents/unix/DEBIAN/control
+++ b/pandora_agents/unix/DEBIAN/control
@@ -1,5 +1,5 @@
 package: pandorafms-agent-unix
-Version: 7.0NG.775-240115
+Version: 7.0NG.775-240116
 Architecture: all
 Priority: optional
 Section: admin
diff --git a/pandora_agents/unix/DEBIAN/make_deb_package.sh b/pandora_agents/unix/DEBIAN/make_deb_package.sh
index d692106e65..c4ae8cf158 100644
--- a/pandora_agents/unix/DEBIAN/make_deb_package.sh
+++ b/pandora_agents/unix/DEBIAN/make_deb_package.sh
@@ -14,7 +14,7 @@
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 # GNU General Public License for more details.
 
-pandora_version="7.0NG.775-240115"
+pandora_version="7.0NG.775-240116"
 
 echo "Test if you has the tools for to make the packages."
 whereis dpkg-deb | cut -d":" -f2 | grep dpkg-deb > /dev/null
diff --git a/pandora_agents/unix/pandora_agent b/pandora_agents/unix/pandora_agent
index 1129b081d8..7ad9d405f0 100755
--- a/pandora_agents/unix/pandora_agent
+++ b/pandora_agents/unix/pandora_agent
@@ -1039,7 +1039,7 @@ my $Sem = undef;
 my $ThreadSem = undef;
 
 use constant AGENT_VERSION => '7.0NG.775';
-use constant AGENT_BUILD => '240115';
+use constant AGENT_BUILD => '240116';
 
 # Agent log default file size maximum and instances
 use constant DEFAULT_MAX_LOG_SIZE => 600000;
diff --git a/pandora_agents/unix/pandora_agent.redhat.spec b/pandora_agents/unix/pandora_agent.redhat.spec
index a0106b1960..0857f1abf3 100644
--- a/pandora_agents/unix/pandora_agent.redhat.spec
+++ b/pandora_agents/unix/pandora_agent.redhat.spec
@@ -4,7 +4,7 @@
 %global __os_install_post %{nil}
 %define name        pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240115
+%define release     240116
 
 Summary:            Pandora FMS Linux agent, PERL version
 Name:               %{name}
diff --git a/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec b/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec
index d7f30e9b26..cda7476a10 100644
--- a/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec
+++ b/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec
@@ -5,7 +5,7 @@
 %define name        pandorafms_agent_linux_bin
 %define source_name pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240115
+%define release     240116
 %define debug_package %{nil}
 
 Summary:            Pandora FMS Linux agent, binary version
diff --git a/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec b/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec
index 5249f61928..d2ac511e4f 100644
--- a/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec
+++ b/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec
@@ -5,7 +5,7 @@
 %define name        pandorafms_agent_linux_bin
 %define source_name pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240115
+%define release     240116
 %define debug_package %{nil}
 
 Summary:            Pandora FMS Linux agent, binary version
diff --git a/pandora_agents/unix/pandora_agent.redhat_bin.spec b/pandora_agents/unix/pandora_agent.redhat_bin.spec
index 9a2de6bd96..c587d0a009 100644
--- a/pandora_agents/unix/pandora_agent.redhat_bin.spec
+++ b/pandora_agents/unix/pandora_agent.redhat_bin.spec
@@ -5,7 +5,7 @@
 %define name        pandorafms_agent_linux_bin
 %define source_name pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240115
+%define release     240116
 
 Summary:            Pandora FMS Linux agent, binary version
 Name:               %{name}
diff --git a/pandora_agents/unix/pandora_agent.spec b/pandora_agents/unix/pandora_agent.spec
index 4c014cff15..30d7832d37 100644
--- a/pandora_agents/unix/pandora_agent.spec
+++ b/pandora_agents/unix/pandora_agent.spec
@@ -4,7 +4,7 @@
 %global __os_install_post %{nil}
 %define name        pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240115
+%define release     240116
 
 Summary:            Pandora FMS Linux agent, PERL version
 Name:               %{name}
diff --git a/pandora_agents/unix/pandora_agent_installer b/pandora_agents/unix/pandora_agent_installer
index a2a0c0fe46..ce325c1588 100755
--- a/pandora_agents/unix/pandora_agent_installer
+++ b/pandora_agents/unix/pandora_agent_installer
@@ -10,7 +10,7 @@
 # **********************************************************************
 
 PI_VERSION="7.0NG.775"
-PI_BUILD="240115"
+PI_BUILD="240116"
 OS_NAME=`uname -s`
 
 FORCE=0
diff --git a/pandora_agents/win32/installer/pandora.mpi b/pandora_agents/win32/installer/pandora.mpi
index 82074313de..d9e6614b68 100644
--- a/pandora_agents/win32/installer/pandora.mpi
+++ b/pandora_agents/win32/installer/pandora.mpi
@@ -186,7 +186,7 @@ UpgradeApplicationID
 {}
 
 Version
-{240115}
+{240116}
 
 ViewReadme
 {Yes}
diff --git a/pandora_agents/win32/pandora.cc b/pandora_agents/win32/pandora.cc
index aeded4b511..8474536663 100644
--- a/pandora_agents/win32/pandora.cc
+++ b/pandora_agents/win32/pandora.cc
@@ -30,7 +30,7 @@ using namespace Pandora;
 using namespace Pandora_Strutils;
 
 #define PATH_SIZE    _MAX_PATH+1
-#define PANDORA_VERSION ("7.0NG.775 Build 240115")
+#define PANDORA_VERSION ("7.0NG.775 Build 240116")
 
 string pandora_path;
 string pandora_dir;
diff --git a/pandora_agents/win32/versioninfo.rc b/pandora_agents/win32/versioninfo.rc
index a60563005e..86e2ef3cb2 100644
--- a/pandora_agents/win32/versioninfo.rc
+++ b/pandora_agents/win32/versioninfo.rc
@@ -11,7 +11,7 @@ BEGIN
       VALUE "LegalCopyright", "Pandora FMS"
       VALUE "OriginalFilename", "PandoraAgent.exe"
       VALUE "ProductName", "Pandora FMS Windows Agent"
-      VALUE "ProductVersion", "(7.0NG.775(Build 240115))"
+      VALUE "ProductVersion", "(7.0NG.775(Build 240116))"
       VALUE "FileVersion", "1.0.0.0"
     END
   END
diff --git a/pandora_console/DEBIAN/control b/pandora_console/DEBIAN/control
index 5542578ce4..2cf46772c3 100644
--- a/pandora_console/DEBIAN/control
+++ b/pandora_console/DEBIAN/control
@@ -1,5 +1,5 @@
 package: pandorafms-console
-Version: 7.0NG.775-240115
+Version: 7.0NG.775-240116
 Architecture: all
 Priority: optional
 Section: admin
diff --git a/pandora_console/DEBIAN/make_deb_package.sh b/pandora_console/DEBIAN/make_deb_package.sh
index b47333a6ce..8f50fbf6bc 100644
--- a/pandora_console/DEBIAN/make_deb_package.sh
+++ b/pandora_console/DEBIAN/make_deb_package.sh
@@ -14,7 +14,7 @@
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 # GNU General Public License for more details.
 
-pandora_version="7.0NG.775-240115"
+pandora_version="7.0NG.775-240116"
 
 package_pear=0
 package_pandora=1
diff --git a/pandora_console/include/config_process.php b/pandora_console/include/config_process.php
index 2bd0f41438..beb1ea821d 100644
--- a/pandora_console/include/config_process.php
+++ b/pandora_console/include/config_process.php
@@ -20,7 +20,7 @@
 /**
  * Pandora build version and version
  */
-$build_version = 'PC240115';
+$build_version = 'PC240116';
 $pandora_version = 'v7.0NG.775';
 
 // Do not overwrite default timezone set if defined.
diff --git a/pandora_console/install.php b/pandora_console/install.php
index eaf5c72df9..5fd2baf89f 100644
--- a/pandora_console/install.php
+++ b/pandora_console/install.php
@@ -131,7 +131,7 @@
         <div style='padding-bottom: 50px'>
             <?php
             $version = '7.0NG.775';
-            $build = '240115';
+            $build = '240116';
             $banner = "v$version Build $build";
             error_reporting(0);
 
diff --git a/pandora_console/pandora_console.redhat.spec b/pandora_console/pandora_console.redhat.spec
index eab6216432..1993659b84 100644
--- a/pandora_console/pandora_console.redhat.spec
+++ b/pandora_console/pandora_console.redhat.spec
@@ -6,7 +6,7 @@
 %define debug_package %{nil}
 %define name        pandorafms_console
 %define version     7.0NG.775
-%define release     240115
+%define release     240116
 
 # User and Group under which Apache is running
 %define httpd_name  httpd
diff --git a/pandora_console/pandora_console.rhel7.spec b/pandora_console/pandora_console.rhel7.spec
index c912b550d1..ede99dd164 100644
--- a/pandora_console/pandora_console.rhel7.spec
+++ b/pandora_console/pandora_console.rhel7.spec
@@ -6,7 +6,7 @@
 %define debug_package %{nil}
 %define name        pandorafms_console
 %define version     7.0NG.775
-%define release     240115
+%define release     240116
 
 # User and Group under which Apache is running
 %define httpd_name  httpd
diff --git a/pandora_console/pandora_console.spec b/pandora_console/pandora_console.spec
index 98a52b4e68..2876392383 100644
--- a/pandora_console/pandora_console.spec
+++ b/pandora_console/pandora_console.spec
@@ -3,7 +3,7 @@
 #
 %define name        pandorafms_console
 %define version     7.0NG.775
-%define release     240115
+%define release     240116
 %define httpd_name      httpd
 # User and Group under which Apache is running
 %define httpd_name  apache2
diff --git a/pandora_server/DEBIAN/control b/pandora_server/DEBIAN/control
index aa414dadc2..0ab3eac518 100644
--- a/pandora_server/DEBIAN/control
+++ b/pandora_server/DEBIAN/control
@@ -1,5 +1,5 @@
 package: pandorafms-server
-Version: 7.0NG.775-240115
+Version: 7.0NG.775-240116
 Architecture: all
 Priority: optional
 Section: admin
diff --git a/pandora_server/DEBIAN/make_deb_package.sh b/pandora_server/DEBIAN/make_deb_package.sh
index 7c83b4ef19..d87c51cc13 100644
--- a/pandora_server/DEBIAN/make_deb_package.sh
+++ b/pandora_server/DEBIAN/make_deb_package.sh
@@ -14,7 +14,7 @@
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 # GNU General Public License for more details.
 
-pandora_version="7.0NG.775-240115"
+pandora_version="7.0NG.775-240116"
 
 package_cpan=0
 package_pandora=1
diff --git a/pandora_server/lib/PandoraFMS/Config.pm b/pandora_server/lib/PandoraFMS/Config.pm
index 26052a676a..8840304197 100644
--- a/pandora_server/lib/PandoraFMS/Config.pm
+++ b/pandora_server/lib/PandoraFMS/Config.pm
@@ -46,7 +46,7 @@ our @EXPORT = qw(
 
 # version: Defines actual version of Pandora Server for this module only
 my $pandora_version = "7.0NG.775";
-my $pandora_build = "240115";
+my $pandora_build = "240116";
 our $VERSION = $pandora_version." ".$pandora_build;
 
 # Setup hash
diff --git a/pandora_server/lib/PandoraFMS/PluginTools.pm b/pandora_server/lib/PandoraFMS/PluginTools.pm
index 744510de1f..a492710614 100644
--- a/pandora_server/lib/PandoraFMS/PluginTools.pm
+++ b/pandora_server/lib/PandoraFMS/PluginTools.pm
@@ -34,7 +34,7 @@ our @ISA = qw(Exporter);
 
 # version: Defines actual version of Pandora Server for this module only
 my $pandora_version = "7.0NG.775";
-my $pandora_build = "240115";
+my $pandora_build = "240116";
 our $VERSION = $pandora_version." ".$pandora_build;
 
 our %EXPORT_TAGS = ( 'all' => [ qw() ] );
diff --git a/pandora_server/pandora_server.redhat.spec b/pandora_server/pandora_server.redhat.spec
index ff30f62af7..ea6e695513 100644
--- a/pandora_server/pandora_server.redhat.spec
+++ b/pandora_server/pandora_server.redhat.spec
@@ -7,7 +7,7 @@
 %define debug_package %{nil}
 %define name        pandorafms_server
 %define version     7.0NG.775
-%define release     240115
+%define release     240116
 
 Summary:            Pandora FMS Server
 Name:               %{name}
diff --git a/pandora_server/pandora_server.spec b/pandora_server/pandora_server.spec
index 9837a79873..7761c0355a 100644
--- a/pandora_server/pandora_server.spec
+++ b/pandora_server/pandora_server.spec
@@ -4,7 +4,7 @@
 %global __os_install_post %{nil}
 %define name        pandorafms_server
 %define version     7.0NG.775
-%define release     240115
+%define release     240116
 
 Summary:            Pandora FMS Server
 Name:               %{name}
diff --git a/pandora_server/pandora_server_installer b/pandora_server/pandora_server_installer
index 35a8e340a1..4cf0df4e2d 100755
--- a/pandora_server/pandora_server_installer
+++ b/pandora_server/pandora_server_installer
@@ -9,7 +9,7 @@
 # **********************************************************************
 
 PI_VERSION="7.0NG.775"
-PI_BUILD="240115"
+PI_BUILD="240116"
 
 MODE=$1
 if [ $# -gt 1 ]; then
diff --git a/pandora_server/util/pandora_db.pl b/pandora_server/util/pandora_db.pl
index 3a0c624602..5dfd0ea207 100755
--- a/pandora_server/util/pandora_db.pl
+++ b/pandora_server/util/pandora_db.pl
@@ -38,7 +38,7 @@ use PandoraFMS::Config;
 use PandoraFMS::DB;
 
 # version: define current version
-my $version = "7.0NG.775 Build 240115";
+my $version = "7.0NG.775 Build 240116";
 
 # Pandora server configuration
 my %conf;
diff --git a/pandora_server/util/pandora_manage.pl b/pandora_server/util/pandora_manage.pl
index 44d8cd6d1e..c5eff8d892 100755
--- a/pandora_server/util/pandora_manage.pl
+++ b/pandora_server/util/pandora_manage.pl
@@ -36,7 +36,7 @@ use Encode::Locale;
 Encode::Locale::decode_argv;
 
 # version: define current version
-my $version = "7.0NG.775 Build 240115";
+my $version = "7.0NG.775 Build 240116";
 
 # save program name for logging
 my $progname = basename($0);

From c8a73f59f5026e5ab89f10296e2961108e64fce0 Mon Sep 17 00:00:00 2001
From: Daniel Cebrian <daniel.cebrian@pandorafms.com>
Date: Tue, 16 Jan 2024 11:53:11 +0100
Subject: [PATCH 129/231] #12569 added audit in discovery and task console

---
 pandora_console/include/constants.php            | 1 +
 pandora_console/include/functions_cron_task.php  | 8 ++++++++
 pandora_server/lib/PandoraFMS/DiscoveryServer.pm | 1 +
 3 files changed, 10 insertions(+)

diff --git a/pandora_console/include/constants.php b/pandora_console/include/constants.php
index b2ce8d88b4..d68bba9c22 100644
--- a/pandora_console/include/constants.php
+++ b/pandora_console/include/constants.php
@@ -819,6 +819,7 @@ define('AUDIT_LOG_INCIDENT_MANAGEMENT', 'Incident management');
 define('AUDIT_LOG_UMC', 'Warp Manager');
 define('AUDIT_LOG_NMS_VIOLATION', 'NMS Violation');
 define('AUDIT_LOG_ENTERPRISE_VIOLATION', 'Enterprise Violation');
+define('AUDIT_LOG_CRON_TASK', 'Cron task');
 
 // MIMEs.
 define(
diff --git a/pandora_console/include/functions_cron_task.php b/pandora_console/include/functions_cron_task.php
index 40a6e159cc..c00fd441d8 100644
--- a/pandora_console/include/functions_cron_task.php
+++ b/pandora_console/include/functions_cron_task.php
@@ -419,6 +419,14 @@ function cron_task_run(
 			WHERE id=".$id_user_task;
     }
 
+    db_pandora_audit(
+        AUDIT_LOG_CRON_TASK,
+        'Executed cron task: '.$task['name'].' #'.$task['id'],
+        false,
+        false,
+        ''
+    );
+
     db_process_sql($sql);
     db_process_sql($sql2);
 }
diff --git a/pandora_server/lib/PandoraFMS/DiscoveryServer.pm b/pandora_server/lib/PandoraFMS/DiscoveryServer.pm
index 6c2927f2a6..2df6dd31d0 100644
--- a/pandora_server/lib/PandoraFMS/DiscoveryServer.pm
+++ b/pandora_server/lib/PandoraFMS/DiscoveryServer.pm
@@ -524,6 +524,7 @@ sub exec_recon_app ($$$) {
 		logger($pa_config, 'Invalid summary for recon app ID ' . $task->{'id_app'}, 10);
 	} else {
 		db_do($dbh, "UPDATE trecon_task SET summary=? WHERE id_rt=?", $summary_json, $task->{'id_rt'});
+	  pandora_audit ($pa_config, 'Discovery task' . ' Executed task '.$task->{'name'}.'#'.$task->{'id_app'}, 'SYSTEM', 'Discovery task', $dbh);
 	}
 
 	update_recon_task($dbh, $task->{'id_rt'}, $status);

From ce00c4b9e5d9713204da617e0ccd8fbf8adde30d Mon Sep 17 00:00:00 2001
From: Jonathan <jonathan.leon@pandorafms.com>
Date: Tue, 16 Jan 2024 17:17:07 +0100
Subject: [PATCH 130/231] #12696 fix tactical view error 500 and schedule by
 group

---
 .../include/lib/TacticalView/elements/Agents.php   | 14 +++++++++-----
 .../include/lib/TacticalView/elements/Groups.php   |  3 ++-
 .../TacticalView/elements/ScheduledDowntime.php    |  4 +++-
 3 files changed, 14 insertions(+), 7 deletions(-)

diff --git a/pandora_console/include/lib/TacticalView/elements/Agents.php b/pandora_console/include/lib/TacticalView/elements/Agents.php
index a0e14313e0..659b9c31d0 100644
--- a/pandora_console/include/lib/TacticalView/elements/Agents.php
+++ b/pandora_console/include/lib/TacticalView/elements/Agents.php
@@ -436,12 +436,16 @@ class Agents extends Element
         $percentages = [];
         $total = array_sum($data);
         foreach ($data as $key => $value) {
-            $percentage = (($value / $total) * 100);
-            if ($percentage < 1 && $percentage > 0) {
-                $percentage = 1;
-            }
+            if ($total > 0) {
+                $percentage = (($value / $total) * 100);
+                if ($percentage < 1 && $percentage > 0) {
+                    $percentage = 1;
+                }
 
-            $percentages[$key] = format_numeric($percentage, 0);
+                $percentages[$key] = format_numeric($percentage, 0);
+            } else {
+                $percentages[$key] = '0%';
+            }
         }
 
         $data = $percentages;
diff --git a/pandora_console/include/lib/TacticalView/elements/Groups.php b/pandora_console/include/lib/TacticalView/elements/Groups.php
index 4fe07b743a..c314381b59 100644
--- a/pandora_console/include/lib/TacticalView/elements/Groups.php
+++ b/pandora_console/include/lib/TacticalView/elements/Groups.php
@@ -113,8 +113,9 @@ class Groups extends Element
         $id_groups = implode(',', $id_groups);
 
         $modules = modules_get_modules_in_group($id_groups);
-        $total_groups = count($modules);
+        $total_groups = ($modules !== false) ? count($modules) : 0;
         if ($total_groups === 0) {
+            include_once $config['homedir'].'/include/functions_graph.php';
             return graph_nodata_image(['width' => '400']);
         }
 
diff --git a/pandora_console/include/lib/TacticalView/elements/ScheduledDowntime.php b/pandora_console/include/lib/TacticalView/elements/ScheduledDowntime.php
index 9e94e17275..563e59b0f2 100644
--- a/pandora_console/include/lib/TacticalView/elements/ScheduledDowntime.php
+++ b/pandora_console/include/lib/TacticalView/elements/ScheduledDowntime.php
@@ -156,13 +156,15 @@ class ScheduledDowntime extends Element
                 'cron_interval_from',
                 'cron_interval_to',
             ];
-
+            $groups = implode(',', array_keys(users_get_groups($config['user'])));
             $columns_str = implode(',', $columns);
             $sql = sprintf(
                 'SELECT %s
                 FROM tplanned_downtime
+                WHERE id_group IN (%s)
                 %s %s',
                 $columns_str,
+                $groups,
                 $order,
                 $pagination,
             );

From f33865542ceaca0f3f8b1fd4d50e67a183587b8a Mon Sep 17 00:00:00 2001
From: artica <artica.devel@gmail.com>
Date: Wed, 17 Jan 2024 01:01:47 +0100
Subject: [PATCH 131/231] Auto-updated build strings.

---
 pandora_agents/unix/DEBIAN/control                    | 2 +-
 pandora_agents/unix/DEBIAN/make_deb_package.sh        | 2 +-
 pandora_agents/unix/pandora_agent                     | 2 +-
 pandora_agents/unix/pandora_agent.redhat.spec         | 2 +-
 pandora_agents/unix/pandora_agent.redhat_bin.el8.spec | 2 +-
 pandora_agents/unix/pandora_agent.redhat_bin.el9.spec | 2 +-
 pandora_agents/unix/pandora_agent.redhat_bin.spec     | 2 +-
 pandora_agents/unix/pandora_agent.spec                | 2 +-
 pandora_agents/unix/pandora_agent_installer           | 2 +-
 pandora_agents/win32/installer/pandora.mpi            | 2 +-
 pandora_agents/win32/pandora.cc                       | 2 +-
 pandora_agents/win32/versioninfo.rc                   | 2 +-
 pandora_console/DEBIAN/control                        | 2 +-
 pandora_console/DEBIAN/make_deb_package.sh            | 2 +-
 pandora_console/include/config_process.php            | 2 +-
 pandora_console/install.php                           | 2 +-
 pandora_console/pandora_console.redhat.spec           | 2 +-
 pandora_console/pandora_console.rhel7.spec            | 2 +-
 pandora_console/pandora_console.spec                  | 2 +-
 pandora_server/DEBIAN/control                         | 2 +-
 pandora_server/DEBIAN/make_deb_package.sh             | 2 +-
 pandora_server/lib/PandoraFMS/Config.pm               | 2 +-
 pandora_server/lib/PandoraFMS/PluginTools.pm          | 2 +-
 pandora_server/pandora_server.redhat.spec             | 2 +-
 pandora_server/pandora_server.spec                    | 2 +-
 pandora_server/pandora_server_installer               | 2 +-
 pandora_server/util/pandora_db.pl                     | 2 +-
 pandora_server/util/pandora_manage.pl                 | 2 +-
 28 files changed, 28 insertions(+), 28 deletions(-)

diff --git a/pandora_agents/unix/DEBIAN/control b/pandora_agents/unix/DEBIAN/control
index 21b762f14f..dd03c476be 100644
--- a/pandora_agents/unix/DEBIAN/control
+++ b/pandora_agents/unix/DEBIAN/control
@@ -1,5 +1,5 @@
 package: pandorafms-agent-unix
-Version: 7.0NG.775-240116
+Version: 7.0NG.775-240117
 Architecture: all
 Priority: optional
 Section: admin
diff --git a/pandora_agents/unix/DEBIAN/make_deb_package.sh b/pandora_agents/unix/DEBIAN/make_deb_package.sh
index c4ae8cf158..cdc539a810 100644
--- a/pandora_agents/unix/DEBIAN/make_deb_package.sh
+++ b/pandora_agents/unix/DEBIAN/make_deb_package.sh
@@ -14,7 +14,7 @@
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 # GNU General Public License for more details.
 
-pandora_version="7.0NG.775-240116"
+pandora_version="7.0NG.775-240117"
 
 echo "Test if you has the tools for to make the packages."
 whereis dpkg-deb | cut -d":" -f2 | grep dpkg-deb > /dev/null
diff --git a/pandora_agents/unix/pandora_agent b/pandora_agents/unix/pandora_agent
index 7ad9d405f0..dec33aa8fc 100755
--- a/pandora_agents/unix/pandora_agent
+++ b/pandora_agents/unix/pandora_agent
@@ -1039,7 +1039,7 @@ my $Sem = undef;
 my $ThreadSem = undef;
 
 use constant AGENT_VERSION => '7.0NG.775';
-use constant AGENT_BUILD => '240116';
+use constant AGENT_BUILD => '240117';
 
 # Agent log default file size maximum and instances
 use constant DEFAULT_MAX_LOG_SIZE => 600000;
diff --git a/pandora_agents/unix/pandora_agent.redhat.spec b/pandora_agents/unix/pandora_agent.redhat.spec
index 0857f1abf3..fe4cf2f3c1 100644
--- a/pandora_agents/unix/pandora_agent.redhat.spec
+++ b/pandora_agents/unix/pandora_agent.redhat.spec
@@ -4,7 +4,7 @@
 %global __os_install_post %{nil}
 %define name        pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240116
+%define release     240117
 
 Summary:            Pandora FMS Linux agent, PERL version
 Name:               %{name}
diff --git a/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec b/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec
index cda7476a10..5af1c4ece1 100644
--- a/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec
+++ b/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec
@@ -5,7 +5,7 @@
 %define name        pandorafms_agent_linux_bin
 %define source_name pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240116
+%define release     240117
 %define debug_package %{nil}
 
 Summary:            Pandora FMS Linux agent, binary version
diff --git a/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec b/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec
index d2ac511e4f..7921ccdebb 100644
--- a/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec
+++ b/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec
@@ -5,7 +5,7 @@
 %define name        pandorafms_agent_linux_bin
 %define source_name pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240116
+%define release     240117
 %define debug_package %{nil}
 
 Summary:            Pandora FMS Linux agent, binary version
diff --git a/pandora_agents/unix/pandora_agent.redhat_bin.spec b/pandora_agents/unix/pandora_agent.redhat_bin.spec
index c587d0a009..22653a0605 100644
--- a/pandora_agents/unix/pandora_agent.redhat_bin.spec
+++ b/pandora_agents/unix/pandora_agent.redhat_bin.spec
@@ -5,7 +5,7 @@
 %define name        pandorafms_agent_linux_bin
 %define source_name pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240116
+%define release     240117
 
 Summary:            Pandora FMS Linux agent, binary version
 Name:               %{name}
diff --git a/pandora_agents/unix/pandora_agent.spec b/pandora_agents/unix/pandora_agent.spec
index 30d7832d37..bedceaaea9 100644
--- a/pandora_agents/unix/pandora_agent.spec
+++ b/pandora_agents/unix/pandora_agent.spec
@@ -4,7 +4,7 @@
 %global __os_install_post %{nil}
 %define name        pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240116
+%define release     240117
 
 Summary:            Pandora FMS Linux agent, PERL version
 Name:               %{name}
diff --git a/pandora_agents/unix/pandora_agent_installer b/pandora_agents/unix/pandora_agent_installer
index ce325c1588..83de892a8c 100755
--- a/pandora_agents/unix/pandora_agent_installer
+++ b/pandora_agents/unix/pandora_agent_installer
@@ -10,7 +10,7 @@
 # **********************************************************************
 
 PI_VERSION="7.0NG.775"
-PI_BUILD="240116"
+PI_BUILD="240117"
 OS_NAME=`uname -s`
 
 FORCE=0
diff --git a/pandora_agents/win32/installer/pandora.mpi b/pandora_agents/win32/installer/pandora.mpi
index d9e6614b68..b16cef6aab 100644
--- a/pandora_agents/win32/installer/pandora.mpi
+++ b/pandora_agents/win32/installer/pandora.mpi
@@ -186,7 +186,7 @@ UpgradeApplicationID
 {}
 
 Version
-{240116}
+{240117}
 
 ViewReadme
 {Yes}
diff --git a/pandora_agents/win32/pandora.cc b/pandora_agents/win32/pandora.cc
index 8474536663..0a285f6560 100644
--- a/pandora_agents/win32/pandora.cc
+++ b/pandora_agents/win32/pandora.cc
@@ -30,7 +30,7 @@ using namespace Pandora;
 using namespace Pandora_Strutils;
 
 #define PATH_SIZE    _MAX_PATH+1
-#define PANDORA_VERSION ("7.0NG.775 Build 240116")
+#define PANDORA_VERSION ("7.0NG.775 Build 240117")
 
 string pandora_path;
 string pandora_dir;
diff --git a/pandora_agents/win32/versioninfo.rc b/pandora_agents/win32/versioninfo.rc
index 86e2ef3cb2..d3ebaf59be 100644
--- a/pandora_agents/win32/versioninfo.rc
+++ b/pandora_agents/win32/versioninfo.rc
@@ -11,7 +11,7 @@ BEGIN
       VALUE "LegalCopyright", "Pandora FMS"
       VALUE "OriginalFilename", "PandoraAgent.exe"
       VALUE "ProductName", "Pandora FMS Windows Agent"
-      VALUE "ProductVersion", "(7.0NG.775(Build 240116))"
+      VALUE "ProductVersion", "(7.0NG.775(Build 240117))"
       VALUE "FileVersion", "1.0.0.0"
     END
   END
diff --git a/pandora_console/DEBIAN/control b/pandora_console/DEBIAN/control
index 2cf46772c3..b898706e72 100644
--- a/pandora_console/DEBIAN/control
+++ b/pandora_console/DEBIAN/control
@@ -1,5 +1,5 @@
 package: pandorafms-console
-Version: 7.0NG.775-240116
+Version: 7.0NG.775-240117
 Architecture: all
 Priority: optional
 Section: admin
diff --git a/pandora_console/DEBIAN/make_deb_package.sh b/pandora_console/DEBIAN/make_deb_package.sh
index 8f50fbf6bc..d13917196a 100644
--- a/pandora_console/DEBIAN/make_deb_package.sh
+++ b/pandora_console/DEBIAN/make_deb_package.sh
@@ -14,7 +14,7 @@
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 # GNU General Public License for more details.
 
-pandora_version="7.0NG.775-240116"
+pandora_version="7.0NG.775-240117"
 
 package_pear=0
 package_pandora=1
diff --git a/pandora_console/include/config_process.php b/pandora_console/include/config_process.php
index beb1ea821d..225c32d614 100644
--- a/pandora_console/include/config_process.php
+++ b/pandora_console/include/config_process.php
@@ -20,7 +20,7 @@
 /**
  * Pandora build version and version
  */
-$build_version = 'PC240116';
+$build_version = 'PC240117';
 $pandora_version = 'v7.0NG.775';
 
 // Do not overwrite default timezone set if defined.
diff --git a/pandora_console/install.php b/pandora_console/install.php
index 5fd2baf89f..900e2bef57 100644
--- a/pandora_console/install.php
+++ b/pandora_console/install.php
@@ -131,7 +131,7 @@
         <div style='padding-bottom: 50px'>
             <?php
             $version = '7.0NG.775';
-            $build = '240116';
+            $build = '240117';
             $banner = "v$version Build $build";
             error_reporting(0);
 
diff --git a/pandora_console/pandora_console.redhat.spec b/pandora_console/pandora_console.redhat.spec
index 1993659b84..c5f8dbeeda 100644
--- a/pandora_console/pandora_console.redhat.spec
+++ b/pandora_console/pandora_console.redhat.spec
@@ -6,7 +6,7 @@
 %define debug_package %{nil}
 %define name        pandorafms_console
 %define version     7.0NG.775
-%define release     240116
+%define release     240117
 
 # User and Group under which Apache is running
 %define httpd_name  httpd
diff --git a/pandora_console/pandora_console.rhel7.spec b/pandora_console/pandora_console.rhel7.spec
index ede99dd164..5f5f50c73b 100644
--- a/pandora_console/pandora_console.rhel7.spec
+++ b/pandora_console/pandora_console.rhel7.spec
@@ -6,7 +6,7 @@
 %define debug_package %{nil}
 %define name        pandorafms_console
 %define version     7.0NG.775
-%define release     240116
+%define release     240117
 
 # User and Group under which Apache is running
 %define httpd_name  httpd
diff --git a/pandora_console/pandora_console.spec b/pandora_console/pandora_console.spec
index 2876392383..2ef1567d6c 100644
--- a/pandora_console/pandora_console.spec
+++ b/pandora_console/pandora_console.spec
@@ -3,7 +3,7 @@
 #
 %define name        pandorafms_console
 %define version     7.0NG.775
-%define release     240116
+%define release     240117
 %define httpd_name      httpd
 # User and Group under which Apache is running
 %define httpd_name  apache2
diff --git a/pandora_server/DEBIAN/control b/pandora_server/DEBIAN/control
index 0ab3eac518..b9f9bdb9a7 100644
--- a/pandora_server/DEBIAN/control
+++ b/pandora_server/DEBIAN/control
@@ -1,5 +1,5 @@
 package: pandorafms-server
-Version: 7.0NG.775-240116
+Version: 7.0NG.775-240117
 Architecture: all
 Priority: optional
 Section: admin
diff --git a/pandora_server/DEBIAN/make_deb_package.sh b/pandora_server/DEBIAN/make_deb_package.sh
index d87c51cc13..2d84c1d127 100644
--- a/pandora_server/DEBIAN/make_deb_package.sh
+++ b/pandora_server/DEBIAN/make_deb_package.sh
@@ -14,7 +14,7 @@
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 # GNU General Public License for more details.
 
-pandora_version="7.0NG.775-240116"
+pandora_version="7.0NG.775-240117"
 
 package_cpan=0
 package_pandora=1
diff --git a/pandora_server/lib/PandoraFMS/Config.pm b/pandora_server/lib/PandoraFMS/Config.pm
index 8840304197..e518b9e038 100644
--- a/pandora_server/lib/PandoraFMS/Config.pm
+++ b/pandora_server/lib/PandoraFMS/Config.pm
@@ -46,7 +46,7 @@ our @EXPORT = qw(
 
 # version: Defines actual version of Pandora Server for this module only
 my $pandora_version = "7.0NG.775";
-my $pandora_build = "240116";
+my $pandora_build = "240117";
 our $VERSION = $pandora_version." ".$pandora_build;
 
 # Setup hash
diff --git a/pandora_server/lib/PandoraFMS/PluginTools.pm b/pandora_server/lib/PandoraFMS/PluginTools.pm
index a492710614..86e7c3cd58 100644
--- a/pandora_server/lib/PandoraFMS/PluginTools.pm
+++ b/pandora_server/lib/PandoraFMS/PluginTools.pm
@@ -34,7 +34,7 @@ our @ISA = qw(Exporter);
 
 # version: Defines actual version of Pandora Server for this module only
 my $pandora_version = "7.0NG.775";
-my $pandora_build = "240116";
+my $pandora_build = "240117";
 our $VERSION = $pandora_version." ".$pandora_build;
 
 our %EXPORT_TAGS = ( 'all' => [ qw() ] );
diff --git a/pandora_server/pandora_server.redhat.spec b/pandora_server/pandora_server.redhat.spec
index ea6e695513..6461867d48 100644
--- a/pandora_server/pandora_server.redhat.spec
+++ b/pandora_server/pandora_server.redhat.spec
@@ -7,7 +7,7 @@
 %define debug_package %{nil}
 %define name        pandorafms_server
 %define version     7.0NG.775
-%define release     240116
+%define release     240117
 
 Summary:            Pandora FMS Server
 Name:               %{name}
diff --git a/pandora_server/pandora_server.spec b/pandora_server/pandora_server.spec
index 7761c0355a..c07fdbd3db 100644
--- a/pandora_server/pandora_server.spec
+++ b/pandora_server/pandora_server.spec
@@ -4,7 +4,7 @@
 %global __os_install_post %{nil}
 %define name        pandorafms_server
 %define version     7.0NG.775
-%define release     240116
+%define release     240117
 
 Summary:            Pandora FMS Server
 Name:               %{name}
diff --git a/pandora_server/pandora_server_installer b/pandora_server/pandora_server_installer
index 4cf0df4e2d..50ba633f64 100755
--- a/pandora_server/pandora_server_installer
+++ b/pandora_server/pandora_server_installer
@@ -9,7 +9,7 @@
 # **********************************************************************
 
 PI_VERSION="7.0NG.775"
-PI_BUILD="240116"
+PI_BUILD="240117"
 
 MODE=$1
 if [ $# -gt 1 ]; then
diff --git a/pandora_server/util/pandora_db.pl b/pandora_server/util/pandora_db.pl
index 5dfd0ea207..0ffa9fb970 100755
--- a/pandora_server/util/pandora_db.pl
+++ b/pandora_server/util/pandora_db.pl
@@ -38,7 +38,7 @@ use PandoraFMS::Config;
 use PandoraFMS::DB;
 
 # version: define current version
-my $version = "7.0NG.775 Build 240116";
+my $version = "7.0NG.775 Build 240117";
 
 # Pandora server configuration
 my %conf;
diff --git a/pandora_server/util/pandora_manage.pl b/pandora_server/util/pandora_manage.pl
index c5eff8d892..1a4bf702df 100755
--- a/pandora_server/util/pandora_manage.pl
+++ b/pandora_server/util/pandora_manage.pl
@@ -36,7 +36,7 @@ use Encode::Locale;
 Encode::Locale::decode_argv;
 
 # version: define current version
-my $version = "7.0NG.775 Build 240116";
+my $version = "7.0NG.775 Build 240117";
 
 # save program name for logging
 my $progname = basename($0);

From d3ca5862b41a17bb09c1acfec48e12887ffead36 Mon Sep 17 00:00:00 2001
From: Calvo <luis.calvo@pandorafms.com>
Date: Wed, 17 Jan 2024 11:01:25 +0100
Subject: [PATCH 132/231] #12222 Fix timezone offset when modules has timezone
 data

---
 pandora_server/lib/PandoraFMS/DataServer.pm | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/pandora_server/lib/PandoraFMS/DataServer.pm b/pandora_server/lib/PandoraFMS/DataServer.pm
index 80e8bb4bd3..7dfee63af3 100644
--- a/pandora_server/lib/PandoraFMS/DataServer.pm
+++ b/pandora_server/lib/PandoraFMS/DataServer.pm
@@ -627,6 +627,11 @@ sub process_xml_data ($$$$$) {
 
 		my $module_type = get_tag_value ($module_data, 'type', 'generic_data');
 
+		# Apply timezone offset to module if timestamp is set.
+		if (defined($module_data->{'timestamp'} && $module_data->{'timestamp'} ne '')) {
+			$module_data->{'timestamp'} = strftime ("%Y-%m-%d %H:%M:%S", localtime($module_data->{'timestamp'} + ($timezone_offset * 3600)));
+		}
+
 		# Single data
 		if (! defined ($module_data->{'datalist'})) {
 			my $data_timestamp = get_tag_value ($module_data, 'timestamp', $timestamp);

From 6e820ab58c2cb759aeaca68259aab6b10912ddcd Mon Sep 17 00:00:00 2001
From: Daniel Maya <daniel.maya@pandorafms.com>
Date: Wed, 17 Jan 2024 12:07:33 +0100
Subject: [PATCH 133/231] #12364 Added filter css

---
 pandora_console/include/styles/pandora.css | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/pandora_console/include/styles/pandora.css b/pandora_console/include/styles/pandora.css
index 94d337bdbe..ce3d14c10a 100644
--- a/pandora_console/include/styles/pandora.css
+++ b/pandora_console/include/styles/pandora.css
@@ -767,6 +767,10 @@ select:-internal-list-box {
   width: 80%;
 }
 
+.w85p {
+  width: 85%;
+}
+
 .w88p {
   width: 88%;
 }

From 0efe0041227b49766b1ba4da0d47397d8110b303 Mon Sep 17 00:00:00 2001
From: Daniel Maya <daniel.maya@pandorafms.com>
Date: Wed, 17 Jan 2024 13:29:21 +0100
Subject: [PATCH 134/231] #12767 Fixed password

---
 pandora_console/include/styles/pandora.css | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/pandora_console/include/styles/pandora.css b/pandora_console/include/styles/pandora.css
index 94d337bdbe..7c188058f3 100644
--- a/pandora_console/include/styles/pandora.css
+++ b/pandora_console/include/styles/pandora.css
@@ -12076,6 +12076,10 @@ div.relative > div > div#ui-datepicker-div {
   width: 400px;
 }
 
+.container-div-input-password {
+  display: inline !important;
+}
+
 #message_dialog_connection {
   height: auto !important;
 }

From c973d8b2573de5630085d2c4cc829d3bca5f47df Mon Sep 17 00:00:00 2001
From: Jonathan <jonathan.leon@pandorafms.com>
Date: Wed, 17 Jan 2024 14:04:27 +0100
Subject: [PATCH 135/231] #12542 trigger module change

---
 pandora_console/include/javascript/pandora_modules.js | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/pandora_console/include/javascript/pandora_modules.js b/pandora_console/include/javascript/pandora_modules.js
index a126bc36f5..b4445e0877 100644
--- a/pandora_console/include/javascript/pandora_modules.js
+++ b/pandora_console/include/javascript/pandora_modules.js
@@ -159,9 +159,8 @@ function configure_modules_form() {
           period_select_update("module_interval", data["module_interval"]);
         }
 
-        $("#id_module_group")
-          .val(data["id_module_group"])
-          .trigger("change");
+        $("#id_module_group").val(data["id_module_group"]);
+        $("#id_module_group").trigger("change");
 
         if (data["history_data"]) $("#checkbox-history_data").check();
         else $("#checkbox-history_data").uncheck();

From 0ceb5787170bf28d951d7b161ccb966d1353bdb5 Mon Sep 17 00:00:00 2001
From: Daniel Cebrian <daniel.cebrian@pandorafms.com>
Date: Wed, 17 Jan 2024 16:48:38 +0100
Subject: [PATCH 136/231] #12522 fixed audit log in setup

---
 pandora_console/include/functions_config.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pandora_console/include/functions_config.php b/pandora_console/include/functions_config.php
index 9eb19be28d..9f4c38aa68 100644
--- a/pandora_console/include/functions_config.php
+++ b/pandora_console/include/functions_config.php
@@ -117,7 +117,7 @@ function config_update_value($token, $value, $noticed=false, $password=false)
         return true;
     } else {
         // Something in setup changes.
-        if ($noticed === false) {
+        if ($noticed === true) {
             db_pandora_audit(
                 AUDIT_LOG_SETUP,
                 'Setup has changed',

From c7711273714a77494f8e637a5f31e0f4ed659f62 Mon Sep 17 00:00:00 2001
From: Jonathan <jonathan.leon@pandorafms.com>
Date: Wed, 17 Jan 2024 17:45:59 +0100
Subject: [PATCH 137/231] #12745 add id_agent_data ncm MR

---
 pandora_console/extras/mr/68.sql | 6 ++++++
 1 file changed, 6 insertions(+)
 create mode 100644 pandora_console/extras/mr/68.sql

diff --git a/pandora_console/extras/mr/68.sql b/pandora_console/extras/mr/68.sql
new file mode 100644
index 0000000000..6a3f67b2ab
--- /dev/null
+++ b/pandora_console/extras/mr/68.sql
@@ -0,0 +1,6 @@
+START TRANSACTION;
+
+ALTER TABLE `tncm_agent_data`
+ADD COLUMN `id_agent_data` int not null default 0 AFTER `script_type`;
+
+COMMIT;
\ No newline at end of file

From 49f15c354cd42959d64a53079de686288b88a133 Mon Sep 17 00:00:00 2001
From: artica <artica.devel@gmail.com>
Date: Thu, 18 Jan 2024 01:01:27 +0100
Subject: [PATCH 138/231] Auto-updated build strings.

---
 pandora_agents/unix/DEBIAN/control                    | 2 +-
 pandora_agents/unix/DEBIAN/make_deb_package.sh        | 2 +-
 pandora_agents/unix/pandora_agent                     | 2 +-
 pandora_agents/unix/pandora_agent.redhat.spec         | 2 +-
 pandora_agents/unix/pandora_agent.redhat_bin.el8.spec | 2 +-
 pandora_agents/unix/pandora_agent.redhat_bin.el9.spec | 2 +-
 pandora_agents/unix/pandora_agent.redhat_bin.spec     | 2 +-
 pandora_agents/unix/pandora_agent.spec                | 2 +-
 pandora_agents/unix/pandora_agent_installer           | 2 +-
 pandora_agents/win32/installer/pandora.mpi            | 2 +-
 pandora_agents/win32/pandora.cc                       | 2 +-
 pandora_agents/win32/versioninfo.rc                   | 2 +-
 pandora_console/DEBIAN/control                        | 2 +-
 pandora_console/DEBIAN/make_deb_package.sh            | 2 +-
 pandora_console/include/config_process.php            | 2 +-
 pandora_console/install.php                           | 2 +-
 pandora_console/pandora_console.redhat.spec           | 2 +-
 pandora_console/pandora_console.rhel7.spec            | 2 +-
 pandora_console/pandora_console.spec                  | 2 +-
 pandora_server/DEBIAN/control                         | 2 +-
 pandora_server/DEBIAN/make_deb_package.sh             | 2 +-
 pandora_server/lib/PandoraFMS/Config.pm               | 2 +-
 pandora_server/lib/PandoraFMS/PluginTools.pm          | 2 +-
 pandora_server/pandora_server.redhat.spec             | 2 +-
 pandora_server/pandora_server.spec                    | 2 +-
 pandora_server/pandora_server_installer               | 2 +-
 pandora_server/util/pandora_db.pl                     | 2 +-
 pandora_server/util/pandora_manage.pl                 | 2 +-
 28 files changed, 28 insertions(+), 28 deletions(-)

diff --git a/pandora_agents/unix/DEBIAN/control b/pandora_agents/unix/DEBIAN/control
index dd03c476be..79e7ac2d75 100644
--- a/pandora_agents/unix/DEBIAN/control
+++ b/pandora_agents/unix/DEBIAN/control
@@ -1,5 +1,5 @@
 package: pandorafms-agent-unix
-Version: 7.0NG.775-240117
+Version: 7.0NG.775-240118
 Architecture: all
 Priority: optional
 Section: admin
diff --git a/pandora_agents/unix/DEBIAN/make_deb_package.sh b/pandora_agents/unix/DEBIAN/make_deb_package.sh
index cdc539a810..c1029f651b 100644
--- a/pandora_agents/unix/DEBIAN/make_deb_package.sh
+++ b/pandora_agents/unix/DEBIAN/make_deb_package.sh
@@ -14,7 +14,7 @@
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 # GNU General Public License for more details.
 
-pandora_version="7.0NG.775-240117"
+pandora_version="7.0NG.775-240118"
 
 echo "Test if you has the tools for to make the packages."
 whereis dpkg-deb | cut -d":" -f2 | grep dpkg-deb > /dev/null
diff --git a/pandora_agents/unix/pandora_agent b/pandora_agents/unix/pandora_agent
index dec33aa8fc..c4b788fe46 100755
--- a/pandora_agents/unix/pandora_agent
+++ b/pandora_agents/unix/pandora_agent
@@ -1039,7 +1039,7 @@ my $Sem = undef;
 my $ThreadSem = undef;
 
 use constant AGENT_VERSION => '7.0NG.775';
-use constant AGENT_BUILD => '240117';
+use constant AGENT_BUILD => '240118';
 
 # Agent log default file size maximum and instances
 use constant DEFAULT_MAX_LOG_SIZE => 600000;
diff --git a/pandora_agents/unix/pandora_agent.redhat.spec b/pandora_agents/unix/pandora_agent.redhat.spec
index fe4cf2f3c1..03bec971e3 100644
--- a/pandora_agents/unix/pandora_agent.redhat.spec
+++ b/pandora_agents/unix/pandora_agent.redhat.spec
@@ -4,7 +4,7 @@
 %global __os_install_post %{nil}
 %define name        pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240117
+%define release     240118
 
 Summary:            Pandora FMS Linux agent, PERL version
 Name:               %{name}
diff --git a/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec b/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec
index 5af1c4ece1..bfcb50e59f 100644
--- a/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec
+++ b/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec
@@ -5,7 +5,7 @@
 %define name        pandorafms_agent_linux_bin
 %define source_name pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240117
+%define release     240118
 %define debug_package %{nil}
 
 Summary:            Pandora FMS Linux agent, binary version
diff --git a/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec b/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec
index 7921ccdebb..1cf8be22e9 100644
--- a/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec
+++ b/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec
@@ -5,7 +5,7 @@
 %define name        pandorafms_agent_linux_bin
 %define source_name pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240117
+%define release     240118
 %define debug_package %{nil}
 
 Summary:            Pandora FMS Linux agent, binary version
diff --git a/pandora_agents/unix/pandora_agent.redhat_bin.spec b/pandora_agents/unix/pandora_agent.redhat_bin.spec
index 22653a0605..f16c07fc1e 100644
--- a/pandora_agents/unix/pandora_agent.redhat_bin.spec
+++ b/pandora_agents/unix/pandora_agent.redhat_bin.spec
@@ -5,7 +5,7 @@
 %define name        pandorafms_agent_linux_bin
 %define source_name pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240117
+%define release     240118
 
 Summary:            Pandora FMS Linux agent, binary version
 Name:               %{name}
diff --git a/pandora_agents/unix/pandora_agent.spec b/pandora_agents/unix/pandora_agent.spec
index bedceaaea9..f6d4e075f5 100644
--- a/pandora_agents/unix/pandora_agent.spec
+++ b/pandora_agents/unix/pandora_agent.spec
@@ -4,7 +4,7 @@
 %global __os_install_post %{nil}
 %define name        pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240117
+%define release     240118
 
 Summary:            Pandora FMS Linux agent, PERL version
 Name:               %{name}
diff --git a/pandora_agents/unix/pandora_agent_installer b/pandora_agents/unix/pandora_agent_installer
index 83de892a8c..e91df83438 100755
--- a/pandora_agents/unix/pandora_agent_installer
+++ b/pandora_agents/unix/pandora_agent_installer
@@ -10,7 +10,7 @@
 # **********************************************************************
 
 PI_VERSION="7.0NG.775"
-PI_BUILD="240117"
+PI_BUILD="240118"
 OS_NAME=`uname -s`
 
 FORCE=0
diff --git a/pandora_agents/win32/installer/pandora.mpi b/pandora_agents/win32/installer/pandora.mpi
index b16cef6aab..a278d97f8d 100644
--- a/pandora_agents/win32/installer/pandora.mpi
+++ b/pandora_agents/win32/installer/pandora.mpi
@@ -186,7 +186,7 @@ UpgradeApplicationID
 {}
 
 Version
-{240117}
+{240118}
 
 ViewReadme
 {Yes}
diff --git a/pandora_agents/win32/pandora.cc b/pandora_agents/win32/pandora.cc
index 0a285f6560..34a6dd3be8 100644
--- a/pandora_agents/win32/pandora.cc
+++ b/pandora_agents/win32/pandora.cc
@@ -30,7 +30,7 @@ using namespace Pandora;
 using namespace Pandora_Strutils;
 
 #define PATH_SIZE    _MAX_PATH+1
-#define PANDORA_VERSION ("7.0NG.775 Build 240117")
+#define PANDORA_VERSION ("7.0NG.775 Build 240118")
 
 string pandora_path;
 string pandora_dir;
diff --git a/pandora_agents/win32/versioninfo.rc b/pandora_agents/win32/versioninfo.rc
index d3ebaf59be..7763dcb321 100644
--- a/pandora_agents/win32/versioninfo.rc
+++ b/pandora_agents/win32/versioninfo.rc
@@ -11,7 +11,7 @@ BEGIN
       VALUE "LegalCopyright", "Pandora FMS"
       VALUE "OriginalFilename", "PandoraAgent.exe"
       VALUE "ProductName", "Pandora FMS Windows Agent"
-      VALUE "ProductVersion", "(7.0NG.775(Build 240117))"
+      VALUE "ProductVersion", "(7.0NG.775(Build 240118))"
       VALUE "FileVersion", "1.0.0.0"
     END
   END
diff --git a/pandora_console/DEBIAN/control b/pandora_console/DEBIAN/control
index b898706e72..bd76e0003c 100644
--- a/pandora_console/DEBIAN/control
+++ b/pandora_console/DEBIAN/control
@@ -1,5 +1,5 @@
 package: pandorafms-console
-Version: 7.0NG.775-240117
+Version: 7.0NG.775-240118
 Architecture: all
 Priority: optional
 Section: admin
diff --git a/pandora_console/DEBIAN/make_deb_package.sh b/pandora_console/DEBIAN/make_deb_package.sh
index d13917196a..81f525de04 100644
--- a/pandora_console/DEBIAN/make_deb_package.sh
+++ b/pandora_console/DEBIAN/make_deb_package.sh
@@ -14,7 +14,7 @@
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 # GNU General Public License for more details.
 
-pandora_version="7.0NG.775-240117"
+pandora_version="7.0NG.775-240118"
 
 package_pear=0
 package_pandora=1
diff --git a/pandora_console/include/config_process.php b/pandora_console/include/config_process.php
index 225c32d614..d9022d917c 100644
--- a/pandora_console/include/config_process.php
+++ b/pandora_console/include/config_process.php
@@ -20,7 +20,7 @@
 /**
  * Pandora build version and version
  */
-$build_version = 'PC240117';
+$build_version = 'PC240118';
 $pandora_version = 'v7.0NG.775';
 
 // Do not overwrite default timezone set if defined.
diff --git a/pandora_console/install.php b/pandora_console/install.php
index 900e2bef57..a085a8636a 100644
--- a/pandora_console/install.php
+++ b/pandora_console/install.php
@@ -131,7 +131,7 @@
         <div style='padding-bottom: 50px'>
             <?php
             $version = '7.0NG.775';
-            $build = '240117';
+            $build = '240118';
             $banner = "v$version Build $build";
             error_reporting(0);
 
diff --git a/pandora_console/pandora_console.redhat.spec b/pandora_console/pandora_console.redhat.spec
index c5f8dbeeda..8c989f488b 100644
--- a/pandora_console/pandora_console.redhat.spec
+++ b/pandora_console/pandora_console.redhat.spec
@@ -6,7 +6,7 @@
 %define debug_package %{nil}
 %define name        pandorafms_console
 %define version     7.0NG.775
-%define release     240117
+%define release     240118
 
 # User and Group under which Apache is running
 %define httpd_name  httpd
diff --git a/pandora_console/pandora_console.rhel7.spec b/pandora_console/pandora_console.rhel7.spec
index 5f5f50c73b..3fb2a1d420 100644
--- a/pandora_console/pandora_console.rhel7.spec
+++ b/pandora_console/pandora_console.rhel7.spec
@@ -6,7 +6,7 @@
 %define debug_package %{nil}
 %define name        pandorafms_console
 %define version     7.0NG.775
-%define release     240117
+%define release     240118
 
 # User and Group under which Apache is running
 %define httpd_name  httpd
diff --git a/pandora_console/pandora_console.spec b/pandora_console/pandora_console.spec
index 2ef1567d6c..87f868971d 100644
--- a/pandora_console/pandora_console.spec
+++ b/pandora_console/pandora_console.spec
@@ -3,7 +3,7 @@
 #
 %define name        pandorafms_console
 %define version     7.0NG.775
-%define release     240117
+%define release     240118
 %define httpd_name      httpd
 # User and Group under which Apache is running
 %define httpd_name  apache2
diff --git a/pandora_server/DEBIAN/control b/pandora_server/DEBIAN/control
index b9f9bdb9a7..dd3fcfa9ed 100644
--- a/pandora_server/DEBIAN/control
+++ b/pandora_server/DEBIAN/control
@@ -1,5 +1,5 @@
 package: pandorafms-server
-Version: 7.0NG.775-240117
+Version: 7.0NG.775-240118
 Architecture: all
 Priority: optional
 Section: admin
diff --git a/pandora_server/DEBIAN/make_deb_package.sh b/pandora_server/DEBIAN/make_deb_package.sh
index 2d84c1d127..ba528a83e1 100644
--- a/pandora_server/DEBIAN/make_deb_package.sh
+++ b/pandora_server/DEBIAN/make_deb_package.sh
@@ -14,7 +14,7 @@
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 # GNU General Public License for more details.
 
-pandora_version="7.0NG.775-240117"
+pandora_version="7.0NG.775-240118"
 
 package_cpan=0
 package_pandora=1
diff --git a/pandora_server/lib/PandoraFMS/Config.pm b/pandora_server/lib/PandoraFMS/Config.pm
index e518b9e038..1afb7d6544 100644
--- a/pandora_server/lib/PandoraFMS/Config.pm
+++ b/pandora_server/lib/PandoraFMS/Config.pm
@@ -46,7 +46,7 @@ our @EXPORT = qw(
 
 # version: Defines actual version of Pandora Server for this module only
 my $pandora_version = "7.0NG.775";
-my $pandora_build = "240117";
+my $pandora_build = "240118";
 our $VERSION = $pandora_version." ".$pandora_build;
 
 # Setup hash
diff --git a/pandora_server/lib/PandoraFMS/PluginTools.pm b/pandora_server/lib/PandoraFMS/PluginTools.pm
index 86e7c3cd58..af5feb583d 100644
--- a/pandora_server/lib/PandoraFMS/PluginTools.pm
+++ b/pandora_server/lib/PandoraFMS/PluginTools.pm
@@ -34,7 +34,7 @@ our @ISA = qw(Exporter);
 
 # version: Defines actual version of Pandora Server for this module only
 my $pandora_version = "7.0NG.775";
-my $pandora_build = "240117";
+my $pandora_build = "240118";
 our $VERSION = $pandora_version." ".$pandora_build;
 
 our %EXPORT_TAGS = ( 'all' => [ qw() ] );
diff --git a/pandora_server/pandora_server.redhat.spec b/pandora_server/pandora_server.redhat.spec
index 6461867d48..b41ea2d0a3 100644
--- a/pandora_server/pandora_server.redhat.spec
+++ b/pandora_server/pandora_server.redhat.spec
@@ -7,7 +7,7 @@
 %define debug_package %{nil}
 %define name        pandorafms_server
 %define version     7.0NG.775
-%define release     240117
+%define release     240118
 
 Summary:            Pandora FMS Server
 Name:               %{name}
diff --git a/pandora_server/pandora_server.spec b/pandora_server/pandora_server.spec
index c07fdbd3db..9a4ede27c7 100644
--- a/pandora_server/pandora_server.spec
+++ b/pandora_server/pandora_server.spec
@@ -4,7 +4,7 @@
 %global __os_install_post %{nil}
 %define name        pandorafms_server
 %define version     7.0NG.775
-%define release     240117
+%define release     240118
 
 Summary:            Pandora FMS Server
 Name:               %{name}
diff --git a/pandora_server/pandora_server_installer b/pandora_server/pandora_server_installer
index 50ba633f64..b3d52e02f6 100755
--- a/pandora_server/pandora_server_installer
+++ b/pandora_server/pandora_server_installer
@@ -9,7 +9,7 @@
 # **********************************************************************
 
 PI_VERSION="7.0NG.775"
-PI_BUILD="240117"
+PI_BUILD="240118"
 
 MODE=$1
 if [ $# -gt 1 ]; then
diff --git a/pandora_server/util/pandora_db.pl b/pandora_server/util/pandora_db.pl
index 0ffa9fb970..40cf3b54be 100755
--- a/pandora_server/util/pandora_db.pl
+++ b/pandora_server/util/pandora_db.pl
@@ -38,7 +38,7 @@ use PandoraFMS::Config;
 use PandoraFMS::DB;
 
 # version: define current version
-my $version = "7.0NG.775 Build 240117";
+my $version = "7.0NG.775 Build 240118";
 
 # Pandora server configuration
 my %conf;
diff --git a/pandora_server/util/pandora_manage.pl b/pandora_server/util/pandora_manage.pl
index 1a4bf702df..9f5877ca23 100755
--- a/pandora_server/util/pandora_manage.pl
+++ b/pandora_server/util/pandora_manage.pl
@@ -36,7 +36,7 @@ use Encode::Locale;
 Encode::Locale::decode_argv;
 
 # version: define current version
-my $version = "7.0NG.775 Build 240117";
+my $version = "7.0NG.775 Build 240118";
 
 # save program name for logging
 my $progname = basename($0);

From ae3c9bc2f52fbe496a5c2ebf98fe0904f49af7ed Mon Sep 17 00:00:00 2001
From: Daniel Maya <daniel.maya@pandorafms.com>
Date: Thu, 18 Jan 2024 10:28:57 +0100
Subject: [PATCH 139/231] #12754 Fixed status

---
 pandora_console/include/ajax/module.php       | 29 ++++++++++++++-----
 .../lib/Dashboard/Widgets/ModulesByStatus.php | 14 ++++++++-
 2 files changed, 34 insertions(+), 9 deletions(-)

diff --git a/pandora_console/include/ajax/module.php b/pandora_console/include/ajax/module.php
index bddf72a217..2a9580a000 100755
--- a/pandora_console/include/ajax/module.php
+++ b/pandora_console/include/ajax/module.php
@@ -1900,12 +1900,24 @@ if (check_login()) {
                 unset($expl[$exist]);
             }
 
-            array_push($expl, '1', '2');
+            array_push($expl, '1', '2', '3', '4', '5');
 
             $status = implode(',', $expl);
         }
 
-        if (empty($status) === false) {
+        if (str_contains($status, '5') === true) {
+            $expl = explode(',', $status);
+            $exist = array_search('5', $expl);
+            if (isset($exist) === true) {
+                unset($expl[$exist]);
+            }
+
+            array_push($expl, '4', '5');
+
+            $status = implode(',', $expl);
+        }
+
+        if (empty($status) === false || $status === '0') {
             $where .= sprintf(
                 ' AND tagente_estado.estado IN (%s)
                 AND tagente_modulo.delete_pending = 0',
@@ -2148,24 +2160,25 @@ if (check_login()) {
             );
 
             switch ((int) $row['estado']) {
-                case 0:
+                case AGENT_MODULE_STATUS_NORMAL:
                     $status_img = ui_print_status_image(STATUS_MODULE_OK, __('Normal'), true);
                 break;
 
-                case 1:
-                case 6:
+                case AGENT_MODULE_STATUS_CRITICAL_BAD:
+                case AGENT_MODULE_STATUS_NOT_NORMAL:
                     $status_img = ui_print_status_image(STATUS_MODULE_CRITICAL, __('Critical'), true);
                 break;
 
-                case 2:
+                case AGENT_MODULE_STATUS_WARNING:
                     $status_img = ui_print_status_image(STATUS_MODULE_WARNING, __('Warning'), true);
                 break;
 
-                case 3:
+                case AGENT_MODULE_STATUS_UNKNOWN:
                     $status_img = ui_print_status_image(STATUS_MODULE_UNKNOWN, __('Unknown'), true);
                 break;
 
-                case 5:
+                case AGENT_MODULE_STATUS_NO_DATA:
+                case AGENT_MODULE_STATUS_NOT_INIT:
                     $status_img = ui_print_status_image(STATUS_MODULE_NO_DATA, __('Not init'), true);
                 break;
 
diff --git a/pandora_console/include/lib/Dashboard/Widgets/ModulesByStatus.php b/pandora_console/include/lib/Dashboard/Widgets/ModulesByStatus.php
index e490135734..866c14494a 100644
--- a/pandora_console/include/lib/Dashboard/Widgets/ModulesByStatus.php
+++ b/pandora_console/include/lib/Dashboard/Widgets/ModulesByStatus.php
@@ -523,7 +523,19 @@ class ModulesByStatus extends Widget
                 unset($expl[$exist]);
             }
 
-            array_push($expl, '1', '2');
+            array_push($expl, '1', '2', '3', '4', '5');
+
+            $status = implode(',', $expl);
+        }
+
+        if (str_contains($status, '5') === true) {
+            $expl = explode(',', $status);
+            $exist = array_search('5', $expl);
+            if (isset($exist) === true) {
+                unset($expl[$exist]);
+            }
+
+            array_push($expl, '4', '5');
 
             $status = implode(',', $expl);
         }

From f3f3c4728bdf4e2fb69b1cd2dbeaadb622adab67 Mon Sep 17 00:00:00 2001
From: Calvo <luis.calvo@pandorafms.com>
Date: Thu, 18 Jan 2024 10:49:07 +0100
Subject: [PATCH 140/231] #11642. Fix missing sql in MR

---
 pandora_console/extras/mr/68.sql | 13 +++++++++++++
 1 file changed, 13 insertions(+)
 create mode 100644 pandora_console/extras/mr/68.sql

diff --git a/pandora_console/extras/mr/68.sql b/pandora_console/extras/mr/68.sql
new file mode 100644
index 0000000000..6ca548b1c9
--- /dev/null
+++ b/pandora_console/extras/mr/68.sql
@@ -0,0 +1,13 @@
+START TRANSACTION;
+
+ALTER TABLE `tevent_sound` MODIFY COLUMN `name` text NULL;
+ALTER TABLE `tevent_sound` MODIFY COLUMN `sound` text NULL;
+ALTER TABLE `treport_content` MODIFY COLUMN `use_prefix_notation` tinyint unsigned NOT NULL DEFAULT 1;
+ALTER TABLE `treport_content_template` MODIFY COLUMN `use_prefix_notation` tinyint unsigned NOT NULL DEFAULT 1;
+ALTER TABLE `tsesion_filter` MODIFY COLUMN `id_name` text NULL;
+ALTER TABLE `tsesion_filter` MODIFY COLUMN `period` text NULL;
+ALTER TABLE `tsesion_filter` MODIFY COLUMN `ip` text NULL;
+ALTER TABLE `tsesion_filter` MODIFY COLUMN `type` text NULL;
+ALTER TABLE `tsesion_filter` MODIFY COLUMN `user` text NULL;
+
+COMMIT;

From 4ce970eab1d69cf342d189e28f4069923b13faf1 Mon Sep 17 00:00:00 2001
From: Jonathan <jonathan.leon@pandorafms.com>
Date: Thu, 18 Jan 2024 11:26:38 +0100
Subject: [PATCH 141/231] #12539 fix dialog

---
 pandora_console/include/styles/pandora.css          | 4 ++++
 pandora_console/operation/agentes/alerts_status.php | 4 ++--
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/pandora_console/include/styles/pandora.css b/pandora_console/include/styles/pandora.css
index 94d337bdbe..13301116dd 100644
--- a/pandora_console/include/styles/pandora.css
+++ b/pandora_console/include/styles/pandora.css
@@ -979,6 +979,10 @@ select:-internal-list-box {
   display: flex;
 }
 
+.flex_important {
+  display: flex !important;
+}
+
 .flex-row-important {
   display: flex !important;
   flex-direction: row !important;
diff --git a/pandora_console/operation/agentes/alerts_status.php b/pandora_console/operation/agentes/alerts_status.php
index 36cf0d8404..a4f7c7d81c 100755
--- a/pandora_console/operation/agentes/alerts_status.php
+++ b/pandora_console/operation/agentes/alerts_status.php
@@ -548,7 +548,7 @@ if (is_array($modules_agent)) {
     }
 }
 
-echo '<div id="system_higher" class="invisible agent_details_agent_data"><img src="images/alert-yellow@svg.svg" width="10%" class="mrgn_right_20px">'.__('Your system has a much higher rate of modules per agent than recommended (200 modules per agent). This implies performance problems in the system, please consider reducing the number of modules in this agent.').'</div>';
+echo '<div id="system_higher" class="invisible_important agent_details_agent_data flex_important"><img src="images/alert-yellow@svg.svg" width="10%" class="mrgn_right_20px">'.__('Your system has a much higher rate of modules per agent than recommended (200 modules per agent). This implies performance problems in the system, please consider reducing the number of modules in this agent.').'</div>';
 
 ?>
 
@@ -644,7 +644,7 @@ $('table.alert-status-filter #ag_group').change (function () {
         closeOnEscape: false,
         open: function(event, ui) {
             $(".ui-dialog-titlebar-close").hide();
-            $("#system_higher").removeClass('invisible');
+            $("#system_higher").removeClass('invisible_important');
             setTimeout(() => {
                 $(".ui-dialog-buttonset").find('button').removeClass('invisible_important');
             }, 4000);

From f34b9c2a7e6d67b529a5a8ca0460120bd41b6292 Mon Sep 17 00:00:00 2001
From: alejandro <alejandro.sanchez@pandorafms.com>
Date: Thu, 18 Jan 2024 14:01:15 +0100
Subject: [PATCH 142/231] mr changes

---
 pandora_console/extras/mr/68.sql   | 7 +++++++
 pandora_console/pandoradb_data.sql | 2 +-
 2 files changed, 8 insertions(+), 1 deletion(-)
 create mode 100644 pandora_console/extras/mr/68.sql

diff --git a/pandora_console/extras/mr/68.sql b/pandora_console/extras/mr/68.sql
new file mode 100644
index 0000000000..cbd84a03cb
--- /dev/null
+++ b/pandora_console/extras/mr/68.sql
@@ -0,0 +1,7 @@
+START TRANSACTION;
+
+-- Update version for plugin oracle
+UPDATE `tdiscovery_apps` SET `version` = '1.2' WHERE `short_name` = 'pandorafms.oracle';
+
+COMMIT;
+
diff --git a/pandora_console/pandoradb_data.sql b/pandora_console/pandoradb_data.sql
index 19e3c16aa9..8fc17246d5 100644
--- a/pandora_console/pandoradb_data.sql
+++ b/pandora_console/pandoradb_data.sql
@@ -2913,7 +2913,7 @@ SET @short_name = 'pandorafms.oracle';
 SET @name = 'Oracle';
 SET @section = 'app';
 SET @description = 'Monitor&#x20;Oracle&#x20;databases';
-SET @version = '1.1';
+SET @version = '1.2';
 INSERT IGNORE INTO `tdiscovery_apps` (`id_app`, `short_name`, `name`, `section`, `description`, `version`) VALUES ('', @short_name, @name, @section, @description, @version);
 SELECT @id_app := `id_app` FROM `tdiscovery_apps` WHERE `short_name` = @short_name;
 

From 3839de6f6d2f53d4276bd5166c1215b87cb32218 Mon Sep 17 00:00:00 2001
From: alejandro <alejandro.sanchez@pandorafms.com>
Date: Thu, 18 Jan 2024 14:18:09 +0100
Subject: [PATCH 143/231] update hash oracle in migratecodes.ini

---
 .../extras/discovery/DiscoveryApplicationsMigrateCodes.ini    | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/pandora_console/extras/discovery/DiscoveryApplicationsMigrateCodes.ini b/pandora_console/extras/discovery/DiscoveryApplicationsMigrateCodes.ini
index c0cee7d03f..d05611a6b5 100644
--- a/pandora_console/extras/discovery/DiscoveryApplicationsMigrateCodes.ini
+++ b/pandora_console/extras/discovery/DiscoveryApplicationsMigrateCodes.ini
@@ -1,11 +1,11 @@
 pandorafms.vmware=248788e0fb2cd4e11623e4a52ee7d05b
 pandorafms.mysql=fadb4750d18285c0eca34f47c6aa3cfe
 pandorafms.mssql=1cc215409741d19080269ffba112810e
-pandorafms.oracle=2d9320a514d1e48a0b2804e1653c31c6
+pandorafms.oracle=abdfd7280f76276f696115cabdac731e
 pandorafms.db2=122f2abff0ec1d668c35ee0911483021
 pandorafms.sap.deset=9bb72b7f7497a8b543f25cd71f96878f
 pandorafms.gcp.ce=6743d39452f8e1ad85d0d56a30843973
 pandorafms.aws.ec2=07416081f11d92a7d5d9441dabb5c5cb
 pandorafms.aws.s3=eff053a212ea112e2a37efd9debbe6a0
 pandorafms.aws.rds=47d7b02019329e1698f96db4959f9516
-pandorafms.azure.mc=04a1072d1ece8583645ad88204fbeed3
\ No newline at end of file
+pandorafms.azure.mc=04a1072d1ece8583645ad88204fbeed3

From 01049303d998530a03dc71ce8ec2150648541053 Mon Sep 17 00:00:00 2001
From: Jonathan <jonathan.leon@pandorafms.com>
Date: Thu, 18 Jan 2024 16:22:44 +0100
Subject: [PATCH 144/231] #12202 remove loadModal not defined function

---
 pandora_console/include/javascript/pandora_events.js | 1 -
 1 file changed, 1 deletion(-)

diff --git a/pandora_console/include/javascript/pandora_events.js b/pandora_console/include/javascript/pandora_events.js
index bd6f255a85..936c4a0cfb 100644
--- a/pandora_console/include/javascript/pandora_events.js
+++ b/pandora_console/include/javascript/pandora_events.js
@@ -1783,7 +1783,6 @@ function openEvents(severity) {
   $('input[name="filter[severity]"]').val(severity);
   $("#event_redirect").submit();
 }
-window.onload = loadModal;
 
 // Load Asteroids game.
 $(window).on("load", function() {

From 2400c110b11b70c403174a4bf5c1ebbfd05f5148 Mon Sep 17 00:00:00 2001
From: artica <artica.devel@gmail.com>
Date: Fri, 19 Jan 2024 01:01:35 +0100
Subject: [PATCH 145/231] Auto-updated build strings.

---
 pandora_agents/unix/DEBIAN/control                    | 2 +-
 pandora_agents/unix/DEBIAN/make_deb_package.sh        | 2 +-
 pandora_agents/unix/pandora_agent                     | 2 +-
 pandora_agents/unix/pandora_agent.redhat.spec         | 2 +-
 pandora_agents/unix/pandora_agent.redhat_bin.el8.spec | 2 +-
 pandora_agents/unix/pandora_agent.redhat_bin.el9.spec | 2 +-
 pandora_agents/unix/pandora_agent.redhat_bin.spec     | 2 +-
 pandora_agents/unix/pandora_agent.spec                | 2 +-
 pandora_agents/unix/pandora_agent_installer           | 2 +-
 pandora_agents/win32/installer/pandora.mpi            | 2 +-
 pandora_agents/win32/pandora.cc                       | 2 +-
 pandora_agents/win32/versioninfo.rc                   | 2 +-
 pandora_console/DEBIAN/control                        | 2 +-
 pandora_console/DEBIAN/make_deb_package.sh            | 2 +-
 pandora_console/include/config_process.php            | 2 +-
 pandora_console/install.php                           | 4 ++--
 pandora_console/pandora_console.redhat.spec           | 2 +-
 pandora_console/pandora_console.rhel7.spec            | 2 +-
 pandora_console/pandora_console.spec                  | 2 +-
 pandora_server/DEBIAN/control                         | 2 +-
 pandora_server/DEBIAN/make_deb_package.sh             | 2 +-
 pandora_server/lib/PandoraFMS/Config.pm               | 2 +-
 pandora_server/lib/PandoraFMS/PluginTools.pm          | 2 +-
 pandora_server/pandora_server.redhat.spec             | 2 +-
 pandora_server/pandora_server.spec                    | 2 +-
 pandora_server/pandora_server_installer               | 2 +-
 pandora_server/util/pandora_db.pl                     | 2 +-
 pandora_server/util/pandora_manage.pl                 | 2 +-
 28 files changed, 29 insertions(+), 29 deletions(-)

diff --git a/pandora_agents/unix/DEBIAN/control b/pandora_agents/unix/DEBIAN/control
index 79e7ac2d75..29054e9598 100644
--- a/pandora_agents/unix/DEBIAN/control
+++ b/pandora_agents/unix/DEBIAN/control
@@ -1,5 +1,5 @@
 package: pandorafms-agent-unix
-Version: 7.0NG.775-240118
+Version: 7.0NG.775-240119
 Architecture: all
 Priority: optional
 Section: admin
diff --git a/pandora_agents/unix/DEBIAN/make_deb_package.sh b/pandora_agents/unix/DEBIAN/make_deb_package.sh
index c1029f651b..5c84c36bc8 100644
--- a/pandora_agents/unix/DEBIAN/make_deb_package.sh
+++ b/pandora_agents/unix/DEBIAN/make_deb_package.sh
@@ -14,7 +14,7 @@
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 # GNU General Public License for more details.
 
-pandora_version="7.0NG.775-240118"
+pandora_version="7.0NG.775-240119"
 
 echo "Test if you has the tools for to make the packages."
 whereis dpkg-deb | cut -d":" -f2 | grep dpkg-deb > /dev/null
diff --git a/pandora_agents/unix/pandora_agent b/pandora_agents/unix/pandora_agent
index c4b788fe46..e14d1810ae 100755
--- a/pandora_agents/unix/pandora_agent
+++ b/pandora_agents/unix/pandora_agent
@@ -1039,7 +1039,7 @@ my $Sem = undef;
 my $ThreadSem = undef;
 
 use constant AGENT_VERSION => '7.0NG.775';
-use constant AGENT_BUILD => '240118';
+use constant AGENT_BUILD => '240119';
 
 # Agent log default file size maximum and instances
 use constant DEFAULT_MAX_LOG_SIZE => 600000;
diff --git a/pandora_agents/unix/pandora_agent.redhat.spec b/pandora_agents/unix/pandora_agent.redhat.spec
index 03bec971e3..1876217583 100644
--- a/pandora_agents/unix/pandora_agent.redhat.spec
+++ b/pandora_agents/unix/pandora_agent.redhat.spec
@@ -4,7 +4,7 @@
 %global __os_install_post %{nil}
 %define name        pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240118
+%define release     240119
 
 Summary:            Pandora FMS Linux agent, PERL version
 Name:               %{name}
diff --git a/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec b/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec
index bfcb50e59f..cf03ff4fc1 100644
--- a/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec
+++ b/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec
@@ -5,7 +5,7 @@
 %define name        pandorafms_agent_linux_bin
 %define source_name pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240118
+%define release     240119
 %define debug_package %{nil}
 
 Summary:            Pandora FMS Linux agent, binary version
diff --git a/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec b/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec
index 1cf8be22e9..02ccbcb2f2 100644
--- a/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec
+++ b/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec
@@ -5,7 +5,7 @@
 %define name        pandorafms_agent_linux_bin
 %define source_name pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240118
+%define release     240119
 %define debug_package %{nil}
 
 Summary:            Pandora FMS Linux agent, binary version
diff --git a/pandora_agents/unix/pandora_agent.redhat_bin.spec b/pandora_agents/unix/pandora_agent.redhat_bin.spec
index f16c07fc1e..0ec826977e 100644
--- a/pandora_agents/unix/pandora_agent.redhat_bin.spec
+++ b/pandora_agents/unix/pandora_agent.redhat_bin.spec
@@ -5,7 +5,7 @@
 %define name        pandorafms_agent_linux_bin
 %define source_name pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240118
+%define release     240119
 
 Summary:            Pandora FMS Linux agent, binary version
 Name:               %{name}
diff --git a/pandora_agents/unix/pandora_agent.spec b/pandora_agents/unix/pandora_agent.spec
index f6d4e075f5..e71e28d915 100644
--- a/pandora_agents/unix/pandora_agent.spec
+++ b/pandora_agents/unix/pandora_agent.spec
@@ -4,7 +4,7 @@
 %global __os_install_post %{nil}
 %define name        pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240118
+%define release     240119
 
 Summary:            Pandora FMS Linux agent, PERL version
 Name:               %{name}
diff --git a/pandora_agents/unix/pandora_agent_installer b/pandora_agents/unix/pandora_agent_installer
index e91df83438..fa69febd2f 100755
--- a/pandora_agents/unix/pandora_agent_installer
+++ b/pandora_agents/unix/pandora_agent_installer
@@ -10,7 +10,7 @@
 # **********************************************************************
 
 PI_VERSION="7.0NG.775"
-PI_BUILD="240118"
+PI_BUILD="240119"
 OS_NAME=`uname -s`
 
 FORCE=0
diff --git a/pandora_agents/win32/installer/pandora.mpi b/pandora_agents/win32/installer/pandora.mpi
index a278d97f8d..b7e5685ffd 100644
--- a/pandora_agents/win32/installer/pandora.mpi
+++ b/pandora_agents/win32/installer/pandora.mpi
@@ -186,7 +186,7 @@ UpgradeApplicationID
 {}
 
 Version
-{240118}
+{240119}
 
 ViewReadme
 {Yes}
diff --git a/pandora_agents/win32/pandora.cc b/pandora_agents/win32/pandora.cc
index 34a6dd3be8..ad5dd5bc83 100644
--- a/pandora_agents/win32/pandora.cc
+++ b/pandora_agents/win32/pandora.cc
@@ -30,7 +30,7 @@ using namespace Pandora;
 using namespace Pandora_Strutils;
 
 #define PATH_SIZE    _MAX_PATH+1
-#define PANDORA_VERSION ("7.0NG.775 Build 240118")
+#define PANDORA_VERSION ("7.0NG.775 Build 240119")
 
 string pandora_path;
 string pandora_dir;
diff --git a/pandora_agents/win32/versioninfo.rc b/pandora_agents/win32/versioninfo.rc
index 7763dcb321..11e08a1b22 100644
--- a/pandora_agents/win32/versioninfo.rc
+++ b/pandora_agents/win32/versioninfo.rc
@@ -11,7 +11,7 @@ BEGIN
       VALUE "LegalCopyright", "Pandora FMS"
       VALUE "OriginalFilename", "PandoraAgent.exe"
       VALUE "ProductName", "Pandora FMS Windows Agent"
-      VALUE "ProductVersion", "(7.0NG.775(Build 240118))"
+      VALUE "ProductVersion", "(7.0NG.775(Build 240119))"
       VALUE "FileVersion", "1.0.0.0"
     END
   END
diff --git a/pandora_console/DEBIAN/control b/pandora_console/DEBIAN/control
index bd76e0003c..c91dd82f91 100644
--- a/pandora_console/DEBIAN/control
+++ b/pandora_console/DEBIAN/control
@@ -1,5 +1,5 @@
 package: pandorafms-console
-Version: 7.0NG.775-240118
+Version: 7.0NG.775-240119
 Architecture: all
 Priority: optional
 Section: admin
diff --git a/pandora_console/DEBIAN/make_deb_package.sh b/pandora_console/DEBIAN/make_deb_package.sh
index 81f525de04..509defd0a7 100644
--- a/pandora_console/DEBIAN/make_deb_package.sh
+++ b/pandora_console/DEBIAN/make_deb_package.sh
@@ -14,7 +14,7 @@
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 # GNU General Public License for more details.
 
-pandora_version="7.0NG.775-240118"
+pandora_version="7.0NG.775-240119"
 
 package_pear=0
 package_pandora=1
diff --git a/pandora_console/include/config_process.php b/pandora_console/include/config_process.php
index d9022d917c..32c20bf48c 100644
--- a/pandora_console/include/config_process.php
+++ b/pandora_console/include/config_process.php
@@ -20,7 +20,7 @@
 /**
  * Pandora build version and version
  */
-$build_version = 'PC240118';
+$build_version = 'PC240119';
 $pandora_version = 'v7.0NG.775';
 
 // Do not overwrite default timezone set if defined.
diff --git a/pandora_console/install.php b/pandora_console/install.php
index 91de00f8a8..0dc5fe233f 100644
--- a/pandora_console/install.php
+++ b/pandora_console/install.php
@@ -130,8 +130,8 @@
         </div>
         <div style='padding-bottom: 50px'>
             <?php
-            $version = '7.0NG.774';
-            $build = '231213';
+            $version = '7.0NG.775';
+            $build = '240119';
             $banner = "v$version Build $build";
             error_reporting(0);
 
diff --git a/pandora_console/pandora_console.redhat.spec b/pandora_console/pandora_console.redhat.spec
index 8c989f488b..10d8ffa8ff 100644
--- a/pandora_console/pandora_console.redhat.spec
+++ b/pandora_console/pandora_console.redhat.spec
@@ -6,7 +6,7 @@
 %define debug_package %{nil}
 %define name        pandorafms_console
 %define version     7.0NG.775
-%define release     240118
+%define release     240119
 
 # User and Group under which Apache is running
 %define httpd_name  httpd
diff --git a/pandora_console/pandora_console.rhel7.spec b/pandora_console/pandora_console.rhel7.spec
index 3fb2a1d420..3ddd0ab7d7 100644
--- a/pandora_console/pandora_console.rhel7.spec
+++ b/pandora_console/pandora_console.rhel7.spec
@@ -6,7 +6,7 @@
 %define debug_package %{nil}
 %define name        pandorafms_console
 %define version     7.0NG.775
-%define release     240118
+%define release     240119
 
 # User and Group under which Apache is running
 %define httpd_name  httpd
diff --git a/pandora_console/pandora_console.spec b/pandora_console/pandora_console.spec
index 87f868971d..cf12b9032e 100644
--- a/pandora_console/pandora_console.spec
+++ b/pandora_console/pandora_console.spec
@@ -3,7 +3,7 @@
 #
 %define name        pandorafms_console
 %define version     7.0NG.775
-%define release     240118
+%define release     240119
 %define httpd_name      httpd
 # User and Group under which Apache is running
 %define httpd_name  apache2
diff --git a/pandora_server/DEBIAN/control b/pandora_server/DEBIAN/control
index dd3fcfa9ed..02299d83a4 100644
--- a/pandora_server/DEBIAN/control
+++ b/pandora_server/DEBIAN/control
@@ -1,5 +1,5 @@
 package: pandorafms-server
-Version: 7.0NG.775-240118
+Version: 7.0NG.775-240119
 Architecture: all
 Priority: optional
 Section: admin
diff --git a/pandora_server/DEBIAN/make_deb_package.sh b/pandora_server/DEBIAN/make_deb_package.sh
index ba528a83e1..0238427ed3 100644
--- a/pandora_server/DEBIAN/make_deb_package.sh
+++ b/pandora_server/DEBIAN/make_deb_package.sh
@@ -14,7 +14,7 @@
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 # GNU General Public License for more details.
 
-pandora_version="7.0NG.775-240118"
+pandora_version="7.0NG.775-240119"
 
 package_cpan=0
 package_pandora=1
diff --git a/pandora_server/lib/PandoraFMS/Config.pm b/pandora_server/lib/PandoraFMS/Config.pm
index 1afb7d6544..8363918d50 100644
--- a/pandora_server/lib/PandoraFMS/Config.pm
+++ b/pandora_server/lib/PandoraFMS/Config.pm
@@ -46,7 +46,7 @@ our @EXPORT = qw(
 
 # version: Defines actual version of Pandora Server for this module only
 my $pandora_version = "7.0NG.775";
-my $pandora_build = "240118";
+my $pandora_build = "240119";
 our $VERSION = $pandora_version." ".$pandora_build;
 
 # Setup hash
diff --git a/pandora_server/lib/PandoraFMS/PluginTools.pm b/pandora_server/lib/PandoraFMS/PluginTools.pm
index af5feb583d..1c17df468e 100644
--- a/pandora_server/lib/PandoraFMS/PluginTools.pm
+++ b/pandora_server/lib/PandoraFMS/PluginTools.pm
@@ -34,7 +34,7 @@ our @ISA = qw(Exporter);
 
 # version: Defines actual version of Pandora Server for this module only
 my $pandora_version = "7.0NG.775";
-my $pandora_build = "240118";
+my $pandora_build = "240119";
 our $VERSION = $pandora_version." ".$pandora_build;
 
 our %EXPORT_TAGS = ( 'all' => [ qw() ] );
diff --git a/pandora_server/pandora_server.redhat.spec b/pandora_server/pandora_server.redhat.spec
index b41ea2d0a3..aaa11cd9d1 100644
--- a/pandora_server/pandora_server.redhat.spec
+++ b/pandora_server/pandora_server.redhat.spec
@@ -7,7 +7,7 @@
 %define debug_package %{nil}
 %define name        pandorafms_server
 %define version     7.0NG.775
-%define release     240118
+%define release     240119
 
 Summary:            Pandora FMS Server
 Name:               %{name}
diff --git a/pandora_server/pandora_server.spec b/pandora_server/pandora_server.spec
index 9a4ede27c7..cc280a9d3c 100644
--- a/pandora_server/pandora_server.spec
+++ b/pandora_server/pandora_server.spec
@@ -4,7 +4,7 @@
 %global __os_install_post %{nil}
 %define name        pandorafms_server
 %define version     7.0NG.775
-%define release     240118
+%define release     240119
 
 Summary:            Pandora FMS Server
 Name:               %{name}
diff --git a/pandora_server/pandora_server_installer b/pandora_server/pandora_server_installer
index b3d52e02f6..dcb9bf7a41 100755
--- a/pandora_server/pandora_server_installer
+++ b/pandora_server/pandora_server_installer
@@ -9,7 +9,7 @@
 # **********************************************************************
 
 PI_VERSION="7.0NG.775"
-PI_BUILD="240118"
+PI_BUILD="240119"
 
 MODE=$1
 if [ $# -gt 1 ]; then
diff --git a/pandora_server/util/pandora_db.pl b/pandora_server/util/pandora_db.pl
index 40cf3b54be..662d00deac 100755
--- a/pandora_server/util/pandora_db.pl
+++ b/pandora_server/util/pandora_db.pl
@@ -38,7 +38,7 @@ use PandoraFMS::Config;
 use PandoraFMS::DB;
 
 # version: define current version
-my $version = "7.0NG.775 Build 240118";
+my $version = "7.0NG.775 Build 240119";
 
 # Pandora server configuration
 my %conf;
diff --git a/pandora_server/util/pandora_manage.pl b/pandora_server/util/pandora_manage.pl
index 9f5877ca23..93f1070cc2 100755
--- a/pandora_server/util/pandora_manage.pl
+++ b/pandora_server/util/pandora_manage.pl
@@ -36,7 +36,7 @@ use Encode::Locale;
 Encode::Locale::decode_argv;
 
 # version: define current version
-my $version = "7.0NG.775 Build 240118";
+my $version = "7.0NG.775 Build 240119";
 
 # save program name for logging
 my $progname = basename($0);

From ae9b786dd5552a26efc6c4fd754fd74c847acdd0 Mon Sep 17 00:00:00 2001
From: Daniel Cebrian <daniel.cebrian@pandorafms.com>
Date: Fri, 19 Jan 2024 09:21:57 +0100
Subject: [PATCH 146/231] #12752 fixed sql injection

---
 pandora_console/extensions/grafana/index.php | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/pandora_console/extensions/grafana/index.php b/pandora_console/extensions/grafana/index.php
index e925e56233..b9686ff3bd 100644
--- a/pandora_console/extensions/grafana/index.php
+++ b/pandora_console/extensions/grafana/index.php
@@ -23,7 +23,10 @@ if ($headers['X-DS-Authorization']) {
 
         list($user, $password) = explode(':', base64_decode($headers['X-DS-Authorization']));
 
-        // Check user login
+        // Prevent sql injection.
+        $user = mysqli_real_escape_string($config['dbconnection'], $user);
+
+        // Check user login.
         $user_in_db = process_user_login($user, $password, true);
 
     if ($user_in_db !== false) {

From a41d2214e6343e6d44081e35213b724356be689e Mon Sep 17 00:00:00 2001
From: Daniel Maya <daniel.maya@pandorafms.com>
Date: Fri, 19 Jan 2024 09:33:53 +0100
Subject: [PATCH 147/231] #12767 Fixed password 2

---
 pandora_console/include/styles/pandora.css | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/pandora_console/include/styles/pandora.css b/pandora_console/include/styles/pandora.css
index 7c188058f3..526a6b73f8 100644
--- a/pandora_console/include/styles/pandora.css
+++ b/pandora_console/include/styles/pandora.css
@@ -11843,7 +11843,7 @@ p.trademark-copyright {
 }
 
 .show-hide-pass {
-  position: fixed;
+  position: absolute;
   border: 0;
   outline: none;
   margin-left: -50px;
@@ -12077,7 +12077,7 @@ div.relative > div > div#ui-datepicker-div {
 }
 
 .container-div-input-password {
-  display: inline !important;
+  display: block !important;
 }
 
 #message_dialog_connection {

From d36ec9a8c059f230108380862b6b40f8e4980ae7 Mon Sep 17 00:00:00 2001
From: Jonathan <jonathan.leon@pandorafms.com>
Date: Fri, 19 Jan 2024 10:18:38 +0100
Subject: [PATCH 148/231] #12693 add filter id_agente

---
 pandora_console/godmode/agentes/inventory_manager.php | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/pandora_console/godmode/agentes/inventory_manager.php b/pandora_console/godmode/agentes/inventory_manager.php
index 3f27c3a6b3..d989b7d560 100644
--- a/pandora_console/godmode/agentes/inventory_manager.php
+++ b/pandora_console/godmode/agentes/inventory_manager.php
@@ -131,9 +131,13 @@ if ($add_inventory_module) {
     }
 }
 
-// Load inventory module data for updating
+// Load inventory module data for updating.
 if ($load_inventory_module) {
-    $sql = 'SELECT * FROM tagent_module_inventory WHERE id_module_inventory = '.$load_inventory_module;
+    $sql = sprintf(
+        'SELECT * FROM tagent_module_inventory WHERE id_module_inventory = %s AND id_agente = %d',
+        $load_inventory_module,
+        $id_agente
+    );
     $row = db_get_row_sql($sql);
 
     if (!empty($row)) {

From 5ece13fc9f6498537c624f5da33cfe937356c183 Mon Sep 17 00:00:00 2001
From: Daniel Cebrian <daniel.cebrian@pandorafms.com>
Date: Fri, 19 Jan 2024 14:05:20 +0100
Subject: [PATCH 149/231] #11086 fixed acl in extensions view

---
 pandora_console/godmode/extensions.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pandora_console/godmode/extensions.php b/pandora_console/godmode/extensions.php
index 5ec67b09a7..3ff09273c6 100644
--- a/pandora_console/godmode/extensions.php
+++ b/pandora_console/godmode/extensions.php
@@ -15,7 +15,7 @@ check_login();
 
 global $config;
 
-if (! check_acl($config['id_user'], 0, 'PM')) {
+if (users_is_admin($config['id_user']) === false) {
     db_pandora_audit(
         AUDIT_LOG_ACL_VIOLATION,
         'Trying to access extensions list'

From f67c9185f85cca7ad35255cfff6dbe78347926f9 Mon Sep 17 00:00:00 2001
From: artica <artica.devel@gmail.com>
Date: Sat, 20 Jan 2024 01:00:29 +0100
Subject: [PATCH 150/231] Auto-updated build strings.

---
 pandora_agents/unix/DEBIAN/control                    | 2 +-
 pandora_agents/unix/DEBIAN/make_deb_package.sh        | 2 +-
 pandora_agents/unix/pandora_agent                     | 2 +-
 pandora_agents/unix/pandora_agent.redhat.spec         | 2 +-
 pandora_agents/unix/pandora_agent.redhat_bin.el8.spec | 2 +-
 pandora_agents/unix/pandora_agent.redhat_bin.el9.spec | 2 +-
 pandora_agents/unix/pandora_agent.redhat_bin.spec     | 2 +-
 pandora_agents/unix/pandora_agent.spec                | 2 +-
 pandora_agents/unix/pandora_agent_installer           | 2 +-
 pandora_agents/win32/installer/pandora.mpi            | 2 +-
 pandora_agents/win32/pandora.cc                       | 2 +-
 pandora_agents/win32/versioninfo.rc                   | 2 +-
 pandora_console/DEBIAN/control                        | 2 +-
 pandora_console/DEBIAN/make_deb_package.sh            | 2 +-
 pandora_console/include/config_process.php            | 2 +-
 pandora_console/install.php                           | 2 +-
 pandora_console/pandora_console.redhat.spec           | 2 +-
 pandora_console/pandora_console.rhel7.spec            | 2 +-
 pandora_console/pandora_console.spec                  | 2 +-
 pandora_server/DEBIAN/control                         | 2 +-
 pandora_server/DEBIAN/make_deb_package.sh             | 2 +-
 pandora_server/lib/PandoraFMS/Config.pm               | 2 +-
 pandora_server/lib/PandoraFMS/PluginTools.pm          | 2 +-
 pandora_server/pandora_server.redhat.spec             | 2 +-
 pandora_server/pandora_server.spec                    | 2 +-
 pandora_server/pandora_server_installer               | 2 +-
 pandora_server/util/pandora_db.pl                     | 2 +-
 pandora_server/util/pandora_manage.pl                 | 2 +-
 28 files changed, 28 insertions(+), 28 deletions(-)

diff --git a/pandora_agents/unix/DEBIAN/control b/pandora_agents/unix/DEBIAN/control
index 29054e9598..f74f69aefc 100644
--- a/pandora_agents/unix/DEBIAN/control
+++ b/pandora_agents/unix/DEBIAN/control
@@ -1,5 +1,5 @@
 package: pandorafms-agent-unix
-Version: 7.0NG.775-240119
+Version: 7.0NG.775-240120
 Architecture: all
 Priority: optional
 Section: admin
diff --git a/pandora_agents/unix/DEBIAN/make_deb_package.sh b/pandora_agents/unix/DEBIAN/make_deb_package.sh
index 5c84c36bc8..fcd7dc31ce 100644
--- a/pandora_agents/unix/DEBIAN/make_deb_package.sh
+++ b/pandora_agents/unix/DEBIAN/make_deb_package.sh
@@ -14,7 +14,7 @@
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 # GNU General Public License for more details.
 
-pandora_version="7.0NG.775-240119"
+pandora_version="7.0NG.775-240120"
 
 echo "Test if you has the tools for to make the packages."
 whereis dpkg-deb | cut -d":" -f2 | grep dpkg-deb > /dev/null
diff --git a/pandora_agents/unix/pandora_agent b/pandora_agents/unix/pandora_agent
index e14d1810ae..ec7e9e8549 100755
--- a/pandora_agents/unix/pandora_agent
+++ b/pandora_agents/unix/pandora_agent
@@ -1039,7 +1039,7 @@ my $Sem = undef;
 my $ThreadSem = undef;
 
 use constant AGENT_VERSION => '7.0NG.775';
-use constant AGENT_BUILD => '240119';
+use constant AGENT_BUILD => '240120';
 
 # Agent log default file size maximum and instances
 use constant DEFAULT_MAX_LOG_SIZE => 600000;
diff --git a/pandora_agents/unix/pandora_agent.redhat.spec b/pandora_agents/unix/pandora_agent.redhat.spec
index 1876217583..279a77050c 100644
--- a/pandora_agents/unix/pandora_agent.redhat.spec
+++ b/pandora_agents/unix/pandora_agent.redhat.spec
@@ -4,7 +4,7 @@
 %global __os_install_post %{nil}
 %define name        pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240119
+%define release     240120
 
 Summary:            Pandora FMS Linux agent, PERL version
 Name:               %{name}
diff --git a/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec b/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec
index cf03ff4fc1..b17787c24c 100644
--- a/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec
+++ b/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec
@@ -5,7 +5,7 @@
 %define name        pandorafms_agent_linux_bin
 %define source_name pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240119
+%define release     240120
 %define debug_package %{nil}
 
 Summary:            Pandora FMS Linux agent, binary version
diff --git a/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec b/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec
index 02ccbcb2f2..39178ce6e6 100644
--- a/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec
+++ b/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec
@@ -5,7 +5,7 @@
 %define name        pandorafms_agent_linux_bin
 %define source_name pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240119
+%define release     240120
 %define debug_package %{nil}
 
 Summary:            Pandora FMS Linux agent, binary version
diff --git a/pandora_agents/unix/pandora_agent.redhat_bin.spec b/pandora_agents/unix/pandora_agent.redhat_bin.spec
index 0ec826977e..d592bcee1c 100644
--- a/pandora_agents/unix/pandora_agent.redhat_bin.spec
+++ b/pandora_agents/unix/pandora_agent.redhat_bin.spec
@@ -5,7 +5,7 @@
 %define name        pandorafms_agent_linux_bin
 %define source_name pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240119
+%define release     240120
 
 Summary:            Pandora FMS Linux agent, binary version
 Name:               %{name}
diff --git a/pandora_agents/unix/pandora_agent.spec b/pandora_agents/unix/pandora_agent.spec
index e71e28d915..2a27478197 100644
--- a/pandora_agents/unix/pandora_agent.spec
+++ b/pandora_agents/unix/pandora_agent.spec
@@ -4,7 +4,7 @@
 %global __os_install_post %{nil}
 %define name        pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240119
+%define release     240120
 
 Summary:            Pandora FMS Linux agent, PERL version
 Name:               %{name}
diff --git a/pandora_agents/unix/pandora_agent_installer b/pandora_agents/unix/pandora_agent_installer
index fa69febd2f..711f6bd311 100755
--- a/pandora_agents/unix/pandora_agent_installer
+++ b/pandora_agents/unix/pandora_agent_installer
@@ -10,7 +10,7 @@
 # **********************************************************************
 
 PI_VERSION="7.0NG.775"
-PI_BUILD="240119"
+PI_BUILD="240120"
 OS_NAME=`uname -s`
 
 FORCE=0
diff --git a/pandora_agents/win32/installer/pandora.mpi b/pandora_agents/win32/installer/pandora.mpi
index b7e5685ffd..790042c937 100644
--- a/pandora_agents/win32/installer/pandora.mpi
+++ b/pandora_agents/win32/installer/pandora.mpi
@@ -186,7 +186,7 @@ UpgradeApplicationID
 {}
 
 Version
-{240119}
+{240120}
 
 ViewReadme
 {Yes}
diff --git a/pandora_agents/win32/pandora.cc b/pandora_agents/win32/pandora.cc
index ad5dd5bc83..ef7ee2a347 100644
--- a/pandora_agents/win32/pandora.cc
+++ b/pandora_agents/win32/pandora.cc
@@ -30,7 +30,7 @@ using namespace Pandora;
 using namespace Pandora_Strutils;
 
 #define PATH_SIZE    _MAX_PATH+1
-#define PANDORA_VERSION ("7.0NG.775 Build 240119")
+#define PANDORA_VERSION ("7.0NG.775 Build 240120")
 
 string pandora_path;
 string pandora_dir;
diff --git a/pandora_agents/win32/versioninfo.rc b/pandora_agents/win32/versioninfo.rc
index 11e08a1b22..8edb5e8ba4 100644
--- a/pandora_agents/win32/versioninfo.rc
+++ b/pandora_agents/win32/versioninfo.rc
@@ -11,7 +11,7 @@ BEGIN
       VALUE "LegalCopyright", "Pandora FMS"
       VALUE "OriginalFilename", "PandoraAgent.exe"
       VALUE "ProductName", "Pandora FMS Windows Agent"
-      VALUE "ProductVersion", "(7.0NG.775(Build 240119))"
+      VALUE "ProductVersion", "(7.0NG.775(Build 240120))"
       VALUE "FileVersion", "1.0.0.0"
     END
   END
diff --git a/pandora_console/DEBIAN/control b/pandora_console/DEBIAN/control
index c91dd82f91..c2719503f0 100644
--- a/pandora_console/DEBIAN/control
+++ b/pandora_console/DEBIAN/control
@@ -1,5 +1,5 @@
 package: pandorafms-console
-Version: 7.0NG.775-240119
+Version: 7.0NG.775-240120
 Architecture: all
 Priority: optional
 Section: admin
diff --git a/pandora_console/DEBIAN/make_deb_package.sh b/pandora_console/DEBIAN/make_deb_package.sh
index 509defd0a7..0043624546 100644
--- a/pandora_console/DEBIAN/make_deb_package.sh
+++ b/pandora_console/DEBIAN/make_deb_package.sh
@@ -14,7 +14,7 @@
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 # GNU General Public License for more details.
 
-pandora_version="7.0NG.775-240119"
+pandora_version="7.0NG.775-240120"
 
 package_pear=0
 package_pandora=1
diff --git a/pandora_console/include/config_process.php b/pandora_console/include/config_process.php
index 32c20bf48c..90814f1315 100644
--- a/pandora_console/include/config_process.php
+++ b/pandora_console/include/config_process.php
@@ -20,7 +20,7 @@
 /**
  * Pandora build version and version
  */
-$build_version = 'PC240119';
+$build_version = 'PC240120';
 $pandora_version = 'v7.0NG.775';
 
 // Do not overwrite default timezone set if defined.
diff --git a/pandora_console/install.php b/pandora_console/install.php
index 0dc5fe233f..e99a43cc9e 100644
--- a/pandora_console/install.php
+++ b/pandora_console/install.php
@@ -131,7 +131,7 @@
         <div style='padding-bottom: 50px'>
             <?php
             $version = '7.0NG.775';
-            $build = '240119';
+            $build = '240120';
             $banner = "v$version Build $build";
             error_reporting(0);
 
diff --git a/pandora_console/pandora_console.redhat.spec b/pandora_console/pandora_console.redhat.spec
index 10d8ffa8ff..6675241f1a 100644
--- a/pandora_console/pandora_console.redhat.spec
+++ b/pandora_console/pandora_console.redhat.spec
@@ -6,7 +6,7 @@
 %define debug_package %{nil}
 %define name        pandorafms_console
 %define version     7.0NG.775
-%define release     240119
+%define release     240120
 
 # User and Group under which Apache is running
 %define httpd_name  httpd
diff --git a/pandora_console/pandora_console.rhel7.spec b/pandora_console/pandora_console.rhel7.spec
index 3ddd0ab7d7..8cf2f002ba 100644
--- a/pandora_console/pandora_console.rhel7.spec
+++ b/pandora_console/pandora_console.rhel7.spec
@@ -6,7 +6,7 @@
 %define debug_package %{nil}
 %define name        pandorafms_console
 %define version     7.0NG.775
-%define release     240119
+%define release     240120
 
 # User and Group under which Apache is running
 %define httpd_name  httpd
diff --git a/pandora_console/pandora_console.spec b/pandora_console/pandora_console.spec
index cf12b9032e..1beb4cd86d 100644
--- a/pandora_console/pandora_console.spec
+++ b/pandora_console/pandora_console.spec
@@ -3,7 +3,7 @@
 #
 %define name        pandorafms_console
 %define version     7.0NG.775
-%define release     240119
+%define release     240120
 %define httpd_name      httpd
 # User and Group under which Apache is running
 %define httpd_name  apache2
diff --git a/pandora_server/DEBIAN/control b/pandora_server/DEBIAN/control
index 02299d83a4..ec87585b75 100644
--- a/pandora_server/DEBIAN/control
+++ b/pandora_server/DEBIAN/control
@@ -1,5 +1,5 @@
 package: pandorafms-server
-Version: 7.0NG.775-240119
+Version: 7.0NG.775-240120
 Architecture: all
 Priority: optional
 Section: admin
diff --git a/pandora_server/DEBIAN/make_deb_package.sh b/pandora_server/DEBIAN/make_deb_package.sh
index 0238427ed3..414a6991a9 100644
--- a/pandora_server/DEBIAN/make_deb_package.sh
+++ b/pandora_server/DEBIAN/make_deb_package.sh
@@ -14,7 +14,7 @@
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 # GNU General Public License for more details.
 
-pandora_version="7.0NG.775-240119"
+pandora_version="7.0NG.775-240120"
 
 package_cpan=0
 package_pandora=1
diff --git a/pandora_server/lib/PandoraFMS/Config.pm b/pandora_server/lib/PandoraFMS/Config.pm
index 8363918d50..785f7c3314 100644
--- a/pandora_server/lib/PandoraFMS/Config.pm
+++ b/pandora_server/lib/PandoraFMS/Config.pm
@@ -46,7 +46,7 @@ our @EXPORT = qw(
 
 # version: Defines actual version of Pandora Server for this module only
 my $pandora_version = "7.0NG.775";
-my $pandora_build = "240119";
+my $pandora_build = "240120";
 our $VERSION = $pandora_version." ".$pandora_build;
 
 # Setup hash
diff --git a/pandora_server/lib/PandoraFMS/PluginTools.pm b/pandora_server/lib/PandoraFMS/PluginTools.pm
index 1c17df468e..6ef1d48510 100644
--- a/pandora_server/lib/PandoraFMS/PluginTools.pm
+++ b/pandora_server/lib/PandoraFMS/PluginTools.pm
@@ -34,7 +34,7 @@ our @ISA = qw(Exporter);
 
 # version: Defines actual version of Pandora Server for this module only
 my $pandora_version = "7.0NG.775";
-my $pandora_build = "240119";
+my $pandora_build = "240120";
 our $VERSION = $pandora_version." ".$pandora_build;
 
 our %EXPORT_TAGS = ( 'all' => [ qw() ] );
diff --git a/pandora_server/pandora_server.redhat.spec b/pandora_server/pandora_server.redhat.spec
index aaa11cd9d1..7c88c2dd94 100644
--- a/pandora_server/pandora_server.redhat.spec
+++ b/pandora_server/pandora_server.redhat.spec
@@ -7,7 +7,7 @@
 %define debug_package %{nil}
 %define name        pandorafms_server
 %define version     7.0NG.775
-%define release     240119
+%define release     240120
 
 Summary:            Pandora FMS Server
 Name:               %{name}
diff --git a/pandora_server/pandora_server.spec b/pandora_server/pandora_server.spec
index cc280a9d3c..dd26e03e12 100644
--- a/pandora_server/pandora_server.spec
+++ b/pandora_server/pandora_server.spec
@@ -4,7 +4,7 @@
 %global __os_install_post %{nil}
 %define name        pandorafms_server
 %define version     7.0NG.775
-%define release     240119
+%define release     240120
 
 Summary:            Pandora FMS Server
 Name:               %{name}
diff --git a/pandora_server/pandora_server_installer b/pandora_server/pandora_server_installer
index dcb9bf7a41..118ad7eb87 100755
--- a/pandora_server/pandora_server_installer
+++ b/pandora_server/pandora_server_installer
@@ -9,7 +9,7 @@
 # **********************************************************************
 
 PI_VERSION="7.0NG.775"
-PI_BUILD="240119"
+PI_BUILD="240120"
 
 MODE=$1
 if [ $# -gt 1 ]; then
diff --git a/pandora_server/util/pandora_db.pl b/pandora_server/util/pandora_db.pl
index 662d00deac..dee61061c0 100755
--- a/pandora_server/util/pandora_db.pl
+++ b/pandora_server/util/pandora_db.pl
@@ -38,7 +38,7 @@ use PandoraFMS::Config;
 use PandoraFMS::DB;
 
 # version: define current version
-my $version = "7.0NG.775 Build 240119";
+my $version = "7.0NG.775 Build 240120";
 
 # Pandora server configuration
 my %conf;
diff --git a/pandora_server/util/pandora_manage.pl b/pandora_server/util/pandora_manage.pl
index dfa6b177fc..077a00c5e5 100755
--- a/pandora_server/util/pandora_manage.pl
+++ b/pandora_server/util/pandora_manage.pl
@@ -36,7 +36,7 @@ use Encode::Locale;
 Encode::Locale::decode_argv;
 
 # version: define current version
-my $version = "7.0NG.775 Build 240119";
+my $version = "7.0NG.775 Build 240120";
 
 # save program name for logging
 my $progname = basename($0);

From 91e072e3841955547f31828f130dc4c3ac9f385f Mon Sep 17 00:00:00 2001
From: artica <artica.devel@gmail.com>
Date: Sun, 21 Jan 2024 01:00:15 +0100
Subject: [PATCH 151/231] Auto-updated build strings.

---
 pandora_agents/unix/DEBIAN/control                    | 2 +-
 pandora_agents/unix/DEBIAN/make_deb_package.sh        | 2 +-
 pandora_agents/unix/pandora_agent                     | 2 +-
 pandora_agents/unix/pandora_agent.redhat.spec         | 2 +-
 pandora_agents/unix/pandora_agent.redhat_bin.el8.spec | 2 +-
 pandora_agents/unix/pandora_agent.redhat_bin.el9.spec | 2 +-
 pandora_agents/unix/pandora_agent.redhat_bin.spec     | 2 +-
 pandora_agents/unix/pandora_agent.spec                | 2 +-
 pandora_agents/unix/pandora_agent_installer           | 2 +-
 pandora_agents/win32/installer/pandora.mpi            | 2 +-
 pandora_agents/win32/pandora.cc                       | 2 +-
 pandora_agents/win32/versioninfo.rc                   | 2 +-
 pandora_console/DEBIAN/control                        | 2 +-
 pandora_console/DEBIAN/make_deb_package.sh            | 2 +-
 pandora_console/include/config_process.php            | 2 +-
 pandora_console/install.php                           | 2 +-
 pandora_console/pandora_console.redhat.spec           | 2 +-
 pandora_console/pandora_console.rhel7.spec            | 2 +-
 pandora_console/pandora_console.spec                  | 2 +-
 pandora_server/DEBIAN/control                         | 2 +-
 pandora_server/DEBIAN/make_deb_package.sh             | 2 +-
 pandora_server/lib/PandoraFMS/Config.pm               | 2 +-
 pandora_server/lib/PandoraFMS/PluginTools.pm          | 2 +-
 pandora_server/pandora_server.redhat.spec             | 2 +-
 pandora_server/pandora_server.spec                    | 2 +-
 pandora_server/pandora_server_installer               | 2 +-
 pandora_server/util/pandora_db.pl                     | 2 +-
 pandora_server/util/pandora_manage.pl                 | 2 +-
 28 files changed, 28 insertions(+), 28 deletions(-)

diff --git a/pandora_agents/unix/DEBIAN/control b/pandora_agents/unix/DEBIAN/control
index f74f69aefc..1ea69b853f 100644
--- a/pandora_agents/unix/DEBIAN/control
+++ b/pandora_agents/unix/DEBIAN/control
@@ -1,5 +1,5 @@
 package: pandorafms-agent-unix
-Version: 7.0NG.775-240120
+Version: 7.0NG.775-240121
 Architecture: all
 Priority: optional
 Section: admin
diff --git a/pandora_agents/unix/DEBIAN/make_deb_package.sh b/pandora_agents/unix/DEBIAN/make_deb_package.sh
index fcd7dc31ce..7fbb790c17 100644
--- a/pandora_agents/unix/DEBIAN/make_deb_package.sh
+++ b/pandora_agents/unix/DEBIAN/make_deb_package.sh
@@ -14,7 +14,7 @@
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 # GNU General Public License for more details.
 
-pandora_version="7.0NG.775-240120"
+pandora_version="7.0NG.775-240121"
 
 echo "Test if you has the tools for to make the packages."
 whereis dpkg-deb | cut -d":" -f2 | grep dpkg-deb > /dev/null
diff --git a/pandora_agents/unix/pandora_agent b/pandora_agents/unix/pandora_agent
index ec7e9e8549..34f55f521d 100755
--- a/pandora_agents/unix/pandora_agent
+++ b/pandora_agents/unix/pandora_agent
@@ -1039,7 +1039,7 @@ my $Sem = undef;
 my $ThreadSem = undef;
 
 use constant AGENT_VERSION => '7.0NG.775';
-use constant AGENT_BUILD => '240120';
+use constant AGENT_BUILD => '240121';
 
 # Agent log default file size maximum and instances
 use constant DEFAULT_MAX_LOG_SIZE => 600000;
diff --git a/pandora_agents/unix/pandora_agent.redhat.spec b/pandora_agents/unix/pandora_agent.redhat.spec
index 279a77050c..b9130fcb57 100644
--- a/pandora_agents/unix/pandora_agent.redhat.spec
+++ b/pandora_agents/unix/pandora_agent.redhat.spec
@@ -4,7 +4,7 @@
 %global __os_install_post %{nil}
 %define name        pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240120
+%define release     240121
 
 Summary:            Pandora FMS Linux agent, PERL version
 Name:               %{name}
diff --git a/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec b/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec
index b17787c24c..31c58c7e85 100644
--- a/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec
+++ b/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec
@@ -5,7 +5,7 @@
 %define name        pandorafms_agent_linux_bin
 %define source_name pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240120
+%define release     240121
 %define debug_package %{nil}
 
 Summary:            Pandora FMS Linux agent, binary version
diff --git a/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec b/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec
index 39178ce6e6..2a47bd5bb8 100644
--- a/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec
+++ b/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec
@@ -5,7 +5,7 @@
 %define name        pandorafms_agent_linux_bin
 %define source_name pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240120
+%define release     240121
 %define debug_package %{nil}
 
 Summary:            Pandora FMS Linux agent, binary version
diff --git a/pandora_agents/unix/pandora_agent.redhat_bin.spec b/pandora_agents/unix/pandora_agent.redhat_bin.spec
index d592bcee1c..41cb7a0bd5 100644
--- a/pandora_agents/unix/pandora_agent.redhat_bin.spec
+++ b/pandora_agents/unix/pandora_agent.redhat_bin.spec
@@ -5,7 +5,7 @@
 %define name        pandorafms_agent_linux_bin
 %define source_name pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240120
+%define release     240121
 
 Summary:            Pandora FMS Linux agent, binary version
 Name:               %{name}
diff --git a/pandora_agents/unix/pandora_agent.spec b/pandora_agents/unix/pandora_agent.spec
index 2a27478197..fdae7477de 100644
--- a/pandora_agents/unix/pandora_agent.spec
+++ b/pandora_agents/unix/pandora_agent.spec
@@ -4,7 +4,7 @@
 %global __os_install_post %{nil}
 %define name        pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240120
+%define release     240121
 
 Summary:            Pandora FMS Linux agent, PERL version
 Name:               %{name}
diff --git a/pandora_agents/unix/pandora_agent_installer b/pandora_agents/unix/pandora_agent_installer
index 711f6bd311..548e9b4569 100755
--- a/pandora_agents/unix/pandora_agent_installer
+++ b/pandora_agents/unix/pandora_agent_installer
@@ -10,7 +10,7 @@
 # **********************************************************************
 
 PI_VERSION="7.0NG.775"
-PI_BUILD="240120"
+PI_BUILD="240121"
 OS_NAME=`uname -s`
 
 FORCE=0
diff --git a/pandora_agents/win32/installer/pandora.mpi b/pandora_agents/win32/installer/pandora.mpi
index 790042c937..08d8b1c84d 100644
--- a/pandora_agents/win32/installer/pandora.mpi
+++ b/pandora_agents/win32/installer/pandora.mpi
@@ -186,7 +186,7 @@ UpgradeApplicationID
 {}
 
 Version
-{240120}
+{240121}
 
 ViewReadme
 {Yes}
diff --git a/pandora_agents/win32/pandora.cc b/pandora_agents/win32/pandora.cc
index ef7ee2a347..91e241d0a6 100644
--- a/pandora_agents/win32/pandora.cc
+++ b/pandora_agents/win32/pandora.cc
@@ -30,7 +30,7 @@ using namespace Pandora;
 using namespace Pandora_Strutils;
 
 #define PATH_SIZE    _MAX_PATH+1
-#define PANDORA_VERSION ("7.0NG.775 Build 240120")
+#define PANDORA_VERSION ("7.0NG.775 Build 240121")
 
 string pandora_path;
 string pandora_dir;
diff --git a/pandora_agents/win32/versioninfo.rc b/pandora_agents/win32/versioninfo.rc
index 8edb5e8ba4..8d9f2013bd 100644
--- a/pandora_agents/win32/versioninfo.rc
+++ b/pandora_agents/win32/versioninfo.rc
@@ -11,7 +11,7 @@ BEGIN
       VALUE "LegalCopyright", "Pandora FMS"
       VALUE "OriginalFilename", "PandoraAgent.exe"
       VALUE "ProductName", "Pandora FMS Windows Agent"
-      VALUE "ProductVersion", "(7.0NG.775(Build 240120))"
+      VALUE "ProductVersion", "(7.0NG.775(Build 240121))"
       VALUE "FileVersion", "1.0.0.0"
     END
   END
diff --git a/pandora_console/DEBIAN/control b/pandora_console/DEBIAN/control
index c2719503f0..178417add9 100644
--- a/pandora_console/DEBIAN/control
+++ b/pandora_console/DEBIAN/control
@@ -1,5 +1,5 @@
 package: pandorafms-console
-Version: 7.0NG.775-240120
+Version: 7.0NG.775-240121
 Architecture: all
 Priority: optional
 Section: admin
diff --git a/pandora_console/DEBIAN/make_deb_package.sh b/pandora_console/DEBIAN/make_deb_package.sh
index 0043624546..e5ca9bb30c 100644
--- a/pandora_console/DEBIAN/make_deb_package.sh
+++ b/pandora_console/DEBIAN/make_deb_package.sh
@@ -14,7 +14,7 @@
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 # GNU General Public License for more details.
 
-pandora_version="7.0NG.775-240120"
+pandora_version="7.0NG.775-240121"
 
 package_pear=0
 package_pandora=1
diff --git a/pandora_console/include/config_process.php b/pandora_console/include/config_process.php
index 90814f1315..8d2d151608 100644
--- a/pandora_console/include/config_process.php
+++ b/pandora_console/include/config_process.php
@@ -20,7 +20,7 @@
 /**
  * Pandora build version and version
  */
-$build_version = 'PC240120';
+$build_version = 'PC240121';
 $pandora_version = 'v7.0NG.775';
 
 // Do not overwrite default timezone set if defined.
diff --git a/pandora_console/install.php b/pandora_console/install.php
index e99a43cc9e..b8644e99b7 100644
--- a/pandora_console/install.php
+++ b/pandora_console/install.php
@@ -131,7 +131,7 @@
         <div style='padding-bottom: 50px'>
             <?php
             $version = '7.0NG.775';
-            $build = '240120';
+            $build = '240121';
             $banner = "v$version Build $build";
             error_reporting(0);
 
diff --git a/pandora_console/pandora_console.redhat.spec b/pandora_console/pandora_console.redhat.spec
index 6675241f1a..16fe1440fd 100644
--- a/pandora_console/pandora_console.redhat.spec
+++ b/pandora_console/pandora_console.redhat.spec
@@ -6,7 +6,7 @@
 %define debug_package %{nil}
 %define name        pandorafms_console
 %define version     7.0NG.775
-%define release     240120
+%define release     240121
 
 # User and Group under which Apache is running
 %define httpd_name  httpd
diff --git a/pandora_console/pandora_console.rhel7.spec b/pandora_console/pandora_console.rhel7.spec
index 8cf2f002ba..0eaaa6ddb1 100644
--- a/pandora_console/pandora_console.rhel7.spec
+++ b/pandora_console/pandora_console.rhel7.spec
@@ -6,7 +6,7 @@
 %define debug_package %{nil}
 %define name        pandorafms_console
 %define version     7.0NG.775
-%define release     240120
+%define release     240121
 
 # User and Group under which Apache is running
 %define httpd_name  httpd
diff --git a/pandora_console/pandora_console.spec b/pandora_console/pandora_console.spec
index 1beb4cd86d..a0272c4b94 100644
--- a/pandora_console/pandora_console.spec
+++ b/pandora_console/pandora_console.spec
@@ -3,7 +3,7 @@
 #
 %define name        pandorafms_console
 %define version     7.0NG.775
-%define release     240120
+%define release     240121
 %define httpd_name      httpd
 # User and Group under which Apache is running
 %define httpd_name  apache2
diff --git a/pandora_server/DEBIAN/control b/pandora_server/DEBIAN/control
index ec87585b75..27f062c002 100644
--- a/pandora_server/DEBIAN/control
+++ b/pandora_server/DEBIAN/control
@@ -1,5 +1,5 @@
 package: pandorafms-server
-Version: 7.0NG.775-240120
+Version: 7.0NG.775-240121
 Architecture: all
 Priority: optional
 Section: admin
diff --git a/pandora_server/DEBIAN/make_deb_package.sh b/pandora_server/DEBIAN/make_deb_package.sh
index 414a6991a9..e43a7c87d1 100644
--- a/pandora_server/DEBIAN/make_deb_package.sh
+++ b/pandora_server/DEBIAN/make_deb_package.sh
@@ -14,7 +14,7 @@
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 # GNU General Public License for more details.
 
-pandora_version="7.0NG.775-240120"
+pandora_version="7.0NG.775-240121"
 
 package_cpan=0
 package_pandora=1
diff --git a/pandora_server/lib/PandoraFMS/Config.pm b/pandora_server/lib/PandoraFMS/Config.pm
index 785f7c3314..af45980793 100644
--- a/pandora_server/lib/PandoraFMS/Config.pm
+++ b/pandora_server/lib/PandoraFMS/Config.pm
@@ -46,7 +46,7 @@ our @EXPORT = qw(
 
 # version: Defines actual version of Pandora Server for this module only
 my $pandora_version = "7.0NG.775";
-my $pandora_build = "240120";
+my $pandora_build = "240121";
 our $VERSION = $pandora_version." ".$pandora_build;
 
 # Setup hash
diff --git a/pandora_server/lib/PandoraFMS/PluginTools.pm b/pandora_server/lib/PandoraFMS/PluginTools.pm
index 6ef1d48510..f2ddff342c 100644
--- a/pandora_server/lib/PandoraFMS/PluginTools.pm
+++ b/pandora_server/lib/PandoraFMS/PluginTools.pm
@@ -34,7 +34,7 @@ our @ISA = qw(Exporter);
 
 # version: Defines actual version of Pandora Server for this module only
 my $pandora_version = "7.0NG.775";
-my $pandora_build = "240120";
+my $pandora_build = "240121";
 our $VERSION = $pandora_version." ".$pandora_build;
 
 our %EXPORT_TAGS = ( 'all' => [ qw() ] );
diff --git a/pandora_server/pandora_server.redhat.spec b/pandora_server/pandora_server.redhat.spec
index 7c88c2dd94..b186288101 100644
--- a/pandora_server/pandora_server.redhat.spec
+++ b/pandora_server/pandora_server.redhat.spec
@@ -7,7 +7,7 @@
 %define debug_package %{nil}
 %define name        pandorafms_server
 %define version     7.0NG.775
-%define release     240120
+%define release     240121
 
 Summary:            Pandora FMS Server
 Name:               %{name}
diff --git a/pandora_server/pandora_server.spec b/pandora_server/pandora_server.spec
index dd26e03e12..25f0973f84 100644
--- a/pandora_server/pandora_server.spec
+++ b/pandora_server/pandora_server.spec
@@ -4,7 +4,7 @@
 %global __os_install_post %{nil}
 %define name        pandorafms_server
 %define version     7.0NG.775
-%define release     240120
+%define release     240121
 
 Summary:            Pandora FMS Server
 Name:               %{name}
diff --git a/pandora_server/pandora_server_installer b/pandora_server/pandora_server_installer
index 118ad7eb87..827ad11c13 100755
--- a/pandora_server/pandora_server_installer
+++ b/pandora_server/pandora_server_installer
@@ -9,7 +9,7 @@
 # **********************************************************************
 
 PI_VERSION="7.0NG.775"
-PI_BUILD="240120"
+PI_BUILD="240121"
 
 MODE=$1
 if [ $# -gt 1 ]; then
diff --git a/pandora_server/util/pandora_db.pl b/pandora_server/util/pandora_db.pl
index dee61061c0..f5e30b7321 100755
--- a/pandora_server/util/pandora_db.pl
+++ b/pandora_server/util/pandora_db.pl
@@ -38,7 +38,7 @@ use PandoraFMS::Config;
 use PandoraFMS::DB;
 
 # version: define current version
-my $version = "7.0NG.775 Build 240120";
+my $version = "7.0NG.775 Build 240121";
 
 # Pandora server configuration
 my %conf;
diff --git a/pandora_server/util/pandora_manage.pl b/pandora_server/util/pandora_manage.pl
index 077a00c5e5..e58604914d 100755
--- a/pandora_server/util/pandora_manage.pl
+++ b/pandora_server/util/pandora_manage.pl
@@ -36,7 +36,7 @@ use Encode::Locale;
 Encode::Locale::decode_argv;
 
 # version: define current version
-my $version = "7.0NG.775 Build 240120";
+my $version = "7.0NG.775 Build 240121";
 
 # save program name for logging
 my $progname = basename($0);

From 895684238e01f386547cb622604aadd47fd905b9 Mon Sep 17 00:00:00 2001
From: artica <artica.devel@gmail.com>
Date: Mon, 22 Jan 2024 01:00:15 +0100
Subject: [PATCH 152/231] Auto-updated build strings.

---
 pandora_agents/unix/DEBIAN/control                    | 2 +-
 pandora_agents/unix/DEBIAN/make_deb_package.sh        | 2 +-
 pandora_agents/unix/pandora_agent                     | 2 +-
 pandora_agents/unix/pandora_agent.redhat.spec         | 2 +-
 pandora_agents/unix/pandora_agent.redhat_bin.el8.spec | 2 +-
 pandora_agents/unix/pandora_agent.redhat_bin.el9.spec | 2 +-
 pandora_agents/unix/pandora_agent.redhat_bin.spec     | 2 +-
 pandora_agents/unix/pandora_agent.spec                | 2 +-
 pandora_agents/unix/pandora_agent_installer           | 2 +-
 pandora_agents/win32/installer/pandora.mpi            | 2 +-
 pandora_agents/win32/pandora.cc                       | 2 +-
 pandora_agents/win32/versioninfo.rc                   | 2 +-
 pandora_console/DEBIAN/control                        | 2 +-
 pandora_console/DEBIAN/make_deb_package.sh            | 2 +-
 pandora_console/include/config_process.php            | 2 +-
 pandora_console/install.php                           | 2 +-
 pandora_console/pandora_console.redhat.spec           | 2 +-
 pandora_console/pandora_console.rhel7.spec            | 2 +-
 pandora_console/pandora_console.spec                  | 2 +-
 pandora_server/DEBIAN/control                         | 2 +-
 pandora_server/DEBIAN/make_deb_package.sh             | 2 +-
 pandora_server/lib/PandoraFMS/Config.pm               | 2 +-
 pandora_server/lib/PandoraFMS/PluginTools.pm          | 2 +-
 pandora_server/pandora_server.redhat.spec             | 2 +-
 pandora_server/pandora_server.spec                    | 2 +-
 pandora_server/pandora_server_installer               | 2 +-
 pandora_server/util/pandora_db.pl                     | 2 +-
 pandora_server/util/pandora_manage.pl                 | 2 +-
 28 files changed, 28 insertions(+), 28 deletions(-)

diff --git a/pandora_agents/unix/DEBIAN/control b/pandora_agents/unix/DEBIAN/control
index 1ea69b853f..4fd5136eee 100644
--- a/pandora_agents/unix/DEBIAN/control
+++ b/pandora_agents/unix/DEBIAN/control
@@ -1,5 +1,5 @@
 package: pandorafms-agent-unix
-Version: 7.0NG.775-240121
+Version: 7.0NG.775-240122
 Architecture: all
 Priority: optional
 Section: admin
diff --git a/pandora_agents/unix/DEBIAN/make_deb_package.sh b/pandora_agents/unix/DEBIAN/make_deb_package.sh
index 7fbb790c17..a84d1c1048 100644
--- a/pandora_agents/unix/DEBIAN/make_deb_package.sh
+++ b/pandora_agents/unix/DEBIAN/make_deb_package.sh
@@ -14,7 +14,7 @@
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 # GNU General Public License for more details.
 
-pandora_version="7.0NG.775-240121"
+pandora_version="7.0NG.775-240122"
 
 echo "Test if you has the tools for to make the packages."
 whereis dpkg-deb | cut -d":" -f2 | grep dpkg-deb > /dev/null
diff --git a/pandora_agents/unix/pandora_agent b/pandora_agents/unix/pandora_agent
index 34f55f521d..1bdfa2c98d 100755
--- a/pandora_agents/unix/pandora_agent
+++ b/pandora_agents/unix/pandora_agent
@@ -1039,7 +1039,7 @@ my $Sem = undef;
 my $ThreadSem = undef;
 
 use constant AGENT_VERSION => '7.0NG.775';
-use constant AGENT_BUILD => '240121';
+use constant AGENT_BUILD => '240122';
 
 # Agent log default file size maximum and instances
 use constant DEFAULT_MAX_LOG_SIZE => 600000;
diff --git a/pandora_agents/unix/pandora_agent.redhat.spec b/pandora_agents/unix/pandora_agent.redhat.spec
index b9130fcb57..9d6bcf8f51 100644
--- a/pandora_agents/unix/pandora_agent.redhat.spec
+++ b/pandora_agents/unix/pandora_agent.redhat.spec
@@ -4,7 +4,7 @@
 %global __os_install_post %{nil}
 %define name        pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240121
+%define release     240122
 
 Summary:            Pandora FMS Linux agent, PERL version
 Name:               %{name}
diff --git a/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec b/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec
index 31c58c7e85..5b9e48578d 100644
--- a/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec
+++ b/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec
@@ -5,7 +5,7 @@
 %define name        pandorafms_agent_linux_bin
 %define source_name pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240121
+%define release     240122
 %define debug_package %{nil}
 
 Summary:            Pandora FMS Linux agent, binary version
diff --git a/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec b/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec
index 2a47bd5bb8..8ed84f4eb2 100644
--- a/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec
+++ b/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec
@@ -5,7 +5,7 @@
 %define name        pandorafms_agent_linux_bin
 %define source_name pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240121
+%define release     240122
 %define debug_package %{nil}
 
 Summary:            Pandora FMS Linux agent, binary version
diff --git a/pandora_agents/unix/pandora_agent.redhat_bin.spec b/pandora_agents/unix/pandora_agent.redhat_bin.spec
index 41cb7a0bd5..e1ac0c3dd6 100644
--- a/pandora_agents/unix/pandora_agent.redhat_bin.spec
+++ b/pandora_agents/unix/pandora_agent.redhat_bin.spec
@@ -5,7 +5,7 @@
 %define name        pandorafms_agent_linux_bin
 %define source_name pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240121
+%define release     240122
 
 Summary:            Pandora FMS Linux agent, binary version
 Name:               %{name}
diff --git a/pandora_agents/unix/pandora_agent.spec b/pandora_agents/unix/pandora_agent.spec
index fdae7477de..710699686d 100644
--- a/pandora_agents/unix/pandora_agent.spec
+++ b/pandora_agents/unix/pandora_agent.spec
@@ -4,7 +4,7 @@
 %global __os_install_post %{nil}
 %define name        pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240121
+%define release     240122
 
 Summary:            Pandora FMS Linux agent, PERL version
 Name:               %{name}
diff --git a/pandora_agents/unix/pandora_agent_installer b/pandora_agents/unix/pandora_agent_installer
index 548e9b4569..54a64fa46d 100755
--- a/pandora_agents/unix/pandora_agent_installer
+++ b/pandora_agents/unix/pandora_agent_installer
@@ -10,7 +10,7 @@
 # **********************************************************************
 
 PI_VERSION="7.0NG.775"
-PI_BUILD="240121"
+PI_BUILD="240122"
 OS_NAME=`uname -s`
 
 FORCE=0
diff --git a/pandora_agents/win32/installer/pandora.mpi b/pandora_agents/win32/installer/pandora.mpi
index 08d8b1c84d..efc085bfe6 100644
--- a/pandora_agents/win32/installer/pandora.mpi
+++ b/pandora_agents/win32/installer/pandora.mpi
@@ -186,7 +186,7 @@ UpgradeApplicationID
 {}
 
 Version
-{240121}
+{240122}
 
 ViewReadme
 {Yes}
diff --git a/pandora_agents/win32/pandora.cc b/pandora_agents/win32/pandora.cc
index 91e241d0a6..2a05f4e9ce 100644
--- a/pandora_agents/win32/pandora.cc
+++ b/pandora_agents/win32/pandora.cc
@@ -30,7 +30,7 @@ using namespace Pandora;
 using namespace Pandora_Strutils;
 
 #define PATH_SIZE    _MAX_PATH+1
-#define PANDORA_VERSION ("7.0NG.775 Build 240121")
+#define PANDORA_VERSION ("7.0NG.775 Build 240122")
 
 string pandora_path;
 string pandora_dir;
diff --git a/pandora_agents/win32/versioninfo.rc b/pandora_agents/win32/versioninfo.rc
index 8d9f2013bd..7600b129ae 100644
--- a/pandora_agents/win32/versioninfo.rc
+++ b/pandora_agents/win32/versioninfo.rc
@@ -11,7 +11,7 @@ BEGIN
       VALUE "LegalCopyright", "Pandora FMS"
       VALUE "OriginalFilename", "PandoraAgent.exe"
       VALUE "ProductName", "Pandora FMS Windows Agent"
-      VALUE "ProductVersion", "(7.0NG.775(Build 240121))"
+      VALUE "ProductVersion", "(7.0NG.775(Build 240122))"
       VALUE "FileVersion", "1.0.0.0"
     END
   END
diff --git a/pandora_console/DEBIAN/control b/pandora_console/DEBIAN/control
index 178417add9..6ba70f63f8 100644
--- a/pandora_console/DEBIAN/control
+++ b/pandora_console/DEBIAN/control
@@ -1,5 +1,5 @@
 package: pandorafms-console
-Version: 7.0NG.775-240121
+Version: 7.0NG.775-240122
 Architecture: all
 Priority: optional
 Section: admin
diff --git a/pandora_console/DEBIAN/make_deb_package.sh b/pandora_console/DEBIAN/make_deb_package.sh
index e5ca9bb30c..69659ab510 100644
--- a/pandora_console/DEBIAN/make_deb_package.sh
+++ b/pandora_console/DEBIAN/make_deb_package.sh
@@ -14,7 +14,7 @@
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 # GNU General Public License for more details.
 
-pandora_version="7.0NG.775-240121"
+pandora_version="7.0NG.775-240122"
 
 package_pear=0
 package_pandora=1
diff --git a/pandora_console/include/config_process.php b/pandora_console/include/config_process.php
index 8d2d151608..68a52be97d 100644
--- a/pandora_console/include/config_process.php
+++ b/pandora_console/include/config_process.php
@@ -20,7 +20,7 @@
 /**
  * Pandora build version and version
  */
-$build_version = 'PC240121';
+$build_version = 'PC240122';
 $pandora_version = 'v7.0NG.775';
 
 // Do not overwrite default timezone set if defined.
diff --git a/pandora_console/install.php b/pandora_console/install.php
index b8644e99b7..a5765f9bb2 100644
--- a/pandora_console/install.php
+++ b/pandora_console/install.php
@@ -131,7 +131,7 @@
         <div style='padding-bottom: 50px'>
             <?php
             $version = '7.0NG.775';
-            $build = '240121';
+            $build = '240122';
             $banner = "v$version Build $build";
             error_reporting(0);
 
diff --git a/pandora_console/pandora_console.redhat.spec b/pandora_console/pandora_console.redhat.spec
index 16fe1440fd..b8cb1c4e8e 100644
--- a/pandora_console/pandora_console.redhat.spec
+++ b/pandora_console/pandora_console.redhat.spec
@@ -6,7 +6,7 @@
 %define debug_package %{nil}
 %define name        pandorafms_console
 %define version     7.0NG.775
-%define release     240121
+%define release     240122
 
 # User and Group under which Apache is running
 %define httpd_name  httpd
diff --git a/pandora_console/pandora_console.rhel7.spec b/pandora_console/pandora_console.rhel7.spec
index 0eaaa6ddb1..9d073814b5 100644
--- a/pandora_console/pandora_console.rhel7.spec
+++ b/pandora_console/pandora_console.rhel7.spec
@@ -6,7 +6,7 @@
 %define debug_package %{nil}
 %define name        pandorafms_console
 %define version     7.0NG.775
-%define release     240121
+%define release     240122
 
 # User and Group under which Apache is running
 %define httpd_name  httpd
diff --git a/pandora_console/pandora_console.spec b/pandora_console/pandora_console.spec
index a0272c4b94..059e4d94ef 100644
--- a/pandora_console/pandora_console.spec
+++ b/pandora_console/pandora_console.spec
@@ -3,7 +3,7 @@
 #
 %define name        pandorafms_console
 %define version     7.0NG.775
-%define release     240121
+%define release     240122
 %define httpd_name      httpd
 # User and Group under which Apache is running
 %define httpd_name  apache2
diff --git a/pandora_server/DEBIAN/control b/pandora_server/DEBIAN/control
index 27f062c002..c4ab00d63c 100644
--- a/pandora_server/DEBIAN/control
+++ b/pandora_server/DEBIAN/control
@@ -1,5 +1,5 @@
 package: pandorafms-server
-Version: 7.0NG.775-240121
+Version: 7.0NG.775-240122
 Architecture: all
 Priority: optional
 Section: admin
diff --git a/pandora_server/DEBIAN/make_deb_package.sh b/pandora_server/DEBIAN/make_deb_package.sh
index e43a7c87d1..72d2ed0de6 100644
--- a/pandora_server/DEBIAN/make_deb_package.sh
+++ b/pandora_server/DEBIAN/make_deb_package.sh
@@ -14,7 +14,7 @@
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 # GNU General Public License for more details.
 
-pandora_version="7.0NG.775-240121"
+pandora_version="7.0NG.775-240122"
 
 package_cpan=0
 package_pandora=1
diff --git a/pandora_server/lib/PandoraFMS/Config.pm b/pandora_server/lib/PandoraFMS/Config.pm
index af45980793..6802cf94ca 100644
--- a/pandora_server/lib/PandoraFMS/Config.pm
+++ b/pandora_server/lib/PandoraFMS/Config.pm
@@ -46,7 +46,7 @@ our @EXPORT = qw(
 
 # version: Defines actual version of Pandora Server for this module only
 my $pandora_version = "7.0NG.775";
-my $pandora_build = "240121";
+my $pandora_build = "240122";
 our $VERSION = $pandora_version." ".$pandora_build;
 
 # Setup hash
diff --git a/pandora_server/lib/PandoraFMS/PluginTools.pm b/pandora_server/lib/PandoraFMS/PluginTools.pm
index f2ddff342c..ccd9d8f7dd 100644
--- a/pandora_server/lib/PandoraFMS/PluginTools.pm
+++ b/pandora_server/lib/PandoraFMS/PluginTools.pm
@@ -34,7 +34,7 @@ our @ISA = qw(Exporter);
 
 # version: Defines actual version of Pandora Server for this module only
 my $pandora_version = "7.0NG.775";
-my $pandora_build = "240121";
+my $pandora_build = "240122";
 our $VERSION = $pandora_version." ".$pandora_build;
 
 our %EXPORT_TAGS = ( 'all' => [ qw() ] );
diff --git a/pandora_server/pandora_server.redhat.spec b/pandora_server/pandora_server.redhat.spec
index b186288101..c74934e734 100644
--- a/pandora_server/pandora_server.redhat.spec
+++ b/pandora_server/pandora_server.redhat.spec
@@ -7,7 +7,7 @@
 %define debug_package %{nil}
 %define name        pandorafms_server
 %define version     7.0NG.775
-%define release     240121
+%define release     240122
 
 Summary:            Pandora FMS Server
 Name:               %{name}
diff --git a/pandora_server/pandora_server.spec b/pandora_server/pandora_server.spec
index 25f0973f84..dc859972e9 100644
--- a/pandora_server/pandora_server.spec
+++ b/pandora_server/pandora_server.spec
@@ -4,7 +4,7 @@
 %global __os_install_post %{nil}
 %define name        pandorafms_server
 %define version     7.0NG.775
-%define release     240121
+%define release     240122
 
 Summary:            Pandora FMS Server
 Name:               %{name}
diff --git a/pandora_server/pandora_server_installer b/pandora_server/pandora_server_installer
index 827ad11c13..18312cc95f 100755
--- a/pandora_server/pandora_server_installer
+++ b/pandora_server/pandora_server_installer
@@ -9,7 +9,7 @@
 # **********************************************************************
 
 PI_VERSION="7.0NG.775"
-PI_BUILD="240121"
+PI_BUILD="240122"
 
 MODE=$1
 if [ $# -gt 1 ]; then
diff --git a/pandora_server/util/pandora_db.pl b/pandora_server/util/pandora_db.pl
index f5e30b7321..9c9ad0d5a0 100755
--- a/pandora_server/util/pandora_db.pl
+++ b/pandora_server/util/pandora_db.pl
@@ -38,7 +38,7 @@ use PandoraFMS::Config;
 use PandoraFMS::DB;
 
 # version: define current version
-my $version = "7.0NG.775 Build 240121";
+my $version = "7.0NG.775 Build 240122";
 
 # Pandora server configuration
 my %conf;
diff --git a/pandora_server/util/pandora_manage.pl b/pandora_server/util/pandora_manage.pl
index e58604914d..63b39f7771 100755
--- a/pandora_server/util/pandora_manage.pl
+++ b/pandora_server/util/pandora_manage.pl
@@ -36,7 +36,7 @@ use Encode::Locale;
 Encode::Locale::decode_argv;
 
 # version: define current version
-my $version = "7.0NG.775 Build 240121";
+my $version = "7.0NG.775 Build 240122";
 
 # save program name for logging
 my $progname = basename($0);

From f43279acc35e6ff075586e0ef261b79f1bbbcbb6 Mon Sep 17 00:00:00 2001
From: Jonathan <jonathan.leon@pandorafms.com>
Date: Mon, 22 Jan 2024 09:27:02 +0100
Subject: [PATCH 153/231] #12777 qr name remove entities

---
 pandora_console/godmode/users/user_management.php |  2 +-
 pandora_console/include/javascript/qrcode.js      | 15 ++-------------
 2 files changed, 3 insertions(+), 14 deletions(-)

diff --git a/pandora_console/godmode/users/user_management.php b/pandora_console/godmode/users/user_management.php
index 7a5abb8503..4fa30a253e 100644
--- a/pandora_console/godmode/users/user_management.php
+++ b/pandora_console/godmode/users/user_management.php
@@ -985,7 +985,7 @@ html_print_table($userManagementTable);
 
 $vcard_data = [];
 $vcard_data['version'] = '3.0';
-$vcard_data['firstName'] = $user_info['fullname'];
+$vcard_data['firstName'] = io_safe_output($user_info['fullname']);
 $vcard_data['lastName'] = '';
 $vcard_data['middleName'] = '';
 $vcard_data['workPhone'] = $user_info['phone'];
diff --git a/pandora_console/include/javascript/qrcode.js b/pandora_console/include/javascript/qrcode.js
index 4f664b4659..33f38e1b6f 100644
--- a/pandora_console/include/javascript/qrcode.js
+++ b/pandora_console/include/javascript/qrcode.js
@@ -2413,22 +2413,11 @@ date: 2018-05-14 15:05:04
       });
     }
 
+    console.log(vCard);
     formattedVCardString +=
       "FN" + encodingPrefix + ":" + e(formattedName) + nl();
     formattedVCardString +=
-      "N" +
-      encodingPrefix +
-      ":" +
-      e(vCard.lastName) +
-      ";" +
-      e(vCard.firstName) +
-      ";" +
-      e(vCard.middleName) +
-      ";" +
-      e(vCard.namePrefix) +
-      ";" +
-      e(vCard.nameSuffix) +
-      nl();
+      "N" + encodingPrefix + ":" + e(vCard.firstName) + nl();
 
     if (vCard.nickname && majorVersion >= 3) {
       formattedVCardString +=

From 740c0adc9cb6bb38cf256845b226fd9f3b9659f7 Mon Sep 17 00:00:00 2001
From: Jonathan <jonathan.leon@pandorafms.com>
Date: Mon, 22 Jan 2024 10:15:31 +0100
Subject: [PATCH 154/231] #12778 add sections hack

---
 pandora_console/include/functions_menu.php | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/pandora_console/include/functions_menu.php b/pandora_console/include/functions_menu.php
index 4e99e858fb..ca67825da1 100644
--- a/pandora_console/include/functions_menu.php
+++ b/pandora_console/include/functions_menu.php
@@ -153,6 +153,12 @@ function menu_print_menu(&$menu)
         if (empty($operation) === false) {
             $sec2 = $sec2.'&operation='.$operation;
         }
+    } else if ($sec2 === 'godmode/users/configure_user') {
+        $sec2 = 'godmode/users/user_list';
+    } else if ($sec2 === 'godmode/groups/configure_group') {
+        $sec2 = 'godmode/groups/group_list';
+    } else if ($sec2 === 'godmode/users/configure_profile') {
+        $sec2 = 'godmode/users/profile_list';
     } else {
         $sec2 = (string) get_parameter('sec2');
     }

From d85a488cb077bdae561cfe746f51cd2c5e6b6e06 Mon Sep 17 00:00:00 2001
From: Daniel Cebrian <daniel.cebrian@pandorafms.com>
Date: Mon, 22 Jan 2024 10:37:03 +0100
Subject: [PATCH 155/231] #12538 new notifications in console supervisor

---
 .../include/class/ConsoleSupervisor.php       | 84 +++++++++++++++++++
 1 file changed, 84 insertions(+)

diff --git a/pandora_console/include/class/ConsoleSupervisor.php b/pandora_console/include/class/ConsoleSupervisor.php
index 1b1d06d8b9..668ace85c5 100644
--- a/pandora_console/include/class/ConsoleSupervisor.php
+++ b/pandora_console/include/class/ConsoleSupervisor.php
@@ -301,6 +301,18 @@ class ConsoleSupervisor
          */
 
         $this->checkLogAlerts();
+
+        /*
+         * Check total modules in system
+         */
+
+         $this->checkTotalModules();
+
+        /*
+         * Check total modules by agent
+         */
+
+         $this->checkTotalModulesByAgent();
     }
 
 
@@ -591,8 +603,21 @@ class ConsoleSupervisor
          * Check MYSQL Support Version
          *
          */
+
         $this->checkMYSQLSettings();
 
+        /*
+         * Check total modules in system
+         */
+
+         $this->checkTotalModules();
+
+        /*
+         * Check total modules by agent
+         */
+
+         $this->checkTotalModulesByAgent();
+
     }
 
 
@@ -3199,4 +3224,63 @@ class ConsoleSupervisor
     }
 
 
+    /**
+     * Check if the total number of modules in Pandora is greater than 80000.
+     *
+     * @return void
+     */
+    public function checkTotalModules()
+    {
+        $total_modules = db_get_num_rows('select * from tagente_modulo');
+        if ($total_modules > 80000) {
+            $this->notify(
+                [
+                    'type'              => 'NOTIF.MODULES.ALERT',
+                    'title'             => __('Your system has a total of %s modules', $total_modules),
+                    'message'           => __('This is higher than the recommended maximum 80,000 modules per node. This may result in poor performance of your system.'),
+                    'icon_notification' => self::ICON_HEADSUP,
+                ]
+            );
+        } else {
+            $this->cleanNotifications('NOTIF.MODULES.ALERT');
+        }
+    }
+
+
+    /**
+     * Check if the total number of modules by agent is greater than 200
+     *
+     * @return void
+     */
+    public function checkTotalModulesByAgent()
+    {
+        $modules_by_agent = db_process_sql(
+            'SELECT count(*) AS modules_by_agent
+            FROM tagente a
+            LEFT JOIN tagente_modulo m ON a.id_agente = m.id_agente
+            GROUP BY m.id_agente'
+        );
+
+        $show_warning = false;
+        foreach ($modules_by_agent as $key => $total_modules) {
+            if ($total_modules['modules_by_agent'] > 200) {
+                $this->notify(
+                    [
+                        'type'              => 'NOTIF.MODULES_AGENT.ALERT',
+                        'title'             => __('Your system has an average of %s modules per agent', $total_modules['modules_by_agent']),
+                        'message'           => __('This is higher than the recommended maximum (200). This may result in poor performance of your system.'),
+                        'icon_notification' => self::ICON_HEADSUP,
+                    ]
+                );
+                $show_warning = true;
+                break;
+            }
+        }
+
+        if ($show_warning === false) {
+            $this->cleanNotifications('NOTIF.MODULES_AGENT.ALERT');
+        }
+    }
+
+
 }

From a9c16e1f69d0938874d29cc7a01d062467658788 Mon Sep 17 00:00:00 2001
From: Daniel Cebrian <daniel.cebrian@pandorafms.com>
Date: Mon, 22 Jan 2024 10:55:37 +0100
Subject: [PATCH 156/231] #12538 added url in new notificacions

---
 pandora_console/include/class/ConsoleSupervisor.php | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/pandora_console/include/class/ConsoleSupervisor.php b/pandora_console/include/class/ConsoleSupervisor.php
index 668ace85c5..9ae7b09921 100644
--- a/pandora_console/include/class/ConsoleSupervisor.php
+++ b/pandora_console/include/class/ConsoleSupervisor.php
@@ -3239,6 +3239,7 @@ class ConsoleSupervisor
                     'title'             => __('Your system has a total of %s modules', $total_modules),
                     'message'           => __('This is higher than the recommended maximum 80,000 modules per node. This may result in poor performance of your system.'),
                     'icon_notification' => self::ICON_HEADSUP,
+                    'url'               => '__url__index.php?sec=gagente&sec2=godmode/agentes/modificar_agente',
                 ]
             );
         } else {
@@ -3270,6 +3271,7 @@ class ConsoleSupervisor
                         'title'             => __('Your system has an average of %s modules per agent', $total_modules['modules_by_agent']),
                         'message'           => __('This is higher than the recommended maximum (200). This may result in poor performance of your system.'),
                         'icon_notification' => self::ICON_HEADSUP,
+                        'url'               => '__url__index.php?sec=gagente&sec2=godmode/agentes/modificar_agente',
                     ]
                 );
                 $show_warning = true;

From 5d5bfc654dfaad238c62540ba0819fef810e8f86 Mon Sep 17 00:00:00 2001
From: Daniel Cebrian <daniel.cebrian@pandorafms.com>
Date: Mon, 22 Jan 2024 12:39:43 +0100
Subject: [PATCH 157/231] #12753 fixed os command injection

---
 pandora_console/include/ajax/events.php | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/pandora_console/include/ajax/events.php b/pandora_console/include/ajax/events.php
index 007ba77d89..851a22040b 100644
--- a/pandora_console/include/ajax/events.php
+++ b/pandora_console/include/ajax/events.php
@@ -1335,6 +1335,15 @@ if ($perform_event_response === true) {
     }
 
     $command = $event_response['target'];
+
+    // Prevent OS command injection.
+    $prev_command = get_events_get_response_target($event_id, $event_response, $server_id);
+
+    if ($command !== $prev_command) {
+        echo __('unauthorized');
+        return;
+    }
+
     $command_timeout = ($event_response !== false) ? $event_response['command_timeout'] : 90;
     if (enterprise_installed() === true) {
         if ($event_response !== false

From 82c8d519b47a50a69bd65b77345a8035ebf828f6 Mon Sep 17 00:00:00 2001
From: alejandro <alejandro.sanchez@pandorafms.com>
Date: Mon, 22 Jan 2024 13:25:43 +0100
Subject: [PATCH 158/231] update grafana extension

---
 pandora_console/extensions/grafana/index.php  | 2 +-
 pandora_console/extensions/grafana/query.php  | 4 ++--
 pandora_console/extensions/grafana/search.php | 2 +-
 3 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/pandora_console/extensions/grafana/index.php b/pandora_console/extensions/grafana/index.php
index e925e56233..d46b60d59c 100644
--- a/pandora_console/extensions/grafana/index.php
+++ b/pandora_console/extensions/grafana/index.php
@@ -3,7 +3,7 @@
 // Allow Grafana proxy
 header('Access-Control-Allow-Origin:  *');
 header('Access-Control-Allow-Methods: GET, POST, OPTIONS');
-header('Access-Control-Allow-Headers: Origin, Content-Type, Accept, X-Grafana-Org-Id, X-Grafana-NoCache, X-DS-Authorization');
+header('Access-Control-Allow-Headers: Origin, Content-Type, Accept, X-Grafana-Org-Id, X-Grafana-NoCache, X-DS-Authorization, Authorization');
 
 // Get all request headers
 $headers = apache_request_headers();
diff --git a/pandora_console/extensions/grafana/query.php b/pandora_console/extensions/grafana/query.php
index c5812a32c9..3c7a843542 100644
--- a/pandora_console/extensions/grafana/query.php
+++ b/pandora_console/extensions/grafana/query.php
@@ -2,7 +2,7 @@
 // Allow Grafana proxy.
 header('Access-Control-Allow-Origin:  *');
 header('Access-Control-Allow-Methods: GET, POST, OPTIONS');
-header('Access-Control-Allow-Headers: Origin, Content-Type, Accept, X-Grafana-Org-Id, X-Grafana-NoCache, X-DS-Authorization');
+header('Access-Control-Allow-Headers: Origin, Content-Type, Accept, X-Grafana-Org-Id, X-Grafana-NoCache, X-DS-Authorization, Authorization');
 
 // Get all request headers.
 $headers = apache_request_headers();
@@ -38,7 +38,7 @@ if ($headers['Authorization']) {
                 $result_data = [];
 
                 // Decode target data sent by datasource plugin in Grafana
-                $target_data = json_decode($target['target'], true);
+                $target_data = $target['target'];
 
                 if ($target_data['module']) {
                     // Get module name as target if not defined in Grafana.
diff --git a/pandora_console/extensions/grafana/search.php b/pandora_console/extensions/grafana/search.php
index 48a4f819a9..9193dd290e 100644
--- a/pandora_console/extensions/grafana/search.php
+++ b/pandora_console/extensions/grafana/search.php
@@ -3,7 +3,7 @@
 // Allow Grafana proxy
 header('Access-Control-Allow-Origin:  *');
 header('Access-Control-Allow-Methods: GET, POST, OPTIONS');
-header('Access-Control-Allow-Headers: Origin, Content-Type, Accept, X-Grafana-Org-Id, X-Grafana-NoCache, X-DS-Authorization');
+header('Access-Control-Allow-Headers: Origin, Content-Type, Accept, X-Grafana-Org-Id, X-Grafana-NoCache, X-DS-Authorization, Authorization');
 
 // Get all request headers
 $headers = apache_request_headers();

From 54e3f94d62cd0dfdeaa84ee5c6c3edb790c59268 Mon Sep 17 00:00:00 2001
From: Daniel Cebrian <daniel.cebrian@pandorafms.com>
Date: Mon, 22 Jan 2024 15:07:25 +0100
Subject: [PATCH 159/231] #12782 fixed button sound events style in events

---
 pandora_console/include/styles/events.css   | 16 ++++++++++++++++
 pandora_console/operation/events/events.php |  2 +-
 2 files changed, 17 insertions(+), 1 deletion(-)

diff --git a/pandora_console/include/styles/events.css b/pandora_console/include/styles/events.css
index 9a69ea8c56..4e3da3194c 100644
--- a/pandora_console/include/styles/events.css
+++ b/pandora_console/include/styles/events.css
@@ -569,3 +569,19 @@ div.container-filter-buttons {
 .ui-dialog.modal-sound .ui-widget-header {
   display: flex !important;
 }
+
+.responsive_button_sound_events {
+  margin-right: 25% !important;
+}
+
+@media (max-width: 1640px) {
+  .responsive_button_sound_events {
+    margin-right: 10% !important;
+  }
+}
+
+@media (max-width: 1420px) {
+  .responsive_button_sound_events {
+    margin-right: 10px !important;
+  }
+}
diff --git a/pandora_console/operation/events/events.php b/pandora_console/operation/events/events.php
index 79fe087a52..31d4336928 100644
--- a/pandora_console/operation/events/events.php
+++ b/pandora_console/operation/events/events.php
@@ -2951,8 +2951,8 @@ if (check_acl(
         false,
         'openSoundEventsDialog("'.$data_sound.'")',
         [
+            'class'          => 'responsive_button_sound_events',
             'icon'           => 'sound',
-            'style'          => 'margin-right: 25% !important',
             'minimize-arrow' => true,
             'span_style'     => 'width: 100%',
         ],

From 6948306d820c48a090dabb4ea47ad75a4f920692 Mon Sep 17 00:00:00 2001
From: Daniel Maya <daniel.maya@pandorafms.com>
Date: Mon, 22 Jan 2024 17:29:51 +0100
Subject: [PATCH 160/231] #12767 Fixed password 3

---
 pandora_console/include/functions_html.php | 18 +++++++++++++-----
 1 file changed, 13 insertions(+), 5 deletions(-)

diff --git a/pandora_console/include/functions_html.php b/pandora_console/include/functions_html.php
index 06ab07598d..7052450b5f 100644
--- a/pandora_console/include/functions_html.php
+++ b/pandora_console/include/functions_html.php
@@ -2728,8 +2728,8 @@ function html_print_input_text_extended(
     if ($hide_div_eye !== false) {
         echo "<script>
         $(document).ready (function () {
-            $('input[name=\"".$name."\"]').val(\"".$value."\")
-            
+            $('input[name=\"".$name."\"]').val(\"".$value."\");
+
             observerInputPassword('".$name."');
         });
         </script>";
@@ -2746,9 +2746,11 @@ function html_print_input_text_extended(
     ];
 
     foreach ($attrs as $attribute => $default) {
-        if (array_key_exists($attribute, $attributes)) {
+        if (array_key_exists($attribute, $attributes)
+            || ($password === true && $attribute === 'value')
+        ) {
             continue;
-        } //end if
+        }
 
         /*
          * Remember, this next code have a $$ that for example there is a var as
@@ -2758,7 +2760,7 @@ function html_print_input_text_extended(
          *
          */
 
-        // Exact operator because we want to show "0" on the value
+        // Exact operator because we want to show "0" on the value.
         if ($attribute !== '') {
             $output .= $attribute.'="'.$$attribute.'" ';
         } else if ($default != '') {
@@ -2789,6 +2791,12 @@ function html_print_input_text_extended(
             ],
             true
         );
+
+        echo "<script>
+        $(document).ready (function () {
+            $('input[name=\"".$name."\"]').val(\"".$value.'");
+        });
+        </script>';
     }
 
     if (!$return) {

From d4c5d2f31637451339d191d720d325e00ccc68e2 Mon Sep 17 00:00:00 2001
From: artica <artica.devel@gmail.com>
Date: Tue, 23 Jan 2024 01:00:29 +0100
Subject: [PATCH 161/231] Auto-updated build strings.

---
 pandora_agents/unix/DEBIAN/control                    | 2 +-
 pandora_agents/unix/DEBIAN/make_deb_package.sh        | 2 +-
 pandora_agents/unix/pandora_agent                     | 2 +-
 pandora_agents/unix/pandora_agent.redhat.spec         | 2 +-
 pandora_agents/unix/pandora_agent.redhat_bin.el8.spec | 2 +-
 pandora_agents/unix/pandora_agent.redhat_bin.el9.spec | 2 +-
 pandora_agents/unix/pandora_agent.redhat_bin.spec     | 2 +-
 pandora_agents/unix/pandora_agent.spec                | 2 +-
 pandora_agents/unix/pandora_agent_installer           | 2 +-
 pandora_agents/win32/installer/pandora.mpi            | 2 +-
 pandora_agents/win32/pandora.cc                       | 2 +-
 pandora_agents/win32/versioninfo.rc                   | 2 +-
 pandora_console/DEBIAN/control                        | 2 +-
 pandora_console/DEBIAN/make_deb_package.sh            | 2 +-
 pandora_console/include/config_process.php            | 2 +-
 pandora_console/install.php                           | 2 +-
 pandora_console/pandora_console.redhat.spec           | 2 +-
 pandora_console/pandora_console.rhel7.spec            | 2 +-
 pandora_console/pandora_console.spec                  | 2 +-
 pandora_server/DEBIAN/control                         | 2 +-
 pandora_server/DEBIAN/make_deb_package.sh             | 2 +-
 pandora_server/lib/PandoraFMS/Config.pm               | 2 +-
 pandora_server/lib/PandoraFMS/PluginTools.pm          | 2 +-
 pandora_server/pandora_server.redhat.spec             | 2 +-
 pandora_server/pandora_server.spec                    | 2 +-
 pandora_server/pandora_server_installer               | 2 +-
 pandora_server/util/pandora_db.pl                     | 2 +-
 pandora_server/util/pandora_manage.pl                 | 2 +-
 28 files changed, 28 insertions(+), 28 deletions(-)

diff --git a/pandora_agents/unix/DEBIAN/control b/pandora_agents/unix/DEBIAN/control
index 4fd5136eee..e7c241251a 100644
--- a/pandora_agents/unix/DEBIAN/control
+++ b/pandora_agents/unix/DEBIAN/control
@@ -1,5 +1,5 @@
 package: pandorafms-agent-unix
-Version: 7.0NG.775-240122
+Version: 7.0NG.775-240123
 Architecture: all
 Priority: optional
 Section: admin
diff --git a/pandora_agents/unix/DEBIAN/make_deb_package.sh b/pandora_agents/unix/DEBIAN/make_deb_package.sh
index a84d1c1048..00e1bec872 100644
--- a/pandora_agents/unix/DEBIAN/make_deb_package.sh
+++ b/pandora_agents/unix/DEBIAN/make_deb_package.sh
@@ -14,7 +14,7 @@
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 # GNU General Public License for more details.
 
-pandora_version="7.0NG.775-240122"
+pandora_version="7.0NG.775-240123"
 
 echo "Test if you has the tools for to make the packages."
 whereis dpkg-deb | cut -d":" -f2 | grep dpkg-deb > /dev/null
diff --git a/pandora_agents/unix/pandora_agent b/pandora_agents/unix/pandora_agent
index 1bdfa2c98d..40317705f1 100755
--- a/pandora_agents/unix/pandora_agent
+++ b/pandora_agents/unix/pandora_agent
@@ -1039,7 +1039,7 @@ my $Sem = undef;
 my $ThreadSem = undef;
 
 use constant AGENT_VERSION => '7.0NG.775';
-use constant AGENT_BUILD => '240122';
+use constant AGENT_BUILD => '240123';
 
 # Agent log default file size maximum and instances
 use constant DEFAULT_MAX_LOG_SIZE => 600000;
diff --git a/pandora_agents/unix/pandora_agent.redhat.spec b/pandora_agents/unix/pandora_agent.redhat.spec
index 9d6bcf8f51..8ed67cacd8 100644
--- a/pandora_agents/unix/pandora_agent.redhat.spec
+++ b/pandora_agents/unix/pandora_agent.redhat.spec
@@ -4,7 +4,7 @@
 %global __os_install_post %{nil}
 %define name        pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240122
+%define release     240123
 
 Summary:            Pandora FMS Linux agent, PERL version
 Name:               %{name}
diff --git a/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec b/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec
index 5b9e48578d..e073b7a1b6 100644
--- a/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec
+++ b/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec
@@ -5,7 +5,7 @@
 %define name        pandorafms_agent_linux_bin
 %define source_name pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240122
+%define release     240123
 %define debug_package %{nil}
 
 Summary:            Pandora FMS Linux agent, binary version
diff --git a/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec b/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec
index 8ed84f4eb2..ca44c46126 100644
--- a/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec
+++ b/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec
@@ -5,7 +5,7 @@
 %define name        pandorafms_agent_linux_bin
 %define source_name pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240122
+%define release     240123
 %define debug_package %{nil}
 
 Summary:            Pandora FMS Linux agent, binary version
diff --git a/pandora_agents/unix/pandora_agent.redhat_bin.spec b/pandora_agents/unix/pandora_agent.redhat_bin.spec
index e1ac0c3dd6..857491d509 100644
--- a/pandora_agents/unix/pandora_agent.redhat_bin.spec
+++ b/pandora_agents/unix/pandora_agent.redhat_bin.spec
@@ -5,7 +5,7 @@
 %define name        pandorafms_agent_linux_bin
 %define source_name pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240122
+%define release     240123
 
 Summary:            Pandora FMS Linux agent, binary version
 Name:               %{name}
diff --git a/pandora_agents/unix/pandora_agent.spec b/pandora_agents/unix/pandora_agent.spec
index 710699686d..1491df0b07 100644
--- a/pandora_agents/unix/pandora_agent.spec
+++ b/pandora_agents/unix/pandora_agent.spec
@@ -4,7 +4,7 @@
 %global __os_install_post %{nil}
 %define name        pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240122
+%define release     240123
 
 Summary:            Pandora FMS Linux agent, PERL version
 Name:               %{name}
diff --git a/pandora_agents/unix/pandora_agent_installer b/pandora_agents/unix/pandora_agent_installer
index 54a64fa46d..0232a6bf8c 100755
--- a/pandora_agents/unix/pandora_agent_installer
+++ b/pandora_agents/unix/pandora_agent_installer
@@ -10,7 +10,7 @@
 # **********************************************************************
 
 PI_VERSION="7.0NG.775"
-PI_BUILD="240122"
+PI_BUILD="240123"
 OS_NAME=`uname -s`
 
 FORCE=0
diff --git a/pandora_agents/win32/installer/pandora.mpi b/pandora_agents/win32/installer/pandora.mpi
index efc085bfe6..74ffb7b496 100644
--- a/pandora_agents/win32/installer/pandora.mpi
+++ b/pandora_agents/win32/installer/pandora.mpi
@@ -186,7 +186,7 @@ UpgradeApplicationID
 {}
 
 Version
-{240122}
+{240123}
 
 ViewReadme
 {Yes}
diff --git a/pandora_agents/win32/pandora.cc b/pandora_agents/win32/pandora.cc
index 2a05f4e9ce..8e094eedae 100644
--- a/pandora_agents/win32/pandora.cc
+++ b/pandora_agents/win32/pandora.cc
@@ -30,7 +30,7 @@ using namespace Pandora;
 using namespace Pandora_Strutils;
 
 #define PATH_SIZE    _MAX_PATH+1
-#define PANDORA_VERSION ("7.0NG.775 Build 240122")
+#define PANDORA_VERSION ("7.0NG.775 Build 240123")
 
 string pandora_path;
 string pandora_dir;
diff --git a/pandora_agents/win32/versioninfo.rc b/pandora_agents/win32/versioninfo.rc
index 7600b129ae..b7d17d6756 100644
--- a/pandora_agents/win32/versioninfo.rc
+++ b/pandora_agents/win32/versioninfo.rc
@@ -11,7 +11,7 @@ BEGIN
       VALUE "LegalCopyright", "Pandora FMS"
       VALUE "OriginalFilename", "PandoraAgent.exe"
       VALUE "ProductName", "Pandora FMS Windows Agent"
-      VALUE "ProductVersion", "(7.0NG.775(Build 240122))"
+      VALUE "ProductVersion", "(7.0NG.775(Build 240123))"
       VALUE "FileVersion", "1.0.0.0"
     END
   END
diff --git a/pandora_console/DEBIAN/control b/pandora_console/DEBIAN/control
index 6ba70f63f8..4d832ca478 100644
--- a/pandora_console/DEBIAN/control
+++ b/pandora_console/DEBIAN/control
@@ -1,5 +1,5 @@
 package: pandorafms-console
-Version: 7.0NG.775-240122
+Version: 7.0NG.775-240123
 Architecture: all
 Priority: optional
 Section: admin
diff --git a/pandora_console/DEBIAN/make_deb_package.sh b/pandora_console/DEBIAN/make_deb_package.sh
index 69659ab510..95ee569569 100644
--- a/pandora_console/DEBIAN/make_deb_package.sh
+++ b/pandora_console/DEBIAN/make_deb_package.sh
@@ -14,7 +14,7 @@
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 # GNU General Public License for more details.
 
-pandora_version="7.0NG.775-240122"
+pandora_version="7.0NG.775-240123"
 
 package_pear=0
 package_pandora=1
diff --git a/pandora_console/include/config_process.php b/pandora_console/include/config_process.php
index 68a52be97d..6c993cc7ca 100644
--- a/pandora_console/include/config_process.php
+++ b/pandora_console/include/config_process.php
@@ -20,7 +20,7 @@
 /**
  * Pandora build version and version
  */
-$build_version = 'PC240122';
+$build_version = 'PC240123';
 $pandora_version = 'v7.0NG.775';
 
 // Do not overwrite default timezone set if defined.
diff --git a/pandora_console/install.php b/pandora_console/install.php
index a5765f9bb2..6d491a85cb 100644
--- a/pandora_console/install.php
+++ b/pandora_console/install.php
@@ -131,7 +131,7 @@
         <div style='padding-bottom: 50px'>
             <?php
             $version = '7.0NG.775';
-            $build = '240122';
+            $build = '240123';
             $banner = "v$version Build $build";
             error_reporting(0);
 
diff --git a/pandora_console/pandora_console.redhat.spec b/pandora_console/pandora_console.redhat.spec
index b8cb1c4e8e..240363e351 100644
--- a/pandora_console/pandora_console.redhat.spec
+++ b/pandora_console/pandora_console.redhat.spec
@@ -6,7 +6,7 @@
 %define debug_package %{nil}
 %define name        pandorafms_console
 %define version     7.0NG.775
-%define release     240122
+%define release     240123
 
 # User and Group under which Apache is running
 %define httpd_name  httpd
diff --git a/pandora_console/pandora_console.rhel7.spec b/pandora_console/pandora_console.rhel7.spec
index 9d073814b5..4bc4adcc85 100644
--- a/pandora_console/pandora_console.rhel7.spec
+++ b/pandora_console/pandora_console.rhel7.spec
@@ -6,7 +6,7 @@
 %define debug_package %{nil}
 %define name        pandorafms_console
 %define version     7.0NG.775
-%define release     240122
+%define release     240123
 
 # User and Group under which Apache is running
 %define httpd_name  httpd
diff --git a/pandora_console/pandora_console.spec b/pandora_console/pandora_console.spec
index 059e4d94ef..e6969db9dc 100644
--- a/pandora_console/pandora_console.spec
+++ b/pandora_console/pandora_console.spec
@@ -3,7 +3,7 @@
 #
 %define name        pandorafms_console
 %define version     7.0NG.775
-%define release     240122
+%define release     240123
 %define httpd_name      httpd
 # User and Group under which Apache is running
 %define httpd_name  apache2
diff --git a/pandora_server/DEBIAN/control b/pandora_server/DEBIAN/control
index c4ab00d63c..31213f6c47 100644
--- a/pandora_server/DEBIAN/control
+++ b/pandora_server/DEBIAN/control
@@ -1,5 +1,5 @@
 package: pandorafms-server
-Version: 7.0NG.775-240122
+Version: 7.0NG.775-240123
 Architecture: all
 Priority: optional
 Section: admin
diff --git a/pandora_server/DEBIAN/make_deb_package.sh b/pandora_server/DEBIAN/make_deb_package.sh
index 72d2ed0de6..dae47c3d07 100644
--- a/pandora_server/DEBIAN/make_deb_package.sh
+++ b/pandora_server/DEBIAN/make_deb_package.sh
@@ -14,7 +14,7 @@
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 # GNU General Public License for more details.
 
-pandora_version="7.0NG.775-240122"
+pandora_version="7.0NG.775-240123"
 
 package_cpan=0
 package_pandora=1
diff --git a/pandora_server/lib/PandoraFMS/Config.pm b/pandora_server/lib/PandoraFMS/Config.pm
index 6802cf94ca..eb23fcce89 100644
--- a/pandora_server/lib/PandoraFMS/Config.pm
+++ b/pandora_server/lib/PandoraFMS/Config.pm
@@ -46,7 +46,7 @@ our @EXPORT = qw(
 
 # version: Defines actual version of Pandora Server for this module only
 my $pandora_version = "7.0NG.775";
-my $pandora_build = "240122";
+my $pandora_build = "240123";
 our $VERSION = $pandora_version." ".$pandora_build;
 
 # Setup hash
diff --git a/pandora_server/lib/PandoraFMS/PluginTools.pm b/pandora_server/lib/PandoraFMS/PluginTools.pm
index ccd9d8f7dd..02ea63cb23 100644
--- a/pandora_server/lib/PandoraFMS/PluginTools.pm
+++ b/pandora_server/lib/PandoraFMS/PluginTools.pm
@@ -34,7 +34,7 @@ our @ISA = qw(Exporter);
 
 # version: Defines actual version of Pandora Server for this module only
 my $pandora_version = "7.0NG.775";
-my $pandora_build = "240122";
+my $pandora_build = "240123";
 our $VERSION = $pandora_version." ".$pandora_build;
 
 our %EXPORT_TAGS = ( 'all' => [ qw() ] );
diff --git a/pandora_server/pandora_server.redhat.spec b/pandora_server/pandora_server.redhat.spec
index c74934e734..251e09b74e 100644
--- a/pandora_server/pandora_server.redhat.spec
+++ b/pandora_server/pandora_server.redhat.spec
@@ -7,7 +7,7 @@
 %define debug_package %{nil}
 %define name        pandorafms_server
 %define version     7.0NG.775
-%define release     240122
+%define release     240123
 
 Summary:            Pandora FMS Server
 Name:               %{name}
diff --git a/pandora_server/pandora_server.spec b/pandora_server/pandora_server.spec
index dc859972e9..6c05f78ac2 100644
--- a/pandora_server/pandora_server.spec
+++ b/pandora_server/pandora_server.spec
@@ -4,7 +4,7 @@
 %global __os_install_post %{nil}
 %define name        pandorafms_server
 %define version     7.0NG.775
-%define release     240122
+%define release     240123
 
 Summary:            Pandora FMS Server
 Name:               %{name}
diff --git a/pandora_server/pandora_server_installer b/pandora_server/pandora_server_installer
index 18312cc95f..d9a71e864f 100755
--- a/pandora_server/pandora_server_installer
+++ b/pandora_server/pandora_server_installer
@@ -9,7 +9,7 @@
 # **********************************************************************
 
 PI_VERSION="7.0NG.775"
-PI_BUILD="240122"
+PI_BUILD="240123"
 
 MODE=$1
 if [ $# -gt 1 ]; then
diff --git a/pandora_server/util/pandora_db.pl b/pandora_server/util/pandora_db.pl
index 9c9ad0d5a0..29545f538f 100755
--- a/pandora_server/util/pandora_db.pl
+++ b/pandora_server/util/pandora_db.pl
@@ -38,7 +38,7 @@ use PandoraFMS::Config;
 use PandoraFMS::DB;
 
 # version: define current version
-my $version = "7.0NG.775 Build 240122";
+my $version = "7.0NG.775 Build 240123";
 
 # Pandora server configuration
 my %conf;
diff --git a/pandora_server/util/pandora_manage.pl b/pandora_server/util/pandora_manage.pl
index 2d010312d9..2d1eec0b82 100755
--- a/pandora_server/util/pandora_manage.pl
+++ b/pandora_server/util/pandora_manage.pl
@@ -36,7 +36,7 @@ use Encode::Locale;
 Encode::Locale::decode_argv;
 
 # version: define current version
-my $version = "7.0NG.775 Build 240122";
+my $version = "7.0NG.775 Build 240123";
 
 # save program name for logging
 my $progname = basename($0);

From 510c28bb0925943cb74eb4bcda1b86d3e7349898 Mon Sep 17 00:00:00 2001
From: Jonathan <jonathan.leon@pandorafms.com>
Date: Tue, 23 Jan 2024 10:56:31 +0100
Subject: [PATCH 162/231] #12698 fix welcome messages

---
 .../lib/TacticalView/GeneralTacticalView.php  | 39 +++++++++++++------
 1 file changed, 27 insertions(+), 12 deletions(-)

diff --git a/pandora_console/include/lib/TacticalView/GeneralTacticalView.php b/pandora_console/include/lib/TacticalView/GeneralTacticalView.php
index e00bc8fcf8..06e27e4fd6 100644
--- a/pandora_console/include/lib/TacticalView/GeneralTacticalView.php
+++ b/pandora_console/include/lib/TacticalView/GeneralTacticalView.php
@@ -224,18 +224,33 @@ class GeneralTacticalView
         $zone_location = $date_zone->getLocation();
         $latitude = $zone_location['latitude'];
 
-        $emojiOptions = [
-            'have_good_day'   => __('Have a good day %s ✌', $name),
-            'welcome_back'    => __('Welcome back! %s 👋', $name),
-            'merry_christmas' => __('Welcome back! %s 🎅', $name),
-            'good_morning'    => __('Good morning, %s! ☕', $name),
-            'good_evening'    => __('Good evening, %s 🌇', $name),
-            'good_night'      => __('Good night, %s 🌕', $name),
-            'happy_summer'    => __('Happy summer, %s 🌞', $name),
-            'happy_winter'    => __('Happy winter, %s ⛄', $name),
-            'happy_autumn'    => __('Happy autumn, %s 🍂', $name),
-            'happy_spring'    => __('Happy spring, %s 🌻', $name),
-        ];
+        if ($name !== '') {
+            $emojiOptions = [
+                'have_good_day'   => __('Have a good day %s ✌', $name),
+                'welcome_back'    => __('Welcome back! %s 👋', $name),
+                'merry_christmas' => __('Welcome back! %s 🎅', $name),
+                'good_morning'    => __('Good morning, %s! ☕', $name),
+                'good_evening'    => __('Good evening, %s 🌇', $name),
+                'good_night'      => __('Good night, %s 🌕', $name),
+                'happy_summer'    => __('Happy summer, %s 🌞', $name),
+                'happy_winter'    => __('Happy winter, %s ⛄', $name),
+                'happy_autumn'    => __('Happy autumn, %s 🍂', $name),
+                'happy_spring'    => __('Happy spring, %s 🌻', $name),
+            ];
+        } else {
+            $emojiOptions = [
+                'have_good_day'   => __('Have a good day ✌'),
+                'welcome_back'    => __('Welcome back! 👋'),
+                'merry_christmas' => __('Welcome back! 🎅'),
+                'good_morning'    => __('Good morning! ☕'),
+                'good_evening'    => __('Good evening 🌇'),
+                'good_night'      => __('Good night 🌕'),
+                'happy_summer'    => __('Happy summer 🌞'),
+                'happy_winter'    => __('Happy winter ⛄'),
+                'happy_autumn'    => __('Happy autumn 🍂'),
+                'happy_spring'    => __('Happy spring 🌻'),
+            ];
+        }
 
         // Welcome back.
         $user_last_connect = $user['last_connect'];

From cd27935b4c762621ec855471023020fc1f95bd9a Mon Sep 17 00:00:00 2001
From: Jonathan <jonathan.leon@pandorafms.com>
Date: Tue, 23 Jan 2024 11:26:15 +0100
Subject: [PATCH 163/231] #12623 fix menu inventory modules

---
 pandora_console/include/functions_menu.php | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/pandora_console/include/functions_menu.php b/pandora_console/include/functions_menu.php
index ca67825da1..37d4e11c38 100644
--- a/pandora_console/include/functions_menu.php
+++ b/pandora_console/include/functions_menu.php
@@ -155,6 +155,8 @@ function menu_print_menu(&$menu)
         }
     } else if ($sec2 === 'godmode/users/configure_user') {
         $sec2 = 'godmode/users/user_list';
+    } else if ($sec2 === 'godmode/modules/manage_inventory_modules_form') {
+        $sec2 = 'godmode/modules/manage_inventory_modules';
     } else if ($sec2 === 'godmode/groups/configure_group') {
         $sec2 = 'godmode/groups/group_list';
     } else if ($sec2 === 'godmode/users/configure_profile') {

From fc08e9b9b657df8c3b3e2454c1cb10f0f311c281 Mon Sep 17 00:00:00 2001
From: Jonathan <jonathan.leon@pandorafms.com>
Date: Tue, 23 Jan 2024 11:27:15 +0100
Subject: [PATCH 164/231] #12792 fix 500 change agent inventory

---
 pandora_console/include/ajax/inventory.ajax.php | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/pandora_console/include/ajax/inventory.ajax.php b/pandora_console/include/ajax/inventory.ajax.php
index 71fac8d0ec..207adde03d 100644
--- a/pandora_console/include/ajax/inventory.ajax.php
+++ b/pandora_console/include/ajax/inventory.ajax.php
@@ -26,7 +26,8 @@
  * ============================================================================
  */
 
- check_login();
+require_once $config['homedir'].'/include/functions_inventory.php';
+check_login();
 
 if (is_ajax() === true) {
     $id_agent = get_parameter('id_agent', '0');

From 3026c9d50dc47aac8932b859f7b6fb8a2e6e0ff4 Mon Sep 17 00:00:00 2001
From: Jonathan <jonathan.leon@pandorafms.com>
Date: Tue, 23 Jan 2024 16:27:07 +0100
Subject: [PATCH 165/231] #12786 fix wizard open out of index

---
 pandora_console/general/register.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pandora_console/general/register.php b/pandora_console/general/register.php
index 759e319dbd..ed583c7ed4 100644
--- a/pandora_console/general/register.php
+++ b/pandora_console/general/register.php
@@ -100,7 +100,7 @@ if ($initial && users_is_admin()) {
     );
 }
 
-if (check_acl($config['id_user'], 0, 'AW')) {
+if (check_acl($config['id_user'], 0, 'AW') && empty($sec2)) {
     $welcome = !$initial;
     try {
         $welcome_window = new WelcomeWindow($welcome);

From 538177c3e5b34df01527948183722236b2dac274 Mon Sep 17 00:00:00 2001
From: Daniel Cebrian <daniel.cebrian@pandorafms.com>
Date: Tue, 23 Jan 2024 17:08:06 +0100
Subject: [PATCH 166/231] #12753 fixed vul command in ajax

---
 pandora_console/include/functions_events.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pandora_console/include/functions_events.php b/pandora_console/include/functions_events.php
index cd22b55f1b..e328f4cd91 100644
--- a/pandora_console/include/functions_events.php
+++ b/pandora_console/include/functions_events.php
@@ -3804,7 +3804,7 @@ function events_get_response_target(
     }
 
     $event = db_get_row('tevento', 'id_evento', $event_id);
-    $target = io_safe_output($event_response['target']);
+    $target = io_safe_output(db_get_value('target', 'tevent_response', 'id', $event_response['id']));
 
     // Replace parameters response.
     if (isset($response_parameters) === true

From 1bc9bc609561f76c7f9040c3f3291c5c7df8d365 Mon Sep 17 00:00:00 2001
From: Calvo <luis.calvo@pandorafms.com>
Date: Tue, 23 Jan 2024 17:52:06 +0100
Subject: [PATCH 167/231] Fix MR

---
 pandora_console/extras/mr/68.sql | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/pandora_console/extras/mr/68.sql b/pandora_console/extras/mr/68.sql
index ed186c4f91..7ab19fe840 100644
--- a/pandora_console/extras/mr/68.sql
+++ b/pandora_console/extras/mr/68.sql
@@ -8,7 +8,6 @@ ALTER TABLE `tevent_sound` MODIFY COLUMN `sound` text NULL;
 ALTER TABLE `treport_content` MODIFY COLUMN `use_prefix_notation` tinyint unsigned NOT NULL DEFAULT 1;
 ALTER TABLE `treport_content_template` MODIFY COLUMN `use_prefix_notation` tinyint unsigned NOT NULL DEFAULT 1;
 ALTER TABLE `tsesion_filter` MODIFY COLUMN `id_name` text NULL;
-ALTER TABLE `tsesion_filter` MODIFY COLUMN `period` text NULL;
 ALTER TABLE `tsesion_filter` MODIFY COLUMN `ip` text NULL;
 ALTER TABLE `tsesion_filter` MODIFY COLUMN `type` text NULL;
 ALTER TABLE `tsesion_filter` MODIFY COLUMN `user` text NULL;
@@ -17,4 +16,4 @@ ADD COLUMN `id_agent_data` int not null default 0 AFTER `script_type`;
 ALTER TABLE `tusuario` CHANGE COLUMN `metaconsole_data_section` `metaconsole_data_section` TEXT NOT NULL DEFAULT '' ;
 ALTER TABLE `tmensajes` ADD COLUMN `icon_notification` VARCHAR(250) NULL DEFAULT NULL AFTER `url`;
 
-COMMIT;
+COMMIT;
\ No newline at end of file

From dd252daaf2072a2435b67e788117bbe9d3c4f18f Mon Sep 17 00:00:00 2001
From: artica <artica.devel@gmail.com>
Date: Wed, 24 Jan 2024 01:00:32 +0100
Subject: [PATCH 168/231] Auto-updated build strings.

---
 pandora_agents/unix/DEBIAN/control                    | 2 +-
 pandora_agents/unix/DEBIAN/make_deb_package.sh        | 2 +-
 pandora_agents/unix/pandora_agent                     | 2 +-
 pandora_agents/unix/pandora_agent.redhat.spec         | 2 +-
 pandora_agents/unix/pandora_agent.redhat_bin.el8.spec | 2 +-
 pandora_agents/unix/pandora_agent.redhat_bin.el9.spec | 2 +-
 pandora_agents/unix/pandora_agent.redhat_bin.spec     | 2 +-
 pandora_agents/unix/pandora_agent.spec                | 2 +-
 pandora_agents/unix/pandora_agent_installer           | 2 +-
 pandora_agents/win32/installer/pandora.mpi            | 2 +-
 pandora_agents/win32/pandora.cc                       | 2 +-
 pandora_agents/win32/versioninfo.rc                   | 2 +-
 pandora_console/DEBIAN/control                        | 2 +-
 pandora_console/DEBIAN/make_deb_package.sh            | 2 +-
 pandora_console/include/config_process.php            | 2 +-
 pandora_console/install.php                           | 2 +-
 pandora_console/pandora_console.redhat.spec           | 2 +-
 pandora_console/pandora_console.rhel7.spec            | 2 +-
 pandora_console/pandora_console.spec                  | 2 +-
 pandora_server/DEBIAN/control                         | 2 +-
 pandora_server/DEBIAN/make_deb_package.sh             | 2 +-
 pandora_server/lib/PandoraFMS/Config.pm               | 2 +-
 pandora_server/lib/PandoraFMS/PluginTools.pm          | 2 +-
 pandora_server/pandora_server.redhat.spec             | 2 +-
 pandora_server/pandora_server.spec                    | 2 +-
 pandora_server/pandora_server_installer               | 2 +-
 pandora_server/util/pandora_db.pl                     | 2 +-
 pandora_server/util/pandora_manage.pl                 | 2 +-
 28 files changed, 28 insertions(+), 28 deletions(-)

diff --git a/pandora_agents/unix/DEBIAN/control b/pandora_agents/unix/DEBIAN/control
index e7c241251a..da5db137f5 100644
--- a/pandora_agents/unix/DEBIAN/control
+++ b/pandora_agents/unix/DEBIAN/control
@@ -1,5 +1,5 @@
 package: pandorafms-agent-unix
-Version: 7.0NG.775-240123
+Version: 7.0NG.775-240124
 Architecture: all
 Priority: optional
 Section: admin
diff --git a/pandora_agents/unix/DEBIAN/make_deb_package.sh b/pandora_agents/unix/DEBIAN/make_deb_package.sh
index 00e1bec872..4617d8e745 100644
--- a/pandora_agents/unix/DEBIAN/make_deb_package.sh
+++ b/pandora_agents/unix/DEBIAN/make_deb_package.sh
@@ -14,7 +14,7 @@
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 # GNU General Public License for more details.
 
-pandora_version="7.0NG.775-240123"
+pandora_version="7.0NG.775-240124"
 
 echo "Test if you has the tools for to make the packages."
 whereis dpkg-deb | cut -d":" -f2 | grep dpkg-deb > /dev/null
diff --git a/pandora_agents/unix/pandora_agent b/pandora_agents/unix/pandora_agent
index 40317705f1..4ec522db43 100755
--- a/pandora_agents/unix/pandora_agent
+++ b/pandora_agents/unix/pandora_agent
@@ -1039,7 +1039,7 @@ my $Sem = undef;
 my $ThreadSem = undef;
 
 use constant AGENT_VERSION => '7.0NG.775';
-use constant AGENT_BUILD => '240123';
+use constant AGENT_BUILD => '240124';
 
 # Agent log default file size maximum and instances
 use constant DEFAULT_MAX_LOG_SIZE => 600000;
diff --git a/pandora_agents/unix/pandora_agent.redhat.spec b/pandora_agents/unix/pandora_agent.redhat.spec
index 8ed67cacd8..2786cafe56 100644
--- a/pandora_agents/unix/pandora_agent.redhat.spec
+++ b/pandora_agents/unix/pandora_agent.redhat.spec
@@ -4,7 +4,7 @@
 %global __os_install_post %{nil}
 %define name        pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240123
+%define release     240124
 
 Summary:            Pandora FMS Linux agent, PERL version
 Name:               %{name}
diff --git a/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec b/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec
index e073b7a1b6..92cb781d5a 100644
--- a/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec
+++ b/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec
@@ -5,7 +5,7 @@
 %define name        pandorafms_agent_linux_bin
 %define source_name pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240123
+%define release     240124
 %define debug_package %{nil}
 
 Summary:            Pandora FMS Linux agent, binary version
diff --git a/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec b/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec
index ca44c46126..56dc5c9c0c 100644
--- a/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec
+++ b/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec
@@ -5,7 +5,7 @@
 %define name        pandorafms_agent_linux_bin
 %define source_name pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240123
+%define release     240124
 %define debug_package %{nil}
 
 Summary:            Pandora FMS Linux agent, binary version
diff --git a/pandora_agents/unix/pandora_agent.redhat_bin.spec b/pandora_agents/unix/pandora_agent.redhat_bin.spec
index 857491d509..858147650c 100644
--- a/pandora_agents/unix/pandora_agent.redhat_bin.spec
+++ b/pandora_agents/unix/pandora_agent.redhat_bin.spec
@@ -5,7 +5,7 @@
 %define name        pandorafms_agent_linux_bin
 %define source_name pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240123
+%define release     240124
 
 Summary:            Pandora FMS Linux agent, binary version
 Name:               %{name}
diff --git a/pandora_agents/unix/pandora_agent.spec b/pandora_agents/unix/pandora_agent.spec
index 1491df0b07..deff8bc50f 100644
--- a/pandora_agents/unix/pandora_agent.spec
+++ b/pandora_agents/unix/pandora_agent.spec
@@ -4,7 +4,7 @@
 %global __os_install_post %{nil}
 %define name        pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240123
+%define release     240124
 
 Summary:            Pandora FMS Linux agent, PERL version
 Name:               %{name}
diff --git a/pandora_agents/unix/pandora_agent_installer b/pandora_agents/unix/pandora_agent_installer
index 0232a6bf8c..9a94ff4cb4 100755
--- a/pandora_agents/unix/pandora_agent_installer
+++ b/pandora_agents/unix/pandora_agent_installer
@@ -10,7 +10,7 @@
 # **********************************************************************
 
 PI_VERSION="7.0NG.775"
-PI_BUILD="240123"
+PI_BUILD="240124"
 OS_NAME=`uname -s`
 
 FORCE=0
diff --git a/pandora_agents/win32/installer/pandora.mpi b/pandora_agents/win32/installer/pandora.mpi
index 74ffb7b496..dd51dcf708 100644
--- a/pandora_agents/win32/installer/pandora.mpi
+++ b/pandora_agents/win32/installer/pandora.mpi
@@ -186,7 +186,7 @@ UpgradeApplicationID
 {}
 
 Version
-{240123}
+{240124}
 
 ViewReadme
 {Yes}
diff --git a/pandora_agents/win32/pandora.cc b/pandora_agents/win32/pandora.cc
index 8e094eedae..22f49347f0 100644
--- a/pandora_agents/win32/pandora.cc
+++ b/pandora_agents/win32/pandora.cc
@@ -30,7 +30,7 @@ using namespace Pandora;
 using namespace Pandora_Strutils;
 
 #define PATH_SIZE    _MAX_PATH+1
-#define PANDORA_VERSION ("7.0NG.775 Build 240123")
+#define PANDORA_VERSION ("7.0NG.775 Build 240124")
 
 string pandora_path;
 string pandora_dir;
diff --git a/pandora_agents/win32/versioninfo.rc b/pandora_agents/win32/versioninfo.rc
index b7d17d6756..cf88101947 100644
--- a/pandora_agents/win32/versioninfo.rc
+++ b/pandora_agents/win32/versioninfo.rc
@@ -11,7 +11,7 @@ BEGIN
       VALUE "LegalCopyright", "Pandora FMS"
       VALUE "OriginalFilename", "PandoraAgent.exe"
       VALUE "ProductName", "Pandora FMS Windows Agent"
-      VALUE "ProductVersion", "(7.0NG.775(Build 240123))"
+      VALUE "ProductVersion", "(7.0NG.775(Build 240124))"
       VALUE "FileVersion", "1.0.0.0"
     END
   END
diff --git a/pandora_console/DEBIAN/control b/pandora_console/DEBIAN/control
index 4d832ca478..d23840e972 100644
--- a/pandora_console/DEBIAN/control
+++ b/pandora_console/DEBIAN/control
@@ -1,5 +1,5 @@
 package: pandorafms-console
-Version: 7.0NG.775-240123
+Version: 7.0NG.775-240124
 Architecture: all
 Priority: optional
 Section: admin
diff --git a/pandora_console/DEBIAN/make_deb_package.sh b/pandora_console/DEBIAN/make_deb_package.sh
index 95ee569569..4c11ce1bce 100644
--- a/pandora_console/DEBIAN/make_deb_package.sh
+++ b/pandora_console/DEBIAN/make_deb_package.sh
@@ -14,7 +14,7 @@
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 # GNU General Public License for more details.
 
-pandora_version="7.0NG.775-240123"
+pandora_version="7.0NG.775-240124"
 
 package_pear=0
 package_pandora=1
diff --git a/pandora_console/include/config_process.php b/pandora_console/include/config_process.php
index 6c993cc7ca..60dd8bf9a1 100644
--- a/pandora_console/include/config_process.php
+++ b/pandora_console/include/config_process.php
@@ -20,7 +20,7 @@
 /**
  * Pandora build version and version
  */
-$build_version = 'PC240123';
+$build_version = 'PC240124';
 $pandora_version = 'v7.0NG.775';
 
 // Do not overwrite default timezone set if defined.
diff --git a/pandora_console/install.php b/pandora_console/install.php
index 6d491a85cb..ab50a8ec91 100644
--- a/pandora_console/install.php
+++ b/pandora_console/install.php
@@ -131,7 +131,7 @@
         <div style='padding-bottom: 50px'>
             <?php
             $version = '7.0NG.775';
-            $build = '240123';
+            $build = '240124';
             $banner = "v$version Build $build";
             error_reporting(0);
 
diff --git a/pandora_console/pandora_console.redhat.spec b/pandora_console/pandora_console.redhat.spec
index 240363e351..0f0a52ce55 100644
--- a/pandora_console/pandora_console.redhat.spec
+++ b/pandora_console/pandora_console.redhat.spec
@@ -6,7 +6,7 @@
 %define debug_package %{nil}
 %define name        pandorafms_console
 %define version     7.0NG.775
-%define release     240123
+%define release     240124
 
 # User and Group under which Apache is running
 %define httpd_name  httpd
diff --git a/pandora_console/pandora_console.rhel7.spec b/pandora_console/pandora_console.rhel7.spec
index 4bc4adcc85..09ddf1fe41 100644
--- a/pandora_console/pandora_console.rhel7.spec
+++ b/pandora_console/pandora_console.rhel7.spec
@@ -6,7 +6,7 @@
 %define debug_package %{nil}
 %define name        pandorafms_console
 %define version     7.0NG.775
-%define release     240123
+%define release     240124
 
 # User and Group under which Apache is running
 %define httpd_name  httpd
diff --git a/pandora_console/pandora_console.spec b/pandora_console/pandora_console.spec
index e6969db9dc..8c87ebe591 100644
--- a/pandora_console/pandora_console.spec
+++ b/pandora_console/pandora_console.spec
@@ -3,7 +3,7 @@
 #
 %define name        pandorafms_console
 %define version     7.0NG.775
-%define release     240123
+%define release     240124
 %define httpd_name      httpd
 # User and Group under which Apache is running
 %define httpd_name  apache2
diff --git a/pandora_server/DEBIAN/control b/pandora_server/DEBIAN/control
index 31213f6c47..54a937ad6b 100644
--- a/pandora_server/DEBIAN/control
+++ b/pandora_server/DEBIAN/control
@@ -1,5 +1,5 @@
 package: pandorafms-server
-Version: 7.0NG.775-240123
+Version: 7.0NG.775-240124
 Architecture: all
 Priority: optional
 Section: admin
diff --git a/pandora_server/DEBIAN/make_deb_package.sh b/pandora_server/DEBIAN/make_deb_package.sh
index dae47c3d07..da1ba60728 100644
--- a/pandora_server/DEBIAN/make_deb_package.sh
+++ b/pandora_server/DEBIAN/make_deb_package.sh
@@ -14,7 +14,7 @@
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 # GNU General Public License for more details.
 
-pandora_version="7.0NG.775-240123"
+pandora_version="7.0NG.775-240124"
 
 package_cpan=0
 package_pandora=1
diff --git a/pandora_server/lib/PandoraFMS/Config.pm b/pandora_server/lib/PandoraFMS/Config.pm
index b1f43fea3a..5bc2fb63c4 100644
--- a/pandora_server/lib/PandoraFMS/Config.pm
+++ b/pandora_server/lib/PandoraFMS/Config.pm
@@ -46,7 +46,7 @@ our @EXPORT = qw(
 
 # version: Defines actual version of Pandora Server for this module only
 my $pandora_version = "7.0NG.775";
-my $pandora_build = "240123";
+my $pandora_build = "240124";
 our $VERSION = $pandora_version." ".$pandora_build;
 
 # Setup hash
diff --git a/pandora_server/lib/PandoraFMS/PluginTools.pm b/pandora_server/lib/PandoraFMS/PluginTools.pm
index 02ea63cb23..c9a94e7afa 100644
--- a/pandora_server/lib/PandoraFMS/PluginTools.pm
+++ b/pandora_server/lib/PandoraFMS/PluginTools.pm
@@ -34,7 +34,7 @@ our @ISA = qw(Exporter);
 
 # version: Defines actual version of Pandora Server for this module only
 my $pandora_version = "7.0NG.775";
-my $pandora_build = "240123";
+my $pandora_build = "240124";
 our $VERSION = $pandora_version." ".$pandora_build;
 
 our %EXPORT_TAGS = ( 'all' => [ qw() ] );
diff --git a/pandora_server/pandora_server.redhat.spec b/pandora_server/pandora_server.redhat.spec
index 251e09b74e..d76f4f73f5 100644
--- a/pandora_server/pandora_server.redhat.spec
+++ b/pandora_server/pandora_server.redhat.spec
@@ -7,7 +7,7 @@
 %define debug_package %{nil}
 %define name        pandorafms_server
 %define version     7.0NG.775
-%define release     240123
+%define release     240124
 
 Summary:            Pandora FMS Server
 Name:               %{name}
diff --git a/pandora_server/pandora_server.spec b/pandora_server/pandora_server.spec
index 6c05f78ac2..fdafb2797e 100644
--- a/pandora_server/pandora_server.spec
+++ b/pandora_server/pandora_server.spec
@@ -4,7 +4,7 @@
 %global __os_install_post %{nil}
 %define name        pandorafms_server
 %define version     7.0NG.775
-%define release     240123
+%define release     240124
 
 Summary:            Pandora FMS Server
 Name:               %{name}
diff --git a/pandora_server/pandora_server_installer b/pandora_server/pandora_server_installer
index effa474fba..2202c82563 100755
--- a/pandora_server/pandora_server_installer
+++ b/pandora_server/pandora_server_installer
@@ -9,7 +9,7 @@
 # **********************************************************************
 
 PI_VERSION="7.0NG.775"
-PI_BUILD="240123"
+PI_BUILD="240124"
 
 MODE=$1
 if [ $# -gt 1 ]; then
diff --git a/pandora_server/util/pandora_db.pl b/pandora_server/util/pandora_db.pl
index 2ab5d89b6a..47f6f469ab 100755
--- a/pandora_server/util/pandora_db.pl
+++ b/pandora_server/util/pandora_db.pl
@@ -38,7 +38,7 @@ use PandoraFMS::Config;
 use PandoraFMS::DB;
 
 # version: define current version
-my $version = "7.0NG.775 Build 240123";
+my $version = "7.0NG.775 Build 240124";
 
 # Pandora server configuration
 my %conf;
diff --git a/pandora_server/util/pandora_manage.pl b/pandora_server/util/pandora_manage.pl
index 2d1eec0b82..7801143234 100755
--- a/pandora_server/util/pandora_manage.pl
+++ b/pandora_server/util/pandora_manage.pl
@@ -36,7 +36,7 @@ use Encode::Locale;
 Encode::Locale::decode_argv;
 
 # version: define current version
-my $version = "7.0NG.775 Build 240123";
+my $version = "7.0NG.775 Build 240124";
 
 # save program name for logging
 my $progname = basename($0);

From 4fc3013cc3b15ef4981a1b5fdcc6688da65585b9 Mon Sep 17 00:00:00 2001
From: Daniel Cebrian <daniel.cebrian@pandorafms.com>
Date: Wed, 24 Jan 2024 09:15:32 +0100
Subject: [PATCH 169/231] #12522 fixed multiple audit when update setup

---
 pandora_console/include/functions_config.php | 21 +++++++++++++-------
 1 file changed, 14 insertions(+), 7 deletions(-)

diff --git a/pandora_console/include/functions_config.php b/pandora_console/include/functions_config.php
index 9f4c38aa68..0f552ac519 100644
--- a/pandora_console/include/functions_config.php
+++ b/pandora_console/include/functions_config.php
@@ -104,6 +104,7 @@ function config_update_value($token, $value, $noticed=false, $password=false)
         return true;
     }
 
+    $prev_value = $config[$token];
     $config[$token] = $value;
     $value = io_safe_output($value);
 
@@ -117,13 +118,24 @@ function config_update_value($token, $value, $noticed=false, $password=false)
         return true;
     } else {
         // Something in setup changes.
-        if ($noticed === true) {
+        $value_token = (empty($config[$token]) === true) ? 0 : $config[$token];
+        $prev_value = (empty($prev_value) === true) ? 0 : $prev_value;
+        if (is_array($prev_value) === true) {
+            $prev_value = implode(';', $prev_value);
+        }
+
+        if ($noticed === true && $prev_value !== $value_token) {
             db_pandora_audit(
                 AUDIT_LOG_SETUP,
                 'Setup has changed',
                 false,
                 false,
-                sprintf('Token << %s >> updated.', $token)
+                sprintf(
+                    'Token << %s >> updated %s -> %s',
+                    $token,
+                    $prev_value,
+                    $value_token
+                )
             );
         }
 
@@ -2090,11 +2102,6 @@ function config_update_config()
     } else {
         $config['error_config_update_config'] = [];
         $config['error_config_update_config']['correct'] = true;
-
-        db_pandora_audit(
-            AUDIT_LOG_SETUP,
-            'Setup has changed'
-        );
     }
 
     if (count($errors) > 0) {

From 4e523e94cce55b4c3c025a2b430aaf3ac1198907 Mon Sep 17 00:00:00 2001
From: Jonathan <jonathan.leon@pandorafms.com>
Date: Wed, 24 Jan 2024 09:51:35 +0100
Subject: [PATCH 170/231] #12574 fix datepicker and give style

---
 pandora_console/extensions/insert_data.php | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/pandora_console/extensions/insert_data.php b/pandora_console/extensions/insert_data.php
index 6f09d889f7..d06ff90118 100644
--- a/pandora_console/extensions/insert_data.php
+++ b/pandora_console/extensions/insert_data.php
@@ -283,8 +283,14 @@ function mainInsertData()
             secondText: '<?php echo __('Second'); ?>',
             currentText: '<?php echo __('Now'); ?>',
             closeText: '<?php echo __('Close'); ?>'});
-        
-        $("#text-date").datepicker({dateFormat: "<?php echo DATE_FORMAT_JS; ?>"});
+
+        $('#text-data').datepicker ({
+            dateFormat: '<?php echo DATE_FORMAT_JS; ?>',
+            changeMonth: true,
+            changeYear: true,
+            showAnim: 'slideDown',
+            firstDay: "<?php echo $config['datepicker_first_day']; ?>",
+        });
         
         $.datepicker.setDefaults($.datepicker.regional[ "<?php echo get_user_language(); ?>"]);
     });

From bfb34d1c75dd02138c4aa7fd9c6ad98e46b634b6 Mon Sep 17 00:00:00 2001
From: Calvo <luis.calvo@pandorafms.com>
Date: Wed, 24 Jan 2024 11:56:58 +0100
Subject: [PATCH 171/231] #12719. Fix creating duplicated agents on tagente

---
 pandora_server/lib/PandoraFMS/DataServer.pm | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/pandora_server/lib/PandoraFMS/DataServer.pm b/pandora_server/lib/PandoraFMS/DataServer.pm
index 80e8bb4bd3..9db3f0f7ce 100644
--- a/pandora_server/lib/PandoraFMS/DataServer.pm
+++ b/pandora_server/lib/PandoraFMS/DataServer.pm
@@ -418,8 +418,10 @@ sub process_xml_data ($$$$$) {
 	# A module with No-learn mode (modo = 0) creates its modules on database only when it is created 
 	my $new_agent = 0;
 	
-	# Get agent id
-	my $agent_id = get_agent_id ($dbh, $agent_name);
+	# Get agent id from tagente.
+	my $agent_id = get_db_value ($dbh, "SELECT id_agente FROM tagente WHERE nombre = ?", safe_input($agent_name));
+	$agent_id = -1 unless defined($agent_id);
+
 	my $group_id = 0;
 	if ($agent_id < 1) {
 		if ($pa_config->{'autocreate'} == 0) {

From 8bbfa2803f86b3282d55183f0233eeba0891160a Mon Sep 17 00:00:00 2001
From: artica <artica.devel@gmail.com>
Date: Thu, 25 Jan 2024 01:00:29 +0100
Subject: [PATCH 172/231] Auto-updated build strings.

---
 pandora_agents/unix/DEBIAN/control                    | 2 +-
 pandora_agents/unix/DEBIAN/make_deb_package.sh        | 2 +-
 pandora_agents/unix/pandora_agent                     | 2 +-
 pandora_agents/unix/pandora_agent.redhat.spec         | 2 +-
 pandora_agents/unix/pandora_agent.redhat_bin.el8.spec | 2 +-
 pandora_agents/unix/pandora_agent.redhat_bin.el9.spec | 2 +-
 pandora_agents/unix/pandora_agent.redhat_bin.spec     | 2 +-
 pandora_agents/unix/pandora_agent.spec                | 2 +-
 pandora_agents/unix/pandora_agent_installer           | 2 +-
 pandora_agents/win32/installer/pandora.mpi            | 2 +-
 pandora_agents/win32/pandora.cc                       | 2 +-
 pandora_agents/win32/versioninfo.rc                   | 2 +-
 pandora_console/DEBIAN/control                        | 2 +-
 pandora_console/DEBIAN/make_deb_package.sh            | 2 +-
 pandora_console/include/config_process.php            | 2 +-
 pandora_console/install.php                           | 2 +-
 pandora_console/pandora_console.redhat.spec           | 2 +-
 pandora_console/pandora_console.rhel7.spec            | 2 +-
 pandora_console/pandora_console.spec                  | 2 +-
 pandora_server/DEBIAN/control                         | 2 +-
 pandora_server/DEBIAN/make_deb_package.sh             | 2 +-
 pandora_server/lib/PandoraFMS/Config.pm               | 2 +-
 pandora_server/lib/PandoraFMS/PluginTools.pm          | 2 +-
 pandora_server/pandora_server.redhat.spec             | 2 +-
 pandora_server/pandora_server.spec                    | 2 +-
 pandora_server/pandora_server_installer               | 2 +-
 pandora_server/util/pandora_db.pl                     | 2 +-
 pandora_server/util/pandora_manage.pl                 | 2 +-
 28 files changed, 28 insertions(+), 28 deletions(-)

diff --git a/pandora_agents/unix/DEBIAN/control b/pandora_agents/unix/DEBIAN/control
index da5db137f5..b57934fc50 100644
--- a/pandora_agents/unix/DEBIAN/control
+++ b/pandora_agents/unix/DEBIAN/control
@@ -1,5 +1,5 @@
 package: pandorafms-agent-unix
-Version: 7.0NG.775-240124
+Version: 7.0NG.775-240125
 Architecture: all
 Priority: optional
 Section: admin
diff --git a/pandora_agents/unix/DEBIAN/make_deb_package.sh b/pandora_agents/unix/DEBIAN/make_deb_package.sh
index 4617d8e745..cc3cf84853 100644
--- a/pandora_agents/unix/DEBIAN/make_deb_package.sh
+++ b/pandora_agents/unix/DEBIAN/make_deb_package.sh
@@ -14,7 +14,7 @@
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 # GNU General Public License for more details.
 
-pandora_version="7.0NG.775-240124"
+pandora_version="7.0NG.775-240125"
 
 echo "Test if you has the tools for to make the packages."
 whereis dpkg-deb | cut -d":" -f2 | grep dpkg-deb > /dev/null
diff --git a/pandora_agents/unix/pandora_agent b/pandora_agents/unix/pandora_agent
index 4ec522db43..b0f1c9f54c 100755
--- a/pandora_agents/unix/pandora_agent
+++ b/pandora_agents/unix/pandora_agent
@@ -1039,7 +1039,7 @@ my $Sem = undef;
 my $ThreadSem = undef;
 
 use constant AGENT_VERSION => '7.0NG.775';
-use constant AGENT_BUILD => '240124';
+use constant AGENT_BUILD => '240125';
 
 # Agent log default file size maximum and instances
 use constant DEFAULT_MAX_LOG_SIZE => 600000;
diff --git a/pandora_agents/unix/pandora_agent.redhat.spec b/pandora_agents/unix/pandora_agent.redhat.spec
index 2786cafe56..516ef3ec99 100644
--- a/pandora_agents/unix/pandora_agent.redhat.spec
+++ b/pandora_agents/unix/pandora_agent.redhat.spec
@@ -4,7 +4,7 @@
 %global __os_install_post %{nil}
 %define name        pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240124
+%define release     240125
 
 Summary:            Pandora FMS Linux agent, PERL version
 Name:               %{name}
diff --git a/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec b/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec
index 92cb781d5a..c0ff5e3f44 100644
--- a/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec
+++ b/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec
@@ -5,7 +5,7 @@
 %define name        pandorafms_agent_linux_bin
 %define source_name pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240124
+%define release     240125
 %define debug_package %{nil}
 
 Summary:            Pandora FMS Linux agent, binary version
diff --git a/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec b/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec
index 56dc5c9c0c..14870a78ed 100644
--- a/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec
+++ b/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec
@@ -5,7 +5,7 @@
 %define name        pandorafms_agent_linux_bin
 %define source_name pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240124
+%define release     240125
 %define debug_package %{nil}
 
 Summary:            Pandora FMS Linux agent, binary version
diff --git a/pandora_agents/unix/pandora_agent.redhat_bin.spec b/pandora_agents/unix/pandora_agent.redhat_bin.spec
index 858147650c..1e88ca4c7e 100644
--- a/pandora_agents/unix/pandora_agent.redhat_bin.spec
+++ b/pandora_agents/unix/pandora_agent.redhat_bin.spec
@@ -5,7 +5,7 @@
 %define name        pandorafms_agent_linux_bin
 %define source_name pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240124
+%define release     240125
 
 Summary:            Pandora FMS Linux agent, binary version
 Name:               %{name}
diff --git a/pandora_agents/unix/pandora_agent.spec b/pandora_agents/unix/pandora_agent.spec
index deff8bc50f..515dc4ea4d 100644
--- a/pandora_agents/unix/pandora_agent.spec
+++ b/pandora_agents/unix/pandora_agent.spec
@@ -4,7 +4,7 @@
 %global __os_install_post %{nil}
 %define name        pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240124
+%define release     240125
 
 Summary:            Pandora FMS Linux agent, PERL version
 Name:               %{name}
diff --git a/pandora_agents/unix/pandora_agent_installer b/pandora_agents/unix/pandora_agent_installer
index 9a94ff4cb4..20f63af782 100755
--- a/pandora_agents/unix/pandora_agent_installer
+++ b/pandora_agents/unix/pandora_agent_installer
@@ -10,7 +10,7 @@
 # **********************************************************************
 
 PI_VERSION="7.0NG.775"
-PI_BUILD="240124"
+PI_BUILD="240125"
 OS_NAME=`uname -s`
 
 FORCE=0
diff --git a/pandora_agents/win32/installer/pandora.mpi b/pandora_agents/win32/installer/pandora.mpi
index dd51dcf708..81661ca1bf 100644
--- a/pandora_agents/win32/installer/pandora.mpi
+++ b/pandora_agents/win32/installer/pandora.mpi
@@ -186,7 +186,7 @@ UpgradeApplicationID
 {}
 
 Version
-{240124}
+{240125}
 
 ViewReadme
 {Yes}
diff --git a/pandora_agents/win32/pandora.cc b/pandora_agents/win32/pandora.cc
index 22f49347f0..91adc36bc7 100644
--- a/pandora_agents/win32/pandora.cc
+++ b/pandora_agents/win32/pandora.cc
@@ -30,7 +30,7 @@ using namespace Pandora;
 using namespace Pandora_Strutils;
 
 #define PATH_SIZE    _MAX_PATH+1
-#define PANDORA_VERSION ("7.0NG.775 Build 240124")
+#define PANDORA_VERSION ("7.0NG.775 Build 240125")
 
 string pandora_path;
 string pandora_dir;
diff --git a/pandora_agents/win32/versioninfo.rc b/pandora_agents/win32/versioninfo.rc
index cf88101947..5ac5a2e47f 100644
--- a/pandora_agents/win32/versioninfo.rc
+++ b/pandora_agents/win32/versioninfo.rc
@@ -11,7 +11,7 @@ BEGIN
       VALUE "LegalCopyright", "Pandora FMS"
       VALUE "OriginalFilename", "PandoraAgent.exe"
       VALUE "ProductName", "Pandora FMS Windows Agent"
-      VALUE "ProductVersion", "(7.0NG.775(Build 240124))"
+      VALUE "ProductVersion", "(7.0NG.775(Build 240125))"
       VALUE "FileVersion", "1.0.0.0"
     END
   END
diff --git a/pandora_console/DEBIAN/control b/pandora_console/DEBIAN/control
index d23840e972..971ba8b024 100644
--- a/pandora_console/DEBIAN/control
+++ b/pandora_console/DEBIAN/control
@@ -1,5 +1,5 @@
 package: pandorafms-console
-Version: 7.0NG.775-240124
+Version: 7.0NG.775-240125
 Architecture: all
 Priority: optional
 Section: admin
diff --git a/pandora_console/DEBIAN/make_deb_package.sh b/pandora_console/DEBIAN/make_deb_package.sh
index 4c11ce1bce..6e7853f74f 100644
--- a/pandora_console/DEBIAN/make_deb_package.sh
+++ b/pandora_console/DEBIAN/make_deb_package.sh
@@ -14,7 +14,7 @@
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 # GNU General Public License for more details.
 
-pandora_version="7.0NG.775-240124"
+pandora_version="7.0NG.775-240125"
 
 package_pear=0
 package_pandora=1
diff --git a/pandora_console/include/config_process.php b/pandora_console/include/config_process.php
index 60dd8bf9a1..0cbf1c15e8 100644
--- a/pandora_console/include/config_process.php
+++ b/pandora_console/include/config_process.php
@@ -20,7 +20,7 @@
 /**
  * Pandora build version and version
  */
-$build_version = 'PC240124';
+$build_version = 'PC240125';
 $pandora_version = 'v7.0NG.775';
 
 // Do not overwrite default timezone set if defined.
diff --git a/pandora_console/install.php b/pandora_console/install.php
index ab50a8ec91..1e2252fbae 100644
--- a/pandora_console/install.php
+++ b/pandora_console/install.php
@@ -131,7 +131,7 @@
         <div style='padding-bottom: 50px'>
             <?php
             $version = '7.0NG.775';
-            $build = '240124';
+            $build = '240125';
             $banner = "v$version Build $build";
             error_reporting(0);
 
diff --git a/pandora_console/pandora_console.redhat.spec b/pandora_console/pandora_console.redhat.spec
index 0f0a52ce55..4b7e8b0da0 100644
--- a/pandora_console/pandora_console.redhat.spec
+++ b/pandora_console/pandora_console.redhat.spec
@@ -6,7 +6,7 @@
 %define debug_package %{nil}
 %define name        pandorafms_console
 %define version     7.0NG.775
-%define release     240124
+%define release     240125
 
 # User and Group under which Apache is running
 %define httpd_name  httpd
diff --git a/pandora_console/pandora_console.rhel7.spec b/pandora_console/pandora_console.rhel7.spec
index 09ddf1fe41..ca4ab9657e 100644
--- a/pandora_console/pandora_console.rhel7.spec
+++ b/pandora_console/pandora_console.rhel7.spec
@@ -6,7 +6,7 @@
 %define debug_package %{nil}
 %define name        pandorafms_console
 %define version     7.0NG.775
-%define release     240124
+%define release     240125
 
 # User and Group under which Apache is running
 %define httpd_name  httpd
diff --git a/pandora_console/pandora_console.spec b/pandora_console/pandora_console.spec
index 8c87ebe591..977a58e4fe 100644
--- a/pandora_console/pandora_console.spec
+++ b/pandora_console/pandora_console.spec
@@ -3,7 +3,7 @@
 #
 %define name        pandorafms_console
 %define version     7.0NG.775
-%define release     240124
+%define release     240125
 %define httpd_name      httpd
 # User and Group under which Apache is running
 %define httpd_name  apache2
diff --git a/pandora_server/DEBIAN/control b/pandora_server/DEBIAN/control
index 54a937ad6b..4ea2ca557b 100644
--- a/pandora_server/DEBIAN/control
+++ b/pandora_server/DEBIAN/control
@@ -1,5 +1,5 @@
 package: pandorafms-server
-Version: 7.0NG.775-240124
+Version: 7.0NG.775-240125
 Architecture: all
 Priority: optional
 Section: admin
diff --git a/pandora_server/DEBIAN/make_deb_package.sh b/pandora_server/DEBIAN/make_deb_package.sh
index da1ba60728..ef81d3e503 100644
--- a/pandora_server/DEBIAN/make_deb_package.sh
+++ b/pandora_server/DEBIAN/make_deb_package.sh
@@ -14,7 +14,7 @@
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 # GNU General Public License for more details.
 
-pandora_version="7.0NG.775-240124"
+pandora_version="7.0NG.775-240125"
 
 package_cpan=0
 package_pandora=1
diff --git a/pandora_server/lib/PandoraFMS/Config.pm b/pandora_server/lib/PandoraFMS/Config.pm
index e5eb8ca321..b25686ee4b 100644
--- a/pandora_server/lib/PandoraFMS/Config.pm
+++ b/pandora_server/lib/PandoraFMS/Config.pm
@@ -46,7 +46,7 @@ our @EXPORT = qw(
 
 # version: Defines actual version of Pandora Server for this module only
 my $pandora_version = "7.0NG.775";
-my $pandora_build = "240124";
+my $pandora_build = "240125";
 our $VERSION = $pandora_version." ".$pandora_build;
 
 # Setup hash
diff --git a/pandora_server/lib/PandoraFMS/PluginTools.pm b/pandora_server/lib/PandoraFMS/PluginTools.pm
index c9a94e7afa..020d69c4b3 100644
--- a/pandora_server/lib/PandoraFMS/PluginTools.pm
+++ b/pandora_server/lib/PandoraFMS/PluginTools.pm
@@ -34,7 +34,7 @@ our @ISA = qw(Exporter);
 
 # version: Defines actual version of Pandora Server for this module only
 my $pandora_version = "7.0NG.775";
-my $pandora_build = "240124";
+my $pandora_build = "240125";
 our $VERSION = $pandora_version." ".$pandora_build;
 
 our %EXPORT_TAGS = ( 'all' => [ qw() ] );
diff --git a/pandora_server/pandora_server.redhat.spec b/pandora_server/pandora_server.redhat.spec
index d76f4f73f5..829d5ae091 100644
--- a/pandora_server/pandora_server.redhat.spec
+++ b/pandora_server/pandora_server.redhat.spec
@@ -7,7 +7,7 @@
 %define debug_package %{nil}
 %define name        pandorafms_server
 %define version     7.0NG.775
-%define release     240124
+%define release     240125
 
 Summary:            Pandora FMS Server
 Name:               %{name}
diff --git a/pandora_server/pandora_server.spec b/pandora_server/pandora_server.spec
index fdafb2797e..c697aa9c8f 100644
--- a/pandora_server/pandora_server.spec
+++ b/pandora_server/pandora_server.spec
@@ -4,7 +4,7 @@
 %global __os_install_post %{nil}
 %define name        pandorafms_server
 %define version     7.0NG.775
-%define release     240124
+%define release     240125
 
 Summary:            Pandora FMS Server
 Name:               %{name}
diff --git a/pandora_server/pandora_server_installer b/pandora_server/pandora_server_installer
index 2202c82563..03fa6a84d0 100755
--- a/pandora_server/pandora_server_installer
+++ b/pandora_server/pandora_server_installer
@@ -9,7 +9,7 @@
 # **********************************************************************
 
 PI_VERSION="7.0NG.775"
-PI_BUILD="240124"
+PI_BUILD="240125"
 
 MODE=$1
 if [ $# -gt 1 ]; then
diff --git a/pandora_server/util/pandora_db.pl b/pandora_server/util/pandora_db.pl
index 47f6f469ab..66e75586cb 100755
--- a/pandora_server/util/pandora_db.pl
+++ b/pandora_server/util/pandora_db.pl
@@ -38,7 +38,7 @@ use PandoraFMS::Config;
 use PandoraFMS::DB;
 
 # version: define current version
-my $version = "7.0NG.775 Build 240124";
+my $version = "7.0NG.775 Build 240125";
 
 # Pandora server configuration
 my %conf;
diff --git a/pandora_server/util/pandora_manage.pl b/pandora_server/util/pandora_manage.pl
index 7801143234..b154b38ada 100755
--- a/pandora_server/util/pandora_manage.pl
+++ b/pandora_server/util/pandora_manage.pl
@@ -36,7 +36,7 @@ use Encode::Locale;
 Encode::Locale::decode_argv;
 
 # version: define current version
-my $version = "7.0NG.775 Build 240124";
+my $version = "7.0NG.775 Build 240125";
 
 # save program name for logging
 my $progname = basename($0);

From 7b988664686a47e747292a83ad88cc35634db67b Mon Sep 17 00:00:00 2001
From: Daniel Cebrian <daniel.cebrian@pandorafms.com>
Date: Thu, 25 Jan 2024 10:38:24 +0100
Subject: [PATCH 173/231] #12681 fixed decimals in df_percent_used

---
 pandora_agents/win32/bin/util/df_percent_used.vbs | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pandora_agents/win32/bin/util/df_percent_used.vbs b/pandora_agents/win32/bin/util/df_percent_used.vbs
index 8499e8694f..090abf8ce7 100644
--- a/pandora_agents/win32/bin/util/df_percent_used.vbs
+++ b/pandora_agents/win32/bin/util/df_percent_used.vbs
@@ -25,7 +25,7 @@ For Each objItem in colItems
 	If argc = 0 Or argv.Exists(objItem.Name) Then
 		' Include only harddrivers (type 3)
 		If (objItem.FreeSpace <> "") AND (objItem.DriveType =3) Then
-			Percent = round (100 - (objItem.FreeSpace / objItem.Size) * 100, 2)
+			Percent = round (100 - (objItem.FreeSpace / objItem.Size) * 100, 0)
 			Wscript.StdOut.WriteLine "<module>"
 			Wscript.StdOut.WriteLine "    <name><![CDATA[DiskUsed_" & objItem.Name & "]]></name>"
 			Wscript.StdOut.WriteLine "    <description><![CDATA[% used space. Filesystem unit:  " & objItem.Name & "]]></description>"

From 874bd04aa82c4c9b25ef9358b4fa3f7183329f89 Mon Sep 17 00:00:00 2001
From: Jonathan <jonathan.leon@pandorafms.com>
Date: Thu, 25 Jan 2024 15:23:48 +0100
Subject: [PATCH 174/231] #11799 hide interval for broker agents

---
 pandora_agents/pc/pandora_agent               |  2 +-
 pandora_agents/unix/pandora_agent             |  2 +-
 .../godmode/agentes/agent_manager.php         | 45 ++++++++++++-------
 3 files changed, 32 insertions(+), 17 deletions(-)

diff --git a/pandora_agents/pc/pandora_agent b/pandora_agents/pc/pandora_agent
index 88f78e31ac..50e901f0ce 100644
--- a/pandora_agents/pc/pandora_agent
+++ b/pandora_agents/pc/pandora_agent
@@ -585,7 +585,7 @@ sub write_broker_conf($){
 		
 		# Change the agent name
 		if ($line =~ m/^\s*#*\s*agent_name\s+/) {
-			$line = "agent_name $broker_agent\n";
+			$line = "agent_name $broker_agent\n#broker active\n";
 		}
 		# Change the logfile
 		elsif ($line =~ m/^\s*logfile\s+(.*)/) {
diff --git a/pandora_agents/unix/pandora_agent b/pandora_agents/unix/pandora_agent
index b0f1c9f54c..62aa2e5040 100755
--- a/pandora_agents/unix/pandora_agent
+++ b/pandora_agents/unix/pandora_agent
@@ -1860,7 +1860,7 @@ sub write_broker_conf($){
 
 		# Change the agent name
 		if ($line =~ m/^\s*#*\s*agent_name\s+/) {
-			$line = "agent_name $broker_agent\n";
+			$line = "agent_name $broker_agent\n#broker active\n";
 		}
 		# Change the logfile
 		elsif ($line =~ m/^\s*logfile\s+(.*)/) {
diff --git a/pandora_console/godmode/agentes/agent_manager.php b/pandora_console/godmode/agentes/agent_manager.php
index 4e62337547..28b8da32d3 100644
--- a/pandora_console/godmode/agentes/agent_manager.php
+++ b/pandora_console/godmode/agentes/agent_manager.php
@@ -499,22 +499,37 @@ $tableAgent->data['primary_group'][0] .= ui_print_group_icon(
     'after_input_icon'
 );
 $tableAgent->data['primary_group'][0] .= '</span>';
+// CHECK BROKER FOR SHOW INTERVAL.
+enterprise_include('include/functions_config_agents.php');
+// Read configuration file.
+$files = config_agents_get_agent_config_filenames($id_agente);
+$file_name = $files['conf'];
+$agent_config = file_get_contents($file_name);
+$encoding = 'UTF-8';
+$agent_config_utf8 = mb_convert_encoding($agent_config, 'UTF-8', $encoding);
+if ($agent_config_utf8 !== false) {
+    $agent_config = $agent_config_utf8;
+}
 
-$tableAgent->data['caption_interval'][0] = __('Interval');
-// $tableAgent->rowstyle['interval'] = 'width: 260px';
-$tableAgent->rowclass['interval'] = 'w540px';
-$tableAgent->data['interval'][0] = html_print_extended_select_for_time(
-    'intervalo',
-    $intervalo,
-    '',
-    '',
-    '0',
-    10,
-    true,
-    false,
-    true,
-    'w33p'
-);
+$broker = str_contains($agent_config, '#broker active');
+
+if ($broker === false) {
+    $tableAgent->data['caption_interval'][0] = __('Interval');
+    // $tableAgent->rowstyle['interval'] = 'width: 260px';
+    $tableAgent->rowclass['interval'] = 'w540px';
+    $tableAgent->data['interval'][0] = html_print_extended_select_for_time(
+        'intervalo',
+        $intervalo,
+        '',
+        '',
+        '0',
+        10,
+        true,
+        false,
+        true,
+        'w33p'
+    );
+}
 
 if ($intervalo < SECONDS_5MINUTES) {
     $tableAgent->data['interval'][0] .= clippy_context_help('interval_agent_min');

From cdd9af51080abfaec2be7b6c32a6e446a1203721 Mon Sep 17 00:00:00 2001
From: Jonathan <jonathan.leon@pandorafms.com>
Date: Thu, 25 Jan 2024 15:25:08 +0100
Subject: [PATCH 175/231] #11799 hide interval for broker agents

---
 .../godmode/agentes/agent_manager.php         | 28 +++++++++++--------
 1 file changed, 16 insertions(+), 12 deletions(-)

diff --git a/pandora_console/godmode/agentes/agent_manager.php b/pandora_console/godmode/agentes/agent_manager.php
index 28b8da32d3..80a480dd12 100644
--- a/pandora_console/godmode/agentes/agent_manager.php
+++ b/pandora_console/godmode/agentes/agent_manager.php
@@ -499,19 +499,23 @@ $tableAgent->data['primary_group'][0] .= ui_print_group_icon(
     'after_input_icon'
 );
 $tableAgent->data['primary_group'][0] .= '</span>';
-// CHECK BROKER FOR SHOW INTERVAL.
-enterprise_include('include/functions_config_agents.php');
-// Read configuration file.
-$files = config_agents_get_agent_config_filenames($id_agente);
-$file_name = $files['conf'];
-$agent_config = file_get_contents($file_name);
-$encoding = 'UTF-8';
-$agent_config_utf8 = mb_convert_encoding($agent_config, 'UTF-8', $encoding);
-if ($agent_config_utf8 !== false) {
-    $agent_config = $agent_config_utf8;
-}
 
-$broker = str_contains($agent_config, '#broker active');
+$broker = false;
+if (enterprise_installed()) {
+    // CHECK BROKER FOR SHOW INTERVAL.
+    enterprise_include('include/functions_config_agents.php');
+    // Read configuration file.
+    $files = config_agents_get_agent_config_filenames($id_agente);
+    $file_name = $files['conf'];
+    $agent_config = file_get_contents($file_name);
+    $encoding = 'UTF-8';
+    $agent_config_utf8 = mb_convert_encoding($agent_config, 'UTF-8', $encoding);
+    if ($agent_config_utf8 !== false) {
+        $agent_config = $agent_config_utf8;
+    }
+
+    $broker = str_contains($agent_config, '#broker active');
+}
 
 if ($broker === false) {
     $tableAgent->data['caption_interval'][0] = __('Interval');

From 18cb14bec6c45dd897cb5ca5598628b780d488b0 Mon Sep 17 00:00:00 2001
From: "alejandro.campos@artica.es" <alejandro.campos@artica.es>
Date: Thu, 25 Jan 2024 16:03:48 +0100
Subject: [PATCH 176/231] minor fixes

---
 pandora_console/include/functions_netflow.php | 25 +++++++++++++++----
 .../include/functions_reporting.php           | 14 +++++++----
 2 files changed, 29 insertions(+), 10 deletions(-)

diff --git a/pandora_console/include/functions_netflow.php b/pandora_console/include/functions_netflow.php
index 770314f507..5fc9e6b32f 100644
--- a/pandora_console/include/functions_netflow.php
+++ b/pandora_console/include/functions_netflow.php
@@ -1553,8 +1553,7 @@ function netflow_draw_item(
 
             if ($output === 'HTML' || $output === 'PDF') {
                 $html = '<table class="w100p">';
-
-                if ($show_graph === true && $max_aggregates <= 10) {
+                if ($show_graph === true) {
                     $labels = array_map(
                         function ($conn) {
                             return __('% Traffic').' '.$conn['ip_src'].' - '.$conn['ip_dst'];
@@ -1572,18 +1571,34 @@ function netflow_draw_item(
                     $graph_output = pie_graph(
                         $pie_data,
                         [
-                            'legend' => [
+                            'width'     => 200,
+                            'height'    => 200,
+                            'ttl'       => ($output === 'PDF') ? 2 : 1,
+                            'dataLabel' => ['display' => 'auto'],
+                            'layout'    => [
+                                'padding' => [
+                                    'top'    => 15,
+                                    'bottom' => 15,
+                                ],
+                            ],
+                            'legend'    => [
                                 'display'  => true,
                                 'position' => 'right',
                                 'align'    => 'center',
                             ],
-                            'labels' => $labels,
+                            'labels'    => $labels,
                         ]
                     );
 
                     $html .= '<tr>';
                     $html .= "<td class='w500p padding-bottom-25px'>";
-                    $html .= $graph_output;
+
+                    if ($output === 'PDF') {
+                        $html .= '<img src="data:image/png;base64,'.$graph_output.'" />';
+                    } else {
+                        $html .= $graph_output;
+                    }
+
                     $html .= '</td>';
                     $html .= '</tr>';
                 }
diff --git a/pandora_console/include/functions_reporting.php b/pandora_console/include/functions_reporting.php
index 2b8a0f01ef..8cc539879c 100755
--- a/pandora_console/include/functions_reporting.php
+++ b/pandora_console/include/functions_reporting.php
@@ -7036,11 +7036,15 @@ function reporting_netflow(
         break;
     }
 
-    $return['subtitle'] = netflow_generate_subtitle_report(
-        $filter['aggregate'],
-        $content['top_n'],
-        $type_netflow
-    );
+    if ($extended === true) {
+        $return['subtitle'] = __('InBound/Outbound traffic per SrcIP/DestIP');
+    } else {
+        $return['subtitle'] = netflow_generate_subtitle_report(
+            $filter['aggregate'],
+            $content['top_n'],
+            $type_netflow
+        );
+    }
 
     return reporting_check_structure_content($return);
 }

From cf500b68438fb1f90fcdcdc1f6b003afdd2d0f37 Mon Sep 17 00:00:00 2001
From: Daniel Cebrian <daniel.cebrian@pandorafms.com>
Date: Thu, 25 Jan 2024 16:41:58 +0100
Subject: [PATCH 177/231] #12681 added decimals in module
 module_freepercentdisk

---
 pandora_agents/unix/pandora_agent                 | 2 +-
 pandora_agents/win32/bin/util/df_percent_used.vbs | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/pandora_agents/unix/pandora_agent b/pandora_agents/unix/pandora_agent
index 4ec522db43..956fb984d8 100755
--- a/pandora_agents/unix/pandora_agent
+++ b/pandora_agents/unix/pandora_agent
@@ -3132,7 +3132,7 @@ sub module_freepercentdisk ($) {
 
 	return () unless defined ($Parts{$module->{'params'}}) and defined ($Parts{$module->{'params'}}{'avail'});
 	
-	my $availp = sprintf("%d", $Parts{$module->{'params'}}{'avail'} * 100 / $Parts{$module->{'params'}}{'total'});
+	my $availp = sprintf("%.2f", $Parts{$module->{'params'}}{'avail'} * 100 / $Parts{$module->{'params'}}{'total'});
 	return ($availp);
 }
 
diff --git a/pandora_agents/win32/bin/util/df_percent_used.vbs b/pandora_agents/win32/bin/util/df_percent_used.vbs
index 090abf8ce7..8499e8694f 100644
--- a/pandora_agents/win32/bin/util/df_percent_used.vbs
+++ b/pandora_agents/win32/bin/util/df_percent_used.vbs
@@ -25,7 +25,7 @@ For Each objItem in colItems
 	If argc = 0 Or argv.Exists(objItem.Name) Then
 		' Include only harddrivers (type 3)
 		If (objItem.FreeSpace <> "") AND (objItem.DriveType =3) Then
-			Percent = round (100 - (objItem.FreeSpace / objItem.Size) * 100, 0)
+			Percent = round (100 - (objItem.FreeSpace / objItem.Size) * 100, 2)
 			Wscript.StdOut.WriteLine "<module>"
 			Wscript.StdOut.WriteLine "    <name><![CDATA[DiskUsed_" & objItem.Name & "]]></name>"
 			Wscript.StdOut.WriteLine "    <description><![CDATA[% used space. Filesystem unit:  " & objItem.Name & "]]></description>"

From 1c094cd2193b8ba1aebc9929c14f4cd410e47f54 Mon Sep 17 00:00:00 2001
From: Jonathan <jonathan.leon@pandorafms.com>
Date: Thu, 25 Jan 2024 16:58:21 +0100
Subject: [PATCH 178/231] #12802 fix date error

---
 pandora_console/extensions/insert_data.php | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/pandora_console/extensions/insert_data.php b/pandora_console/extensions/insert_data.php
index d06ff90118..98e8886733 100644
--- a/pandora_console/extensions/insert_data.php
+++ b/pandora_console/extensions/insert_data.php
@@ -223,7 +223,7 @@ function mainInsertData()
         '',
         empty($agent_id)
     );
-    $table->data[1][2] = html_print_input_text('data', ($save === true) ? date(DATE_FORMAT) : $data, __('Data'), 10, 60, true);
+    $table->data[1][2] = html_print_input_text('date', ($save === true) ? date(DATE_FORMAT) : $data, __('Data'), 10, 60, true);
     $table->data[1][2] .= '&nbsp;';
     $table->data[1][2] .= html_print_input_text('time', ($save === true) ? date(TIME_FORMAT) : $time, '', 10, 7, true);
 
@@ -284,7 +284,7 @@ function mainInsertData()
             currentText: '<?php echo __('Now'); ?>',
             closeText: '<?php echo __('Close'); ?>'});
 
-        $('#text-data').datepicker ({
+        $('#text-date').datepicker ({
             dateFormat: '<?php echo DATE_FORMAT_JS; ?>',
             changeMonth: true,
             changeYear: true,

From 31312eaa53083e9c7dac7a9803ed071f914a73c3 Mon Sep 17 00:00:00 2001
From: "alejandro.campos@artica.es" <alejandro.campos@artica.es>
Date: Thu, 25 Jan 2024 17:19:05 +0100
Subject: [PATCH 179/231] visual fix

---
 pandora_console/godmode/events/event_responses.editor.php | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/pandora_console/godmode/events/event_responses.editor.php b/pandora_console/godmode/events/event_responses.editor.php
index 477aa70e85..52d5a48ad1 100644
--- a/pandora_console/godmode/events/event_responses.editor.php
+++ b/pandora_console/godmode/events/event_responses.editor.php
@@ -292,7 +292,12 @@ $data[0] = html_print_label_input_block(
         '',
         '',
         '',
-        true
+        true,
+        false,
+        true,
+        'w100p',
+        false,
+        'width: 100%'
     ).'</div>'
 );
 

From 823e2b93aea8ef2f52cd6a480631c91d9aabbf24 Mon Sep 17 00:00:00 2001
From: "felix.suarez" <felix.suarez@pandorafms.com>
Date: Thu, 25 Jan 2024 14:10:59 -0600
Subject: [PATCH 180/231] Add Powershell module

---
 pandora_agents/win32/Makefile.am              |  4 +-
 .../win32/modules/pandora_module.cc           |  2 +
 pandora_agents/win32/modules/pandora_module.h | 40 ++++----
 .../modules/pandora_module_exec_powershell.cc | 91 +++++++++++++++++++
 .../modules/pandora_module_exec_powershell.h  | 43 +++++++++
 .../win32/modules/pandora_module_factory.cc   | 18 +++-
 .../win32/modules/pandora_module_list.cc      |  7 ++
 7 files changed, 183 insertions(+), 22 deletions(-)
 create mode 100644 pandora_agents/win32/modules/pandora_module_exec_powershell.cc
 create mode 100644 pandora_agents/win32/modules/pandora_module_exec_powershell.h

diff --git a/pandora_agents/win32/Makefile.am b/pandora_agents/win32/Makefile.am
index 4641081570..94e77312c4 100644
--- a/pandora_agents/win32/Makefile.am
+++ b/pandora_agents/win32/Makefile.am
@@ -1,9 +1,9 @@
 bin_PROGRAMS = PandoraAgent
 if DEBUG 
-PandoraAgent_SOURCES = misc/cron.cc misc/pandora_file.cc modules/pandora_data.cc modules/pandora_module_factory.cc modules/pandora_module.cc modules/pandora_module_list.cc modules/pandora_module_plugin.cc modules/pandora_module_inventory.cc modules/pandora_module_freememory.cc modules/pandora_module_exec.cc modules/pandora_module_perfcounter.cc modules/pandora_module_proc.cc modules/pandora_module_tcpcheck.cc modules/pandora_module_freememory_percent.cc modules/pandora_module_freedisk.cc modules/pandora_module_freedisk_percent.cc modules/pandora_module_logevent.cc modules/pandora_module_service.cc modules/pandora_module_cpuusage.cc modules/pandora_module_wmiquery.cc modules/pandora_module_regexp.cc modules/pandora_module_ping.cc modules/pandora_module_snmpget.cc udp_server/udp_server.cc main.cc pandora_strutils.cc pandora.cc windows_service.cc pandora_agent_conf.cc windows/pandora_windows_info.cc windows/pandora_wmi.cc pandora_windows_service.cc misc/md5.c misc/sha256.cc windows/wmi/disphelper.c ssh/libssh2/channel.c  ssh/libssh2/mac.c ssh/libssh2/session.c ssh/libssh2/comp.c ssh/libssh2/misc.c ssh/libssh2/sftp.c ssh/libssh2/crypt.c ssh/libssh2/packet.c ssh/libssh2/userauth.c ssh/libssh2/hostkey.c ssh/libssh2/publickey.c ssh/libssh2/kex.c ssh/libssh2/scp.c ssh/pandora_ssh_client.cc ssh/pandora_ssh_test.cc ftp/pandora_ftp_client.cc ftp/pandora_ftp_test.cc debug_new.cpp
+PandoraAgent_SOURCES = misc/cron.cc misc/pandora_file.cc modules/pandora_data.cc modules/pandora_module_factory.cc modules/pandora_module.cc modules/pandora_module_list.cc modules/pandora_module_plugin.cc modules/pandora_module_inventory.cc modules/pandora_module_freememory.cc modules/pandora_module_exec.cc modules/pandora_module_exec_powershell.cc modules/pandora_module_perfcounter.cc modules/pandora_module_proc.cc modules/pandora_module_tcpcheck.cc modules/pandora_module_freememory_percent.cc modules/pandora_module_freedisk.cc modules/pandora_module_freedisk_percent.cc modules/pandora_module_logevent.cc modules/pandora_module_service.cc modules/pandora_module_cpuusage.cc modules/pandora_module_wmiquery.cc modules/pandora_module_regexp.cc modules/pandora_module_ping.cc modules/pandora_module_snmpget.cc udp_server/udp_server.cc main.cc pandora_strutils.cc pandora.cc windows_service.cc pandora_agent_conf.cc windows/pandora_windows_info.cc windows/pandora_wmi.cc pandora_windows_service.cc misc/md5.c misc/sha256.cc windows/wmi/disphelper.c ssh/libssh2/channel.c  ssh/libssh2/mac.c ssh/libssh2/session.c ssh/libssh2/comp.c ssh/libssh2/misc.c ssh/libssh2/sftp.c ssh/libssh2/crypt.c ssh/libssh2/packet.c ssh/libssh2/userauth.c ssh/libssh2/hostkey.c ssh/libssh2/publickey.c ssh/libssh2/kex.c ssh/libssh2/scp.c ssh/pandora_ssh_client.cc ssh/pandora_ssh_test.cc ftp/pandora_ftp_client.cc ftp/pandora_ftp_test.cc debug_new.cpp
 PandoraAgent_CXXFLAGS=-g -O0
 else
-PandoraAgent_SOURCES = misc/cron.cc misc/pandora_file.cc modules/pandora_data.cc modules/pandora_module_factory.cc modules/pandora_module.cc modules/pandora_module_list.cc modules/pandora_module_plugin.cc modules/pandora_module_inventory.cc modules/pandora_module_freememory.cc modules/pandora_module_exec.cc modules/pandora_module_perfcounter.cc modules/pandora_module_proc.cc modules/pandora_module_tcpcheck.cc modules/pandora_module_freememory_percent.cc modules/pandora_module_freedisk.cc modules/pandora_module_freedisk_percent.cc modules/pandora_module_logevent.cc modules/pandora_module_logchannel.cc modules/pandora_module_service.cc modules/pandora_module_cpuusage.cc modules/pandora_module_wmiquery.cc modules/pandora_module_regexp.cc modules/pandora_module_ping.cc modules/pandora_module_snmpget.cc udp_server/udp_server.cc main.cc pandora_strutils.cc pandora.cc windows_service.cc pandora_agent_conf.cc windows/pandora_windows_info.cc windows/pandora_wmi.cc pandora_windows_service.cc misc/md5.c misc/sha256.cc windows/wmi/disphelper.c ssh/libssh2/channel.c  ssh/libssh2/mac.c ssh/libssh2/session.c ssh/libssh2/comp.c ssh/libssh2/misc.c ssh/libssh2/sftp.c ssh/libssh2/crypt.c ssh/libssh2/packet.c ssh/libssh2/userauth.c ssh/libssh2/hostkey.c ssh/libssh2/publickey.c ssh/libssh2/kex.c ssh/libssh2/scp.c ssh/pandora_ssh_client.cc ssh/pandora_ssh_test.cc ftp/pandora_ftp_client.cc ftp/pandora_ftp_test.cc
+PandoraAgent_SOURCES = misc/cron.cc misc/pandora_file.cc modules/pandora_data.cc modules/pandora_module_factory.cc modules/pandora_module.cc modules/pandora_module_list.cc modules/pandora_module_plugin.cc modules/pandora_module_inventory.cc modules/pandora_module_freememory.cc modules/pandora_module_exec.cc modules/pandora_module_exec_powershell.cc modules/pandora_module_perfcounter.cc modules/pandora_module_proc.cc modules/pandora_module_tcpcheck.cc modules/pandora_module_freememory_percent.cc modules/pandora_module_freedisk.cc modules/pandora_module_freedisk_percent.cc modules/pandora_module_logevent.cc modules/pandora_module_logchannel.cc modules/pandora_module_service.cc modules/pandora_module_cpuusage.cc modules/pandora_module_wmiquery.cc modules/pandora_module_regexp.cc modules/pandora_module_ping.cc modules/pandora_module_snmpget.cc udp_server/udp_server.cc main.cc pandora_strutils.cc pandora.cc windows_service.cc pandora_agent_conf.cc windows/pandora_windows_info.cc windows/pandora_wmi.cc pandora_windows_service.cc misc/md5.c misc/sha256.cc windows/wmi/disphelper.c ssh/libssh2/channel.c  ssh/libssh2/mac.c ssh/libssh2/session.c ssh/libssh2/comp.c ssh/libssh2/misc.c ssh/libssh2/sftp.c ssh/libssh2/crypt.c ssh/libssh2/packet.c ssh/libssh2/userauth.c ssh/libssh2/hostkey.c ssh/libssh2/publickey.c ssh/libssh2/kex.c ssh/libssh2/scp.c ssh/pandora_ssh_client.cc ssh/pandora_ssh_test.cc ftp/pandora_ftp_client.cc ftp/pandora_ftp_test.cc
 PandoraAgent_CXXFLAGS=-O2
 endif
 
diff --git a/pandora_agents/win32/modules/pandora_module.cc b/pandora_agents/win32/modules/pandora_module.cc
index 2df46ad9d5..69a801e96b 100644
--- a/pandora_agents/win32/modules/pandora_module.cc
+++ b/pandora_agents/win32/modules/pandora_module.cc
@@ -236,6 +236,8 @@ Module_Kind
 Pandora_Module::parseModuleKindFromString (string kind) {
 	if (kind == module_exec_str) {
 		return MODULE_EXEC;
+	} else if (kind == module_exec_powershell_str) {
+		return MODULE_EXEC_POWERSHELL;
 	} else if (kind == module_proc_str) {
 		return MODULE_PROC;
 	} else if (kind == module_service_str) {
diff --git a/pandora_agents/win32/modules/pandora_module.h b/pandora_agents/win32/modules/pandora_module.h
index 111fc79c79..bb19b266b2 100644
--- a/pandora_agents/win32/modules/pandora_module.h
+++ b/pandora_agents/win32/modules/pandora_module.h
@@ -94,7 +94,8 @@ namespace Pandora_Modules {
 		MODULE_REGEXP,         /**< The module searches a file for matches of a regular expression */
 		MODULE_PLUGIN,          /**< Plugin */
 		MODULE_PING,            /**< Ping module */
-		MODULE_SNMPGET          /**< SNMP get module */
+		MODULE_SNMPGET,          /**< SNMP get module */
+		MODULE_EXEC_POWERSHELL      /**< The module run a custom powershell command */
 	} Module_Kind;
 	
 	/**
@@ -109,24 +110,25 @@ namespace Pandora_Modules {
 		regex_t regexp;
 	} Condition;
 
-	const string module_exec_str       = "module_exec";
-	const string module_proc_str       = "module_proc";
-	const string module_service_str    = "module_service";
-	const string module_freedisk_str   = "module_freedisk";
-	const string module_freedisk_percent_str   = "module_freedisk_percent";
-	const string module_freememory_str = "module_freememory";
-	const string module_freememory_percent_str = "module_freememory_percent";
-	const string module_cpuusage_str   = "module_cpuusage";
-	const string module_inventory_str  = "module_inventory";
-	const string module_logevent_str   = "module_logevent";	
-	const string module_logchannel_str   = "module_logchannel";
-	const string module_wmiquery_str   = "module_wmiquery";	
-	const string module_perfcounter_str = "module_perfcounter";
-	const string module_tcpcheck_str   = "module_tcpcheck";	
-	const string module_regexp_str     = "module_regexp";	
-	const string module_plugin_str     = "module_plugin";
-	const string module_ping_str       = "module_ping";	
-	const string module_snmpget_str    = "module_snmpget";	
+	const string module_exec_str       			= "module_exec";
+	const string module_proc_str       			= "module_proc";
+	const string module_service_str    			= "module_service";
+	const string module_freedisk_str   			= "module_freedisk";
+	const string module_freedisk_percent_str	= "module_freedisk_percent";
+	const string module_freememory_str 			= "module_freememory";
+	const string module_freememory_percent_str	= "module_freememory_percent";
+	const string module_cpuusage_str   			= "module_cpuusage";
+	const string module_inventory_str  			= "module_inventory";
+	const string module_logevent_str   			= "module_logevent";	
+	const string module_logchannel_str   		= "module_logchannel";
+	const string module_wmiquery_str   			= "module_wmiquery";	
+	const string module_perfcounter_str 		= "module_perfcounter";
+	const string module_tcpcheck_str   			= "module_tcpcheck";	
+	const string module_regexp_str     			= "module_regexp";	
+	const string module_plugin_str     			= "module_plugin";
+	const string module_ping_str       			= "module_ping";	
+	const string module_snmpget_str    			= "module_snmpget";
+	const string module_exec_powershell_str		= "module_exec_powershell";	
 	
 	/**
 	 * Pandora module super-class exception.
diff --git a/pandora_agents/win32/modules/pandora_module_exec_powershell.cc b/pandora_agents/win32/modules/pandora_module_exec_powershell.cc
new file mode 100644
index 0000000000..99d37b7822
--- /dev/null
+++ b/pandora_agents/win32/modules/pandora_module_exec_powershell.cc
@@ -0,0 +1,91 @@
+/* Pandora exec module. These modules exec a powershell command.
+
+   Copyright (c) 2006-2023 Pandora FMS.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License along
+   with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+*/
+
+#include "pandora_module_exec_powershell.h"
+#include "../pandora_strutils.h"
+
+#include <iostream>
+#include <stdexcept>
+#include <sstream>
+#include <string>
+#include <vector>
+#include <cstdio>
+
+#define EXEC_OK 0
+#define EXEC_ERR -1
+#define BUFSIZE 4096
+
+using namespace Pandora;
+using namespace Pandora_Strutils;
+using namespace Pandora_Modules;
+
+/** 
+ * Creates a Pandora_Module_Exec_Powershell object.
+ * 
+ * @param name Module name
+ * @param exec Command to be executed.
+ */
+Pandora_Module_Exec_Powershell::Pandora_Module_Exec_Powershell(string name, string exec) 
+                                : Pandora_Module (name) {
+
+	string escaped_exec;
+
+    for (char c : exec) {
+        if (c == '"' || c == '\\') {
+            escaped_exec += '\\';  
+        }
+        escaped_exec += c;
+    }
+
+    this->module_exec = "powershell -C \"" + escaped_exec + "\"";
+
+    this->setKind (module_exec_powershell_str);
+}
+
+void Pandora_Module_Exec_Powershell::run() {
+	string output_result;
+
+    this->has_output = false;
+    
+    FILE* pipe = popen(this->module_exec.c_str(), "r");
+    if (!pipe) {
+        pandoraLog ("Error while executing command.", GetLastError ());
+        return;
+    }
+
+    char buffer[BUFSIZE];
+    while (fgets(buffer, BUFSIZE, pipe) != NULL) {
+        output_result += buffer;
+    }
+
+    int result = pclose(pipe);
+
+    if (result == EXEC_ERR) {
+        pandoraLog ("Error while closing command process.", GetLastError ());
+        return;
+    } 
+    
+    if (result != EXEC_OK) {
+        pandoraLog ("Error invalid powershell command.", GetLastError ());
+        return;
+    }
+
+	this->has_output = true;
+    this->setOutput (output_result);
+}
\ No newline at end of file
diff --git a/pandora_agents/win32/modules/pandora_module_exec_powershell.h b/pandora_agents/win32/modules/pandora_module_exec_powershell.h
new file mode 100644
index 0000000000..d3c9785c29
--- /dev/null
+++ b/pandora_agents/win32/modules/pandora_module_exec_powershell.h
@@ -0,0 +1,43 @@
+/* Pandora exec module. These modules exec a powershell command
+
+   Copyright (c) 2006-2023 Pandora FMS.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License along
+   with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+*/
+
+#ifndef	__PANDORA_MODULE_EXEC_POWERWSHELL_H__
+#define	__PANDORA_MODULE_EXEC_POWERWSHELL_H__
+
+#include "pandora_module.h"
+
+namespace Pandora_Modules {
+	/**
+	 * Module to execute a powershell command.
+	 *
+	 * Any custom order that want to be executed can be put in
+	 * the <code>util</code> directory into the Pandora agent path.
+	 */
+	class Pandora_Module_Exec_Powershell : public Pandora_Module {
+
+	private:
+		string module_exec;
+
+	public:
+		Pandora_Module_Exec_Powershell	(string name, string exec);
+		void run ();
+	};
+}
+
+#endif
diff --git a/pandora_agents/win32/modules/pandora_module_factory.cc b/pandora_agents/win32/modules/pandora_module_factory.cc
index de149293ff..dd71dc2dd8 100644
--- a/pandora_agents/win32/modules/pandora_module_factory.cc
+++ b/pandora_agents/win32/modules/pandora_module_factory.cc
@@ -22,6 +22,7 @@
 #include "pandora_module_factory.h"
 #include "pandora_module.h"
 #include "pandora_module_exec.h"
+#include "pandora_module_exec_powershell.h"
 #include "pandora_module_proc.h"
 #include "pandora_module_service.h"
 #include "pandora_module_freedisk.h"
@@ -129,6 +130,7 @@ using namespace Pandora_Strutils;
 #define TOKEN_ALERT_TEMPLATE ("module_alert_template")
 #define TOKEN_USER_SESSION ("module_user_session ")
 #define TOKEN_WAIT_TIMEOUT ("module_wait_timeout ")
+#define TOKEN_EXEC_POWERSHELL ("module_exec_powershell ")
 	
 string
 parseLine (string line, string token) {
@@ -158,7 +160,7 @@ Pandora_Module *
 Pandora_Module_Factory::getModuleFromDefinition (string definition) {
 	list<string>           tokens;
 	list<string>::iterator iter;
-	string                 module_name, module_type, module_exec;
+	string                 module_name, module_type, module_exec, module_exec_powershell;
 	string                 module_min, module_max, module_description;
 	string                 module_interval, module_absoluteinterval;
 	string                 module_proc, module_service;
@@ -268,6 +270,7 @@ Pandora_Module_Factory::getModuleFromDefinition (string definition) {
 	module_user_session	 = "";
 	macro   = "";
 	module_wait_timeout = "";
+	module_exec_powershell = "";
     
 	stringtok (tokens, definition, "\n");
 	
@@ -302,6 +305,9 @@ Pandora_Module_Factory::getModuleFromDefinition (string definition) {
 		if (module_exec == "") {
 			module_exec = parseLine (line, TOKEN_EXEC);
 		}
+		if (module_exec_powershell == "") {
+			module_exec_powershell = parseLine (line, TOKEN_EXEC_POWERSHELL);
+		}
 		if (module_wait_timeout == "") {
 			module_wait_timeout = parseLine (line, TOKEN_WAIT_TIMEOUT);
 		}
@@ -626,6 +632,13 @@ Pandora_Module_Factory::getModuleFromDefinition (string definition) {
 					}
 				}
 
+				if (module_exec_powershell != "") {
+					pos_macro = module_exec_powershell.find(macro_name);
+					if (pos_macro != string::npos){
+						module_exec_powershell.replace(pos_macro, macro_name.size(), macro_value);
+					}
+				}
+
 				if (module_proc != "") {
 					pos_macro = module_proc.find(macro_name);
 					if (pos_macro != string::npos){
@@ -1155,6 +1168,9 @@ Pandora_Module_Factory::getModuleFromDefinition (string definition) {
 			module->setWaitTimeout (atoi (module_wait_timeout.c_str ()));
 		}
 		
+	} else if (module_exec_powershell != "") {
+		module = new Pandora_Module_Exec_Powershell (module_name, module_exec_powershell);
+		
 	} else if (module_proc != "") {
 		module = new Pandora_Module_Proc (module_name,
 						  module_proc);
diff --git a/pandora_agents/win32/modules/pandora_module_list.cc b/pandora_agents/win32/modules/pandora_module_list.cc
index be5cc32d45..b0612902a3 100644
--- a/pandora_agents/win32/modules/pandora_module_list.cc
+++ b/pandora_agents/win32/modules/pandora_module_list.cc
@@ -21,6 +21,7 @@
 #include "pandora_module_factory.h"
 #include "pandora_module_list.h"
 #include "pandora_module_exec.h"
+#include "pandora_module_exec_powershell.h"
 #include "pandora_module_proc.h"
 #include "pandora_module_service.h"
 #include "pandora_module_freedisk.h"
@@ -235,6 +236,7 @@ Pandora_Modules::Pandora_Module_List::parseModuleDefinition (string definition)
     Pandora_Module_Plugin     *module_plugin;
     Pandora_Module_Ping       *module_ping;
     Pandora_Module_SNMPGet    *module_snmpget;
+	Pandora_Module_Exec_Powershell       *module_exec_powershell;
 
 	module = Pandora_Module_Factory::getModuleFromDefinition (definition);
 	
@@ -244,6 +246,11 @@ Pandora_Modules::Pandora_Module_List::parseModuleDefinition (string definition)
 			module_exec = (Pandora_Module_Exec *) module;
 			modules->push_back (module_exec);
 			
+			break;
+		case MODULE_EXEC_POWERSHELL:
+			module_exec_powershell = (Pandora_Module_Exec_Powershell *) module;
+			modules->push_back (module_exec_powershell);
+			
 			break;
 		case MODULE_PROC:
 			module_proc = (Pandora_Module_Proc *) module;

From c5cefb3c13e7f90b95b9f03755dfec0f88cd7941 Mon Sep 17 00:00:00 2001
From: artica <artica.devel@gmail.com>
Date: Fri, 26 Jan 2024 01:00:30 +0100
Subject: [PATCH 181/231] Auto-updated build strings.

---
 pandora_agents/unix/DEBIAN/control                    | 2 +-
 pandora_agents/unix/DEBIAN/make_deb_package.sh        | 2 +-
 pandora_agents/unix/pandora_agent                     | 2 +-
 pandora_agents/unix/pandora_agent.redhat.spec         | 2 +-
 pandora_agents/unix/pandora_agent.redhat_bin.el8.spec | 2 +-
 pandora_agents/unix/pandora_agent.redhat_bin.el9.spec | 2 +-
 pandora_agents/unix/pandora_agent.redhat_bin.spec     | 2 +-
 pandora_agents/unix/pandora_agent.spec                | 2 +-
 pandora_agents/unix/pandora_agent_installer           | 2 +-
 pandora_agents/win32/installer/pandora.mpi            | 2 +-
 pandora_agents/win32/pandora.cc                       | 2 +-
 pandora_agents/win32/versioninfo.rc                   | 2 +-
 pandora_console/DEBIAN/control                        | 2 +-
 pandora_console/DEBIAN/make_deb_package.sh            | 2 +-
 pandora_console/include/config_process.php            | 2 +-
 pandora_console/install.php                           | 2 +-
 pandora_console/pandora_console.redhat.spec           | 2 +-
 pandora_console/pandora_console.rhel7.spec            | 2 +-
 pandora_console/pandora_console.spec                  | 2 +-
 pandora_server/DEBIAN/control                         | 2 +-
 pandora_server/DEBIAN/make_deb_package.sh             | 2 +-
 pandora_server/lib/PandoraFMS/Config.pm               | 2 +-
 pandora_server/lib/PandoraFMS/PluginTools.pm          | 2 +-
 pandora_server/pandora_server.redhat.spec             | 2 +-
 pandora_server/pandora_server.spec                    | 2 +-
 pandora_server/pandora_server_installer               | 2 +-
 pandora_server/util/pandora_db.pl                     | 2 +-
 pandora_server/util/pandora_manage.pl                 | 2 +-
 28 files changed, 28 insertions(+), 28 deletions(-)

diff --git a/pandora_agents/unix/DEBIAN/control b/pandora_agents/unix/DEBIAN/control
index b57934fc50..c8ee8180a7 100644
--- a/pandora_agents/unix/DEBIAN/control
+++ b/pandora_agents/unix/DEBIAN/control
@@ -1,5 +1,5 @@
 package: pandorafms-agent-unix
-Version: 7.0NG.775-240125
+Version: 7.0NG.775-240126
 Architecture: all
 Priority: optional
 Section: admin
diff --git a/pandora_agents/unix/DEBIAN/make_deb_package.sh b/pandora_agents/unix/DEBIAN/make_deb_package.sh
index cc3cf84853..fa783cc923 100644
--- a/pandora_agents/unix/DEBIAN/make_deb_package.sh
+++ b/pandora_agents/unix/DEBIAN/make_deb_package.sh
@@ -14,7 +14,7 @@
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 # GNU General Public License for more details.
 
-pandora_version="7.0NG.775-240125"
+pandora_version="7.0NG.775-240126"
 
 echo "Test if you has the tools for to make the packages."
 whereis dpkg-deb | cut -d":" -f2 | grep dpkg-deb > /dev/null
diff --git a/pandora_agents/unix/pandora_agent b/pandora_agents/unix/pandora_agent
index b0f1c9f54c..e0f3e5bdc3 100755
--- a/pandora_agents/unix/pandora_agent
+++ b/pandora_agents/unix/pandora_agent
@@ -1039,7 +1039,7 @@ my $Sem = undef;
 my $ThreadSem = undef;
 
 use constant AGENT_VERSION => '7.0NG.775';
-use constant AGENT_BUILD => '240125';
+use constant AGENT_BUILD => '240126';
 
 # Agent log default file size maximum and instances
 use constant DEFAULT_MAX_LOG_SIZE => 600000;
diff --git a/pandora_agents/unix/pandora_agent.redhat.spec b/pandora_agents/unix/pandora_agent.redhat.spec
index 516ef3ec99..5c05e6110e 100644
--- a/pandora_agents/unix/pandora_agent.redhat.spec
+++ b/pandora_agents/unix/pandora_agent.redhat.spec
@@ -4,7 +4,7 @@
 %global __os_install_post %{nil}
 %define name        pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240125
+%define release     240126
 
 Summary:            Pandora FMS Linux agent, PERL version
 Name:               %{name}
diff --git a/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec b/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec
index c0ff5e3f44..78383784e9 100644
--- a/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec
+++ b/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec
@@ -5,7 +5,7 @@
 %define name        pandorafms_agent_linux_bin
 %define source_name pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240125
+%define release     240126
 %define debug_package %{nil}
 
 Summary:            Pandora FMS Linux agent, binary version
diff --git a/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec b/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec
index 14870a78ed..b21d106a96 100644
--- a/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec
+++ b/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec
@@ -5,7 +5,7 @@
 %define name        pandorafms_agent_linux_bin
 %define source_name pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240125
+%define release     240126
 %define debug_package %{nil}
 
 Summary:            Pandora FMS Linux agent, binary version
diff --git a/pandora_agents/unix/pandora_agent.redhat_bin.spec b/pandora_agents/unix/pandora_agent.redhat_bin.spec
index 1e88ca4c7e..7a15966693 100644
--- a/pandora_agents/unix/pandora_agent.redhat_bin.spec
+++ b/pandora_agents/unix/pandora_agent.redhat_bin.spec
@@ -5,7 +5,7 @@
 %define name        pandorafms_agent_linux_bin
 %define source_name pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240125
+%define release     240126
 
 Summary:            Pandora FMS Linux agent, binary version
 Name:               %{name}
diff --git a/pandora_agents/unix/pandora_agent.spec b/pandora_agents/unix/pandora_agent.spec
index 515dc4ea4d..337a0ec5f3 100644
--- a/pandora_agents/unix/pandora_agent.spec
+++ b/pandora_agents/unix/pandora_agent.spec
@@ -4,7 +4,7 @@
 %global __os_install_post %{nil}
 %define name        pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240125
+%define release     240126
 
 Summary:            Pandora FMS Linux agent, PERL version
 Name:               %{name}
diff --git a/pandora_agents/unix/pandora_agent_installer b/pandora_agents/unix/pandora_agent_installer
index 20f63af782..2f6e9c4d3d 100755
--- a/pandora_agents/unix/pandora_agent_installer
+++ b/pandora_agents/unix/pandora_agent_installer
@@ -10,7 +10,7 @@
 # **********************************************************************
 
 PI_VERSION="7.0NG.775"
-PI_BUILD="240125"
+PI_BUILD="240126"
 OS_NAME=`uname -s`
 
 FORCE=0
diff --git a/pandora_agents/win32/installer/pandora.mpi b/pandora_agents/win32/installer/pandora.mpi
index 81661ca1bf..95fa0dd4a3 100644
--- a/pandora_agents/win32/installer/pandora.mpi
+++ b/pandora_agents/win32/installer/pandora.mpi
@@ -186,7 +186,7 @@ UpgradeApplicationID
 {}
 
 Version
-{240125}
+{240126}
 
 ViewReadme
 {Yes}
diff --git a/pandora_agents/win32/pandora.cc b/pandora_agents/win32/pandora.cc
index 91adc36bc7..f3961807fe 100644
--- a/pandora_agents/win32/pandora.cc
+++ b/pandora_agents/win32/pandora.cc
@@ -30,7 +30,7 @@ using namespace Pandora;
 using namespace Pandora_Strutils;
 
 #define PATH_SIZE    _MAX_PATH+1
-#define PANDORA_VERSION ("7.0NG.775 Build 240125")
+#define PANDORA_VERSION ("7.0NG.775 Build 240126")
 
 string pandora_path;
 string pandora_dir;
diff --git a/pandora_agents/win32/versioninfo.rc b/pandora_agents/win32/versioninfo.rc
index 5ac5a2e47f..1bb160a879 100644
--- a/pandora_agents/win32/versioninfo.rc
+++ b/pandora_agents/win32/versioninfo.rc
@@ -11,7 +11,7 @@ BEGIN
       VALUE "LegalCopyright", "Pandora FMS"
       VALUE "OriginalFilename", "PandoraAgent.exe"
       VALUE "ProductName", "Pandora FMS Windows Agent"
-      VALUE "ProductVersion", "(7.0NG.775(Build 240125))"
+      VALUE "ProductVersion", "(7.0NG.775(Build 240126))"
       VALUE "FileVersion", "1.0.0.0"
     END
   END
diff --git a/pandora_console/DEBIAN/control b/pandora_console/DEBIAN/control
index 971ba8b024..466722a50b 100644
--- a/pandora_console/DEBIAN/control
+++ b/pandora_console/DEBIAN/control
@@ -1,5 +1,5 @@
 package: pandorafms-console
-Version: 7.0NG.775-240125
+Version: 7.0NG.775-240126
 Architecture: all
 Priority: optional
 Section: admin
diff --git a/pandora_console/DEBIAN/make_deb_package.sh b/pandora_console/DEBIAN/make_deb_package.sh
index 6e7853f74f..a47efa89c2 100644
--- a/pandora_console/DEBIAN/make_deb_package.sh
+++ b/pandora_console/DEBIAN/make_deb_package.sh
@@ -14,7 +14,7 @@
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 # GNU General Public License for more details.
 
-pandora_version="7.0NG.775-240125"
+pandora_version="7.0NG.775-240126"
 
 package_pear=0
 package_pandora=1
diff --git a/pandora_console/include/config_process.php b/pandora_console/include/config_process.php
index 0cbf1c15e8..a721e82c12 100644
--- a/pandora_console/include/config_process.php
+++ b/pandora_console/include/config_process.php
@@ -20,7 +20,7 @@
 /**
  * Pandora build version and version
  */
-$build_version = 'PC240125';
+$build_version = 'PC240126';
 $pandora_version = 'v7.0NG.775';
 
 // Do not overwrite default timezone set if defined.
diff --git a/pandora_console/install.php b/pandora_console/install.php
index 1e2252fbae..c6329db34e 100644
--- a/pandora_console/install.php
+++ b/pandora_console/install.php
@@ -131,7 +131,7 @@
         <div style='padding-bottom: 50px'>
             <?php
             $version = '7.0NG.775';
-            $build = '240125';
+            $build = '240126';
             $banner = "v$version Build $build";
             error_reporting(0);
 
diff --git a/pandora_console/pandora_console.redhat.spec b/pandora_console/pandora_console.redhat.spec
index 4b7e8b0da0..1636c764f3 100644
--- a/pandora_console/pandora_console.redhat.spec
+++ b/pandora_console/pandora_console.redhat.spec
@@ -6,7 +6,7 @@
 %define debug_package %{nil}
 %define name        pandorafms_console
 %define version     7.0NG.775
-%define release     240125
+%define release     240126
 
 # User and Group under which Apache is running
 %define httpd_name  httpd
diff --git a/pandora_console/pandora_console.rhel7.spec b/pandora_console/pandora_console.rhel7.spec
index ca4ab9657e..24aad437f3 100644
--- a/pandora_console/pandora_console.rhel7.spec
+++ b/pandora_console/pandora_console.rhel7.spec
@@ -6,7 +6,7 @@
 %define debug_package %{nil}
 %define name        pandorafms_console
 %define version     7.0NG.775
-%define release     240125
+%define release     240126
 
 # User and Group under which Apache is running
 %define httpd_name  httpd
diff --git a/pandora_console/pandora_console.spec b/pandora_console/pandora_console.spec
index 977a58e4fe..c737ea2662 100644
--- a/pandora_console/pandora_console.spec
+++ b/pandora_console/pandora_console.spec
@@ -3,7 +3,7 @@
 #
 %define name        pandorafms_console
 %define version     7.0NG.775
-%define release     240125
+%define release     240126
 %define httpd_name      httpd
 # User and Group under which Apache is running
 %define httpd_name  apache2
diff --git a/pandora_server/DEBIAN/control b/pandora_server/DEBIAN/control
index 4ea2ca557b..2cef54da51 100644
--- a/pandora_server/DEBIAN/control
+++ b/pandora_server/DEBIAN/control
@@ -1,5 +1,5 @@
 package: pandorafms-server
-Version: 7.0NG.775-240125
+Version: 7.0NG.775-240126
 Architecture: all
 Priority: optional
 Section: admin
diff --git a/pandora_server/DEBIAN/make_deb_package.sh b/pandora_server/DEBIAN/make_deb_package.sh
index ef81d3e503..7780111efc 100644
--- a/pandora_server/DEBIAN/make_deb_package.sh
+++ b/pandora_server/DEBIAN/make_deb_package.sh
@@ -14,7 +14,7 @@
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 # GNU General Public License for more details.
 
-pandora_version="7.0NG.775-240125"
+pandora_version="7.0NG.775-240126"
 
 package_cpan=0
 package_pandora=1
diff --git a/pandora_server/lib/PandoraFMS/Config.pm b/pandora_server/lib/PandoraFMS/Config.pm
index b25686ee4b..4d21988c3c 100644
--- a/pandora_server/lib/PandoraFMS/Config.pm
+++ b/pandora_server/lib/PandoraFMS/Config.pm
@@ -46,7 +46,7 @@ our @EXPORT = qw(
 
 # version: Defines actual version of Pandora Server for this module only
 my $pandora_version = "7.0NG.775";
-my $pandora_build = "240125";
+my $pandora_build = "240126";
 our $VERSION = $pandora_version." ".$pandora_build;
 
 # Setup hash
diff --git a/pandora_server/lib/PandoraFMS/PluginTools.pm b/pandora_server/lib/PandoraFMS/PluginTools.pm
index 020d69c4b3..c401b9410f 100644
--- a/pandora_server/lib/PandoraFMS/PluginTools.pm
+++ b/pandora_server/lib/PandoraFMS/PluginTools.pm
@@ -34,7 +34,7 @@ our @ISA = qw(Exporter);
 
 # version: Defines actual version of Pandora Server for this module only
 my $pandora_version = "7.0NG.775";
-my $pandora_build = "240125";
+my $pandora_build = "240126";
 our $VERSION = $pandora_version." ".$pandora_build;
 
 our %EXPORT_TAGS = ( 'all' => [ qw() ] );
diff --git a/pandora_server/pandora_server.redhat.spec b/pandora_server/pandora_server.redhat.spec
index 829d5ae091..e7e972a801 100644
--- a/pandora_server/pandora_server.redhat.spec
+++ b/pandora_server/pandora_server.redhat.spec
@@ -7,7 +7,7 @@
 %define debug_package %{nil}
 %define name        pandorafms_server
 %define version     7.0NG.775
-%define release     240125
+%define release     240126
 
 Summary:            Pandora FMS Server
 Name:               %{name}
diff --git a/pandora_server/pandora_server.spec b/pandora_server/pandora_server.spec
index c697aa9c8f..f443bc4b03 100644
--- a/pandora_server/pandora_server.spec
+++ b/pandora_server/pandora_server.spec
@@ -4,7 +4,7 @@
 %global __os_install_post %{nil}
 %define name        pandorafms_server
 %define version     7.0NG.775
-%define release     240125
+%define release     240126
 
 Summary:            Pandora FMS Server
 Name:               %{name}
diff --git a/pandora_server/pandora_server_installer b/pandora_server/pandora_server_installer
index 03fa6a84d0..bc5676b742 100755
--- a/pandora_server/pandora_server_installer
+++ b/pandora_server/pandora_server_installer
@@ -9,7 +9,7 @@
 # **********************************************************************
 
 PI_VERSION="7.0NG.775"
-PI_BUILD="240125"
+PI_BUILD="240126"
 
 MODE=$1
 if [ $# -gt 1 ]; then
diff --git a/pandora_server/util/pandora_db.pl b/pandora_server/util/pandora_db.pl
index 66e75586cb..f079a42194 100755
--- a/pandora_server/util/pandora_db.pl
+++ b/pandora_server/util/pandora_db.pl
@@ -38,7 +38,7 @@ use PandoraFMS::Config;
 use PandoraFMS::DB;
 
 # version: define current version
-my $version = "7.0NG.775 Build 240125";
+my $version = "7.0NG.775 Build 240126";
 
 # Pandora server configuration
 my %conf;
diff --git a/pandora_server/util/pandora_manage.pl b/pandora_server/util/pandora_manage.pl
index b154b38ada..e7921bff4a 100755
--- a/pandora_server/util/pandora_manage.pl
+++ b/pandora_server/util/pandora_manage.pl
@@ -36,7 +36,7 @@ use Encode::Locale;
 Encode::Locale::decode_argv;
 
 # version: define current version
-my $version = "7.0NG.775 Build 240125";
+my $version = "7.0NG.775 Build 240126";
 
 # save program name for logging
 my $progname = basename($0);

From c07ecff571a86fff706c65290698912beb2fdac7 Mon Sep 17 00:00:00 2001
From: Jonathan <jonathan.leon@pandorafms.com>
Date: Fri, 26 Jan 2024 08:13:10 +0100
Subject: [PATCH 182/231] #12807 check id_agent for alert view

---
 .../operation/agentes/alerts_status.php       | 22 ++++++++++---------
 1 file changed, 12 insertions(+), 10 deletions(-)

diff --git a/pandora_console/operation/agentes/alerts_status.php b/pandora_console/operation/agentes/alerts_status.php
index a4f7c7d81c..68988900bc 100755
--- a/pandora_console/operation/agentes/alerts_status.php
+++ b/pandora_console/operation/agentes/alerts_status.php
@@ -536,19 +536,21 @@ echo '</div>';
 ui_require_css_file('cluetip', 'include/styles/js/');
 ui_require_jquery_file('cluetip');
 
-$system_higher = false;
-$modules_agent = db_get_all_rows_sql(sprintf('SELECT id_agente FROM tagente_modulo WHERE id_agente = %s', $id_agente));
-if (is_array($modules_agent)) {
-    $all_modules = db_get_all_rows_sql('SELECT id_agente FROM tagente_modulo');
-    $all_agents = db_get_all_rows_sql('SELECT id_agente FROM tagente');
-    if (is_array($all_modules) && is_array($all_agents)) {
-        if ((count($all_modules) / count($all_agents)) >= 200) {
-            $system_higher = true;
+if (isset($id_agente)) {
+    $system_higher = false;
+    $modules_agent = db_get_all_rows_sql(sprintf('SELECT id_agente FROM tagente_modulo WHERE id_agente = %s', $id_agente));
+    if (is_array($modules_agent)) {
+        $all_modules = db_get_all_rows_sql('SELECT id_agente FROM tagente_modulo');
+        $all_agents = db_get_all_rows_sql('SELECT id_agente FROM tagente');
+        if (is_array($all_modules) && is_array($all_agents)) {
+            if ((count($all_modules) / count($all_agents)) >= 200) {
+                $system_higher = true;
+            }
         }
     }
-}
 
-echo '<div id="system_higher" class="invisible_important agent_details_agent_data flex_important"><img src="images/alert-yellow@svg.svg" width="10%" class="mrgn_right_20px">'.__('Your system has a much higher rate of modules per agent than recommended (200 modules per agent). This implies performance problems in the system, please consider reducing the number of modules in this agent.').'</div>';
+    echo '<div id="system_higher" class="invisible_important agent_details_agent_data flex_important"><img src="images/alert-yellow@svg.svg" width="10%" class="mrgn_right_20px">'.__('Your system has a much higher rate of modules per agent than recommended (200 modules per agent). This implies performance problems in the system, please consider reducing the number of modules in this agent.').'</div>';
+}
 
 ?>
 

From 65385f36c18eb24ac62613350ffdc19304e712b4 Mon Sep 17 00:00:00 2001
From: daniel <daniel.barbero@artica.es>
Date: Fri, 26 Jan 2024 09:18:47 +0100
Subject: [PATCH 183/231] fix visual errors in widgets dashboard
 pandora_enterprise#12267

---
 pandora_console/include/functions_ui.php         |  6 +++---
 .../lib/Dashboard/Widgets/ModulesByStatus.php    |  4 ++--
 pandora_console/include/styles/dashboards.css    | 16 ++++++++++++++++
 3 files changed, 21 insertions(+), 5 deletions(-)

diff --git a/pandora_console/include/functions_ui.php b/pandora_console/include/functions_ui.php
index d6078c56a7..0062b52e70 100755
--- a/pandora_console/include/functions_ui.php
+++ b/pandora_console/include/functions_ui.php
@@ -4257,15 +4257,15 @@ function ui_print_datatable(array $parameters)
     // * END JAVASCRIPT.
     $info_msg_arr = [];
     $info_msg_arr['message'] = $emptyTable;
-    $info_msg_arr['div_class'] = 'info_box_container invisible_important datatable-msg-info-'.$table_id;
+    $info_msg_arr['div_class'] = 'info_box_container invisible_important datatable-info-massage datatable-msg-info-'.$table_id;
 
     $info_msg_arr_filter = [];
     $info_msg_arr_filter['message'] = __('Please apply a filter to display the data.');
-    $info_msg_arr_filter['div_class'] = 'info_box_container invisible_important datatable-msg-info-filter-'.$table_id;
+    $info_msg_arr_filter['div_class'] = 'info_box_container invisible_important datatable-info-massage datatable-msg-info-filter-'.$table_id;
 
     $spinner = '<div id="'.$table_id.'-spinner" class="invisible spinner-fixed"><span></span><span></span><span></span><span></span></div>';
 
-    $info_msg = '<div>'.ui_print_info_message($info_msg_arr, '', true).'</div>';
+    $info_msg = '<div class="datatable-container-info-massage">'.ui_print_info_message($info_msg_arr, '', true).'</div>';
 
     $info_msg_filter = '<div>'.ui_print_info_message($info_msg_arr_filter, true).'</div>';
 
diff --git a/pandora_console/include/lib/Dashboard/Widgets/ModulesByStatus.php b/pandora_console/include/lib/Dashboard/Widgets/ModulesByStatus.php
index 86a6cde7ed..69c0a36f44 100644
--- a/pandora_console/include/lib/Dashboard/Widgets/ModulesByStatus.php
+++ b/pandora_console/include/lib/Dashboard/Widgets/ModulesByStatus.php
@@ -521,7 +521,7 @@ class ModulesByStatus extends Widget
                 'server_name',
                 [
                     'text'  => 'last_status_change',
-                    'class' => 'flex-column',
+                    'class' => '',
                 ],
                 'estado',
             ];
@@ -538,7 +538,7 @@ class ModulesByStatus extends Widget
                 'alias',
                 [
                     'text'  => 'last_status_change',
-                    'class' => 'flex-column',
+                    'class' => '',
                 ],
                 'estado',
             ];
diff --git a/pandora_console/include/styles/dashboards.css b/pandora_console/include/styles/dashboards.css
index 8786faa843..00a780be6d 100644
--- a/pandora_console/include/styles/dashboards.css
+++ b/pandora_console/include/styles/dashboards.css
@@ -977,3 +977,19 @@ input.resize_button {
 .event-cardboard-widget td {
   cursor: pointer;
 }
+
+.datatable-container-info-massage:not(:has(.invisible_important)) {
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  justify-content: center;
+  height: 100%;
+  width: 100%;
+}
+
+.info_box_information.datatable-info-massage.info_box_container
+  .info_box.info.textodialogo {
+  display: flex;
+  width: 100%;
+  justify-content: center;
+}

From bba32495a4f8518f92e8e1fa7f4d69f5120ede03 Mon Sep 17 00:00:00 2001
From: daniel <daniel.barbero@artica.es>
Date: Fri, 26 Jan 2024 10:15:01 +0100
Subject: [PATCH 184/231] fix visual errors in msg umc offline
 pandora_enterprise#12399

---
 .../resources/javascript/umc_offline.js               | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/pandora_console/update_manager_client/resources/javascript/umc_offline.js b/pandora_console/update_manager_client/resources/javascript/umc_offline.js
index ad2432a306..11e397d996 100644
--- a/pandora_console/update_manager_client/resources/javascript/umc_offline.js
+++ b/pandora_console/update_manager_client/resources/javascript/umc_offline.js
@@ -428,11 +428,14 @@ function install_package(url, auth, packageId, version, serverUpdate) {
 
           var response = d.result;
           document.getElementById("log_zone").innerText = response.result;
-          $("#input-progress")
-            .val(100)
-            .change();
+          if (response.error == undefined || response.error == "") {
+            $("#input-progress")
+              .val(100)
+              .change();
+
+            $("#result li").removeClass("error");
+          }
 
-          $("#result li").removeClass("error");
           $("#result li")
             .find("p")
             .text(response.result);

From 139b92441032d69bed35199f7e5a817997113841 Mon Sep 17 00:00:00 2001
From: Daniel Cebrian <daniel.cebrian@pandorafms.com>
Date: Fri, 26 Jan 2024 14:01:32 +0100
Subject: [PATCH 185/231] #12681 added decimals in module windows

---
 pandora_agents/unix/pandora_agent           | 2 +-
 pandora_agents/win32/windows/pandora_wmi.cc | 6 +++---
 pandora_agents/win32/windows/pandora_wmi.h  | 2 +-
 3 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/pandora_agents/unix/pandora_agent b/pandora_agents/unix/pandora_agent
index 956fb984d8..4ec522db43 100755
--- a/pandora_agents/unix/pandora_agent
+++ b/pandora_agents/unix/pandora_agent
@@ -3132,7 +3132,7 @@ sub module_freepercentdisk ($) {
 
 	return () unless defined ($Parts{$module->{'params'}}) and defined ($Parts{$module->{'params'}}{'avail'});
 	
-	my $availp = sprintf("%.2f", $Parts{$module->{'params'}}{'avail'} * 100 / $Parts{$module->{'params'}}{'total'});
+	my $availp = sprintf("%d", $Parts{$module->{'params'}}{'avail'} * 100 / $Parts{$module->{'params'}}{'total'});
 	return ($availp);
 }
 
diff --git a/pandora_agents/win32/windows/pandora_wmi.cc b/pandora_agents/win32/windows/pandora_wmi.cc
index 7bf1091602..5e382232ae 100644
--- a/pandora_agents/win32/windows/pandora_wmi.cc
+++ b/pandora_agents/win32/windows/pandora_wmi.cc
@@ -188,7 +188,7 @@ Pandora_Wmi::getDiskFreeSpace (string disk_id) {
  * @exception Pandora_Wmi_Exception Throwd if an error occured when reading
  *            from WMI database.
  */
-unsigned long
+double
 Pandora_Wmi::getDiskFreeSpacePercent (string disk_id) {
 	CDhInitialize      init;
 	CDispPtr           wmi_svc, quickfixes;
@@ -202,7 +202,7 @@ Pandora_Wmi::getDiskFreeSpacePercent (string disk_id) {
 		dhCheck (dhGetValue (L"%o", &quickfixes, wmi_svc,
 				     L".ExecQuery(%T)",
 				     query.c_str ()));
-	
+
 		FOR_EACH (quickfix, quickfixes, NULL) {
 			dhGetValue (L"%e", &free_space, quickfix,
 				    L".FreeSpace");
@@ -213,7 +213,7 @@ Pandora_Wmi::getDiskFreeSpacePercent (string disk_id) {
 				return 0;
 			}
 
-			return (unsigned long) (free_space * 100 / size);
+			return (free_space * 100 / size);
 		} NEXT_THROW (quickfix);
 	} catch (string errstr) {
 		pandoraLog ("getDiskFreeSpace error. %s", errstr.c_str ());
diff --git a/pandora_agents/win32/windows/pandora_wmi.h b/pandora_agents/win32/windows/pandora_wmi.h
index 5eeb5d6a90..857b228471 100644
--- a/pandora_agents/win32/windows/pandora_wmi.h
+++ b/pandora_agents/win32/windows/pandora_wmi.h
@@ -44,7 +44,7 @@ namespace Pandora_Wmi {
 	int           isProcessRunning      (string process_name);
 	int           isServiceRunning      (string service_name);
 	unsigned long getDiskFreeSpace      (string disk_id);
-	unsigned long getDiskFreeSpacePercent      (string disk_id);
+	double        getDiskFreeSpacePercent      (string disk_id);
 	int           getCpuUsagePercentage (int cpu_id);
 	long          getFreememory         ();
 	long          getFreememoryPercent  ();

From babb7bce3895bb955bb752a27176b2376d293dd9 Mon Sep 17 00:00:00 2001
From: Daniel Cebrian <daniel.cebrian@pandorafms.com>
Date: Fri, 26 Jan 2024 15:06:09 +0100
Subject: [PATCH 186/231] #12681 fixed double number parse

---
 pandora_agents/win32/modules/pandora_module_freedisk_percent.cc | 2 +-
 pandora_agents/win32/windows/pandora_wmi.cc                     | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/pandora_agents/win32/modules/pandora_module_freedisk_percent.cc b/pandora_agents/win32/modules/pandora_module_freedisk_percent.cc
index c061d4394b..d117b0feca 100755
--- a/pandora_agents/win32/modules/pandora_module_freedisk_percent.cc
+++ b/pandora_agents/win32/modules/pandora_module_freedisk_percent.cc
@@ -59,7 +59,7 @@ Pandora_Module_Freedisk_Percent::run () {
 	try {
 		res = Pandora_Wmi::getDiskFreeSpacePercent (this->disk_id);
 			
-		this->setOutput (longtostr (res));
+		this->setOutput (res);
 	} catch (Pandora_Wmi::Pandora_Wmi_Exception e) {
 		this->has_output = false;
 	}
diff --git a/pandora_agents/win32/windows/pandora_wmi.cc b/pandora_agents/win32/windows/pandora_wmi.cc
index 5e382232ae..d0b3f5dc30 100644
--- a/pandora_agents/win32/windows/pandora_wmi.cc
+++ b/pandora_agents/win32/windows/pandora_wmi.cc
@@ -192,7 +192,7 @@ double
 Pandora_Wmi::getDiskFreeSpacePercent (string disk_id) {
 	CDhInitialize      init;
 	CDispPtr           wmi_svc, quickfixes;
-	double      free_space = 0, size = 0;
+	double             free_space = 0, size = 0;
 	string             query;
 
 	query = "SELECT Size, FreeSpace FROM Win32_LogicalDisk WHERE DeviceID = \"" + disk_id + "\"";

From 1b9cd2d36cd225e01a447947ffa1495d2ec97730 Mon Sep 17 00:00:00 2001
From: Daniel Cebrian <daniel.cebrian@pandorafms.com>
Date: Fri, 26 Jan 2024 15:26:29 +0100
Subject: [PATCH 187/231] #12681 fixed double parse

---
 pandora_agents/win32/modules/pandora_module_freedisk_percent.cc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pandora_agents/win32/modules/pandora_module_freedisk_percent.cc b/pandora_agents/win32/modules/pandora_module_freedisk_percent.cc
index d117b0feca..032810dfc4 100755
--- a/pandora_agents/win32/modules/pandora_module_freedisk_percent.cc
+++ b/pandora_agents/win32/modules/pandora_module_freedisk_percent.cc
@@ -59,7 +59,7 @@ Pandora_Module_Freedisk_Percent::run () {
 	try {
 		res = Pandora_Wmi::getDiskFreeSpacePercent (this->disk_id);
 			
-		this->setOutput (res);
+        this->setOutput(std::to_string(res));
 	} catch (Pandora_Wmi::Pandora_Wmi_Exception e) {
 		this->has_output = false;
 	}

From b8973ecab49cea55d1bb117d549a8888b610d02b Mon Sep 17 00:00:00 2001
From: Daniel Cebrian <daniel.cebrian@pandorafms.com>
Date: Mon, 29 Jan 2024 09:04:03 +0100
Subject: [PATCH 188/231] #12681 fixed decimals in module freepercent

---
 pandora_agents/win32/modules/pandora_module_freedisk_percent.cc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pandora_agents/win32/modules/pandora_module_freedisk_percent.cc b/pandora_agents/win32/modules/pandora_module_freedisk_percent.cc
index 032810dfc4..bda0043b0d 100755
--- a/pandora_agents/win32/modules/pandora_module_freedisk_percent.cc
+++ b/pandora_agents/win32/modules/pandora_module_freedisk_percent.cc
@@ -48,7 +48,7 @@ Pandora_Module_Freedisk_Percent::Pandora_Module_Freedisk_Percent (string name, s
 
 void
 Pandora_Module_Freedisk_Percent::run () {
-	long res;
+	double res;
 
 	try {
 		Pandora_Module::run ();

From f01902903c4e006765c9ad3541ee4fb7f1bbb115 Mon Sep 17 00:00:00 2001
From: Daniel Cebrian <daniel.cebrian@pandorafms.com>
Date: Mon, 29 Jan 2024 13:38:29 +0100
Subject: [PATCH 189/231] #12789 fixed regex in event table

---
 .../include/javascript/datatablesFunction.js  | 16 +++++++++-
 pandora_console/operation/events/events.php   | 31 ++++++++++---------
 2 files changed, 32 insertions(+), 15 deletions(-)

diff --git a/pandora_console/include/javascript/datatablesFunction.js b/pandora_console/include/javascript/datatablesFunction.js
index b517830ce9..dae44dd6b1 100644
--- a/pandora_console/include/javascript/datatablesFunction.js
+++ b/pandora_console/include/javascript/datatablesFunction.js
@@ -1,3 +1,5 @@
+/* global $ */
+
 var dt = dt;
 var config = config;
 
@@ -141,6 +143,8 @@ if (dt.no_move_elements_to_action === true) {
   noMoveElementsToAction = true;
 }
 
+var showAlwaysPagination = false;
+
 $(document).ready(function() {
   function checkPages() {
     if (dt_table.page.info().pages > 1) {
@@ -253,7 +257,11 @@ $(document).ready(function() {
         $("div.pagination-child-div").hide();
         $("div.dataTables_info").hide();
         $(`#${dt.id}_wrapper`).hide();
-        $(`.action_buttons_right_content .pagination-child-div`).hide();
+        if (showAlwaysPagination) {
+          $(`.action_buttons_right_content .pagination-child-div`).show();
+        } else {
+          $(`.action_buttons_right_content .pagination-child-div`).hide();
+        }
       } else {
         $(`.datatable-msg-info-${dt.id}`).hide();
         $(`table#${dt.id}`).show();
@@ -283,6 +291,12 @@ $(document).ready(function() {
             $(`#${dt.form_id}_loading`).remove();
           }
 
+          if (json.showAlwaysPagination) {
+            showAlwaysPagination = true;
+          } else {
+            showAlwaysPagination = false;
+          }
+
           if (json.error) {
             console.error(json.error);
             $(`#error-${dt.id}`).html(json.error);
diff --git a/pandora_console/operation/events/events.php b/pandora_console/operation/events/events.php
index c9962483f5..1086b8f908 100644
--- a/pandora_console/operation/events/events.php
+++ b/pandora_console/operation/events/events.php
@@ -1229,26 +1229,28 @@ if (is_ajax() === true) {
                             }
                         }
 
-                        $no_return = false;
+                        $regex_validation = false;
                         if (empty($tmp) === false && $regex !== '') {
-                            $regex_validation = false;
                             foreach (json_decode(json_encode($tmp), true) as $key => $field) {
+                                if ($key === 'b64') {
+                                    continue;
+                                }
+
+                                $field = strip_tags($field);
+
                                 if (preg_match('/'.$regex.'/', $field)) {
                                     $regex_validation = true;
                                 }
                             }
 
-                            if ($regex_validation === false) {
-                                $no_return = true;
+                            if ($regex_validation === true) {
+                                $carry[] = $tmp;
                             }
+                        } else {
+                            $carry[] = $tmp;
                         }
 
-                        if ($no_return === false) {
-                            $carry[] = $tmp;
-                            return $carry;
-                        } else {
-                            return;
-                        }
+                        return $carry;
                     }
                 );
             }
@@ -1256,10 +1258,11 @@ if (is_ajax() === true) {
             // RecordsTotal && recordsfiltered resultados totales.
             echo json_encode(
                 [
-                    'data'            => ($data ?? []),
-                    'buffers'         => $buffers,
-                    'recordsTotal'    => $count,
-                    'recordsFiltered' => $count,
+                    'data'                 => ($data ?? []),
+                    'buffers'              => $buffers,
+                    'recordsTotal'         => $count,
+                    'recordsFiltered'      => $count,
+                    'showAlwaysPagination' => (empty($regex) === false) ? true : false,
                 ]
             );
         } catch (Exception $e) {

From 1738a06cf20ce34c2f298c16e508ea254951b4bb Mon Sep 17 00:00:00 2001
From: Daniel Cebrian <daniel.cebrian@pandorafms.com>
Date: Mon, 29 Jan 2024 13:42:09 +0100
Subject: [PATCH 190/231] #12789 added tip in regex search

---
 pandora_console/operation/events/events.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pandora_console/operation/events/events.php b/pandora_console/operation/events/events.php
index 1086b8f908..e99ac14fca 100644
--- a/pandora_console/operation/events/events.php
+++ b/pandora_console/operation/events/events.php
@@ -2109,7 +2109,7 @@ $in .= $data.'</div>';
 $inputs[] = $in;
 
 // REGEX search datatable.
-$in = '<div class="filter_input"><label>'.__('Regex search').ui_print_help_tip(__('Regular expresion to filter.'), true).'</label>';
+$in = '<div class="filter_input"><label>'.__('Regex search').ui_print_help_tip(__('Filter the results of the current page with regular expressions. It works on Agent name, Event name, Extra ID, Source, Custom data and Comment fields.'), true).'</label>';
 $in .= html_print_input_text('regex', $regex, '', '', 255, true);
 $in .= '</div>';
 $inputs[] = $in;

From 4971c29819b43d1c3279e071532955324c0c6eca Mon Sep 17 00:00:00 2001
From: Daniel Cebrian <daniel.cebrian@pandorafms.com>
Date: Tue, 30 Jan 2024 09:25:17 +0100
Subject: [PATCH 191/231] #12789 fixed pagination in events

---
 pandora_console/operation/events/events.php | 20 +++++++++++---------
 1 file changed, 11 insertions(+), 9 deletions(-)

diff --git a/pandora_console/operation/events/events.php b/pandora_console/operation/events/events.php
index a1529ebcaf..76ec9d8e8e 100644
--- a/pandora_console/operation/events/events.php
+++ b/pandora_console/operation/events/events.php
@@ -1255,15 +1255,17 @@ if (is_ajax() === true) {
                 );
             }
 
-            $data = array_values(
-                array_filter(
-                    ($data ?? []),
-                    function ($item) {
-                        return (bool) (array) $item;
-                    }
-                )
-            );
-            $count = count($data);
+            if ($regex !== '') {
+                $data = array_values(
+                    array_filter(
+                        ($data ?? []),
+                        function ($item) {
+                            return (bool) (array) $item;
+                        }
+                    )
+                );
+            }
+
             // RecordsTotal && recordsfiltered resultados totales.
             echo json_encode(
                 [

From 6091071f03c7ef93ddc91e0af067daa5451d7974 Mon Sep 17 00:00:00 2001
From: Jonathan <jonathan.leon@pandorafms.com>
Date: Tue, 30 Jan 2024 10:11:53 +0100
Subject: [PATCH 192/231] #12718 fix error on signature package ums

---
 .../update_manager_client/lib/UpdateManager/Client.php     | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/pandora_console/update_manager_client/lib/UpdateManager/Client.php b/pandora_console/update_manager_client/lib/UpdateManager/Client.php
index 0931297fdc..5431c0b58c 100644
--- a/pandora_console/update_manager_client/lib/UpdateManager/Client.php
+++ b/pandora_console/update_manager_client/lib/UpdateManager/Client.php
@@ -2383,7 +2383,7 @@ class Client
 
             // Retrieve package from UMS.
             $this->notify(0, 'Downloading server update '.$version);
-            $this->post(
+            $package = $this->post(
                 [
                     'action'    => 'get_server_package',
                     'arguments' => ['version' => $version],
@@ -2407,6 +2407,11 @@ class Client
                 return false;
             }
 
+            if (empty($package) === true) {
+                $this->lastError = 'Error on Package from UMS';
+                return false;
+            }
+
             if ($this->propagateUpdates === true) {
                 $this->saveSignature(
                     $signature,

From c008aee180e3b2bb1fedc95f0b28f716ca78bf13 Mon Sep 17 00:00:00 2001
From: Jonathan <jonathan.leon@pandorafms.com>
Date: Tue, 30 Jan 2024 12:01:20 +0100
Subject: [PATCH 193/231] #12815 modules search space entity

---
 pandora_console/godmode/agentes/module_manager.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pandora_console/godmode/agentes/module_manager.php b/pandora_console/godmode/agentes/module_manager.php
index b4cd0e2351..c3772c00d3 100644
--- a/pandora_console/godmode/agentes/module_manager.php
+++ b/pandora_console/godmode/agentes/module_manager.php
@@ -575,7 +575,7 @@ $where = sprintf('delete_pending = 0 AND id_agente = %s', $id_agente);
 $search_string_entities = io_safe_input($search_string);
 
 $basic_where = sprintf(
-    "(REPLACE(nombre, '&#x20;', ' ')  LIKE '%%%s%%' OR REPLACE(nombre, '&#x20;', ' ') LIKE '%%%s%%' OR REPLACE(descripcion, '&#x20;', ' ') LIKE '%%%s%%' OR REPLACE(descripcion, '&#x20;', ' ') LIKE '%%%s%%') AND",
+    "(nombre LIKE '%%%s%%' OR nombre LIKE '%%%s%%' OR descripcion LIKE '%%%s%%' OR descripcion LIKE '%%%s%%') AND",
     $search_string,
     $search_string_entities,
     $search_string,

From f430d3ce9f646f797348426320d126e855abf414 Mon Sep 17 00:00:00 2001
From: Jonathan <jonathan.leon@pandorafms.com>
Date: Tue, 30 Jan 2024 14:53:48 +0100
Subject: [PATCH 194/231] #12797 fix select2

---
 pandora_console/include/class/ExtensionsDiscovery.class.php | 1 +
 pandora_console/include/javascript/extensions_discovery.js  | 2 +-
 2 files changed, 2 insertions(+), 1 deletion(-)

diff --git a/pandora_console/include/class/ExtensionsDiscovery.class.php b/pandora_console/include/class/ExtensionsDiscovery.class.php
index 84528c5bb1..b9b5d0ebf2 100644
--- a/pandora_console/include/class/ExtensionsDiscovery.class.php
+++ b/pandora_console/include/class/ExtensionsDiscovery.class.php
@@ -452,6 +452,7 @@ class ExtensionsDiscovery extends Wizard
      */
     public function run()
     {
+        ui_require_javascript_file('select2.min');
         ui_require_javascript_file('extensions_discovery');
         $_iniFile = $this->loadIni();
         if ($_iniFile === false) {
diff --git a/pandora_console/include/javascript/extensions_discovery.js b/pandora_console/include/javascript/extensions_discovery.js
index 15b8bfa60b..6dbef136c8 100644
--- a/pandora_console/include/javascript/extensions_discovery.js
+++ b/pandora_console/include/javascript/extensions_discovery.js
@@ -4,7 +4,7 @@ $(document).ready(() => {
   $("#_credentials_").select2({
     closeOnSelect: true
   });
-
+  var interval;
   if (interval === "0") {
     setTimeout(() => {
       $("#mode_interval")

From 2531de8cb0a4d2446b72670ce391e58faccee025 Mon Sep 17 00:00:00 2001
From: Daniel Cebrian <daniel.cebrian@pandorafms.com>
Date: Tue, 30 Jan 2024 14:58:04 +0100
Subject: [PATCH 195/231] #12034 fixed page not access when dashboard is
 deleted

---
 pandora_console/include/lib/Dashboard/Manager.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pandora_console/include/lib/Dashboard/Manager.php b/pandora_console/include/lib/Dashboard/Manager.php
index a7df33dce5..946097b207 100644
--- a/pandora_console/include/lib/Dashboard/Manager.php
+++ b/pandora_console/include/lib/Dashboard/Manager.php
@@ -311,7 +311,7 @@ class Manager implements PublicLogin
 
         if ($this->dashboardId !== 0) {
             $this->dashboardFields = $this->get();
-            if (is_array($this->dashboardFields) === true && count($this->dashboardFields) === 0) {
+            if ($this->deleteDashboard === false && is_array($this->dashboardFields) === true && count($this->dashboardFields) === 0) {
                 db_pandora_audit(
                     AUDIT_LOG_HACK_ATTEMPT,
                     'Trying to access to dashboard that not exist'

From 727ee659ae9875402505b0416bf8c370a4f5b45b Mon Sep 17 00:00:00 2001
From: Jonathan <jonathan.leon@pandorafms.com>
Date: Tue, 30 Jan 2024 15:37:04 +0100
Subject: [PATCH 196/231] #12791 fix wizard welcome

---
 pandora_console/general/header.php | 33 +++++++++++++++++++++++++++++-
 1 file changed, 32 insertions(+), 1 deletion(-)

diff --git a/pandora_console/general/header.php b/pandora_console/general/header.php
index 5ad89d8d31..35b994fead 100644
--- a/pandora_console/general/header.php
+++ b/pandora_console/general/header.php
@@ -1021,11 +1021,14 @@ echo sprintf('<div id="header_table" class="header_table_%s">', $menuTypeClass);
                 modal: {
                     title: "<?php echo __('Welcome to').' '.io_safe_output(get_product_name()); ?>",
                     cancel: '<?php echo __('Do not show anymore'); ?>',
-                    ok: '<?php echo __('Close'); ?>'
+                    ok: '<?php echo __('Close'); ?>',
+                    overlay: true,
+                    overlayExtraClass: 'welcome-overlay',
                 },
                 onshow: {
                     page: 'include/ajax/welcome_window',
                     method: 'loadWelcomeWindow',
+                    width: 1000,
                 },
                 oncancel: {
                     page: 'include/ajax/welcome_window',
@@ -1043,6 +1046,34 @@ echo sprintf('<div id="header_table" class="header_table_%s">', $menuTypeClass);
                             }
                         })
                     }
+                },
+                onload: () => {
+                    $(document).ready(function () {
+                        var buttonpane = $("div[aria-describedby='welcome_modal_window'] .ui-dialog-buttonpane.ui-widget-content.ui-helper-clearfix");
+                        $(buttonpane).append(`
+                        <div class="welcome-wizard-buttons">
+                            <label>
+                                <input type="checkbox" class="welcome-wizard-do-not-show" value="1" />
+                                <?php echo __('Do not show anymore'); ?>
+                            </label>
+                            <button class="close-wizard-button"><?php echo __('Close wizard'); ?></button>
+                        </div>
+                        `);
+
+                        var closeWizard = $("button.close-wizard-button");
+
+                        $(closeWizard).click(function (e) {
+                            var close = $("div[aria-describedby='welcome_modal_window'] button.sub.ok.submit-next.ui-button");
+                            var cancel = $("div[aria-describedby='welcome_modal_window'] button.sub.upd.submit-cancel.ui-button");
+                            var checkbox = $("div[aria-describedby='welcome_modal_window'] .welcome-wizard-do-not-show:checked").length;
+
+                            if (checkbox === 1) {
+                                $(cancel).click();
+                            } else {
+                                $(close).click()
+                            }
+                        });
+                    });
                 }
             });
         });

From 0df437992620576bb80c57f29d13c08ef0904f43 Mon Sep 17 00:00:00 2001
From: "alejandro.campos@artica.es" <alejandro.campos@artica.es>
Date: Tue, 30 Jan 2024 17:47:43 +0100
Subject: [PATCH 197/231] fixed database ncm info

---
 pandora_console/extras/mr/68.sql | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/pandora_console/extras/mr/68.sql b/pandora_console/extras/mr/68.sql
index 254cb2e7c1..b7aff681a9 100644
--- a/pandora_console/extras/mr/68.sql
+++ b/pandora_console/extras/mr/68.sql
@@ -10,5 +10,7 @@ ALTER TABLE `tusuario` CHANGE COLUMN `metaconsole_data_section` `metaconsole_dat
 
 ALTER TABLE `tmensajes` ADD COLUMN `icon_notification` VARCHAR(250) NULL DEFAULT NULL AFTER `url`;
 
+UPDATE `tncm_template` SET `vendors` = CONCAT('["', TRIM(BOTH '"' FROM TRIM(BOTH ']' FROM TRIM(BOTH '[' FROM vendors))), '"]'), `models` = CONCAT('["', TRIM(BOTH '"' FROM TRIM(BOTH ']' FROM TRIM(BOTH '[' FROM models))), '"]');
+UPDATE `tncm_agent_data_template` SET `vendors` = CONCAT('["', TRIM(BOTH '"' FROM TRIM(BOTH ']' FROM TRIM(BOTH '[' FROM vendors))), '"]'), `models` = CONCAT('["', TRIM(BOTH '"' FROM TRIM(BOTH ']' FROM TRIM(BOTH '[' FROM models))), '"]');
 
 COMMIT;
\ No newline at end of file

From 1882c7a624642d429434b58db2932502e1023996 Mon Sep 17 00:00:00 2001
From: Daniel Cebrian <daniel.cebrian@pandorafms.com>
Date: Tue, 30 Jan 2024 17:58:41 +0100
Subject: [PATCH 198/231] #12833 fixed critical value in bulk operation

---
 pandora_console/godmode/massive/massive_edit_modules.php | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/pandora_console/godmode/massive/massive_edit_modules.php b/pandora_console/godmode/massive/massive_edit_modules.php
index 9b11b86916..79cd0233da 100755
--- a/pandora_console/godmode/massive/massive_edit_modules.php
+++ b/pandora_console/godmode/massive/massive_edit_modules.php
@@ -768,7 +768,7 @@ $table_critical->tdid[0][0] = 'edit1-3-min';
 $table_critical->data[0][0] = html_print_label_input_block(
     __('Min.'),
     html_print_input_text(
-        'min_warning',
+        'min_critical',
         '',
         '',
         false,
@@ -781,7 +781,7 @@ $table_critical->tdid[0][1] = 'edit1-3-max';
 $table_critical->data[0][1] = html_print_label_input_block(
     __('Max.'),
     html_print_input_text(
-        'max_warning',
+        'max_critical',
         '',
         '',
         false,

From 60d2733066b04a2fc0ca5e65ef2b7f38bfb4bd9f Mon Sep 17 00:00:00 2001
From: Daniel Cebrian <daniel.cebrian@pandorafms.com>
Date: Tue, 30 Jan 2024 18:22:20 +0100
Subject: [PATCH 199/231] #12794 fixed login when user use external login

---
 pandora_console/godmode/users/configure_user.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pandora_console/godmode/users/configure_user.php b/pandora_console/godmode/users/configure_user.php
index 2344116cb1..668216d330 100644
--- a/pandora_console/godmode/users/configure_user.php
+++ b/pandora_console/godmode/users/configure_user.php
@@ -770,7 +770,7 @@ if ($update_user) {
         $id_user = (string) get_parameter('id_user', '');
 
         if ($password_new != '') {
-            if ($config['auth'] !== 'mysql') {
+            if ($config['auth'] !== 'mysql' && $values['local_user'] === false) {
                 ui_print_error_message(__('It is not possible to change the password because external authentication is being used'));
             } else {
                 $correct_password = false;

From 137488ee8c42df573453dbe4fe8ffb7e4596c642 Mon Sep 17 00:00:00 2001
From: Daniel Cebrian <daniel.cebrian@pandorafms.com>
Date: Wed, 31 Jan 2024 10:05:36 +0100
Subject: [PATCH 200/231] #12798 fixed unauth sql injection in grafana

---
 pandora_console/extensions/grafana/query.php  | 3 +++
 pandora_console/extensions/grafana/search.php | 3 +++
 2 files changed, 6 insertions(+)

diff --git a/pandora_console/extensions/grafana/query.php b/pandora_console/extensions/grafana/query.php
index 3c7a843542..ac54d98161 100644
--- a/pandora_console/extensions/grafana/query.php
+++ b/pandora_console/extensions/grafana/query.php
@@ -23,6 +23,9 @@ if ($headers['Authorization']) {
 
     list($user, $password) = explode(':', base64_decode($headers['Authorization']));
 
+    // Prevent sql injection.
+    $user = mysqli_real_escape_string($config['dbconnection'], $user);
+
     // Check user login
     $user_in_db = process_user_login($user, $password, true);
 
diff --git a/pandora_console/extensions/grafana/search.php b/pandora_console/extensions/grafana/search.php
index 9193dd290e..82b670398b 100644
--- a/pandora_console/extensions/grafana/search.php
+++ b/pandora_console/extensions/grafana/search.php
@@ -24,6 +24,9 @@ if ($headers['Authorization']) {
 
     list($user, $password) = explode(':', base64_decode($headers['Authorization']));
 
+    // Prevent sql injection.
+    $user = mysqli_real_escape_string($config['dbconnection'], $user);
+
     // Check user login
     $user_in_db = process_user_login($user, $password, true);
 

From 656eed0536d9758a862ef5e3ac0658dfac3ad587 Mon Sep 17 00:00:00 2001
From: rafael <rafael.ameijeiras@pandorafms.com>
Date: Wed, 31 Jan 2024 11:17:36 +0100
Subject: [PATCH 201/231] remove chkconfig from redhat9 agent

---
 pandora_agents/unix/pandora_agent.redhat_bin.el9.spec | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec b/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec
index b21d106a96..49f7def432 100644
--- a/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec
+++ b/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec
@@ -13,17 +13,17 @@ Name:               %{name}
 Version:            %{version}
 Release:            %{release}
 License:            GPL
-Vendor:             ArticaST <http://www.artica.es>
+Vendor:             PandoraFMS <https://pandorafms.com>
 Source0:            %{source_name}-%{version}.tar.gz
-URL:                http://pandorafms.org
+URL:                https://pandorafms.com
 Group:              System/Monitoring
-Packager:           Sancho Lerena <slerena@artica.es>
+Packager:           PandoraFMS <info@pandorafms.com>
 Prefix:             /usr/share
 BuildRoot:          %{_tmppath}/%{name}-%{version}-buildroot
 BuildArch:          x86_64
 Requires(pre):      shadow-utils
-Requires(post):     chkconfig /bin/ln
-Requires(preun):    chkconfig /bin/rm /usr/sbin/userdel
+Requires(post):     /bin/ln
+Requires(preun):    /bin/rm /usr/sbin/userdel
 Requires:           coreutils unzip
 Requires:           util-linux procps grep
 Requires:           /sbin/ip /bin/awk

From 53fbd10ef89a03b08a975aa59948e8dcedb31449 Mon Sep 17 00:00:00 2001
From: rafael <rafael.ameijeiras@pandorafms.com>
Date: Wed, 31 Jan 2024 13:33:53 +0100
Subject: [PATCH 202/231] test for systemd configuration

---
 .../unix/pandora_agent.redhat_bin.el9.spec    | 21 ++++---------------
 1 file changed, 4 insertions(+), 17 deletions(-)

diff --git a/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec b/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec
index 49f7def432..d72e66739f 100644
--- a/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec
+++ b/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec
@@ -29,7 +29,6 @@ Requires:           util-linux procps grep
 Requires:           /sbin/ip /bin/awk
 Requires:           perl-interpreter
 Requires:           perl-IO-Compress
-Requires:           libnsl
 Requires:           libxcrypt-compat
 AutoReq:            0
 Provides:           %{name}-%{version}
@@ -50,7 +49,7 @@ mkdir -p $RPM_BUILD_ROOT%{prefix}/pandora_agent/
 mkdir -p $RPM_BUILD_ROOT/usr/bin/
 mkdir -p $RPM_BUILD_ROOT/usr/sbin/
 mkdir -p $RPM_BUILD_ROOT/etc/pandora/
-mkdir -p $RPM_BUILD_ROOT/etc/rc.d/init.d/
+#mkdir -p $RPM_BUILD_ROOT/etc/rc.d/init.d/
 mkdir -p $RPM_BUILD_ROOT/var/log/pandora/
 mkdir -p $RPM_BUILD_ROOT/usr/share/man/man1/
 mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/
@@ -58,7 +57,7 @@ cp -aRf * $RPM_BUILD_ROOT%{prefix}/pandora_agent/
 cp -aRf $RPM_BUILD_ROOT%{prefix}/pandora_agent/tentacle_client $RPM_BUILD_ROOT/usr/bin/
 cp -aRf $RPM_BUILD_ROOT%{prefix}/pandora_agent/pandora_agent $RPM_BUILD_ROOT/usr/bin/
 cp -aRf $RPM_BUILD_ROOT%{prefix}/pandora_agent/pandora_agent_exec $RPM_BUILD_ROOT/usr/bin/
-cp -aRf $RPM_BUILD_ROOT%{prefix}/pandora_agent/pandora_agent_daemon $RPM_BUILD_ROOT/etc/rc.d/init.d/pandora_agent_daemon
+#cp -aRf $RPM_BUILD_ROOT%{prefix}/pandora_agent/pandora_agent_daemon $RPM_BUILD_ROOT/etc/rc.d/init.d/pandora_agent_daemon
 cp -aRf $RPM_BUILD_ROOT%{prefix}/pandora_agent/man/man1/pandora_agent.1.gz $RPM_BUILD_ROOT/usr/share/man/man1/
 cp -aRf $RPM_BUILD_ROOT%{prefix}/pandora_agent/man/man1/tentacle_client.1.gz $RPM_BUILD_ROOT/usr/share/man/man1/
 
@@ -119,21 +118,11 @@ then
     cp -f /usr/share/pandora_agent/pandora_agent_daemon.service /usr/lib/systemd/system/
 	chmod -x /usr/lib/systemd/system/pandora_agent_daemon.service
 # Enable the services on SystemD
+	systemctl daemon reload
     systemctl enable pandora_agent_daemon.service
-else
-	/sbin/chkconfig --add pandora_agent_daemon
-	/sbin/chkconfig pandora_agent_daemon on
-fi
-
-if [ "$1" -gt 1 ]
-then
-
-      echo "If Pandora Agent daemon was running with init.d script,"
-      echo "please stop it manually and start the service with systemctl"
 
 fi
 
-
 %preun
 
 # Upgrading
@@ -141,8 +130,7 @@ if [ "$1" = "1" ]; then
 	exit 0
 fi
 
-/sbin/chkconfig --del pandora_agent_daemon 
-/etc/rc.d/init.d/pandora_agent_daemon stop >/dev/null 2>&1 || :
+systemctl stop pandora_agent_daemon.service > /dev/null 2>&1 || :
 
 # Remove symbolic links
 pushd /etc/pandora
@@ -162,7 +150,6 @@ exit 0
 %defattr(755,root,root)
 /usr/bin/pandora_agent_exec
 /usr/bin/tentacle_client
-/etc/rc.d/init.d/pandora_agent_daemon
 
 %defattr(644,root,root)
 /usr/share/man/man1/pandora_agent.1.gz

From 8bf37940724ed9418f27292ae6d3b1dc2050a260 Mon Sep 17 00:00:00 2001
From: Daniel Cebrian <daniel.cebrian@pandorafms.com>
Date: Wed, 31 Jan 2024 15:02:20 +0100
Subject: [PATCH 203/231] #12824 fixed create agent view

---
 .../godmode/agentes/agent_manager.php            | 16 +++++++++-------
 1 file changed, 9 insertions(+), 7 deletions(-)

diff --git a/pandora_console/godmode/agentes/agent_manager.php b/pandora_console/godmode/agentes/agent_manager.php
index 80a480dd12..283610e06a 100644
--- a/pandora_console/godmode/agentes/agent_manager.php
+++ b/pandora_console/godmode/agentes/agent_manager.php
@@ -507,14 +507,16 @@ if (enterprise_installed()) {
     // Read configuration file.
     $files = config_agents_get_agent_config_filenames($id_agente);
     $file_name = $files['conf'];
-    $agent_config = file_get_contents($file_name);
-    $encoding = 'UTF-8';
-    $agent_config_utf8 = mb_convert_encoding($agent_config, 'UTF-8', $encoding);
-    if ($agent_config_utf8 !== false) {
-        $agent_config = $agent_config_utf8;
-    }
+    if (empty($file_name) === false) {
+        $agent_config = file_get_contents($file_name);
+        $encoding = 'UTF-8';
+        $agent_config_utf8 = mb_convert_encoding($agent_config, 'UTF-8', $encoding);
+        if ($agent_config_utf8 !== false) {
+            $agent_config = $agent_config_utf8;
+        }
 
-    $broker = str_contains($agent_config, '#broker active');
+        $broker = str_contains($agent_config, '#broker active');
+    }
 }
 
 if ($broker === false) {

From b026a248e36e581fbada0a84162c08adb659913c Mon Sep 17 00:00:00 2001
From: Jonathan <jonathan.leon@pandorafms.com>
Date: Wed, 31 Jan 2024 15:40:44 +0100
Subject: [PATCH 204/231] #12805 ipam change permisions AW/PM

---
 pandora_console/godmode/menu.php | 47 ++++++++++++++++++++++----------
 1 file changed, 32 insertions(+), 15 deletions(-)

diff --git a/pandora_console/godmode/menu.php b/pandora_console/godmode/menu.php
index a77e63b95b..3505e7cf2c 100644
--- a/pandora_console/godmode/menu.php
+++ b/pandora_console/godmode/menu.php
@@ -518,7 +518,18 @@ if ($access_console_node === true) {
 }
 
 
-if ((bool) check_acl($config['id_user'], 0, 'PM') === true || (bool) check_acl($config['id_user'], 0, 'DM') === true) {
+if ((bool) check_acl($config['id_user'], 0, 'AW') === true) {
+    $show_ipam = false;
+    $ipam = db_get_all_rows_sql('SELECT users_operator FROM tipam_network');
+    foreach ($ipam as $row) {
+        if (str_contains($row['users_operator'], '-1') || str_contains($row['users_operator'], $config['id_user'])) {
+            $show_ipam = true;
+            break;
+        }
+    }
+}
+
+if ((bool) check_acl($config['id_user'], 0, 'PM') === true || (bool) check_acl($config['id_user'], 0, 'DM') === true || $show_ipam === true) {
     $menu_godmode['gextensions']['text'] = __('Admin tools');
     $menu_godmode['gextensions']['sec2'] = 'godmode/extensions';
     $menu_godmode['gextensions']['id'] = 'god-extensions';
@@ -535,8 +546,6 @@ if ((bool) check_acl($config['id_user'], 0, 'PM') === true || (bool) check_acl($
             $sub['tools/diagnostics']['text'] = __('Diagnostic info');
             $sub['tools/diagnostics']['id'] = 'diagnostic_info';
             enterprise_hook('omnishell');
-            enterprise_hook('ipam_submenu');
-
             $sub['godmode/setup/news']['text'] = __('Site news');
             $sub['godmode/setup/news']['id'] = 'site_news';
         }
@@ -558,9 +567,15 @@ if ((bool) check_acl($config['id_user'], 0, 'PM') === true || (bool) check_acl($
         }
     }
 
-    $sub['godmode/events/configuration_sounds']['text'] = __('Acoustic console setup');
-    $sub['godmode/events/configuration_sounds']['id'] = 'Acoustic console setup';
-    $sub['godmode/events/configuration_sounds']['pages'] = ['godmode/events/configuration_sounds'];
+    if (((bool) check_acl($config['id_user'], 0, 'PM') === true && $access_console_node === true) || $show_ipam === true) {
+        enterprise_hook('ipam_submenu');
+    }
+
+    if ((bool) check_acl($config['id_user'], 0, 'PM') === true || (bool) check_acl($config['id_user'], 0, 'DM') === true) {
+        $sub['godmode/events/configuration_sounds']['text'] = __('Acoustic console setup');
+        $sub['godmode/events/configuration_sounds']['id'] = 'Acoustic console setup';
+        $sub['godmode/events/configuration_sounds']['pages'] = ['godmode/events/configuration_sounds'];
+    }
 
     $menu_godmode['gextensions']['sub'] = $sub;
 }
@@ -638,16 +653,18 @@ if ($access_console_node === true) {
         }
 
         // Complete the submenu.
-        $extension_view = [];
-        $extension_view['godmode/extensions']['id'] = 'extension_manager_view';
-        $extension_view['godmode/extensions']['text'] = __('Extension manager view');
-        $extension_submenu = array_merge($extension_view, $sub2);
+        if (users_is_admin($config['id_user']) === true) {
+            $extension_view = [];
+            $extension_view['godmode/extensions']['id'] = 'extension_manager_view';
+            $extension_view['godmode/extensions']['text'] = __('Extension manager view');
+            $extension_submenu = array_merge($extension_view, $sub2);
 
-        $sub['godmode/extensions']['sub2'] = $extension_submenu;
-        $sub['godmode/extensions']['text'] = __('Extension manager');
-        $sub['godmode/extensions']['id'] = 'extension_manager';
-        $sub['godmode/extensions']['type'] = 'direct';
-        $sub['godmode/extensions']['subtype'] = 'nolink';
+            $sub['godmode/extensions']['sub2'] = $extension_submenu;
+            $sub['godmode/extensions']['text'] = __('Extension manager');
+            $sub['godmode/extensions']['id'] = 'extension_manager';
+            $sub['godmode/extensions']['type'] = 'direct';
+            $sub['godmode/extensions']['subtype'] = 'nolink';
+        }
 
         if (is_array($menu_godmode['gextensions']['sub']) === true) {
             $submenu = array_merge($menu_godmode['gextensions']['sub'], $sub);

From 5feb11c547e2eb54a939c9c6a028a2542dd2fefd Mon Sep 17 00:00:00 2001
From: Daniel Cebrian <daniel.cebrian@pandorafms.com>
Date: Wed, 31 Jan 2024 16:34:25 +0100
Subject: [PATCH 205/231] 9992 added email test dialog in metaconsole

---
 .../godmode/setup/setup_general.php           | 112 ------------------
 pandora_console/include/functions_html.php    |  49 ++++++++
 pandora_console/include/javascript/pandora.js |  57 +++++++++
 3 files changed, 106 insertions(+), 112 deletions(-)

diff --git a/pandora_console/godmode/setup/setup_general.php b/pandora_console/godmode/setup/setup_general.php
index 46a91e27c6..3366fcc6f8 100644
--- a/pandora_console/godmode/setup/setup_general.php
+++ b/pandora_console/godmode/setup/setup_general.php
@@ -960,60 +960,6 @@ echo '<legend>'.__('Mail configuration').'</legend>';
     );
 
     echo '</form>';
-
-
-    /**
-     * Print the modal window for the summary of each alerts group
-     *
-     * @param string $id Id.
-     *
-     * @return void
-     */
-    function print_email_test_modal_window($id)
-    {
-        // Email config table.
-        $table_mail_test = new stdClass();
-        $table_mail_test->width = '100%';
-        $table_mail_test->class = 'filter-table-adv';
-        $table_mail_test->data = [];
-
-        $table_mail_test->data[0][] = html_print_label_input_block(
-            __('Address'),
-            html_print_input_text(
-                'email_test_address',
-                '',
-                '',
-                35,
-                100,
-                true
-            )
-        );
-
-        $table_mail_test->data[1][] = '&nbsp&nbsp<span id="email_test_sent_message" class="invisible"><b>Email sent</b></span><span id="email_test_failure_message" class=invisible"><b>Email could not be sent</b></span>';
-
-        // $table_mail_test->colspan[2][0] = 2;
-        $submitButton = html_print_div(
-            [
-                'class'   => 'action-buttons-right-forced',
-                'content' => html_print_button(
-                    __('Send'),
-                    'email_test',
-                    false,
-                    '',
-                    [
-                        'icon' => 'cog',
-                        'mode' => 'mini',
-                    ],
-                    true
-                ),
-            ],
-            true
-        );
-
-        echo '<div id="email_test_'.$id.'" title="'.__('Check mail configuration').'" class="invisible">'.html_print_table($table_mail_test, true).$submitButton.'</div>';
-    }
-
-
     ?>
 <script type="text/javascript">
 function show_timezone () {
@@ -1033,62 +979,6 @@ function show_timezone () {
     });
 }
 
-function show_email_test(id) {
-    $('#email_test_sent_message').hide();
-    $('#email_test_failure_message').hide();
-
-    $("#email_test_"+id).dialog({
-        resizable: true,
-        draggable: true,
-        modal: true,
-        width: 450,
-        overlay: {
-            opacity: 0.5,
-            background: "black"
-        }
-    });
-}
-
-function perform_email_test () {
-    $('#email_test_sent_message').hide();
-    $('#email_test_failure_message').hide();
-
-    var test_address = $('#text-email_test_address').val();
-    params = {
-        email_smtpServer : $('#text-email_smtpServer').val(),
-        email_smtpPort : $('#text-email_smtpPort').val(),
-        email_username : $('#text-email_username').val(),
-        email_password : $('#password-email_password').val(),
-        email_encryption : $( "#email_encryption option:selected" ).val(),
-        email_from_dir : $('#text-email_from_dir').val(),
-        email_from_name : $('#text-email_from_name').val()
-    };
-
-    $.ajax({
-        type: "POST",
-        url: "ajax.php",
-        data : {
-                    page: "godmode/setup/setup_general",
-                    test_address: test_address,
-                    params: params
-                },
-        dataType: "json",
-        success: function(data) {
-            if (parseInt(data) === 1) {
-                $('#email_test_sent_message').show();
-                $('#email_test_failure_message').hide();
-            } else {
-                $('#email_test_failure_message').show();
-                $('#email_test_sent_message').hide();
-            }
-        },
-        error: function() {
-            $('#email_test_failure_message').show();
-            $('#email_test_sent_message').hide();
-        },
-    });
-}
-
 $(document).ready (function () {
 
     $("#zone").attr("hidden", true);
@@ -1146,8 +1036,6 @@ $(document).ready (function () {
         }
     })
 
-    $('#button-email_test').click(perform_email_test);
-
     $("#right_iblacklist").click (function () {
         jQuery.each($("select[name='inventory_changes_blacklist_out[]'] option:selected"), function (key, value) {
             imodule_name = $(value).html();
diff --git a/pandora_console/include/functions_html.php b/pandora_console/include/functions_html.php
index 580802fc94..3a4ca01ebb 100644
--- a/pandora_console/include/functions_html.php
+++ b/pandora_console/include/functions_html.php
@@ -7691,3 +7691,52 @@ function html_print_wizard_diagnosis(
         echo $output;
     }
 }
+
+
+/**
+ * Print the modal window for the summary of each alerts group
+ *
+ * @param string $id Id.
+ *
+ * @return void
+ */
+function print_email_test_modal_window($id)
+{
+    // Email config table.
+    $table_mail_test = new stdClass();
+    $table_mail_test->width = '100%';
+    $table_mail_test->class = 'filter-table-adv';
+    $table_mail_test->data = [];
+    $table_mail_test->data[0][] = html_print_label_input_block(
+        __('Address'),
+        html_print_input_text(
+            'email_test_address',
+            '',
+            '',
+            35,
+            100,
+            true
+        )
+    );
+    $table_mail_test->data[1][] = '&nbsp&nbsp<span id="email_test_sent_message" class="invisible"><b>Email sent</b></span><span id="email_test_failure_message" class=invisible"><b>Email could not be sent</b></span>';
+    // $table_mail_test->colspan[2][0] = 2;
+    $submitButton = html_print_div(
+        [
+            'class'   => 'action-buttons-right-forced',
+            'content' => html_print_button(
+                __('Send'),
+                'email_test',
+                false,
+                'perform_email_test()',
+                [
+                    'icon' => 'cog',
+                    'mode' => 'mini',
+                ],
+                true
+            ),
+        ],
+        true
+    );
+
+    echo '<div id="email_test_'.$id.'" title="'.__('Check mail configuration').'" class="invisible">'.html_print_table($table_mail_test, true).$submitButton.'</div>';
+}
diff --git a/pandora_console/include/javascript/pandora.js b/pandora_console/include/javascript/pandora.js
index 8d7bf3a1b2..2c39e69288 100644
--- a/pandora_console/include/javascript/pandora.js
+++ b/pandora_console/include/javascript/pandora.js
@@ -2621,3 +2621,60 @@ function christmas_click(flagEasternEgg) {
     }, 120000);
   }
 }
+
+function perform_email_test() {
+  $("#email_test_sent_message").hide();
+  $("#email_test_failure_message").hide();
+
+  var test_address = $("#text-email_test_address").val();
+  var params = {
+    email_smtpServer: $("#text-email_smtpServer").val(),
+    email_smtpPort: $("#text-email_smtpPort").val(),
+    email_username: $("#text-email_username").val(),
+    email_password: $("#password-email_password").val(),
+    email_encryption: $("#email_encryption option:selected").val(),
+    email_from_dir: $("#text-email_from_dir").val(),
+    email_from_name: $("#text-email_from_name").val()
+  };
+
+  $.ajax({
+    type: "POST",
+    url: "ajax.php",
+    data: {
+      page: "godmode/setup/setup_general",
+      test_address: test_address,
+      params: params
+    },
+    dataType: "json",
+    success: function(data) {
+      if (parseInt(data) === 1) {
+        $("#email_test_sent_message").show();
+        $("#email_test_failure_message").hide();
+      } else {
+        console.log($("#email_test_failure_message"));
+        $("#email_test_failure_message").show();
+        $("#email_test_sent_message").hide();
+      }
+    },
+    error: function() {
+      $("#email_test_failure_message").show();
+      $("#email_test_sent_message").hide();
+    }
+  });
+}
+
+function show_email_test(id) {
+  $("#email_test_sent_message").hide();
+  $("#email_test_failure_message").hide();
+
+  $("#email_test_" + id).dialog({
+    resizable: true,
+    draggable: true,
+    modal: true,
+    width: 450,
+    overlay: {
+      opacity: 0.5,
+      background: "black"
+    }
+  });
+}

From eecf92657a0e288b200acaca9bdb1f6b3a6bba2a Mon Sep 17 00:00:00 2001
From: Jonathan <jonathan.leon@pandorafms.com>
Date: Wed, 31 Jan 2024 17:02:02 +0100
Subject: [PATCH 206/231] #12790 remove entities only name

---
 pandora_console/include/functions_visual_map.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pandora_console/include/functions_visual_map.php b/pandora_console/include/functions_visual_map.php
index f3d5752fe4..9415862686 100755
--- a/pandora_console/include/functions_visual_map.php
+++ b/pandora_console/include/functions_visual_map.php
@@ -3791,7 +3791,7 @@ function visual_map_get_user_layouts(
     $retval = [];
     foreach ($layouts as $layout) {
         if ($only_names) {
-            $retval[$layout['id']] = $layout['name'];
+            $retval[$layout['id']] = io_safe_output($layout['name']);
         } else {
             $retval[$layout['id']] = $layout;
         }

From cdb02a32a246243392c741b7181976fed3372b41 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?F=C3=A9lix=20Su=C3=A1rez?= <felix.suarez@pandorafms.com>
Date: Wed, 31 Jan 2024 11:56:52 -0600
Subject: [PATCH 207/231] Changes on XML creation.

---
 pandora_agents/unix/pandora_agent | 30 ++++--------------------------
 1 file changed, 4 insertions(+), 26 deletions(-)

diff --git a/pandora_agents/unix/pandora_agent b/pandora_agents/unix/pandora_agent
index c56ccf33aa..eb1cefb1ec 100755
--- a/pandora_agents/unix/pandora_agent
+++ b/pandora_agents/unix/pandora_agent
@@ -3678,11 +3678,6 @@ sub write_module_xml ($@) {
 		return;
 	}
 
-	if ($module->{'func'} == \&module_logger) {
-		$Xml .= $data[0];
-		return
-	}
-
 	# Critical section
 	$Sem->down () if (defined ($Sem));
 
@@ -3690,7 +3685,9 @@ sub write_module_xml ($@) {
 		"	<name><![CDATA[" . $module->{'name'} . "]]></name>\n" .
 		"	<description><![CDATA[" . $module->{'description'} . "]]></description>\n" . 
 		"	<type>" . $module->{'type'} . "</type>\n";
-
+	
+	$Xml .= "	<encoding>base64</encoding>\n" if($module->{'type'} eq "log");
+		
 	# Interval
 	$Xml .= "	<module_interval>" . $module->{'interval'} . "</module_interval>\n";
 	
@@ -4095,28 +4092,9 @@ sub grep_logs {
     sub create_log {
         my ($module_name, $module_type, @data) = @_;
 
-        # No data
-        if ($#data < 0 && $module_type ne "generic_proc") {
-            return;
-        }
-        
-        # Log module
-        my $output = "<log_module>\n";
-        $output .= "	<source><![CDATA[" . $module_name . "]]></source>\n";
-		$output .= "	<type><![CDATA[" . $module_type . "]]></type>\n";
-
 		my $data_content = process_log_monitoring($module_type, @data);
 
-		if($module_type eq "log"){
-			$output .= "	<encoding>base64</encoding>\n";
-		}
-
-        $output .= "	<data><![CDATA[";
-        $output .= $data_content;
-        $output .= "]]></data>\n";
-        $output .= "</log_module>\n";
-
-        return $output;
+        return $data_content;
     }
 
 }

From 9b57534f2a497dc0d93fe9891742e2895ad5fabc Mon Sep 17 00:00:00 2001
From: Daniel Cebrian <daniel.cebrian@pandorafms.com>
Date: Thu, 1 Feb 2024 11:41:19 +0100
Subject: [PATCH 208/231] #12751 fixed vul

---
 pandora_console/godmode/servers/plugin.php | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/pandora_console/godmode/servers/plugin.php b/pandora_console/godmode/servers/plugin.php
index 39acc45c21..d8bc3b47b9 100644
--- a/pandora_console/godmode/servers/plugin.php
+++ b/pandora_console/godmode/servers/plugin.php
@@ -262,7 +262,9 @@ if ($filemanager) {
                 $contentFile = str_replace("\n", "\r\n", $contentFile);
             }
 
-            $result = file_put_contents($location_file, $contentFile);
+            if (empty($location_file) === false && file_exists($location_file) === true) {
+                $result = file_put_contents($location_file, $contentFile);
+            }
         }
 
         $id_plugin = (int) get_parameter('id_plugin', 0);

From 48d7a63eb1895955a2777f496017a212b80d69a7 Mon Sep 17 00:00:00 2001
From: Daniel Cebrian <daniel.cebrian@pandorafms.com>
Date: Thu, 1 Feb 2024 14:54:23 +0100
Subject: [PATCH 209/231] #12149 added post_max_size notification

---
 .../include/class/ConsoleSupervisor.php       | 32 ++++++++++++++++---
 .../include/class/Diagnostics.class.php       |  4 +++
 pandora_console/include/functions_menu.php    |  8 +++++
 .../include/functions_notifications.php       |  1 +
 4 files changed, 41 insertions(+), 4 deletions(-)

diff --git a/pandora_console/include/class/ConsoleSupervisor.php b/pandora_console/include/class/ConsoleSupervisor.php
index 9ae7b09921..cac8befb56 100644
--- a/pandora_console/include/class/ConsoleSupervisor.php
+++ b/pandora_console/include/class/ConsoleSupervisor.php
@@ -1671,6 +1671,10 @@ class ConsoleSupervisor
             ini_get('upload_max_filesize')
         );
 
+        $PHPpost_max_size = config_return_in_bytes(
+            ini_get('post_max_size')
+        );
+
         // PHP configuration.
         $PHPmax_input_time = ini_get('max_input_time');
         $PHPmemory_limit = config_return_in_bytes(ini_get('memory_limit'));
@@ -1678,6 +1682,7 @@ class ConsoleSupervisor
         $PHPsafe_mode = ini_get('safe_mode');
         $PHPdisable_functions = ini_get('disable_functions');
         $PHPupload_max_filesize_min = config_return_in_bytes('800M');
+        $PHPpost_max_size_min = config_return_in_bytes('800M');
         $PHPmemory_limit_min = config_return_in_bytes('800M');
         $PHPSerialize_precision = ini_get('serialize_precision');
 
@@ -1728,7 +1733,7 @@ class ConsoleSupervisor
                     'message'           => sprintf(
                         __('Recommended value is %s'),
                         '-1 ('.__('Unlimited').')'
-                    ).'<br><br>'.__('Please, change it on your PHP configuration file (php.ini) or contact with administrator (Do not forget to restart Apache process after)'),
+                    ).'<br>'.__('Please, change it on your PHP configuration file (php.ini) or contact with administrator (Do not forget to restart Apache process after)'),
                     'url'               => $url,
                     'icon_notification' => self::ICON_INFORMATION,
                 ]
@@ -1753,7 +1758,7 @@ class ConsoleSupervisor
                     'message'           => sprintf(
                         __('Recommended value is: %s'),
                         '0 ('.__('Unlimited').')'
-                    ).'<br><br>'.__('Please, change it on your PHP configuration file (php.ini) or contact with administrator (Dont forget restart apache process after changes)'),
+                    ).'<br>'.__('Please, change it on your PHP configuration file (php.ini) or contact with administrator (Dont forget restart apache process after changes)'),
                     'url'               => $url,
                     'icon_notification' => self::ICON_INFORMATION,
                 ]
@@ -1778,7 +1783,7 @@ class ConsoleSupervisor
                     'message'           => sprintf(
                         __('Recommended value is: %s'),
                         sprintf(__('%s or greater'), '800M')
-                    ).'<br><br>'.__('Please, change it on your PHP configuration file (php.ini) or contact with administrator (Dont forget restart apache process after changes)'),
+                    ).'<br>'.__('Please, change it on your PHP configuration file (php.ini) or contact with administrator (Dont forget restart apache process after changes)'),
                     'url'               => $url,
                     'icon_notification' => self::ICON_INFORMATION,
                 ]
@@ -1808,7 +1813,7 @@ class ConsoleSupervisor
                     'message'           => sprintf(
                         __('Recommended value is: %s'),
                         sprintf(__('%s or greater'), $recommended_memory)
-                    ).'<br><br>'.__('Please, change it on your PHP configuration file (php.ini) or contact with administrator'),
+                    ).'<br>'.__('Please, change it on your PHP configuration file (php.ini) or contact with administrator'),
                     'url'               => $url,
                     'icon_notification' => self::ICON_INFORMATION,
                 ]
@@ -1915,6 +1920,25 @@ class ConsoleSupervisor
         } else {
             $this->cleanNotifications('NOTIF.PHP.VERSION.SUPPORT');
         }
+
+        if ($PHPpost_max_size < $PHPpost_max_size_min && (int) $PHPpost_max_size !== -1) {
+            $url = 'https://www.php.net/manual/en/ini.core.php#ini.post-max-size';
+            $this->notify(
+                [
+                    'type'              => 'NOTIF.PHP.POST_MAX_SIZE',
+                    'title'             => __('PHP POST MAX SIZE'),
+                    'message'           => sprintf(
+                        __('Recommended value is: %s'),
+                        sprintf(__('%sM or greater'), ($PHPpost_max_size_min / 1024 / 1024))
+                    ).'<br>'.__('Please, change it on your PHP configuration file (php.ini) or contact with administrator'),
+                    'url'               => $url,
+                    'icon_notification' => self::ICON_HEADSUP,
+                ]
+            );
+        } else {
+            $this->cleanNotifications('NOTIF.PHP.POST_MAX_SIZE');
+        }
+
     }
 
 
diff --git a/pandora_console/include/class/Diagnostics.class.php b/pandora_console/include/class/Diagnostics.class.php
index 9d4a3b2901..4120bbd2e9 100644
--- a/pandora_console/include/class/Diagnostics.class.php
+++ b/pandora_console/include/class/Diagnostics.class.php
@@ -533,6 +533,10 @@ class Diagnostics extends Wizard
                     'name'  => __('PHP Memory limit'),
                     'value' => ini_get('memory_limit'),
                 ],
+                'postMaxSize'      => [
+                    'name'  => __('PHP Post max size'),
+                    'value' => ini_get('post_max_size'),
+                ],
                 'sessionLifetime'  => [
                     'name'  => __('Session cookie lifetime'),
                     'value' => ini_get('session.cookie_lifetime'),
diff --git a/pandora_console/include/functions_menu.php b/pandora_console/include/functions_menu.php
index 37d4e11c38..6a0d424836 100644
--- a/pandora_console/include/functions_menu.php
+++ b/pandora_console/include/functions_menu.php
@@ -1230,6 +1230,14 @@ if (is_ajax()) {
                                         <p style="font-size: 10pt;">'.$php_sys->data->memoryLimit->value.'</p>
                                     </th>
                                 </tr>
+                                <tr>
+                                <th style="width: 35%;">
+                                    <p><span>'.$php_sys->data->postMaxSize->name.'</span></p>
+                                </th>
+                                <th style="width: 65%;">
+                                    <p style="font-size: 10pt;">'.$php_sys->data->postMaxSize->value.'</p>
+                                </th>
+                            </tr>
                                 <tr>
                                     <th style="width: 35%;">
                                         <p><span>'.$php_sys->data->sessionLifetime->name.'</span></p>
diff --git a/pandora_console/include/functions_notifications.php b/pandora_console/include/functions_notifications.php
index 61330b66f7..141d3ae8cc 100644
--- a/pandora_console/include/functions_notifications.php
+++ b/pandora_console/include/functions_notifications.php
@@ -133,6 +133,7 @@ function notifications_get_subtypes(?string $source=null)
             'NOTIF.PHP.INPUT_TIME',
             'NOTIF.PHP.EXECUTION_TIME',
             'NOTIF.PHP.UPLOAD_MAX_FILESIZE',
+            'NOTIF.PHP.POST_MAX_SIZE',
             'NOTIF.PHP.MEMORY_LIMIT',
             'NOTIF.PHP.DISABLE_FUNCTIONS',
             'NOTIF.PHP.CHROMIUM',

From 64698c49511ce22288c66b747f283febbed67ea6 Mon Sep 17 00:00:00 2001
From: Daniel Cebrian <daniel.cebrian@pandorafms.com>
Date: Thu, 1 Feb 2024 15:38:52 +0100
Subject: [PATCH 210/231] #12149 upload max file size in about and diagnostic
 info

---
 .../include/class/Diagnostics.class.php          | 16 ++++++++++------
 pandora_console/include/functions_menu.php       | 10 +++++++++-
 2 files changed, 19 insertions(+), 7 deletions(-)

diff --git a/pandora_console/include/class/Diagnostics.class.php b/pandora_console/include/class/Diagnostics.class.php
index 4120bbd2e9..52fab8f914 100644
--- a/pandora_console/include/class/Diagnostics.class.php
+++ b/pandora_console/include/class/Diagnostics.class.php
@@ -517,27 +517,31 @@ class Diagnostics extends Wizard
         $result = [
             'error' => false,
             'data'  => [
-                'phpVersion'       => [
+                'phpVersion'        => [
                     'name'  => __('PHP Version'),
                     'value' => phpversion(),
                 ],
-                'maxExecutionTime' => [
+                'maxExecutionTime'  => [
                     'name'  => __('PHP Max execution time'),
                     'value' => ini_get('max_execution_time'),
                 ],
-                'maxInputTime'     => [
+                'maxInputTime'      => [
                     'name'  => __('PHP Max input time'),
                     'value' => ini_get('max_input_time'),
                 ],
-                'memoryLimit'      => [
+                'memoryLimit'       => [
                     'name'  => __('PHP Memory limit'),
                     'value' => ini_get('memory_limit'),
                 ],
-                'postMaxSize'      => [
+                'postMaxSize'       => [
                     'name'  => __('PHP Post max size'),
                     'value' => ini_get('post_max_size'),
                 ],
-                'sessionLifetime'  => [
+                'uploadMaxFilesize' => [
+                    'name'  => __('PHP Upload max file size'),
+                    'value' => ini_get('upload_max_filesize'),
+                ],
+                'sessionLifetime'   => [
                     'name'  => __('Session cookie lifetime'),
                     'value' => ini_get('session.cookie_lifetime'),
                 ],
diff --git a/pandora_console/include/functions_menu.php b/pandora_console/include/functions_menu.php
index 6a0d424836..aa19f58ded 100644
--- a/pandora_console/include/functions_menu.php
+++ b/pandora_console/include/functions_menu.php
@@ -1237,7 +1237,15 @@ if (is_ajax()) {
                                 <th style="width: 65%;">
                                     <p style="font-size: 10pt;">'.$php_sys->data->postMaxSize->value.'</p>
                                 </th>
-                            </tr>
+                                </tr>
+                                <tr>
+                                <th style="width: 35%;">
+                                    <p><span>'.$php_sys->data->uploadMaxFilesize->name.'</span></p>
+                                </th>
+                                <th style="width: 65%;">
+                                    <p style="font-size: 10pt;">'.$php_sys->data->uploadMaxFilesize->value.'</p>
+                                </th>
+                                </tr>
                                 <tr>
                                     <th style="width: 35%;">
                                         <p><span>'.$php_sys->data->sessionLifetime->name.'</span></p>

From ba38f2e8276e0661827a38b65dd0bad9dc40b7fd Mon Sep 17 00:00:00 2001
From: rafael <rafael.ameijeiras@pandorafms.com>
Date: Thu, 1 Feb 2024 15:39:39 +0100
Subject: [PATCH 211/231] Auto-updated build strings.

---
 pandora_agents/unix/DEBIAN/control                    | 2 +-
 pandora_agents/unix/DEBIAN/make_deb_package.sh        | 2 +-
 pandora_agents/unix/pandora_agent                     | 2 +-
 pandora_agents/unix/pandora_agent.redhat.spec         | 2 +-
 pandora_agents/unix/pandora_agent.redhat_bin.el8.spec | 2 +-
 pandora_agents/unix/pandora_agent.redhat_bin.el9.spec | 2 +-
 pandora_agents/unix/pandora_agent.redhat_bin.spec     | 2 +-
 pandora_agents/unix/pandora_agent.spec                | 2 +-
 pandora_agents/unix/pandora_agent_installer           | 2 +-
 pandora_agents/win32/installer/pandora.mpi            | 2 +-
 pandora_agents/win32/pandora.cc                       | 2 +-
 pandora_agents/win32/versioninfo.rc                   | 2 +-
 pandora_console/DEBIAN/control                        | 2 +-
 pandora_console/DEBIAN/make_deb_package.sh            | 2 +-
 pandora_console/include/config_process.php            | 2 +-
 pandora_console/install.php                           | 2 +-
 pandora_console/pandora_console.redhat.spec           | 2 +-
 pandora_console/pandora_console.rhel7.spec            | 2 +-
 pandora_console/pandora_console.spec                  | 2 +-
 pandora_server/DEBIAN/control                         | 2 +-
 pandora_server/DEBIAN/make_deb_package.sh             | 2 +-
 pandora_server/lib/PandoraFMS/Config.pm               | 2 +-
 pandora_server/lib/PandoraFMS/PluginTools.pm          | 2 +-
 pandora_server/pandora_server.redhat.spec             | 2 +-
 pandora_server/pandora_server.spec                    | 2 +-
 pandora_server/pandora_server_installer               | 2 +-
 pandora_server/util/pandora_db.pl                     | 2 +-
 pandora_server/util/pandora_manage.pl                 | 2 +-
 28 files changed, 28 insertions(+), 28 deletions(-)

diff --git a/pandora_agents/unix/DEBIAN/control b/pandora_agents/unix/DEBIAN/control
index c8ee8180a7..fc321bd3b3 100644
--- a/pandora_agents/unix/DEBIAN/control
+++ b/pandora_agents/unix/DEBIAN/control
@@ -1,5 +1,5 @@
 package: pandorafms-agent-unix
-Version: 7.0NG.775-240126
+Version: 7.0NG.775-240201
 Architecture: all
 Priority: optional
 Section: admin
diff --git a/pandora_agents/unix/DEBIAN/make_deb_package.sh b/pandora_agents/unix/DEBIAN/make_deb_package.sh
index fa783cc923..fd5399eea0 100644
--- a/pandora_agents/unix/DEBIAN/make_deb_package.sh
+++ b/pandora_agents/unix/DEBIAN/make_deb_package.sh
@@ -14,7 +14,7 @@
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 # GNU General Public License for more details.
 
-pandora_version="7.0NG.775-240126"
+pandora_version="7.0NG.775-240201"
 
 echo "Test if you has the tools for to make the packages."
 whereis dpkg-deb | cut -d":" -f2 | grep dpkg-deb > /dev/null
diff --git a/pandora_agents/unix/pandora_agent b/pandora_agents/unix/pandora_agent
index 129151ca0f..dbcc96f4f3 100755
--- a/pandora_agents/unix/pandora_agent
+++ b/pandora_agents/unix/pandora_agent
@@ -1039,7 +1039,7 @@ my $Sem = undef;
 my $ThreadSem = undef;
 
 use constant AGENT_VERSION => '7.0NG.775';
-use constant AGENT_BUILD => '240126';
+use constant AGENT_BUILD => '240201';
 
 # Agent log default file size maximum and instances
 use constant DEFAULT_MAX_LOG_SIZE => 600000;
diff --git a/pandora_agents/unix/pandora_agent.redhat.spec b/pandora_agents/unix/pandora_agent.redhat.spec
index 5c05e6110e..99c353d2d7 100644
--- a/pandora_agents/unix/pandora_agent.redhat.spec
+++ b/pandora_agents/unix/pandora_agent.redhat.spec
@@ -4,7 +4,7 @@
 %global __os_install_post %{nil}
 %define name        pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240126
+%define release     240201
 
 Summary:            Pandora FMS Linux agent, PERL version
 Name:               %{name}
diff --git a/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec b/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec
index 78383784e9..c87b2c7fe9 100644
--- a/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec
+++ b/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec
@@ -5,7 +5,7 @@
 %define name        pandorafms_agent_linux_bin
 %define source_name pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240126
+%define release     240201
 %define debug_package %{nil}
 
 Summary:            Pandora FMS Linux agent, binary version
diff --git a/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec b/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec
index d72e66739f..ee82aaa6a8 100644
--- a/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec
+++ b/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec
@@ -5,7 +5,7 @@
 %define name        pandorafms_agent_linux_bin
 %define source_name pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240126
+%define release     240201
 %define debug_package %{nil}
 
 Summary:            Pandora FMS Linux agent, binary version
diff --git a/pandora_agents/unix/pandora_agent.redhat_bin.spec b/pandora_agents/unix/pandora_agent.redhat_bin.spec
index 7a15966693..b637ed1855 100644
--- a/pandora_agents/unix/pandora_agent.redhat_bin.spec
+++ b/pandora_agents/unix/pandora_agent.redhat_bin.spec
@@ -5,7 +5,7 @@
 %define name        pandorafms_agent_linux_bin
 %define source_name pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240126
+%define release     240201
 
 Summary:            Pandora FMS Linux agent, binary version
 Name:               %{name}
diff --git a/pandora_agents/unix/pandora_agent.spec b/pandora_agents/unix/pandora_agent.spec
index 337a0ec5f3..1048b23a4b 100644
--- a/pandora_agents/unix/pandora_agent.spec
+++ b/pandora_agents/unix/pandora_agent.spec
@@ -4,7 +4,7 @@
 %global __os_install_post %{nil}
 %define name        pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240126
+%define release     240201
 
 Summary:            Pandora FMS Linux agent, PERL version
 Name:               %{name}
diff --git a/pandora_agents/unix/pandora_agent_installer b/pandora_agents/unix/pandora_agent_installer
index 2f6e9c4d3d..bf3857d3aa 100755
--- a/pandora_agents/unix/pandora_agent_installer
+++ b/pandora_agents/unix/pandora_agent_installer
@@ -10,7 +10,7 @@
 # **********************************************************************
 
 PI_VERSION="7.0NG.775"
-PI_BUILD="240126"
+PI_BUILD="240201"
 OS_NAME=`uname -s`
 
 FORCE=0
diff --git a/pandora_agents/win32/installer/pandora.mpi b/pandora_agents/win32/installer/pandora.mpi
index 95fa0dd4a3..e2443b3983 100644
--- a/pandora_agents/win32/installer/pandora.mpi
+++ b/pandora_agents/win32/installer/pandora.mpi
@@ -186,7 +186,7 @@ UpgradeApplicationID
 {}
 
 Version
-{240126}
+{240201}
 
 ViewReadme
 {Yes}
diff --git a/pandora_agents/win32/pandora.cc b/pandora_agents/win32/pandora.cc
index f3961807fe..8da6ebb9d9 100644
--- a/pandora_agents/win32/pandora.cc
+++ b/pandora_agents/win32/pandora.cc
@@ -30,7 +30,7 @@ using namespace Pandora;
 using namespace Pandora_Strutils;
 
 #define PATH_SIZE    _MAX_PATH+1
-#define PANDORA_VERSION ("7.0NG.775 Build 240126")
+#define PANDORA_VERSION ("7.0NG.775 Build 240201")
 
 string pandora_path;
 string pandora_dir;
diff --git a/pandora_agents/win32/versioninfo.rc b/pandora_agents/win32/versioninfo.rc
index 1bb160a879..e74c57cbf7 100644
--- a/pandora_agents/win32/versioninfo.rc
+++ b/pandora_agents/win32/versioninfo.rc
@@ -11,7 +11,7 @@ BEGIN
       VALUE "LegalCopyright", "Pandora FMS"
       VALUE "OriginalFilename", "PandoraAgent.exe"
       VALUE "ProductName", "Pandora FMS Windows Agent"
-      VALUE "ProductVersion", "(7.0NG.775(Build 240126))"
+      VALUE "ProductVersion", "(7.0NG.775(Build 240201))"
       VALUE "FileVersion", "1.0.0.0"
     END
   END
diff --git a/pandora_console/DEBIAN/control b/pandora_console/DEBIAN/control
index 466722a50b..20355292e2 100644
--- a/pandora_console/DEBIAN/control
+++ b/pandora_console/DEBIAN/control
@@ -1,5 +1,5 @@
 package: pandorafms-console
-Version: 7.0NG.775-240126
+Version: 7.0NG.775-240201
 Architecture: all
 Priority: optional
 Section: admin
diff --git a/pandora_console/DEBIAN/make_deb_package.sh b/pandora_console/DEBIAN/make_deb_package.sh
index a47efa89c2..b1985ea805 100644
--- a/pandora_console/DEBIAN/make_deb_package.sh
+++ b/pandora_console/DEBIAN/make_deb_package.sh
@@ -14,7 +14,7 @@
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 # GNU General Public License for more details.
 
-pandora_version="7.0NG.775-240126"
+pandora_version="7.0NG.775-240201"
 
 package_pear=0
 package_pandora=1
diff --git a/pandora_console/include/config_process.php b/pandora_console/include/config_process.php
index a721e82c12..779b6e2b35 100644
--- a/pandora_console/include/config_process.php
+++ b/pandora_console/include/config_process.php
@@ -20,7 +20,7 @@
 /**
  * Pandora build version and version
  */
-$build_version = 'PC240126';
+$build_version = 'PC240201';
 $pandora_version = 'v7.0NG.775';
 
 // Do not overwrite default timezone set if defined.
diff --git a/pandora_console/install.php b/pandora_console/install.php
index c6329db34e..cae9aa0457 100644
--- a/pandora_console/install.php
+++ b/pandora_console/install.php
@@ -131,7 +131,7 @@
         <div style='padding-bottom: 50px'>
             <?php
             $version = '7.0NG.775';
-            $build = '240126';
+            $build = '240201';
             $banner = "v$version Build $build";
             error_reporting(0);
 
diff --git a/pandora_console/pandora_console.redhat.spec b/pandora_console/pandora_console.redhat.spec
index 1636c764f3..8746b9548e 100644
--- a/pandora_console/pandora_console.redhat.spec
+++ b/pandora_console/pandora_console.redhat.spec
@@ -6,7 +6,7 @@
 %define debug_package %{nil}
 %define name        pandorafms_console
 %define version     7.0NG.775
-%define release     240126
+%define release     240201
 
 # User and Group under which Apache is running
 %define httpd_name  httpd
diff --git a/pandora_console/pandora_console.rhel7.spec b/pandora_console/pandora_console.rhel7.spec
index 24aad437f3..f995ecb447 100644
--- a/pandora_console/pandora_console.rhel7.spec
+++ b/pandora_console/pandora_console.rhel7.spec
@@ -6,7 +6,7 @@
 %define debug_package %{nil}
 %define name        pandorafms_console
 %define version     7.0NG.775
-%define release     240126
+%define release     240201
 
 # User and Group under which Apache is running
 %define httpd_name  httpd
diff --git a/pandora_console/pandora_console.spec b/pandora_console/pandora_console.spec
index c737ea2662..dcd8b116d1 100644
--- a/pandora_console/pandora_console.spec
+++ b/pandora_console/pandora_console.spec
@@ -3,7 +3,7 @@
 #
 %define name        pandorafms_console
 %define version     7.0NG.775
-%define release     240126
+%define release     240201
 %define httpd_name      httpd
 # User and Group under which Apache is running
 %define httpd_name  apache2
diff --git a/pandora_server/DEBIAN/control b/pandora_server/DEBIAN/control
index 2cef54da51..29b17c8551 100644
--- a/pandora_server/DEBIAN/control
+++ b/pandora_server/DEBIAN/control
@@ -1,5 +1,5 @@
 package: pandorafms-server
-Version: 7.0NG.775-240126
+Version: 7.0NG.775-240201
 Architecture: all
 Priority: optional
 Section: admin
diff --git a/pandora_server/DEBIAN/make_deb_package.sh b/pandora_server/DEBIAN/make_deb_package.sh
index 7780111efc..9a370612b1 100644
--- a/pandora_server/DEBIAN/make_deb_package.sh
+++ b/pandora_server/DEBIAN/make_deb_package.sh
@@ -14,7 +14,7 @@
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 # GNU General Public License for more details.
 
-pandora_version="7.0NG.775-240126"
+pandora_version="7.0NG.775-240201"
 
 package_cpan=0
 package_pandora=1
diff --git a/pandora_server/lib/PandoraFMS/Config.pm b/pandora_server/lib/PandoraFMS/Config.pm
index 4d21988c3c..fb727c817d 100644
--- a/pandora_server/lib/PandoraFMS/Config.pm
+++ b/pandora_server/lib/PandoraFMS/Config.pm
@@ -46,7 +46,7 @@ our @EXPORT = qw(
 
 # version: Defines actual version of Pandora Server for this module only
 my $pandora_version = "7.0NG.775";
-my $pandora_build = "240126";
+my $pandora_build = "240201";
 our $VERSION = $pandora_version." ".$pandora_build;
 
 # Setup hash
diff --git a/pandora_server/lib/PandoraFMS/PluginTools.pm b/pandora_server/lib/PandoraFMS/PluginTools.pm
index c401b9410f..8d4c2dd5ee 100644
--- a/pandora_server/lib/PandoraFMS/PluginTools.pm
+++ b/pandora_server/lib/PandoraFMS/PluginTools.pm
@@ -34,7 +34,7 @@ our @ISA = qw(Exporter);
 
 # version: Defines actual version of Pandora Server for this module only
 my $pandora_version = "7.0NG.775";
-my $pandora_build = "240126";
+my $pandora_build = "240201";
 our $VERSION = $pandora_version." ".$pandora_build;
 
 our %EXPORT_TAGS = ( 'all' => [ qw() ] );
diff --git a/pandora_server/pandora_server.redhat.spec b/pandora_server/pandora_server.redhat.spec
index e7e972a801..f42c7cb639 100644
--- a/pandora_server/pandora_server.redhat.spec
+++ b/pandora_server/pandora_server.redhat.spec
@@ -7,7 +7,7 @@
 %define debug_package %{nil}
 %define name        pandorafms_server
 %define version     7.0NG.775
-%define release     240126
+%define release     240201
 
 Summary:            Pandora FMS Server
 Name:               %{name}
diff --git a/pandora_server/pandora_server.spec b/pandora_server/pandora_server.spec
index f443bc4b03..e6a627d54b 100644
--- a/pandora_server/pandora_server.spec
+++ b/pandora_server/pandora_server.spec
@@ -4,7 +4,7 @@
 %global __os_install_post %{nil}
 %define name        pandorafms_server
 %define version     7.0NG.775
-%define release     240126
+%define release     240201
 
 Summary:            Pandora FMS Server
 Name:               %{name}
diff --git a/pandora_server/pandora_server_installer b/pandora_server/pandora_server_installer
index bc5676b742..cb0fd3c455 100755
--- a/pandora_server/pandora_server_installer
+++ b/pandora_server/pandora_server_installer
@@ -9,7 +9,7 @@
 # **********************************************************************
 
 PI_VERSION="7.0NG.775"
-PI_BUILD="240126"
+PI_BUILD="240201"
 
 MODE=$1
 if [ $# -gt 1 ]; then
diff --git a/pandora_server/util/pandora_db.pl b/pandora_server/util/pandora_db.pl
index f079a42194..59ccfeeaae 100755
--- a/pandora_server/util/pandora_db.pl
+++ b/pandora_server/util/pandora_db.pl
@@ -38,7 +38,7 @@ use PandoraFMS::Config;
 use PandoraFMS::DB;
 
 # version: define current version
-my $version = "7.0NG.775 Build 240126";
+my $version = "7.0NG.775 Build 240201";
 
 # Pandora server configuration
 my %conf;
diff --git a/pandora_server/util/pandora_manage.pl b/pandora_server/util/pandora_manage.pl
index e7921bff4a..583fee59af 100755
--- a/pandora_server/util/pandora_manage.pl
+++ b/pandora_server/util/pandora_manage.pl
@@ -36,7 +36,7 @@ use Encode::Locale;
 Encode::Locale::decode_argv;
 
 # version: define current version
-my $version = "7.0NG.775 Build 240126";
+my $version = "7.0NG.775 Build 240201";
 
 # save program name for logging
 my $progname = basename($0);

From ebff3ff753410488dfce436c1e1beb71539ff740 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?F=C3=A9lix=20Su=C3=A1rez?= <felix.suarez@pandorafms.com>
Date: Thu, 1 Feb 2024 08:52:50 -0600
Subject: [PATCH 212/231] Keep old log Monitoring XML generation

---
 pandora_agents/unix/pandora_agent | 24 +++++++++++++++++++++---
 1 file changed, 21 insertions(+), 3 deletions(-)

diff --git a/pandora_agents/unix/pandora_agent b/pandora_agents/unix/pandora_agent
index eb1cefb1ec..9b758246bb 100755
--- a/pandora_agents/unix/pandora_agent
+++ b/pandora_agents/unix/pandora_agent
@@ -3678,6 +3678,26 @@ sub write_module_xml ($@) {
 		return;
 	}
 
+	# Is it an extraction log module?
+	if($module->{'type'} eq "log"){
+        $Xml .="<log_module>\n";
+        $Xml .= "	<source><![CDATA[" . $module->{'name'} . "]]></source>\n";
+		$Xml .= "	<type><![CDATA[" . $module->{'type'} . "]]></type>\n";
+		$Xml .= "	<encoding>base64</encoding>\n";
+	
+		# Data list
+		if ($#data > 0) {
+			$Xml .= "	<data><![CDATA[" . join('', @data) . "]]></data>\n";
+		# Single data
+		} else {
+			chomp ($data[0]);
+			$Xml .= "	<data><![CDATA[$data[0]]]></data>\n";
+		}
+
+        $Xml .= "</log_module>\n";
+		return;
+	}
+
 	# Critical section
 	$Sem->down () if (defined ($Sem));
 
@@ -3685,9 +3705,7 @@ sub write_module_xml ($@) {
 		"	<name><![CDATA[" . $module->{'name'} . "]]></name>\n" .
 		"	<description><![CDATA[" . $module->{'description'} . "]]></description>\n" . 
 		"	<type>" . $module->{'type'} . "</type>\n";
-	
-	$Xml .= "	<encoding>base64</encoding>\n" if($module->{'type'} eq "log");
-		
+			
 	# Interval
 	$Xml .= "	<module_interval>" . $module->{'interval'} . "</module_interval>\n";
 	

From 44e546af395430be71a0078e48945127d3244b83 Mon Sep 17 00:00:00 2001
From: "alejandro.campos@artica.es" <alejandro.campos@artica.es>
Date: Thu, 1 Feb 2024 17:34:42 +0100
Subject: [PATCH 213/231] minor fix

---
 .../include/class/ConsoleSupervisor.php       | 41 ++++++++-----------
 1 file changed, 18 insertions(+), 23 deletions(-)

diff --git a/pandora_console/include/class/ConsoleSupervisor.php b/pandora_console/include/class/ConsoleSupervisor.php
index a7676d4b40..c01be47c4f 100644
--- a/pandora_console/include/class/ConsoleSupervisor.php
+++ b/pandora_console/include/class/ConsoleSupervisor.php
@@ -1145,7 +1145,7 @@ class ConsoleSupervisor
     public function checkAttachment()
     {
         global $config;
-
+hd("dadsada", true);
         if (is_writable($config['attachment_store']) !== true) {
             $this->notify(
                 [
@@ -1163,22 +1163,6 @@ class ConsoleSupervisor
             $this->cleanNotifications('NOTIF.WRITABLE.ATTACHMENT');
         }
 
-        $filecount = 0;
-
-        $agentId = db_get_value('id_agente', 'tagente', 'nombre', 'pandora.internals');
-        if ($agentId !== false) {
-            $agent = new Agent($agentId);
-
-            $moduleId = $agent->searchModules(
-                ['nombre' => 'Data_in_files'],
-                1
-            )->toArray()['id_agente_modulo'];
-
-            if ($moduleId > 0) {
-                $filecount = (int) modules_get_last_value($moduleId);
-            }
-        }
-
         if ($filecount > $config['num_files_attachment']) {
             $this->notify(
                 [
@@ -1292,17 +1276,28 @@ class ConsoleSupervisor
         $MAX_FILES_DATA_IN = 1000;
         $MAX_BADXML_FILES_DATA_IN = 150;
 
-        $filecount = $this->countFiles(
-            $remote_config_dir,
-            '',
-            $MAX_FILES_DATA_IN
-        );
+        $filecount = 0;
+
+        $agentId = db_get_value('id_agente', 'tagente', 'nombre', 'pandora.internals');
+        if ($agentId !== false) {
+            $agent = new Agent($agentId);
+
+            $moduleId = $agent->searchModules(
+                ['nombre' => 'Data_in_files'],
+                1
+            )->toArray()['id_agente_modulo'];
+
+            if ($moduleId > 0) {
+                $filecount = (int) modules_get_last_value($moduleId);
+            }
+        }
+hd($filecount, true);
         // If cannot open directory, count is '-1', skip.
         if ($filecount > $MAX_FILES_DATA_IN) {
             $this->notify(
                 [
                     'type'    => 'NOTIF.FILES.DATAIN',
-                    'title'   => __('There are too much files in spool').'.',
+                    'title'   => __('There are too many files in spool').'.',
                     'message' => __(
                         'There are more than %d files in %s. Consider checking DataServer performance',
                         $MAX_FILES_DATA_IN,

From 05af441f19dd440bd440f12893e60f8898e4b03a Mon Sep 17 00:00:00 2001
From: "alejandro.campos@artica.es" <alejandro.campos@artica.es>
Date: Thu, 1 Feb 2024 17:36:21 +0100
Subject: [PATCH 214/231] minor fix

---
 pandora_console/include/class/ConsoleSupervisor.php | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/pandora_console/include/class/ConsoleSupervisor.php b/pandora_console/include/class/ConsoleSupervisor.php
index c01be47c4f..af41d60a67 100644
--- a/pandora_console/include/class/ConsoleSupervisor.php
+++ b/pandora_console/include/class/ConsoleSupervisor.php
@@ -1145,7 +1145,7 @@ class ConsoleSupervisor
     public function checkAttachment()
     {
         global $config;
-hd("dadsada", true);
+
         if (is_writable($config['attachment_store']) !== true) {
             $this->notify(
                 [
@@ -1163,6 +1163,12 @@ hd("dadsada", true);
             $this->cleanNotifications('NOTIF.WRITABLE.ATTACHMENT');
         }
 
+        $filecount = $this->countFiles(
+            $config['attachment_store'],
+            '',
+            $config['num_files_attachment']
+        );
+
         if ($filecount > $config['num_files_attachment']) {
             $this->notify(
                 [
@@ -1291,7 +1297,7 @@ hd("dadsada", true);
                 $filecount = (int) modules_get_last_value($moduleId);
             }
         }
-hd($filecount, true);
+
         // If cannot open directory, count is '-1', skip.
         if ($filecount > $MAX_FILES_DATA_IN) {
             $this->notify(

From d8fdb22c891252eb5c2364a7deb45d4db0cc9779 Mon Sep 17 00:00:00 2001
From: Daniel Cebrian <daniel.cebrian@pandorafms.com>
Date: Fri, 2 Feb 2024 10:47:36 +0100
Subject: [PATCH 215/231] #12810 change value status license in diagnostics

---
 .../include/class/Diagnostics.class.php       | 25 ++++++++++++++++++-
 .../include/functions_update_manager.php      | 19 --------------
 2 files changed, 24 insertions(+), 20 deletions(-)

diff --git a/pandora_console/include/class/Diagnostics.class.php b/pandora_console/include/class/Diagnostics.class.php
index 9d4a3b2901..1b76652a6c 100644
--- a/pandora_console/include/class/Diagnostics.class.php
+++ b/pandora_console/include/class/Diagnostics.class.php
@@ -483,7 +483,7 @@ class Diagnostics extends Wizard
                 ],
                 'isEnterprise'  => [
                     'name'  => __('Enterprise installed'),
-                    'value' => (enterprise_installed()) ? __('true') : __('false'),
+                    'value' => $this->getStatusLicense(),
                 ],
                 'customerKey'   => [
                     'name'  => __('Update Key'),
@@ -505,6 +505,29 @@ class Diagnostics extends Wizard
     }
 
 
+    /**
+     * Return status of license.
+     *
+     * @return string
+     */
+    private function getStatusLicense():string
+    {
+        global $config;
+
+        if (enterprise_installed() === true) {
+            if (isset($config['license_mode'])
+                && (int) $config['license_mode'] === 0
+            ) {
+                return __('FREE/TRIAL');
+            } else {
+                return __('LICENCED');
+            }
+        } else {
+            return __('OpenSource');
+        }
+    }
+
+
     /**
      * PHP Status.
      *
diff --git a/pandora_console/include/functions_update_manager.php b/pandora_console/include/functions_update_manager.php
index f78b94d188..5c41828e11 100755
--- a/pandora_console/include/functions_update_manager.php
+++ b/pandora_console/include/functions_update_manager.php
@@ -98,25 +98,6 @@ function update_manager_get_current_package()
 }
 
 
-/**
- * Check if a trial license is in use.
- *
- * @return boolean true if a trial license is in use, false otherwise.
- */
-function update_manager_verify_trial()
-{
-    global $config;
-
-    if (isset($config['license_licensed_to'])
-        && strstr($config['license_licensed_to'], 'info@pandorafms.com') !== false
-    ) {
-        return true;
-    }
-
-    return false;
-}
-
-
 /**
  * Checks if there are packages available to be installed.
  *

From 3e40558443045db8652c589a427c9eccb9f6c62c Mon Sep 17 00:00:00 2001
From: Daniel Cebrian <daniel.cebrian@pandorafms.com>
Date: Fri, 2 Feb 2024 10:55:57 +0100
Subject: [PATCH 216/231] #12810 fixed license_mode status

---
 pandora_console/include/class/Diagnostics.class.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pandora_console/include/class/Diagnostics.class.php b/pandora_console/include/class/Diagnostics.class.php
index 1b76652a6c..17ded9a8eb 100644
--- a/pandora_console/include/class/Diagnostics.class.php
+++ b/pandora_console/include/class/Diagnostics.class.php
@@ -516,7 +516,7 @@ class Diagnostics extends Wizard
 
         if (enterprise_installed() === true) {
             if (isset($config['license_mode'])
-                && (int) $config['license_mode'] === 0
+                && (int) $config['license_mode'] === 1
             ) {
                 return __('FREE/TRIAL');
             } else {

From c6cb0c8747c3bf9956c23575500b450b382c50ce Mon Sep 17 00:00:00 2001
From: Daniel Cebrian <daniel.cebrian@pandorafms.com>
Date: Fri, 2 Feb 2024 12:14:49 +0100
Subject: [PATCH 217/231] #12810 changed text licensed in info status

---
 pandora_console/include/class/Diagnostics.class.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pandora_console/include/class/Diagnostics.class.php b/pandora_console/include/class/Diagnostics.class.php
index 17ded9a8eb..b097bbba48 100644
--- a/pandora_console/include/class/Diagnostics.class.php
+++ b/pandora_console/include/class/Diagnostics.class.php
@@ -520,7 +520,7 @@ class Diagnostics extends Wizard
             ) {
                 return __('FREE/TRIAL');
             } else {
-                return __('LICENCED');
+                return __('LICENSED');
             }
         } else {
             return __('OpenSource');

From da1c74e9dbfa6da94aa144777a19af8ba3c90e70 Mon Sep 17 00:00:00 2001
From: Daniel Cebrian <daniel.cebrian@pandorafms.com>
Date: Fri, 2 Feb 2024 14:04:37 +0100
Subject: [PATCH 218/231] #12751 fixed path with spaces and vul

---
 pandora_console/godmode/servers/plugin.php | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/pandora_console/godmode/servers/plugin.php b/pandora_console/godmode/servers/plugin.php
index d8bc3b47b9..991ed52855 100644
--- a/pandora_console/godmode/servers/plugin.php
+++ b/pandora_console/godmode/servers/plugin.php
@@ -215,7 +215,7 @@ if ($create != '') {
 // =====================================================================
 if ($filemanager) {
     if ($edit_file) {
-        $location_file = get_parameter('location_file', '');
+        $location_file = io_safe_output(get_parameter('location_file', ''));
         $filename = array_pop(explode('/', $location_file));
         $file = file_get_contents($location_file);
         echo '<h4>'.__('Edit file').' '.$filename.'</h4>';
@@ -250,7 +250,7 @@ if ($filemanager) {
         echo '</form>';
     } else {
         if ($update_file) {
-            $location_file = get_parameter('location_file', '');
+            $location_file = io_safe_output(get_parameter('location_file', ''));
             $contentFile = io_safe_output(get_parameter('content_file', ''));
             $compatibility = get_parameter('compatibility', 'unix');
             $is_win_compatible = strpos($contentFile, "\r\n");
@@ -262,7 +262,10 @@ if ($filemanager) {
                 $contentFile = str_replace("\n", "\r\n", $contentFile);
             }
 
-            if (empty($location_file) === false && file_exists($location_file) === true) {
+            if (empty($location_file) === false
+                && strpos($location_file, realpath('attachment/plugin')) !== false
+                && file_exists($location_file) === true
+            ) {
                 $result = file_put_contents($location_file, $contentFile);
             }
         }

From b9070d3a8e5d524297f762ca982eaaa79ed2aadb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?F=C3=A9lix=20Su=C3=A1rez?= <felix.suarez@pandorafms.com>
Date: Fri, 2 Feb 2024 08:56:39 -0600
Subject: [PATCH 219/231] Fix on empty log extraction

---
 pandora_agents/unix/pandora_agent | 17 +++++++----------
 1 file changed, 7 insertions(+), 10 deletions(-)

diff --git a/pandora_agents/unix/pandora_agent b/pandora_agents/unix/pandora_agent
index 9b758246bb..59004de345 100755
--- a/pandora_agents/unix/pandora_agent
+++ b/pandora_agents/unix/pandora_agent
@@ -3680,20 +3680,17 @@ sub write_module_xml ($@) {
 
 	# Is it an extraction log module?
 	if($module->{'type'} eq "log"){
+		my $output = join('', @data);
+
+		if ($output eq "") {
+			return;
+		}
+
         $Xml .="<log_module>\n";
         $Xml .= "	<source><![CDATA[" . $module->{'name'} . "]]></source>\n";
 		$Xml .= "	<type><![CDATA[" . $module->{'type'} . "]]></type>\n";
 		$Xml .= "	<encoding>base64</encoding>\n";
-	
-		# Data list
-		if ($#data > 0) {
-			$Xml .= "	<data><![CDATA[" . join('', @data) . "]]></data>\n";
-		# Single data
-		} else {
-			chomp ($data[0]);
-			$Xml .= "	<data><![CDATA[$data[0]]]></data>\n";
-		}
-
+		$Xml .= "	<data><![CDATA[" . $output . "]]></data>\n";
         $Xml .= "</log_module>\n";
 		return;
 	}

From 64f6825d65ad26115ae4daf74e33ade3845439bb Mon Sep 17 00:00:00 2001
From: artica <gitlab@oficina.artica.es>
Date: Mon, 5 Feb 2024 09:21:33 +0100
Subject: [PATCH 220/231] Auto-updated build strings.

---
 pandora_agents/unix/DEBIAN/control                    | 2 +-
 pandora_agents/unix/DEBIAN/make_deb_package.sh        | 2 +-
 pandora_agents/unix/pandora_agent                     | 2 +-
 pandora_agents/unix/pandora_agent.redhat.spec         | 2 +-
 pandora_agents/unix/pandora_agent.redhat_bin.el8.spec | 2 +-
 pandora_agents/unix/pandora_agent.redhat_bin.el9.spec | 2 +-
 pandora_agents/unix/pandora_agent.redhat_bin.spec     | 2 +-
 pandora_agents/unix/pandora_agent.spec                | 2 +-
 pandora_agents/unix/pandora_agent_installer           | 2 +-
 pandora_agents/win32/installer/pandora.mpi            | 2 +-
 pandora_agents/win32/pandora.cc                       | 2 +-
 pandora_agents/win32/versioninfo.rc                   | 2 +-
 pandora_console/DEBIAN/control                        | 2 +-
 pandora_console/DEBIAN/make_deb_package.sh            | 2 +-
 pandora_console/include/config_process.php            | 2 +-
 pandora_console/install.php                           | 2 +-
 pandora_console/pandora_console.redhat.spec           | 2 +-
 pandora_console/pandora_console.rhel7.spec            | 2 +-
 pandora_console/pandora_console.spec                  | 2 +-
 pandora_server/DEBIAN/control                         | 2 +-
 pandora_server/DEBIAN/make_deb_package.sh             | 2 +-
 pandora_server/lib/PandoraFMS/Config.pm               | 2 +-
 pandora_server/lib/PandoraFMS/PluginTools.pm          | 2 +-
 pandora_server/pandora_server.redhat.spec             | 2 +-
 pandora_server/pandora_server.spec                    | 2 +-
 pandora_server/pandora_server_installer               | 2 +-
 pandora_server/util/pandora_db.pl                     | 2 +-
 pandora_server/util/pandora_manage.pl                 | 2 +-
 28 files changed, 28 insertions(+), 28 deletions(-)

diff --git a/pandora_agents/unix/DEBIAN/control b/pandora_agents/unix/DEBIAN/control
index c8ee8180a7..84a05c32a5 100644
--- a/pandora_agents/unix/DEBIAN/control
+++ b/pandora_agents/unix/DEBIAN/control
@@ -1,5 +1,5 @@
 package: pandorafms-agent-unix
-Version: 7.0NG.775-240126
+Version: 7.0NG.775-240205
 Architecture: all
 Priority: optional
 Section: admin
diff --git a/pandora_agents/unix/DEBIAN/make_deb_package.sh b/pandora_agents/unix/DEBIAN/make_deb_package.sh
index fa783cc923..27fab585af 100644
--- a/pandora_agents/unix/DEBIAN/make_deb_package.sh
+++ b/pandora_agents/unix/DEBIAN/make_deb_package.sh
@@ -14,7 +14,7 @@
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 # GNU General Public License for more details.
 
-pandora_version="7.0NG.775-240126"
+pandora_version="7.0NG.775-240205"
 
 echo "Test if you has the tools for to make the packages."
 whereis dpkg-deb | cut -d":" -f2 | grep dpkg-deb > /dev/null
diff --git a/pandora_agents/unix/pandora_agent b/pandora_agents/unix/pandora_agent
index 129151ca0f..8d7ef558ba 100755
--- a/pandora_agents/unix/pandora_agent
+++ b/pandora_agents/unix/pandora_agent
@@ -1039,7 +1039,7 @@ my $Sem = undef;
 my $ThreadSem = undef;
 
 use constant AGENT_VERSION => '7.0NG.775';
-use constant AGENT_BUILD => '240126';
+use constant AGENT_BUILD => '240205';
 
 # Agent log default file size maximum and instances
 use constant DEFAULT_MAX_LOG_SIZE => 600000;
diff --git a/pandora_agents/unix/pandora_agent.redhat.spec b/pandora_agents/unix/pandora_agent.redhat.spec
index 5c05e6110e..da53dbfb8c 100644
--- a/pandora_agents/unix/pandora_agent.redhat.spec
+++ b/pandora_agents/unix/pandora_agent.redhat.spec
@@ -4,7 +4,7 @@
 %global __os_install_post %{nil}
 %define name        pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240126
+%define release     240205
 
 Summary:            Pandora FMS Linux agent, PERL version
 Name:               %{name}
diff --git a/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec b/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec
index 78383784e9..ec0ce5c951 100644
--- a/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec
+++ b/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec
@@ -5,7 +5,7 @@
 %define name        pandorafms_agent_linux_bin
 %define source_name pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240126
+%define release     240205
 %define debug_package %{nil}
 
 Summary:            Pandora FMS Linux agent, binary version
diff --git a/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec b/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec
index b21d106a96..be65e38e09 100644
--- a/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec
+++ b/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec
@@ -5,7 +5,7 @@
 %define name        pandorafms_agent_linux_bin
 %define source_name pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240126
+%define release     240205
 %define debug_package %{nil}
 
 Summary:            Pandora FMS Linux agent, binary version
diff --git a/pandora_agents/unix/pandora_agent.redhat_bin.spec b/pandora_agents/unix/pandora_agent.redhat_bin.spec
index 7a15966693..fa35c6ef76 100644
--- a/pandora_agents/unix/pandora_agent.redhat_bin.spec
+++ b/pandora_agents/unix/pandora_agent.redhat_bin.spec
@@ -5,7 +5,7 @@
 %define name        pandorafms_agent_linux_bin
 %define source_name pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240126
+%define release     240205
 
 Summary:            Pandora FMS Linux agent, binary version
 Name:               %{name}
diff --git a/pandora_agents/unix/pandora_agent.spec b/pandora_agents/unix/pandora_agent.spec
index 337a0ec5f3..28f1955691 100644
--- a/pandora_agents/unix/pandora_agent.spec
+++ b/pandora_agents/unix/pandora_agent.spec
@@ -4,7 +4,7 @@
 %global __os_install_post %{nil}
 %define name        pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240126
+%define release     240205
 
 Summary:            Pandora FMS Linux agent, PERL version
 Name:               %{name}
diff --git a/pandora_agents/unix/pandora_agent_installer b/pandora_agents/unix/pandora_agent_installer
index 2f6e9c4d3d..9afdcb76ef 100755
--- a/pandora_agents/unix/pandora_agent_installer
+++ b/pandora_agents/unix/pandora_agent_installer
@@ -10,7 +10,7 @@
 # **********************************************************************
 
 PI_VERSION="7.0NG.775"
-PI_BUILD="240126"
+PI_BUILD="240205"
 OS_NAME=`uname -s`
 
 FORCE=0
diff --git a/pandora_agents/win32/installer/pandora.mpi b/pandora_agents/win32/installer/pandora.mpi
index 95fa0dd4a3..65eb14e1c0 100644
--- a/pandora_agents/win32/installer/pandora.mpi
+++ b/pandora_agents/win32/installer/pandora.mpi
@@ -186,7 +186,7 @@ UpgradeApplicationID
 {}
 
 Version
-{240126}
+{240205}
 
 ViewReadme
 {Yes}
diff --git a/pandora_agents/win32/pandora.cc b/pandora_agents/win32/pandora.cc
index f3961807fe..da37bd947d 100644
--- a/pandora_agents/win32/pandora.cc
+++ b/pandora_agents/win32/pandora.cc
@@ -30,7 +30,7 @@ using namespace Pandora;
 using namespace Pandora_Strutils;
 
 #define PATH_SIZE    _MAX_PATH+1
-#define PANDORA_VERSION ("7.0NG.775 Build 240126")
+#define PANDORA_VERSION ("7.0NG.775 Build 240205")
 
 string pandora_path;
 string pandora_dir;
diff --git a/pandora_agents/win32/versioninfo.rc b/pandora_agents/win32/versioninfo.rc
index 1bb160a879..85fa9ba06c 100644
--- a/pandora_agents/win32/versioninfo.rc
+++ b/pandora_agents/win32/versioninfo.rc
@@ -11,7 +11,7 @@ BEGIN
       VALUE "LegalCopyright", "Pandora FMS"
       VALUE "OriginalFilename", "PandoraAgent.exe"
       VALUE "ProductName", "Pandora FMS Windows Agent"
-      VALUE "ProductVersion", "(7.0NG.775(Build 240126))"
+      VALUE "ProductVersion", "(7.0NG.775(Build 240205))"
       VALUE "FileVersion", "1.0.0.0"
     END
   END
diff --git a/pandora_console/DEBIAN/control b/pandora_console/DEBIAN/control
index 466722a50b..8f91474f4c 100644
--- a/pandora_console/DEBIAN/control
+++ b/pandora_console/DEBIAN/control
@@ -1,5 +1,5 @@
 package: pandorafms-console
-Version: 7.0NG.775-240126
+Version: 7.0NG.775-240205
 Architecture: all
 Priority: optional
 Section: admin
diff --git a/pandora_console/DEBIAN/make_deb_package.sh b/pandora_console/DEBIAN/make_deb_package.sh
index a47efa89c2..38ecdae5ba 100644
--- a/pandora_console/DEBIAN/make_deb_package.sh
+++ b/pandora_console/DEBIAN/make_deb_package.sh
@@ -14,7 +14,7 @@
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 # GNU General Public License for more details.
 
-pandora_version="7.0NG.775-240126"
+pandora_version="7.0NG.775-240205"
 
 package_pear=0
 package_pandora=1
diff --git a/pandora_console/include/config_process.php b/pandora_console/include/config_process.php
index a721e82c12..171156b287 100644
--- a/pandora_console/include/config_process.php
+++ b/pandora_console/include/config_process.php
@@ -20,7 +20,7 @@
 /**
  * Pandora build version and version
  */
-$build_version = 'PC240126';
+$build_version = 'PC240205';
 $pandora_version = 'v7.0NG.775';
 
 // Do not overwrite default timezone set if defined.
diff --git a/pandora_console/install.php b/pandora_console/install.php
index c6329db34e..cda7eb03b6 100644
--- a/pandora_console/install.php
+++ b/pandora_console/install.php
@@ -131,7 +131,7 @@
         <div style='padding-bottom: 50px'>
             <?php
             $version = '7.0NG.775';
-            $build = '240126';
+            $build = '240205';
             $banner = "v$version Build $build";
             error_reporting(0);
 
diff --git a/pandora_console/pandora_console.redhat.spec b/pandora_console/pandora_console.redhat.spec
index 1636c764f3..a778726989 100644
--- a/pandora_console/pandora_console.redhat.spec
+++ b/pandora_console/pandora_console.redhat.spec
@@ -6,7 +6,7 @@
 %define debug_package %{nil}
 %define name        pandorafms_console
 %define version     7.0NG.775
-%define release     240126
+%define release     240205
 
 # User and Group under which Apache is running
 %define httpd_name  httpd
diff --git a/pandora_console/pandora_console.rhel7.spec b/pandora_console/pandora_console.rhel7.spec
index 24aad437f3..3be29ff245 100644
--- a/pandora_console/pandora_console.rhel7.spec
+++ b/pandora_console/pandora_console.rhel7.spec
@@ -6,7 +6,7 @@
 %define debug_package %{nil}
 %define name        pandorafms_console
 %define version     7.0NG.775
-%define release     240126
+%define release     240205
 
 # User and Group under which Apache is running
 %define httpd_name  httpd
diff --git a/pandora_console/pandora_console.spec b/pandora_console/pandora_console.spec
index c737ea2662..c286afef79 100644
--- a/pandora_console/pandora_console.spec
+++ b/pandora_console/pandora_console.spec
@@ -3,7 +3,7 @@
 #
 %define name        pandorafms_console
 %define version     7.0NG.775
-%define release     240126
+%define release     240205
 %define httpd_name      httpd
 # User and Group under which Apache is running
 %define httpd_name  apache2
diff --git a/pandora_server/DEBIAN/control b/pandora_server/DEBIAN/control
index 2cef54da51..3dcdeea950 100644
--- a/pandora_server/DEBIAN/control
+++ b/pandora_server/DEBIAN/control
@@ -1,5 +1,5 @@
 package: pandorafms-server
-Version: 7.0NG.775-240126
+Version: 7.0NG.775-240205
 Architecture: all
 Priority: optional
 Section: admin
diff --git a/pandora_server/DEBIAN/make_deb_package.sh b/pandora_server/DEBIAN/make_deb_package.sh
index 7780111efc..e3697ea3b2 100644
--- a/pandora_server/DEBIAN/make_deb_package.sh
+++ b/pandora_server/DEBIAN/make_deb_package.sh
@@ -14,7 +14,7 @@
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 # GNU General Public License for more details.
 
-pandora_version="7.0NG.775-240126"
+pandora_version="7.0NG.775-240205"
 
 package_cpan=0
 package_pandora=1
diff --git a/pandora_server/lib/PandoraFMS/Config.pm b/pandora_server/lib/PandoraFMS/Config.pm
index 4d21988c3c..a451d76bc1 100644
--- a/pandora_server/lib/PandoraFMS/Config.pm
+++ b/pandora_server/lib/PandoraFMS/Config.pm
@@ -46,7 +46,7 @@ our @EXPORT = qw(
 
 # version: Defines actual version of Pandora Server for this module only
 my $pandora_version = "7.0NG.775";
-my $pandora_build = "240126";
+my $pandora_build = "240205";
 our $VERSION = $pandora_version." ".$pandora_build;
 
 # Setup hash
diff --git a/pandora_server/lib/PandoraFMS/PluginTools.pm b/pandora_server/lib/PandoraFMS/PluginTools.pm
index c401b9410f..53c7561b69 100644
--- a/pandora_server/lib/PandoraFMS/PluginTools.pm
+++ b/pandora_server/lib/PandoraFMS/PluginTools.pm
@@ -34,7 +34,7 @@ our @ISA = qw(Exporter);
 
 # version: Defines actual version of Pandora Server for this module only
 my $pandora_version = "7.0NG.775";
-my $pandora_build = "240126";
+my $pandora_build = "240205";
 our $VERSION = $pandora_version." ".$pandora_build;
 
 our %EXPORT_TAGS = ( 'all' => [ qw() ] );
diff --git a/pandora_server/pandora_server.redhat.spec b/pandora_server/pandora_server.redhat.spec
index e7e972a801..24e400c112 100644
--- a/pandora_server/pandora_server.redhat.spec
+++ b/pandora_server/pandora_server.redhat.spec
@@ -7,7 +7,7 @@
 %define debug_package %{nil}
 %define name        pandorafms_server
 %define version     7.0NG.775
-%define release     240126
+%define release     240205
 
 Summary:            Pandora FMS Server
 Name:               %{name}
diff --git a/pandora_server/pandora_server.spec b/pandora_server/pandora_server.spec
index f443bc4b03..a560bbde3e 100644
--- a/pandora_server/pandora_server.spec
+++ b/pandora_server/pandora_server.spec
@@ -4,7 +4,7 @@
 %global __os_install_post %{nil}
 %define name        pandorafms_server
 %define version     7.0NG.775
-%define release     240126
+%define release     240205
 
 Summary:            Pandora FMS Server
 Name:               %{name}
diff --git a/pandora_server/pandora_server_installer b/pandora_server/pandora_server_installer
index bc5676b742..7a7158534a 100755
--- a/pandora_server/pandora_server_installer
+++ b/pandora_server/pandora_server_installer
@@ -9,7 +9,7 @@
 # **********************************************************************
 
 PI_VERSION="7.0NG.775"
-PI_BUILD="240126"
+PI_BUILD="240205"
 
 MODE=$1
 if [ $# -gt 1 ]; then
diff --git a/pandora_server/util/pandora_db.pl b/pandora_server/util/pandora_db.pl
index f079a42194..bd25b9ad98 100755
--- a/pandora_server/util/pandora_db.pl
+++ b/pandora_server/util/pandora_db.pl
@@ -38,7 +38,7 @@ use PandoraFMS::Config;
 use PandoraFMS::DB;
 
 # version: define current version
-my $version = "7.0NG.775 Build 240126";
+my $version = "7.0NG.775 Build 240205";
 
 # Pandora server configuration
 my %conf;
diff --git a/pandora_server/util/pandora_manage.pl b/pandora_server/util/pandora_manage.pl
index 288c0dadd3..76154a1097 100755
--- a/pandora_server/util/pandora_manage.pl
+++ b/pandora_server/util/pandora_manage.pl
@@ -36,7 +36,7 @@ use Encode::Locale;
 Encode::Locale::decode_argv;
 
 # version: define current version
-my $version = "7.0NG.775 Build 240126";
+my $version = "7.0NG.775 Build 240205";
 
 # save program name for logging
 my $progname = basename($0);

From 599db12dabfa2cebbad66f63884aa5dfb18ad79f Mon Sep 17 00:00:00 2001
From: rafael <rafael.ameijeiras@pandorafms.com>
Date: Mon, 5 Feb 2024 12:02:34 +0100
Subject: [PATCH 221/231] 12769 fixing typo on systemctl daemon-reload

---
 pandora_agents/unix/pandora_agent.redhat_bin.el9.spec | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec b/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec
index b24d7e66c1..f83e8f610b 100644
--- a/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec
+++ b/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec
@@ -118,7 +118,7 @@ then
     cp -f /usr/share/pandora_agent/pandora_agent_daemon.service /usr/lib/systemd/system/
 	chmod -x /usr/lib/systemd/system/pandora_agent_daemon.service
 # Enable the services on SystemD
-	systemctl daemon reload
+	systemctl daemon-reload
     systemctl enable pandora_agent_daemon.service
 
 fi

From 21fe027a62cd2f0667c7d3f00e5b9d661271a4eb Mon Sep 17 00:00:00 2001
From: Jonathan <jonathan.leon@pandorafms.com>
Date: Mon, 5 Feb 2024 14:34:43 +0100
Subject: [PATCH 222/231] #12488 tips window move for clicks

---
 .../include/javascript/tipsWindow.js            | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/pandora_console/include/javascript/tipsWindow.js b/pandora_console/include/javascript/tipsWindow.js
index f066f65c49..33cb9d46d1 100644
--- a/pandora_console/include/javascript/tipsWindow.js
+++ b/pandora_console/include/javascript/tipsWindow.js
@@ -82,6 +82,7 @@ function removeInputImage(e) {
   }
 }
 function render({ title, text, url, files, method }) {
+  var positionButtonsBefore = $(".ui-dialog-buttonset").offset().top;
   $("#title_tip").html(title);
   $("#text_tip").html(text);
   if (url) {
@@ -123,6 +124,7 @@ function render({ title, text, url, files, method }) {
     }
   });
   activeCarousel();
+  checkPositionButtons(positionButtonsBefore);
 }
 
 function close_dialog() {
@@ -429,3 +431,18 @@ function validateImages() {
   });
   return validate;
 }
+
+function checkPositionButtons(positionButtonsBefore) {
+  // posicion actual botones
+  var buttonsNow = $(".ui-dialog-buttonset").offset().top;
+  // Position of dialog
+  var dialogPosition = $(".dialog_tips").position().top;
+  var positionFinal;
+  if (positionButtonsBefore > buttonsNow) {
+    positionFinal = dialogPosition + (positionButtonsBefore - buttonsNow);
+    $(".dialog_tips").css("top", positionFinal);
+  } else if (positionButtonsBefore < buttonsNow) {
+    positionFinal = dialogPosition - (buttonsNow - positionButtonsBefore);
+    $(".dialog_tips").css("top", positionFinal);
+  }
+}

From c984da1ac71ce5181a912a56ca7a0dbfd4dce51e Mon Sep 17 00:00:00 2001
From: Jonathan <jonathan.leon@pandorafms.com>
Date: Mon, 5 Feb 2024 15:35:38 +0100
Subject: [PATCH 223/231] #12848 reload when new credentials

---
 pandora_console/include/class/CredentialStore.class.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pandora_console/include/class/CredentialStore.class.php b/pandora_console/include/class/CredentialStore.class.php
index 94036c7ad8..dd3f484d5e 100644
--- a/pandora_console/include/class/CredentialStore.class.php
+++ b/pandora_console/include/class/CredentialStore.class.php
@@ -1637,7 +1637,7 @@ class CredentialStore extends Wizard
                                 $(".ui-dialog-content").dialog("close");
                                 $('.info').hide();
                                 cleanupDOM();
-                                dt_keystore.draw(false);
+                                window.location.reload();
                             } else {
                                 $(this).dialog('close');
                             }

From 80c0f487742aa2befa24f1d8aa58874ec02062f3 Mon Sep 17 00:00:00 2001
From: Jonathan <jonathan.leon@pandorafms.com>
Date: Mon, 5 Feb 2024 16:05:16 +0100
Subject: [PATCH 224/231] #12488 when px lower 0 default 100

---
 pandora_console/include/javascript/tipsWindow.js | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/pandora_console/include/javascript/tipsWindow.js b/pandora_console/include/javascript/tipsWindow.js
index 33cb9d46d1..fc48de0c1c 100644
--- a/pandora_console/include/javascript/tipsWindow.js
+++ b/pandora_console/include/javascript/tipsWindow.js
@@ -440,9 +440,11 @@ function checkPositionButtons(positionButtonsBefore) {
   var positionFinal;
   if (positionButtonsBefore > buttonsNow) {
     positionFinal = dialogPosition + (positionButtonsBefore - buttonsNow);
+    positionFinal = positionFinal < 0 ? "100" : positionFinal;
     $(".dialog_tips").css("top", positionFinal);
   } else if (positionButtonsBefore < buttonsNow) {
     positionFinal = dialogPosition - (buttonsNow - positionButtonsBefore);
+    positionFinal = positionFinal < 0 ? "100" : positionFinal;
     $(".dialog_tips").css("top", positionFinal);
   }
 }

From 5f00166b7457264d773ad73a67d6ad2efc2abaf6 Mon Sep 17 00:00:00 2001
From: Jonathan <jonathan.leon@pandorafms.com>
Date: Mon, 5 Feb 2024 16:52:12 +0100
Subject: [PATCH 225/231] #12847 remove entities title and name

---
 pandora_console/godmode/reporting/visual_console_favorite.php | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/pandora_console/godmode/reporting/visual_console_favorite.php b/pandora_console/godmode/reporting/visual_console_favorite.php
index 0be52d89bc..68db1582c2 100644
--- a/pandora_console/godmode/reporting/visual_console_favorite.php
+++ b/pandora_console/godmode/reporting/visual_console_favorite.php
@@ -247,7 +247,7 @@ if ($favorite_array == false) {
             $url = 'index.php?sec=network&sec2=operation/visual_console/render_view&id='.$favourite_v['id'];
         }
 
-        echo "<a href='".$url."' title='Visual console".$favourite_v['name']."' alt='".$favourite_v['name']."'><li>";
+        echo "<a href='".$url."' title='".io_safe_output($favourite_v['name'])."' alt='".io_safe_output($favourite_v['name'])."'><li>";
         echo "<div class='icon_img'>";
             echo html_print_image(
                 'images/'.groups_get_icon($favourite_v['id_group']),
@@ -256,7 +256,7 @@ if ($favorite_array == false) {
             );
             echo '</div>';
             echo "<div class='text'>";
-            echo $favourite_v['name'];
+            echo io_safe_output($favourite_v['name']);
             echo '</div>';
         echo '</li></a>';
     }

From 59fd298215eb9f625e593530b053c7d53e6d11dc Mon Sep 17 00:00:00 2001
From: Jonathan <jonathan.leon@pandorafms.com>
Date: Mon, 5 Feb 2024 17:24:52 +0100
Subject: [PATCH 226/231] #12845 fix styles events

---
 .../include/class/WelcomeWindow.class.php     |  6 +++---
 .../include/javascript/pandora_events.js      | 20 ++-----------------
 .../include/styles/js/jquery-ui_custom.css    |  8 ++------
 3 files changed, 7 insertions(+), 27 deletions(-)

diff --git a/pandora_console/include/class/WelcomeWindow.class.php b/pandora_console/include/class/WelcomeWindow.class.php
index 378a194e32..4a157540c5 100644
--- a/pandora_console/include/class/WelcomeWindow.class.php
+++ b/pandora_console/include/class/WelcomeWindow.class.php
@@ -1257,8 +1257,8 @@ class WelcomeWindow extends Wizard
                 draggable: true,
                 modal: true,
                 close: false,
-                height: 375,
-                width: 480,
+                height: 400,
+                width: 500,
                 overlay: {
                     opacity: 0.5,
                     background: "black"
@@ -1274,7 +1274,7 @@ class WelcomeWindow extends Wizard
                 draggable: true,
                 modal: true,
                 close: false,
-                height: 265,
+                height: 300,
                 width: 480,
                 overlay: {
                     opacity: 0.5,
diff --git a/pandora_console/include/javascript/pandora_events.js b/pandora_console/include/javascript/pandora_events.js
index 936c4a0cfb..fc6485a4fe 100644
--- a/pandora_console/include/javascript/pandora_events.js
+++ b/pandora_console/include/javascript/pandora_events.js
@@ -1601,9 +1601,7 @@ $(document).ajaxSend(function(event, jqXHR, ajaxOptions) {
 
       // Add the minimize icon to the minimize button
       $("<span>", {
-        class: "ui-button-icon ui-icon",
-        style:
-          "background-color: rgb(51, 51, 51); -webkit-mask: url('images/arrow-down-white.png') no-repeat / contain !important;"
+        class: "ui-button-icon ui-icon"
       }).appendTo(minimizeButton);
 
       $("<span>", {
@@ -1617,23 +1615,9 @@ $(document).ajaxSend(function(event, jqXHR, ajaxOptions) {
         class:
           "ui-corner-all ui-widget ui-button-icon-only ui-dialog-titlebar-disengage disengage-buttom-image",
         type: "button",
-        title: "Disengage",
-        style: "float: right; position:relative;"
+        title: "Disengage"
       }).insertBefore(minimizeButton);
 
-      // Add the disengage icon to the disengage button
-      $("<span>", {
-        class: "ui-button-icon ui-icon",
-        style:
-          "background-color: rgb(51, 51, 51); -webkit-mask: url('images/dashboard.menu.png') no-repeat center / contain !important;"
-      }).appendTo(disengageButton);
-
-      $("<span>", {
-        class: "ui-button-icon-space"
-      })
-        .html(" ")
-        .appendTo(disengageButton);
-
       minimizeButton.click(function(e) {
         if ($("#minimize_arrow_event_sound").hasClass("arrow_menu_up")) {
           $("#minimize_arrow_event_sound").removeClass("arrow_menu_up");
diff --git a/pandora_console/include/styles/js/jquery-ui_custom.css b/pandora_console/include/styles/js/jquery-ui_custom.css
index 440540ab05..5bf343ee60 100644
--- a/pandora_console/include/styles/js/jquery-ui_custom.css
+++ b/pandora_console/include/styles/js/jquery-ui_custom.css
@@ -61,15 +61,11 @@
 }
 
 .ui-dialog .ui-dialog-titlebar-disengage {
-  position: absolute !important;
-  right: 50px;
-  top: -3px;
-  width: 40px;
   margin: 0px 0 0 0;
   padding: 1px;
-  height: 40px;
+  height: 20px;
   bottom: 30%;
-  background-color: #fff !important;
+  background-color: white;
 }
 
 .ui-dialog .ui-dialog-titlebar-disengage:hover {

From 7dc0acf6da3ef211ced9db8d2e30a01501ffc40a Mon Sep 17 00:00:00 2001
From: artica <artica.devel@gmail.com>
Date: Tue, 6 Feb 2024 01:00:25 +0100
Subject: [PATCH 227/231] Auto-updated build strings.

---
 pandora_agents/unix/DEBIAN/control                    | 2 +-
 pandora_agents/unix/DEBIAN/make_deb_package.sh        | 2 +-
 pandora_agents/unix/pandora_agent                     | 2 +-
 pandora_agents/unix/pandora_agent.redhat.spec         | 2 +-
 pandora_agents/unix/pandora_agent.redhat_bin.el8.spec | 2 +-
 pandora_agents/unix/pandora_agent.redhat_bin.el9.spec | 2 +-
 pandora_agents/unix/pandora_agent.redhat_bin.spec     | 2 +-
 pandora_agents/unix/pandora_agent.spec                | 2 +-
 pandora_agents/unix/pandora_agent_installer           | 2 +-
 pandora_agents/win32/installer/pandora.mpi            | 2 +-
 pandora_agents/win32/pandora.cc                       | 2 +-
 pandora_agents/win32/versioninfo.rc                   | 2 +-
 pandora_console/DEBIAN/control                        | 2 +-
 pandora_console/DEBIAN/make_deb_package.sh            | 2 +-
 pandora_console/include/config_process.php            | 2 +-
 pandora_console/install.php                           | 2 +-
 pandora_console/pandora_console.redhat.spec           | 2 +-
 pandora_console/pandora_console.rhel7.spec            | 2 +-
 pandora_console/pandora_console.spec                  | 2 +-
 pandora_server/DEBIAN/control                         | 2 +-
 pandora_server/DEBIAN/make_deb_package.sh             | 2 +-
 pandora_server/lib/PandoraFMS/Config.pm               | 2 +-
 pandora_server/lib/PandoraFMS/PluginTools.pm          | 2 +-
 pandora_server/pandora_server.redhat.spec             | 2 +-
 pandora_server/pandora_server.spec                    | 2 +-
 pandora_server/pandora_server_installer               | 2 +-
 pandora_server/util/pandora_db.pl                     | 2 +-
 pandora_server/util/pandora_manage.pl                 | 2 +-
 28 files changed, 28 insertions(+), 28 deletions(-)

diff --git a/pandora_agents/unix/DEBIAN/control b/pandora_agents/unix/DEBIAN/control
index 84a05c32a5..92e8734a32 100644
--- a/pandora_agents/unix/DEBIAN/control
+++ b/pandora_agents/unix/DEBIAN/control
@@ -1,5 +1,5 @@
 package: pandorafms-agent-unix
-Version: 7.0NG.775-240205
+Version: 7.0NG.775-240206
 Architecture: all
 Priority: optional
 Section: admin
diff --git a/pandora_agents/unix/DEBIAN/make_deb_package.sh b/pandora_agents/unix/DEBIAN/make_deb_package.sh
index 27fab585af..738dd64358 100644
--- a/pandora_agents/unix/DEBIAN/make_deb_package.sh
+++ b/pandora_agents/unix/DEBIAN/make_deb_package.sh
@@ -14,7 +14,7 @@
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 # GNU General Public License for more details.
 
-pandora_version="7.0NG.775-240205"
+pandora_version="7.0NG.775-240206"
 
 echo "Test if you has the tools for to make the packages."
 whereis dpkg-deb | cut -d":" -f2 | grep dpkg-deb > /dev/null
diff --git a/pandora_agents/unix/pandora_agent b/pandora_agents/unix/pandora_agent
index 129151ca0f..92a66e7771 100755
--- a/pandora_agents/unix/pandora_agent
+++ b/pandora_agents/unix/pandora_agent
@@ -1039,7 +1039,7 @@ my $Sem = undef;
 my $ThreadSem = undef;
 
 use constant AGENT_VERSION => '7.0NG.775';
-use constant AGENT_BUILD => '240126';
+use constant AGENT_BUILD => '240206';
 
 # Agent log default file size maximum and instances
 use constant DEFAULT_MAX_LOG_SIZE => 600000;
diff --git a/pandora_agents/unix/pandora_agent.redhat.spec b/pandora_agents/unix/pandora_agent.redhat.spec
index da53dbfb8c..121b7808f7 100644
--- a/pandora_agents/unix/pandora_agent.redhat.spec
+++ b/pandora_agents/unix/pandora_agent.redhat.spec
@@ -4,7 +4,7 @@
 %global __os_install_post %{nil}
 %define name        pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240205
+%define release     240206
 
 Summary:            Pandora FMS Linux agent, PERL version
 Name:               %{name}
diff --git a/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec b/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec
index ec0ce5c951..d8720c7d60 100644
--- a/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec
+++ b/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec
@@ -5,7 +5,7 @@
 %define name        pandorafms_agent_linux_bin
 %define source_name pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240205
+%define release     240206
 %define debug_package %{nil}
 
 Summary:            Pandora FMS Linux agent, binary version
diff --git a/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec b/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec
index f83e8f610b..a4cf082998 100644
--- a/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec
+++ b/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec
@@ -5,7 +5,7 @@
 %define name        pandorafms_agent_linux_bin
 %define source_name pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240205
+%define release     240206
 %define debug_package %{nil}
 
 Summary:            Pandora FMS Linux agent, binary version
diff --git a/pandora_agents/unix/pandora_agent.redhat_bin.spec b/pandora_agents/unix/pandora_agent.redhat_bin.spec
index fa35c6ef76..d63f607f95 100644
--- a/pandora_agents/unix/pandora_agent.redhat_bin.spec
+++ b/pandora_agents/unix/pandora_agent.redhat_bin.spec
@@ -5,7 +5,7 @@
 %define name        pandorafms_agent_linux_bin
 %define source_name pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240205
+%define release     240206
 
 Summary:            Pandora FMS Linux agent, binary version
 Name:               %{name}
diff --git a/pandora_agents/unix/pandora_agent.spec b/pandora_agents/unix/pandora_agent.spec
index 28f1955691..c8f4533848 100644
--- a/pandora_agents/unix/pandora_agent.spec
+++ b/pandora_agents/unix/pandora_agent.spec
@@ -4,7 +4,7 @@
 %global __os_install_post %{nil}
 %define name        pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240205
+%define release     240206
 
 Summary:            Pandora FMS Linux agent, PERL version
 Name:               %{name}
diff --git a/pandora_agents/unix/pandora_agent_installer b/pandora_agents/unix/pandora_agent_installer
index 9afdcb76ef..93c45c81bd 100755
--- a/pandora_agents/unix/pandora_agent_installer
+++ b/pandora_agents/unix/pandora_agent_installer
@@ -10,7 +10,7 @@
 # **********************************************************************
 
 PI_VERSION="7.0NG.775"
-PI_BUILD="240205"
+PI_BUILD="240206"
 OS_NAME=`uname -s`
 
 FORCE=0
diff --git a/pandora_agents/win32/installer/pandora.mpi b/pandora_agents/win32/installer/pandora.mpi
index 65eb14e1c0..ac7a06c6c3 100644
--- a/pandora_agents/win32/installer/pandora.mpi
+++ b/pandora_agents/win32/installer/pandora.mpi
@@ -186,7 +186,7 @@ UpgradeApplicationID
 {}
 
 Version
-{240205}
+{240206}
 
 ViewReadme
 {Yes}
diff --git a/pandora_agents/win32/pandora.cc b/pandora_agents/win32/pandora.cc
index da37bd947d..c1f50c66ec 100644
--- a/pandora_agents/win32/pandora.cc
+++ b/pandora_agents/win32/pandora.cc
@@ -30,7 +30,7 @@ using namespace Pandora;
 using namespace Pandora_Strutils;
 
 #define PATH_SIZE    _MAX_PATH+1
-#define PANDORA_VERSION ("7.0NG.775 Build 240205")
+#define PANDORA_VERSION ("7.0NG.775 Build 240206")
 
 string pandora_path;
 string pandora_dir;
diff --git a/pandora_agents/win32/versioninfo.rc b/pandora_agents/win32/versioninfo.rc
index 85fa9ba06c..09faeae8b7 100644
--- a/pandora_agents/win32/versioninfo.rc
+++ b/pandora_agents/win32/versioninfo.rc
@@ -11,7 +11,7 @@ BEGIN
       VALUE "LegalCopyright", "Pandora FMS"
       VALUE "OriginalFilename", "PandoraAgent.exe"
       VALUE "ProductName", "Pandora FMS Windows Agent"
-      VALUE "ProductVersion", "(7.0NG.775(Build 240205))"
+      VALUE "ProductVersion", "(7.0NG.775(Build 240206))"
       VALUE "FileVersion", "1.0.0.0"
     END
   END
diff --git a/pandora_console/DEBIAN/control b/pandora_console/DEBIAN/control
index 8f91474f4c..8d272f6e67 100644
--- a/pandora_console/DEBIAN/control
+++ b/pandora_console/DEBIAN/control
@@ -1,5 +1,5 @@
 package: pandorafms-console
-Version: 7.0NG.775-240205
+Version: 7.0NG.775-240206
 Architecture: all
 Priority: optional
 Section: admin
diff --git a/pandora_console/DEBIAN/make_deb_package.sh b/pandora_console/DEBIAN/make_deb_package.sh
index 38ecdae5ba..7c15a6b8d3 100644
--- a/pandora_console/DEBIAN/make_deb_package.sh
+++ b/pandora_console/DEBIAN/make_deb_package.sh
@@ -14,7 +14,7 @@
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 # GNU General Public License for more details.
 
-pandora_version="7.0NG.775-240205"
+pandora_version="7.0NG.775-240206"
 
 package_pear=0
 package_pandora=1
diff --git a/pandora_console/include/config_process.php b/pandora_console/include/config_process.php
index 171156b287..534a6e2b3e 100644
--- a/pandora_console/include/config_process.php
+++ b/pandora_console/include/config_process.php
@@ -20,7 +20,7 @@
 /**
  * Pandora build version and version
  */
-$build_version = 'PC240205';
+$build_version = 'PC240206';
 $pandora_version = 'v7.0NG.775';
 
 // Do not overwrite default timezone set if defined.
diff --git a/pandora_console/install.php b/pandora_console/install.php
index cda7eb03b6..d9f4e9c438 100644
--- a/pandora_console/install.php
+++ b/pandora_console/install.php
@@ -131,7 +131,7 @@
         <div style='padding-bottom: 50px'>
             <?php
             $version = '7.0NG.775';
-            $build = '240205';
+            $build = '240206';
             $banner = "v$version Build $build";
             error_reporting(0);
 
diff --git a/pandora_console/pandora_console.redhat.spec b/pandora_console/pandora_console.redhat.spec
index a778726989..de1fabd5c9 100644
--- a/pandora_console/pandora_console.redhat.spec
+++ b/pandora_console/pandora_console.redhat.spec
@@ -6,7 +6,7 @@
 %define debug_package %{nil}
 %define name        pandorafms_console
 %define version     7.0NG.775
-%define release     240205
+%define release     240206
 
 # User and Group under which Apache is running
 %define httpd_name  httpd
diff --git a/pandora_console/pandora_console.rhel7.spec b/pandora_console/pandora_console.rhel7.spec
index 3be29ff245..e38666bfdc 100644
--- a/pandora_console/pandora_console.rhel7.spec
+++ b/pandora_console/pandora_console.rhel7.spec
@@ -6,7 +6,7 @@
 %define debug_package %{nil}
 %define name        pandorafms_console
 %define version     7.0NG.775
-%define release     240205
+%define release     240206
 
 # User and Group under which Apache is running
 %define httpd_name  httpd
diff --git a/pandora_console/pandora_console.spec b/pandora_console/pandora_console.spec
index c286afef79..e5347de0cd 100644
--- a/pandora_console/pandora_console.spec
+++ b/pandora_console/pandora_console.spec
@@ -3,7 +3,7 @@
 #
 %define name        pandorafms_console
 %define version     7.0NG.775
-%define release     240205
+%define release     240206
 %define httpd_name      httpd
 # User and Group under which Apache is running
 %define httpd_name  apache2
diff --git a/pandora_server/DEBIAN/control b/pandora_server/DEBIAN/control
index 3dcdeea950..4da3f5cd34 100644
--- a/pandora_server/DEBIAN/control
+++ b/pandora_server/DEBIAN/control
@@ -1,5 +1,5 @@
 package: pandorafms-server
-Version: 7.0NG.775-240205
+Version: 7.0NG.775-240206
 Architecture: all
 Priority: optional
 Section: admin
diff --git a/pandora_server/DEBIAN/make_deb_package.sh b/pandora_server/DEBIAN/make_deb_package.sh
index e3697ea3b2..6614fce58b 100644
--- a/pandora_server/DEBIAN/make_deb_package.sh
+++ b/pandora_server/DEBIAN/make_deb_package.sh
@@ -14,7 +14,7 @@
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 # GNU General Public License for more details.
 
-pandora_version="7.0NG.775-240205"
+pandora_version="7.0NG.775-240206"
 
 package_cpan=0
 package_pandora=1
diff --git a/pandora_server/lib/PandoraFMS/Config.pm b/pandora_server/lib/PandoraFMS/Config.pm
index a451d76bc1..11397d77a4 100644
--- a/pandora_server/lib/PandoraFMS/Config.pm
+++ b/pandora_server/lib/PandoraFMS/Config.pm
@@ -46,7 +46,7 @@ our @EXPORT = qw(
 
 # version: Defines actual version of Pandora Server for this module only
 my $pandora_version = "7.0NG.775";
-my $pandora_build = "240205";
+my $pandora_build = "240206";
 our $VERSION = $pandora_version." ".$pandora_build;
 
 # Setup hash
diff --git a/pandora_server/lib/PandoraFMS/PluginTools.pm b/pandora_server/lib/PandoraFMS/PluginTools.pm
index 53c7561b69..390c1d422c 100644
--- a/pandora_server/lib/PandoraFMS/PluginTools.pm
+++ b/pandora_server/lib/PandoraFMS/PluginTools.pm
@@ -34,7 +34,7 @@ our @ISA = qw(Exporter);
 
 # version: Defines actual version of Pandora Server for this module only
 my $pandora_version = "7.0NG.775";
-my $pandora_build = "240205";
+my $pandora_build = "240206";
 our $VERSION = $pandora_version." ".$pandora_build;
 
 our %EXPORT_TAGS = ( 'all' => [ qw() ] );
diff --git a/pandora_server/pandora_server.redhat.spec b/pandora_server/pandora_server.redhat.spec
index 24e400c112..d85e93fef9 100644
--- a/pandora_server/pandora_server.redhat.spec
+++ b/pandora_server/pandora_server.redhat.spec
@@ -7,7 +7,7 @@
 %define debug_package %{nil}
 %define name        pandorafms_server
 %define version     7.0NG.775
-%define release     240205
+%define release     240206
 
 Summary:            Pandora FMS Server
 Name:               %{name}
diff --git a/pandora_server/pandora_server.spec b/pandora_server/pandora_server.spec
index a560bbde3e..077f7f18e7 100644
--- a/pandora_server/pandora_server.spec
+++ b/pandora_server/pandora_server.spec
@@ -4,7 +4,7 @@
 %global __os_install_post %{nil}
 %define name        pandorafms_server
 %define version     7.0NG.775
-%define release     240205
+%define release     240206
 
 Summary:            Pandora FMS Server
 Name:               %{name}
diff --git a/pandora_server/pandora_server_installer b/pandora_server/pandora_server_installer
index 7a7158534a..08c6a22142 100755
--- a/pandora_server/pandora_server_installer
+++ b/pandora_server/pandora_server_installer
@@ -9,7 +9,7 @@
 # **********************************************************************
 
 PI_VERSION="7.0NG.775"
-PI_BUILD="240205"
+PI_BUILD="240206"
 
 MODE=$1
 if [ $# -gt 1 ]; then
diff --git a/pandora_server/util/pandora_db.pl b/pandora_server/util/pandora_db.pl
index bd25b9ad98..af2a34805e 100755
--- a/pandora_server/util/pandora_db.pl
+++ b/pandora_server/util/pandora_db.pl
@@ -38,7 +38,7 @@ use PandoraFMS::Config;
 use PandoraFMS::DB;
 
 # version: define current version
-my $version = "7.0NG.775 Build 240205";
+my $version = "7.0NG.775 Build 240206";
 
 # Pandora server configuration
 my %conf;
diff --git a/pandora_server/util/pandora_manage.pl b/pandora_server/util/pandora_manage.pl
index 76154a1097..e7280ee070 100755
--- a/pandora_server/util/pandora_manage.pl
+++ b/pandora_server/util/pandora_manage.pl
@@ -36,7 +36,7 @@ use Encode::Locale;
 Encode::Locale::decode_argv;
 
 # version: define current version
-my $version = "7.0NG.775 Build 240205";
+my $version = "7.0NG.775 Build 240206";
 
 # save program name for logging
 my $progname = basename($0);

From e402f713c7636ea1f76eff10348567ee6283f685 Mon Sep 17 00:00:00 2001
From: Jonathan <jonathan.leon@pandorafms.com>
Date: Tue, 6 Feb 2024 11:35:28 +0100
Subject: [PATCH 228/231] #12845 fix play image

---
 pandora_console/include/styles/events.css | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/pandora_console/include/styles/events.css b/pandora_console/include/styles/events.css
index ea31dfeecc..c3c6f73f5d 100644
--- a/pandora_console/include/styles/events.css
+++ b/pandora_console/include/styles/events.css
@@ -585,3 +585,7 @@ div.container-filter-buttons {
     margin-right: 10px !important;
   }
 }
+
+#button-start-search {
+  width: 115px;
+}

From 644308db4f42f2c9098478e25e1399894d25afe4 Mon Sep 17 00:00:00 2001
From: Jonathan <jonathan.leon@pandorafms.com>
Date: Tue, 6 Feb 2024 14:34:34 +0100
Subject: [PATCH 229/231] #12845 fix style hover

---
 pandora_console/include/ajax/events.php           | 15 ++++++---------
 .../include/javascript/pandora_events.js          |  8 ++++++++
 pandora_console/include/styles/pandora.css        |  4 ++--
 pandora_console/include/styles/sound_events.css   | 12 ++----------
 4 files changed, 18 insertions(+), 21 deletions(-)

diff --git a/pandora_console/include/ajax/events.php b/pandora_console/include/ajax/events.php
index 851a22040b..72e77e73dc 100644
--- a/pandora_console/include/ajax/events.php
+++ b/pandora_console/include/ajax/events.php
@@ -2542,15 +2542,12 @@ if ($drawConsoleSound === true) {
         $output .= '<div id="progressbar_time"></div>';
         $output .= '<div class="buttons-sound-modal">';
             $output .= '<div class="container-button-play">';
-            $output .= html_print_input(
-                [
-                    'label'      => __('Start'),
-                    'type'       => 'button',
-                    'name'       => 'start-search',
-                    'attributes' => [ 'class' => 'play secondary' ],
-                    'return'     => true,
-                ],
-                'div',
+            $output .= html_print_button(
+                __('Start'),
+                'start-search',
+                false,
+                '',
+                ['icon' => 'play'],
                 true
             );
             $output .= '</div>';
diff --git a/pandora_console/include/javascript/pandora_events.js b/pandora_console/include/javascript/pandora_events.js
index fc6485a4fe..369ecff1f3 100644
--- a/pandora_console/include/javascript/pandora_events.js
+++ b/pandora_console/include/javascript/pandora_events.js
@@ -1261,6 +1261,10 @@ function action_events_sound(mode, settings) {
     $("#button-start-search")
       .removeClass("play")
       .addClass("stop");
+    $("#button-start-search")
+      .find("div")
+      .removeClass("play")
+      .addClass("stop");
     // Change value button.
     $("#button-start-search").val(settings.stop);
     $("#button-start-search > span").text(settings.stop);
@@ -1277,6 +1281,10 @@ function action_events_sound(mode, settings) {
     $("#button-start-search")
       .removeClass("stop")
       .addClass("play");
+    $("#button-start-search")
+      .find("div")
+      .removeClass("stop")
+      .addClass("play");
     // Change value button.
     $("#button-start-search").val(settings.start);
     $("#button-start-search > span").text(settings.start);
diff --git a/pandora_console/include/styles/pandora.css b/pandora_console/include/styles/pandora.css
index 1453289d08..a1f76eef71 100644
--- a/pandora_console/include/styles/pandora.css
+++ b/pandora_console/include/styles/pandora.css
@@ -12819,9 +12819,9 @@ div.agents_custom_fields #datatables_wrapper div.bottom {
 
 .actions-sound-modal .buttons-sound-modal button.play,
 .actions-sound-modal .buttons-sound-modal input[type="button"].play {
-  background: url(../../images/play-white.png), transparent !important;
+  /*background: url(../../images/play-white.png), transparent !important;
   background-repeat: no-repeat !important;
-  background-position: 82px 14px !important;
+  background-position: 82px 14px !important;*/
   color: #ffffff;
   padding-left: 20px;
   border: 0;
diff --git a/pandora_console/include/styles/sound_events.css b/pandora_console/include/styles/sound_events.css
index a572c219f3..a8068a8308 100644
--- a/pandora_console/include/styles/sound_events.css
+++ b/pandora_console/include/styles/sound_events.css
@@ -1,9 +1,6 @@
 /*
  * Css Modal Sound events.
  */
-div.container-button-play > button#button-start-search {
-  transition: none !important;
-}
 .wizard {
   text-align: left;
 }
@@ -217,9 +214,9 @@ div.container-button-play > button#button-start-search {
 
 .actions-sound-modal .buttons-sound-modal button.play,
 .actions-sound-modal .buttons-sound-modal input[type="button"].play {
-  background: url(../../images/play-white.png), transparent !important;
+  /*background: url(../../images/play-white.png), transparent !important;
   background-repeat: no-repeat !important;
-  background-position: 82px 14px !important;
+  background-position: 82px 14px !important;*/
   color: #ffffff !important;
   padding-left: 20px;
   border: 0;
@@ -263,11 +260,6 @@ button#button-no-alerts.silence-alerts:hover {
   background-position: 138px 4px !important;
 }
 
-.actions-sound-modal .container-button-play {
-  background-color: var(--primary-color);
-  border-radius: 8px;
-}
-
 .actions-sound-modal .container-button-alert.fired {
   background: #ee2132;
   border-radius: 8px;

From 4912a4051f1f3d50a84028dab53e86ecf0d9dabd Mon Sep 17 00:00:00 2001
From: artica <artica.devel@gmail.com>
Date: Wed, 7 Feb 2024 01:00:50 +0100
Subject: [PATCH 230/231] Auto-updated build strings.

---
 pandora_agents/unix/DEBIAN/control                    | 2 +-
 pandora_agents/unix/DEBIAN/make_deb_package.sh        | 2 +-
 pandora_agents/unix/pandora_agent                     | 2 +-
 pandora_agents/unix/pandora_agent.redhat.spec         | 2 +-
 pandora_agents/unix/pandora_agent.redhat_bin.el8.spec | 2 +-
 pandora_agents/unix/pandora_agent.redhat_bin.el9.spec | 2 +-
 pandora_agents/unix/pandora_agent.redhat_bin.spec     | 2 +-
 pandora_agents/unix/pandora_agent.spec                | 2 +-
 pandora_agents/unix/pandora_agent_installer           | 2 +-
 pandora_agents/win32/installer/pandora.mpi            | 2 +-
 pandora_agents/win32/pandora.cc                       | 2 +-
 pandora_agents/win32/versioninfo.rc                   | 2 +-
 pandora_console/DEBIAN/control                        | 2 +-
 pandora_console/DEBIAN/make_deb_package.sh            | 2 +-
 pandora_console/include/config_process.php            | 2 +-
 pandora_console/install.php                           | 2 +-
 pandora_console/pandora_console.redhat.spec           | 2 +-
 pandora_console/pandora_console.rhel7.spec            | 2 +-
 pandora_console/pandora_console.spec                  | 2 +-
 pandora_server/DEBIAN/control                         | 2 +-
 pandora_server/DEBIAN/make_deb_package.sh             | 2 +-
 pandora_server/lib/PandoraFMS/Config.pm               | 2 +-
 pandora_server/lib/PandoraFMS/PluginTools.pm          | 2 +-
 pandora_server/pandora_server.redhat.spec             | 2 +-
 pandora_server/pandora_server.spec                    | 2 +-
 pandora_server/pandora_server_installer               | 2 +-
 pandora_server/util/pandora_db.pl                     | 2 +-
 pandora_server/util/pandora_manage.pl                 | 2 +-
 28 files changed, 28 insertions(+), 28 deletions(-)

diff --git a/pandora_agents/unix/DEBIAN/control b/pandora_agents/unix/DEBIAN/control
index 92e8734a32..ee0f6d119d 100644
--- a/pandora_agents/unix/DEBIAN/control
+++ b/pandora_agents/unix/DEBIAN/control
@@ -1,5 +1,5 @@
 package: pandorafms-agent-unix
-Version: 7.0NG.775-240206
+Version: 7.0NG.775-240207
 Architecture: all
 Priority: optional
 Section: admin
diff --git a/pandora_agents/unix/DEBIAN/make_deb_package.sh b/pandora_agents/unix/DEBIAN/make_deb_package.sh
index 738dd64358..157318b744 100644
--- a/pandora_agents/unix/DEBIAN/make_deb_package.sh
+++ b/pandora_agents/unix/DEBIAN/make_deb_package.sh
@@ -14,7 +14,7 @@
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 # GNU General Public License for more details.
 
-pandora_version="7.0NG.775-240206"
+pandora_version="7.0NG.775-240207"
 
 echo "Test if you has the tools for to make the packages."
 whereis dpkg-deb | cut -d":" -f2 | grep dpkg-deb > /dev/null
diff --git a/pandora_agents/unix/pandora_agent b/pandora_agents/unix/pandora_agent
index e23e9c1249..417ff01de6 100755
--- a/pandora_agents/unix/pandora_agent
+++ b/pandora_agents/unix/pandora_agent
@@ -1039,7 +1039,7 @@ my $Sem = undef;
 my $ThreadSem = undef;
 
 use constant AGENT_VERSION => '7.0NG.775';
-use constant AGENT_BUILD => '240206';
+use constant AGENT_BUILD => '240207';
 
 # Agent log default file size maximum and instances
 use constant DEFAULT_MAX_LOG_SIZE => 600000;
diff --git a/pandora_agents/unix/pandora_agent.redhat.spec b/pandora_agents/unix/pandora_agent.redhat.spec
index 121b7808f7..0daaad573f 100644
--- a/pandora_agents/unix/pandora_agent.redhat.spec
+++ b/pandora_agents/unix/pandora_agent.redhat.spec
@@ -4,7 +4,7 @@
 %global __os_install_post %{nil}
 %define name        pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240206
+%define release     240207
 
 Summary:            Pandora FMS Linux agent, PERL version
 Name:               %{name}
diff --git a/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec b/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec
index d8720c7d60..f17d3385b7 100644
--- a/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec
+++ b/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec
@@ -5,7 +5,7 @@
 %define name        pandorafms_agent_linux_bin
 %define source_name pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240206
+%define release     240207
 %define debug_package %{nil}
 
 Summary:            Pandora FMS Linux agent, binary version
diff --git a/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec b/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec
index a4cf082998..fd8eaa717c 100644
--- a/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec
+++ b/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec
@@ -5,7 +5,7 @@
 %define name        pandorafms_agent_linux_bin
 %define source_name pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240206
+%define release     240207
 %define debug_package %{nil}
 
 Summary:            Pandora FMS Linux agent, binary version
diff --git a/pandora_agents/unix/pandora_agent.redhat_bin.spec b/pandora_agents/unix/pandora_agent.redhat_bin.spec
index d63f607f95..77ffa9603e 100644
--- a/pandora_agents/unix/pandora_agent.redhat_bin.spec
+++ b/pandora_agents/unix/pandora_agent.redhat_bin.spec
@@ -5,7 +5,7 @@
 %define name        pandorafms_agent_linux_bin
 %define source_name pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240206
+%define release     240207
 
 Summary:            Pandora FMS Linux agent, binary version
 Name:               %{name}
diff --git a/pandora_agents/unix/pandora_agent.spec b/pandora_agents/unix/pandora_agent.spec
index c8f4533848..df8a8298ab 100644
--- a/pandora_agents/unix/pandora_agent.spec
+++ b/pandora_agents/unix/pandora_agent.spec
@@ -4,7 +4,7 @@
 %global __os_install_post %{nil}
 %define name        pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240206
+%define release     240207
 
 Summary:            Pandora FMS Linux agent, PERL version
 Name:               %{name}
diff --git a/pandora_agents/unix/pandora_agent_installer b/pandora_agents/unix/pandora_agent_installer
index 93c45c81bd..af838ca3e9 100755
--- a/pandora_agents/unix/pandora_agent_installer
+++ b/pandora_agents/unix/pandora_agent_installer
@@ -10,7 +10,7 @@
 # **********************************************************************
 
 PI_VERSION="7.0NG.775"
-PI_BUILD="240206"
+PI_BUILD="240207"
 OS_NAME=`uname -s`
 
 FORCE=0
diff --git a/pandora_agents/win32/installer/pandora.mpi b/pandora_agents/win32/installer/pandora.mpi
index ac7a06c6c3..20ceb59ecc 100644
--- a/pandora_agents/win32/installer/pandora.mpi
+++ b/pandora_agents/win32/installer/pandora.mpi
@@ -186,7 +186,7 @@ UpgradeApplicationID
 {}
 
 Version
-{240206}
+{240207}
 
 ViewReadme
 {Yes}
diff --git a/pandora_agents/win32/pandora.cc b/pandora_agents/win32/pandora.cc
index c1f50c66ec..5d63022c43 100644
--- a/pandora_agents/win32/pandora.cc
+++ b/pandora_agents/win32/pandora.cc
@@ -30,7 +30,7 @@ using namespace Pandora;
 using namespace Pandora_Strutils;
 
 #define PATH_SIZE    _MAX_PATH+1
-#define PANDORA_VERSION ("7.0NG.775 Build 240206")
+#define PANDORA_VERSION ("7.0NG.775 Build 240207")
 
 string pandora_path;
 string pandora_dir;
diff --git a/pandora_agents/win32/versioninfo.rc b/pandora_agents/win32/versioninfo.rc
index 09faeae8b7..f4a25d4253 100644
--- a/pandora_agents/win32/versioninfo.rc
+++ b/pandora_agents/win32/versioninfo.rc
@@ -11,7 +11,7 @@ BEGIN
       VALUE "LegalCopyright", "Pandora FMS"
       VALUE "OriginalFilename", "PandoraAgent.exe"
       VALUE "ProductName", "Pandora FMS Windows Agent"
-      VALUE "ProductVersion", "(7.0NG.775(Build 240206))"
+      VALUE "ProductVersion", "(7.0NG.775(Build 240207))"
       VALUE "FileVersion", "1.0.0.0"
     END
   END
diff --git a/pandora_console/DEBIAN/control b/pandora_console/DEBIAN/control
index 8d272f6e67..6db9add67d 100644
--- a/pandora_console/DEBIAN/control
+++ b/pandora_console/DEBIAN/control
@@ -1,5 +1,5 @@
 package: pandorafms-console
-Version: 7.0NG.775-240206
+Version: 7.0NG.775-240207
 Architecture: all
 Priority: optional
 Section: admin
diff --git a/pandora_console/DEBIAN/make_deb_package.sh b/pandora_console/DEBIAN/make_deb_package.sh
index 7c15a6b8d3..da77fff309 100644
--- a/pandora_console/DEBIAN/make_deb_package.sh
+++ b/pandora_console/DEBIAN/make_deb_package.sh
@@ -14,7 +14,7 @@
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 # GNU General Public License for more details.
 
-pandora_version="7.0NG.775-240206"
+pandora_version="7.0NG.775-240207"
 
 package_pear=0
 package_pandora=1
diff --git a/pandora_console/include/config_process.php b/pandora_console/include/config_process.php
index 534a6e2b3e..265c84b75c 100644
--- a/pandora_console/include/config_process.php
+++ b/pandora_console/include/config_process.php
@@ -20,7 +20,7 @@
 /**
  * Pandora build version and version
  */
-$build_version = 'PC240206';
+$build_version = 'PC240207';
 $pandora_version = 'v7.0NG.775';
 
 // Do not overwrite default timezone set if defined.
diff --git a/pandora_console/install.php b/pandora_console/install.php
index d9f4e9c438..5b2aec429c 100644
--- a/pandora_console/install.php
+++ b/pandora_console/install.php
@@ -131,7 +131,7 @@
         <div style='padding-bottom: 50px'>
             <?php
             $version = '7.0NG.775';
-            $build = '240206';
+            $build = '240207';
             $banner = "v$version Build $build";
             error_reporting(0);
 
diff --git a/pandora_console/pandora_console.redhat.spec b/pandora_console/pandora_console.redhat.spec
index de1fabd5c9..90434e837f 100644
--- a/pandora_console/pandora_console.redhat.spec
+++ b/pandora_console/pandora_console.redhat.spec
@@ -6,7 +6,7 @@
 %define debug_package %{nil}
 %define name        pandorafms_console
 %define version     7.0NG.775
-%define release     240206
+%define release     240207
 
 # User and Group under which Apache is running
 %define httpd_name  httpd
diff --git a/pandora_console/pandora_console.rhel7.spec b/pandora_console/pandora_console.rhel7.spec
index e38666bfdc..04c2c438d3 100644
--- a/pandora_console/pandora_console.rhel7.spec
+++ b/pandora_console/pandora_console.rhel7.spec
@@ -6,7 +6,7 @@
 %define debug_package %{nil}
 %define name        pandorafms_console
 %define version     7.0NG.775
-%define release     240206
+%define release     240207
 
 # User and Group under which Apache is running
 %define httpd_name  httpd
diff --git a/pandora_console/pandora_console.spec b/pandora_console/pandora_console.spec
index e5347de0cd..59e23165c5 100644
--- a/pandora_console/pandora_console.spec
+++ b/pandora_console/pandora_console.spec
@@ -3,7 +3,7 @@
 #
 %define name        pandorafms_console
 %define version     7.0NG.775
-%define release     240206
+%define release     240207
 %define httpd_name      httpd
 # User and Group under which Apache is running
 %define httpd_name  apache2
diff --git a/pandora_server/DEBIAN/control b/pandora_server/DEBIAN/control
index 4da3f5cd34..3ca2338b75 100644
--- a/pandora_server/DEBIAN/control
+++ b/pandora_server/DEBIAN/control
@@ -1,5 +1,5 @@
 package: pandorafms-server
-Version: 7.0NG.775-240206
+Version: 7.0NG.775-240207
 Architecture: all
 Priority: optional
 Section: admin
diff --git a/pandora_server/DEBIAN/make_deb_package.sh b/pandora_server/DEBIAN/make_deb_package.sh
index 6614fce58b..0166359a3e 100644
--- a/pandora_server/DEBIAN/make_deb_package.sh
+++ b/pandora_server/DEBIAN/make_deb_package.sh
@@ -14,7 +14,7 @@
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 # GNU General Public License for more details.
 
-pandora_version="7.0NG.775-240206"
+pandora_version="7.0NG.775-240207"
 
 package_cpan=0
 package_pandora=1
diff --git a/pandora_server/lib/PandoraFMS/Config.pm b/pandora_server/lib/PandoraFMS/Config.pm
index 11397d77a4..23c6890b4d 100644
--- a/pandora_server/lib/PandoraFMS/Config.pm
+++ b/pandora_server/lib/PandoraFMS/Config.pm
@@ -46,7 +46,7 @@ our @EXPORT = qw(
 
 # version: Defines actual version of Pandora Server for this module only
 my $pandora_version = "7.0NG.775";
-my $pandora_build = "240206";
+my $pandora_build = "240207";
 our $VERSION = $pandora_version." ".$pandora_build;
 
 # Setup hash
diff --git a/pandora_server/lib/PandoraFMS/PluginTools.pm b/pandora_server/lib/PandoraFMS/PluginTools.pm
index 390c1d422c..09d9487a56 100644
--- a/pandora_server/lib/PandoraFMS/PluginTools.pm
+++ b/pandora_server/lib/PandoraFMS/PluginTools.pm
@@ -34,7 +34,7 @@ our @ISA = qw(Exporter);
 
 # version: Defines actual version of Pandora Server for this module only
 my $pandora_version = "7.0NG.775";
-my $pandora_build = "240206";
+my $pandora_build = "240207";
 our $VERSION = $pandora_version." ".$pandora_build;
 
 our %EXPORT_TAGS = ( 'all' => [ qw() ] );
diff --git a/pandora_server/pandora_server.redhat.spec b/pandora_server/pandora_server.redhat.spec
index d85e93fef9..c054404add 100644
--- a/pandora_server/pandora_server.redhat.spec
+++ b/pandora_server/pandora_server.redhat.spec
@@ -7,7 +7,7 @@
 %define debug_package %{nil}
 %define name        pandorafms_server
 %define version     7.0NG.775
-%define release     240206
+%define release     240207
 
 Summary:            Pandora FMS Server
 Name:               %{name}
diff --git a/pandora_server/pandora_server.spec b/pandora_server/pandora_server.spec
index 077f7f18e7..af9312b5b4 100644
--- a/pandora_server/pandora_server.spec
+++ b/pandora_server/pandora_server.spec
@@ -4,7 +4,7 @@
 %global __os_install_post %{nil}
 %define name        pandorafms_server
 %define version     7.0NG.775
-%define release     240206
+%define release     240207
 
 Summary:            Pandora FMS Server
 Name:               %{name}
diff --git a/pandora_server/pandora_server_installer b/pandora_server/pandora_server_installer
index 08c6a22142..aaa17e341c 100755
--- a/pandora_server/pandora_server_installer
+++ b/pandora_server/pandora_server_installer
@@ -9,7 +9,7 @@
 # **********************************************************************
 
 PI_VERSION="7.0NG.775"
-PI_BUILD="240206"
+PI_BUILD="240207"
 
 MODE=$1
 if [ $# -gt 1 ]; then
diff --git a/pandora_server/util/pandora_db.pl b/pandora_server/util/pandora_db.pl
index af2a34805e..47e0213732 100755
--- a/pandora_server/util/pandora_db.pl
+++ b/pandora_server/util/pandora_db.pl
@@ -38,7 +38,7 @@ use PandoraFMS::Config;
 use PandoraFMS::DB;
 
 # version: define current version
-my $version = "7.0NG.775 Build 240206";
+my $version = "7.0NG.775 Build 240207";
 
 # Pandora server configuration
 my %conf;
diff --git a/pandora_server/util/pandora_manage.pl b/pandora_server/util/pandora_manage.pl
index e7280ee070..af8c48e0ad 100755
--- a/pandora_server/util/pandora_manage.pl
+++ b/pandora_server/util/pandora_manage.pl
@@ -36,7 +36,7 @@ use Encode::Locale;
 Encode::Locale::decode_argv;
 
 # version: define current version
-my $version = "7.0NG.775 Build 240206";
+my $version = "7.0NG.775 Build 240207";
 
 # save program name for logging
 my $progname = basename($0);

From 5acffa86d30034ec6e3dd7128c0f9d3d5af08d88 Mon Sep 17 00:00:00 2001
From: artica <artica.devel@gmail.com>
Date: Thu, 8 Feb 2024 01:00:04 +0100
Subject: [PATCH 231/231] Auto-updated build strings.

---
 pandora_agents/unix/DEBIAN/control                    | 2 +-
 pandora_agents/unix/DEBIAN/make_deb_package.sh        | 2 +-
 pandora_agents/unix/pandora_agent                     | 2 +-
 pandora_agents/unix/pandora_agent.redhat.spec         | 2 +-
 pandora_agents/unix/pandora_agent.redhat_bin.el8.spec | 2 +-
 pandora_agents/unix/pandora_agent.redhat_bin.el9.spec | 2 +-
 pandora_agents/unix/pandora_agent.redhat_bin.spec     | 2 +-
 pandora_agents/unix/pandora_agent.spec                | 2 +-
 pandora_agents/unix/pandora_agent_installer           | 2 +-
 pandora_agents/win32/installer/pandora.mpi            | 2 +-
 pandora_agents/win32/pandora.cc                       | 2 +-
 pandora_agents/win32/versioninfo.rc                   | 2 +-
 pandora_console/DEBIAN/control                        | 2 +-
 pandora_console/DEBIAN/make_deb_package.sh            | 2 +-
 pandora_console/include/config_process.php            | 2 +-
 pandora_console/install.php                           | 2 +-
 pandora_console/pandora_console.redhat.spec           | 2 +-
 pandora_console/pandora_console.rhel7.spec            | 2 +-
 pandora_console/pandora_console.spec                  | 2 +-
 pandora_server/DEBIAN/control                         | 2 +-
 pandora_server/DEBIAN/make_deb_package.sh             | 2 +-
 pandora_server/lib/PandoraFMS/Config.pm               | 2 +-
 pandora_server/lib/PandoraFMS/PluginTools.pm          | 2 +-
 pandora_server/pandora_server.redhat.spec             | 2 +-
 pandora_server/pandora_server.spec                    | 2 +-
 pandora_server/pandora_server_installer               | 2 +-
 pandora_server/util/pandora_db.pl                     | 2 +-
 pandora_server/util/pandora_manage.pl                 | 2 +-
 28 files changed, 28 insertions(+), 28 deletions(-)

diff --git a/pandora_agents/unix/DEBIAN/control b/pandora_agents/unix/DEBIAN/control
index ee0f6d119d..1287148b3e 100644
--- a/pandora_agents/unix/DEBIAN/control
+++ b/pandora_agents/unix/DEBIAN/control
@@ -1,5 +1,5 @@
 package: pandorafms-agent-unix
-Version: 7.0NG.775-240207
+Version: 7.0NG.775-240208
 Architecture: all
 Priority: optional
 Section: admin
diff --git a/pandora_agents/unix/DEBIAN/make_deb_package.sh b/pandora_agents/unix/DEBIAN/make_deb_package.sh
index 157318b744..61a0c0035c 100644
--- a/pandora_agents/unix/DEBIAN/make_deb_package.sh
+++ b/pandora_agents/unix/DEBIAN/make_deb_package.sh
@@ -14,7 +14,7 @@
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 # GNU General Public License for more details.
 
-pandora_version="7.0NG.775-240207"
+pandora_version="7.0NG.775-240208"
 
 echo "Test if you has the tools for to make the packages."
 whereis dpkg-deb | cut -d":" -f2 | grep dpkg-deb > /dev/null
diff --git a/pandora_agents/unix/pandora_agent b/pandora_agents/unix/pandora_agent
index 417ff01de6..d1bb48301f 100755
--- a/pandora_agents/unix/pandora_agent
+++ b/pandora_agents/unix/pandora_agent
@@ -1039,7 +1039,7 @@ my $Sem = undef;
 my $ThreadSem = undef;
 
 use constant AGENT_VERSION => '7.0NG.775';
-use constant AGENT_BUILD => '240207';
+use constant AGENT_BUILD => '240208';
 
 # Agent log default file size maximum and instances
 use constant DEFAULT_MAX_LOG_SIZE => 600000;
diff --git a/pandora_agents/unix/pandora_agent.redhat.spec b/pandora_agents/unix/pandora_agent.redhat.spec
index 0daaad573f..a7cd427ca0 100644
--- a/pandora_agents/unix/pandora_agent.redhat.spec
+++ b/pandora_agents/unix/pandora_agent.redhat.spec
@@ -4,7 +4,7 @@
 %global __os_install_post %{nil}
 %define name        pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240207
+%define release     240208
 
 Summary:            Pandora FMS Linux agent, PERL version
 Name:               %{name}
diff --git a/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec b/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec
index f17d3385b7..3d6d98c4d1 100644
--- a/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec
+++ b/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec
@@ -5,7 +5,7 @@
 %define name        pandorafms_agent_linux_bin
 %define source_name pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240207
+%define release     240208
 %define debug_package %{nil}
 
 Summary:            Pandora FMS Linux agent, binary version
diff --git a/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec b/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec
index fd8eaa717c..f78b231c24 100644
--- a/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec
+++ b/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec
@@ -5,7 +5,7 @@
 %define name        pandorafms_agent_linux_bin
 %define source_name pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240207
+%define release     240208
 %define debug_package %{nil}
 
 Summary:            Pandora FMS Linux agent, binary version
diff --git a/pandora_agents/unix/pandora_agent.redhat_bin.spec b/pandora_agents/unix/pandora_agent.redhat_bin.spec
index 77ffa9603e..47d7340d8c 100644
--- a/pandora_agents/unix/pandora_agent.redhat_bin.spec
+++ b/pandora_agents/unix/pandora_agent.redhat_bin.spec
@@ -5,7 +5,7 @@
 %define name        pandorafms_agent_linux_bin
 %define source_name pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240207
+%define release     240208
 
 Summary:            Pandora FMS Linux agent, binary version
 Name:               %{name}
diff --git a/pandora_agents/unix/pandora_agent.spec b/pandora_agents/unix/pandora_agent.spec
index df8a8298ab..d0526d36eb 100644
--- a/pandora_agents/unix/pandora_agent.spec
+++ b/pandora_agents/unix/pandora_agent.spec
@@ -4,7 +4,7 @@
 %global __os_install_post %{nil}
 %define name        pandorafms_agent_linux
 %define version     7.0NG.775
-%define release     240207
+%define release     240208
 
 Summary:            Pandora FMS Linux agent, PERL version
 Name:               %{name}
diff --git a/pandora_agents/unix/pandora_agent_installer b/pandora_agents/unix/pandora_agent_installer
index af838ca3e9..5d1d1cfe8a 100755
--- a/pandora_agents/unix/pandora_agent_installer
+++ b/pandora_agents/unix/pandora_agent_installer
@@ -10,7 +10,7 @@
 # **********************************************************************
 
 PI_VERSION="7.0NG.775"
-PI_BUILD="240207"
+PI_BUILD="240208"
 OS_NAME=`uname -s`
 
 FORCE=0
diff --git a/pandora_agents/win32/installer/pandora.mpi b/pandora_agents/win32/installer/pandora.mpi
index 20ceb59ecc..f284a8bf09 100644
--- a/pandora_agents/win32/installer/pandora.mpi
+++ b/pandora_agents/win32/installer/pandora.mpi
@@ -186,7 +186,7 @@ UpgradeApplicationID
 {}
 
 Version
-{240207}
+{240208}
 
 ViewReadme
 {Yes}
diff --git a/pandora_agents/win32/pandora.cc b/pandora_agents/win32/pandora.cc
index 5d63022c43..5a55cac837 100644
--- a/pandora_agents/win32/pandora.cc
+++ b/pandora_agents/win32/pandora.cc
@@ -30,7 +30,7 @@ using namespace Pandora;
 using namespace Pandora_Strutils;
 
 #define PATH_SIZE    _MAX_PATH+1
-#define PANDORA_VERSION ("7.0NG.775 Build 240207")
+#define PANDORA_VERSION ("7.0NG.775 Build 240208")
 
 string pandora_path;
 string pandora_dir;
diff --git a/pandora_agents/win32/versioninfo.rc b/pandora_agents/win32/versioninfo.rc
index f4a25d4253..76c9ee9077 100644
--- a/pandora_agents/win32/versioninfo.rc
+++ b/pandora_agents/win32/versioninfo.rc
@@ -11,7 +11,7 @@ BEGIN
       VALUE "LegalCopyright", "Pandora FMS"
       VALUE "OriginalFilename", "PandoraAgent.exe"
       VALUE "ProductName", "Pandora FMS Windows Agent"
-      VALUE "ProductVersion", "(7.0NG.775(Build 240207))"
+      VALUE "ProductVersion", "(7.0NG.775(Build 240208))"
       VALUE "FileVersion", "1.0.0.0"
     END
   END
diff --git a/pandora_console/DEBIAN/control b/pandora_console/DEBIAN/control
index 6db9add67d..e1fcf78907 100644
--- a/pandora_console/DEBIAN/control
+++ b/pandora_console/DEBIAN/control
@@ -1,5 +1,5 @@
 package: pandorafms-console
-Version: 7.0NG.775-240207
+Version: 7.0NG.775-240208
 Architecture: all
 Priority: optional
 Section: admin
diff --git a/pandora_console/DEBIAN/make_deb_package.sh b/pandora_console/DEBIAN/make_deb_package.sh
index da77fff309..29ad26f2cc 100644
--- a/pandora_console/DEBIAN/make_deb_package.sh
+++ b/pandora_console/DEBIAN/make_deb_package.sh
@@ -14,7 +14,7 @@
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 # GNU General Public License for more details.
 
-pandora_version="7.0NG.775-240207"
+pandora_version="7.0NG.775-240208"
 
 package_pear=0
 package_pandora=1
diff --git a/pandora_console/include/config_process.php b/pandora_console/include/config_process.php
index 265c84b75c..d140aa4382 100644
--- a/pandora_console/include/config_process.php
+++ b/pandora_console/include/config_process.php
@@ -20,7 +20,7 @@
 /**
  * Pandora build version and version
  */
-$build_version = 'PC240207';
+$build_version = 'PC240208';
 $pandora_version = 'v7.0NG.775';
 
 // Do not overwrite default timezone set if defined.
diff --git a/pandora_console/install.php b/pandora_console/install.php
index 5b2aec429c..23b9a357e8 100644
--- a/pandora_console/install.php
+++ b/pandora_console/install.php
@@ -131,7 +131,7 @@
         <div style='padding-bottom: 50px'>
             <?php
             $version = '7.0NG.775';
-            $build = '240207';
+            $build = '240208';
             $banner = "v$version Build $build";
             error_reporting(0);
 
diff --git a/pandora_console/pandora_console.redhat.spec b/pandora_console/pandora_console.redhat.spec
index 90434e837f..4afee07c45 100644
--- a/pandora_console/pandora_console.redhat.spec
+++ b/pandora_console/pandora_console.redhat.spec
@@ -6,7 +6,7 @@
 %define debug_package %{nil}
 %define name        pandorafms_console
 %define version     7.0NG.775
-%define release     240207
+%define release     240208
 
 # User and Group under which Apache is running
 %define httpd_name  httpd
diff --git a/pandora_console/pandora_console.rhel7.spec b/pandora_console/pandora_console.rhel7.spec
index 04c2c438d3..3dfcd5ae44 100644
--- a/pandora_console/pandora_console.rhel7.spec
+++ b/pandora_console/pandora_console.rhel7.spec
@@ -6,7 +6,7 @@
 %define debug_package %{nil}
 %define name        pandorafms_console
 %define version     7.0NG.775
-%define release     240207
+%define release     240208
 
 # User and Group under which Apache is running
 %define httpd_name  httpd
diff --git a/pandora_console/pandora_console.spec b/pandora_console/pandora_console.spec
index 59e23165c5..675533bcba 100644
--- a/pandora_console/pandora_console.spec
+++ b/pandora_console/pandora_console.spec
@@ -3,7 +3,7 @@
 #
 %define name        pandorafms_console
 %define version     7.0NG.775
-%define release     240207
+%define release     240208
 %define httpd_name      httpd
 # User and Group under which Apache is running
 %define httpd_name  apache2
diff --git a/pandora_server/DEBIAN/control b/pandora_server/DEBIAN/control
index 3ca2338b75..52fee3272a 100644
--- a/pandora_server/DEBIAN/control
+++ b/pandora_server/DEBIAN/control
@@ -1,5 +1,5 @@
 package: pandorafms-server
-Version: 7.0NG.775-240207
+Version: 7.0NG.775-240208
 Architecture: all
 Priority: optional
 Section: admin
diff --git a/pandora_server/DEBIAN/make_deb_package.sh b/pandora_server/DEBIAN/make_deb_package.sh
index 0166359a3e..e33b1bb5ba 100644
--- a/pandora_server/DEBIAN/make_deb_package.sh
+++ b/pandora_server/DEBIAN/make_deb_package.sh
@@ -14,7 +14,7 @@
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 # GNU General Public License for more details.
 
-pandora_version="7.0NG.775-240207"
+pandora_version="7.0NG.775-240208"
 
 package_cpan=0
 package_pandora=1
diff --git a/pandora_server/lib/PandoraFMS/Config.pm b/pandora_server/lib/PandoraFMS/Config.pm
index 23c6890b4d..65146426f6 100644
--- a/pandora_server/lib/PandoraFMS/Config.pm
+++ b/pandora_server/lib/PandoraFMS/Config.pm
@@ -46,7 +46,7 @@ our @EXPORT = qw(
 
 # version: Defines actual version of Pandora Server for this module only
 my $pandora_version = "7.0NG.775";
-my $pandora_build = "240207";
+my $pandora_build = "240208";
 our $VERSION = $pandora_version." ".$pandora_build;
 
 # Setup hash
diff --git a/pandora_server/lib/PandoraFMS/PluginTools.pm b/pandora_server/lib/PandoraFMS/PluginTools.pm
index 09d9487a56..8a70a67a25 100644
--- a/pandora_server/lib/PandoraFMS/PluginTools.pm
+++ b/pandora_server/lib/PandoraFMS/PluginTools.pm
@@ -34,7 +34,7 @@ our @ISA = qw(Exporter);
 
 # version: Defines actual version of Pandora Server for this module only
 my $pandora_version = "7.0NG.775";
-my $pandora_build = "240207";
+my $pandora_build = "240208";
 our $VERSION = $pandora_version." ".$pandora_build;
 
 our %EXPORT_TAGS = ( 'all' => [ qw() ] );
diff --git a/pandora_server/pandora_server.redhat.spec b/pandora_server/pandora_server.redhat.spec
index c054404add..ffbfea7d6f 100644
--- a/pandora_server/pandora_server.redhat.spec
+++ b/pandora_server/pandora_server.redhat.spec
@@ -7,7 +7,7 @@
 %define debug_package %{nil}
 %define name        pandorafms_server
 %define version     7.0NG.775
-%define release     240207
+%define release     240208
 
 Summary:            Pandora FMS Server
 Name:               %{name}
diff --git a/pandora_server/pandora_server.spec b/pandora_server/pandora_server.spec
index af9312b5b4..78d7c238f2 100644
--- a/pandora_server/pandora_server.spec
+++ b/pandora_server/pandora_server.spec
@@ -4,7 +4,7 @@
 %global __os_install_post %{nil}
 %define name        pandorafms_server
 %define version     7.0NG.775
-%define release     240207
+%define release     240208
 
 Summary:            Pandora FMS Server
 Name:               %{name}
diff --git a/pandora_server/pandora_server_installer b/pandora_server/pandora_server_installer
index aaa17e341c..117a03ad07 100755
--- a/pandora_server/pandora_server_installer
+++ b/pandora_server/pandora_server_installer
@@ -9,7 +9,7 @@
 # **********************************************************************
 
 PI_VERSION="7.0NG.775"
-PI_BUILD="240207"
+PI_BUILD="240208"
 
 MODE=$1
 if [ $# -gt 1 ]; then
diff --git a/pandora_server/util/pandora_db.pl b/pandora_server/util/pandora_db.pl
index 47e0213732..e4a0310ad3 100755
--- a/pandora_server/util/pandora_db.pl
+++ b/pandora_server/util/pandora_db.pl
@@ -38,7 +38,7 @@ use PandoraFMS::Config;
 use PandoraFMS::DB;
 
 # version: define current version
-my $version = "7.0NG.775 Build 240207";
+my $version = "7.0NG.775 Build 240208";
 
 # Pandora server configuration
 my %conf;
diff --git a/pandora_server/util/pandora_manage.pl b/pandora_server/util/pandora_manage.pl
index af8c48e0ad..28948fb54f 100755
--- a/pandora_server/util/pandora_manage.pl
+++ b/pandora_server/util/pandora_manage.pl
@@ -36,7 +36,7 @@ use Encode::Locale;
 Encode::Locale::decode_argv;
 
 # version: define current version
-my $version = "7.0NG.775 Build 240207";
+my $version = "7.0NG.775 Build 240208";
 
 # save program name for logging
 my $progname = basename($0);