Initial import: Carteasy Shop (Dev-Stand)

This commit is contained in:
Thomas Bartelt
2026-04-20 01:03:43 +02:00
commit d504f8a05d
3845 changed files with 761050 additions and 0 deletions
@@ -0,0 +1,21 @@
<?php
$item_fields = array(
'number' => 1,
'name' => 1,
'short_description' => 0,
'detail_description' => 0,
'manufacturer_id' => 0,
'manufacturer_item_number' => 1,
'vendor_id' => 1,
'vendor_item_number' => 1,
'ean_code' => 1,
'active' => 1
);
?>
@@ -0,0 +1,98 @@
<?php
$widget_regions = array(
'left',
'top',
'header',
'footer',
'subheader'
);
$default_widget_list_left = array(
'1' => array(
'widget' => 'main_widget_item_categories',
'template' => 'main_widget_item_categories.tpl'
),
'2' => array(
'widget' => 'main_widget_menu_2',
'template' => 'main_widget_menu_2.tpl'
),
'3' => array(
'widget' => 'main_widget_info',
'template' => 'main_widget_info.tpl'
)
);
$default_widget_list_top = array(
'0' => array(
'widget' => 'main_widget_login',
'template' => 'main_widget_login.tpl'
),
'1' => array(
'widget' => 'main_widget_shoppingcart',
'template' => 'main_widget_shoppingcart.tpl'
),
'2' => array(
'widget' => 'main_widget_search',
'template' => 'main_widget_search.tpl'
)
);
$default_widget_list_header = array(
// '0' => array(
// 'widget' => 'main_widget_menu_advanced',
// 'template' => 'main_widget_menu.tpl',
// 'config' => array(
// 'fullWidth' => true,
// 'depth' => 2,
// 'splitInParentGroups' => true
// )
// )
'0' => array(
'widget' => false,
'template' => 'main_widget_menu_ajax.tpl'
)
);
$default_widget_list_footer = array(
'0' => array(
'widget' => 'main_widget_footer_menu',
'template' => 'main_widget_footer_menu.tpl'
),
'1' => array(
'widget' => 'main_widget_footer_menu',
'template' => 'main_widget_contact.tpl'
),
'2' => array(
'widget' => 'main_widget_newsletter',
'template' => 'main_widget_newsletter.tpl'
),
'3' => array(
'widget' => 'main_widget_footercontact',
'template' => 'main_widget_footercontact.tpl',
'config' => array(
'action' => '/Kontakt/?sent=true'
)
)
);
$default_widget_list_subheader = array(
'0' => array(
'widget' => 'main_widget_logorodeo',
'template' => 'main_widget_logorodeo.tpl'
)
);
//$customized_templates = array(
// 'main.tpl' => 1,
// 'main_widget_logorodeo.tpl' => 1,
// 'main_widget_menu.tpl' => 1,
// 'content_box_item_list.tpl' => 1,
// 'content_item.tpl' => 1,
// 'item_description.tpl' => 1,
// 'content_cash_desk/payments.tpl' => 1
//);
?>
Binary file not shown.
@@ -0,0 +1,239 @@
<?php
// get for intelectra geraetezuordnung
/*if ($obj->attribute_17 != '') {
$sql = "SELECT * FROM import_geraetezuordnung WHERE anr='".$obj->attribute_17."'";
$result = $this->db->query($sql);
}
else {
$sql = "SELECT * FROM import_geraetezuordnung WHERE anr='".$obj->number."'";
$result = $this->db->query($sql);
}*/
$result = null;
// COMMENTED OUT - Wrong mapping logic
/*if (strlen($obj->number) == 8) {
$sql = "SELECT g.*
FROM krempl_geraete_22 g
INNER JOIN krempl_artikelgeraet_22 ag ON g.id = ag.geraet
INNER JOIN krempl_passendwie pw ON ag.ersatzteil = pw.id
INNER JOIN items i ON pw.navisionid = i.krempl_id
WHERE i.number = ".$this->db->real_escape_string($obj->number).";";
$result = $this->db->query($sql);
}*/
// ORIGINAL MONSTER-SQL (PERFORMANCE-KILLER!)
// 4-fach JOIN über 1.3M Zeilen krempl_artikelgeraet_22 = HORROR!
/*
ORIGINAL MONSTER-QUERY - AUSKOMMENTIERT FÜR STEP-BY-STEP ZERLEGUNG:
SELECT g.*
FROM krempl_geraete_22 g -- Gerätedaten (Ziel)
INNER JOIN krempl_artikelgeraet_22 ag ON g.id = ag.geraet -- 1.3M ROWS N:M Mapping!
INNER JOIN krempl_passendwie pw ON ag.ersatzteil = pw.id -- Ersatzteil-Mapping
INNER JOIN items i ON ( -- Item-Verknüpfung
pw.navisionid = i.attribute_7 -- Legacy Items
OR (LENGTH(i.number) >= 8 AND pw.navisionid = i.number) -- Moderne Items
)
WHERE i.number = obj->number
LOGIK:
1. Items (i) → finde Ersatzteile über attribute_7 oder number
2. Ersatzteile (pw) → finde krempl_artikelgeraet_22 Mappings
3. Mappings (ag) → finde passende Geräte
4. Geräte (g) → liefere Gerätedaten
*/
// STEP-BY-STEP ZERLEGUNG (Performance-Optimiert):
// FIX: Läuft für number >= 8 ODER wenn attribute_7 vorhanden (Legacy-Artikel)
if (strlen($obj->number) >= 8 || !empty($obj->attribute_7)) {
// STEP 1: Finde Ersatzteil-IDs für dieses Item
$ersatzteil_ids = array();
// Query 1A: Legacy Items (über attribute_7)
if (!empty($obj->attribute_7)) {
$sql1a = "SELECT id FROM krempl_passendwie WHERE navisionid = ".$this->db->real_escape_string($obj->attribute_7);
$result1a = $this->db->query($sql1a);
if ($result1a) {
while ($row = $result1a->fetch_assoc()) {
$ersatzteil_ids[] = $row['id'];
}
}
}
// Query 1B: Moderne Items (über number, wenn >= 8 Zeichen)
$sql1b = "SELECT id FROM krempl_passendwie WHERE navisionid = ".$this->db->real_escape_string($obj->number);
$result1b = $this->db->query($sql1b);
if ($result1b) {
while ($row = $result1b->fetch_assoc()) {
$ersatzteil_ids[] = $row['id'];
}
}
// STEP 2: Finde Geräte-IDs für diese Ersatzteile
$geraet_ids = array();
if (!empty($ersatzteil_ids)) {
$ersatzteil_list = implode(',', array_map('intval', $ersatzteil_ids));
$sql2 = "SELECT DISTINCT geraet FROM krempl_artikelgeraet_22 WHERE ersatzteil IN ($ersatzteil_list)";
$result2 = $this->db->query($sql2);
if ($result2) {
while ($row = $result2->fetch_assoc()) {
$geraet_ids[] = $row['geraet'];
}
}
}
// STEP 3: Hole finale Gerätedaten
$result = false;
if (!empty($geraet_ids)) {
$geraet_list = implode(',', array_map('intval', $geraet_ids));
$sql3 = "SELECT * FROM krempl_geraete_22 WHERE id IN ($geraet_list)";
$result = $this->db->query($sql3);
if (!$result) {
$result = false; // Explizit setzen für Fallback
}
} else {
$result = false; // Explizit setzen für Fallback
}
}
if (!empty($obj->krempl_id) && (!isset($result) || !$result || $result->num_rows < 1)) {
$sql = "SELECT * FROM krempl_artikelgeraet_22 ka
left join krempl_geraete_22 kg on kg.id=ka.geraet
WHERE ka.ersatzteil=".$this->db->real_escape_string($obj->krempl_id)." AND not isnull(nr)";
$result = $this->db->query($sql);
}
$obj->geraetezuordnung = array();
if ($result) {
while ($obj1 = $result->fetch_object()) {
$obj->geraetezuordnung[] = $obj1;
}
}
// get parent warengruppe
$sql = "select i.name, s.name, s2.name as wg from items i
left join item_structure_assign isa on isa.item_id=i.id
left join structure s on s.id=isa.structure_id
left join structure s2 on s2.id=s.parent_id
where i.id=".$obj->id.' AND s.active=1 LIMIT 1';
$result = $this->db->query($sql);
$parent_warengruppe = '';
if ($result) {
while ($obj1 = $result->fetch_object()) {
$parent_warengruppe = $obj1->wg;
}
}
$table_data = array();
foreach ($obj->geraetezuordnung as $geraet) {
$nr1 = str_replace('#', '', $geraet->nr);
$nr1 = str_replace('_', ' ', $nr1);
$nr2 = str_replace('#', '', $geraet->produktionsstart);
$nr2 = str_replace('_', ' ', $nr2);
$nr3 = str_replace('#', '', $geraet->produktionsende);
$nr3 = str_replace('_', ' ', $nr3);
$nr3 = empty($nr3) ? "" : " - ".$nr3;
$nr2 = $nr2.$nr3;
$bezeichnungoriginal = str_replace('#', '', $geraet->bezeichnungoriginal);
$bezeichnungoriginal = str_replace('_', ' ', $bezeichnungoriginal);
$bezeichnungoriginal = preg_replace('/\r\n|\n|\r/', '', $bezeichnungoriginal);
// Überprüfe, ob $bezeichnungoriginal leer ist, und verwende $geraet->modellBezeichnung falls ja
if (empty($bezeichnungoriginal) && !empty($geraet->modellBezeichnung)) {
$bezeichnungoriginal = str_replace('#', '', $geraet->modellBezeichnung);
$bezeichnungoriginal = str_replace('_', ' ', $bezeichnungoriginal);// Ersetze durch modellBezeichnung
} elseif (empty($bezeichnungoriginal)) {
$bezeichnungoriginal = "-"; // Oder einen Platzhalter, wenn auch modellBezeichnung leer ist
}
$einkaufsmoeglichkeitencached = $nr1." ".$nr2;
$table_data[$einkaufsmoeglichkeitencached][$bezeichnungoriginal][] = array($nr1, $nr2);
}
/* $html = '<table border="0" cellpadding="2" cellspacing="0">';
foreach ($table_data as $key => $marken) {
$y = 0;
$html .= '<tr class="intelectra_item_table_header"><td colspan="3"><h4><b>'.$obj->name.' passend zu '.$key.' '.$parent_warengruppe.'</b></h4></tr>';
$html .= '<tr class="intelectra_item_table_header"><td>Ger&auml;te-/Modellbezeichnung</td><td>E-, Service-, Produktions- oder Hauptnummer</td><td>Zusatz-, F- oder Seriennummer oder Fertigungsdatum</td></tr>';
foreach ($marken as $geraet => $nummern) {
$color = 'intelectra_table_row1';
if ($y % 2 == 1) {
$color = 'intelectra_table_row2';
}
$z = 0;
foreach ($nummern as $nummer) {
if ($z == 0) {
$html .= '<tr class="'.$color.'"><td>'.$geraet.'</td><td>'.$nummer[0].'</td><td>'.$nummer[1].'</td></tr>';
} else {
$html .= '<tr class="'.$color.'"><td>&nbsp;</td><td>'.$nummer[0].'</td><td>'.$nummer[1].'</td></tr>';
}
$z++;
}
$y++;
}
}
$html .= '</table>'; */
$html = '<div class="tba_container">';
foreach ($table_data as $key => $marken) {
$y = 0;
// Eine einzige Überschrift pro Artikel
if ($y == 0) {
$html .= '<div class="tba_section">';
$html .= '<div class="tba_header"><h4><b>'.$obj->name.' passend zu '.$key.' '.$parent_warengruppe.'</b></h4></div>';
$html .= '<div class="tba_grid_header">';
$html .= '<div class="tba_col">Geräte-/Modellbezeichnung</div>';
$html .= '<div class="tba_col">E-, Service-, Produktions- oder Hauptnummer</div>';
$html .= '<div class="tba_col">Zusatz-, F- oder Seriennummer oder Fertigungsdatum</div>';
$html .= '</div>'; // Header-Ende
}
foreach ($marken as $geraet => $nummern) {
$colorClass = ($y % 2 == 1) ? 'tba_row_odd' : 'tba_row_even';
$z = 0;
foreach ($nummern as $nummer) {
$html .= '<div class="tba_grid ' . $colorClass . '">';
if ($z == 0) {
$html .= '<div class="tba_col">'.$geraet.'</div>';
} else {
$html .= '<div class="tba_col">&nbsp;</div>';
}
$html .= '<div class="tba_col mitlink"><a href="#" class="geraete-link" data-nr="'.htmlentities($nummer[0]).'">'.htmlentities($nummer[0]).'</a></div>';
$html .= '<div class="tba_col">'.$nummer[1].'</div>';
$html .= '</div>'; // Zeile Ende
$z++;
}
$y++;
}
$html .= '</div>'; // Section Ende
}
$html .= '</div>'; // Container Ende
$shopArticle->geraetezuordnung = $html;
$int = $this->createIntWithTableData($html);
// base price calc
if ($obj->attribute_11 && $obj->attribute_15) {
$obj->sample_unit = $obj->attribute_15;
if (strstr($obj->sample_unit, '100')) {
$obj->sample_price = $obj->shop_price_1 / ($obj->attribute_11 * 10);
} else {
$obj->sample_price = $obj->shop_price_1 / $obj->attribute_11;
}
}
@@ -0,0 +1,163 @@
<?php
// get for intelectra geraetezuordnung
/*if ($obj->attribute_17 != '') {
$sql = "SELECT * FROM import_geraetezuordnung WHERE anr='".$obj->attribute_17."'";
$result = $this->db->query($sql);
}
else {
$sql = "SELECT * FROM import_geraetezuordnung WHERE anr='".$obj->number."'";
$result = $this->db->query($sql);
}*/
$result = null;
if (strlen($obj->number) == 8) {
$sql = "SELECT g.*
FROM krempl_geraete_22 g
INNER JOIN krempl_artikelgeraet_22 ag ON g.id = ag.geraet
INNER JOIN krempl_passendwie pw ON ag.ersatzteil = pw.id
INNER JOIN items i ON pw.navisionid = i.krempl_id
WHERE i.number = ".$this->db->real_escape_string($obj->number).";";
$result = $this->db->query($sql);
}
if ($obj->krempl_id && (!isset($result) || $result->num_rows < 1)) {
$sql = "SELECT * FROM krempl_artikelgeraet_22 ka
left join krempl_geraete_22 kg on kg.id=ka.geraet
WHERE ka.ersatzteil=".$this->db->real_escape_string($obj->krempl_id)." AND not isnull(nr)";
$result = $this->db->query($sql);
}
$obj->geraetezuordnung = array();
if ($result) {
while ($obj1 = $result->fetch_object()) {
$obj->geraetezuordnung[] = $obj1;
}
}
// get parent warengruppe
$sql = "select i.name, s.name, s2.name as wg from items i
left join item_structure_assign isa on isa.item_id=i.id
left join structure s on s.id=isa.structure_id
left join structure s2 on s2.id=s.parent_id
where i.id=".$obj->id.' AND s.active=1 LIMIT 1';
$result = $this->db->query($sql);
$parent_warengruppe = '';
if ($result) {
while ($obj1 = $result->fetch_object()) {
$parent_warengruppe = $obj1->wg;
}
}
$table_data = array();
foreach ($obj->geraetezuordnung as $geraet) {
$nr1 = str_replace('#', '', $geraet->nr);
$nr1 = str_replace('_', ' ', $nr1);
$nr2 = str_replace('#', '', $geraet->produktionsstart);
$nr2 = str_replace('_', ' ', $nr2);
$nr3 = str_replace('#', '', $geraet->produktionsende);
$nr3 = str_replace('_', ' ', $nr3);
$nr3 = empty($nr3) ? "" : " - ".$nr3;
$nr2 = $nr2.$nr3;
$bezeichnungoriginal = str_replace('#', '', $geraet->bezeichnungoriginal);
$bezeichnungoriginal = str_replace('_', ' ', $bezeichnungoriginal);
$bezeichnungoriginal = preg_replace('/\r\n|\n|\r/', '', $bezeichnungoriginal);
// Überprüfe, ob $bezeichnungoriginal leer ist, und verwende $geraet->modellBezeichnung falls ja
if (empty($bezeichnungoriginal) && !empty($geraet->modellBezeichnung)) {
$bezeichnungoriginal = str_replace('#', '', $geraet->modellBezeichnung);
$bezeichnungoriginal = str_replace('_', ' ', $bezeichnungoriginal);// Ersetze durch modellBezeichnung
} elseif (empty($bezeichnungoriginal)) {
$bezeichnungoriginal = "-"; // Oder einen Platzhalter, wenn auch modellBezeichnung leer ist
}
$einkaufsmoeglichkeitencached = $nr1." ".$nr2;
$table_data[$einkaufsmoeglichkeitencached][$bezeichnungoriginal][] = array($nr1, $nr2);
}
/* $html = '<table border="0" cellpadding="2" cellspacing="0">';
foreach ($table_data as $key => $marken) {
$y = 0;
$html .= '<tr class="intelectra_item_table_header"><td colspan="3"><h4><b>'.$obj->name.' passend zu '.$key.' '.$parent_warengruppe.'</b></h4></tr>';
$html .= '<tr class="intelectra_item_table_header"><td>Ger&auml;te-/Modellbezeichnung</td><td>E-, Service-, Produktions- oder Hauptnummer</td><td>Zusatz-, F- oder Seriennummer oder Fertigungsdatum</td></tr>';
foreach ($marken as $geraet => $nummern) {
$color = 'intelectra_table_row1';
if ($y % 2 == 1) {
$color = 'intelectra_table_row2';
}
$z = 0;
foreach ($nummern as $nummer) {
if ($z == 0) {
$html .= '<tr class="'.$color.'"><td>'.$geraet.'</td><td>'.$nummer[0].'</td><td>'.$nummer[1].'</td></tr>';
} else {
$html .= '<tr class="'.$color.'"><td>&nbsp;</td><td>'.$nummer[0].'</td><td>'.$nummer[1].'</td></tr>';
}
$z++;
}
$y++;
}
}
$html .= '</table>'; */
$html = '<div class="tba_container">';
foreach ($table_data as $key => $marken) {
$y = 0;
// Eine einzige Überschrift pro Artikel
if ($y == 0) {
$html .= '<div class="tba_section">';
$html .= '<div class="tba_header"><h4><b>'.$obj->name.' passend zu '.$key.' '.$parent_warengruppe.'</b></h4></div>';
$html .= '<div class="tba_grid_header">';
$html .= '<div class="tba_col">Geräte-/Modellbezeichnung</div>';
$html .= '<div class="tba_col">E-, Service-, Produktions- oder Hauptnummer</div>';
$html .= '<div class="tba_col">Zusatz-, F- oder Seriennummer oder Fertigungsdatum</div>';
$html .= '</div>'; // Header-Ende
}
foreach ($marken as $geraet => $nummern) {
$colorClass = ($y % 2 == 1) ? 'tba_row_odd' : 'tba_row_even';
$z = 0;
foreach ($nummern as $nummer) {
$html .= '<div class="tba_grid ' . $colorClass . '">';
if ($z == 0) {
$html .= '<div class="tba_col">'.$geraet.'</div>';
} else {
$html .= '<div class="tba_col">&nbsp;</div>';
}
$html .= '<div class="tba_col">'.$nummer[0].'</div>';
$html .= '<div class="tba_col">'.$nummer[1].'</div>';
$html .= '</div>'; // Zeile Ende
$z++;
}
$y++;
}
$html .= '</div>'; // Section Ende
}
$html .= '</div>'; // Container Ende
$obj->geraetezuordnung = $html;
$int = $this->createIntWithTableData($html);
// base price calc
if ($obj->attribute_11 && $obj->attribute_15) {
$obj->sample_unit = $obj->attribute_15;
if (strstr($obj->sample_unit, '100')) {
$obj->sample_price = $obj->shop_price_1 / ($obj->attribute_11 * 10);
} else {
$obj->sample_price = $obj->shop_price_1 / $obj->attribute_11;
}
}
@@ -0,0 +1,372 @@
<?php
class ItemSearch {
private $config;
protected $base_object;
protected $db;
private $searchData = array();
private $pageOffset = 0;
public function __construct($base_object) {
$this->config = $base_object->config;
$this->db = $base_object->db;
$this->base_object = $base_object;
}
public function searchItems($searchString) {
$timer_start = microtime(true);
//echo "searchItems called<br>";
//$searchString_trimmed = trim($searchString);
//$searchString_filtered = preg_replace("@[^\p{L}\p{N}]@sui", '', $searchString_trimmed);
$this->pageOffset = isset($_GET["page"]) ? ($_GET["page"] - 1) : 0;
$results = Array();
$results = array_merge($results, $this->_getItemByNumber($searchString));
$results = array_merge($results, $this->_getItemByText($searchString));
$results = array_merge($results, $this->_searchItemWithinItemsAndAssociations('', $searchString));
$results = array_merge($results, $this->_getItembyKremplNumber($searchString));
$running_time = microtime(true) - $timer_start;
// Paginate result (make solution cleaner in the future)
//$results = array_splice($results, 0, 20);
//echo "results number: ".count($results)."<br>";
$result = array(
'searchstring' => $searchString,
'results' => count($results),
'queryTime' => $running_time,
'data' => $results
);
return $result;
}
private function _searchItemWithinItemsAndAssociations($searchManufacturer, $searchString, $idsOnly = false, $searchManufacturer_filtered = false, $searchString_filtered = false, $searchRefinement_filtered = false) {
$queries = $this->_queryLike($searchManufacturer_filtered, $searchString);
$results = array();
$idArray = array();
foreach ($queries as $query) {
$rs = $this->db->query($query);
if (!$rs) break;
while ($I = $rs->fetch_object()) {
if ($I->anumber) {
$results[$I->anumber] = $I->anumber;
$idArray[] = $I->anumber;
}
}
}
//$idArray = $this->_getIdsByNumbers($results, true, $searchRefinement_filtered);
return $idArray;
}
private function _getIdsByNumbers($numbers, $withAlternatives = true, $refinement = false) {
if (is_array($numbers) && count($numbers) > 0) {
$numberList = implode("','", $numbers);
$queryAddAlternatives = '';
if ($withAlternatives) {
$queryAddAlternatives = " OR attribute_17 IN ('".$numberList."')";
}
$queryAddRefinement = '';
if ($refinement) {
$refinement = $this->db->real_escape_string($refinement);
$queryAddRefinement = "
AND (
name LIKE '%".$refinement."%'
OR
detail_description LIKE '%".$refinement."%'
OR
detail_description LIKE '%".htmlentities($refinement, null, 'UTF-8')."%'
OR
attribute_1 LIKE '%".$refinement."%'
OR
attribute_9 LIKE '%".$refinement."%'
OR
attribute_20 LIKE '%".$refinement."%'
OR
attribute_6 LIKE '%".$refinement."%'
)
";
$queryAddRefinement = "
AND (
name LIKE '%".$refinement."%'
OR
attribute_1 LIKE '%".$refinement."%'
OR
attribute_9 LIKE '%".$refinement."%'
OR
attribute_20 LIKE '%".$refinement."%'
OR
attribute_6 LIKE '%".$refinement."%'
)
";
}
/*$query = "
SELECT
id
FROM
items
WHERE (
number IN ('".$numberList."') OR
number IN ('".$numberList."')
".$queryAddAlternatives."
)
".$queryAddRefinement."
";*/
$query = "
SELECT
id
FROM
items
WHERE
number IN ('".$numberList."')
LIMIT 150";
$idArray = array();
$rs = $this->db->query($query);
if (!$rs) return $idArray;
//echo '<pre>';echo $query;exit();
while ($I = $rs->fetch_object()) {
$idArray[$I->id] = $I->id;
}
return $idArray;
}
return array();
}
private function _queryLike($searchManufacturer_filtered, $searchString_filtered) {
//$searchManufacturer_filtered = $this->db->real_escape_string($searchManufacturer_filtered);
$searchString_filtered = $this->db->real_escape_string($searchString_filtered);
$queries = array();
if (ctype_alpha($searchString_filtered)) {
$queries[] = "
SELECT
id AS anumber
FROM
items
WHERE
active = 1
AND
parent_id = 0
AND (
REPLACE(REPLACE(REPLACE(vendor_item_number, ' ', ''), '/', ''), '-', '') LIKE '%".$searchString_filtered."%'
OR
-- mögliche Aufschrift
attribute_4 LIKE '%".$searchString_filtered."%'
OR
-- Aufdrucke
attribute_9 LIKE '%".$searchString_filtered."%'
OR
-- Synonyme
attribute_6 LIKE '%".$searchString_filtered."%'
)
GROUP BY number LIMIT 150";
} else {
$forwardSlashPos = strpos($searchString_filtered, "/");
if ($forwardSlashPos != false) {
$searchString_filtered = substr($searchString_filtered, 0, $forwardSlashPos);
}
if (!ctype_digit($searchString_filtered) || (ctype_digit($searchString_filtered) && strlen($searchString_filtered) >= 6)) {
$queries[] = "
SELECT DISTINCT i.id AS anumber FROM krempl_geraete_22 kg
LEFT JOIN krempl_artikelgeraet_22 ka on ka.geraet=kg.id
LEFT JOIN items i on i.krempl_id=ka.ersatzteil
WHERE
REPLACE(REPLACE(REPLACE(kg.nr, ' ', ''), '/', ''), '-', '') LIKE '%".$searchString_filtered."%'
OR
REPLACE(REPLACE(REPLACE(kg.bezeichnungoriginal, ' ', ''), '/', ''), '-', '') LIKE '%".$searchString_filtered."%'
LIMIT 150";
}
$queries[] = "
SELECT
DISTINCT items.id AS anumber
FROM
krempl_passendwie pw
LEFT JOIN
items on items.number=pw.navisionid OR items.attribute_7=pw.navisionid
WHERE
REPLACE(REPLACE(REPLACE(bestellcode, ' ', ''), '/', ''), '-', '') LIKE '%".$searchString_filtered."%'
LIMIT 150";
$queries[] = "SELECT id AS anumber FROM items WHERE active = 1 AND
REPLACE(REPLACE(REPLACE(attribute_20, ' ', ''), '/', ''), '-', '') LIKE '%".$searchString_filtered."%'
GROUP BY number LIMIT 150";
}
return $queries;
}
private function _getItemByNumber($searchString_ready) {
if (!is_numeric($searchString_ready)) return Array();
$query = "
SELECT id FROM items WHERE
number = '".$this->db->real_escape_string($searchString_ready)."' OR
attribute_7 = '".$this->db->real_escape_string($searchString_ready)."' OR
ean_code = '".$this->db->real_escape_string($searchString_ready)."'
LIMIT 150";
$rs = $this->db->query($query);
$idArray = array();
if ($rs->num_rows > 0) {
while ($I = $rs->fetch_object()) {
$idArray[$I->id] = $I->id;
}
return $idArray;
} else {
return Array();
}
}
private function _getItemByText($searchString_ready) {
$query = "
SELECT id FROM items WHERE
name LIKE '%".$this->db->real_escape_string($searchString_ready)."%' OR
attribute_20 like '%".$this->db->real_escape_string($searchString_ready)."%' OR
short_description like '%".$this->db->real_escape_string($searchString_ready)."%' OR
detail_description like '%".$this->db->real_escape_string($searchString_ready)."%'
LIMIT 150";
$rs = $this->db->query($query);
$idArray = array();
if ($rs->num_rows > 0) {
while ($I = $rs->fetch_object()) {
$idArray[$I->id] = $I->id;
}
return $idArray;
} else {
return Array();
}
}
private function _getItembyKremplNumberOld($searchString) {
$query = 'SELECT kg.id FROM `krempl_geraete_22` kg where nr LIKE "%'.$searchString.'%" or modellBezeichnung LIKE "%'.$searchString.'%";';
$rs = $this->db->query($query);
$idArray = array();
if ($rs->num_rows > 0) {
$ids = $rs->fetch_all(MYSQLI_NUM)[0];
foreach ($ids as $id) {
$sql = "
SELECT i.id FROM `krempl_item` ki
left join krempl_artikelgeraet_22 ka on ki.id = ka.ersatzteil
left join krempl_geraete_22 kg ON kg.id = ka.geraet
left join items i ON ki.navisionid = i.attribute_7
WHERE ka.geraet = ".$id." ORDER BY `ki`.`navisionid` ASC;
";
/* //TEST ZUM OPTIMIEREN
$sql = "
SELECT i.* FROM items i
INNER JOIN krempl_item ki ON i.attribute_7 = ki.navisionid
INNER JOIN krempl_artikelgeraet_22 ka ON ki.id = ka.ersatzteil
WHERE ka.geraet IN (
SELECT kg.id FROM `krempl_geraete_22` kg where nr LIKE "%AR 1268 TXNL%" or modellBezeichnung LIKE "%AR 1268 TXNL%"
);
";
*/
$rs = $this->db->query($sql);
if ($rs->num_rows > 0) {
while ($I = $rs->fetch_object()) {
if (isset($I->id))
$idArray[$I->id] = $I->id;
}
}
}
}
return $idArray;
}
private function _getItembyKremplNumber($searchString) {
if (!is_numeric($searchString_ready)) return Array();
/*$query = '
CREATE TEMPORARY TABLE temp_kg_ids (id INT);
INSERT INTO temp_kg_ids (id)
SELECT kg.id
FROM krempl_geraete_22 kg
WHERE kg.nr LIKE "%'.$searchString.'%" OR kg.modellBezeichnung LIKE "%'.$searchString.'%";
CREATE TEMPORARY TABLE temp_ersatzteile (ersatzteil INT);
INSERT INTO temp_ersatzteile (ersatzteil)
SELECT ka.ersatzteil
FROM krempl_artikelgeraet_22 ka
JOIN temp_kg_ids tempkg ON ka.geraet = tempkg.id;
SELECT i.id
FROM items i
JOIN krempl_item ki ON i.attribute_7 = ki.navisionid
JOIN temp_ersatzteile tempersatz ON ki.id = tempersatz.ersatzteil
ORDER BY ki.navisionid ASC;
DROP TEMPORARY TABLE IF EXISTS temp_kg_ids;
DROP TEMPORARY TABLE IF EXISTS temp_ersatzteile;
';
$rs = $this->db->query($query);
return $rs->fetch_all(MYSQLI_NUM)[0];*/
$query = 'SELECT kg.id FROM `krempl_geraete_22` kg where nr LIKE "%'.$searchString.'%" or modellBezeichnung LIKE "%'.$searchString.'%";';
$rs = $this->db->query($query);
if ($rs->num_rows <= 0) return Array();
$res = $this->collapseResultRows($rs->fetch_all(MYSQLI_NUM));
$query = 'SELECT ka.ersatzteil from krempl_artikelgeraet_22 ka WHERE '.$this->queryOrConcat("ka.geraet", $res);
$rs = $this->db->query($query);
if ($rs->num_rows <= 0) return Array();
$res = $this->collapseResultRows($rs->fetch_all(MYSQLI_NUM));
$query = 'SELECT ki.navisionid FROM krempl_item ki WHERE '.$this->queryOrConcat("ki.id", $res);
$rs = $this->db->query($query);
if ($rs->num_rows <= 0) return Array();
$res = $this->collapseResultRows($rs->fetch_all(MYSQLI_NUM));
$query = 'SELECT i.id FROM items i WHERE '.$this->queryOrConcat("i.attribute_7", $res);
$rs = $this->db->query($query);
if ($rs->num_rows <= 0) return Array();
$idArray = Array();
foreach ($this->collapseResultRows($rs->fetch_all(MYSQLI_NUM)) as $i) {
$idArray[(int) $i] = (int) $i;
}
return $idArray;
}
private function queryOrConcat($varName, $arr) {
$ret = "$varName = ";
if (count($arr) <= 1) return $ret.$arr[0];
for ($i = 0; $i < count($arr) - 1; $i++) {
$ret .= $arr[$i]." OR $varName = ";
}
$ret .= $arr[count($arr) - 1];
return $ret;
}
private function collapseResultRows($arr) { // takes a multilevel array returned by mysqli->fetch_all(MYSQLI_NUM) and collapses it to a monodimensional array
$ret = Array();
foreach ($arr as $a) {
$ret[] = $a[0];
}
return $ret;
}
}
@@ -0,0 +1,415 @@
<?php
class ItemSearch {
private $config;
protected $base_object;
protected $db;
private $searchData = array();
private $pageOffset = 0;
public function __construct($base_object) {
$this->config = $base_object->config;
$this->db = $base_object->db;
$this->base_object = $base_object;
}
public function searchItems($searchString) {
$timer_start = microtime(true);
//echo "searchItems called<br>";
//$searchString_trimmed = trim($searchString);
//$searchString_filtered = preg_replace("@[^\p{L}\p{N}]@sui", '', $searchString_trimmed);
$this->pageOffset = isset($_GET["page"]) ? ($_GET["page"] - 1) : 0;
$results = Array();
// CLEAN SEARCH STRATEGY: Fast + Smart only!
$byNumber = $this->_getItemByNumber($searchString); // FAST: Direct number/EAN
$byKrempl = $this->_getItembyKremplNumber($searchString); // SMART: Device models, part numbers
$results = array_merge($results, $byNumber);
$results = array_merge($results, $byKrempl);
// REMOVE DUPLICATES (array keys automatically handle this)
$results = array_unique($results);
$running_time = microtime(true) - $timer_start;
// Paginate result (make solution cleaner in the future)
//$results = array_splice($results, 0, 20);
//echo "results number: ".count($results)."<br>";
$result = array(
'searchstring' => $searchString,
'results' => count($results),
'queryTime' => $running_time,
'data' => $results
);
return $result;
}
private function _searchItemWithinItemsAndAssociations($searchManufacturer, $searchString, $idsOnly = false, $searchManufacturer_filtered = false, $searchString_filtered = false, $searchRefinement_filtered = false) {
$queries = $this->_queryLike($searchManufacturer_filtered, $searchString);
$results = array();
$idArray = array();
foreach ($queries as $query) {
$rs = $this->db->query($query);
if (!$rs) break;
while ($I = $rs->fetch_object()) {
if ($I->anumber) {
$results[$I->anumber] = $I->anumber;
$idArray[] = $I->anumber;
}
}
}
//$idArray = $this->_getIdsByNumbers($results, true, $searchRefinement_filtered);
return $idArray;
}
private function _getIdsByNumbers($numbers, $withAlternatives = true, $refinement = false) {
if (is_array($numbers) && count($numbers) > 0) {
$numberList = implode("','", $numbers);
$queryAddAlternatives = '';
if ($withAlternatives) {
$queryAddAlternatives = " OR attribute_17 IN ('".$numberList."')";
}
$queryAddRefinement = '';
if ($refinement) {
$refinement = $this->db->real_escape_string($refinement);
$queryAddRefinement = "
AND (
name LIKE '%".$refinement."%'
OR
detail_description LIKE '%".$refinement."%'
OR
detail_description LIKE '%".htmlentities($refinement, null, 'UTF-8')."%'
OR
attribute_1 LIKE '%".$refinement."%'
OR
attribute_9 LIKE '%".$refinement."%'
OR
attribute_20 LIKE '%".$refinement."%'
OR
attribute_6 LIKE '%".$refinement."%'
)
";
$queryAddRefinement = "
AND (
name LIKE '%".$refinement."%'
OR
attribute_1 LIKE '%".$refinement."%'
OR
attribute_9 LIKE '%".$refinement."%'
OR
attribute_20 LIKE '%".$refinement."%'
OR
attribute_6 LIKE '%".$refinement."%'
)
";
}
/*$query = "
SELECT
id
FROM
items
WHERE (
number IN ('".$numberList."') OR
number IN ('".$numberList."')
".$queryAddAlternatives."
)
".$queryAddRefinement."
";*/
$query = "
SELECT
id
FROM
items
WHERE
number IN ('".$numberList."')
LIMIT 150";
$idArray = array();
$rs = $this->db->query($query);
if (!$rs) return $idArray;
//echo '<pre>';echo $query;exit();
while ($I = $rs->fetch_object()) {
$idArray[$I->id] = $I->id;
}
return $idArray;
}
return array();
}
private function _queryLike($searchManufacturer_filtered, $searchString_filtered) {
//$searchManufacturer_filtered = $this->db->real_escape_string($searchManufacturer_filtered);
$searchString_filtered = $this->db->real_escape_string($searchString_filtered);
$queries = array();
if (ctype_alpha($searchString_filtered)) {
$queries[] = "
SELECT
id AS anumber
FROM
items
WHERE
active = 1
AND
parent_id = 0
AND (
REPLACE(REPLACE(REPLACE(vendor_item_number, ' ', ''), '/', ''), '-', '') LIKE '%".$searchString_filtered."%'
OR
-- mögliche Aufschrift
attribute_4 LIKE '%".$searchString_filtered."%'
OR
-- Aufdrucke
attribute_9 LIKE '%".$searchString_filtered."%'
OR
-- Synonyme
attribute_6 LIKE '%".$searchString_filtered."%'
)
GROUP BY number LIMIT 150";
} else {
$forwardSlashPos = strpos($searchString_filtered, "/");
if ($forwardSlashPos != false) {
$searchString_filtered = substr($searchString_filtered, 0, $forwardSlashPos);
}
if (!ctype_digit($searchString_filtered) || (ctype_digit($searchString_filtered) && strlen($searchString_filtered) >= 6)) {
// STEP-BY-STEP APPROACH (NO BIG JOINS!)
$device_query = "SELECT DISTINCT kg.id FROM krempl_geraete_22 kg
WHERE REPLACE(REPLACE(REPLACE(kg.nr, ' ', ''), '/', ''), '-', '') LIKE '%".$searchString_filtered."%'
OR REPLACE(REPLACE(REPLACE(kg.bezeichnungoriginal, ' ', ''), '/', ''), '-', '') LIKE '%".$searchString_filtered."%'
LIMIT 50";
$device_rs = $this->db->query($device_query);
if ($device_rs && $device_rs->num_rows > 0) {
$device_ids = $this->collapseResultRows($device_rs->fetch_all(MYSQLI_NUM));
if (!empty($device_ids)) {
$ersatzteil_query = "SELECT DISTINCT ka.ersatzteil FROM krempl_artikelgeraet_22 ka
WHERE " . $this->queryOrConcat("ka.geraet", $device_ids) . " LIMIT 300";
$ersatzteil_rs = $this->db->query($ersatzteil_query);
if ($ersatzteil_rs && $ersatzteil_rs->num_rows > 0) {
$ersatzteil_ids = $this->collapseResultRows($ersatzteil_rs->fetch_all(MYSQLI_NUM));
if (!empty($ersatzteil_ids)) {
$queries[] = "SELECT DISTINCT i.id AS anumber FROM items i
WHERE " . $this->queryOrConcat("i.krempl_id", $ersatzteil_ids) . " LIMIT 150";
}
}
}
}
}
$queries[] = "
SELECT
DISTINCT items.id AS anumber
FROM
krempl_passendwie pw
LEFT JOIN
items on items.number=pw.navisionid OR items.attribute_7=pw.navisionid
WHERE
REPLACE(REPLACE(REPLACE(bestellcode, ' ', ''), '/', ''), '-', '') LIKE '%".$searchString_filtered."%'
LIMIT 150";
$queries[] = "SELECT id AS anumber FROM items WHERE active = 1 AND
REPLACE(REPLACE(REPLACE(attribute_20, ' ', ''), '/', ''), '-', '') LIKE '%".$searchString_filtered."%'
GROUP BY number LIMIT 150";
}
return $queries;
}
private function _getItemByNumber($searchString_ready) {
if (!is_numeric($searchString_ready)) return Array();
$query = "
SELECT id FROM items WHERE
number = '".$this->db->real_escape_string($searchString_ready)."' OR
attribute_7 = '".$this->db->real_escape_string($searchString_ready)."' OR
ean_code = '".$this->db->real_escape_string($searchString_ready)."'
LIMIT 150";
$rs = $this->db->query($query);
$idArray = array();
if ($rs->num_rows > 0) {
while ($I = $rs->fetch_object()) {
$idArray[$I->id] = $I->id;
}
return $idArray;
} else {
return Array();
}
}
private function _getItemByText($searchString_ready) {
$query = "
SELECT id FROM items WHERE
name LIKE '%".$this->db->real_escape_string($searchString_ready)."%' OR
attribute_20 like '%".$this->db->real_escape_string($searchString_ready)."%' OR
short_description like '%".$this->db->real_escape_string($searchString_ready)."%' OR
detail_description like '%".$this->db->real_escape_string($searchString_ready)."%'
LIMIT 150";
$rs = $this->db->query($query);
$idArray = array();
if ($rs->num_rows > 0) {
while ($I = $rs->fetch_object()) {
$idArray[$I->id] = $I->id;
}
return $idArray;
} else {
return Array();
}
}
private function _getItembyKremplNumberOld($searchString) {
$query = 'SELECT kg.id FROM `krempl_geraete_22` kg where nr LIKE "%'.$searchString.'%" or modellBezeichnung LIKE "%'.$searchString.'%";';
$rs = $this->db->query($query);
$idArray = array();
if ($rs->num_rows > 0) {
$ids = $rs->fetch_all(MYSQLI_NUM)[0];
foreach ($ids as $id) {
$sql = "
SELECT i.id FROM `krempl_item` ki
left join krempl_artikelgeraet_22 ka on ki.id = ka.ersatzteil
left join krempl_geraete_22 kg ON kg.id = ka.geraet
left join items i ON ki.navisionid = i.attribute_7
WHERE ka.geraet = ".$id." ORDER BY `ki`.`navisionid` ASC;
";
/* //TEST ZUM OPTIMIEREN
$sql = "
SELECT i.* FROM items i
INNER JOIN krempl_item ki ON i.attribute_7 = ki.navisionid
INNER JOIN krempl_artikelgeraet_22 ka ON ki.id = ka.ersatzteil
WHERE ka.geraet IN (
SELECT kg.id FROM `krempl_geraete_22` kg where nr LIKE "%AR 1268 TXNL%" or modellBezeichnung LIKE "%AR 1268 TXNL%"
);
";
*/
$rs = $this->db->query($sql);
if ($rs->num_rows > 0) {
while ($I = $rs->fetch_object()) {
if (isset($I->id))
$idArray[$I->id] = $I->id;
}
}
}
}
return $idArray;
}
private function _getItembyKremplNumber($searchString) {
//echo "<script>console.log('_getItembyKremplNumber called with: $searchString');</script>";
if (empty(trim($searchString))) {
echo "<script>console.log('EMPTY searchString, returning');</script>";
return Array();
}
/*$query = '
CREATE TEMPORARY TABLE temp_kg_ids (id INT);
INSERT INTO temp_kg_ids (id)
SELECT kg.id
FROM krempl_geraete_22 kg
WHERE kg.nr LIKE "%'.$searchString.'%" OR kg.modellBezeichnung LIKE "%'.$searchString.'%";
CREATE TEMPORARY TABLE temp_ersatzteile (ersatzteil INT);
INSERT INTO temp_ersatzteile (ersatzteil)
SELECT ka.ersatzteil
FROM krempl_artikelgeraet_22 ka
JOIN temp_kg_ids tempkg ON ka.geraet = tempkg.id;
SELECT i.id
FROM items i
JOIN krempl_item ki ON i.attribute_7 = ki.navisionid
JOIN temp_ersatzteile tempersatz ON ki.id = tempersatz.ersatzteil
ORDER BY ki.navisionid ASC;
DROP TEMPORARY TABLE IF EXISTS temp_kg_ids;
DROP TEMPORARY TABLE IF EXISTS temp_ersatzteile;
';
$rs = $this->db->query($query);
return $rs->fetch_all(MYSQLI_NUM)[0];*/
// STEP 1: Find devices by model/nr (EXACT match like Python!)
$searchString_escaped = $this->db->real_escape_string($searchString);
$query = "SELECT kg.id FROM krempl_geraete_22 kg
WHERE kg.nr LIKE '%{$searchString_escaped}%'
OR kg.modellBezeichnung = '{$searchString_escaped}'
LIMIT 50";
$rs = $this->db->query($query);
if (!$rs || $rs->num_rows <= 0) return Array();
$device_ids = $this->collapseResultRows($rs->fetch_all(MYSQLI_NUM));
if (empty($device_ids)) return Array();
// STEP 2: Find ersatzteile for devices (SMALL QUERY!)
$query = "SELECT DISTINCT ka.ersatzteil
FROM krempl_artikelgeraet_22 ka
WHERE " . $this->queryOrConcat("ka.geraet", $device_ids) . "
LIMIT 300";
$rs = $this->db->query($query);
if (!$rs || $rs->num_rows <= 0) return Array();
$ersatzteil_ids = $this->collapseResultRows($rs->fetch_all(MYSQLI_NUM));
if (empty($ersatzteil_ids)) return Array();
// STEP 3: Find items directly by krempl_id (NO krempl_item table!)
$query = "SELECT i.id
FROM items i
WHERE " . $this->queryOrConcat("i.krempl_id", $ersatzteil_ids) . "
LIMIT 150";
$rs = $this->db->query($query);
if (!$rs || $rs->num_rows <= 0) return Array();
$idArray = Array();
foreach ($this->collapseResultRows($rs->fetch_all(MYSQLI_NUM)) as $i) {
$idArray[(int) $i] = (int) $i;
}
return $idArray;
}
private function queryOrConcat($varName, $arr) {
$ret = "$varName = ";
if (count($arr) <= 1) return $ret.$arr[0];
for ($i = 0; $i < count($arr) - 1; $i++) {
$ret .= $arr[$i]." OR $varName = ";
}
$ret .= $arr[count($arr) - 1];
return $ret;
}
private function collapseResultRows($arr) { // takes a multilevel array returned by mysqli->fetch_all(MYSQLI_NUM) and collapses it to a monodimensional array
$ret = Array();
foreach ($arr as $a) {
$ret[] = $a[0];
}
return $ret;
}
}
+60
View File
@@ -0,0 +1,60 @@
<?php
// Verzeichnis wechseln, damit relative Pfade in base.class.php korrekt aufgelöst werden
chdir('/var/www/vhosts/newmail.intelectra.de/httpdocs');
// base.class.php einbinden
require_once './core/base.class.php';
// Instanz der Base-Klasse erstellen
$base = new base();
// Zugriff auf die Datenbankverbindung
$db = $base->db;
// Parameter prüfen
if (!isset($_GET['offset']) || !isset($_GET['limit']) || !isset($_GET['articleId'])) {
http_response_code(400);
echo json_encode(['error' => 'Invalid parameters']);
exit;
}
$offset = (int)$_GET['offset'];
$limit = (int)$_GET['limit'];
$articleId = $db->real_escape_string($_GET['articleId']);
// Ergebnisse initialisieren
$data = [];
// SQL-Abfrage
$sql = "SELECT g.*, i.name as item_name, s2.name as parent_wg
FROM krempl_geraete_22 g
INNER JOIN krempl_artikelgeraet_22 ag ON g.id = ag.geraet
INNER JOIN krempl_passendwie pw ON ag.ersatzteil = pw.id
INNER JOIN items i ON pw.navisionid = i.krempl_id
LEFT JOIN item_structure_assign isa ON isa.item_id = i.id
LEFT JOIN structure s ON s.id = isa.structure_id
LEFT JOIN structure s2 ON s2.id = s.parent_id
WHERE i.number = '$articleId' AND s.active = 1
LIMIT $limit OFFSET $offset;";
$result = $db->query($sql);
if ($result) {
while ($row = $result->fetch_assoc()) {
$data[] = [
'bezeichnungoriginal' => $row['bezeichnungoriginal'] ?? '-',
'nr' => $row['nr'] ?? 'N/A',
'produktionsstart' => $row['produktionsstart'] ?? '',
'produktionsende' => $row['produktionsende'] ?? '',
'item_name' => $row['item_name'] ?? '',
'parent_wg' => $row['parent_wg'] ?? '',
];
}
}
// JSON-Ausgabe
header('Content-Type: application/json');
echo json_encode([
'data' => $data,
'hasMore' => count($data) === $limit,
]);
exit;
@@ -0,0 +1,96 @@
<?php
$matchingItemNumberFirst = true;
include_once 'itemsearch.class.php';
$searchString = $search['search_item'];
$ItemsClass = new ItemSearch($this->base_object);
$strings = explode(' ', $searchString);
if (count($strings) == 1) {
$searchString = trim($searchString);
} else {
$searchString = '';
$string_type = 0;
$strings = array_reverse($strings);
foreach ($strings as $str) {
$str = trim($str);
// ganzzahl
if (ctype_digit($str)) {
$searchString = $str;
$string_type = 2;
} else if (!ctype_alpha($str) && $string_type != 2) {
$searchString = $str;
$string_type = 1;
} else if ($string_type == 0) {
$searchString = $str;
}
}
}
$result = $ItemsClass->searchItems($searchString);
if (!isset($this->db)) {
$this->db = $this->base_object->db;
}
if ($result['data'] && count($result['data']) > 0) {
if (isset($search['item_category']) && $search['item_category'] > 0) {
$sql = "
SELECT
i.*,
i.default_image_file_name AS file_name,
ip.price_1, ip.bargain_price_1
FROM
item_prices ip
RIGHT JOIN
items i
ON
i.id = ip.item_id
AND
ip.customergroup_id = ".$this->db->real_escape_string($this->base_object->customer_group->price_group_id)."
RIGHT JOIN
item_structure_assign isa
ON
i.id = isa.item_id
WHERE
i.active = 1
AND
i.id IN (".implode(',', $result['data']).")
AND
i.parent_id = 0
AND
isa.structure_id = ".$this->db->real_escape_string($search['item_category'])."
GROUP BY
i.id
ORDER BY
i.name DESC
";
} else {
$sql = "
SELECT
i.*,
i.default_image_file_name AS file_name,
ip.price_1, ip.bargain_price_1
FROM
item_prices ip
RIGHT JOIN
items i
ON
i.id = ip.item_id
AND
ip.customergroup_id = ".$this->db->real_escape_string($this->base_object->customer_group->price_group_id)."
WHERE
i.active = 1
AND
i.id IN (".implode(',', $result['data']).")
AND
parent_id = 0
GROUP BY
i.id
ORDER BY
i.name DESC
";
}
}
@@ -0,0 +1,103 @@
<?php
$matchingItemNumberFirst = true;
include_once 'itemsearch.class.php';
$searchString = $search['search_item'];
$ItemsClass = new ItemSearch($this->base_object);
$searchString = trim($searchString);
// Simple fix: Keep full string for multi-word searches
$strings = explode(' ', $searchString);
if (count($strings) > 1) {
// For multi-word searches, keep original string if it looks like device model
if (preg_match('/^[A-Z]{2,4}\s+[A-Z0-9+]{2,6}\s+[A-Z+]{1,4}(\s+[A-Z]{2,4})?$/i', $searchString)) {
// Keep original device model string like "WTV 8734 XCM" or "KR 19F4 A++ IN"
$searchString = trim($searchString);
} else {
// Fallback to old logic for other multi-word searches
$searchString = '';
$string_type = 0;
$strings = array_reverse($strings);
foreach ($strings as $str) {
$str = trim($str);
if (ctype_digit($str)) {
$searchString = $str;
$string_type = 2;
} else if (!ctype_alpha($str) && $string_type != 2) {
$searchString = $str;
$string_type = 1;
} else if ($string_type == 0) {
$searchString = $str;
}
}
}
}
$result = $ItemsClass->searchItems($searchString);
if (!isset($this->db)) {
$this->db = $this->base_object->db;
}
if ($result['data'] && count($result['data']) > 0) {
if (isset($search['item_category']) && $search['item_category'] > 0) {
$sql = "
SELECT
i.*,
i.default_image_file_name AS file_name,
ip.price_1, ip.bargain_price_1
FROM
item_prices ip
RIGHT JOIN
items i
ON
i.id = ip.item_id
AND
ip.customergroup_id = ".$this->db->real_escape_string($this->base_object->customer_group->price_group_id)."
RIGHT JOIN
item_structure_assign isa
ON
i.id = isa.item_id
WHERE
i.active = 1
AND
i.id IN (".implode(',', $result['data']).")
AND
i.parent_id = 0
AND
isa.structure_id = ".$this->db->real_escape_string($search['item_category'])."
GROUP BY
i.id
ORDER BY
i.name DESC
";
} else {
$sql = "
SELECT
i.*,
i.default_image_file_name AS file_name,
ip.price_1, ip.bargain_price_1
FROM
item_prices ip
RIGHT JOIN
items i
ON
i.id = ip.item_id
AND
ip.customergroup_id = ".$this->db->real_escape_string($this->base_object->customer_group->price_group_id)."
WHERE
i.active = 1
AND
i.id IN (".implode(',', $result['data']).")
AND
parent_id = 0
GROUP BY
i.id
ORDER BY
i.name DESC
";
}
}
@@ -0,0 +1,103 @@
<?php
$matchingItemNumberFirst = true;
include_once 'itemsearch.class.php';
$searchString = $search['search_item'];
$ItemsClass = new ItemSearch($this->base_object);
$searchString = trim($searchString);
// Simple fix: Keep full string for multi-word searches
$strings = explode(' ', $searchString);
if (count($strings) > 1) {
// For multi-word searches, keep original string if it contains device model patterns
if (preg_match('/^[A-Z]{2,4}\s+\d{3,5}\s+[A-Z]{2,4}$/', $searchString)) {
// Keep original device model string like "WTV 8734 XCM"
$searchString = trim($searchString);
} else {
// Fallback to old logic for other multi-word searches
$searchString = '';
$string_type = 0;
$strings = array_reverse($strings);
foreach ($strings as $str) {
$str = trim($str);
if (ctype_digit($str)) {
$searchString = $str;
$string_type = 2;
} else if (!ctype_alpha($str) && $string_type != 2) {
$searchString = $str;
$string_type = 1;
} else if ($string_type == 0) {
$searchString = $str;
}
}
}
}
$result = $ItemsClass->searchItems($searchString);
if (!isset($this->db)) {
$this->db = $this->base_object->db;
}
if ($result['data'] && count($result['data']) > 0) {
if (isset($search['item_category']) && $search['item_category'] > 0) {
$sql = "
SELECT
i.*,
i.default_image_file_name AS file_name,
ip.price_1, ip.bargain_price_1
FROM
item_prices ip
RIGHT JOIN
items i
ON
i.id = ip.item_id
AND
ip.customergroup_id = ".$this->db->real_escape_string($this->base_object->customer_group->price_group_id)."
RIGHT JOIN
item_structure_assign isa
ON
i.id = isa.item_id
WHERE
i.active = 1
AND
i.id IN (".implode(',', $result['data']).")
AND
i.parent_id = 0
AND
isa.structure_id = ".$this->db->real_escape_string($search['item_category'])."
GROUP BY
i.id
ORDER BY
i.name DESC
";
} else {
$sql = "
SELECT
i.*,
i.default_image_file_name AS file_name,
ip.price_1, ip.bargain_price_1
FROM
item_prices ip
RIGHT JOIN
items i
ON
i.id = ip.item_id
AND
ip.customergroup_id = ".$this->db->real_escape_string($this->base_object->customer_group->price_group_id)."
WHERE
i.active = 1
AND
i.id IN (".implode(',', $result['data']).")
AND
parent_id = 0
GROUP BY
i.id
ORDER BY
i.name DESC
";
}
}
@@ -0,0 +1,30 @@
<?php
if (!is_array($item_ids) || count($item_ids) <= 0) {
include_once 'itemsearch.class.php';
$ItemsClass = new ItemSearch($this->base_object);
//$result = $ItemsClass->searchItems($search['search_item'], true);
$item_ids = $result['data'];
}
if (is_array($item_ids) && count($item_ids) > 0) {
$sql = "
SELECT
wg.id,
count(wg.id) AS found_items
FROM
structure wg
LEFT JOIN
item_structure_assign isa
ON
wg.id = isa.structure_id
WHERE
isa.item_id IN (".implode(',', $item_ids).")
AND
wg.active=1
GROUP BY
wg.id
";
}
@@ -0,0 +1,10 @@
<?php
include_once 'itemsearch.class.php';
$ItemsClass = new ItemSearch($this->base_object);
$result = $ItemsClass->searchItems($search);
$this->layout_object->assign('item_search', $result);
$return = $this->layout_object->_fetch('live_search.tpl');
@@ -0,0 +1,93 @@
<?php
// get for intelectra geraetezuordnung
/*if ($obj->attribute_17 != '') {
$sql = "SELECT * FROM import_geraetezuordnung WHERE anr='" . $obj->attribute_17 . "'";
$result = $this->db->query($sql);
}
else {
$sql = "SELECT * FROM import_geraetezuordnung WHERE anr='" . $obj->number . "'";
$result = $this->db->query($sql);
}*/
if ($obj->krempl_id) {
$sql = "SELECT * FROM krempl_artikelgeraet_22 ka
left join krempl_geraete_22 kg on kg.id=ka.geraet
WHERE ka.ersatzteil=" . $this->db->real_escape_string($obj->krempl_id) . " AND not isnull(nr)";
$result = $this->db->query($sql);
}
$obj->geraetezuordnung = array();
if ($result) {
while ($obj1 = $result->fetch_object()) {
$obj->geraetezuordnung[] = $obj1;
}
}
// get parent warengruppe
$sql = "select i.name, s.name, s2.name as wg from items i
left join item_structure_assign isa on isa.item_id=i.id
left join structure s on s.id=isa.structure_id
left join structure s2 on s2.id=s.parent_id
where i.id=" . $obj->id .' AND s.active=1 LIMIT 1';
$result = $this->db->query($sql);
$parent_warengruppe = '';
if ($result) {
while ($obj1 = $result->fetch_object()) {
$parent_warengruppe = $obj1->wg;
}
}
$table_data = array();
foreach ($obj->geraetezuordnung as $geraet) {
$nr1 = str_replace('#', '', $geraet->nr);
$nr1 = str_replace('_', ' ', $nr1);
$nr2 = str_replace('#', '', $geraet->produktionsstart);
$nr2 = str_replace('_', ' ', $nr2);
$nr3 = str_replace('#', '', $geraet->produktionsende);
$nr3 = str_replace('_', ' ', $nr3);
$nr3 = empty($nr3) ? "" : " - " . $nr3;
$nr2 = $nr2.$nr3;
$bezeichnungoriginal = str_replace('#', '', $geraet->bezeichnungoriginal);
$bezeichnungoriginal = str_replace('_', ' ', $bezeichnungoriginal);
$einkaufsmoeglichkeitencached = $geraet->einkaufsmoeglichkeitencached . ' ' . $geraet->zusatz;
$table_data[$einkaufsmoeglichkeitencached][$bezeichnungoriginal][] = array($nr1, $nr2);
}
$html = '<table border="0" cellpadding="2" cellspacing="0">';
foreach ($table_data as $key => $marken) {
$y = 0;
$html .= '<tr class="intelectra_item_table_header"><td colspan="3"><h4><b>'.$obj->name.' passend zu ' . $key . ' '.$parent_warengruppe.'</b></h4></tr>';
$html .= '<tr class="intelectra_item_table_header"><td>Ger&auml;te-/Modellbezeichnung</td><td>E-, Service-, Produktions- oder Hauptnummer</td><td>Zusatz-, F- oder Seriennummer oder Fertigungsdatum</td></tr>';
foreach ($marken as $geraet => $nummern) {
$color = 'intelectra_table_row1';
if ($y % 2 == 1) {
$color = 'intelectra_table_row2';
}
$z = 0;
foreach ($nummern as $nummer) {
if ($z == 0) {
$html .= '<tr class="' . $color . '"><td>' . $geraet . '</td><td>' . $nummer[0] . '</td><td>' . $nummer[1] . '</td></tr>';
} else {
$html .= '<tr class="' . $color . '"><td>&nbsp;</td><td>' . $nummer[0] . '</td><td>' . $nummer[1] . '</td></tr>';
}
$z++;
}
$y++;
}
}
$html .= '</table>';
$obj->geraetezuordnung = $html;
// base price calc
if ($obj->attribute_11 && $obj->attribute_15) {
$obj->sample_unit = $obj->attribute_15;
if (strstr($obj->sample_unit, '100')) {
$obj->sample_price = $obj->shop_price_1 / ($obj->attribute_11 * 10);
} else {
$obj->sample_price = $obj->shop_price_1 / $obj->attribute_11;
}
}
@@ -0,0 +1,64 @@
if ($obj->krempl_id) {
$sql = "SELECT * FROM krempl_artikelgeraet ka
left join krempl_geraete kg on kg.id=ka.geraet
WHERE ersatzteil=" . $this->db->real_escape_string($obj->krempl_id);
$result = $this->db->query($sql);
}
$obj->geraetezuordnung = array();
if ($result) {
while ($obj1 = $result->fetch_object()) {
$obj->geraetezuordnung[] = $obj1;
}
}
// get parent warengruppe
$sql = "select i.name, s.name, s2.name as wg from items i
left join item_structure_assign isa on isa.item_id=i.id
left join structure s on s.id=isa.structure_id
left join structure s2 on s2.id=s.parent_id
where i.id=" . $obj->id .' AND s.active=1 LIMIT 1';
$result = $this->db->query($sql);
$parent_warengruppe = '';
if ($result) {
while ($obj1 = $result->fetch_object()) {
$parent_warengruppe = $obj1->wg;
}
}
$table_data = array();
foreach ($obj->geraetezuordnung as $geraet) {
$nr1 = str_replace('#', '', $geraet->nr);
$nr1 = str_replace('_', ' ', $nr1);
$nr2 = str_replace('#', '', $geraet->nr2);
$nr2 = str_replace('_', ' ', $nr2);
$bezeichnungoriginal = str_replace('#', '', $geraet->bezeichnungoriginal);
$bezeichnungoriginal = str_replace('_', ' ', $bezeichnungoriginal);
$einkaufsmoeglichkeitencached = $geraet->einkaufsmoeglichkeitencached . ' ' . $geraet->zusatz;
$table_data[$einkaufsmoeglichkeitencached][$bezeichnungoriginal][] = array($nr1, $nr2);
}
$html = '<table border="0" cellpadding="2" cellspacing="0">';
foreach ($table_data as $key => $marken) {
$y = 0;
$html .= '<tr class="intelectra_item_table_header"><td colspan="3"><h4><b>'.$obj->name.' passend zu ' . $key . ' '.$parent_warengruppe.'</b></h4></tr>';
$html .= '<tr class="intelectra_item_table_header"><td>Ger&auml;te-/Modellbezeichnung</td><td>E-, Service-, Produktions- oder Hauptnummer</td><td>Zusatz-, F- oder Seriennummer oder Fertigungsdatum</td></tr>';
foreach ($marken as $geraet => $nummern) {
$color = 'intelectra_table_row1';
if ($y % 2 == 1) {
$color = 'intelectra_table_row2';
}
$z = 0;
foreach ($nummern as $nummer) {
if ($z == 0) {
$html .= '<tr class="' . $color . '"><td>' . $geraet . '</td><td>' . $nummer[0] . '</td><td>' . $nummer[1] . '</td></tr>';
} else {
$html .= '<tr class="' . $color . '"><td>&nbsp;</td><td>' . $nummer[0] . '</td><td>' . $nummer[1] . '</td></tr>';
}
$z++;
}
$y++;
}
}
$html .= '</table>';
$obj->geraetezuordnung = $html;
@@ -0,0 +1,322 @@
<?php
class ItemSearch {
private $config;
protected $base_object;
protected $db;
private $searchData = array();
public function __construct($base_object) {
$this->config = $base_object->config;
$this->db = $base_object->db;
$this->base_object = $base_object;
}
public function searchItems($searchString) {
$timer_start = microtime(true);
// $searchString_trimmed = trim($searchString);
// $searchString_filtered = preg_replace("@[^\p{L}\p{N}]@sui", '', $searchString_trimmed);
$results = false;
if (ctype_digit($searchString)) {
$results = $this->_getItemByNumber($searchString);
}
if (!$results) {
$results = $this->_searchItemWithinItemsAndAssociations('', $searchString);
}
if (!$results) {
$results = $this->_getItembyKremplNumber($searchString);
}
if (!$results) {
$results = Array();
}
$running_time = microtime(true) - $timer_start;
$result = array(
'searchstring' => $searchString,
'results' => count($results),
'queryTime' => $running_time,
'data' => $results
);
$this->searchData = array(
'string1' => $searchManufacturer,
'string2' => $searchString,
'used1' => $searchManufacturer_ready,
'used2' => $searchString_ready,
'results' => count($results)
);
return $result;
}
private function _searchItemWithinItemsAndAssociations($searchManufacturer, $searchString, $idsOnly = false, $searchManufacturer_filtered = false, $searchString_filtered = false, $searchRefinement_filtered = false) {
$queries = $this->_queryLike($searchManufacturer_filtered, $searchString);
$results = array();
$idArray = array();
foreach ($queries as $query) {
$rs = $this->db->query($query);
while ($I = $rs->fetch_object()) {
if ($I->anumber) {
$results[$I->anumber] = $I->anumber;
$idArray[] = $I->anumber;
}
}
}
//$idArray = $this->_getIdsByNumbers($results, true, $searchRefinement_filtered);
return $idArray;
}
private function _getIdsByNumbers($numbers, $withAlternatives = true, $refinement = false) {
if (is_array($numbers) && count($numbers) > 0) {
$numberList = implode("','", $numbers);
$queryAddAlternatives = '';
if ($withAlternatives) {
$queryAddAlternatives = "
OR
attribute_17 IN ('" . $numberList . "')
";
}
$queryAddRefinement = '';
if ($refinement) {
$refinement = $this->db->real_escape_string($refinement);
$queryAddRefinement = "
AND (
name LIKE '%" . $refinement . "%'
OR
detail_description LIKE '%" . $refinement . "%'
OR
detail_description LIKE '%" . htmlentities($refinement, null, 'UTF-8') . "%'
OR
attribute_1 LIKE '%" . $refinement . "%'
OR
attribute_9 LIKE '%" . $refinement . "%'
OR
attribute_20 LIKE '%" . $refinement . "%'
OR
attribute_6 LIKE '%" . $refinement . "%'
)
";
$queryAddRefinement = "
AND (
name LIKE '%" . $refinement . "%'
OR
attribute_1 LIKE '%" . $refinement . "%'
OR
attribute_9 LIKE '%" . $refinement . "%'
OR
attribute_20 LIKE '%" . $refinement . "%'
OR
attribute_6 LIKE '%" . $refinement . "%'
)
";
}
// $query = "
// SELECT
// id
// FROM
// items
// WHERE (
// number IN ('" . $numberList . "') OR
// attribute_7 IN ('" . $numberList . "')
// " . $queryAddAlternatives . "
// )
// " . $queryAddRefinement . "
// ";
$query = "
SELECT
id
FROM
items
WHERE
attribute_7 IN ('" . $numberList . "')
";
$rs = $this->db->query($query);
// echo '<pre>';echo $query;exit();
$idArray = array();
while ($I = $rs->fetch_object()) {
$idArray[$I->id] = $I->id;
}
return $idArray;
}
return array();
}
private function _queryLike($searchManufacturer_filtered, $searchString_filtered) {
$searchManufacturer_filtered = $this->db->real_escape_string($searchManufacturer_filtered);
$searchString_filtered = $this->db->real_escape_string($searchString_filtered);
$queries = array();
if (ctype_alpha($searchString_filtered)) {
$queries[] = "
SELECT
id AS anumber
FROM
items
WHERE
active = 1
AND
parent_id = 0
AND (
REPLACE(REPLACE(REPLACE(vendor_item_number, ' ', ''), '/', ''), '-', '') = '" . $searchString_filtered . "'
OR
REPLACE(REPLACE(REPLACE(name, ' ', ''), '/', ''), '-', '') LIKE '%" . $searchString_filtered . "%'
OR
-- mögliche Aufschrift
REPLACE(REPLACE(REPLACE(attribute_4, ' ', ''), '/', ''), '-', '') LIKE '%" . $searchString_filtered . "%'
OR
-- Aufdrucke
REPLACE(REPLACE(REPLACE(attribute_9, ' ', ''), '/', ''), '-', '') LIKE '%" . $searchString_filtered . "%'
OR
-- Merkmale
REPLACE(REPLACE(REPLACE(attribute_8, ' ', ''), '/', ''), '-', '') LIKE '%" . $searchString_filtered . "%'
OR
-- Internes DB-Feld
REPLACE(REPLACE(REPLACE(attribute_20, ' ', ''), '/', ''), '-', '') LIKE '%" . $searchString_filtered . "%'
OR
-- Synonyme
REPLACE(REPLACE(REPLACE(attribute_6, ' ', ''), '/', ''), '-', '') LIKE '%" . $searchString_filtered . "%'
)
GROUP BY
number
LIMIT 150
";
}
else {
if (!ctype_digit($searchString_filtered) || (ctype_digit($searchString_filtered) && strlen($searchString_filtered) >= 7)) {
$queries[] = "
SELECT
DISTINCT i.id AS anumber
FROM
krempl_geraete kg
LEFT JOIN krempl_artikelgeraet ka on ka.geraet=kg.id
LEFT JOIN items i on i.krempl_id=ka.ersatzteil
WHERE
REPLACE(REPLACE(REPLACE(kg.nr, ' ', ''), '/', ''), '-', '') LIKE '%" . $searchString_filtered . "%'
OR
REPLACE(REPLACE(REPLACE(kg.bezeichnung1, ' ', ''), '/', ''), '-', '') LIKE '%" . $searchString_filtered . "%'
LIMIT 150
";
}
$queries[] = "
SELECT
DISTINCT i.id AS anumber
FROM
passendwie_2018 pw
LEFT JOIN
items i on i.attribute_7=pw.navisionid
WHERE
REPLACE(REPLACE(REPLACE(bestellcode, ' ', ''), '/', ''), '-', '') LIKE '%" . $searchString_filtered . "%'
LIMIT 150
";
$queries[] = "
SELECT
id AS anumber
FROM
items
WHERE
active = 1
AND
REPLACE(REPLACE(REPLACE(attribute_20, ' ', ''), '/', ''), '-', '') LIKE '%" . $searchString_filtered . "%'
GROUP BY
number
LIMIT 50
";
}
return $queries;
}
private function _getItemByNumber($searchString_ready) {
$query = "
SELECT
id
FROM
items
WHERE
number = '" . $this->db->real_escape_string($searchString_ready) . "' OR
ean_code = '" . $this->db->real_escape_string($searchString_ready) . "' OR
name LIKE '%" . $this->db->real_escape_string($searchString_ready) . "%' OR
attribute_20 like '%" . $this->db->real_escape_string($searchString_ready) . "%' OR
attribute_7 = '" . $this->db->real_escape_string($searchString_ready) . "'
LIMIT 150
";
$rs = $this->db->query($query);
$idArray = array();
if ($rs->num_rows > 0) {
while ($I = $rs->fetch_object()) {
$idArray[$I->id] = $I->id;
}
return $idArray;
} else {
return false;
}
}
private function _getItembyKremplNumber($searchString_ready) {
$query = "
SELECT i.id FROM krempl_artikelgeraet_22 ka
LEFT JOIN krempl_geraete_22 kg ON kg.id = ka.geraet
LEFT JOIN krempl_id2022 ki ON ersatzteil = ki.id
LEFT JOIN items i ON ki.navisionid = i.attribute_7
WHERE not isnull(nr) AND nr LIKE '%".$this->db->real_escape_string($searchString_ready)."%' LIMIT 150;
";
$rs = $this->db->query($query);
$idArray = array();
if ($rs->num_rows > 0) {
while ($I = $rs->fetch_object()) {
if (isset($I->id))
$idArray[$I->id] = $I->id;
}
return $idArray;
} else {
return false;
}
}
public function makeHistory() {
$indexString = $this->searchData['used1'] . $this->searchData['used2'];
$query = "
INSERT INTO
search_history (id, string1, string2, used1, used2, results)
VALUES (
'" . $this->db->real_escape_string($indexString) . "',
'" . $this->db->real_escape_string($this->searchData['string1']) . "',
'" . $this->db->real_escape_string($this->searchData['string2']) . "',
'" . $this->db->real_escape_string($this->searchData['used1']) . "',
'" . $this->db->real_escape_string($this->searchData['used2']) . "',
'" . $this->db->real_escape_string($this->searchData['results']) . "'
)
ON DUPLICATE KEY
UPDATE
cnt = cnt + 1,
results = VALUES(results)
";
$this->db->query($query);
}
}
@@ -0,0 +1,297 @@
<?php
class ItemSearch {
private $config;
protected $base_object;
protected $db;
private $searchData = array();
public function __construct($base_object) {
$this->config = $base_object->config;
$this->db = $base_object->db;
$this->base_object = $base_object;
}
public function searchItems($searchString) {
$timer_start = microtime(true);
// $searchString_trimmed = trim($searchString);
// $searchString_filtered = preg_replace("@[^\p{L}\p{N}]@sui", '', $searchString_trimmed);
$results = false;
if (ctype_digit($searchString)) {
$results = $this->_getItemByNumber($searchString);
}
if (!$results) {
$results = $this->_searchItemWithinItemsAndAssociations('', $searchString);
}
$running_time = microtime(true) - $timer_start;
$result = array(
'searchstring' => $searchString,
'results' => count($results),
'queryTime' => $running_time,
'data' => $results
);
$this->searchData = array(
'string1' => $searchManufacturer,
'string2' => $searchString,
'used1' => $searchManufacturer_ready,
'used2' => $searchString_ready,
'results' => count($results)
);
return $result;
}
private function _searchItemWithinItemsAndAssociations($searchManufacturer, $searchString, $idsOnly = false, $searchManufacturer_filtered = false, $searchString_filtered = false, $searchRefinement_filtered = false) {
$queries = $this->_queryLike($searchManufacturer_filtered, $searchString);
$results = array();
$idArray = array();
foreach ($queries as $query) {
$rs = $this->db->query($query);
while ($I = $rs->fetch_object()) {
if ($I->anumber) {
$results[$I->anumber] = $I->anumber;
$idArray[] = $I->anumber;
}
}
}
//$idArray = $this->_getIdsByNumbers($results, true, $searchRefinement_filtered);
return $idArray;
}
private function _getIdsByNumbers($numbers, $withAlternatives = true, $refinement = false) {
if (is_array($numbers) && count($numbers) > 0) {
$numberList = implode("','", $numbers);
$queryAddAlternatives = '';
if ($withAlternatives) {
$queryAddAlternatives = "
OR
attribute_17 IN ('" . $numberList . "')
";
}
$queryAddRefinement = '';
if ($refinement) {
$refinement = $this->db->real_escape_string($refinement);
$queryAddRefinement = "
AND (
name LIKE '%" . $refinement . "%'
OR
detail_description LIKE '%" . $refinement . "%'
OR
detail_description LIKE '%" . htmlentities($refinement, null, 'UTF-8') . "%'
OR
attribute_1 LIKE '%" . $refinement . "%'
OR
attribute_9 LIKE '%" . $refinement . "%'
OR
attribute_20 LIKE '%" . $refinement . "%'
OR
attribute_6 LIKE '%" . $refinement . "%'
)
";
$queryAddRefinement = "
AND (
name LIKE '%" . $refinement . "%'
OR
attribute_1 LIKE '%" . $refinement . "%'
OR
attribute_9 LIKE '%" . $refinement . "%'
OR
attribute_20 LIKE '%" . $refinement . "%'
OR
attribute_6 LIKE '%" . $refinement . "%'
)
";
}
// $query = "
// SELECT
// id
// FROM
// items
// WHERE (
// number IN ('" . $numberList . "') OR
// attribute_7 IN ('" . $numberList . "')
// " . $queryAddAlternatives . "
// )
// " . $queryAddRefinement . "
// ";
$query = "
SELECT
id
FROM
items
WHERE
attribute_7 IN ('" . $numberList . "')
";
$rs = $this->db->query($query);
// echo '<pre>';echo $query;exit();
$idArray = array();
while ($I = $rs->fetch_object()) {
$idArray[$I->id] = $I->id;
}
return $idArray;
}
return array();
}
private function _queryLike($searchManufacturer_filtered, $searchString_filtered) {
$searchManufacturer_filtered = $this->db->real_escape_string($searchManufacturer_filtered);
$searchString_filtered = $this->db->real_escape_string($searchString_filtered);
$queries = array();
if (ctype_alpha($searchString_filtered)) {
$queries[] = "
SELECT
id AS anumber
FROM
items
WHERE
active = 1
AND
parent_id = 0
AND (
REPLACE(REPLACE(REPLACE(vendor_item_number, ' ', ''), '/', ''), '-', '') = '" . $searchString_filtered . "'
OR
REPLACE(REPLACE(REPLACE(name, ' ', ''), '/', ''), '-', '') LIKE '%" . $searchString_filtered . "%'
OR
-- mögliche Aufschrift
REPLACE(REPLACE(REPLACE(attribute_4, ' ', ''), '/', ''), '-', '') LIKE '%" . $searchString_filtered . "%'
OR
-- Aufdrucke
REPLACE(REPLACE(REPLACE(attribute_9, ' ', ''), '/', ''), '-', '') LIKE '%" . $searchString_filtered . "%'
OR
-- Merkmale
REPLACE(REPLACE(REPLACE(attribute_8, ' ', ''), '/', ''), '-', '') LIKE '%" . $searchString_filtered . "%'
OR
-- Internes DB-Feld
REPLACE(REPLACE(REPLACE(attribute_20, ' ', ''), '/', ''), '-', '') LIKE '%" . $searchString_filtered . "%'
OR
-- Synonyme
REPLACE(REPLACE(REPLACE(attribute_6, ' ', ''), '/', ''), '-', '') LIKE '%" . $searchString_filtered . "%'
)
GROUP BY
number
LIMIT 100
";
}
else {
// $queries[] = "
// SELECT
// DISTINCT anr AS anumber
// FROM
// import_geraetezuordnung
// WHERE
// REPLACE(REPLACE(REPLACE(nr, ' ', ''), '/', ''), '-', '') LIKE '%" . $searchString_filtered . "%'
// OR
// REPLACE(REPLACE(REPLACE(bezeichnung1, ' ', ''), '/', ''), '-', '') LIKE '%" . $searchString_filtered . "%'
// ";
$queries[] = "
SELECT
DISTINCT i.id AS anumber
FROM
import_geraetezuordnung kg
LEFT JOIN items i on i.attribute_7=kg.navisionid
WHERE
REPLACE(REPLACE(REPLACE(kg.nr, ' ', ''), '/', ''), '-', '') LIKE '%" . $searchString_filtered . "%'
OR
REPLACE(REPLACE(REPLACE(kg.bezeichnung1, ' ', ''), '/', ''), '-', '') LIKE '%" . $searchString_filtered . "%'
LIMIT 100
";
/*$queries[] = "
SELECT
DISTINCT i.id AS anumber
FROM
krempl_geraete kg
LEFT JOIN krempl_artikelgeraet ka on ka.geraet=kg.id
LEFT JOIN items i on i.krempl_id=ka.ersatzteil
WHERE
REPLACE(REPLACE(REPLACE(kg.nr, ' ', ''), '/', ''), '-', '') LIKE '%" . $searchString_filtered . "%'
OR
REPLACE(REPLACE(REPLACE(kg.bezeichnung1, ' ', ''), '/', ''), '-', '') LIKE '%" . $searchString_filtered . "%'
";*/
$queries[] = "
SELECT
DISTINCT i.id AS anumber
FROM
passendwie_2018 pw
LEFT JOIN items i on i.attribute_7=pw.navisionid
WHERE
REPLACE(REPLACE(REPLACE(bestellcode, ' ', ''), '/', ''), '-', '') LIKE '%" . $searchString_filtered . "%'
LIMIT 100
";
}
return $queries;
}
private function _getItemByNumber($searchString_ready) {
$query = "
SELECT
id
FROM
items
WHERE
number = '" . $this->db->real_escape_string($searchString_ready) . "' OR
ean_code = '" . $this->db->real_escape_string($searchString_ready) . "' OR
attribute_7 = '" . $this->db->real_escape_string($searchString_ready) . "'
LIMIT 100
";
$rs = $this->db->query($query);
$idArray = array();
if ($rs->num_rows > 0) {
while ($I = $rs->fetch_object()) {
$idArray[$I->id] = $I->id;
}
return $idArray;
}
else {
return false;
}
}
public function makeHistory() {
$indexString = $this->searchData['used1'] . $this->searchData['used2'];
$query = "
INSERT INTO
search_history (id, string1, string2, used1, used2, results)
VALUES (
'" . $this->db->real_escape_string($indexString) . "',
'" . $this->db->real_escape_string($this->searchData['string1']) . "',
'" . $this->db->real_escape_string($this->searchData['string2']) . "',
'" . $this->db->real_escape_string($this->searchData['used1']) . "',
'" . $this->db->real_escape_string($this->searchData['used2']) . "',
'" . $this->db->real_escape_string($this->searchData['results']) . "'
)
ON DUPLICATE KEY
UPDATE
cnt = cnt + 1,
results = VALUES(results)
";
$this->db->query($query);
}
}
@@ -0,0 +1,106 @@
<?php
$matchingItemNumberFirst = true;
include_once 'itemsearch.class.php';
$searchString = $search['search_item'];
$ItemsClass = new ItemSearch($this->base_object);
$strings = explode(' ', $searchString);
if (count($strings) == 1) {
$searchString = trim($searchString);
}
else {
$searchString = '';
$string_type = 0;
$strings = array_reverse($strings);
foreach ($strings as $str) {
$str = trim($str);
// ganzzahl
if (ctype_digit($str)) {
$searchString = $str;
$string_type = 2;
}
elseif (!ctype_alpha($str) && $string_type != 2) {
$searchString = $str;
$string_type = 1;
}
elseif ($string_type == 0) {
$searchString = $str;
}
}
}
$result = $ItemsClass->searchItems($searchString);
$ItemsClass->makeHistory();
if (!isset($this->db)) {
$this->db = $this->base_object->db;
}
if ($result['data'] && count($result['data']) > 0) {
if (isset($search['item_category']) && $search['item_category'] > 0) {
$sql = "
SELECT
i.*,
i.default_image_file_name AS file_name,
ip.price_1, ip.bargain_price_1
FROM
item_prices ip
RIGHT JOIN
items i
ON
i.id = ip.item_id
AND
ip.customergroup_id = " . $this->db->real_escape_string($this->base_object->customer_group->price_group_id) . "
RIGHT JOIN
item_structure_assign isa
ON
i.id = isa.item_id
WHERE
i.active = 1
AND
i.id IN (
" . implode(',', $result['data']) . "
)
AND
i.parent_id = 0
AND
isa.structure_id = " . $this->db->real_escape_string($search['item_category']) . "
GROUP BY
i.id
ORDER BY
i.name DESC
";
} else {
$sql = "
SELECT
i.*,
i.default_image_file_name AS file_name,
ip.price_1, ip.bargain_price_1
FROM
item_prices ip
RIGHT JOIN
items i
ON
i.id = ip.item_id
AND
ip.customergroup_id = " . $this->db->real_escape_string($this->base_object->customer_group->price_group_id) . "
WHERE
i.active = 1
AND
i.id IN (
" . implode(',', $result['data']) . "
)
AND
parent_id = 0
GROUP BY
i.id
ORDER BY
i.name DESC
";
}
}
@@ -0,0 +1,32 @@
<?php
if (!is_array($item_ids) || count($item_ids) <= 0) {
include_once 'itemsearch.class.php';
$ItemsClass = new ItemSearch($this->base_object);
//$result = $ItemsClass->searchItems($search['search_item'], true);
$item_ids = $result['data'];
}
if (is_array($item_ids) && count($item_ids) > 0) {
$sql = "
SELECT
wg.id,
count(wg.id) AS found_items
FROM
structure wg
LEFT JOIN
item_structure_assign isa
ON
wg.id = isa.structure_id
WHERE
isa.item_id IN (
" . implode(',', $item_ids) . "
)
AND
wg.active=1
GROUP BY
wg.id
";
}
@@ -0,0 +1,9 @@
<?php
include_once 'itemsearch.class.php';
$ItemsClass = new ItemSearch($this->base_object);
$result = $ItemsClass->searchItems($search);
$this->layout_object->assign('item_search', $result);
$return = $this->layout_object->_fetch('live_search.tpl');
@@ -0,0 +1,121 @@
<?php
// get for intelectra geraetezuordnung
/*if ($obj->attribute_17 != '') {
$sql = "SELECT * FROM import_geraetezuordnung WHERE anr='".$obj->attribute_17."'";
$result = $this->db->query($sql);
}
else {
$sql = "SELECT * FROM import_geraetezuordnung WHERE anr='".$obj->number."'";
$result = $this->db->query($sql);
}*/
$result = null;
if (strlen($obj->number) == 8) {
$sql = "SELECT g.*
FROM krempl_geraete_22 g
INNER JOIN krempl_artikelgeraet_22 ag ON g.id = ag.geraet
INNER JOIN krempl_passendwie pw ON ag.ersatzteil = pw.id
INNER JOIN items i ON pw.navisionid = i.krempl_id
WHERE i.number = ".$this->db->real_escape_string($obj->number).";";
$result = $this->db->query($sql);
}
if ($obj->krempl_id && (!isset($result) || $result->num_rows < 1)) {
$sql = "SELECT * FROM krempl_artikelgeraet_22 ka
left join krempl_geraete_22 kg on kg.id=ka.geraet
WHERE ka.ersatzteil=".$this->db->real_escape_string($obj->krempl_id)." AND not isnull(nr)";
$result = $this->db->query($sql);
}
$obj->geraetezuordnung = array();
if ($result) {
while ($obj1 = $result->fetch_object()) {
$obj->geraetezuordnung[] = $obj1;
}
}
// get parent warengruppe
$sql = "select i.name, s.name, s2.name as wg from items i
left join item_structure_assign isa on isa.item_id=i.id
left join structure s on s.id=isa.structure_id
left join structure s2 on s2.id=s.parent_id
where i.id=".$obj->id.' AND s.active=1 LIMIT 1';
$result = $this->db->query($sql);
$parent_warengruppe = '';
if ($result) {
while ($obj1 = $result->fetch_object()) {
$parent_warengruppe = $obj1->wg;
}
}
$table_data = array();
foreach ($obj->geraetezuordnung as $geraet) {
$nr1 = str_replace('#', '', $geraet->nr);
$nr1 = str_replace('_', ' ', $nr1);
$nr2 = str_replace('#', '', $geraet->produktionsstart);
$nr2 = str_replace('_', ' ', $nr2);
$nr3 = str_replace('#', '', $geraet->produktionsende);
$nr3 = str_replace('_', ' ', $nr3);
$nr3 = empty($nr3) ? "" : " - ".$nr3;
$nr2 = $nr2.$nr3;
$bezeichnungoriginal = str_replace('#', '', $geraet->bezeichnungoriginal);
$bezeichnungoriginal = str_replace('_', ' ', $bezeichnungoriginal);
$bezeichnungoriginal = preg_replace('/\r\n|\n|\r/', '', $bezeichnungoriginal);
// Überprüfe, ob $bezeichnungoriginal leer ist, und verwende $geraet->modellBezeichnung falls ja
if (empty($bezeichnungoriginal) && !empty($geraet->modellBezeichnung)) {
$bezeichnungoriginal = str_replace('#', '', $geraet->modellBezeichnung);
$bezeichnungoriginal = str_replace('_', ' ', $bezeichnungoriginal);// Ersetze durch modellBezeichnung
} elseif (empty($bezeichnungoriginal)) {
$bezeichnungoriginal = "-"; // Oder einen Platzhalter, wenn auch modellBezeichnung leer ist
}
$einkaufsmoeglichkeitencached = $nr1." ".$nr2;
$table_data[$einkaufsmoeglichkeitencached][$bezeichnungoriginal][] = array($nr1, $nr2);
}
$html = '<table border="0" cellpadding="2" cellspacing="0">';
foreach ($table_data as $key => $marken) {
$y = 0;
$html .= '<tr class="intelectra_item_table_header"><td colspan="3"><h4><b>'.$obj->name.' passend zu '.$key.' '.$parent_warengruppe.'</b></h4></tr>';
$html .= '<tr class="intelectra_item_table_header"><td>Ger&auml;te-/Modellbezeichnung</td><td>E-, Service-, Produktions- oder Hauptnummer</td><td>Zusatz-, F- oder Seriennummer oder Fertigungsdatum</td></tr>';
foreach ($marken as $geraet => $nummern) {
$color = 'intelectra_table_row1';
if ($y % 2 == 1) {
$color = 'intelectra_table_row2';
}
$z = 0;
foreach ($nummern as $nummer) {
if ($z == 0) {
$html .= '<tr class="'.$color.'"><td>'.$geraet.'</td><td>'.$nummer[0].'</td><td>'.$nummer[1].'</td></tr>';
} else {
$html .= '<tr class="'.$color.'"><td>&nbsp;</td><td>'.$nummer[0].'</td><td>'.$nummer[1].'</td></tr>';
}
$z++;
}
$y++;
}
}
$html .= '</table>';
$obj->geraetezuordnung = $html;
$int = $this->createIntWithTableData($html);
// base price calc
if ($obj->attribute_11 && $obj->attribute_15) {
$obj->sample_unit = $obj->attribute_15;
if (strstr($obj->sample_unit, '100')) {
$obj->sample_price = $obj->shop_price_1 / ($obj->attribute_11 * 10);
} else {
$obj->sample_price = $obj->shop_price_1 / $obj->attribute_11;
}
}
@@ -0,0 +1,372 @@
<?php
class ItemSearch {
private $config;
protected $base_object;
protected $db;
private $searchData = array();
private $pageOffset = 0;
public function __construct($base_object) {
$this->config = $base_object->config;
$this->db = $base_object->db;
$this->base_object = $base_object;
}
public function searchItems($searchString) {
$timer_start = microtime(true);
//echo "searchItems called<br>";
//$searchString_trimmed = trim($searchString);
//$searchString_filtered = preg_replace("@[^\p{L}\p{N}]@sui", '', $searchString_trimmed);
$this->pageOffset = isset($_GET["page"]) ? ($_GET["page"] - 1) : 0;
$results = Array();
$results = array_merge($results, $this->_getItemByNumber($searchString));
$results = array_merge($results, $this->_getItemByText($searchString));
$results = array_merge($results, $this->_searchItemWithinItemsAndAssociations('', $searchString));
$results = array_merge($results, $this->_getItembyKremplNumber($searchString));
$running_time = microtime(true) - $timer_start;
// Paginate result (make solution cleaner in the future)
//$results = array_splice($results, 0, 20);
//echo "results number: ".count($results)."<br>";
$result = array(
'searchstring' => $searchString,
'results' => count($results),
'queryTime' => $running_time,
'data' => $results
);
return $result;
}
private function _searchItemWithinItemsAndAssociations($searchManufacturer, $searchString, $idsOnly = false, $searchManufacturer_filtered = false, $searchString_filtered = false, $searchRefinement_filtered = false) {
$queries = $this->_queryLike($searchManufacturer_filtered, $searchString);
$results = array();
$idArray = array();
foreach ($queries as $query) {
$rs = $this->db->query($query);
if (!$rs) break;
while ($I = $rs->fetch_object()) {
if ($I->anumber) {
$results[$I->anumber] = $I->anumber;
$idArray[] = $I->anumber;
}
}
}
//$idArray = $this->_getIdsByNumbers($results, true, $searchRefinement_filtered);
return $idArray;
}
private function _getIdsByNumbers($numbers, $withAlternatives = true, $refinement = false) {
if (is_array($numbers) && count($numbers) > 0) {
$numberList = implode("','", $numbers);
$queryAddAlternatives = '';
if ($withAlternatives) {
$queryAddAlternatives = " OR attribute_17 IN ('".$numberList."')";
}
$queryAddRefinement = '';
if ($refinement) {
$refinement = $this->db->real_escape_string($refinement);
$queryAddRefinement = "
AND (
name LIKE '%".$refinement."%'
OR
detail_description LIKE '%".$refinement."%'
OR
detail_description LIKE '%".htmlentities($refinement, null, 'UTF-8')."%'
OR
attribute_1 LIKE '%".$refinement."%'
OR
attribute_9 LIKE '%".$refinement."%'
OR
attribute_20 LIKE '%".$refinement."%'
OR
attribute_6 LIKE '%".$refinement."%'
)
";
$queryAddRefinement = "
AND (
name LIKE '%".$refinement."%'
OR
attribute_1 LIKE '%".$refinement."%'
OR
attribute_9 LIKE '%".$refinement."%'
OR
attribute_20 LIKE '%".$refinement."%'
OR
attribute_6 LIKE '%".$refinement."%'
)
";
}
/*$query = "
SELECT
id
FROM
items
WHERE (
number IN ('".$numberList."') OR
number IN ('".$numberList."')
".$queryAddAlternatives."
)
".$queryAddRefinement."
";*/
$query = "
SELECT
id
FROM
items
WHERE
number IN ('".$numberList."')
LIMIT 150";
$idArray = array();
$rs = $this->db->query($query);
if (!$rs) return $idArray;
//echo '<pre>';echo $query;exit();
while ($I = $rs->fetch_object()) {
$idArray[$I->id] = $I->id;
}
return $idArray;
}
return array();
}
private function _queryLike($searchManufacturer_filtered, $searchString_filtered) {
//$searchManufacturer_filtered = $this->db->real_escape_string($searchManufacturer_filtered);
$searchString_filtered = $this->db->real_escape_string($searchString_filtered);
$queries = array();
if (ctype_alpha($searchString_filtered)) {
$queries[] = "
SELECT
id AS anumber
FROM
items
WHERE
active = 1
AND
parent_id = 0
AND (
REPLACE(REPLACE(REPLACE(vendor_item_number, ' ', ''), '/', ''), '-', '') LIKE '%".$searchString_filtered."%'
OR
-- mögliche Aufschrift
attribute_4 LIKE '%".$searchString_filtered."%'
OR
-- Aufdrucke
attribute_9 LIKE '%".$searchString_filtered."%'
OR
-- Synonyme
attribute_6 LIKE '%".$searchString_filtered."%'
)
GROUP BY number LIMIT 150";
} else {
$forwardSlashPos = strpos($searchString_filtered, "/");
if ($forwardSlashPos != false) {
$searchString_filtered = substr($searchString_filtered, 0, $forwardSlashPos);
}
if (!ctype_digit($searchString_filtered) || (ctype_digit($searchString_filtered) && strlen($searchString_filtered) >= 6)) {
$queries[] = "
SELECT DISTINCT i.id AS anumber FROM krempl_geraete_22 kg
LEFT JOIN krempl_artikelgeraet_22 ka on ka.geraet=kg.id
LEFT JOIN items i on i.krempl_id=ka.ersatzteil
WHERE
REPLACE(REPLACE(REPLACE(kg.nr, ' ', ''), '/', ''), '-', '') LIKE '%".$searchString_filtered."%'
OR
REPLACE(REPLACE(REPLACE(kg.bezeichnungoriginal, ' ', ''), '/', ''), '-', '') LIKE '%".$searchString_filtered."%'
LIMIT 150";
}
$queries[] = "
SELECT
DISTINCT items.id AS anumber
FROM
krempl_passendwie pw
LEFT JOIN
items on items.number=pw.navisionid OR items.attribute_7=pw.navisionid
WHERE
REPLACE(REPLACE(REPLACE(bestellcode, ' ', ''), '/', ''), '-', '') LIKE '%".$searchString_filtered."%'
LIMIT 150";
$queries[] = "SELECT id AS anumber FROM items WHERE active = 1 AND
REPLACE(REPLACE(REPLACE(attribute_20, ' ', ''), '/', ''), '-', '') LIKE '%".$searchString_filtered."%'
GROUP BY number LIMIT 150";
}
return $queries;
}
private function _getItemByNumber($searchString_ready) {
if (!is_numeric($searchString_ready)) return Array();
$query = "
SELECT id FROM items WHERE
number = '".$this->db->real_escape_string($searchString_ready)."' OR
attribute_7 = '".$this->db->real_escape_string($searchString_ready)."' OR
ean_code = '".$this->db->real_escape_string($searchString_ready)."'
LIMIT 150";
$rs = $this->db->query($query);
$idArray = array();
if ($rs->num_rows > 0) {
while ($I = $rs->fetch_object()) {
$idArray[$I->id] = $I->id;
}
return $idArray;
} else {
return Array();
}
}
private function _getItemByText($searchString_ready) {
$query = "
SELECT id FROM items WHERE
name LIKE '%".$this->db->real_escape_string($searchString_ready)."%' OR
attribute_20 like '%".$this->db->real_escape_string($searchString_ready)."%' OR
short_description like '%".$this->db->real_escape_string($searchString_ready)."%' OR
detail_description like '%".$this->db->real_escape_string($searchString_ready)."%'
LIMIT 150";
$rs = $this->db->query($query);
$idArray = array();
if ($rs->num_rows > 0) {
while ($I = $rs->fetch_object()) {
$idArray[$I->id] = $I->id;
}
return $idArray;
} else {
return Array();
}
}
private function _getItembyKremplNumberOld($searchString) {
$query = 'SELECT kg.id FROM `krempl_geraete_22` kg where nr LIKE "%'.$searchString.'%" or modellBezeichnung LIKE "%'.$searchString.'%";';
$rs = $this->db->query($query);
$idArray = array();
if ($rs->num_rows > 0) {
$ids = $rs->fetch_all(MYSQLI_NUM)[0];
foreach ($ids as $id) {
$sql = "
SELECT i.id FROM `krempl_item` ki
left join krempl_artikelgeraet_22 ka on ki.id = ka.ersatzteil
left join krempl_geraete_22 kg ON kg.id = ka.geraet
left join items i ON ki.navisionid = i.attribute_7
WHERE ka.geraet = ".$id." ORDER BY `ki`.`navisionid` ASC;
";
/* //TEST ZUM OPTIMIEREN
$sql = "
SELECT i.* FROM items i
INNER JOIN krempl_item ki ON i.attribute_7 = ki.navisionid
INNER JOIN krempl_artikelgeraet_22 ka ON ki.id = ka.ersatzteil
WHERE ka.geraet IN (
SELECT kg.id FROM `krempl_geraete_22` kg where nr LIKE "%AR 1268 TXNL%" or modellBezeichnung LIKE "%AR 1268 TXNL%"
);
";
*/
$rs = $this->db->query($sql);
if ($rs->num_rows > 0) {
while ($I = $rs->fetch_object()) {
if (isset($I->id))
$idArray[$I->id] = $I->id;
}
}
}
}
return $idArray;
}
private function _getItembyKremplNumber($searchString) {
if (!is_numeric($searchString_ready)) return Array();
/*$query = '
CREATE TEMPORARY TABLE temp_kg_ids (id INT);
INSERT INTO temp_kg_ids (id)
SELECT kg.id
FROM krempl_geraete_22 kg
WHERE kg.nr LIKE "%'.$searchString.'%" OR kg.modellBezeichnung LIKE "%'.$searchString.'%";
CREATE TEMPORARY TABLE temp_ersatzteile (ersatzteil INT);
INSERT INTO temp_ersatzteile (ersatzteil)
SELECT ka.ersatzteil
FROM krempl_artikelgeraet_22 ka
JOIN temp_kg_ids tempkg ON ka.geraet = tempkg.id;
SELECT i.id
FROM items i
JOIN krempl_item ki ON i.attribute_7 = ki.navisionid
JOIN temp_ersatzteile tempersatz ON ki.id = tempersatz.ersatzteil
ORDER BY ki.navisionid ASC;
DROP TEMPORARY TABLE IF EXISTS temp_kg_ids;
DROP TEMPORARY TABLE IF EXISTS temp_ersatzteile;
';
$rs = $this->db->query($query);
return $rs->fetch_all(MYSQLI_NUM)[0];*/
$query = 'SELECT kg.id FROM `krempl_geraete_22` kg where nr LIKE "%'.$searchString.'%" or modellBezeichnung LIKE "%'.$searchString.'%";';
$rs = $this->db->query($query);
if ($rs->num_rows <= 0) return Array();
$res = $this->collapseResultRows($rs->fetch_all(MYSQLI_NUM));
$query = 'SELECT ka.ersatzteil from krempl_artikelgeraet_22 ka WHERE '.$this->queryOrConcat("ka.geraet", $res);
$rs = $this->db->query($query);
if ($rs->num_rows <= 0) return Array();
$res = $this->collapseResultRows($rs->fetch_all(MYSQLI_NUM));
$query = 'SELECT ki.navisionid FROM krempl_item ki WHERE '.$this->queryOrConcat("ki.id", $res);
$rs = $this->db->query($query);
if ($rs->num_rows <= 0) return Array();
$res = $this->collapseResultRows($rs->fetch_all(MYSQLI_NUM));
$query = 'SELECT i.id FROM items i WHERE '.$this->queryOrConcat("i.attribute_7", $res);
$rs = $this->db->query($query);
if ($rs->num_rows <= 0) return Array();
$idArray = Array();
foreach ($this->collapseResultRows($rs->fetch_all(MYSQLI_NUM)) as $i) {
$idArray[(int) $i] = (int) $i;
}
return $idArray;
}
private function queryOrConcat($varName, $arr) {
$ret = "$varName = ";
if (count($arr) <= 1) return $ret.$arr[0];
for ($i = 0; $i < count($arr) - 1; $i++) {
$ret .= $arr[$i]." OR $varName = ";
}
$ret .= $arr[count($arr) - 1];
return $ret;
}
private function collapseResultRows($arr) { // takes a multilevel array returned by mysqli->fetch_all(MYSQLI_NUM) and collapses it to a monodimensional array
$ret = Array();
foreach ($arr as $a) {
$ret[] = $a[0];
}
return $ret;
}
}
@@ -0,0 +1,96 @@
<?php
$matchingItemNumberFirst = true;
include_once 'itemsearch.class.php';
$searchString = $search['search_item'];
$ItemsClass = new ItemSearch($this->base_object);
$strings = explode(' ', $searchString);
if (count($strings) == 1) {
$searchString = trim($searchString);
} else {
$searchString = '';
$string_type = 0;
$strings = array_reverse($strings);
foreach ($strings as $str) {
$str = trim($str);
// ganzzahl
if (ctype_digit($str)) {
$searchString = $str;
$string_type = 2;
} else if (!ctype_alpha($str) && $string_type != 2) {
$searchString = $str;
$string_type = 1;
} else if ($string_type == 0) {
$searchString = $str;
}
}
}
$result = $ItemsClass->searchItems($searchString);
if (!isset($this->db)) {
$this->db = $this->base_object->db;
}
if ($result['data'] && count($result['data']) > 0) {
if (isset($search['item_category']) && $search['item_category'] > 0) {
$sql = "
SELECT
i.*,
i.default_image_file_name AS file_name,
ip.price_1, ip.bargain_price_1
FROM
item_prices ip
RIGHT JOIN
items i
ON
i.id = ip.item_id
AND
ip.customergroup_id = ".$this->db->real_escape_string($this->base_object->customer_group->price_group_id)."
RIGHT JOIN
item_structure_assign isa
ON
i.id = isa.item_id
WHERE
i.active = 1
AND
i.id IN (".implode(',', $result['data']).")
AND
i.parent_id = 0
AND
isa.structure_id = ".$this->db->real_escape_string($search['item_category'])."
GROUP BY
i.id
ORDER BY
i.name DESC
";
} else {
$sql = "
SELECT
i.*,
i.default_image_file_name AS file_name,
ip.price_1, ip.bargain_price_1
FROM
item_prices ip
RIGHT JOIN
items i
ON
i.id = ip.item_id
AND
ip.customergroup_id = ".$this->db->real_escape_string($this->base_object->customer_group->price_group_id)."
WHERE
i.active = 1
AND
i.id IN (".implode(',', $result['data']).")
AND
parent_id = 0
GROUP BY
i.id
ORDER BY
i.name DESC
";
}
}
@@ -0,0 +1,30 @@
<?php
if (!is_array($item_ids) || count($item_ids) <= 0) {
include_once 'itemsearch.class.php';
$ItemsClass = new ItemSearch($this->base_object);
//$result = $ItemsClass->searchItems($search['search_item'], true);
$item_ids = $result['data'];
}
if (is_array($item_ids) && count($item_ids) > 0) {
$sql = "
SELECT
wg.id,
count(wg.id) AS found_items
FROM
structure wg
LEFT JOIN
item_structure_assign isa
ON
wg.id = isa.structure_id
WHERE
isa.item_id IN (".implode(',', $item_ids).")
AND
wg.active=1
GROUP BY
wg.id
";
}
@@ -0,0 +1,10 @@
<?php
include_once 'itemsearch.class.php';
$ItemsClass = new ItemSearch($this->base_object);
$result = $ItemsClass->searchItems($search);
$this->layout_object->assign('item_search', $result);
$return = $this->layout_object->_fetch('live_search.tpl');
@@ -0,0 +1,121 @@
<?php
// get for intelectra geraetezuordnung
/*if ($obj->attribute_17 != '') {
$sql = "SELECT * FROM import_geraetezuordnung WHERE anr='".$obj->attribute_17."'";
$result = $this->db->query($sql);
}
else {
$sql = "SELECT * FROM import_geraetezuordnung WHERE anr='".$obj->number."'";
$result = $this->db->query($sql);
}*/
$result = null;
if (strlen($obj->number) == 8) {
$sql = "SELECT g.*
FROM krempl_geraete_22 g
INNER JOIN krempl_artikelgeraet_22 ag ON g.id = ag.geraet
INNER JOIN krempl_passendwie pw ON ag.ersatzteil = pw.id
INNER JOIN items i ON pw.navisionid = i.krempl_id
WHERE i.number = ".$this->db->real_escape_string($obj->number).";";
$result = $this->db->query($sql);
}
if ($obj->krempl_id && (!isset($result) || $result->num_rows < 1)) {
$sql = "SELECT * FROM krempl_artikelgeraet_22 ka
left join krempl_geraete_22 kg on kg.id=ka.geraet
WHERE ka.ersatzteil=".$this->db->real_escape_string($obj->krempl_id)." AND not isnull(nr)";
$result = $this->db->query($sql);
}
$obj->geraetezuordnung = array();
if ($result) {
while ($obj1 = $result->fetch_object()) {
$obj->geraetezuordnung[] = $obj1;
}
}
// get parent warengruppe
$sql = "select i.name, s.name, s2.name as wg from items i
left join item_structure_assign isa on isa.item_id=i.id
left join structure s on s.id=isa.structure_id
left join structure s2 on s2.id=s.parent_id
where i.id=".$obj->id.' AND s.active=1 LIMIT 1';
$result = $this->db->query($sql);
$parent_warengruppe = '';
if ($result) {
while ($obj1 = $result->fetch_object()) {
$parent_warengruppe = $obj1->wg;
}
}
$table_data = array();
foreach ($obj->geraetezuordnung as $geraet) {
$nr1 = str_replace('#', '', $geraet->nr);
$nr1 = str_replace('_', ' ', $nr1);
$nr2 = str_replace('#', '', $geraet->produktionsstart);
$nr2 = str_replace('_', ' ', $nr2);
$nr3 = str_replace('#', '', $geraet->produktionsende);
$nr3 = str_replace('_', ' ', $nr3);
$nr3 = empty($nr3) ? "" : " - ".$nr3;
$nr2 = $nr2.$nr3;
$bezeichnungoriginal = str_replace('#', '', $geraet->bezeichnungoriginal);
$bezeichnungoriginal = str_replace('_', ' ', $bezeichnungoriginal);
$bezeichnungoriginal = preg_replace('/\r\n|\n|\r/', '', $bezeichnungoriginal);
// Überprüfe, ob $bezeichnungoriginal leer ist, und verwende $geraet->modellBezeichnung falls ja
if (empty($bezeichnungoriginal) && !empty($geraet->modellBezeichnung)) {
$bezeichnungoriginal = str_replace('#', '', $geraet->modellBezeichnung);
$bezeichnungoriginal = str_replace('_', ' ', $bezeichnungoriginal);// Ersetze durch modellBezeichnung
} elseif (empty($bezeichnungoriginal)) {
$bezeichnungoriginal = "-"; // Oder einen Platzhalter, wenn auch modellBezeichnung leer ist
}
$einkaufsmoeglichkeitencached = $nr1." ".$nr2;
$table_data[$einkaufsmoeglichkeitencached][$bezeichnungoriginal][] = array($nr1, $nr2);
}
$html = '<table border="0" cellpadding="2" cellspacing="0">';
foreach ($table_data as $key => $marken) {
$y = 0;
$html .= '<tr class="intelectra_item_table_header"><td colspan="3"><h4><b>'.$obj->name.' passend zu '.$key.' '.$parent_warengruppe.'</b></h4></tr>';
$html .= '<tr class="intelectra_item_table_header"><td>Ger&auml;te-/Modellbezeichnung</td><td>E-, Service-, Produktions- oder Hauptnummer</td><td>Zusatz-, F- oder Seriennummer oder Fertigungsdatum</td></tr>';
foreach ($marken as $geraet => $nummern) {
$color = 'intelectra_table_row1';
if ($y % 2 == 1) {
$color = 'intelectra_table_row2';
}
$z = 0;
foreach ($nummern as $nummer) {
if ($z == 0) {
$html .= '<tr class="'.$color.'"><td>'.$geraet.'</td><td>'.$nummer[0].'</td><td>'.$nummer[1].'</td></tr>';
} else {
$html .= '<tr class="'.$color.'"><td>&nbsp;</td><td>'.$nummer[0].'</td><td>'.$nummer[1].'</td></tr>';
}
$z++;
}
$y++;
}
}
$html .= '</table>';
$obj->geraetezuordnung = $html;
// $int = $this->createIntWithTableData($html);
// base price calc
if ($obj->attribute_11 && $obj->attribute_15) {
$obj->sample_unit = $obj->attribute_15;
if (strstr($obj->sample_unit, '100')) {
$obj->sample_price = $obj->shop_price_1 / ($obj->attribute_11 * 10);
} else {
$obj->sample_price = $obj->shop_price_1 / $obj->attribute_11;
}
}
@@ -0,0 +1,372 @@
<?php
class ItemSearch {
private $config;
protected $base_object;
protected $db;
private $searchData = array();
private $pageOffset = 0;
public function __construct($base_object) {
$this->config = $base_object->config;
$this->db = $base_object->db;
$this->base_object = $base_object;
}
public function searchItems($searchString) {
$timer_start = microtime(true);
//echo "searchItems called<br>";
//$searchString_trimmed = trim($searchString);
//$searchString_filtered = preg_replace("@[^\p{L}\p{N}]@sui", '', $searchString_trimmed);
$this->pageOffset = isset($_GET["page"]) ? ($_GET["page"] - 1) : 0;
$results = Array();
$results = array_merge($results, $this->_getItemByNumber($searchString));
$results = array_merge($results, $this->_getItemByText($searchString));
$results = array_merge($results, $this->_searchItemWithinItemsAndAssociations('', $searchString));
$results = array_merge($results, $this->_getItembyKremplNumber($searchString));
$running_time = microtime(true) - $timer_start;
// Paginate result (make solution cleaner in the future)
//$results = array_splice($results, 0, 20);
//echo "results number: ".count($results)."<br>";
$result = array(
'searchstring' => $searchString,
'results' => count($results),
'queryTime' => $running_time,
'data' => $results
);
return $result;
}
private function _searchItemWithinItemsAndAssociations($searchManufacturer, $searchString, $idsOnly = false, $searchManufacturer_filtered = false, $searchString_filtered = false, $searchRefinement_filtered = false) {
$queries = $this->_queryLike($searchManufacturer_filtered, $searchString);
$results = array();
$idArray = array();
foreach ($queries as $query) {
$rs = $this->db->query($query);
if (!$rs) break;
while ($I = $rs->fetch_object()) {
if ($I->anumber) {
$results[$I->anumber] = $I->anumber;
$idArray[] = $I->anumber;
}
}
}
//$idArray = $this->_getIdsByNumbers($results, true, $searchRefinement_filtered);
return $idArray;
}
private function _getIdsByNumbers($numbers, $withAlternatives = true, $refinement = false) {
if (is_array($numbers) && count($numbers) > 0) {
$numberList = implode("','", $numbers);
$queryAddAlternatives = '';
if ($withAlternatives) {
$queryAddAlternatives = " OR attribute_17 IN ('".$numberList."')";
}
$queryAddRefinement = '';
if ($refinement) {
$refinement = $this->db->real_escape_string($refinement);
$queryAddRefinement = "
AND (
name LIKE '%".$refinement."%'
OR
detail_description LIKE '%".$refinement."%'
OR
detail_description LIKE '%".htmlentities($refinement, null, 'UTF-8')."%'
OR
attribute_1 LIKE '%".$refinement."%'
OR
attribute_9 LIKE '%".$refinement."%'
OR
attribute_20 LIKE '%".$refinement."%'
OR
attribute_6 LIKE '%".$refinement."%'
)
";
$queryAddRefinement = "
AND (
name LIKE '%".$refinement."%'
OR
attribute_1 LIKE '%".$refinement."%'
OR
attribute_9 LIKE '%".$refinement."%'
OR
attribute_20 LIKE '%".$refinement."%'
OR
attribute_6 LIKE '%".$refinement."%'
)
";
}
/*$query = "
SELECT
id
FROM
items
WHERE (
number IN ('".$numberList."') OR
number IN ('".$numberList."')
".$queryAddAlternatives."
)
".$queryAddRefinement."
";*/
$query = "
SELECT
id
FROM
items
WHERE
number IN ('".$numberList."')
LIMIT 150";
$idArray = array();
$rs = $this->db->query($query);
if (!$rs) return $idArray;
//echo '<pre>';echo $query;exit();
while ($I = $rs->fetch_object()) {
$idArray[$I->id] = $I->id;
}
return $idArray;
}
return array();
}
private function _queryLike($searchManufacturer_filtered, $searchString_filtered) {
//$searchManufacturer_filtered = $this->db->real_escape_string($searchManufacturer_filtered);
$searchString_filtered = $this->db->real_escape_string($searchString_filtered);
$queries = array();
if (ctype_alpha($searchString_filtered)) {
$queries[] = "
SELECT
id AS anumber
FROM
items
WHERE
active = 1
AND
parent_id = 0
AND (
REPLACE(REPLACE(REPLACE(vendor_item_number, ' ', ''), '/', ''), '-', '') LIKE '%".$searchString_filtered."%'
OR
-- mögliche Aufschrift
attribute_4 LIKE '%".$searchString_filtered."%'
OR
-- Aufdrucke
attribute_9 LIKE '%".$searchString_filtered."%'
OR
-- Synonyme
attribute_6 LIKE '%".$searchString_filtered."%'
)
GROUP BY number LIMIT 150";
} else {
$forwardSlashPos = strpos($searchString_filtered, "/");
if ($forwardSlashPos != false) {
$searchString_filtered = substr($searchString_filtered, 0, $forwardSlashPos);
}
if (!ctype_digit($searchString_filtered) || (ctype_digit($searchString_filtered) && strlen($searchString_filtered) >= 6)) {
$queries[] = "
SELECT DISTINCT i.id AS anumber FROM krempl_geraete_22 kg
LEFT JOIN krempl_artikelgeraet_22 ka on ka.geraet=kg.id
LEFT JOIN items i on i.krempl_id=ka.ersatzteil
WHERE
REPLACE(REPLACE(REPLACE(kg.nr, ' ', ''), '/', ''), '-', '') LIKE '%".$searchString_filtered."%'
OR
REPLACE(REPLACE(REPLACE(kg.bezeichnungoriginal, ' ', ''), '/', ''), '-', '') LIKE '%".$searchString_filtered."%'
LIMIT 150";
}
$queries[] = "
SELECT
DISTINCT items.id AS anumber
FROM
krempl_passendwie pw
LEFT JOIN
items on items.number=pw.navisionid OR items.attribute_7=pw.navisionid
WHERE
REPLACE(REPLACE(REPLACE(bestellcode, ' ', ''), '/', ''), '-', '') LIKE '%".$searchString_filtered."%'
LIMIT 150";
$queries[] = "SELECT id AS anumber FROM items WHERE active = 1 AND
REPLACE(REPLACE(REPLACE(attribute_20, ' ', ''), '/', ''), '-', '') LIKE '%".$searchString_filtered."%'
GROUP BY number LIMIT 150";
}
return $queries;
}
private function _getItemByNumber($searchString_ready) {
if (!is_numeric($searchString_ready)) return Array();
$query = "
SELECT id FROM items WHERE
number = '".$this->db->real_escape_string($searchString_ready)."' OR
attribute_7 = '".$this->db->real_escape_string($searchString_ready)."' OR
ean_code = '".$this->db->real_escape_string($searchString_ready)."'
LIMIT 150";
$rs = $this->db->query($query);
$idArray = array();
if ($rs->num_rows > 0) {
while ($I = $rs->fetch_object()) {
$idArray[$I->id] = $I->id;
}
return $idArray;
} else {
return Array();
}
}
private function _getItemByText($searchString_ready) {
$query = "
SELECT id FROM items WHERE
name LIKE '%".$this->db->real_escape_string($searchString_ready)."%' OR
attribute_20 like '%".$this->db->real_escape_string($searchString_ready)."%' OR
short_description like '%".$this->db->real_escape_string($searchString_ready)."%' OR
detail_description like '%".$this->db->real_escape_string($searchString_ready)."%'
LIMIT 150";
$rs = $this->db->query($query);
$idArray = array();
if ($rs->num_rows > 0) {
while ($I = $rs->fetch_object()) {
$idArray[$I->id] = $I->id;
}
return $idArray;
} else {
return Array();
}
}
private function _getItembyKremplNumberOld($searchString) {
$query = 'SELECT kg.id FROM `krempl_geraete_22` kg where nr LIKE "%'.$searchString.'%" or modellBezeichnung LIKE "%'.$searchString.'%";';
$rs = $this->db->query($query);
$idArray = array();
if ($rs->num_rows > 0) {
$ids = $rs->fetch_all(MYSQLI_NUM)[0];
foreach ($ids as $id) {
$sql = "
SELECT i.id FROM `krempl_item` ki
left join krempl_artikelgeraet_22 ka on ki.id = ka.ersatzteil
left join krempl_geraete_22 kg ON kg.id = ka.geraet
left join items i ON ki.navisionid = i.attribute_7
WHERE ka.geraet = ".$id." ORDER BY `ki`.`navisionid` ASC;
";
/* //TEST ZUM OPTIMIEREN
$sql = "
SELECT i.* FROM items i
INNER JOIN krempl_item ki ON i.attribute_7 = ki.navisionid
INNER JOIN krempl_artikelgeraet_22 ka ON ki.id = ka.ersatzteil
WHERE ka.geraet IN (
SELECT kg.id FROM `krempl_geraete_22` kg where nr LIKE "%AR 1268 TXNL%" or modellBezeichnung LIKE "%AR 1268 TXNL%"
);
";
*/
$rs = $this->db->query($sql);
if ($rs->num_rows > 0) {
while ($I = $rs->fetch_object()) {
if (isset($I->id))
$idArray[$I->id] = $I->id;
}
}
}
}
return $idArray;
}
private function _getItembyKremplNumber($searchString) {
if (!is_numeric($searchString_ready)) return Array();
/*$query = '
CREATE TEMPORARY TABLE temp_kg_ids (id INT);
INSERT INTO temp_kg_ids (id)
SELECT kg.id
FROM krempl_geraete_22 kg
WHERE kg.nr LIKE "%'.$searchString.'%" OR kg.modellBezeichnung LIKE "%'.$searchString.'%";
CREATE TEMPORARY TABLE temp_ersatzteile (ersatzteil INT);
INSERT INTO temp_ersatzteile (ersatzteil)
SELECT ka.ersatzteil
FROM krempl_artikelgeraet_22 ka
JOIN temp_kg_ids tempkg ON ka.geraet = tempkg.id;
SELECT i.id
FROM items i
JOIN krempl_item ki ON i.attribute_7 = ki.navisionid
JOIN temp_ersatzteile tempersatz ON ki.id = tempersatz.ersatzteil
ORDER BY ki.navisionid ASC;
DROP TEMPORARY TABLE IF EXISTS temp_kg_ids;
DROP TEMPORARY TABLE IF EXISTS temp_ersatzteile;
';
$rs = $this->db->query($query);
return $rs->fetch_all(MYSQLI_NUM)[0];*/
$query = 'SELECT kg.id FROM `krempl_geraete_22` kg where nr LIKE "%'.$searchString.'%" or modellBezeichnung LIKE "%'.$searchString.'%";';
$rs = $this->db->query($query);
if ($rs->num_rows <= 0) return Array();
$res = $this->collapseResultRows($rs->fetch_all(MYSQLI_NUM));
$query = 'SELECT ka.ersatzteil from krempl_artikelgeraet_22 ka WHERE '.$this->queryOrConcat("ka.geraet", $res);
$rs = $this->db->query($query);
if ($rs->num_rows <= 0) return Array();
$res = $this->collapseResultRows($rs->fetch_all(MYSQLI_NUM));
$query = 'SELECT ki.navisionid FROM krempl_item ki WHERE '.$this->queryOrConcat("ki.id", $res);
$rs = $this->db->query($query);
if ($rs->num_rows <= 0) return Array();
$res = $this->collapseResultRows($rs->fetch_all(MYSQLI_NUM));
$query = 'SELECT i.id FROM items i WHERE '.$this->queryOrConcat("i.attribute_7", $res);
$rs = $this->db->query($query);
if ($rs->num_rows <= 0) return Array();
$idArray = Array();
foreach ($this->collapseResultRows($rs->fetch_all(MYSQLI_NUM)) as $i) {
$idArray[(int) $i] = (int) $i;
}
return $idArray;
}
private function queryOrConcat($varName, $arr) {
$ret = "$varName = ";
if (count($arr) <= 1) return $ret.$arr[0];
for ($i = 0; $i < count($arr) - 1; $i++) {
$ret .= $arr[$i]." OR $varName = ";
}
$ret .= $arr[count($arr) - 1];
return $ret;
}
private function collapseResultRows($arr) { // takes a multilevel array returned by mysqli->fetch_all(MYSQLI_NUM) and collapses it to a monodimensional array
$ret = Array();
foreach ($arr as $a) {
$ret[] = $a[0];
}
return $ret;
}
}
@@ -0,0 +1,369 @@
<?php
class ItemSearch {
private $config;
protected $base_object;
protected $db;
private $searchData = array();
public function __construct($base_object) {
$this->config = $base_object->config;
$this->db = $base_object->db;
$this->base_object = $base_object;
}
public function searchItems($searchString) {
$timer_start = microtime(true);
//$searchString_trimmed = trim($searchString);
//$searchString_filtered = preg_replace("@[^\p{L}\p{N}]@sui", '', $searchString_trimmed);
$results = Array();
$results = array_merge($results, $this->_getItemByNumber($searchString));
$results = array_merge($results, $this->_getItemByText($searchString));
$results = array_merge($results, $this->_searchItemWithinItemsAndAssociations('', $searchString));
$results = array_merge($results, $this->_getItembyKremplNumber($searchString));
$running_time = microtime(true) - $timer_start;
$result = array(
'searchstring' => $searchString,
'results' => count($results),
'queryTime' => $running_time,
'data' => $results
);
return $result;
}
private function _searchItemWithinItemsAndAssociations($searchManufacturer, $searchString, $idsOnly = false, $searchManufacturer_filtered = false, $searchString_filtered = false, $searchRefinement_filtered = false) {
$queries = $this->_queryLike($searchManufacturer_filtered, $searchString);
$results = array();
$idArray = array();
foreach ($queries as $query) {
$rs = $this->db->query($query);
if (!$rs) break;
while ($I = $rs->fetch_object()) {
if ($I->anumber) {
$results[$I->anumber] = $I->anumber;
$idArray[] = $I->anumber;
}
}
}
//$idArray = $this->_getIdsByNumbers($results, true, $searchRefinement_filtered);
return $idArray;
}
private function _getIdsByNumbers($numbers, $withAlternatives = true, $refinement = false) {
if (is_array($numbers) && count($numbers) > 0) {
$numberList = implode("','", $numbers);
$queryAddAlternatives = '';
if ($withAlternatives) {
$queryAddAlternatives = " OR attribute_17 IN ('".$numberList."')";
}
$queryAddRefinement = '';
if ($refinement) {
$refinement = $this->db->real_escape_string($refinement);
$queryAddRefinement = "
AND (
name LIKE '%".$refinement."%'
OR
detail_description LIKE '%".$refinement."%'
OR
detail_description LIKE '%".htmlentities($refinement, null, 'UTF-8')."%'
OR
attribute_1 LIKE '%".$refinement."%'
OR
attribute_9 LIKE '%".$refinement."%'
OR
attribute_20 LIKE '%".$refinement."%'
OR
attribute_6 LIKE '%".$refinement."%'
)
";
$queryAddRefinement = "
AND (
name LIKE '%".$refinement."%'
OR
attribute_1 LIKE '%".$refinement."%'
OR
attribute_9 LIKE '%".$refinement."%'
OR
attribute_20 LIKE '%".$refinement."%'
OR
attribute_6 LIKE '%".$refinement."%'
)
";
}
/*$query = "
SELECT
id
FROM
items
WHERE (
number IN ('".$numberList."') OR
number IN ('".$numberList."')
".$queryAddAlternatives."
)
".$queryAddRefinement."
";*/
$query = "
SELECT
id
FROM
items
WHERE
number IN ('".$numberList."')
";
$idArray = array();
$rs = $this->db->query($query);
if (!$rs) return $idArray;
//echo '<pre>';echo $query;exit();
while ($I = $rs->fetch_object()) {
$idArray[$I->id] = $I->id;
}
return $idArray;
}
return array();
}
private function _queryLike($searchManufacturer_filtered, $searchString_filtered) {
$searchManufacturer_filtered = $this->db->real_escape_string($searchManufacturer_filtered);
$searchString_filtered = $this->db->real_escape_string($searchString_filtered);
$queries = array();
if (ctype_alpha($searchString_filtered)) {
$queries[] = "
SELECT
id AS anumber
FROM
items
WHERE
active = 1
AND
parent_id = 0
AND (
REPLACE(REPLACE(REPLACE(vendor_item_number, ' ', ''), '/', ''), '-', '') = '".$searchString_filtered."'
OR
REPLACE(REPLACE(REPLACE(name, ' ', ''), '/', ''), '-', '') LIKE '%".$searchString_filtered."%'
OR
-- mögliche Aufschrift
REPLACE(REPLACE(REPLACE(attribute_4, ' ', ''), '/', ''), '-', '') LIKE '%".$searchString_filtered."%'
OR
-- Aufdrucke
REPLACE(REPLACE(REPLACE(attribute_9, ' ', ''), '/', ''), '-', '') LIKE '%".$searchString_filtered."%'
OR
-- Merkmale
REPLACE(REPLACE(REPLACE(attribute_8, ' ', ''), '/', ''), '-', '') LIKE '%".$searchString_filtered."%'
OR
-- Internes DB-Feld
REPLACE(REPLACE(REPLACE(attribute_20, ' ', ''), '/', ''), '-', '') LIKE '%".$searchString_filtered."%'
OR
-- Synonyme
REPLACE(REPLACE(REPLACE(attribute_6, ' ', ''), '/', ''), '-', '') LIKE '%".$searchString_filtered."%'
)
GROUP BY number LIMIT 150";
} else {
if (!ctype_digit($searchString_filtered) || (ctype_digit($searchString_filtered) && strlen($searchString_filtered) >= 7)) {
$queries[] = "
SELECT DISTINCT i.id AS anumber FROM krempl_geraete kg
LEFT JOIN krempl_artikelgeraet ka on ka.geraet=kg.id
LEFT JOIN items i on i.krempl_id=ka.ersatzteil
WHERE
REPLACE(REPLACE(REPLACE(kg.nr, ' ', ''), '/', ''), '-', '') LIKE '%".$searchString_filtered."%'
OR
REPLACE(REPLACE(REPLACE(kg.bezeichnung1, ' ', ''), '/', ''), '-', '') LIKE '%".$searchString_filtered."%'
LIMIT 150
";
}
$queries[] = "
SELECT
DISTINCT items.id AS anumber
FROM
krempl_passendwie pw
LEFT JOIN
items on items.number=pw.navisionid OR items.attribute_7=pw.navisionid
WHERE
REPLACE(REPLACE(REPLACE(bestellcode, ' ', ''), '/', ''), '-', '') LIKE '%".$searchString_filtered."%'
LIMIT 150
";
$queries[] = "SELECT id AS anumber FROM items WHERE active = 1 AND
REPLACE(REPLACE(REPLACE(attribute_20, ' ', ''), '/', ''), '-', '') LIKE '%".$searchString_filtered."%'
GROUP BY number LIMIT 50";
}
return $queries;
}
private function _getItemByNumber($searchString_ready) {
$query = "
SELECT id FROM items WHERE
number = '".$this->db->real_escape_string($searchString_ready)."' OR
attribute_7 = '".$this->db->real_escape_string($searchString_ready)."' OR
ean_code = '".$this->db->real_escape_string($searchString_ready)."'
LIMIT 150
";
$rs = $this->db->query($query);
$idArray = array();
if ($rs->num_rows > 0) {
while ($I = $rs->fetch_object()) {
$idArray[$I->id] = $I->id;
}
return $idArray;
} else {
return Array();
}
}
private function _getItemByText($searchString_ready) {
$query = "
SELECT id FROM items WHERE
name LIKE '%".$this->db->real_escape_string($searchString_ready)."%' OR
attribute_20 like '%".$this->db->real_escape_string($searchString_ready)."%' OR
short_description like '%".$this->db->real_escape_string($searchString_ready)."%' OR
detail_description like '%".$this->db->real_escape_string($searchString_ready)."%'
LIMIT 150
";
$rs = $this->db->query($query);
$idArray = array();
if ($rs->num_rows > 0) {
while ($I = $rs->fetch_object()) {
$idArray[$I->id] = $I->id;
}
return $idArray;
} else {
return Array();
}
}
private function _getItembyKremplNumberOld($searchString) {
$query = 'SELECT kg.id FROM `krempl_geraete_22` kg where nr LIKE "%'.$searchString.'%" or modellBezeichnung LIKE "%'.$searchString.'%";';
$rs = $this->db->query($query);
$idArray = array();
if ($rs->num_rows > 0) {
$ids = $rs->fetch_all(MYSQLI_NUM)[0];
foreach ($ids as $id) {
$sql = "
SELECT i.id FROM `krempl_item` ki
left join krempl_artikelgeraet_22 ka on ki.id = ka.ersatzteil
left join krempl_geraete_22 kg ON kg.id = ka.geraet
left join items i ON ki.navisionid = i.attribute_7
WHERE ka.geraet = ".$id." ORDER BY `ki`.`navisionid` ASC;
";
/* //TEST ZUM OPTIMIEREN
$sql = "
SELECT i.* FROM items i
INNER JOIN krempl_item ki ON i.attribute_7 = ki.navisionid
INNER JOIN krempl_artikelgeraet_22 ka ON ki.id = ka.ersatzteil
WHERE ka.geraet IN (
SELECT kg.id FROM `krempl_geraete_22` kg where nr LIKE "%AR 1268 TXNL%" or modellBezeichnung LIKE "%AR 1268 TXNL%"
);
";
*/
$rs = $this->db->query($sql);
if ($rs->num_rows > 0) {
while ($I = $rs->fetch_object()) {
if (isset($I->id))
$idArray[$I->id] = $I->id;
}
}
}
}
return $idArray;
}
private function _getItembyKremplNumber($searchString) {
/*$query = '
CREATE TEMPORARY TABLE temp_kg_ids (id INT);
INSERT INTO temp_kg_ids (id)
SELECT kg.id
FROM krempl_geraete_22 kg
WHERE kg.nr LIKE "%'.$searchString.'%" OR kg.modellBezeichnung LIKE "%'.$searchString.'%";
CREATE TEMPORARY TABLE temp_ersatzteile (ersatzteil INT);
INSERT INTO temp_ersatzteile (ersatzteil)
SELECT ka.ersatzteil
FROM krempl_artikelgeraet_22 ka
JOIN temp_kg_ids tempkg ON ka.geraet = tempkg.id;
SELECT i.id
FROM items i
JOIN krempl_item ki ON i.attribute_7 = ki.navisionid
JOIN temp_ersatzteile tempersatz ON ki.id = tempersatz.ersatzteil
ORDER BY ki.navisionid ASC;
DROP TEMPORARY TABLE IF EXISTS temp_kg_ids;
DROP TEMPORARY TABLE IF EXISTS temp_ersatzteile;
';
$rs = $this->db->query($query);
return $rs->fetch_all(MYSQLI_NUM)[0];*/
$query = 'SELECT kg.id FROM `krempl_geraete_22` kg where nr LIKE "%'.$searchString.'%" or modellBezeichnung LIKE "%'.$searchString.'%";';
$rs = $this->db->query($query);
if ($rs->num_rows <= 0) return Array();
$res = $this->collapseResultRows($rs->fetch_all(MYSQLI_NUM));
$query = 'SELECT ka.ersatzteil from krempl_artikelgeraet_22 ka WHERE '.$this->queryOrConcat("ka.geraet", $res);
$rs = $this->db->query($query);
if ($rs->num_rows <= 0) return Array();
$res = $this->collapseResultRows($rs->fetch_all(MYSQLI_NUM));
$query = 'SELECT ki.navisionid FROM krempl_item ki WHERE '.$this->queryOrConcat("ki.id", $res);
$rs = $this->db->query($query);
if ($rs->num_rows <= 0) return Array();
$res = $this->collapseResultRows($rs->fetch_all(MYSQLI_NUM));
$query = 'SELECT i.id FROM items i WHERE '.$this->queryOrConcat("i.attribute_7", $res);
$rs = $this->db->query($query);
if ($rs->num_rows <= 0) return Array();
$idArray = Array();
foreach ($this->collapseResultRows($rs->fetch_all(MYSQLI_NUM)) as $i) {
$idArray[(int) $i] = (int) $i;
}
return $idArray;
}
private function queryOrConcat($varName, $arr) {
$ret = "$varName = ";
if (count($arr) <= 1) return $ret.$arr[0];
for ($i = 0; $i < count($arr) - 1; $i++) {
$ret .= $arr[$i]." OR $varName = ";
}
$ret .= $arr[count($arr) - 1];
return $ret;
}
private function collapseResultRows($arr) { // takes a multilevel array returned by mysqli->fetch_all(MYSQLI_NUM) and collapses it to a monodimensional array
$ret = Array();
foreach ($arr as $a) {
$ret[] = $a[0];
}
return $ret;
}
}
@@ -0,0 +1,96 @@
<?php
$matchingItemNumberFirst = true;
include_once 'itemsearch.class.php';
$searchString = $search['search_item'];
$ItemsClass = new ItemSearch($this->base_object);
$strings = explode(' ', $searchString);
if (count($strings) == 1) {
$searchString = trim($searchString);
} else {
$searchString = '';
$string_type = 0;
$strings = array_reverse($strings);
foreach ($strings as $str) {
$str = trim($str);
// ganzzahl
if (ctype_digit($str)) {
$searchString = $str;
$string_type = 2;
} else if (!ctype_alpha($str) && $string_type != 2) {
$searchString = $str;
$string_type = 1;
} else if ($string_type == 0) {
$searchString = $str;
}
}
}
$result = $ItemsClass->searchItems($searchString);
if (!isset($this->db)) {
$this->db = $this->base_object->db;
}
if ($result['data'] && count($result['data']) > 0) {
if (isset($search['item_category']) && $search['item_category'] > 0) {
$sql = "
SELECT
i.*,
i.default_image_file_name AS file_name,
ip.price_1, ip.bargain_price_1
FROM
item_prices ip
RIGHT JOIN
items i
ON
i.id = ip.item_id
AND
ip.customergroup_id = ".$this->db->real_escape_string($this->base_object->customer_group->price_group_id)."
RIGHT JOIN
item_structure_assign isa
ON
i.id = isa.item_id
WHERE
i.active = 1
AND
i.id IN (".implode(',', $result['data']).")
AND
i.parent_id = 0
AND
isa.structure_id = ".$this->db->real_escape_string($search['item_category'])."
GROUP BY
i.id
ORDER BY
i.name DESC
";
} else {
$sql = "
SELECT
i.*,
i.default_image_file_name AS file_name,
ip.price_1, ip.bargain_price_1
FROM
item_prices ip
RIGHT JOIN
items i
ON
i.id = ip.item_id
AND
ip.customergroup_id = ".$this->db->real_escape_string($this->base_object->customer_group->price_group_id)."
WHERE
i.active = 1
AND
i.id IN (".implode(',', $result['data']).")
AND
parent_id = 0
GROUP BY
i.id
ORDER BY
i.name DESC
";
}
}
@@ -0,0 +1,30 @@
<?php
if (!is_array($item_ids) || count($item_ids) <= 0) {
include_once 'itemsearch.class.php';
$ItemsClass = new ItemSearch($this->base_object);
//$result = $ItemsClass->searchItems($search['search_item'], true);
$item_ids = $result['data'];
}
if (is_array($item_ids) && count($item_ids) > 0) {
$sql = "
SELECT
wg.id,
count(wg.id) AS found_items
FROM
structure wg
LEFT JOIN
item_structure_assign isa
ON
wg.id = isa.structure_id
WHERE
isa.item_id IN (".implode(',', $item_ids).")
AND
wg.active=1
GROUP BY
wg.id
";
}
@@ -0,0 +1,10 @@
<?php
include_once 'itemsearch.class.php';
$ItemsClass = new ItemSearch($this->base_object);
$result = $ItemsClass->searchItems($search);
$this->layout_object->assign('item_search', $result);
$return = $this->layout_object->_fetch('live_search.tpl');
@@ -0,0 +1,43 @@
{foreach item=assigned_item name=cartLoop from=$additionItemListItems}
{if $shopArticle->id == $item.id}
{assign var=preis_praefix value=""}
{/if}
<div class="additionalitems_item {if $assigned_item->shop_bargain_price_1 > 0 || $item_debug}itemboxbargain{/if}">
{if $assigned_item->short_uri}
{$asitemsuri={$assigned_item->short_uri}}
{$asitemsuriadd='.html'}
{else}
{$asitemsuri="/index.php?item_id={$assigned_item->id}"}
{$asitemsuriadd=''}
{/if}
<a href="{$asitemsuri}{$asitemsuriadd}" title="{$assigned_item->name}">
<div class="additionalitems_item_name">
{if $assigned_item->number}
<span class="additionalitems_item_number">Art.-Nr.: {$assigned_item->number}</span><br>
{/if}
{$assigned_item->name|substr:0:50}
</div>
<div class="additionalitems_image" style="background-image: url({$SHOP_DIR}/images/article/overview_{if $assigned_item->default_image_file_name}{$assigned_item->default_image_file_name}{else}default_image.png{/if});"></div>
<div class="additionalitems_item_price">
{if $item_debug || $assigned_item->price_type == "1"}
{if $assigned_item->shop_bargain_price_1 > 0 || $item_debug}
{*<span>{$assigned_item->shop_price_1|number_format:"2":",":"."} &euro;</span>*}
<strong>{$assigned_item->shop_bargain_price_1|number_format:"2":",":"."} &euro;</strong>
{else}
{$assigned_item->shop_price_1|number_format:"2":",":"."} &euro;
{/if}
{else if $assigned_item->price_type == "0"}
Preis auf Anfrage
{else if $no_prices}
Preis nach Login
{/if}
</div>
</a>
</div>
{/foreach}
<div class="clear_both"></div>
@@ -0,0 +1,86 @@
<!-- content_cash_desk/payments.tpl -->
<div class="agreements_box">
{if $agb_data.widerruf != '' || $agb_data.datenschutz != '' || $agb_data.agbs != ''}
<div class="full_box purple_box">
<div class="title_wrapper">
<div class="title"><h2>Widerrufsbelehrung, Datenschutz &amp; AGB</h2></div>
<div class="clear"></div>
</div>
<div class="box_padder" style="margin:20px;">
Klicken Sie auf die &Uuml;berschriften, um den vollst&auml;ndigen Artikel zu lesen<br />
<br />
{if $agb_data.widerruf != '' && $customer->group_id != 101}
<div id="power_of_revocation" class="cashdesk_agreement_header">{$template_text.default.cashdesk_title_widerruf}</div>
<div id="power_of_revocation_wrapper" style="background:#979797;border:1px solid #979797;margin-top:2px;display:none;">
<div id="power_of_revocation_content" style="margin:10px;border:1px solid white;background:white;">
<div style="margin:10px;">{$agb_data.widerruf}</div>
</div>
</div>
{/if}
{if $agb_data.datenschutz != '' && $customer->group_id != 101}
<div id="data_privacy" class="cashdesk_agreement_header">{$template_text.default.cashdesk_title_datenschutz}</div>
<div id="data_privacy_wrapper" style="background:#979797;border:1px solid #979797;margin-top:2px;display:none;">
<div id="data_privacy_content" style="margin:10px;border:1px solid white;background:white;">
<div style="margin:10px;">{$agb_data.datenschutz}</div>
</div>
</div>
{/if}
{if $agb_data.agbs_b2b != '' && $customer->group_id == 101}
<div id="terms_and_conditions" class="cashdesk_agreement_header">{$template_text.default.cashdesk_title_agb}</div>
<div id="terms_and_conditions_wrapper" style="background:#979797;border:1px solid #979797;margin-top:2px;display:none;">
<div id="terms_and_conditions_content" style="margin:10px;border:1px solid white;background:white;">
<div style="margin:10px;">{$agb_data.agbs_b2b}</div>
</div>
</div>
{else}
<div id="terms_and_conditions" class="cashdesk_agreement_header">{$template_text.default.cashdesk_title_agb}</div>
<div id="terms_and_conditions_wrapper" style="background:#979797;border:1px solid #979797;margin-top:2px;display:none;">
<div id="terms_and_conditions_content" style="margin:10px;border:1px solid white;background:white;">
<div style="margin:10px;">{$agb_data.agbs}</div>
</div>
</div>
{/if}
</div>
</div>
{/if}
<br />
<div class="agreements_info" style="width:720px;border:1px solid #000000; background:#ff9900;">
<input id="agreements_accepted" type="checkbox" value="1" name="agreements_accepted" />
{if $customer->group_id == 101}
<label style="color:#000000;" for="agreements_accepted">
Ich habe die <b>AGB</b> gelesen, verstanden und akzeptiere sie.
</label>
{else}
<label style="color:#000000;" for="agreements_accepted">
Ich habe die <b>AGB</b>,
<b>Datenschutzbestimmungen</b>
sowie Hinweise zum <b>Widerrufsrecht</b>
gelesen, verstanden und akzeptiere sie.
</label>
{/if}
</div>
<br />
{if $customer->group_id == 101}
<div class="agreement_subtext" style="width:720px;color:#000000;">
Sie m&uuml;ssen unseren Allgemeinen Gesch&auml;ftsbedingungen (AGB) zustimmen, um den Einkauf abzuschlie&szlig;en.
Sie erhalten die AGB nach Abschluss nochmals per E-Mail und k&ouml;nnen diese speichern / archivieren.
</div><br>
{else}
<div class="agreement_subtext" style="width:720px;color:#000000;">
Sie m&uuml;ssen unseren Allgemeinen Gesch&auml;ftsbedingungen (AGB) und den Hinweisen zum
Datenschutz sowie der Widerrufsbelehrung zustimmen, um den Einkauf abzuschlie&szlig;en. Sie
erhalten diese Hinweise, Erkl&auml;rungen und Belehrungen nach Abschluss nochmals per E-Mail
und k&ouml;nnen diese speichern / archivieren.
</div><br>
{/if}
<div id="klarna_agreements_info" style="width:720px;border:1px solid #000000; background:#ff9900;display:none;">
<input id="klarna_agreements_accepted" type="checkbox" value="1" name="klarna_agreements_accepted" />
<span>
Mit der Übermittlung der für die Abwicklung der gewählten Klarna Zahlungsmethode und einer Identitäts- und Bonitätsprüfung erforderlichen Daten an Klarna bin ich einverstanden. Meine <span id="klarna_pop" style="font-weight:bold;text-decoration:underline;cursor:pointer;">Einwilligung</span> kann ich jederzeit mit Wirkung für die Zukunft widerrufen. Es gelten die AGB des Händlers.
</span>
</div>
<br />
</div>
@@ -0,0 +1,205 @@
{if $shopArticles}
<!-- indi:content_box_item_list -->
<script type="text/javascript" src="{$PARENT_THEME_DIR}/media/js/content_box_item_list.js"></script>
<script type="text/javascript">
{if $useInfinityScroll}
useInfinityScroll = true;
{else}
useInfinityScroll = false;
{/if}
</script>
{if isset($producerSelection) && $producerSelection}
{assign var=link_attributes value="producerId=`$producerSelection`"}
{assign var=list_title value=$shopProducers[$producerSelection]}
{/if}
{if $system_configuration.item_image_server_uri}
{assign var=SHOP_DIR value="{$system_configuration.item_image_server_uri}"}
{/if}
<div class="content_box_item_list">
{* Header
********************************************}
<div class="listheader">
<div class="top">
{if $block->style && ($content_box_title || $structureData->name)}
<{$block->style}>{if isset($content_box_title) && $content_box_title}{$content_box_title}{else}{$structureData->name}{/if}</{$block->style}>
{/if}
<!-- sort list -->
{if !$hide_listoptions}
<div class="sort_wrapper">
<div class="title" style="display:inline-block;top:15px;left:20px;z-index:9999;">Sortiere nach</div>
<div class="sort_selection">
<div class="menu_arrow"><span></span></div>
<div class="selected_name" style="top:13px;">
{if $sort_by == 'name_up' || $sort_by == 'name_down'}Bezeichnung<input type="hidden" id="sort_selection_item" name="sort_selection_item" value="name" />{/if}
{if $sort_by == 'number_up' || $sort_by == 'number_down'}Artikelnummer<input type="hidden" id="sort_selection_item" name="sort_selection_item" value="number" />{/if}
{if $sort_by == 'manufacturer_up' || $sort_by == 'manufacturer_down'}Hersteller<input type="hidden" id="sort_selection_item" name="sort_selection_item" value="manufacturer" />{/if}
{if $sort_by == 'price_up' || $sort_by == 'price_down'}Preis<input type="hidden" id="sort_selection_item" name="sort_selection_item" value="price" />{/if}
</div>
<div class="menu_field">
<div style="position:absolute;left:110px;top:27px;height:1px;width:28px;background:#ffffff;z-index:100;"></div>
<div class="category_menu">
<ul>
<li><a class="sort_item" rel="name" href="{$currentSURI}" title="Bezeichnung">Bezeichnung</a></li>
<li><a class="sort_item" rel="number" href="{$currentSURI}" title="Artikelnummer">Artikelnummer</a></li>
<li><a class="sort_item" rel="manufacturer" href="{$currentSURI}" title="Hersteller">Hersteller</a></li>
<li><a class="sort_item" rel="price" href="{$currentSURI}" title="Preis">Preis</a></li>
</ul>
</div>
</div>
</div>
<div class="sort_direction_up {if $sort_by == 'name_up' || $sort_by == 'number_up' || $sort_by == 'manufacturer_up' || $sort_by == 'price_up'}sort_up_active{/if}"></div>
<div class="sort_direction_down {if $sort_by == 'name_down' || $sort_by == 'number_down' || $sort_by == 'manufacturer_down' || $sort_by == 'price_down'}sort_down_active{/if}"></div>
<form id="sort_by" method="post" action="{$currentSURI}">
<input type="hidden" name="sort_by" id="sort_by_selector" value="{$sort_by}">
</form>
</div>
{/if}
</div>
{if !$hide_pagination}
<div class="bottom">
<!-- item shown -->
<div class="list_item_shown_wrapper">
<a class="pagingButton {if $itemsPerPage == 24}activ{/if}" title="24 Artikel" rel="24" href="#">24</a>|<a title="48 Artikel" class="pagingButton {if $itemsPerPage == 48}activ{/if}" rel="48" href="#">48</a>|<a title="Alle Artikel" class="pagingButton {if $itemsPerPage == 9999}activ{/if}" rel="9999" href="#">alle</a>
<form id="pagingSelectorForm" method="post">
<input type="hidden" name="pagingSelector" value="" id="pagingSelector">
</form>
</div>
<!-- pagination -->
{if $shopArticles && isset($found_pages) && $found_pages > 1}
<div class="pagination">
{if $found_showing_page > 1}
<a rel="{$found_showing_page-1}" title="Seite zurück" class="pagination_button pagination_back" href="#">&nbsp;</a>
{else}
<a title="Seite zurück" class="pagination_back inactive">&nbsp;</a>
{/if}
{section name=pageloop start=1 loop=$found_pages+1}
{if ($found_showing_page >= $smarty.section.pageloop.index - 6 && $found_showing_page <= $smarty.section.pageloop.index + 6) || $smarty.section.pageloop.index < 7 || $smarty.section.pageloop.index > $found_pages - 6}
<a title="Seite {$smarty.section.pageloop.index}" rel="{$smarty.section.pageloop.index}" href="#" class="pagination_button {if $found_showing_page == $smarty.section.pageloop.index}highlight{/if}">{$smarty.section.pageloop.index}</a>
{elseif $smarty.section.pageloop.index == 7 || $smarty.section.pageloop.index == $found_pages - 7}
<span>[...]</span>
{/if}
{/section}
{if $found_showing_page < $found_pages}
<a title="Seite vor" rel="{$found_showing_page+1}" class="pagination_button pagination_forward" href="#">&nbsp;</a>
{else}
<a title="Seite vor" class="pagination_forward inactive">&nbsp;</a>
{/if}
<form id="paginationForm" method="post">
<input type="hidden" name="page" value="" id="paginationSeite">
</form>
</div>
{/if}
</div>
{/if}
</div>
{if $search_item_categories}
<div class="content_box_structure_family_list full_box">
<div class="family_list_content clearfix">
{if isset($content_box_title) || $content_box_title}
<div class="title_wrapper">
<h1>
{if isset($content_box_title) && $content_box_title}
{$content_box_title}
{else}
{$structureData->name}
{/if}
{if $shopArticles|@count > 0}
({$shopArticles|@count} Treffer)
{/if}
</h1>
</div>
{/if}
<div class="grandchildren">
<br />
{foreach $search_item_categories as $child}
{foreach $child->children as $grandchild}
{if $grandchild->active == 1}
<a title="{$grandchild->name}" href="./index.php?search_item={$search_item}&search_item2={$search_item2}&search_item3={$search_item3}&item_category={$grandchild->id}" style="margin-bottom:2px;">
{if !$user_lang || $user_lang == $system_configuration.default_system_language || !$structure->name_en}
{$child->name} <span></span> {$grandchild->name} ({$grandchild->found_items})
{else}
{$child->name} <span></span> {$grandchild->name_en} ({$grandchild->found_items})
{/if}
</a>
{/if}
{/foreach}
{/foreach}
</div>
</div>
</div>
{/if}
{* List
********************************************}
<div class="listcontent" style="min-height:800px;">
{include file='item_box_loop.tpl'}
</div>
{* Footer
********************************************}
<div class="listfooter">
<div class="top">
{$system_configuration.shop_itemlist_footertext|replace:"\n":"<br />"}
</div>
{if !$hide_pagination}
<div class="bottom">
<!-- item shown -->
<div class="list_item_shown_wrapper">
<a title="24 Artikel" class="pagingButton {if $itemsPerPage == 24}activ{/if}" rel="24" href="#">24</a>|<a title="48 Artikel" class="pagingButton {if $itemsPerPage == 48}activ{/if}" rel="48" href="#">48</a>|<a title="Alle Artikel" class="pagingButton {if $itemsPerPage == 9999}activ{/if}" rel="9999" href="#">alle</a>
<form id="pagingSelectorForm" method="post">
<input type="hidden" name="pagingSelector" value="" id="pagingSelector">
</form>
</div>
<!-- pagination -->
{if $shopArticles && isset($found_pages) && $found_pages > 1}
<div class="pagination">
{if $found_showing_page > 1}
<a title="Seite zurück" rel="{$found_showing_page-1}" class="pagination_button pagination_back" href="#">&nbsp;</a>
{else}
<a title="Seite zurück" class="pagination_back inactive">&nbsp;</a>
{/if}
{section name=pageloop start=1 loop=$found_pages+1}
{if ($found_showing_page >= $smarty.section.pageloop.index - 6 && $found_showing_page <= $smarty.section.pageloop.index + 6) || $smarty.section.pageloop.index < 7 || $smarty.section.pageloop.index > $found_pages - 6}
<a title="Seite {$smarty.section.pageloop.index}" rel="{$smarty.section.pageloop.index}" href="#" class="pagination_button {if $found_showing_page == $smarty.section.pageloop.index}highlight{/if}">{$smarty.section.pageloop.index}</a>
{elseif $smarty.section.pageloop.index == 7 || $smarty.section.pageloop.index == $found_pages - 7}
<span>[...]</span>
{/if}
{/section}
{if $found_showing_page < $found_pages}
<a title="Seite vor" rel="{$found_showing_page+1}" class="pagination_button pagination_forward" href="#">&nbsp;</a>
{else}
<a title="Seite vor" class="pagination_forward inactive">&nbsp;</a>
{/if}
<form id="paginationForm" method="post">
<input type="hidden" name="page" value="" id="paginationSeite">
</form>
</div>
{/if}
</div>
{/if}
</div>
</div>
{/if}
@@ -0,0 +1,66 @@
{if $shopArticles|@count > 0}
{if $system_configuration.item_image_server_uri}
{assign var=SHOP_DIR value="{$system_configuration.item_image_server_uri}"}
{/if}
<div class="image_slider_wrapper full_box">
{if !$user_lang || $user_lang == $system_configuration.default_system_language || !$block->title_en}
<{$block->style}>{$block->title}</{$block->style}>
{else}
<{$block->style}>{$block->title_en}</span></{$block->style}>
{/if}
<div class="image_slider_content_outer_wrapper">
<div class="image_slider_content_inner_wrapper">
{foreach name=ArticleList item=shopArticle from=$shopArticles}
<div class="slider_item_box">
<a class="slider_item_box_number" href="{$serverProtocol}://{$servername}/{$shopArticle->short_uri}.html">
Art.-Nr.: {$shopArticle->number}
</a>
<a class="slider_item_box_info" href="{$serverProtocol}://{$servername}/{$shopArticle->short_uri}.html">
{$shopArticle->name|truncate:35:"...":true}
</a>
<div class="slider_item_box_image">
<a class="slider_image" href="{$serverProtocol}://{$servername}/{$shopArticle->short_uri}.html" style="background-image:url({$SHOP_DIR}images/article/overview_{if $shopArticle->file_name}{$shopArticle->file_name}{else}default_image.png{/if});"></a>
</div>
<div class="slider_item_box_price">
<div class="slider_item_box_info_bull"></div>
{if $no_prices}
<div class="slider_price slider_enquiry_price">auf Anfrage</div>
{else}
{if $shopArticle->price_type == "1"}
{if $shopArticle->shop_bargain_price_1 > 0}
{* <div class="slider_price slider_normal_price">
{$shopArticle->shop_price_1|number_format:2:',':" "}&nbsp;&euro;
</div>
*} <div class="slider_price slider_bargain_price">
{$shopArticle->shop_bargain_price_1|number_format:2:',':" "}&nbsp;&euro;
</div>
{else}
<div class="slider_price">
{$shopArticle->shop_price_1|number_format:2:',':" "}&nbsp;&euro;
</div>
{/if}
<div style="clear:right;"></div>
{else if $shopArticle->price_type == "0"}
<div class="slider_price slider_enquiry_price">auf Anfrage</div>
{/if}
{/if}
</div>
</div>
{/foreach}
</div>
</div>
<a class="slider_image_slider_trigger_left"></a>
<a class="slider_image_slider_trigger_right"></a>
<div style="clear:both;"></div>
</div>
<script type="text/javascript">
var ItemsMax = {$shopArticles|@count};
var boxSizingOn = true;
</script>
<script type="text/javascript" src="{$PARENT_THEME_DIR}/media/js/content_box_slider.js"></script>
{/if}
@@ -0,0 +1,42 @@
<div class="content_box_structure_list">
{if !$user_lang || $user_lang == $system_configuration.default_system_language || !$block->title_en}
<div class="header">
<{$block->style}>{$block->title}</{$block->style}>
</div>
{else}
<div class="header">
<{$block->style}>{$block->title_en}</{$block->style}>
</div>
{/if}
<div class="content">
{foreach item=structure from=$substructures}
{if $structure->active == 1}
<div class="structure_item">
<a title="{if $structure->image_alt_text}{$structure->image_alt_text}{else}{$structure->name}{/if}" href="{$structure->short_uri}/">
<div class="structure_item_text_sign">
<strong>»</strong>
</div>
<div class="structure_item_text">
{if !$user_lang || $user_lang == $system_configuration.default_system_language || !$structure->name_en}
<span>{$structure->name}</span>
{else}
<span>{$structure->name_en}</span>
{/if}
</div>
<div class="image_wrapper" style="text-align:center;text-valign:middle;">
<table border="0" cellpadding="0" cellspacing="0" width="100%" height="100%">
<tr><td align="center" valign="middle">
<img src="{$SHOP_DIR}images/structure/{$structure->image}" alt="{if $structure->image_alt_text}{$structure->image_alt_text}{else}{$structure->name}{/if}" />
</td></tr>
</table>
</div>
</a>
</div>
{/if}
{/foreach}
<br style="clear:left;" />
</div>
</div>
@@ -0,0 +1,83 @@
<!-- content_cash_desk/payments.tpl -->
<div class="agreements_box">
{if $agb_data.widerruf != '' || $agb_data.datenschutz != '' || $agb_data.agbs != ''}
<div class="full_box purple_box">
<div class="title_wrapper">
<div class="title"><h2>Widerrufsbelehrung, Datenschutz &amp; AGB</h2></div>
<div class="clear"></div>
</div>
<div class="box_padder" style="margin:20px;">
Klicken Sie auf die &Uuml;berschriften, um den vollst&auml;ndigen Artikel zu lesen<br />
<br />
{if $agb_data.widerruf != '' && $customer->group_id != 101}
<div id="power_of_revocation" class="cashdesk_agreement_header">{$template_text.default.cashdesk_title_widerruf}</div>
<div id="power_of_revocation_wrapper" style="background:#979797;border:1px solid #979797;margin-top:2px;display:none;">
<div id="power_of_revocation_content" style="margin:10px;border:1px solid white;background:white;">
<div style="margin:10px;">{$agb_data.widerruf}</div>
</div>
</div>
{/if}
{if $agb_data.datenschutz != '' && $customer->group_id != 101}
<div id="data_privacy" class="cashdesk_agreement_header">{$template_text.cashdesk.cashdesk_title_datenschutz}</div>
<div id="data_privacy_wrapper" style="background:#979797;border:1px solid #979797;margin-top:2px;display:none;">
<div id="data_privacy_content" style="margin:10px;border:1px solid white;background:white;">
<div style="margin:10px;">{$agb_data.datenschutz}</div>
</div>
</div>
{/if}
{if $agb_data.agbs_b2b != '' && $customer->group_id == 101}
<div id="terms_and_conditions" class="cashdesk_agreement_header">{$template_text.cashdesk.cashdesk_title_agb}</div>
<div id="terms_and_conditions_wrapper" style="background:#979797;border:1px solid #979797;margin-top:2px;display:none;">
<div id="terms_and_conditions_content" style="margin:10px;border:1px solid white;background:white;">
<div style="margin:10px;">{$agb_data.agbs_b2b}</div>
</div>
</div>
{else}
<div id="terms_and_conditions" class="cashdesk_agreement_header">{$template_text.cashdesk.cashdesk_title_agb}</div>
<div id="terms_and_conditions_wrapper" style="background:#979797;border:1px solid #979797;margin-top:2px;display:none;">
<div id="terms_and_conditions_content" style="margin:10px;border:1px solid white;background:white;">
<div style="margin:10px;">{$agb_data.agbs}</div>
</div>
</div>
{/if}
</div>
</div>
{/if}
<br />
<div class="agreements_info" style="width:720px;border:1px solid #000000; background:#ff9900;">
<input id="agreements_accepted" type="checkbox" value="1" name="agreements_accepted" />
{if $customer->group_id == 101}
<label style="color:#000000;" for="agreements_accepted">
{$template_text.cashdesk.agreement_checkbox_text_merchant}
</label>
{else}
<label style="color:#000000;" for="agreements_accepted">
{$template_text.cashdesk.agreement_checkbox_text}
</label>
{/if}
</div>
<br />
{if $customer->group_id == 101}
<div class="agreement_subtext" style="width:720px;color:#000000;">
Sie m&uuml;ssen unseren Allgemeinen Gesch&auml;ftsbedingungen (AGB) zustimmen, um den Einkauf abzuschlie&szlig;en.
Sie erhalten die AGB nach Abschluss nochmals per E-Mail und k&ouml;nnen diese speichern / archivieren.
</div><br>
{else}
<div class="agreement_subtext" style="width:720px;color:#000000;">
Sie m&uuml;ssen unseren Allgemeinen Gesch&auml;ftsbedingungen (AGB) und den Hinweisen zum
Datenschutz sowie der Widerrufsbelehrung zustimmen, um den Einkauf abzuschlie&szlig;en. Sie
erhalten diese Hinweise, Erkl&auml;rungen und Belehrungen nach Abschluss nochmals per E-Mail
und k&ouml;nnen diese speichern / archivieren.
</div><br>
{/if}
<div id="klarna_agreements_info" style="width:720px;border:1px solid #000000; background:#ff9900;display:none;">
<input id="klarna_agreements_accepted" type="checkbox" value="1" name="klarna_agreements_accepted" />
<span>
Mit der Übermittlung der für die Abwicklung der gewählten Klarna Zahlungsmethode und einer Identitäts- und Bonitätsprüfung erforderlichen Daten an Klarna bin ich einverstanden. Meine <span id="klarna_pop" style="font-weight:bold;text-decoration:underline;cursor:pointer;">Einwilligung</span> kann ich jederzeit mit Wirkung für die Zukunft widerrufen. Es gelten die AGB des Händlers.
</span>
</div>
<br />
</div>
@@ -0,0 +1,21 @@
<!-- content_cash_desk/completed.tpl -->
<div class="full_box">
<div class="title_wrapper">
<div class="title"><h2>Bestellung erfolgreich &uuml;bermittelt</h2></div>
<div class="clear"></div>
</div>
<div class="box_content">
<div class="completed_box">
{$system_configuration.cash_desk_order_completed|replace:"[#order_number]":$order_number}
</div>
<br><br>
{if $system_configuration.trusted_shop_buyer_protection == 1}
<div class="protection_box">
{include file='content_cash_desk/trusted_shop_buyer_protection.tpl'}
</div>
{/if}
</div>
</div>
@@ -0,0 +1,103 @@
<!-- content_cash_desk/payments.tpl -->
<div class="full_box">
<div class="title_wrapper">
<div class="title"><h2>Zahlungsweise</h2></div>
<div class="clear"></div>
</div>
<div class="box_content">
<div class="box_padder">
Bitte w&auml;hlen Sie eine der hier aufgef&uuml;hrten Zahlungsweisen aus<br />
<br />
{foreach item=pMethod from=$payment_methods name=pMethodLoop}
{if ($pMethod->helperjoinkey != 'be' && $pMethod->helperjoinkey != 'r') || ($pMethod->helperjoinkey == 'be' && $customer->direct_debit_active == 1) || ($pMethod->helperjoinkey == 'r' && $customer->rechnung_active == 1)}
{if $pMethod->activeType > 0}
<div class="payment_method_line {if $personal_data.payment_method == $pMethod->id || (!$personal_data.payment_method == $pMethod->id && $smarty.foreach.pMethodLoop.first)}active{/if}" style="border-bottom:#A4A4A4 1px solid;padding:15px 0px;">
<div style="float:left;">
<input type="radio"
name="payment_method"
value="{$pMethod->id}"
id="selection_{$pMethod->helperjoinkey}"
{if $personal_data.payment_method == $pMethod->id || $smarty.foreach.pMethodLoop.first}
checked="checked"
{/if}
/>
</div>
<div style="float:left;margin-left:10px;font-weight:bold;width:530px;">
<strong>{$pMethod->name}</strong>
{if $pMethod->helperjoinkey == 'klarna_rechnung'}
<br>
Zahlung innerhalb von 14 Tagen <a href="https://online.klarna.com/villkor_de.yaws?eid={$system_configuration.klarna_eid}&charge=0" target="_blank">Lesen Sie mehr</a><br>
<br>
<img src="{$PARENT_THEME_DIR}/media/images/cash_desk/klarna_rechnung.png" style="height: 30px;" /><br>
{elseif $pMethod->helperjoinkey == 'billpay_invoice'}
<br>
Mit der &Uuml;bermittlung der f&uuml;r die Abwicklung des Rechnungskaufs und einer
Identit&auml;ts- und Bonit&auml;tspr&uuml;fung erforderlichen Daten an die
<a href="https://billpay.de/endkunden" target="blank">Billpay GmbH</a> bin ich einverstanden.
Es gelten die <a href="https://www.billpay.de/kunden/agb#datenschutz" target="blank">Datenschutzbestimmungen</a>
von Billpay.<br>
<br>
<img src="https://www.billpay.de/wp-content/uploads/2011/04/LogoSmall_0.png" alt="Billpay Logo" title="Billpay Logo" style="height: 30px;" />
{elseif $pMethod->helperjoinkey == 'klarna_raten'}
<br>
Finanzieren <a href="https://online.klarna.com/account_de.yaws?eid={$system_configuration.klarna_eid}" target="_blank">Lesen Sie mehr</a><br>
<br>
<img src="{$PARENT_THEME_DIR}/media/images/cash_desk/klarna_ratenkauf.png" style="height: 30px;" /><br>
{foreach item=rate from=$klarna_installments}
{*{$rate.months} Monatsraten zu je {$rate.monthly_costs|number_format:"2":",":"."} &euro; / Monat<br />*}
{/foreach}
{elseif $pMethod->helperjoinkey == 'paymorrow_rechnung'}
<br>
<img src="{$PARENT_THEME_DIR}/media/images/cash_desk/paymorrow_rechnung.png" style="height: 30px;" />
{elseif $pMethod->helperjoinkey == 'paymorrow_raten'}
<br>
<img src="{$PARENT_THEME_DIR}/media/images/cash_desk/paymorrow_ratenkauf.png" style="height: 30px;" />
{else}
<br>{$pMethod->order_text|replace:'[#customer_freetextfield3]':$customer->freetextfield3}
{/if}
</div>
<div style="float:right;text-align:right;">
{if $pMethod->paymentAdd != 0}
{if $pMethod->accountType == '0'}
<span class="payment_type_text">Aufschlag in Euro</span><br />
{elseif $pMethod->accountType == '1'}
<span class="payment_type_text">Abschlag in Euro</span><br />
{elseif $pMethod->accountType == '2'}
<span class="payment_type_text">Prozentualer Aufschlag</span><br />
{elseif $pMethod->accountType == '3'}
<span class="payment_type_text">Prozentualer Abschlag</span><br />
{/if}
{/if}
{if $pMethod->paymentAdd != 0}
{if $pMethod->accountType == '0'}
<strong>zzgl. {$pMethod->paymentAdd|number_format:"2":",":"."} &euro;</strong>
{elseif $pMethod->accountType == '1'}
<strong>abzgl. {$pMethod->paymentAdd|number_format:"2":",":"."} &euro;</strong>
{elseif $pMethod->accountType == '2'}
<strong>zzgl. {$pMethod->rawAdd|number_format:"2":",":"."} %</strong>
{elseif $pMethod->accountType == '3'}
<strong>abzgl. {$pMethod->rawAdd|number_format:"2":",":"."} %</strong>
{/if}
{else}
{if $pMethod->id != 14}kostenlos{else}nach Vereinbarung{/if}
{/if}
</div>
{if isset($payment_method_feedback) && ($pMethod->id == $payment_method_feedback.payment_method && $payment_method_feedback.message != '')}
<div style="clear:both;padding-top:10px;color:red;margin-left:30px;margin-right:70px;">
{$payment_method_feedback.message}
</div>
{/if}
<br style="clear:both;" />
</div>
{/if}
{/if}
{/foreach}
</div>
</div>
</div>
@@ -0,0 +1,38 @@
<!-- content_cash_desk/shipping.tpl -->
<div class="full_box">
<div class="title_wrapper">
<div class="title"><h2>Versandart</h2></div>
<div class="clear"></div>
</div>
<div class="box_content">
<div class="box_padder">
Bitte w&auml;hlen Sie eine der hier aufgef&uuml;hrten Versandarten aus<br />
<br />
{foreach item=deliverer from=$deliverers name=delivererLoop}
<div class="shipping_method_line {if $personal_data.shipping_method == $deliverer->id || ($personal_data.shipping_method && $smarty.foreach.delivererLoop.first)}active{/if}" style="border-bottom:#A4A4A4 1px solid;padding:15px 0px;">
<div style="float:left;">
<input type="radio" name="shipping_method" value="{$deliverer->id}" {if $personal_data.shipping_method == $deliverer->id || $smarty.foreach.delivererLoop.first}checked{/if} />
</div>
<div style="float:left;margin-left:10px;font-weight:bold;">
<strong>{$deliverer->name}</strong>
{if $deliverer->bulk_goods_price_add}
<br>
<span style="font-weight:normal;"><br />{$deliverer->bulk_goods_price_add|number_format:"2":",":"."} &euro; Sperrgutaufschlag</span>
{/if}
</div>
<div style="float:right;">
{if $deliverer->price_add > 0}
<strong>zzgl. {$deliverer->price_add|number_format:"2":",":"."} &euro;</strong>
{else}
{if $deliverer->id != 5}kostenlos{else}nach Vereinbarung{/if}
{/if}
</div>
<br style="clear:both;" />
</div>
{/foreach}
</div>
</div>
</div>
@@ -0,0 +1,232 @@
<!-- content_cash_desk/shoppingcart.tpl -->
<div class="full_box">
<div class="title_wrapper">
<div class="title"><h2>Warenkorb</h2></div>
<div class="clear"></div>
</div>
<div class="box_content">
<div class="box_padder">
{if $shoppingcart.items}
<table class="cart_table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr class="cart_head">
<td class="alcenter">Pos.</td>
<td class="alcenter">Bild</td>
<td>Beschreibung</td>
<td class="alright">St&uuml;ckpreis</td>
<td class="alcenter">Anzahl</td>
<td class="alright">Gesamtpreis</td>
</tr>
{foreach item=item name=carLoop from=$shoppingcart.items}
<tr class="cart_row">
<td class="alcenter">{$smarty.foreach.carLoop.iteration}</td>
<td class="alcenter"><img src="{$SHOP_DIR}images/article/thumb_{if $item->default_image_file_name}{$item->default_image_file_name}{else}default_image.png{/if}" /></td>
<td>
{if $item->short_uri}
{assign var=itemSuri value="/`$item->short_uri`.html"}
{else}
{assign var=itemSuri value="/index.php?item_id=`$item->id`"}
{/if}
<a href="{$serverProtocol}://{$servername}{$itemSuri}"><strong>{$item->name}</strong></a><br />
{if $item->cartVariant_1 || $item->cartVariant_2}
{$item->cartVariant_1} {$item->cartVariant_2}<br />
{/if}
{if ($item->variant_1 || $item->variant_2) && $item->item_number}
<span>Art.-Nr. {$item->item_number}</span>
{else}
{if $item->attribute_7 && $item->number != $item->attribute_7}
<span>Art.-Nr. {$item->attribute_7}&nbsp;&nbsp;&nbsp;({$template_text.item_details.old_item_number_title} {$item->number})</span>
{else}
<span>Art.-Nr. {$item->number}</span>
{/if}
{/if}
</td>
<td class="alright">{$item->calculatedPrices.shownPrice|number_format:"2":",":"."} &euro;</td>
<td class="alcenter">
{$item->quantity}
</td>
<td class="alright">
<strong>{($item->calculatedPrices.shownPrice * $item->quantity)|number_format:"2":",":"."} &euro;</strong>
</td>
</tr>
{/foreach}
<tr class="cart_footer_first">
<td></td>
<td>&nbsp;</td>
<td>Summe aller Artikel</td>
<td></td>
<td></td>
<td class="alright">{$shoppingcart.shown_price_sum|number_format:"2":",":"."} &euro;</td>
</tr>
{if $personal_data.payment_method}
{assign var=usedPaymentMethod value=$payment_methods[$personal_data.payment_method]}
{else}
{assign var=usedPaymentMethod value=$payment_methods[$defaultPaymentMethod]}
{/if}
{if $usedPaymentMethod->paymentAddShown != 0}
<tr class="alright">
<td></td>
<td>&nbsp;</td>
<td>
{if $usedPaymentMethod->accountType == '0'}
zzgl. Dienstleistungsgeb&uuml;hren
{elseif $usedPaymentMethod->accountType == '1'}
abzgl. Dienstleistungsgeb&uuml;hren
{elseif $usedPaymentMethod->accountType == '2'}
zzgl. Dienstleistungsgeb&uuml;hren
{elseif $usedPaymentMethod->accountType == '3'}
abzgl. Dienstleistungsgeb&uuml;hren
{/if}
</td>
<td></td>
<td></td>
<td class="alright">
{$usedPaymentMethod->paymentAddShown|number_format:"2":",":"."} &euro;
</td>
</tr>
{/if}
{if $personal_data.shipping_method}
{assign var=usedShippingMethod value=$deliverers[$personal_data.shipping_method]}
{else}
{assign var=usedShippingMethod value=$deliverers[$defaultDeliverer]}
{/if}
{if $usedShippingMethod->price_add_shown != 0}
<tr class="alright">
<td></td>
<td>&nbsp;</td>
<td>zzgl. Versandkostenpauschale</td>
<td></td>
<td></td>
<td class="alright">
{$usedShippingMethod->price_add_shown|number_format:"2":",":"."} &euro;
</td>
</tr>
{/if}
{foreach $shoppingcart.tax_values as $taxRate => $taxData}
<tr class="cart_footer_vat">
<td></td>
<td>&nbsp;</td>
<td>
{if $shoppingcartVATUsage}
Darin enthaltene MwSt.
{else}
Zzgl. MwSt.
{/if}
</td>
<td>{$taxRate} %</td>
<td></td>
<td class="alright">
{if $taxRate == '19.00'}
{($taxData['vat'] + $shoppingcart.payment_method_vat + $shoppingcart.shipping_method_vat)|number_format:"2":",":"."}
{else}
{$taxData['vat']|number_format:"2":",":"."}
{/if}
&euro;
</td>
</tr>
{/foreach}
{if $giftcertificatevalue}
<tr class="cart_footer_sum">
<td></td>
<td>&nbsp;</td>
<td>
Zwischen Betrag
</td>
<td></td>
<td></td>
<td class="alright">
{$shoppingcart.order_total|number_format:"2":",":"."} &euro;
</td>
</tr>
<tr class="alright">
<input type="hidden" name="giftcertificate[has_gift_certificate]" value="yes" />
<input type="hidden" name="giftcertificate[gift_certificat_code]" value="{$giftcode}" />
<td></td>
<td>&nbsp;</td>
<td>abzgl. Gutschein {$giftcode}</td>
<td></td>
<td></td>
<td class="alright">
- {$giftcertificatevalue|number_format:"2":",":"."} &euro;
</td>
</tr>
{*{foreach $shoppingcart.tax_values as $taxRate => $taxData}
<tr class="cart_footer_vat">
<td></td>
<td>
{$taxData['gift']['percent']|number_format:"2":",":"."} % davon mit {$taxRate} % MwSt.
</td>
<td></td>
<td></td>
<td class="alright">
<!-- what do you want to show in an order that is without taxes -->
</td>
</tr>
{/foreach}*}
<tr class="cart_footer_sum">
<td></td>
<td>&nbsp;</td>
<td>
Gesamtpreis inkl. Mwst.
</td>
<td></td>
<td></td>
<td class="alright">
{($shoppingcart.order_total - $giftcertificatevalue)|number_format:"2":",":"."} &euro;
</td>
</tr>
{else}
<tr class="cart_footer_sum">
<td></td>
<td>&nbsp;</td>
<td>
Gesamtpreis inkl. Mwst.
</td>
<td></td>
<td></td>
<td class="alright">
{$shoppingcart.order_total|number_format:"2":",":"."} &euro;
</td>
</tr>
{if $system_configuration.cashdesk_giftcertificate == 1}
<tr>
<td></td>
<td>&nbsp;</td>
<td style="text-align:right;">
{if $gftcertificateerrormessage}
<label style="color:red;">{$gftcertificateerrormessage}</label>
{else}
<label>Gutschein</label>
{/if}
<input type="hidden" name="giftcertificate[has_gift_certificate]" id="has_gift_certificate" {if $giftcode}value="yes"{/if} />
<input type="text" class="obligatory" name="giftcertificate[gift_certificat_code]" id="giftCertificateCodeFields" style="width:155px;color:#5C0069;background:#D4D4D4;border:1px solid #A8A8A8;" {if $giftcode}value="{$giftcode}"{/if} />
</td>
<td></td>
<td></td>
<td></td>
</tr>
{/if}
{/if}
</table>
<br /><br />
<div style="float:right;padding-right:0px;">
<input class="button" id="send_order_button" type="button" style="width:300px;" value="{$template_text.content_cashdesk.cashdesk_button}" />
</div>
<br style="clear:right;" />
{else}
Es befinden sich keine Artikel in Ihrem Warenkorb
{/if}
</div>
</div>
</div>
@@ -0,0 +1,148 @@
<!-- content_customer_center/add_address.tpl -->
<div class="full_box">
<div class="title_wrapper">
<div class="title"><h2>Adressen {if $customer_addresses && $customer_addresses|is_array}({$customer_addresses|count}){/if}</h2></div>
<a class="actionButton" href="#add_address_form">Hinzuf&uuml;gen</a>
</div>
<div class="box_content">
<div class="box_padder">
<form target="{$this_url}" method="post" id="add_address_form" class="formated_form">
<input type="hidden" name="action" value="add_address" />
<input type="hidden" name="id" />
<!-- block: company -->
<div class="line first">
<div class="full">
<label for="company">Firma</label>
<input type="text" class="full" name="company" />
</div>
</div>
<!-- end block: company -->
<!-- block: honorific -->
<div class="line">
<div class="short">
<label for="honorific">Anrede</label><br />
<select name="honorific" class="short">
<option value="0" {if $customer->honorific == '0'}selected="selected"{/if}>Herr</option>
<option value="1" {if $customer->honorific == '1'}selected="selected"{/if}>Frau</option>
<option value="2" {if $customer->honorific == '2'}selected="selected"{/if}>Firma</option>
</select>
</div>
</div>
<!-- end block: honorific -->
<!-- block: name -->
<div class="line">
<div class="half">
<label for="firstname">Vorname</label><br />
<input type="text" class="half" name="firstname" value="{$customer->firstname}" />
</div>
<div class="last half">
<label for="surname">Nachname</label><br />
<input type="text" class="half" name="surname" value="{$customer->surname}" />
</div>
</div>
<!-- end block: name -->
<!-- block: street -->
<div class="line">
<div class="long">
<label for="street">Strasse</label><br />
<input type="text" class="half" name="street" />
</div>
<div class="last half">
<label for="house_number">Hausnummer</label><br />
<input type="text" class="half" name="house_number" />
</div>
</div>
<!-- end block: street -->
<!-- block: city and country -->
<div class="line">
<div class="half">
<label for="zip_code">Postleitzahl</label><br />
<input type="text" class="half" name="zip_code" />
</div>
<div class="last half">
<label for="city">Ort</label><br />
<input type="text" class="half" name="city" />
</div>
</div>
<!-- end block: city -->
<!-- block: country -->
<div class="line">
<div class="half">
<label for="country">Land</label><br />
<select name="country" >
{foreach from=$countries item=country}
<option value="{$country->id}">{$country->name}</option>
{/foreach}
</select>
</div>
</div>
<!-- end block: country -->
<!-- block: submit -->
<div class="line">
<span class="target">
</span>
<input type="submit" value="Speichern" class="button" style="width:125px;margin-left:350px;" />
</div>
<!-- end block: submit -->
</form>
{if $customer_addresses}
<div id="addressesContainer" class="clearfix">
{foreach from=$customer_addresses item=address}
<div class="address clearfix {if $address->id == $customer->default_address}default_address{/if}">
<div class="menu_bar">
<a href="{$this_url}&action=get_address&id={$address->id}" class="edit_address">&nbsp;</a>
<a href="{$this_url}&action=delete_address&id={$address->id}" class="delete_address">&nbsp;</a>
{if $address->id != $customer->default_address}
<a href="{$this_url}&action=set_standard&id={$address->id}" class="set_standard">&nbsp;</a>
{/if}
<div class="clear"></div>
</div>
<div class="vcard">
{if $address->id == $customer->default_address}
<span class="default">Rechnungsadresse</span><br>
{/if}
{if $address->company != ""}
<strong>{$address->company}</strong><br>
{$address->honorific_text} {$address->firstname} {$address->surname}<br>
{else}
{$address->honorific_text}<br>
<strong>{$address->firstname} {$address->surname}</strong><br>
{/if}
{$address->street} {$address->house_number}<br>
{$address->zip_code} {$address->city}<br>
{$address->country}<br>
</div>
</div>
{/foreach}
</div>
{else}
<p>Sie haben keine Adressen angegeben.</p>
{/if}
</div>
</div>
{if $customer_addresses && $customer_addresses|is_array && $customer_addresses|count > 2}
<a id="showAllAddressesTrigger" href="">Alle {$customer_addresses|count} Adressen zeigen</a>
{/if}
</div>
@@ -0,0 +1,484 @@
<!-- indi:content_item -->
{assign var=item_debug value=false}
{assign var=item_has_variants value=false}
{assign var=preis_praefix value=""}
{assign var=new_price value=""}
{if $shopArticle->schema_data->selectable_attribute_1 || $shopArticle->schema_data->selectable_attribute_2}
{assign var=preis_praefix value="ab"}
{foreach from=$shopArticle->schema_data_attributes item=attribute}
{if $shopArticle->schema_data->selectable_attribute_1 == $attribute.number}
{assign var=att_name_1 value="`$attribute.name`"}
{assign var=att_unit_1 value="`$attribute.unit`"}
{/if}
{/foreach}
{foreach from=$shopArticle->schema_data_attributes item=attribute}
{if $shopArticle->schema_data->selectable_attribute_2 == $attribute.number}
{assign var=att_name_2 value="`$attribute.name`"}
{assign var=att_unit_2 value="`$attribute.unit`"}
{/if}
{/foreach}
{/if}
<div class="content_item">
<div id="item_content1">
<div id="back_button">{$template_text.item_details.button_back}</div>
<div class="title_wrapper">
<div class="item_title">
<h1>
{if !$user_lang || $user_lang == $system_configuration.default_system_language || !$shopArticle->name}
{$shopArticle->name}
{else}
{$shopArticle->name_en}
{/if}
{if $shopArticle->manufacturer_data->name}
| <span class="manufacturer_name">
von {$shopArticle->manufacturer_data->name}
</span>
{/if}
</h1>
</div>
{if $shopArticle->number}
<span class="item_number">
{$template_text.item_details.item_number}
<span class="item_number_number">
{$shopArticle->number}
</span>
</span>
{/if}
</div>
<div class="image_wrapper">
{if isset($shopArticle->files[0]) && $shopArticle->files[0]->file_name}
<div id="image_detailed_container_outer">
<div id="image_detailed_container_middle">
<div id="image_detailed_container_inner">
{foreach item=file from=$shopArticle->files}
<a title="Artikelansicht" class="detailImage" href="{$SHOP_DIR}images/article/{$file->file_name}" rel="lightbox-big" title="{$shopArticle->name}" style="background-image: url({$SHOP_DIR}images/article/details_{$file->file_name})"></a>
{/foreach}
</div>
</div>
<a href="#zurueck" id="image_detailed_backward" title="Zurück"></a>
<a href="#vor" id="image_detailed_forward" title="Vor"></a>
</div>
{/if}
{if $shopArticle->files|@count > 1}
<div id="item_thumb_slider_wrapper">
<div id="item_thumbs_title">Weitere Artikelbilder</div>
<div id="thumbContainer">
<div id="thumbScrollContainer" style="width:{if $shopArticle->files|@count > 3}{$shopArticle->files|@count|ceil*141}{else}423{/if}px;">
{foreach item=file name=loop_thumbs from=$shopArticle->files}
<a class="thumbimage" href="{$SHOP_DIR}images/article/{$file->file_name}" rel="lightbox-small" title="{$shopArticle->name}" style="background-image: url({$SHOP_DIR}images/article/thumb_{$file->file_name});"></a>
{if !$smarty.foreach.loop_thumbs.last}<div class="last_thumb_image"></div>{/if}
{/foreach}
<br class="clear_left" />
</div>
</div>
{if $shopArticle->files|@count > 3}
<input id="thumbSlideLeft" class="thumbSlider" type="button" value="" />
<input id="thumbSlideRight" class="thumbSlider" type="button" value="" />
{/if}
</div>
{/if}
</div>
<form method="post" id="item_buy_form">
<div class="item_box_right_wrapper">
{if $shopArticle->schema_data->selectable_attribute_1 || $shopArticle->schema_data->selectable_attribute_2 || $item_debug}
{assign var=item_has_variants value=true}
<div id="manufacturer_wrapper">
<div class="title_manufacturer">Auswahl der Artikelvariante</div>
<!-- Variant selection -->
<div class="variants_box">
{assign var=new_price value=""}
{if $shopArticle->schema_data->selectable_attribute_1 || $shopArticle->schema_data->selectable_attribute_2}
<div class="item_variant_box">
<div class="box_title">
<span class="button_name">Bitte w&auml;hlen Sie eine passende Variante</span>
</div>
<div class="widget_menu_arrow"></div>
</div>
<div class="variant_selection_box">
{foreach item=item name=cartLoop from=$shopArticle->variant_structure}
{if $item->id != $shopArticle->id}
{if !$new_price || $new_price > $item.shop_price_1}
{assign var=new_price value=$item.shop_price_1}
{/if}
{if $shopArticle->id == $item.id}
{assign var=preis_praefix value=""}
{/if}
{if $item.short_uri}
{assign var=useUri value="`$item.short_uri`.html"}
{else}
{assign var=useUri value="/index.php?item_id=`$item.id`"}
{/if}
<a href="{$useUri}" title="{$item.name}">
<div class="variant_item">
<span class="item_name">{$item.name}</span>
<span class="item_number">{$item.number}</span>
<span class="item_vdata">
{if $shopArticle->schema_data->selectable_attribute_1}
{$att_name_1}: {$item.data->attribute_1} {$att_unit_1}<br>
{/if}
{if $shopArticle->schema_data->selectable_attribute_2}
{$att_name_2}: {$item.data->attribute_2} {$att_unit_2}<br>
{/if}
</span>
<div class="variant_item_image" style="background:#ffffff url({$SHOP_DIR}/images/article/thumb_{if $item.default_image_file_name}{$item.default_image_file_name}{else}default_image.png{/if}) center center no-repeat;"></div>
<span class="item_price">
{if $item.price_type != 0}
{if $item.sample_price}
{$item.sample_price|number_format:"2":",":"."} &euro; / {$shopArticle->sample_unit}
{else}
{$item.shop_price_1|number_format:"2":",":"."} &euro;
{/if}
{/if}
</span>
</div>
</a>
{/if}
{/foreach}
</div>
{/if}
</div>
</div>
{/if}
{if $shopArticle->shop_bargain_price_1 > 0 || $item_debug}
<div id="spezial_price_icon"></div>
{/if}
{if ($shopArticle->graduated_prices|is_array && $shopArticle->graduated_prices || $item_debug)}
{assign var=itemHasGraduatedPrices value=true}
{else}
{assign var=itemHasGraduatedPrices value=false}
{/if}
<div id="price_box_wrapper" class="price_box_wrapper {if $item_has_variants}price_box_wrapper_with_variants{/if} {if $itemHasGraduatedPrices}price_box_wrapper_with_graduated_prices{/if}">
<div class="title_price">{$template_text.default.price}</div>
<div class="register_buy">
<div class="shippable_wrapper">
<div>
<span class="shippable_state">
{if $shopArticle->inventory > 0}
{if $shopArticle->shippable_inventory == 0}
<span class="notAvailable">&bull; Artikel nicht lieferbar</span>
{elseif $shopArticle->shippable_inventory == 1}
&bull; Artikel lieferbar
{elseif $shopArticle->shippable_inventory == 3}
&bull; Artikel Lieferzeit unbekannt
{elseif $shopArticle->shippable_inventory == 4}
&bull; Bestellartikel (Lieferzeit 2-3 Tage)
{elseif $shopArticle->shippable_inventory == 5}
&bull; Bestellartikel (Lieferzeit 14 Tage)
{/if}
{else}
{if $shopArticle->shippable == 0}
<span class="notAvailable">&bull; Artikel nicht lieferbar</span>
{elseif $shopArticle->shippable == 1}
&bull; Artikel lieferbar
{elseif $shopArticle->shippable == 2 && $shopArticle->available_from && $shopArticle->available_till != '0000-00-00'}
<span class="availableInRange">&bull; Artikel lieferbar vom {$shopArticle->available_from|date_format:"%d.%m.%Y"} bis {$shopArticle->available_till|date_format:"%d.%m.%Y"}</span>
{elseif $shopArticle->shippable == 2 && $shopArticle->available_from}
<span class="availableInRange">&bull; Artikel lieferbar ab {$shopArticle->available_from|date_format:"%d.%m.%Y"}</span>
{elseif $shopArticle->shippable == 3}
<span class="availableInRange">&bull; Lieferzeit unbekannt</span>
{elseif $shopArticle->shippable == 4}
&bull; Bestellartikel (Lieferzeit 2-3 Tage)
{elseif $shopArticle->shippable == 5}
&bull; Bestellartikel (Lieferzeit 14 Tage)
{/if}
{/if}
</span>
<br>
{if $shopArticle->inventory > 0 || $item_debug}
<span class="shippable_text">
Auf Lager
</span>
<br>
{/if}
{if $shopArticle->min_quantity && $shopArticle->min_quantity > 1 || $item_debug}
<span class="min_quantity">
Mindestabnahmemenge: {$shopArticle->min_quantity}
Einheit{if $shopArticle->min_quantity != 1}en{/if}
</span>
{/if}
</div>
</div>
<!-- content_item/graduated_prices.tpl begin -->
{if $itemHasGraduatedPrices}
<div id="graduated_price_wrapper">
<div class="graduated_price_title_wrapper">
<div id="graduated_price_title">Staffelpreise</div>
<div class="graduated_price_title_arrow"></div>
</div>
<div id="graduated_price_content">
<table class="graduatedPrices" border="0" cellpadding="0" cellspacing="0">
<tr>
<td>
&nbsp;ab <strong>1</strong>
{if $shopArticle->price_je_vpe}
VPE | {$shopArticle->vpe_amount} {$shopArticle->vpe_unit}
{else}
St.
{/if}
</td>
{if $shopArticle->shop_bargain_price_1 > 0 || $item_debug}
<td class="bargain_price_old">
&nbsp;
</td>
<td class="bargain_price_new">
{if !$no_prices || $item_debug}
{$shopArticle->shop_bargain_price_1|number_format:"2":",":"."} &euro; / {if $shopArticle->price_je_vpe}VPE{else}St.{/if}
{if $shopArticle->sample_price && $shopArticle->sample_unit && $shopArticle->sample_price > 0 || $item_debug}
<br /><span class="bargain_sample_price">Preis/{$shopArticle->sample_unit} = {$shopArticle->sample_price|number_format:"2":",":"."} &euro;</span>
{/if}
{else}
Preis nach Login!
{/if}
</td>
{else}
<td></td>
<td class="price_normal">
{if !$no_prices || $item_debug}
{$shopArticle->shop_price_1|number_format:"2":",":"."} &euro; / {if $shopArticle->price_je_vpe}VPE{else}St.{/if}
{if $shopArticle->sample_price && $shopArticle->sample_unit && $shopArticle->sample_price > 0 || $item_debug}
<br /><span class="normal_sample_price">Preis/{$shopArticle->sample_unit} = {$shopArticle->sample_price|number_format:"2":",":"."} &euro;</span>
{/if}
{else}
Preis nach Login!
{/if}
</td>
{/if}
<td class="price_center">
{if $shopArticle->shippable != 0 || $item_debug}
<input class="graduatedCart" rel="1" bargain_price="{$shopArticle->shop_bargain_price_1|number_format:"2":",":"."}" price="{$shopArticle->shop_price_1|number_format:"2":",":"."}" sample_price="{$shopArticle->sample_price|number_format:"2":",":"."}" type="button" value="" />
{/if}
</td>
</tr>
{foreach item=gradPrice name=price_loop key=quantity from=$shopArticle->graduated_prices}
{if $quantity > 0}
{if $smarty.foreach.price_loop.iteration == 11}
{break}
{/if}
<tr>
<td>
&nbsp;ab <strong>{$quantity}</strong>
{if $shopArticle->price_je_vpe}
VPE | {$shopArticle->vpe_amount * $quantity} {$shopArticle->vpe_unit}
{else}
St.
{/if}
</td>
{if $gradPrice.bargain > 0 || $item_debug}
<td class="bargain_price_old">
&nbsp;
{*
{if !$no_prices || $item_debug}
{$gradPrice.price|number_format:"2":",":"."} &euro; / {if $shopArticle->price_je_vpe}VPE{else}St.{/if}
{else}
Preis nach Login!
{/if}
*}
</td>
<td class="bargain_price_new">
{if !$no_prices || $item_debug}
{$gradPrice.bargain|number_format:"2":",":"."} &euro; / {if $shopArticle->price_je_vpe}VPE{else}St.{/if}
{if $shopArticle->sample_price && $shopArticle->sample_unit && $shopArticle->sample_price > 0 || $item_debug}
<br /><span class="bargain_sample_price">Preis/{$shopArticle->sample_unit} = {$gradPrice.samplePrice|number_format:"2":",":"."} &euro;</span>
{/if}
{else}
Preis nach Login!
{/if}
</td>
{else}
<td></td>
<td class="price_normal">
{if !$no_prices || $item_debug}
{$gradPrice.price|number_format:"2":",":"."} &euro; / {if $shopArticle->price_je_vpe}VPE{else}St.{/if}
{if $shopArticle->sample_price && $shopArticle->sample_unit && $shopArticle->sample_price > 0 || $item_debug}
<br /><span class="normal_sample_price">Preis/{$shopArticle->sample_unit} = {$gradPrice.samplePrice|number_format:"2":",":"."} &euro;</span>
{/if}
{else}
Preis nach Login!
{/if}
</td>
{/if}
<td class="price_center">
{if $shopArticle->shippable != 0 || $item_debug}
{*<input type="hidden" value="{$quantity}" name="amount" />*}
<input class="graduatedCart" rel="{$quantity}" bargain_price="{$gradPrice.bargain|number_format:"2":",":"."}" price="{$gradPrice.price|number_format:"2":",":"."}" sample_price="{$gradPrice.samplePrice|number_format:"2":",":"."}" type="button" value="" />
{/if}
</td>
</tr>
{*{if !$smarty.foreach.price_loop.last}
<tr>
<td class="last_price" colspan="9"></td>
</tr>
{/if}*}
{/if}
{/foreach}
</table>
</div>
</div>
{/if}
<!-- content_item/graduated_prices.tpl end -->
<div id="error_message_one">
<div class="close_message_box">x</div>
<div class="content">Mindestabnahmemenge von {$shopArticle->min_quantity} St&uuml;ck nicht erreicht!</div>
</div>
<div id="error_message_two">
<div class="close_message_box">x</div>
<div class="content">Sie haben eine ung&uuml;ltige St&uuml;ckzahl eingegeben! Die Abnahmest&uuml;ckzahl ist in {$shopArticle->buy_quantity}er Schritten gestaffelt!</div>
</div>
<div class="priceInfoBox">
{if !$no_prices && ($shopArticle->shop_price_1 > 0 || $new_price)}
{if $shopArticle->price_type == "1" && ($shopArticle->shop_price_1 > 0 || $new_price)}
{if $shopArticle->shop_bargain_price_1 > 0 || $item_debug}
<span class="old_price">
{*{$preis_praefix} {$shopArticle->shop_price_1|number_format:"2":",":"."} &euro;*}
</span>
<span class="price">{if $preis_praefix}{$preis_praefix} {$new_price|number_format:"2":",":"."} &euro;{else}{$shopArticle->shop_bargain_price_1|number_format:"2":",":"."} &euro;{/if}</span>
{else}
<span class="old_price"></span>
<span class="price">{if $preis_praefix}{$preis_praefix} {$new_price|number_format:"2":",":"."} &euro;{else}{$shopArticle->shop_price_1|number_format:"2":",":"."} &euro;{/if}</span>
{/if}
<div class="price_text">
{if $shopArticle->shipping_cost_type == 1 && $shopArticle->price_tax_text_free_shipping || $item_debug}
{$shopArticle->price_tax_text_free_shipping}<br>
{elseif $shopArticle->price_tax_text}
{$shopArticle->price_tax_text}<br>
{/if}
{if $shopArticle->price_je_vpe || $item_debug}
{if $shopArticle->shop_bargain_price_1 > 0}
{($shopArticle->shop_bargain_price_1 / $shopArticle->vpe_amount)|number_format:"2":",":"."} &euro; je St&uuml;ck<br>
{else}
{($shopArticle->shop_price_1 / $shopArticle->vpe_amount)|number_format:"2":",":"."} &euro; je St&uuml;ck<br>
{/if}
{/if}
{if $shopArticle->sample_price && $shopArticle->sample_unit && $shopArticle->sample_price > 0 || $item_debug}
Preis/{$shopArticle->sample_unit} = {$shopArticle->sample_price|number_format:"2":",":"."} &euro;<br>
{/if}
</div>
{if $shopArticle->shippable != 0 && (!$shopArticle->schema_data->selectable_attribute_1 || ($shopArticle->schema_data->selectable_attribute_1 && $shopArticle->parent_id))}
<input class="amountbox" type="text" value="{if $shopArticle->min_quantity && $shopArticle->min_quantity > 1}{$shopArticle->min_quantity}{else}1{/if}" name="amount" />
<input class="cartbutton" id="item_cart_button" type="button" value="In den Warenkorb legen" />
<input type="hidden" name="buy_quantity" id="input_buy_quantity" value="{$shopArticle->buy_quantity}" />
<input type="hidden" name="min_quantity" id="input_min_quantity" value="{$shopArticle->min_quantity}" />
{/if}
<!-- klarna installments -->
{if $klarna_installments}
<div id="klarna_installments_wrapper">
<h4>Zahlung in Raten</h4>
<img id="item_klarna_logo" src="{$THEME_DIR}/media/images/klarna_small_130px.png" alt="klarna logo" />
<p id="installment_text">Die monatliche Rate
<span id="klarna_installment_rate_target">
ab
<span id="installment_currency">&euro;</span>
{foreach $klarna_installments as $installment}
<span id="klarna_{$installment.months}_months" class="installment_value" {if !$installment@first}style="display:none;"{/if}>{$installment.monthly_costs|number_format:2:',':" "}</span>
{/foreach}
</span>
</p>
<br>
<a id="more_klarna_info" href="">Lesen Sie mehr!</a>
</div>
{/if}
{else}
<span class="price price_auf_anfrage">Preis auf Anfrage</span>
{/if}
{else}
<span class="price price_after_login">Preis nach Login</span>
{/if}
</div>
</div>
<div class="item_banner"></div>
</div>
</div>
</form>
<div class="button_box_wrapper">
<form method="post">
<input type="hidden" name="memorize" value="true" />
<input type="submit" class="remember_button" value="{$template_text.item_details.button_remember}" name="remember_button" />
</form>
<a title="Print" href="?action=print" target="_blank" class="print_button">{$template_text.item_details.button_print}</a>
</div>
</div><!-- end content 1 -->
<div id="item_content2">
{include file="item_description.tpl"}
{*{include file="{$FULL_PARENT_THEME_DIR}/templates/content_item/item_real_friends.tpl"}
<br /><br />*
{*{if $system_configuration.item_customer_opinion == 1}
{include file="{$FULL_PARENT_THEME_DIR}/templates/content_item/item_opinion.tpl"}
{/if}*}
<script type="text/javascript">
var ItemsMax = 0;
</script>
<br /><br /><br />
</div>
</div>
{*<div id="klarna_payment_info_popup" style="display: none; background-color: rgb(255, 255, 255); border: 1px solid black; width: 500px; position: absolute; top: 1px; z-index: 99999; padding: 10px;">
<iframe id="klarna_iframe" frameborder="0" style="border: 0pt none; width: 500px; height: 660px;" src="https://online.klarna.com/account_de.yaws?eid=13862"></iframe>
<a title="close" class="close" href="#" style="color: rgb(0, 0, 0);">Schliessen</a>
</div>*}
<script type="text/javascript" src="/libs/star-rating/jquery.MetaData.js"></script>
<script type="text/javascript" src="/libs/star-rating/jquery.rating.js"></script>
<script src="{$PARENT_THEME_DIR}/media/js/content_item.js?v=99455468"></script>
<script type="text/javascript">
var variants = [];
var var2 = [];
{foreach from=$shopArticle->variant_structure item=variant}
var2['{$variant.variant_key1_md5}'] = {
'id': '{$variant.id}',
'attr2': '{$variant.variant_key2_md5}'
};
variants.push({
'id': '{$variant.id}',
'attr1': '{$variant.variant_key1_md5}',
'attr2': '{$variant.variant_key2_md5}'
});
{/foreach}
$('#graduated_price_content').slideToggle(0);
</script>
<br /><br />
@@ -0,0 +1,262 @@
<!DOCTYPE html>
<html lang="de">
<head>
<link rel="icon" href="{$THEME_DIR}/media/images/main/favicon.ico" type="image/ico" />
<link rel="shortcut icon" href="{$THEME_DIR}/media/images/main/favicon.ico" type="image/ico" />
<meta charset="utf-8" />
{if $shopArticle->id && $shopArticle->structure_id != $menu_id}
<link rel="canonical" href="http://{$SERVER_NAME}/{$shopArticle->main_structure_uri_path}/{$shopArticle->short_uri}.html" />
{/if}
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE9" />
<meta name="format-detection" content="telephone=no">
{foreach item=val key=key from=$metatags}
{if $key != 'footer_text'}
{if $key != 'title'}
<meta name="{$key}" content="{$val}" />
{else}
<title>{$val}</title>
{/if}
{/if}
{/foreach}
<!-- standard parent theme css -->
<link rel="stylesheet" type="text/css" href="{$SUB_DIR}media/css/common_styles.css" />
<link rel="stylesheet" type="text/css" href="{$PARENT_THEME_DIR}/media/css/layout.css" />
<link rel="stylesheet" type="text/css" href="{$PARENT_THEME_DIR}/media/css/widgets.css" />
<link rel="stylesheet" type="text/css" href="{$PARENT_THEME_DIR}/media/css/items.css?version=1" />
<link rel="stylesheet" type="text/css" href="{$PARENT_THEME_DIR}/media/css/contents.css?version=1" />
<link rel="stylesheet" type="text/css" href="{$PARENT_THEME_DIR}/media/css/content_shoppingcart.css?version=1" />
<link rel="stylesheet" type="text/css" href="{$PARENT_THEME_DIR}/media/css/content_login.css?version=1" />
<link rel="stylesheet" type="text/css" href="{$PARENT_THEME_DIR}/media/css/content_cash_desk.css?version=1" />
<link rel="stylesheet" type="text/css" href="{$PARENT_THEME_DIR}/media/css/content_customer_center.css?version=1" />
<link rel="stylesheet" type="text/css" href="{$PARENT_THEME_DIR}/media/css/forms.css?version=1" />
<link rel="stylesheet" type="text/css" href="{$PARENT_THEME_DIR}/media/css/ui-lightness/jquery-ui-1.10.3.custom.min.css" />
<link rel="stylesheet" type="text/css" href="{$SUB_DIR}libs/slimbox-2.02/css/slimbox2.css" media="screen,print" />
<!-- customized theme css -->
<link rel="stylesheet" type="text/css" href="{$THEME_DIR}/media/css/customized_theme.css" />
<!--[if IE 7]>
<link rel="stylesheet" href="{$THEME_DIR}/media/css/ie7.css" />
<![endif]-->
{if isset($theme_data->css) && $theme_data->css}
<style type="text/css">
{$theme_data->css}
</style>
{/if}
<!-- standard parent theme javascript -->
<script type="text/javascript" src="{$PARENT_THEME_DIR}/media/js/jquery-1.6.4.min.js"></script>
<script type="text/javascript" src="{$PARENT_THEME_DIR}/media/js/jquery.color.js"></script>
<script type="text/javascript" src="{$PARENT_THEME_DIR}/media/js/jquery.hoverIntent.minified.js"></script>
<script type="text/javascript" src="{$PARENT_THEME_DIR}/media/js/script.js"></script>
<script type="text/javascript" src="{$PARENT_THEME_DIR}/media/js/widget.js"></script>
<script type="text/javascript" src="{$PARENT_THEME_DIR}/media/js/recommendation_form.js"></script>
<script type="text/javascript" src="{$PARENT_THEME_DIR}/media/js/jquery.cycle.all.js"></script>
<script type="text/javascript" src="{$PARENT_THEME_DIR}/media/js/jquery-ui-1.10.3.custom.min.js"></script>
<script type="text/javascript" src="{$SUB_DIR}libs/jquery-barcode-2.0.2.min.js"></script>
<script type="text/javascript" src="{$SUB_DIR}libs/slimbox-2.02/src/slimbox2.js"></script>
<script type="text/javascript" src="{$SUB_DIR}libs/jquery.qrcode.min.js"></script>
<script>
var shop_dir = '{$SHOP_DIR}';
var theme_dir = '{$THEME_DIR}';
var sub_dir = '{$SUB_DIR}';
</script>
{if $domain_config->google_analytics_code}
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', '{$domain_config->google_analytics_code}']);
_gaq.push(['_gat._anonymizeIp']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script');
ga.type = 'text/javascript';
ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(ga, s);
})();
</script>
{/if}
</head>
<body>
<div id="header_trans_bg">
<div class="centralizer">
<a href="/" title="Intelectra"></a>
<span>Ersatzteile und Zubeh&ouml;r f&uuml;r Elektro Hausger&auml;te | Versandgro&szlig;handel | Einzelhandel</span>
<strong>Telefonische&nbsp;Beratung:&nbsp;+49&nbsp;(0)&nbsp;9421&nbsp;/&nbsp;6&nbsp;20&nbsp;15</strong>
</div>
</div>
<div id="header_sticky" class="sticky">
<div id="header_trans">
<div class="centralizer">
<div>
{if $top_widgets}
{foreach from=$top_widgets item=widget}
{$widget}
{/foreach}
{/if}
</div>
</div>
</div>
<div id="header_trans_sub">
<div class="centralizer">
{if $header_widgets}
{foreach from=$header_widgets item=widget}
{$widget}
{/foreach}
{/if}
</div>
</div>
</div>
<div id="header_logorodeo">
{if $subheader_widgets}
{foreach from=$subheader_widgets item=widget}
{$widget}
{/foreach}
{/if}
</div>
<div id="wrapper">
{*<div id="header_wrapper" {if $theme_data->header_image}style="background:transparent url({$SHOP_DIR}images/header/{$theme_data->header_image}) no-repeat;"{/if}></div>*}
<div id="breadcrumb">
{if $structureData->id != 6}
<div itemscope itemtype="http://data-vocabulary.org/Breadcrumb">
<a href="/Home/" class="first_child" itemprop="url" title="Home">
<span itemprop="title">{$template_text.default.breadcrumb_home}</span>
</a>
</div>
{/if}
{foreach from=$breadcrumb item=breadcrumb_item}
{if $structureData->id == 6}
{$breadcrumb_item.name=$template_text.default.breadcrumb_home}
{/if}
<div itemscope itemtype="http://data-vocabulary.org/Breadcrumb">
{if !$user_lang || $user_lang == $system_configuration.default_system_language || !$breadcrumb_item.object->name_en}
<a href="/{$breadcrumb_item.short_uri}/" class="arrow" itemprop="url" title="{$breadcrumb_item.name}">
<span itemprop="title">{$breadcrumb_item.name}</span>
</a>
{else}
<a href="/{$breadcrumb_item.short_uri}/" class="arrow" itemprop="url" title="{$breadcrumb_item.name}">
<span itemprop="title">{$breadcrumb_item.object->name_en}</span>
</a>
{/if}
</div>
{/foreach}
</div>
<div id="main_wrapper" class="clearfix">
{if !isset($site_type) || $site_type != 'full_width'}
<!-- Navi -->
<div id="navi_wrapper">
{if $left_widgets}
{foreach from=$left_widgets item=widget}
{$widget}
{/foreach}
{/if}
</div>
<!-- Content wrapper -->
<div id="content_wrapper">
<!-- Content -->
<div id="maincontent_wrapper">
{$maincontent}
</div>
</div>
{else}
<!-- Content wrapper -->
<div id="content_wrapper2">
<!-- Content -->
<div id="maincontent_wrapper2">
{$maincontent}
</div>
</div>
{/if}
</div>
</div>
<div id="footer_wrapper">
<div id="footer">
<div id="tool_recommendation">
<div style="position:relative;left:60px;top:30px;">
<span id="recommendation_message_error"></span>
<span id="recommendation_message_ok"></span>
&nbsp;
<form id="form_recommendation" action="/recommendation/">
<div style="float:left;width:170px;">
Name des Empf&auml;ngers<br />
<input name="recommendation[r_name]" value="" style="width:120px;" />
</div>
<div style="float:left;">
E-Mail des Empf&auml;ngers<br />
<input name="recommendation[r_mail]" value="" style="width:120px;" />
</div>
<div style="clear:both;"></div>
<br />
<div>
Ihre Nachricht an den Emfp&auml;nger (noch <span id="recommendation_msg_count">100</span> Zeichen &uuml;brig)<br />
<textarea id="recommendation_message" name="recommendation[message]" cols="0" rows="0" style="width:290px;height:40px;"></textarea>
</div>
<div>
<br />
Spam-Schutz: Bitte &uuml;bertragen Sie das Wort<br />
<img src="/libs/captcha/new_captcha/capimg.php?slave=recommendation" alt="Captcha" style="position:relative;margin-top:5px;" />
<input name="recommendation[captcha]" style="position:relative;top:-4px;width:100px;" />
</div>
<div id="hide_recommendation"></div>
<input type="button" id="send_recommendation" value="" />
</form>
</div>
</div>
<!-- end tool_recommendation -->
{foreach from=$footer_widgets item=widget}
{$widget}
{/foreach}
{*<div id="fb_box">
<div id="fb-root"></div>
<script>
(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id))
return;
js = d.createElement(s);
js.id = id;
js.src = "//connect.facebook.net/de_DE/all.js#xfbml=1";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
</script>
<div class="fb-like" data-send="true" data-layout="button_count" data-width="225" data-show-faces="true"></div>
</div>*}
<div id="recommendation_toggler">Seite weiterempfehlen</div>
<div id="copyright">{$system_configuration.footer_copyright_text}</div>
{if $serverProtocol == 'http'}
<div id="footer_ta_wrapper">
<a id="footer_easyway" href="{$serverProtocol}://www.ta-edv.de/Easyway-Online-Shop/" target="_blank" title="Easyway-Shopsystem">Easyway-Shopsystem</a>
&nbsp;by&nbsp;
<a id="footer_taedv" href="{$serverProtocol}://www.ta-edv.de/" target="_blank" title="TA-EDV">TA-EDV</a>
</div>
{/if}
</div>
</div>
<div id="layout_modal" style="width:100%;height:0px;background-color:#000000;opacity:0.5;z-index:3500;position:absolute;top:0px;left:0px;display:none;">&nbsp;</div>
<script type="text/javascript" src="{$THEME_DIR}/media/js/theme.js"></script>
<script type="text/javascript" src="{$THEME_DIR}/media/js/widget.js"></script>
</body>
</html>
@@ -0,0 +1,51 @@
<!-- content_customer_center/order_data.tpl -->
<div class="full_box">
<div class="title_wrapper">
<div class="title"><h2>Ihre Bestellungen</h2></div>
</div>
<div class="box_content">
<div class="box_padder">
<table id="content_customer_center_order_table" cellspacing="0" cellpadding="5">
<thead>
<tr>
<th class="left">Bestell-Nr.</th>
<th class="right">Summe</th>
<th class="right">Bestell-Datum</th>
<th class="center">Details</th>
<th class="center">Rechnung</th>
</tr>
<tr>
<td colspan="6"><hr /></td>
</tr>
</thead>
<tbody>
{foreach from=$orders item=order}
{if $order->order_status != 10}
<tr class="{if $order@iteration is even by 1}odd{else}even{/if}">
<td class="left">{$order->order_number}</td>
<td class="right">{$order->order_total|number_format:2:",":"."} EUR</td>
{* <td class="right">{$order->order_date|date_format:"%A, %d. %B %Y"}</td>*}
<td class="right">{$order->order_date|date_format:"%d.%m.%Y"}</td>
<td class="center">
{*
{if $order->billing_date}
<a class="getOrderDetailsTrigger" href="/index.php?website_modul=website_order_editor&order_id={$order->id}">bearbeiten</a>
{/if}
*}
<a class="getOrderDetailsTrigger" rel="{$order->id}" href="/index.php?website_modul=website_order_editor&order_id={$order->id}">Details</a>
</td>
<td class="center">
{if $order->invoice_number}
<a href="/Kundencenter/?action=get_invoice_pdf&order_id={$order->id}">{$order->invoice_number}</a>
{/if}
</td>
</tr>
{/if}
{/foreach}
</tbody>
</table>
</div>
</div>
</div>
@@ -0,0 +1,481 @@
<!-- indi:content_item -->
{assign var=item_debug value=false}
{assign var=item_has_variants value=false}
{assign var=preis_praefix value=""}
{assign var=new_price value=""}
{if $shopArticle->schema_data->selectable_attribute_1 || $shopArticle->schema_data->selectable_attribute_2}
{assign var=preis_praefix value="ab"}
{foreach from=$shopArticle->schema_data_attributes item=attribute}
{if $shopArticle->schema_data->selectable_attribute_1 == $attribute.number}
{assign var=att_name_1 value="`$attribute.name`"}
{assign var=att_unit_1 value="`$attribute.unit`"}
{/if}
{/foreach}
{foreach from=$shopArticle->schema_data_attributes item=attribute}
{if $shopArticle->schema_data->selectable_attribute_2 == $attribute.number}
{assign var=att_name_2 value="`$attribute.name`"}
{assign var=att_unit_2 value="`$attribute.unit`"}
{/if}
{/foreach}
{/if}
<div class="content_item {if $shopArticle->files|@count < 2}one_image{/if}">
<div id="item_content1">
<div id="back_button">{$template_text.item_details.button_back}</div>
<div class="title_wrapper">
<div class="item_title">
<h1>
{if !$user_lang || $user_lang == $system_configuration.default_system_language || !$shopArticle->name}
{$shopArticle->name}
{else}
{$shopArticle->name_en}
{/if}
{if $shopArticle->manufacturer_data->name}
| <span class="manufacturer_name">
von {$shopArticle->manufacturer_data->name}
</span>
{/if}
</h1>
</div>
{if $shopArticle->number}
<span class="item_number">
{$template_text.item_details.item_number}
{if $shopArticle->attribute_7 && $shopArticle->number != $shopArticle->attribute_7}
<span class="item_number_number">{$shopArticle->attribute_7}
&nbsp;&nbsp;&nbsp;<span style="font-weight:normal;">({$template_text.item_details.old_item_number_title} {$shopArticle->number})</span>
{else}
<span class="item_number_number">{$shopArticle->number}
{/if}
</span>
</span>
{/if}
</div>
<div class="image_wrapper">
{if isset($shopArticle->files[0]) && $shopArticle->files[0]->file_name}
<div id="image_detailed_container_outer">
<div id="image_detailed_container_middle">
<div id="image_detailed_container_inner">
{foreach item=file from=$shopArticle->files}
<a title="{$file->alt}" class="detailImage" href="{$SHOP_DIR}images/article/{$file->file_name}" rel="lightbox-big" title="{$shopArticle->name}" style="background-image: url({$SHOP_DIR}images/article/details_{$file->file_name})"></a>
{/foreach}
</div>
</div>
<a href="#zurueck" id="image_detailed_backward" title="Zurück"></a>
<a href="#vor" id="image_detailed_forward" title="Vor"></a>
</div>
{/if}
{if $shopArticle->files|@count > 1}
<div id="item_thumb_slider_wrapper">
<div id="item_thumbs_title">Weitere Artikelbilder</div>
<div id="thumbContainer">
<div id="thumbScrollContainer" style="width:{if $shopArticle->files|@count > 3}{$shopArticle->files|@count|ceil*141}{else}423{/if}px;">
{foreach item=file name=loop_thumbs from=$shopArticle->files}
<a class="thumbimage" href="{$SHOP_DIR}images/article/{$file->file_name}" rel="lightbox-small" title="{$file->alt}" style="background-image: url({$SHOP_DIR}images/article/thumb_{$file->file_name});"></a>
{if !$smarty.foreach.loop_thumbs.last}<div class="last_thumb_image"></div>{/if}
{/foreach}
<br class="clear_left" />
</div>
</div>
{if $shopArticle->files|@count > 3}
<input id="thumbSlideLeft" class="thumbSlider" type="button" value="" />
<input id="thumbSlideRight" class="thumbSlider" type="button" value="" />
{/if}
</div>
{/if}
</div>
<form method="post" id="item_buy_form">
<div class="item_box_right_wrapper">
{if $shopArticle->schema_data->selectable_attribute_1 || $shopArticle->schema_data->selectable_attribute_2 || $item_debug}
{assign var=item_has_variants value=true}
<div id="manufacturer_wrapper">
<div class="title_manufacturer">Auswahl der Artikelvariante</div>
<!-- Variant selection -->
<div class="variants_box">
{assign var=new_price value=""}
{if $shopArticle->schema_data->selectable_attribute_1 || $shopArticle->schema_data->selectable_attribute_2}
<div class="item_variant_box">
<div class="box_title">
<span class="button_name">Bitte w&auml;hlen Sie eine passende Variante</span>
</div>
<div class="widget_menu_arrow"></div>
</div>
<div class="variant_selection_box">
{foreach item=item name=cartLoop from=$shopArticle->variant_structure}
{if $item->id != $shopArticle->id}
{if !$new_price || $new_price > $item.shop_price_1}
{assign var=new_price value=$item.shop_price_1}
{/if}
{if $shopArticle->id == $item.id}
{assign var=preis_praefix value=""}
{/if}
{if $item.short_uri}
{assign var=useUri value="`$item.short_uri`.html"}
{else}
{assign var=useUri value="/index.php?item_id=`$item.id`"}
{/if}
<a href="{$useUri}" title="{$item.name}">
<div class="variant_item">
<span class="item_name">{$item.name}</span>
<span class="item_number">{$item.number}</span>
<span class="item_vdata">
{if $shopArticle->schema_data->selectable_attribute_1}
{$att_name_1}: {$item.data->attribute_1} {$att_unit_1}<br>
{/if}
{if $shopArticle->schema_data->selectable_attribute_2}
{$att_name_2}: {$item.data->attribute_2} {$att_unit_2}<br>
{/if}
</span>
<div class="variant_item_image" style="background:#ffffff url({$SHOP_DIR}/images/article/thumb_{if $item.default_image_file_name}{$item.default_image_file_name}{else}default_image.png{/if}) center center no-repeat;"></div>
<span class="item_price">
{if $item.price_type != 0}
{if $item.sample_price}
{$item.sample_price|number_format:"2":",":"."} &euro; / {$shopArticle->sample_unit}
{else}
{$item.shop_price_1|number_format:"2":",":"."} &euro;
{/if}
{/if}
</span>
</div>
</a>
{/if}
{/foreach}
</div>
{/if}
</div>
</div>
{/if}
{if $shopArticle->shop_bargain_price_1 > 0 || $item_debug}
<div id="spezial_price_icon"></div>
{/if}
{if ($shopArticle->graduated_prices|is_array && $shopArticle->graduated_prices || $item_debug)}
{assign var=itemHasGraduatedPrices value=true}
{else}
{assign var=itemHasGraduatedPrices value=false}
{/if}
<div id="price_box_wrapper" class="price_box_wrapper {if $item_has_variants}price_box_wrapper_with_variants{/if} {if $itemHasGraduatedPrices}price_box_wrapper_with_graduated_prices{/if}">
<div class="title_price">{$template_text.default.price}</div>
<div class="register_buy">
<div class="shippable_wrapper">
<div>
<span class="shippable_state">
{if $shopArticle->inventory > 0}
{if $shopArticle->shippable_inventory == 0}
<span class="notAvailable">&bull; Artikel nicht lieferbar</span>
{elseif $shopArticle->shippable_inventory == 1}
&bull; {*Artikel lieferbar*}{if $shopArticle->attribute_14 == ''}{$template_text.item_details.item_state_available}{else}{$shopArticle->attribute_14}{/if}
{elseif $shopArticle->shippable_inventory == 3}
&bull; Artikel Lieferzeit unbekannt
{elseif $shopArticle->shippable_inventory == 4}
&bull; Bestellartikel (Lieferzeit 2-3 Tage)
{elseif $shopArticle->shippable_inventory == 5}
&bull; Bestellartikel (Lieferzeit 14 Tage)
{/if}
{else}
{if $shopArticle->shippable == 0}
<span class="notAvailable">&bull; Artikel nicht lieferbar</span>
{elseif $shopArticle->shippable == 1}
&bull; {*Artikel lieferbar*}{if $shopArticle->attribute_14 == ''}{$template_text.item_details.item_state_available}{else}{$shopArticle->attribute_14}{/if}
{elseif $shopArticle->shippable == 2 && $shopArticle->available_from && $shopArticle->available_till != '0000-00-00'}
<span class="availableInRange">&bull; Artikel lieferbar vom {$shopArticle->available_from|date_format:"%d.%m.%Y"} bis {$shopArticle->available_till|date_format:"%d.%m.%Y"}</span>
{elseif $shopArticle->shippable == 2 && $shopArticle->available_from}
<span class="availableInRange">&bull; Artikel lieferbar ab {$shopArticle->available_from|date_format:"%d.%m.%Y"}</span>
{elseif $shopArticle->shippable == 3}
<span class="availableInRange">&bull; Lieferzeit unbekannt</span>
{elseif $shopArticle->shippable == 4}
&bull; Bestellartikel (Lieferzeit 2-3 Tage)
{elseif $shopArticle->shippable == 5}
&bull; Bestellartikel (Lieferzeit 14 Tage)
{/if}
{/if}
</span>
<br>
{if $shopArticle->inventory > 0 || $item_debug}
<span class="shippable_text">
Auf Lager
</span>
<br>
{/if}
{if $shopArticle->min_quantity && $shopArticle->min_quantity > 1 || $item_debug}
<span class="min_quantity">
Mindestabnahmemenge: {$shopArticle->min_quantity}
Einheit{if $shopArticle->min_quantity != 1}en{/if}
</span>
{/if}
</div>
</div>
<!-- content_item/graduated_prices.tpl begin -->
{if $itemHasGraduatedPrices && $shopArticle->price_type == "1"}
<div id="graduated_price_wrapper">
<div class="graduated_price_title_wrapper">
<div id="graduated_price_title">Staffelpreise</div>
<div class="graduated_price_title_arrow"></div>
</div>
<div id="graduated_price_content">
<table class="graduatedPrices" border="0" cellpadding="0" cellspacing="0">
<tr>
<td>
&nbsp;ab <strong>1</strong>
{if $shopArticle->price_je_vpe}
VPE | {$shopArticle->vpe_amount} {$shopArticle->vpe_unit}
{else}
{*St.*}{$shopArticle->attribute_10}&nbsp;
{/if}
</td>
{if $shopArticle->shop_bargain_price_1 > 0 || $item_debug}
<td class="bargain_price_old">
&nbsp;
</td>
<td class="bargain_price_new">
{if !$no_prices || $item_debug}
{$shopArticle->shop_bargain_price_1|number_format:"2":",":"."} &euro; / {if $shopArticle->price_je_vpe}VPE{else}{*St.*}{$shopArticle->attribute_10}&nbsp;{/if}
{if $shopArticle->sample_price && $shopArticle->sample_unit && $shopArticle->sample_price > 0 || $item_debug}
<br /><span class="bargain_sample_price">Preis/{$shopArticle->sample_unit} = {$shopArticle->sample_price|number_format:"2":",":"."} &euro;</span>
{/if}
{else}
{*Preis nach Login!*}
{/if}
</td>
{else}
<td></td>
<td class="price_normal">
{if !$no_prices || $item_debug}
{$shopArticle->shop_price_1|number_format:"2":",":"."} &euro; / {if $shopArticle->price_je_vpe}VPE{else}{*St.*}{$shopArticle->attribute_10}&nbsp;{/if}
{if $shopArticle->sample_price && $shopArticle->sample_unit && $shopArticle->sample_price > 0 || $item_debug}
<br /><span class="normal_sample_price">Preis/{$shopArticle->sample_unit} = {$shopArticle->sample_price|number_format:"2":",":"."} &euro;</span>
{/if}
{else}
{*Preis nach Login!*}
{/if}
</td>
{/if}
<td class="price_center">
{if $shopArticle->shippable != 0 || $item_debug}
<input class="graduatedCart" rel="1" bargain_price="{$shopArticle->shop_bargain_price_1|number_format:"2":",":"."}" price="{$shopArticle->shop_price_1|number_format:"2":",":"."}" sample_price="{$shopArticle->sample_price|number_format:"2":",":"."}" type="button" value="" />
{/if}
</td>
</tr>
{foreach item=gradPrice name=price_loop key=quantity from=$shopArticle->graduated_prices}
{if $quantity > 0}
{if $smarty.foreach.price_loop.iteration == 11}
{break}
{/if}
<tr>
<td>
&nbsp;ab <strong>{$quantity}</strong>
{if $shopArticle->price_je_vpe}
VPE | {$shopArticle->vpe_amount * $quantity} {$shopArticle->vpe_unit}
{else}
{*St.*}{$shopArticle->attribute_10}&nbsp;
{/if}
</td>
{if $gradPrice.bargain > 0 || $item_debug}
<td class="bargain_price_old">
&nbsp;
{*{if !$no_prices || $item_debug}
{$gradPrice.price|number_format:"2":",":"."} &euro; / {if $shopArticle->price_je_vpe}VPE{else}St.{/if}
{else}
Preis nach Login!
{/if}*}
</td>
<td class="bargain_price_new">
{if !$no_prices || $item_debug}
{$gradPrice.bargain|number_format:"2":",":"."} &euro; / {if $shopArticle->price_je_vpe}VPE{else}{*St.*}{$shopArticle->attribute_10}&nbsp;{/if}
{if $shopArticle->sample_price && $shopArticle->sample_unit && $shopArticle->sample_price > 0 || $item_debug}
<br /><span class="bargain_sample_price">Preis/{$shopArticle->sample_unit} = {$gradPrice.samplePrice|number_format:"2":",":"."} &euro;</span>
{/if}
{else}
{*Preis nach Login!*}
{/if}
</td>
{else}
<td></td>
<td class="price_normal">
{if !$no_prices || $item_debug}
{$gradPrice.price|number_format:"2":",":"."} &euro; / {if $shopArticle->price_je_vpe}VPE{else}{*St.*}{$shopArticle->attribute_10}&nbsp;{/if}
{if $shopArticle->sample_price && $shopArticle->sample_unit && $shopArticle->sample_price > 0 || $item_debug}
<br /><span class="normal_sample_price">Preis/{$shopArticle->sample_unit} = {$gradPrice.samplePrice|number_format:"2":",":"."} &euro;</span>
{/if}
{else}
{*Preis nach Login!*}
{/if}
</td>
{/if}
<td class="price_center">
{if $shopArticle->shippable != 0 || $item_debug}
{*<input type="hidden" value="{$quantity}" name="amount" />*}
<input class="graduatedCart" rel="{$quantity}" bargain_price="{$gradPrice.bargain|number_format:"2":",":"."}" price="{$gradPrice.price|number_format:"2":",":"."}" sample_price="{$gradPrice.samplePrice|number_format:"2":",":"."}" type="button" value="" />
{/if}
</td>
</tr>
{*{if !$smarty.foreach.price_loop.last}
<tr>
<td class="last_price" colspan="9"></td>
</tr>
{/if}*}
{/if}
{/foreach}
</table>
<div class="price_infotext">
{include 'content_item/item_pricetext.tpl'}
</div>
</div>
</div>
{/if}
<!-- content_item/graduated_prices.tpl end -->
<div id="error_message_one">
<div class="close_message_box">x</div>
<div class="content">Mindestabnahmemenge von {$shopArticle->min_quantity} St&uuml;ck nicht erreicht!</div>
</div>
<div id="error_message_two">
<div class="close_message_box">x</div>
<div class="content">Sie haben eine ung&uuml;ltige St&uuml;ckzahl eingegeben! Die Abnahmest&uuml;ckzahl ist in {$shopArticle->buy_quantity}er Schritten gestaffelt!</div>
</div>
<div class="priceInfoBox">
{if !$no_prices}
{if $shopArticle->price_type == "1"}
{if $shopArticle->shop_bargain_price_1 > 0 || $item_debug}
<span class="old_price">
{*{$preis_praefix} {$shopArticle->shop_price_1|number_format:"2":",":"."} &euro;*}
</span>
<span class="price">{if $preis_praefix}<span class="item_vpe">{$shopArticle->attribute_10}&nbsp;</span>{$preis_praefix} {$new_price|number_format:"2":",":"."} &euro;{else}<span class="item_vpe">{$shopArticle->attribute_10}&nbsp;</span>{$shopArticle->shop_bargain_price_1|number_format:"2":",":"."} &euro;{/if}</span>
{else}
<span class="old_price"></span>
<span class="price">{if $preis_praefix}{$preis_praefix} {$new_price|number_format:"2":",":"."} &euro;{else}<span class="item_vpe">{$shopArticle->attribute_10}&nbsp;</span> {$shopArticle->shop_price_1|number_format:"2":",":"."} &euro;{/if}</span>
{/if}
<div class="price_text">
{include 'content_item/item_pricetext.tpl'}
</div>
{if $shopArticle->shippable != 0 && (!$shopArticle->schema_data->selectable_attribute_1 || ($shopArticle->schema_data->selectable_attribute_1 && $shopArticle->parent_id))}
<input class="amountbox" type="text" value="{if $shopArticle->min_quantity && $shopArticle->min_quantity > 1}{$shopArticle->min_quantity}{else}1{/if}" name="amount" />
<div class="item_factor">Anzahl - {$shopArticle->attribute_10}&nbsp;</div>
<input class="cartbutton" id="item_cart_button" type="button" value="In den Warenkorb legen" />
<input type="hidden" name="buy_quantity" id="input_buy_quantity" value="{$shopArticle->buy_quantity}" />
<input type="hidden" name="min_quantity" id="input_min_quantity" value="{$shopArticle->min_quantity}" />
{/if}
<!-- klarna installments -->
{if $klarna_installments}
<div id="klarna_installments_wrapper">
<h4>Zahlung in Raten</h4>
<img id="item_klarna_logo" src="{$THEME_DIR}/media/images/klarna_small_130px.png" alt="klarna logo" />
<p id="installment_text">Die monatliche Rate
<span id="klarna_installment_rate_target">
ab
<span id="installment_currency">&euro;</span>
{foreach $klarna_installments as $installment}
<span id="klarna_{$installment.months}_months" class="installment_value" {if !$installment@first}style="display:none;"{/if}>{$installment.monthly_costs|number_format:2:',':" "}</span>
{/foreach}
</span>
</p>
<br>
<a id="more_klarna_info" href="">Lesen Sie mehr!</a>
</div>
{/if}
{else if $shopArticle->price_type == "0"}
<span class="price"><span class="price_auf_anfrage">Preis auf Anfrage</span></span>
{/if}
{else}
{*<span class="price price_after_login">Preis nach Login</span>*}
{/if}
</div>
</div>
<div class="item_banner"></div>
</div>
</div>
</form>
<div class="button_box_wrapper">
<form method="post">
<input type="hidden" name="memorize" value="true" />
<input type="submit" class="remember_button" value="{$template_text.item_details.button_remember}" name="remember_button" />
</form>
<div title="Print" class="print_button">{$template_text.item_details.button_print}</div>
</div>
</div><!-- end content 1 -->
<div id="item_content2">
{include file="item_description.tpl"}
{*{include file="{$FULL_PARENT_THEME_DIR}/templates/content_item/item_real_friends.tpl"}
<br /><br />*
{if $system_configuration.item_customer_opinion == 1}
{include file="{$FULL_PARENT_THEME_DIR}/templates/content_item/item_opinion.tpl"}
{/if}*}
<script type="text/javascript">
var ItemsMax = 0;
</script>
<br /><br /><br />
</div>
</div>
{*<div id="klarna_payment_info_popup" style="display: none; background-color: rgb(255, 255, 255); border: 1px solid black; width: 500px; position: absolute; top: 1px; z-index: 99999; padding: 10px;">
<iframe id="klarna_iframe" frameborder="0" style="border: 0pt none; width: 500px; height: 660px;" src="https://online.klarna.com/account_de.yaws?eid=13862"></iframe>
<a title="close" class="close" href="#" style="color: rgb(0, 0, 0);">Schliessen</a>
</div>*}
<script type="text/javascript" src="/libs/star-rating/jquery.MetaData.js"></script>
<script type="text/javascript" src="/libs/star-rating/jquery.rating.js"></script>
<script src="{$PARENT_THEME_DIR}/media/js/content_item.js?v=99455468"></script>
<script type="text/javascript">
var variants = [];
var var2 = [];
{foreach from=$shopArticle->variant_structure item=variant}
var2['{$variant.variant_key1_md5}'] = {
'id': '{$variant.id}',
'attr2': '{$variant.variant_key2_md5}'
};
variants.push({
'id': '{$variant.id}',
'attr1': '{$variant.variant_key1_md5}',
'attr2': '{$variant.variant_key2_md5}'
});
{/foreach}
$('#graduated_price_content').slideToggle(0);
</script>
<br /><br />
@@ -0,0 +1,6 @@
<!-- template content_order_editor.tpl -->
<tr class="orderDetails">
<td colspan="6">
{include file='content_order_editor/edit_items.tpl'}
</td>
</tr>
@@ -0,0 +1,122 @@
<!-- template content_order_editor/items.tpl -->
{if $orderitems}
<table class="content_item_view">
<thead>
<tr>
<th style="text-align:center;">Pos.</th>
<th style="text-align:left;">Art-Nr./Beschreibung</th>
<th style="text-align:right;">St&uuml;ckpreis</th>
<th style="text-align:center;">St.</th>
<th style="text-align:right;">Gesamtpreis</th>
</tr>
<tr>
<th colspan="5">
<hr />
</th>
</tr>
</thead>
<tbody>
{foreach from=$orderitems item=item}
<tr {if $item@last}class="last"{/if}>
<td style="text-align:center;">
{$item@index + 1}
</td>
<td style="text-align:left;">
{$item->item_name}
<div>Art-Nr.: {$item->item_number}</div>
</td>
<td style="text-align:right;">
<span>
{if $customer->show_tax}
{$item->price_with_tax|number_format:2:",":"."} &euro;
<div>inkl. {$item->tax_rate|number_format:2:",":"."}% MwSt.</div>
{else}
{$item->price|number_format:2:",":"."} &euro;
{/if}
</span>
</td>
<td style="text-align:center;">
{$item->amount|number_format:2:",":"."}
</td>
<td style="text-align:right;">
{$item->shown_total|number_format:2:",":"."} &euro;
</td>
</tr>
{/foreach}
</tbody>
<tfoot>
<tr>
<td colspan="5">
<hr />
</td>
</tr>
<tr class="item_total">
<td colspan="2"></td>
<td colspan="2" style="font-weight:bold;"><span style="padding-left:20px;">Summe aller Artikel</span></td>
<td class="total" style="text-align:right;">
{if $customer->show_tax}
{$footer->item_total_with_tax|number_format:2:",":"."}
{else}
{$footer->item_total|number_format:2:",":"."}
{/if}
&euro;
</td>
</tr>
{if $footer->taxes|is_array}
{foreach $footer->taxes as $rate => $tax}
<tr class="tax">
<td colspan="2"></td>
<td colspan="2" class="greyed">
<span style="padding-left:20px;">
{if $customer->show_tax}inkl.{else}zzgl.{/if}
{$rate|number_format:2:",":"."} MwSt.
</span>
</td>
<td class="total" style="text-align:right;">{$tax|number_format:2:",":"."} &euro;</td>
</tr>
{/foreach}
{/if}
{if $footer->shipping > 0}
<tr class="shipping">
<td colspan="2"></td>
<td colspan="2"><span style="padding-left:20px;">Versandkosten</span></td>
<td class="total" style="font-weight:normal;text-align:right;">{$footer->shipping|number_format:2:",":"."} &euro;</td>
</tr>
{/if}
{if $footer->payment_method > 0}
<tr class="payment_method">
<td colspan="2"></td>
<td colspan="2"><span style="padding-left:20px;">Zahlungsgeb&uuml;hren</span></td>
<td class="total" style="font-weight:normal;text-align:right;"">{$footer->payment_method|number_format:2:",":"."} &euro;</td>
</tr>
{/if}
<tr class="order_total">
<td colspan="2"></td>
<td colspan="2" style="font-weight:bold;"><span style="padding-left:20px;">F&auml;lliger Betrag</span></td>
<td class="total" style="text-align:right;">{$footer->order_total_with_tax|number_format:2:",":"."} &euro;</td>
</tr>
</tfoot>
</table>
{/if}
@@ -0,0 +1,240 @@
{if $system_configuration.shoppingcart_quickbuy == 1}
<div class="full_box">
<div class="title_wrapper">
<div class="title">
<h2>Schnelleinkauf</h2>
</div>
</div>
<div class="box_content">
<div class="box_padder">
Suche Sie hier nach Artikel und legen diese direkt in den Warenkorb.<br />
<input type="text" id="shoppingcart_search_item" name="search_item" autocomplete="off" value="Suchartikel hier eingeben" style="border:1px solid #555555;width:680px;" />
<div id="shoppingcart_search_result" style="position:relative;z-index:999999;"></div>
</div>
</div>
</div>
{/if}
<div class="full_box">
<div class="title_wrapper">
<div class="title">
<h2>Warenkorb</h2>
</div>
</div>
<div class="box_content">
<div class="box_padder">
{if $shoppingcart.items}
<form method="post" action="" id="cart_form">
<table class="cart_table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr class="cart_head">
<td class="alcenter">Pos.</td>
<td class="alcenter">Bild</td>
<td>Beschreibung</td>
<td class="alright">St&uuml;ckpreis</td>
<td class="alcenter">Anzahl*</td>
<td class="alcenter">l&ouml;schen</td>
<td class="alright">Gesamtpreis</td>
</tr>
{foreach from=$shoppingcart.items item=item name=items_loop}
{if $item->short_uri}
{assign var=itemSuri value="/`$item->short_uri`.html"}
{else}
{assign var=itemSuri value="/index.php?item_id=`$item->id`"}
{/if}
<tr class="cart_row">
<td class="alcenter">{$smarty.foreach.items_loop.iteration}</td>
<td class="alcenter"><img src="{$SHOP_DIR}images/article/thumb_{if $item->default_image_file_name}{$item->default_image_file_name}{else}default_image.png{/if}" /></td>
<td>
<a href="{$serverProtocol}://{$servername}{$itemSuri}"><strong>{$item->name}</strong></a><br />
{if $item->variant_1 || $item->variant_2}
{$item->variant_1} {$item->variant_2}<br />
{/if}
{if ($item->variant_1 || $item->variant_2) && $item->item_number}
<span>Art.-Nr. {$item->item_number}</span>
{else}
{if $item->attribute_7 && $item->number != $item->attribute_7}
<span>Art.-Nr. {$item->attribute_7}&nbsp;&nbsp;&nbsp;({$template_text.item_details.old_item_number_title} {$item->number})</span>
{else}
<span>Art.-Nr. {$item->number}</span>
{/if}
{/if}
</td>
<td class="alright">{$item->calculatedPrices.shownPrice|number_format:"2":",":"."} &euro;</td>
<td class="alcenter item_container" buy_quantity="{$item->buy_quantity}" min_quantity="{$item->min_quantity}">
<div style="position:relative;">
<div id="scart_error_message_one" class="message_min_quantity">
<div class="close_message_box">x</div>
<div class="content">Mindestabnahmemenge von {$item->min_quantity} St&uuml;ck nicht erreicht!</div>
</div>
<div id="scart_error_message_two" class="message_wrong_quantity">
<div class="close_message_box">x</div>
<div class="content">Sie haben eine ung&uuml;ltige St&uuml;ckzahl eingegeben! Die Abnahmest&uuml;ckzahl ist in {$item->buy_quantity}er Schritten gestaffelt!</div>
</div>
<input type="text" name="update_item[{$item->shopping_cart_item_id}]" class="input_quantity" value="{$item->quantity}" />
</div>
</td>
<td class="alcenter item_container" buy_quantity="{$item->buy_quantity}" min_quantity="{$item->min_quantity}">
<a href="#" class="item_delete" title="löschen" style="text-decoration:none;font-family: Arial;font-size:14px;font-weight:bold;color:#ff0000;">x</a>
</td>
<td class="alright">
<strong>{($item->calculatedPrices.shownPrice * $item->quantity)|number_format:"2":",":"."} &euro;</strong>
</td>
</tr>
{/foreach}
<tr class="cart_footer_first">
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>Summe aller Artikel</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td class="alright">{$shoppingcart.shown_price_sum|number_format:"2":",":"."} &euro;</td>
</tr>
{foreach $shoppingcart.tax_values as $taxRate => $taxData}
<tr class="cart_footer_vat">
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>
{if $shoppingcartVATUsage}
Darin enthaltene MwSt.
{else}
Zzgl. MwSt.
{/if}
</td>
<td>{$taxRate} %</td>
<td>&nbsp;</td>
<td class="alright">
{$taxData['vat']|number_format:"2":",":"."} &euro;
</td>
</tr>
{/foreach}
<tr class="cart_footer_sum">
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>
F&auml;lliger Betrag
</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td class="alright">
{$shoppingcart.price_sum_gross|number_format:"2":",":"."} &euro;
</td>
</tr>
<tr class="cart_footer_sum">
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td colspan="4" class="alright">
{$shoppingcart.price_tax_text|replace:'[tax]%':''}
</td>
</tr>
</table>
<br /><br />
<div style="float:left;">
<input type="button" id="update_cart" name="shoppingcart_update" class="button" value="&gt;&gt; Aktualisieren" />
<div style="color:#959595;">
*Um Artikel zu entfernen, Anzahl <strong>0</strong> eingeben
</div>
</div>
<div style="float:right;">
<input id="cashdesk_button" type="button" class="button" value="&gt;&gt; Zur Kasse" />
</div>
<br style="clear:both;" />
</form>
{else}
Es befinden sich keine Artikel in Ihrem Warenkorb
{/if}
</div>
</div>
</div>
{if $shoppingcart.items && $system_configuration.shoppingcart_ordertext == 1}
<br /><br />
<div class="full_box">
<div class="title_wrapper">
<div class="title">
<h2>Anmerkung zu dieser Bestellung</h2>
</div>
</div>
<div class="box_content">
<div class="box_padder">
<form method="post">
Sie können hier einen Nachrichtentext an uns zu dieser Bestellung hinzuf&uuml;gen.<br />
<textarea style="width:100%; height:200px;border:1px solid #555555;" name="customer_info">{$customer_info}</textarea>
<input type="submit" name="order_text" class="button" value="Text speichern" />
</form>
</div>
</div>
</div>
{/if}
{literal}
<script type="text/javascript">
$(document).ready(function() {
$('#cashdesk_button').click(function(e) {
e.preventDefault();
window.location.href = '/Kasse/';
});
$('.item_delete').click(function(e) {
e.preventDefault();
//$(this).prev('.input_quantity').val(0);
$('.input_quantity', $(this).parents('tr.cart_row')).val(0);
$('#update_cart').trigger('click');
});
$('#update_cart').click(function(e) {
e.preventDefault();
var amount_ok = 1;
$('.item_container').each(function() {
var buy_quantity = $(this).attr('buy_quantity');
var min_quantity = $(this).attr('min_quantity');
var quantity = $('.input_quantity', this).val();
if (parseInt(quantity) != 0) {
if (parseInt(min_quantity) <= 1 || parseInt(quantity) >= parseInt(min_quantity)) {
if (parseInt(buy_quantity) <= 1 || (parseInt(quantity) % parseInt(buy_quantity)) == 0) {
$('.message_min_quantity', this).css({'display': 'none'});
$('.message_wrong_quantity', this).css({'display': 'none'});
} else {
$('.message_min_quantity', this).css({'display': 'none'});
$('.message_wrong_quantity', this).css({'display': 'block'});
amount_ok = 0;
}
} else {
$('.message_min_quantity', this).css({'display': 'block'});
$('.message_wrong_quantity', this).css({'display': 'none'});
amount_ok = 0;
}
}
});
if(amount_ok == 1) {
$('#cart_form').submit();
}
});
$('.close_message_box').click(function(e) {
e.preventDefault();
$('#scart_error_message_two').css({'display': 'none'});
$('#scart_error_message_one').css({'display': 'none'});
});
});
</script>
{/literal}
@@ -0,0 +1,258 @@
<!-- indi:item_box -->
{assign var=att_name_1 value=false}
{assign var=att_unit_1 value=false}
{assign var=att_name_2 value=false}
{assign var=att_unit_2 value=false}
{assign var=no_details value="0"}
{if $shopArticle->schema_data->selectable_attribute_1 || $shopArticle->schema_data->selectable_attribute_2}
{foreach from=$shopArticle->schema_data_attributes item=attribute}
{if $shopArticle->schema_data->selectable_attribute_1 == $attribute.number}
{assign var=att_name_1 value="`$attribute.name`"}
{assign var=att_unit_1 value="`$attribute.unit`"}
{/if}
{if $shopArticle->schema_data->selectable_attribute_2 == $attribute.number}
{assign var=att_name_2 value="`$attribute.name`"}
{assign var=att_unit_2 value="`$attribute.unit`"}
{/if}
{/foreach}
{/if}
{if !$user_lang || $user_lang == $system_configuration.default_system_language || !$shopArticle->short_description_en}
{$shortruncated = $shopArticle->short_description|truncate:500:"...":false|strip_tags}
{else}
{$shortruncated = $shopArticle->short_description_en|truncate:500:"...":false|strip_tags}
{/if}
<div class="list_item_box">
<a title="Zeige alle Bilder" class="imagebox" rel="{$shopArticle->id}" href="#" style="background-image:url({$SHOP_DIR}/images/article/overview_{if $shopArticle->default_image_file_name}{$shopArticle->default_image_file_name}{else}default_image.png{/if});">
{if $shopArticle->default_image_file_name}
<span>Zeige alle Bilder</span>
{/if}
</a>
{if $show_memory_items == 1}
<a class="button_details button_delete_memory_item" href="?item_id={$shopArticle->id}&action=delete">von Merkliste entfernen</a>
{/if}
<div class="primary_data_box">
<div id="artheader">
<div class="artname">
{if $no_details == 1}
{if !$user_lang || $user_lang == $system_configuration.default_system_language || !$shopArticle->name_en}
<h2><a href="" class="article_details" title="Details" >{$shopArticle->name}</a></h2>
{else}
<h2><a href="{$itemSuri}" class="button_details" title="Details" >{$shopArticle->name_en}</a></h2>
{/if}
{else}
{if !$user_lang || $user_lang == $system_configuration.default_system_language || !$shopArticle->name_en}
<h2><a href="{$itemSuri}" class="article_details" title="Details" >{$shopArticle->name}</a></h2>
{else}
<h2><a href="{$itemSuri}" class="article_details" title="Details" >{$shopArticle->name_en}</a></h2>
{/if}
{/if}
{if $shopArticle->number || $shopArticle->manufacturer_item_number}
<h3 class="product_no">
{if $shopArticle->number}
{if $shopArticle->attribute_7 && $shopArticle->number != $shopArticle->attribute_7}
<strong>Art.-Nr.: {$shopArticle->attribute_7}
&nbsp;&nbsp;&nbsp;<span style="font-weight:normal;">({$template_text.item_details.old_item_number_title} {$shopArticle->number})</span>
{else}
<strong>Art.-Nr.: {$shopArticle->number}
{/if}
</strong>
{/if}
{if $shopArticle->manufacturer_item_number}
Hersteller-Nr.: {$shopArticle->manufacturer_item_number}
{/if}
</h3>
{/if}
</div>
<div class="artmanulogo">
{if $shopArticle->manufacturer_data->logo}
<img class="manufacturer_logo" src="{$SHOP_DIR}images/manufacturers/{$shopArticle->manufacturer_data->logo}">
{/if}
</div>
</div>
<div class="availability">
{if $shopArticle->inventory > 0}
{else}
{if $shopArticle->shippable == 0}
{if $shortruncated|stristr:"Ersatz siehe Alternativartikel" || $shortruncated|stristr:"Ersatz siehe Details / Alternativartikel"}
{assign var=no_details value="1"}
<span class="notAvailable" style="font-size:12px;font-weight:bold;color:#ff0000;">Ersatz siehe <a style="font-size:12px;font-weight:bold;" href="{$itemSuri}#realfriends">Alternativ Artikel</a>, <span style="color:#000000;font-weight:normal;">da dieser nicht mehr lieferbar ist.</span></span><br><br>
<a href="{$itemSuri}#realfriends" class="button_details" title="Details" style="position:relative;top:0px;left:0px;width:250px;">Weiter zum Alternativ Artikel</a>
{else}
<span class="notAvailable">Nicht lieferbar</span>
{/if}
{/if}
{/if}
</div>
{if $no_details == 0}
<div class="description">{$shortruncated}</div>
{/if}
</div>
<div class="variants_box">
{assign var=new_price value=""}
{if $shopArticle->schema_data->selectable_attribute_1 || $shopArticle->schema_data->selectable_attribute_2}
{foreach from=$shopArticle->schema_data_attributes item=attribute}
{if $shopArticle->schema_data->selectable_attribute_1 == $attribute.number}
{assign var=att_name_1 value="`$attribute.name`"}
{assign var=att_unit_1 value="`$attribute.unit`"}
{/if}
{/foreach}
{foreach from=$shopArticle->schema_data_attributes item=attribute}
{if $shopArticle->schema_data->selectable_attribute_2 == $attribute.number}
{assign var=att_name_2 value="`$attribute.name`"}
{assign var=att_unit_2 value="`$attribute.unit`"}
{/if}
{/foreach}
<div class="item_variant_box">
<div class="box_title">
<span class="button_name" style="top:5px;">Bitte w&auml;hlen Sie eine passende Variante</span>
</div>
<div class="widget_menu_arrow"></div>
</div>
<div class="variant_selection_box">
{foreach item=item name=cartLoop from=$shopArticle->variant_structure}
{if !$new_price || $new_price > $item.shop_price_1}
{assign var=new_price value=$item.shop_price_1}
{/if}
{if $shopArticle->id == $item.id}
{assign var=preis_praefix value=""}
{/if}
{if $item.short_uri}
{assign var=useUri value="`$item.short_uri`.html"}
{else}
{assign var=useUri value="/index.php?item_id=`$item.id`"}
{/if}
<a href="{$useUri}" title="{$item.name}">
<div class="variant_item">
<span class="item_name">{$item.name}</span>
<span class="item_number">{$item.number}</span>
<span class="item_vdata">
{if $shopArticle->schema_data->selectable_attribute_1}
{$att_name_1}: {$item.data->attribute_1} {$att_unit_1}<br>
{/if}
{if $shopArticle->schema_data->selectable_attribute_2}
{$att_name_2}: {$item.data->attribute_2} {$att_unit_2}<br>
{/if}
</span>
<div class="variant_item_image" style="background:#ffffff url({$SHOP_DIR}/images/article/thumb_{if $item.default_image_file_name}{$item.default_image_file_name}{else}default_image.png{/if}) center center no-repeat;"></div>
<span class="item_price">
{if $item.price_type != 0}
{if $item.sample_price}
{$item.sample_price|number_format:"2":",":"."} &euro; / {$shopArticle->sample_unit}
{else}
{$item.shop_price_1|number_format:"2":",":"."} &euro;
{/if}
{/if}
</span>
</div>
</a>
{/foreach}
</div>
{/if}
</div>
<div class="link_box">
<strong>Artikelinformationen:</strong>
{if $shopArticle->has_documents}
<a href="{$itemSuri}#documents" title="Files">{$template_text.item_details.data_sheet}</a>
{/if}
{if $shopArticle->has_additional_items}
<a href="{$itemSuri}#additionalitems" title="Passendes Zubeh&auml;r">{$template_text.item_details.menutitle_additional_parts}</a>
{/if}
{if $shopArticle->has_spare_parts}
<a href="{$itemSuri}#spareparts" tilte="Ersatzteile">{$template_text.item_details.menutitle_spare_parts}</a>
{/if}
{if $shopArticle->has_real_friends}
<a href="{$itemSuri}#realfriends" tilte="Alternativartikel">{$template_text.item_details.real_friends_title}</a>
{/if}
<a href="{$itemSuri}#suitableFor" title="Hersteller">F&uuml;r folgende Hersteller</a>
</div>
{*{if $no_details == 1}
<a href="{$itemSuri}" class="button_details" title="Details" style="background-image:none;background:#dddddd;">Details</a>
{else}
<a href="{$itemSuri}" class="button_details" title="Details">Details</a>
{/if}*}
<div id="artinfobox">
<div class="linkbox">
{if $no_details == 1}
<a href="{$itemSuri}" class="button_details_no" title="Details" style="background-image:none;background:#dddddd;">Zum Artikel</a>
{else}
<a href="{$itemSuri}" class="button_details" title="Details">Zum Artikel</a>
{/if}
</div>
<div class="pricing_box">
{if !$no_prices && $shopArticle->price_type == "1"}
<div class="price">
{if $shopArticle->shop_bargain_price_1 > 0 && $shopArticle->shop_bargain_price_1 < $shopArticle->shop_price_1}
<span class="oldprice">
{* statt {$shopArticle->shop_price_1|number_format:2:',':" "}&nbsp;&euro; *}
</span>
{$shopArticle->attribute_10} {$shopArticle->price_praefix} {$shopArticle->shop_bargain_price_1|number_format:2:',':" "}&nbsp;&euro;
{else}
{$shopArticle->attribute_10} {$shopArticle->price_praefix} {$shopArticle->shop_price_1|number_format:2:',':" "}&nbsp;&euro;
{/if}
</div>
<span class="taxInfo">
{if $shopArticle->sample_price && $shopArticle->sample_unit && $shopArticle->sample_price > 0 || $item_debug}
Preis / {$shopArticle->sample_unit} = {$shopArticle->sample_price|number_format:"2":",":"."} &euro;<br>
{/if}
{$shopArticle->price_tax_text}
</span>
{else if $shopArticle->price_type == "0"}
<span class="price_on_request">Preis auf Anfrage</span><br>
{/if}
<div class="availability">
{if $shopArticle->inventory > 0}
{if $shopArticle->shippable_inventory == 0}
<span class="notAvailable">Nicht lieferbar</span>
{elseif $shopArticle->shippable_inventory == 1}
{*Artikel lieferbar*}{if $shopArticle->attribute_14 == ''}{$template_text.item_details.item_state_available}{else}{$shopArticle->attribute_14}{/if}
{elseif $shopArticle->shippable_inventory == 3}
Lieferzeit unbekannt
{elseif $shopArticle->shippable_inventory == 4}
Bestellartikel (Lieferzeit 2-3 Tage)
{elseif $shopArticle->shippable_inventory == 5}
Bestellartikel (Lieferzeit 14 Tage)
{/if}
{else}
{if $shopArticle->shippable == 0}
{elseif $shopArticle->shippable == 1}
{*Artikel lieferbar*}{if $shopArticle->attribute_14 == ''}{$template_text.item_details.item_state_available}{else}{$shopArticle->attribute_14}{/if}
{elseif $shopArticle->shippable == 2 && $shopArticle->available_from && $shopArticle->available_till != '0000-00-00'}
<span class="availableInRange">Lieferbar vom {$shopArticle->available_from|date_format:"%d.%m.%Y"} bis {$shopArticle->available_till|date_format:"%d.%m.%Y"}</span>
{elseif $shopArticle->shippable == 2 && $shopArticle->available_from}
<span class="availableInRange">Lieferbar ab {$shopArticle->available_from|date_format:"%d.%m.%Y"}</span>
{elseif $shopArticle->shippable == 3}
<span class="availableInRange">Lieferzeit unbekannt</span>
{elseif $shopArticle->shippable == 4}
Bestellartikel (Lieferzeit 2-3 Tage)
{elseif $shopArticle->shippable == 5}
Bestellartikel (Lieferzeit 14 Tage)
{/if}
{/if}
</div>
</div>
</div>
</div>
@@ -0,0 +1,17 @@
{if $shopArticles}
{foreach name=ArticleList item=shopArticle from=$shopArticles}
{if $shopArticle->short_uri}
{if $currentSURI == '/index.php'}
{assign var=itemSuri value="/`$shopArticle->short_uri`.html"}
{else}
{assign var=itemSuri value="`$currentSURI``$shopArticle->short_uri`.html"}
{/if}
{else}
{assign var=itemSuri value="/index.php?item_id=`$shopArticle->id`"}
{/if}
{include file='item_box.tpl'}
{/foreach}
{else}
<p>Keine Produkte vorhanden.</p>
{/if}
@@ -0,0 +1,236 @@
<!-- indi:item_description -->
<div id="item_menu">
{if $shopArticle->tab_title}
{foreach from=$shopArticle->tab_title item=title key=title_id name=titles}
<a title="{$title}" href="#" rel="tabs_{$title_id}" id="item_tab_trigger_{$title_id}" class="tab_wrapper {if $smarty.foreach.titles.first}active selected{/if}">
<span>{$title}</span>
</a>
{/foreach}
{else}
<a title="{$template_text.item_details.description}" href="#tabs_1" rel="tabs_1" id="item_tab_trigger_1" class="tab_wrapper active selected">
<span>{$template_text.item_details.description}</span>
</a>
{if $shopArticle->documents}
<a href="#tabs_5" rel="tabs_5" class="tab_wrapper selected item_details_tab5">
<span>{$template_text.item_details.data_sheet}</span>
</a>
{/if}
{if $shopArticle->assignedItemSet && $system_configuration.show_item_item_assign == 1}
<a title="{$template_text.item_details.menutitle_additional_parts}" href="#tabs_2" rel="tabs_2" id="item_tab_trigger_2" class="tab_wrapper selected">
<span>{$template_text.item_details.menutitle_additional_parts}</span>
</a>
{/if}
{if $shopArticle->assignedItemSet3}
<a title="{$template_text.item_details.menutitle_spare_parts}" href="#tabs_3" rel="tabs_3" id="item_tab_trigger_3" class="tab_wrapper selected">
<span>{$template_text.item_details.real_friends_title}</span>
</a>
{/if}
{if $shopArticle->assignedItemSet2 && $system_configuration.show_item_item_assign2 == 1}
<a title="{$template_text.item_details.menutitle_spare_parts}" href="#tabs_4" rel="tabs_4" id="item_tab_trigger_4" class="tab_wrapper selected">
<span>{$template_text.item_details.menutitle_spare_parts}</span>
</a>
{/if}
{/if}
<div class="clear_left"></div>
</div>
<div id="description_tabs">
{if $shopArticle->tab_content}
{foreach from=$shopArticle->tab_content item=content key=content_id name=contents}
<div class="tab_content {if $smarty.foreach.contents.first}active{/if}" id="tabs_{$content_id}">
{if $smarty.foreach.contents.first}
{if $shopArticle->schema_data_attributes}
<table>
{foreach from=$shopArticle->schema_data_attributes item=attribute}
{if $attribute.show_detail && $attribute.value}
<tr>
{if $attribute.number != $shopArticle->schema_data->selectable_attribute_1 && $attribute.number != $shopArticle->schema_data->selectable_attribute_2}
<td>{$attribute.name}</td>
<td class="attrRight">{$attribute.value} {$attribute.unit}</td>
{/if}
</tr>
{/if}
{/foreach}
</table>
<br />
{/if}
{$content}
{/if}
</div>
{/foreach}
{else}
<div class="tab_content active" id="tabs_1">
<a name="suitableFor"></a>
<div class="container_left">
<span class="item_description_title">Artikelbeschreibung</span><br /><br />
{if !$user_lang || $user_lang == $system_configuration.default_system_language || !$shopArticle->detail_description_en}
{if $shopArticle->detail_description|stristr:"<a"}
{$shopArticle->detail_description}
{else}
{$shopArticle->detail_description|replace:'Batterieverordnung':'<a target="_blank" href="/media/files/Batterieverordnung.pdf">Batterieverordnung</a>'}
{/if}
{else}
{if $shopArticle->detail_description_en|stristr:"<a"}
{$shopArticle->detail_description_en}
{else}
{$shopArticle->detail_description_en|replace:'Batterieverordnung':'<a target="_blank" href="/media/files/Batterieverordnung.pdf">Batterieverordnung</a>'}
{/if}
{/if}
<br><br><br>
{if !$user_lang || $user_lang == $system_configuration.default_system_language || !$shopArticle->name}
{$shopArticle->name}
{else}
{$shopArticle->name_en}
{/if}
{if $shopArticle->manufacturer_data->name}| von {$shopArticle->manufacturer_data->name} {/if}|
{$structure_data[1]->name} | sofort lieferbar | www.intelectra-shop.de |
{*{assign var=item_attr6 value=$shopArticle->attribute_6|replace:";":", "}
{$item_attr6|replace:",":", "}*}
{if $shopArticle->youtube_video}
<br /><center><iframe width="450" height="253" src="http://www.youtube.com/embed/{$shopArticle->youtube_video}?rel=0" frameborder="0" allowfullscreen></iframe></center>
{/if}
</div>
<div class="container_right">
<span class="item_description_title">Artikelinformationen</span><br>
<div id="qrcode"></div>
<div class="attributes_table">
{if $shopArticle->uvp > 0}
<p>
<strong>UVP:</strong>
{$shopArticle->uvp|number_format:"2":",":"."} &euro;
</p>
{/if}
{if $shopArticle->sample_price && $shopArticle->sample_price > 0 && $shopArticle->sample_unit}
<p>
<strong>Grundpreis:</strong>
{$shopArticle->sample_price|number_format:"2":",":"."} &euro; / {$shopArticle->sample_unit}
</p>
{/if}
{if $shopArticle->schema_data_attributes}
{$done19 = false}
{foreach from=$shopArticle->schema_data_attributes item=attribute}
{if $attribute.show_detail && $attribute.value}
<p>
{if $attribute.number != $shopArticle->schema_data->selectable_attribute_2}
<strong>
{if !$user_lang || $user_lang == $system_configuration.default_system_language || !$attribute.name_en}
{$attribute.name}:
{else}
{$attribute.name_en}:
{/if}
</strong><br>
{if $attribute.number == 1}
{$done19 = true}
{if !empty($shopArticle->attribute_19)}
<div id="itemMatch"><strong>passend wie / Originalnummer / Ausführung / Aufdruck-11:</strong><br>{$shopArticle->attribute_19}</div>
{else}
{foreach from=$shopArticle->match item=attribute}
<div id="itemMatch"><strong>{$attribute->vertreiber}</strong><br>{$attribute->bestellcode}</div>
{/foreach}
{/if}
{if $attribute.value == 279}
Bund
{else if $attribute.value == 278}
Meter
{else if $attribute.value == 275}
Paar
{else if $attribute.value == 280}
Pack.
{else if $attribute.value == 281}
Rolle
{else if $attribute.value == 277}
Satz
{else if $attribute.value == 276}
Set
{else if $attribute.value == 8}
Stück
{else if $attribute.value == 274}
VP
{/if}
{else}
{$attribute.value|replace:';':'<br>'} {$attribute.unit}
{/if}
{/if}
</p>
{/if}
{/foreach}
{if !$done19}
<div id="itemMatch"><strong>passend wie / Originalnummer / Ausführung / Aufdruck:</strong><br>{foreach from=$shopArticle->match item=attribute}
<div id="itemMatch"><strong>{$attribute->vertreiber}</strong><br>{$attribute->bestellcode}</div>
{/foreach}</div>
{/if}
{/if}
</div>
<a name="documents" title="Dokumente"></a>
{if $shopArticle->documents}
<div class="document_downloads">
{foreach item=file from=$shopArticle->documents}
<a target="_blank" title="PDF-Dokument" href="{$SHOP_DIR}documents/article/{$file->file_name}" title="{$file->alt}">
<strong>Download:</strong> {$file->alt}<br>
<span>
PDF-Dokument
{if $file->size > 0}
| {($file->size/1024)|number_format:"2":",":"."} kB
{/if}
</span>
</a>
<br>
{/foreach}
</div>
{/if}
</div>
<div class="clear_both"></div>
{if $shopArticle->geraetezuordnung != '<table border="0" cellpadding="2" cellspacing="0"></table>'}
<h2>{$shopArticle->name} passend f&uuml;r Ger&auml;t:</h2>
{$shopArticle->geraetezuordnung}
{/if}
</div>
<div class="tab_content" id="tabs_2">
<!-- Zubehoer -->
<a name="additionalitems" title="Zubehör"></a>
{if $shopArticle->assignedItemSet && $system_configuration.show_item_item_assign == 1}
{$additionItemListItems=$shopArticle->assignedItemSet}
{include 'additionitem_box.tpl'}
{/if}
</div>
<div class="tab_content" id="tabs_3">
<!-- Ersatzteile -->
<a name="realfriends" title="Alternativartikel"></a>
{if $shopArticle->assignedItemSet3}
{$additionItemListItems=$shopArticle->assignedItemSet3}
{include 'additionitem_box.tpl'}
{/if}
</div>
<div class="tab_content" id="tabs_4">
<!-- Ersatzteile -->
<a name="spareparts" title="Ersatzteile"></a>
{if $shopArticle->assignedItemSet2 && $system_configuration.show_item_item_assign2 == 1}
{$additionItemListItems=$shopArticle->assignedItemSet2}
{include 'additionitem_box.tpl'}
{/if}
</div>
<div class="tab_content" id="tabs_5">
<table border="0" cellspacing="2" callpadding="2">
{foreach item=file from=$shopArticle->documents}
<tr>
<td><img src="{$PARENT_THEME_DIR}/media/images/mime_postscript.png" /></td>
<td>
<a class="document" target="_blank" href="{$SHOP_DIR}documents/article/{$file->file_name}" title="{$file->alt}">{if $file->alt}{$file->alt}{else}PDF-Dokument{/if}</a>
</td>
</td>
{/foreach}
</table>
</div>
{/if}
</div>
@@ -0,0 +1,20 @@
<div class="liveSearchHolder">
<div id="live_search_title">{$template_text.live_search.results} ({$item_search.results}):</div>
{if $item_search.results > 0}
<div class="items search_box " style="width:300px;">
<div>
{if $item_search}
{foreach from=$item_search.data item=item}
<div class="live_search_item {cycle values="live_search_item2,"}">
<a href="{$serverProtocol}://{$servername}/kaufen/{$item->short_uri}.html" title="{$item->name}">&nbsp;{$item->name}</a>
</div>
{/foreach}
{else}
-
{/if}
</div>
</div>
{/if}
</div>
@@ -0,0 +1,328 @@
<!DOCTYPE html>
<html lang="de">
<head>
<link rel="icon" href="{$THEME_DIR}/media/images/favicon.ico" type="image/ico" />
<link rel="shortcut icon" href="{$THEME_DIR}/media/images/favicon.ico" type="image/ico" />
<meta charset="utf-8" />
{if isset($shopArticle) && $shopArticle->id && $shopArticle->structure_id != $menu_id}
<link rel="canonical" href="http://{$SERVER_NAME}/{$shopArticle->main_structure_uri_path}/{$shopArticle->short_uri}.html" />
{/if}
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
<meta http-equiv="X-UA-Compatible" content="chrome=1, IE=edge">
<meta name="format-detection" content="telephone=no">
{foreach item=val key=key from=$metatags}
{if $key != 'footer_text'}
{if $key != 'title'}
<meta name="{$key}" content="{$val}" />
{else}
<title>{$val}</title>
{/if}
{/if}
{/foreach}
<meta name="google-site-verification" content="AiRYv1ltNq-QytW_F3ahgBq17ZkwImsS1MYyQrKicBg" />
<!-- standard parent theme css -->
<link rel="stylesheet" href="{$SUB_DIR}media/css/common_styles.css" />
<link rel="stylesheet" href="{$PARENT_THEME_DIR}/media/css/layout.css" />
<link rel="stylesheet" href="{$PARENT_THEME_DIR}/media/css/widgets.css" />
<link rel="stylesheet" href="{$PARENT_THEME_DIR}/media/css/items.css?version=1" />
<link rel="stylesheet" href="{$PARENT_THEME_DIR}/media/css/contents.css?version=1" />
<link rel="stylesheet" href="{$PARENT_THEME_DIR}/media/css/content_shoppingcart.css?version=1" />
<link rel="stylesheet" href="{$PARENT_THEME_DIR}/media/css/content_login.css?version=1" />
<link rel="stylesheet" href="{$PARENT_THEME_DIR}/media/css/content_cash_desk.css?version=1" />
<link rel="stylesheet" href="{$PARENT_THEME_DIR}/media/css/content_customer_center.css?version=1" />
<link rel="stylesheet" href="{$PARENT_THEME_DIR}/media/css/forms.css?version=1" />
{*<link rel="stylesheet" href="{$PARENT_THEME_DIR}/media/css/ui-lightness/jquery-ui-1.10.3.custom.min.css" />*}
<link rel="stylesheet" href="{$SUB_DIR}libs/slimbox-2.02/css/slimbox2.css" media="screen,print" />
<link rel="stylesheet" href="{$THEME_DIR}/media/css/cookieconsent.css" media="print" onload="this.media='all'">
<!-- customized theme css -->
<link rel="stylesheet" href="{$THEME_DIR}/media/css/customized_theme.css" />
<link rel="stylesheet" href="{$THEME_DIR}/media/fontawesome/css/fontawesome.css" />
<link rel="stylesheet" href="{$THEME_DIR}/media/fontawesome/css/brands.css" />
<link rel="stylesheet" href="{$THEME_DIR}/media/fontawesome/css/solid.css" />
<!--[if IE 7]>
<link rel="stylesheet" href="{$THEME_DIR}/media/css/ie7.css" />
<![endif]-->
{if isset($theme_data->css) && $theme_data->css}
<style>
{$theme_data->css}
</style>
{/if}
<!-- standard parent theme javascript -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.6.4/jquery.min.js" integrity="sha512-SW0bB7zYONzOFdTogLM8mF+lpvSaPH55g+RyyV8+dRZkiW5n/c1gNgGk5i2xfzDLTmPHvSCqsaiEoZJDiToTWg==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
{*<script src="https://intelectra-shop.de/themes/easyshop_advanced/media/js/jquery-1.6.4.min.js"></script>*}
{*<script src="{$PARENT_THEME_DIR}/media/js/jquery-1.6.4.min.js"></script>*}
<script src="{$PARENT_THEME_DIR}/media/js/jquery.color.js"></script>
<script src="{$PARENT_THEME_DIR}/media/js/jquery.hoverIntent.minified.js"></script>
<script src="{$PARENT_THEME_DIR}/media/js/script.js"></script>
<script src="{$PARENT_THEME_DIR}/media/js/widget.js"></script>
<script src="{$PARENT_THEME_DIR}/media/js/recommendation_form.js"></script>
<script src="{$PARENT_THEME_DIR}/media/js/jquery.cycle.all.js"></script>
{*<script src="https://intelectra-shop.de/themes/easyshop_advanced/media/js/jquery-ui-1.10.3.custom.min.js"></script>*}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js" integrity="sha512-kHKdovQFIwzs2NABJSo9NgJKZOrRqLPSoqIumoCkaIytTRGgsddo7d0rFyyh8RvYyNNKcMF7C9+4sM7YhMylgg==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script type="text/plain" data-cookiecategory="analytics" src="/phpwebstat/pws.php?mode=js"></script>
<script src="{$SUB_DIR}libs/slimbox-2.02/src/slimbox2.js"></script>
<script src="{$SUB_DIR}libs/jquery.qrcode.min.js"></script>
<script defer src="{$PARENT_THEME_DIR}/media/js/cookieconsent.js"></script>
<script defer src="{$THEME_DIR}/media/js/cookieconsent-init.js"></script>
<script>
var shop_dir = '{$SHOP_DIR}';
var theme_dir = '{$THEME_DIR}';
var sub_dir = '{$SUB_DIR}';
</script>
{literal}
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-126168744-1"></script>
<script src='https://www.google.com/recaptcha/api.js'></script>
{/literal}
{literal}
<!-- Page hiding snippet (recommended) -->
<style>.async-hide { opacity: 0 !important} </style>
<script>(function(a,s,y,n,c,h,i,d,e){s.className+=' '+y;h.start=1*new Date;
h.end=i=function(){s.className=s.className.replace(RegExp(' ?'+y),'')};
(a[n]=a[n]||[]).hide=h;setTimeout(function(){i();h.end=null},c);h.timeout=c;
})(window,document.documentElement,'async-hide','dataLayer',4000,
{'GTM-T7HR4RC':true});</script>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-126168744-1', 'intelectra-shop.de');
ga('require', 'GTM-T7HR4RC');
ga('send', 'pageview');
</script>
{/literal}
</head>
<body>
<div id="layout_laden_window">{$template_text.default.searchload_text}</div>
<div id="header_trans_bg" class="firststicky">
<div class="hcentralizer">
<a class="logo" href="/" title="Intelectra"></a>
{if $items_in_memory }
<a class="memorylistbutton" href="/Merkliste/">Merkliste ({$items_in_memory})</a>
{/if}
<a class="quickshopping" href="/Warenkorb/">Schnelleinkauf</a>
</div>
</div>
<div id="header_sticky" class="sticky">
<div id="header_trans">
<div class="centralizer">
<span style="font-weight:bold;font-size:12px;">Sachsenring 48, D-94315 Straubing</span><br><br>
<span>Ersatzteile und Zubeh&ouml;r f&uuml;r Elektro Hausger&auml;te | Versandgro&szlig;handel | Einzelhandel&nbsp;&nbsp;&nbsp;&nbsp;</span><br>
<strong style="font-size:20px;">Telefonische&nbsp;Beratung:&nbsp;+49&nbsp;(0)&nbsp;9421/62015&nbsp;&nbsp;</strong>
<div>
{if $top_widgets}
{foreach from=$top_widgets item=widget}
{$widget}
{/foreach}
{/if}
</div>
</div>
</div>
<div id="header_trans_sub">
<div class="centralizer">
{if $header_widgets}
{foreach from=$header_widgets item=widget}
{$widget}
{/foreach}
{/if}
</div>
</div>
</div>
<div id="header_logorodeo">
{if $subheader_widgets}
{foreach from=$subheader_widgets item=widget}
{$widget}
{/foreach}
{/if}
</div>
<div id="wrapper">
{*<div id="header_wrapper" {if $theme_data->header_image}style="background:transparent url({$SHOP_DIR}images/header/{$theme_data->header_image}) no-repeat;"{/if}></div>*}
<div id="breadcrumb">
<ol itemscope itemtype="http://schema.org/BreadcrumbList">
{if $structureData->id != 6}
<li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">
<a itemprop="item" href="/Home/"><span itemprop="name">Intelectra Startseite</span></a>
<meta itemprop="position" content="1" />
</li>
{/if}
{foreach from=$breadcrumb item=breadcrumb_item}
{if $structureData->id == 6}
{$breadcrumb_item.name=$template_text.default.breadcrumb_home}
{/if}
<!-- 29. Januar 2021 wird das data-vocabulary.org-Markup nicht mehr für die Rich-Suchergebnisfunktionen von Google berücksichtigt.
<div itemscope itemtype="http://data-vocabulary.org/Breadcrumb">
{if !$user_lang || $user_lang == $system_configuration.default_system_language || !$breadcrumb_item.object->name_en}
<a href="/{$breadcrumb_item.short_uri}/" class="arrow" itemprop="url" title="{$breadcrumb_item.name}">
<span itemprop="title">{$breadcrumb_item.name}</span>
</a>
{else}
<a href="/{$breadcrumb_item.short_uri}/" class="arrow" itemprop="url" title="{$breadcrumb_item.name}">
<span itemprop="title">{$breadcrumb_item.object->name_en}</span>
</a>
{/if}
</div>-->
<li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">
{if !$user_lang || $user_lang == $system_configuration.default_system_language || !$breadcrumb_item.object->name_en}
<a itemprop="item" href="/{$breadcrumb_item.short_uri}/"><span itemprop="name">{$breadcrumb_item.name}</span></a>
<meta itemprop="position" content="2" />
{else}
<a itemprop="item" href="/{$breadcrumb_item.short_uri}/"><span itemprop="name">{$breadcrumb_item.name}</span></a>
<meta itemprop="position" content="2" />
{/if}
</li>
</ol>
{/foreach}
</ol>
</div>
<div id="main_wrapper" class="clearfix">
{if !isset($site_type) || $site_type != 'full_width'}
<!-- Navi -->
<div id="navi_wrapper">
{if $left_widgets}
{foreach from=$left_widgets item=widget}
{$widget}
{/foreach}
{/if}
</div>
<!-- Content wrapper -->
<div id="content_wrapper">
<!-- Content -->
<div id="maincontent_wrapper">
<!-- Search -->
<div class="content_box_structure_list">
<div class="header"><h2>Suche <i class="fa-solid fa-magnifying-glass"></i></h2></div>
<div class="content">
<div class="search_widget_wrapper" style="z-index:0;">
<div class="widget_content_wrapper">
{*<form action="/" method="post" name="easyshop_searchcontent">
<input type="text" id="searchcontent_item" name="search_item[search_item]" autocomplete="off" data-defaultv="{$template_text.main_widget_search.search_field_text}" value="{if isset($search_item)}{$search_item}{else}{$template_text.main_widget_search.search_field_text}{/if}" />
<input type="text" id="searchcontent_item2" name="search_item[search_item2]" autocomplete="off" data-defaultv="{$template_text.main_widget_search.search_field_text2}" value="{if isset($search_item2)}{$search_item2}{else}{$template_text.main_widget_search.search_field_text2}{/if}" />
<input type="text" id="searchcontent_item3" name="search_item[search_item3]" autocomplete="off" data-defaultv="{$template_text.main_widget_search.search_field_text3}" value="{if isset($search_item3)}{$search_item3}{else}{$template_text.main_widget_search.search_field_text3}{/if}" />
<input class="searchcontent_button" type="submit" value="{$template_text.default.search}" />
</form>*}
<form action="/" method="post" name="easyshop_searchcontent">
<input style="width:420px;background:#dddddd;padding-left:15px;color:#000000;" type="text" id="searchcontent_item" name="search_item[search_item]" autocomplete="off" data-defaultv="{$template_text.main_widget_search.search_field_text}" value="{if isset($search_item)}{$search_item}{else}{$template_text.main_widget_search.search_field_text}{/if}" />
<input class="searchcontent_button" type="submit" value="{$template_text.default.search}" />
<button title="Suche starten"><i class="fa fa-search"></i></button>
</form>
{if $template_text.main_widget_search.subsearch_field_text}
<div class="subsearch_field_text">{$template_text.main_widget_search.subsearch_field_text}</div>
{/if}
{if $template_text.main_widget_search.above_field_text}
<div class="above_field_text">{$template_text.main_widget_search.above_field_text}</div>
{/if}
</div>
</div>
</div><br><br>
</div>
{$maincontent}
</div>
</div>
{else}
<!-- Content wrapper -->
<div id="content_wrapper2">
<!-- Content -->
<div id="maincontent_wrapper2">
<!-- Search -->
<div class="content_box_structure_list" style="width:992px;">
<div class="header"><h2>Suche</h2></div>
<div class="content">
<div class="search_widget_wrapper" style="z-index:0;">
<div class="widget_content_wrapper">
{*<form action="/" method="post" name="easyshop_searchcontent">
<input type="text" id="searchcontent_item" name="search_item[search_item]" autocomplete="off" data-defaultv="{$template_text.main_widget_search.search_field_text}" value="{if isset($search_item)}{$search_item}{else}{$template_text.main_widget_search.search_field_text}{/if}" />
<input type="text" id="searchcontent_item2" name="search_item[search_item2]" autocomplete="off" data-defaultv="{$template_text.main_widget_search.search_field_text2}" value="{if isset($search_item2)}{$search_item2}{else}{$template_text.main_widget_search.search_field_text2}{/if}" />
<input type="text" id="searchcontent_item3" name="search_item[search_item3]" autocomplete="off" data-defaultv="{$template_text.main_widget_search.search_field_text3}" value="{if isset($search_item3)}{$search_item3}{else}{$template_text.main_widget_search.search_field_text3}{/if}" />
<input class="searchcontent_button" type="submit" value="{$template_text.default.search}" />
</form>*}
<form action="/" method="post" name="easyshop_searchcontent">
<input style="width:420px;background:#dddddd;padding-left:15px;color:#000000;" type="text" id="searchcontent_item" name="search_item[search_item]" autocomplete="off" data-defaultv="{$template_text.main_widget_search.search_field_text}" value="{if isset($search_item)}{$search_item}{else}{$template_text.main_widget_search.search_field_text}{/if}" />
<input class="searchcontent_button" type="submit" value="{$template_text.default.search}" />
</form>
{if $template_text.main_widget_search.subsearch_field_text}
<div class="subsearch_field_text">{$template_text.main_widget_search.subsearch_field_text}</div>
{/if}
{if $template_text.main_widget_search.above_field_text}
<div class="above_field_text">{$template_text.main_widget_search.above_field_text}</div>
{/if}
{if $template_text.main_widget_search.above_field_text2}
<div class="above_field_text2">{$template_text.main_widget_search.above_field_text2}</div>
{/if}
{if $template_text.main_widget_search.above_field_text3}
<div class="above_field_text3">{$template_text.main_widget_search.above_field_text3}</div>
{/if}
</div>
</div>
</div><br><br>
</div>
{$maincontent}
</div>
</div>
{/if}
</div>
</div>
<div id="footer_wrapper">
<div id="footer">
{foreach from=$footer_widgets item=widget}
{$widget}
{/foreach}
<!-- Content wrapper
<div id="fb_box">
<div id="fb-root"></div>
<script>
(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id))
return;
js = d.createElement(s);
js.id = id;
js.src = "//connect.facebook.net/de_DE/all.js#xfbml=1";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
</script>
<div class="fb-like" data-send="true" data-layout="button_count" data-width="225" data-show-faces="true"></div>
</div>-->
<div id="copyright">{$system_configuration.footer_copyright_text}</div>
</div>
</div>
<div id="layout_modal" style="width:100%;height:0px;background-color:#000000;opacity:0.5;z-index:3500;position:absolute;top:0px;left:0px;display:none;">&nbsp;</div>
<div id="layout_laden" style="width:100%;height:0px;background-color:#000000;opacity:0.5;z-index:3500;position:absolute;top:0px;left:0px;display:none;">&nbsp;</div>
<script src="{$THEME_DIR}/media/js/theme.js"></script>
<script src="{$THEME_DIR}/media/js/widget.js?v=1234"></script>
</body>
</html>
@@ -0,0 +1,36 @@
<div id="footerContactParent">
<form method="post" action="{$main_widget_footercontact.config.action}">
<h2>
<span class="icon"></span>
Kontaktformular
</h2>
<div class="firstName obligatory">
<label for="contact_forename">Vorname</label>
<input id="contact_forename" type="text" name="contact[forename]" value="{if $customer->firstname}{$customer->firstname}{/if}">
</div>
<div class="lastName obligatory">
<label for="contact_surname">Nachname</label>
<input id="contact_surname" type="text" name="contact[surname]" value="{if $customer->surname}{$customer->surname}{/if}">
</div>
<div class="eMail obligatory">
<label for="contact_e_mail">E-Mail Adresse</label>
<input id="contact_e_mail" type="text" name="contact[e_mail]" value="{if $customer->email}{$customer->email}{/if}">
</div>
<div class="phone obligatory">
<label for="contact_call_number_private">Telefon</label>
<input id="contact_call_number_private" type="text" name="contact[call_number_private]" value="{if $customer->phone}{$customer->phone}{/if}">
</div>
{*<div class="callback">
<label for="contact_callback">R&uuml;ckruf erw&uuml;nscht?</label>
<input class="datepicker" id="contact_callback" type="text" name="contact[callback]">
</div>*}
<div class="message">
<label for="contact_message">Ihre Nachricht</label>
<textarea id="contact_message" name="contact[message]"></textarea>
</div>
<input id="contact_account_contact" type="hidden" name="account_contact">
<button>Senden</button>
</form>
</div>
@@ -0,0 +1,32 @@
<!-- Item categories -->
<div class="itemcategory_widget_wrapper">
<div class="widget_title"><span>{$template_text.main_widget_item_categories.item_category_title}</span></div>
<div class="widget_content_menu_wrapper">
<ul>
{foreach name=menuLoop item=menu_item from=$main_widget_item_categories.menu_items}
<li class="level_{$menu_item->level} {if $menu_item->activated}active{/if}">
{if $menu_item->level == 1}
<a title="{$menu_item->name}" name="{$menu_item->name}" class="mainlevel {if $menu_item->id == 357}menu_highlighted {/if} {if isset($menu_item->activated) && $menu_item->activated}active{/if}" href="{$serverProtocol}://{$servername}/{if $menu_item->full_short_uri}{$menu_item->full_short_uri}/{else}index.php?menu_id={$menu_item->id}{/if}">
<span></span>
{if !$user_lang || $user_lang == $system_configuration.default_system_language || !$menu_item->name_en}
{$menu_item->name}
{else}
{$menu_item->name_en}
{/if}
</a>
{else}
<a class="sublevel" title="{$menu_item->name}" name="{$menu_item->name}" href="{$serverProtocol}://{$servername}{if $main_widget_item_categories.menu_items[$menu_item->parent_id]->short_uri && $menu_item->short_uri}/{$menu_item->full_short_uri}/{else}/index.php?parent_id={$menu_item->parent_id}&menu_id={$menu_item->id}{/if}">
<span></span>
{if !$user_lang || $user_lang == $system_configuration.default_system_language || !$menu_item->name_en}
{$menu_item->name}
{else}
{$menu_item->name_en}
{/if}
</a>
{/if}
</li>
{/foreach}
</ul>
</div>
<div class="widget_footer"></div>
</div>
@@ -0,0 +1,35 @@
<script>
var logoRodeoActive = true;
var logoRodeoImages = [
"{$THEME_DIR}/media/images/markenlogos/aeg.png",
"{$THEME_DIR}/media/images/markenlogos/ariston.png",
"{$THEME_DIR}/media/images/markenlogos/balay.png",
"{$THEME_DIR}/media/images/markenlogos/bauknecht.png",
"{$THEME_DIR}/media/images/markenlogos/bosch.png",
"{$THEME_DIR}/media/images/markenlogos/constructa.png",
"{$THEME_DIR}/media/images/markenlogos/electrolux.png",
"{$THEME_DIR}/media/images/markenlogos/foron.png",
"{$THEME_DIR}/media/images/markenlogos/funktionika.png",
"{$THEME_DIR}/media/images/markenlogos/gaggenau.png",
"{$THEME_DIR}/media/images/markenlogos/gorenje.png",
"{$THEME_DIR}/media/images/markenlogos/ignis.png",
"{$THEME_DIR}/media/images/markenlogos/imperial.png",
"{$THEME_DIR}/media/images/markenlogos/indesit.png",
"{$THEME_DIR}/media/images/markenlogos/juno.png",
"{$THEME_DIR}/media/images/markenlogos/kueppersbusch.png",
"{$THEME_DIR}/media/images/markenlogos/liebherr.png",
"{$THEME_DIR}/media/images/markenlogos/malab.png",
"{$THEME_DIR}/media/images/markenlogos/miele.png",
"{$THEME_DIR}/media/images/markenlogos/neff.png",
"{$THEME_DIR}/media/images/markenlogos/philips.png",
"{$THEME_DIR}/media/images/markenlogos/privileg.png",
"{$THEME_DIR}/media/images/markenlogos/saeco.png",
"{$THEME_DIR}/media/images/markenlogos/siemens.png",
"{$THEME_DIR}/media/images/markenlogos/w.png",
"{$THEME_DIR}/media/images/markenlogos/zanker.png",
"{$THEME_DIR}/media/images/markenlogos/zanussi.png",
];
</script>
<div id="logoRodeoParent">
<div id="logoRodeoSpool"></div>
</div>
@@ -0,0 +1,58 @@
<div id="main_widget_item_categories_dropdown">
{foreach name=menuLoop item=menu_item_main from=$main_widget_menu_advanced.menu_items[3]}
{assign var=isNotEmpty value=$main_widget_menu_advanced.counts|@count}
<div data-rel="{$menu_item_main->id}" class="menu_item menu_item_{$menu_item_main->id} {if $smarty.foreach.menuLoop.first}menu_item_first{/if} {if !$isNotEmpty}isEmpty{/if}" style="width:{if $smarty.foreach.menuLoop.first}{$main_widget_menu_advanced.menu_first_item_width}{else}{$main_widget_menu_advanced.menu_item_width}{/if}px;">
<a title="{$menu_item_main->name}" name="{$menu_item_main->name}" title="{$menu_item_main->name}" class="menu_top_link {if isset($current_menu_id) && $current_menu_id == $menu_item->id}active{/if}" {if $system_configuration.main_menu_item_clickable || ($system_configuration.main_menu_item_clickable_if_empty && !$isNotEmpty)}href="{$serverProtocol}://{$servername}/{if $menu_item_main->short_uri}{$menu_item_main->short_uri}/{else}index.php?menu_id={$menu_item_main->id}{/if}"{/if}>
<span>
{if !$user_lang || $user_lang == $system_configuration.default_system_language || !$menu_item_main->name_en}
{$menu_item_main->name}
{else}
{$menu_item_main->name_en}
{/if}
</span>
<strong class="borderLeft"></strong>
<strong class="borderRight"></strong>
</a>
</div>
{/foreach}
<div class="main_navigation_subnav" style="display:none;">
<div class="subNavRoller">
{foreach name=menuLoop item=menu_item_main from=$main_widget_menu_advanced.menu_items[3]}
<div data-rel="{$menu_item_main->id}" class="subbox">
<div class="subboxScroller">
{if isset($main_widget_menu_advanced.menu_items[$menu_item_main->id])}
{assign var=chunkSize value=$main_widget_menu_advanced.counts|@count/3}
{assign var=chunkSize value=$chunkSize|ceil}
{assign var=subChunks value=$main_widget_menu_advanced.menu_items[$menu_item_main->id]|array_chunk:$chunkSize}
{foreach $subChunks as $subChunk}
<div class="chunkbox">
{foreach $subChunk as $menu_item}
<a title="{$menu_item->name}" class="{if isset($current_menu_id) && $current_menu_id == $menu_item->id}active{/if}" href="{$serverProtocol}://{$servername}/{$menu_item_main->short_uri}/{if $menu_item->short_uri}{$menu_item->short_uri}/{else}index.php?menu_id={$menu_item->id}{/if}">
{if !$user_lang || $user_lang == $system_configuration.default_system_language || !$menu_item->name_en}
{$menu_item->name}
{else}
{$menu_item->name_en}
{/if}
</a>
{/foreach}
</div>
{/foreach}
{/if}
<br style="clear:left;">
</div>
<div class="subboxCover"></div>
<a href="#" title="Scroll up" class="subboxScrollUp" title="scrollup"><span></span></a>
<a href="#" title="Scroll down" class="subboxScrollDown" title="scrolldown"><span></span></a>
</div>
{/foreach}
<br style="clear:left;">
</div>
</div>
</div>
@@ -0,0 +1 @@
<div id="main_menu_ajax_container"></div>
@@ -0,0 +1,11 @@
<!-- Newsletterbox -->
<div class="newsletter_widget_wrapper">
<div class="widget_title"><span>{$template_text.newsletter_widget.nl_title}</span></div>
<center>
<br><br><br><br><br><br><br><br><br>
<!-- PayPal Logo --><table border="0" cellpadding="10" cellspacing="0" align="center"><tbody><tr><td align="center"></td></tr><tr><td align="center"><a href="https://ad.doubleclick.net/ddm/trackclk/N426203.3410571DEPAYPALLOGOCENTE/B21619412.227908863;dc_trk_aid=425874235;dc_trk_cid=105222567;dc_lat=;dc_rdid=;tag_for_child_directed_treatment=;tfua=" title="So funktioniert PayPal" onclick="javascript:window.open('https://ad.doubleclick.net/ddm/trackclk/N426203.3410571DEPAYPALLOGOCENTE/B21619412.227908863;dc_trk_aid=425874235;dc_trk_cid=105222567;dc_lat=;dc_rdid=;tag_for_child_directed_treatment=;tfua=','WIPaypal','toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes, resizable=yes, width=715, height=539); return false;"><img src="https://www.paypalobjects.com/webstatic/de_DE/i/de-pp-logo-150px.png" border="0" alt="PayPal Logo" /></a></td></tr></tbody></table><!-- PayPal Logo -->
<img class="dpd" src="/web/intelectra_shop/themes/theme2/media/images/dp_dhl.png" alt="nachnahme" /><br><br>
<img class="vorkasse" src="/web/intelectra_shop/themes/theme2/media/images/vorkasse.gif" alt="vorkasse" /><br>
</center>
<div class="widget_footer">{$template_text.newsletter_widget.nl_footertext}</div>
</div>
@@ -0,0 +1,31 @@
<!-- Search -->
{*<div class="search_widget_wrapper">
<div class="widget_content_wrapper">
<form action="/" method="post" name="easyshop_search">
<input type="text" id="search_item" name="search_item[search_item]" autocomplete="off" data-defaultv="{$template_text.main_widget_search.search_field_text}" value="{if isset($search_item)}{$search_item}{else}{$template_text.main_widget_search.search_field_text}{/if}" />
<input type="text" id="search_item2" name="search_item[search_item2]" autocomplete="off" data-defaultv="{$template_text.main_widget_search.search_field_text2}" value="{if isset($search_item2)}{$search_item2}{else}{$template_text.main_widget_search.search_field_text2}{/if}" />
<input type="text" id="search_item3" name="search_item[search_item3]" autocomplete="off" data-defaultv="{$template_text.main_widget_search.search_field_text3}" value="{if isset($search_item3)}{$search_item3}{else}{$template_text.main_widget_search.search_field_text3}{/if}" />
<input class="search_button" type="submit" value="{$template_text.default.search}" />
</form>
{if $template_text.main_widget_search.subsearch_field_text}
<div class="subsearch_field_text">{$template_text.main_widget_search.subsearch_field_text}</div>
{/if}
{if $template_text.main_widget_search.above_field_text}
<div class="above_field_text">{$template_text.main_widget_search.above_field_text}</div>
{/if}
{if $template_text.main_widget_search.above_field_text2}
<div class="above_field_text2">{$template_text.main_widget_search.above_field_text2}</div>
{/if}
{if $template_text.main_widget_search.above_field_text3}
<div class="above_field_text3">{$template_text.main_widget_search.above_field_text3}</div>
{/if}
<div id="search_result"></div>
<div class="loading_indicator"></div>
</div>
</div>*}
@@ -0,0 +1,56 @@
<div class="main_widget_shoppingcart2{if !$main_widget_shoppingcart.shoppingcart.items.items} empty_card{/if}">
<div class="widget_icon"></div>
<div class="widget_title">
<span class="button_name">{*c: {layout::i18n_format_date($i18n_config.date_format, '2013-05-12')} - *}{$template_text.default.shoppingcart}</span>
<span class="button_text">
{if $system_configuration.show_shoppingcart_different_items_sum != 1 && $main_widget_shoppingcart.shoppingcart.amount_sum > 0}
{$main_widget_shoppingcart.shoppingcart.amount_sum} Artikel | {if $customer->group_id == 101}{$main_widget_shoppingcart.shoppingcart.items.price_sum_net|number_format:"2":",":"."}{else}{$main_widget_shoppingcart.shoppingcart.items.price_sum_gross|number_format:"2":",":"."}{/if} &euro;
{else if $system_configuration.show_shoppingcart_different_items_sum == 1 && $main_widget_shoppingcart.shoppingcart.different_amount_sum > 0}
{$main_widget_shoppingcart.shoppingcart.different_amount_sum} Artikel | {if $customer->group_id == 101}{$main_widget_shoppingcart.shoppingcart.items.price_sum_net|number_format:"2":",":"."}{else}{$main_widget_shoppingcart.shoppingcart.items.price_sum_gross|number_format:"2":",":"."}{/if} &euro;
{else}
Noch keine Artikel
{/if}
</span>
</div>
<div class="widget_menu_arrow"></div>
<div class="widget_menu_trennlinie"></div>
</div>
<div id="shoppingcart_kontext">
{if $main_widget_shoppingcart.shoppingcart.items.items}
{foreach item=item name=cartLoop from=$main_widget_shoppingcart.shoppingcart.items.items}
{if $smarty.foreach.cartLoop.iteration < 6}
<div class="cart_item {if $smarty.foreach.cartLoop.first}cart_item_first{/if}">
<span class="item_amount">{$item->quantity}x</span>
<div class="cart_item_image" style="background:#ffffff url({$SHOP_DIR}/images/article/thumb_{$item->default_image_file_name}) center center no-repeat;"></div>
<span class="item_number">
{if $item->attribute_7 && $item->number != $item->attribute_7}
<span>{$item->attribute_7}&nbsp;&nbsp;({$template_text.item_details.old_item_number_title} {$item->number})</span>
{else}
<span>Art.-Nr. {$item->number}</span>
{/if}
</span>
<span class="item_name">{$item->name|truncate:50:"...":true}</span>
<span class="item_price">{if $customer->group_id == 101}{$item->price_sum_net|number_format:"2":",":"."}{else}{$item->price_sum_gross|number_format:"2":",":"."}{/if} &euro;</span>
<a title="item delete" class="cart_delete_button" href="#"></a>
<div class="item_delivery_status_1"></div>
</div>
{/if}
{/foreach}
<div class="cart_footer">
<span class="cart_sum_text">Gesamtsumme:</span>
<span class="cart_sum_value">{if $customer->group_id == 101}{$main_widget_shoppingcart.shoppingcart.items.price_sum_net|number_format:"2":",":"."}{else}{$main_widget_shoppingcart.shoppingcart.items.price_sum_gross|number_format:"2":",":"."}{/if} &euro;</span>
{*{if $customer->group_id == 101}
<span class="cart_price_text">exkl. MwSt., zzgl. <a title="Versandkosten" href="/Versandkosten-B2B/">Versandkosten</a></span>
{else}
<span class="cart_price_text">inkl. MwSt., zzgl. <a title="Versandkosten" href="/versandkosten/">Versandkosten</a></span>
{/if}*}
<span class="cart_price_text">{$main_widget_shoppingcart.shoppingcart.price_tax_text|replace:'[tax]%':''}</span>
</div>
<div class="cart_button_wrapper">
<a title="Warenkorb Detailansicht" href="/Warenkorb/" id="cart_button_details">Warenkorb Detailansicht</a>
<a title="Bestellung abschließen" href="/Kasse/" id="cart_button_cashdesk">Bestellung abschlie&szlig;en</a>
</div>
{/if}
</div>
@@ -0,0 +1,24 @@
<div class="contentsearch23">
<div class="headercontentsearch23"><h2>Suche <i class="fa-solid fa-magnifying-glass"></i></h2></div>
<div class="searchcontainer23 search23">
<div class="searchwidgetwrapper23" >
<div class="formwidget23">
{if $template_text.main_widget_search.above_field_text}
<div class="above_field_text">{$template_text.main_widget_search.above_field_text}</div>
{/if}
<form action="/" method="post" name="easyshop_searchcontent">
<input type="text" class="lupe icon" name="search_item[search_item]" autocomplete="off" data-defaultv="{$template_text.main_widget_search.search_field_text}" value="{if isset($search_item)}{$search_item}{else}{$template_text.main_widget_search.search_field_text}{/if}" />
<input class="searchcontent_button" type="submit" value="{$template_text.default.search}" />
</form>
{if $template_text.main_widget_search.subsearch_field_text}
<div class="subsearch_field_text">{$template_text.main_widget_search.subsearch_field_text}</div>
{/if}
</div>
</div>
</div><br><br>
</div>
@@ -0,0 +1,36 @@
<div style="width:680px;z-index:9999;background:#ffffff;border:solid 1px #cccccc;">
{if $item_hits > 0}
<div class="items search_box" style="margin-bottom:10px;">
<h3 class="live_search_title">Artikel in den Warenkorb legen:</h3>
<div style="margin-left:5px;">
{if $item_search}
<table border="0" cellpadding="2" callspacing="2" style="width:670px;">
{foreach from=$item_search item=item}
<tr style="background:#dddddd;">
<td>
{$item->name} - Art-Nr.: {if $item->attribute_7 && $item->number != $item->attribute_7}{$item->attribute_7}&nbsp;&nbsp;&nbsp;({$template_text.item_details.old_item_number_title} {$item->number}){else}{$item->number}{/if}
<div id="cart_button_box" style="position:relative;">
<img style="position:absolute;top:7px;left:6px;" src="{$THEME_DIR}/media/images/widgets/shoppingcart_button_icon.png" />
<form method="post">
<input type="hidden" value="{$item->id}" name="item_id" />
<div style="position:absolute;left:50px;top:3px;text-align:center;">
<div class="graylabel">Anzahl</div>
<input class="amountbox" type="text" value="1" name="amount" />
</div>
<input class="cartbutton" type="submit" value="&gt;&gt; Jetzt kaufen" />
</form>
</div>
</td>
</tr>
{/foreach}
</table>
{else}
-
{/if}
</div>
</div>
{/if}
<div style="clear:left;"></div>
</div>
@@ -0,0 +1,7 @@
$smtemplate_config =
array(
'template_dir' => 'views/',
'compile_dir' => '../../lib/smarty/templates_c/',
'cache_dir' => '../../../lib/smarty/cache/',
'config_dir' => 'lib/smarty/config/',
);
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,242 @@
#geraetezuordnung-container {
height: 50vh;
border-radius: 5px;
background-color: #fff;
}
#geraetezuordnung-container .attributes_table h2 {
margin-left: 2%;
background-color: lightgrey;
padding-top: 5px;
padding-bottom: 5px;
}
.tba_container {
padding: 20px;
}
.tba_section {
margin-bottom: 20px;
border-radius: 8px;
background: #f9f9f9;
}
.tba_header {
font-size: 1em;
font-weight: bold;
margin-bottom: 2px;
padding: 10px 0;
}
.tba_header h4 {
margin: 2px;
}
.tba_grid_header, .tba_grid {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
padding: 10px 0;
}
.tba_grid_header {
font-weight: bold;
background: #e0e0e0;
padding: 10px 0;
border-radius: 5px;
}
.tba_col {
padding: 0.5px;
}
.tba_row_odd {
background: #ffffff;
}
.tba_row_even {
background: #f1f1f1;
}
/* .tba_attributes_container {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
gap: 10px;
} */
.tba_attribute_name {
font-weight: bold;
}
.tba_attribute_value {
color: #333;
}
.tba_attributes_container {
display: flex;
flex-wrap: wrap;
gap: 15px;
margin-bottom: 10px;
}
.tba_attribute {
display: flex;
gap: 8px;
align-items: center;
padding: 6px 12px;
border-radius: 5px;
border: 1px solid #ddd;
}
.tba_attribute_name {
font-weight: bold;
}
.tba_attribute_value {
color: #333;
}
.tba_match_container {
margin-top: 10px;
padding: 8px;
background: #eaeaea;
border-radius: 5px;
border: 1px solid #ccc;
}
.tba_match {
display: block;
margin-top: 5px;
font-size: 14px;
}
/*artikel CArd beschreibung */
.content_left {
background: #f1f1f1;
border-radius: 8px;
padding-left: 16px;
box-shadow: 0px 4px 6px rgba(0, 0, 0, 0.1);
border: 1px solid #ddd;
}
.content_left p {
color: #555;
line-height: 1.6;
}
.content_left a {
color: #007bff;
text-decoration: none;
}
.content_left a:hover {
text-decoration: underline;
}
.content_left iframe {
border-radius: 8px;
border: 1px solid #ccc;
box-shadow: 2px 2px 6px rgba(0, 0, 0, 0.1);
}
/*cartbutton */
#cart_button_box {
position: relative;
background: #cccccc;
border: 1px solid #555555;
height: 50px;
}
/* #cartbox-detail {
display: flex;
align-items: flex-end;
gap: 10px;
justify-content: flex-end;
}
*/
#cartbox-detail {
display: flex;
justify-content: space-between; /* Abstand zwischen Menge und Button */
align-items: center;
padding: 10px;
background: #fff;
border-top: 2px solid #ddd; /* Trennung optisch */
min-height: 60px; /* Höhe reservieren */
}
#cartbox-detail .amountbox {
width: 50px;
height: 35px;
border: 1px solid #ccc;
background: white;
color: black;
text-align: center;
font-size: 16px;
font-weight: bold;
border-radius: 4px; /* Leichte Abrundung */
}
#cartbox-detail .cartbutton {
flex-grow: 1; /* Lässt den Button den Rest des Platzes nutzen */
max-width: 250px;
height: 40px;
background: linear-gradient(to bottom, #d35400, #f26522);
border: none;
color: white;
font-size: 14px;
font-weight: bold;
text-align: center;
cursor: pointer;
border-radius: 4px; /* Abrundung */
transition: background 0.3s ease-in-out, transform 0.2s;
}
#cartbox-detail .cartbutton:hover {
background: linear-gradient(to bottom, #f26522, #d35400); /* Farbverlauf umkehren */
transform: scale(1.05); /* Leichter Hover-Effekt */
}
.content_box_textbox .content .text_box_hidden_text {
display: none;
}
.content_box_textbox .content .text_box_link_show_text {
display: inline;
}
.content_box_textbox .content .text_box_link_hide_text {
display: none;
}
/* Responisve Anpassung für kleinere Geräte */
@media screen and (max-width: 768px) {
.content_grid {
grid-template-columns: 1fr; /* Eine Spalte bei kleinen Bildschirmen */
}
.tba_grid_header, .tba_grid {
grid-template-columns: 1fr;
}
}
@@ -0,0 +1,10 @@
.main_widget_login_wrapper input[type="text"] {
padding-left: 6px;
padding-top: 4px;
}
.search_widget_wrapper .widget_content_wrapper input {
padding-left: 6px;
padding-top: 4px;
}
@@ -0,0 +1,165 @@
Fonticons, Inc. (https://fontawesome.com)
--------------------------------------------------------------------------------
Font Awesome Free License
Font Awesome Free is free, open source, and GPL friendly. You can use it for
commercial projects, open source projects, or really almost whatever you want.
Full Font Awesome Free license: https://fontawesome.com/license/free.
--------------------------------------------------------------------------------
# Icons: CC BY 4.0 License (https://creativecommons.org/licenses/by/4.0/)
The Font Awesome Free download is licensed under a Creative Commons
Attribution 4.0 International License and applies to all icons packaged
as SVG and JS file types.
--------------------------------------------------------------------------------
# Fonts: SIL OFL 1.1 License
In the Font Awesome Free download, the SIL OFL license applies to all icons
packaged as web and desktop font files.
Copyright (c) 2023 Fonticons, Inc. (https://fontawesome.com)
with Reserved Font Name: "Font Awesome".
This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is copied below, and is also available with a FAQ at:
http://scripts.sil.org/OFL
SIL OPEN FONT LICENSE
Version 1.1 - 26 February 2007
PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide
development of collaborative font projects, to support the font creation
efforts of academic and linguistic communities, and to provide a free and
open framework in which fonts may be shared and improved in partnership
with others.
The OFL allows the licensed fonts to be used, studied, modified and
redistributed freely as long as they are not sold by themselves. The
fonts, including any derivative works, can be bundled, embedded,
redistributed and/or sold with any software provided that any reserved
names are not used by derivative works. The fonts and derivatives,
however, cannot be released under any other type of license. The
requirement for fonts to remain under this license does not apply
to any document created using the fonts or their derivatives.
DEFINITIONS
"Font Software" refers to the set of files released by the Copyright
Holder(s) under this license and clearly marked as such. This may
include source files, build scripts and documentation.
"Reserved Font Name" refers to any names specified as such after the
copyright statement(s).
"Original Version" refers to the collection of Font Software components as
distributed by the Copyright Holder(s).
"Modified Version" refers to any derivative made by adding to, deleting,
or substituting — in part or in whole — any of the components of the
Original Version, by changing formats or by porting the Font Software to a
new environment.
"Author" refers to any designer, engineer, programmer, technical
writer or other person who contributed to the Font Software.
PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Font Software, to use, study, copy, merge, embed, modify,
redistribute, and sell modified and unmodified copies of the Font
Software, subject to the following conditions:
1) Neither the Font Software nor any of its individual components,
in Original or Modified Versions, may be sold by itself.
2) Original or Modified Versions of the Font Software may be bundled,
redistributed and/or sold with any software, provided that each copy
contains the above copyright notice and this license. These can be
included either as stand-alone text files, human-readable headers or
in the appropriate machine-readable metadata fields within text or
binary files as long as those fields can be easily viewed by the user.
3) No Modified Version of the Font Software may use the Reserved Font
Name(s) unless explicit written permission is granted by the corresponding
Copyright Holder. This restriction only applies to the primary font name as
presented to the users.
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
Software shall not be used to promote, endorse or advertise any
Modified Version, except to acknowledge the contribution(s) of the
Copyright Holder(s) and the Author(s) or with their explicit written
permission.
5) The Font Software, modified or unmodified, in part or in whole,
must be distributed entirely under this license, and must not be
distributed under any other license. The requirement for fonts to
remain under this license does not apply to any document created
using the Font Software.
TERMINATION
This license becomes null and void if any of the above conditions are
not met.
DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.
--------------------------------------------------------------------------------
# Code: MIT License (https://opensource.org/licenses/MIT)
In the Font Awesome Free download, the MIT license applies to all non-font and
non-icon files.
Copyright 2023 Fonticons, Inc.
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in the
Software without restriction, including without limitation the rights to use, copy,
modify, merge, publish, distribute, sublicense, and/or sell copies of the Software,
and to permit persons to whom the Software is furnished to do so, subject to the
following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
--------------------------------------------------------------------------------
# Attribution
Attribution is required by MIT, SIL OFL, and CC BY licenses. Downloaded Font
Awesome Free files already contain embedded comments with sufficient
attribution, so you shouldn't need to do anything additional when using these
files normally.
We've kept attribution comments terse, so we ask that you do not actively work
to remove them from files, especially code. They're a great way for folks to
learn about Font Awesome.
--------------------------------------------------------------------------------
# Brand Icons
All brand icons are trademarks of their respective owners. The use of these
trademarks does not indicate endorsement of the trademark holder by Font
Awesome, nor vice versa. **Please do not use brand logos for any purpose except
to represent the company, product, or service to which they refer.**
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
@@ -0,0 +1,19 @@
/*!
* Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
* Copyright 2023 Fonticons, Inc.
*/
:root, :host {
--fa-style-family-classic: 'Font Awesome 6 Free';
--fa-font-regular: normal 400 1em/1 'Font Awesome 6 Free'; }
@font-face {
font-family: 'Font Awesome 6 Free';
font-style: normal;
font-weight: 400;
font-display: block;
src: url("../webfonts/fa-regular-400.woff2") format("woff2"), url("../webfonts/fa-regular-400.ttf") format("truetype"); }
.far,
.fa-regular {
font-weight: 400; }
@@ -0,0 +1,6 @@
/*!
* Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
* Copyright 2023 Fonticons, Inc.
*/
:host,:root{--fa-style-family-classic:"Font Awesome 6 Free";--fa-font-regular:normal 400 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype")}.fa-regular,.far{font-weight:400}
@@ -0,0 +1,19 @@
/*!
* Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
* Copyright 2023 Fonticons, Inc.
*/
:root, :host {
--fa-style-family-classic: 'Font Awesome 6 Free';
--fa-font-solid: normal 900 1em/1 'Font Awesome 6 Free'; }
@font-face {
font-family: 'Font Awesome 6 Free';
font-style: normal;
font-weight: 900;
font-display: block;
src: url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.ttf") format("truetype"); }
.fas,
.fa-solid {
font-weight: 900; }
@@ -0,0 +1,6 @@
/*!
* Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
* Copyright 2023 Fonticons, Inc.
*/
:host,:root{--fa-style-family-classic:"Font Awesome 6 Free";--fa-font-solid:normal 900 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:900;font-display:block;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}.fa-solid,.fas{font-weight:900}
@@ -0,0 +1,639 @@
/*!
* Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
* Copyright 2023 Fonticons, Inc.
*/
:root, :host {
--fa-font-solid: normal 900 1em/1 'Font Awesome 6 Solid';
--fa-font-regular: normal 400 1em/1 'Font Awesome 6 Regular';
--fa-font-light: normal 300 1em/1 'Font Awesome 6 Light';
--fa-font-thin: normal 100 1em/1 'Font Awesome 6 Thin';
--fa-font-duotone: normal 900 1em/1 'Font Awesome 6 Duotone';
--fa-font-sharp-solid: normal 900 1em/1 'Font Awesome 6 Sharp';
--fa-font-sharp-regular: normal 400 1em/1 'Font Awesome 6 Sharp';
--fa-font-sharp-light: normal 300 1em/1 'Font Awesome 6 Sharp';
--fa-font-brands: normal 400 1em/1 'Font Awesome 6 Brands'; }
svg:not(:root).svg-inline--fa, svg:not(:host).svg-inline--fa {
overflow: visible;
box-sizing: content-box; }
.svg-inline--fa {
display: var(--fa-display, inline-block);
height: 1em;
overflow: visible;
vertical-align: -.125em; }
.svg-inline--fa.fa-2xs {
vertical-align: 0.1em; }
.svg-inline--fa.fa-xs {
vertical-align: 0em; }
.svg-inline--fa.fa-sm {
vertical-align: -0.07143em; }
.svg-inline--fa.fa-lg {
vertical-align: -0.2em; }
.svg-inline--fa.fa-xl {
vertical-align: -0.25em; }
.svg-inline--fa.fa-2xl {
vertical-align: -0.3125em; }
.svg-inline--fa.fa-pull-left {
margin-right: var(--fa-pull-margin, 0.3em);
width: auto; }
.svg-inline--fa.fa-pull-right {
margin-left: var(--fa-pull-margin, 0.3em);
width: auto; }
.svg-inline--fa.fa-li {
width: var(--fa-li-width, 2em);
top: 0.25em; }
.svg-inline--fa.fa-fw {
width: var(--fa-fw-width, 1.25em); }
.fa-layers svg.svg-inline--fa {
bottom: 0;
left: 0;
margin: auto;
position: absolute;
right: 0;
top: 0; }
.fa-layers-text, .fa-layers-counter {
display: inline-block;
position: absolute;
text-align: center; }
.fa-layers {
display: inline-block;
height: 1em;
position: relative;
text-align: center;
vertical-align: -.125em;
width: 1em; }
.fa-layers svg.svg-inline--fa {
-webkit-transform-origin: center center;
transform-origin: center center; }
.fa-layers-text {
left: 50%;
top: 50%;
-webkit-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
-webkit-transform-origin: center center;
transform-origin: center center; }
.fa-layers-counter {
background-color: var(--fa-counter-background-color, #ff253a);
border-radius: var(--fa-counter-border-radius, 1em);
box-sizing: border-box;
color: var(--fa-inverse, #fff);
line-height: var(--fa-counter-line-height, 1);
max-width: var(--fa-counter-max-width, 5em);
min-width: var(--fa-counter-min-width, 1.5em);
overflow: hidden;
padding: var(--fa-counter-padding, 0.25em 0.5em);
right: var(--fa-right, 0);
text-overflow: ellipsis;
top: var(--fa-top, 0);
-webkit-transform: scale(var(--fa-counter-scale, 0.25));
transform: scale(var(--fa-counter-scale, 0.25));
-webkit-transform-origin: top right;
transform-origin: top right; }
.fa-layers-bottom-right {
bottom: var(--fa-bottom, 0);
right: var(--fa-right, 0);
top: auto;
-webkit-transform: scale(var(--fa-layers-scale, 0.25));
transform: scale(var(--fa-layers-scale, 0.25));
-webkit-transform-origin: bottom right;
transform-origin: bottom right; }
.fa-layers-bottom-left {
bottom: var(--fa-bottom, 0);
left: var(--fa-left, 0);
right: auto;
top: auto;
-webkit-transform: scale(var(--fa-layers-scale, 0.25));
transform: scale(var(--fa-layers-scale, 0.25));
-webkit-transform-origin: bottom left;
transform-origin: bottom left; }
.fa-layers-top-right {
top: var(--fa-top, 0);
right: var(--fa-right, 0);
-webkit-transform: scale(var(--fa-layers-scale, 0.25));
transform: scale(var(--fa-layers-scale, 0.25));
-webkit-transform-origin: top right;
transform-origin: top right; }
.fa-layers-top-left {
left: var(--fa-left, 0);
right: auto;
top: var(--fa-top, 0);
-webkit-transform: scale(var(--fa-layers-scale, 0.25));
transform: scale(var(--fa-layers-scale, 0.25));
-webkit-transform-origin: top left;
transform-origin: top left; }
.fa-1x {
font-size: 1em; }
.fa-2x {
font-size: 2em; }
.fa-3x {
font-size: 3em; }
.fa-4x {
font-size: 4em; }
.fa-5x {
font-size: 5em; }
.fa-6x {
font-size: 6em; }
.fa-7x {
font-size: 7em; }
.fa-8x {
font-size: 8em; }
.fa-9x {
font-size: 9em; }
.fa-10x {
font-size: 10em; }
.fa-2xs {
font-size: 0.625em;
line-height: 0.1em;
vertical-align: 0.225em; }
.fa-xs {
font-size: 0.75em;
line-height: 0.08333em;
vertical-align: 0.125em; }
.fa-sm {
font-size: 0.875em;
line-height: 0.07143em;
vertical-align: 0.05357em; }
.fa-lg {
font-size: 1.25em;
line-height: 0.05em;
vertical-align: -0.075em; }
.fa-xl {
font-size: 1.5em;
line-height: 0.04167em;
vertical-align: -0.125em; }
.fa-2xl {
font-size: 2em;
line-height: 0.03125em;
vertical-align: -0.1875em; }
.fa-fw {
text-align: center;
width: 1.25em; }
.fa-ul {
list-style-type: none;
margin-left: var(--fa-li-margin, 2.5em);
padding-left: 0; }
.fa-ul > li {
position: relative; }
.fa-li {
left: calc(var(--fa-li-width, 2em) * -1);
position: absolute;
text-align: center;
width: var(--fa-li-width, 2em);
line-height: inherit; }
.fa-border {
border-color: var(--fa-border-color, #eee);
border-radius: var(--fa-border-radius, 0.1em);
border-style: var(--fa-border-style, solid);
border-width: var(--fa-border-width, 0.08em);
padding: var(--fa-border-padding, 0.2em 0.25em 0.15em); }
.fa-pull-left {
float: left;
margin-right: var(--fa-pull-margin, 0.3em); }
.fa-pull-right {
float: right;
margin-left: var(--fa-pull-margin, 0.3em); }
.fa-beat {
-webkit-animation-name: fa-beat;
animation-name: fa-beat;
-webkit-animation-delay: var(--fa-animation-delay, 0s);
animation-delay: var(--fa-animation-delay, 0s);
-webkit-animation-direction: var(--fa-animation-direction, normal);
animation-direction: var(--fa-animation-direction, normal);
-webkit-animation-duration: var(--fa-animation-duration, 1s);
animation-duration: var(--fa-animation-duration, 1s);
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
-webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);
animation-timing-function: var(--fa-animation-timing, ease-in-out); }
.fa-bounce {
-webkit-animation-name: fa-bounce;
animation-name: fa-bounce;
-webkit-animation-delay: var(--fa-animation-delay, 0s);
animation-delay: var(--fa-animation-delay, 0s);
-webkit-animation-direction: var(--fa-animation-direction, normal);
animation-direction: var(--fa-animation-direction, normal);
-webkit-animation-duration: var(--fa-animation-duration, 1s);
animation-duration: var(--fa-animation-duration, 1s);
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
-webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));
animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1)); }
.fa-fade {
-webkit-animation-name: fa-fade;
animation-name: fa-fade;
-webkit-animation-delay: var(--fa-animation-delay, 0s);
animation-delay: var(--fa-animation-delay, 0s);
-webkit-animation-direction: var(--fa-animation-direction, normal);
animation-direction: var(--fa-animation-direction, normal);
-webkit-animation-duration: var(--fa-animation-duration, 1s);
animation-duration: var(--fa-animation-duration, 1s);
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
-webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));
animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); }
.fa-beat-fade {
-webkit-animation-name: fa-beat-fade;
animation-name: fa-beat-fade;
-webkit-animation-delay: var(--fa-animation-delay, 0s);
animation-delay: var(--fa-animation-delay, 0s);
-webkit-animation-direction: var(--fa-animation-direction, normal);
animation-direction: var(--fa-animation-direction, normal);
-webkit-animation-duration: var(--fa-animation-duration, 1s);
animation-duration: var(--fa-animation-duration, 1s);
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
-webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));
animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); }
.fa-flip {
-webkit-animation-name: fa-flip;
animation-name: fa-flip;
-webkit-animation-delay: var(--fa-animation-delay, 0s);
animation-delay: var(--fa-animation-delay, 0s);
-webkit-animation-direction: var(--fa-animation-direction, normal);
animation-direction: var(--fa-animation-direction, normal);
-webkit-animation-duration: var(--fa-animation-duration, 1s);
animation-duration: var(--fa-animation-duration, 1s);
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
-webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);
animation-timing-function: var(--fa-animation-timing, ease-in-out); }
.fa-shake {
-webkit-animation-name: fa-shake;
animation-name: fa-shake;
-webkit-animation-delay: var(--fa-animation-delay, 0s);
animation-delay: var(--fa-animation-delay, 0s);
-webkit-animation-direction: var(--fa-animation-direction, normal);
animation-direction: var(--fa-animation-direction, normal);
-webkit-animation-duration: var(--fa-animation-duration, 1s);
animation-duration: var(--fa-animation-duration, 1s);
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
-webkit-animation-timing-function: var(--fa-animation-timing, linear);
animation-timing-function: var(--fa-animation-timing, linear); }
.fa-spin {
-webkit-animation-name: fa-spin;
animation-name: fa-spin;
-webkit-animation-delay: var(--fa-animation-delay, 0s);
animation-delay: var(--fa-animation-delay, 0s);
-webkit-animation-direction: var(--fa-animation-direction, normal);
animation-direction: var(--fa-animation-direction, normal);
-webkit-animation-duration: var(--fa-animation-duration, 2s);
animation-duration: var(--fa-animation-duration, 2s);
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
-webkit-animation-timing-function: var(--fa-animation-timing, linear);
animation-timing-function: var(--fa-animation-timing, linear); }
.fa-spin-reverse {
--fa-animation-direction: reverse; }
.fa-pulse,
.fa-spin-pulse {
-webkit-animation-name: fa-spin;
animation-name: fa-spin;
-webkit-animation-direction: var(--fa-animation-direction, normal);
animation-direction: var(--fa-animation-direction, normal);
-webkit-animation-duration: var(--fa-animation-duration, 1s);
animation-duration: var(--fa-animation-duration, 1s);
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
-webkit-animation-timing-function: var(--fa-animation-timing, steps(8));
animation-timing-function: var(--fa-animation-timing, steps(8)); }
@media (prefers-reduced-motion: reduce) {
.fa-beat,
.fa-bounce,
.fa-fade,
.fa-beat-fade,
.fa-flip,
.fa-pulse,
.fa-shake,
.fa-spin,
.fa-spin-pulse {
-webkit-animation-delay: -1ms;
animation-delay: -1ms;
-webkit-animation-duration: 1ms;
animation-duration: 1ms;
-webkit-animation-iteration-count: 1;
animation-iteration-count: 1;
-webkit-transition-delay: 0s;
transition-delay: 0s;
-webkit-transition-duration: 0s;
transition-duration: 0s; } }
@-webkit-keyframes fa-beat {
0%, 90% {
-webkit-transform: scale(1);
transform: scale(1); }
45% {
-webkit-transform: scale(var(--fa-beat-scale, 1.25));
transform: scale(var(--fa-beat-scale, 1.25)); } }
@keyframes fa-beat {
0%, 90% {
-webkit-transform: scale(1);
transform: scale(1); }
45% {
-webkit-transform: scale(var(--fa-beat-scale, 1.25));
transform: scale(var(--fa-beat-scale, 1.25)); } }
@-webkit-keyframes fa-bounce {
0% {
-webkit-transform: scale(1, 1) translateY(0);
transform: scale(1, 1) translateY(0); }
10% {
-webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);
transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); }
30% {
-webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));
transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); }
50% {
-webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);
transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); }
57% {
-webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));
transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); }
64% {
-webkit-transform: scale(1, 1) translateY(0);
transform: scale(1, 1) translateY(0); }
100% {
-webkit-transform: scale(1, 1) translateY(0);
transform: scale(1, 1) translateY(0); } }
@keyframes fa-bounce {
0% {
-webkit-transform: scale(1, 1) translateY(0);
transform: scale(1, 1) translateY(0); }
10% {
-webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);
transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); }
30% {
-webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));
transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); }
50% {
-webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);
transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); }
57% {
-webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));
transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); }
64% {
-webkit-transform: scale(1, 1) translateY(0);
transform: scale(1, 1) translateY(0); }
100% {
-webkit-transform: scale(1, 1) translateY(0);
transform: scale(1, 1) translateY(0); } }
@-webkit-keyframes fa-fade {
50% {
opacity: var(--fa-fade-opacity, 0.4); } }
@keyframes fa-fade {
50% {
opacity: var(--fa-fade-opacity, 0.4); } }
@-webkit-keyframes fa-beat-fade {
0%, 100% {
opacity: var(--fa-beat-fade-opacity, 0.4);
-webkit-transform: scale(1);
transform: scale(1); }
50% {
opacity: 1;
-webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));
transform: scale(var(--fa-beat-fade-scale, 1.125)); } }
@keyframes fa-beat-fade {
0%, 100% {
opacity: var(--fa-beat-fade-opacity, 0.4);
-webkit-transform: scale(1);
transform: scale(1); }
50% {
opacity: 1;
-webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));
transform: scale(var(--fa-beat-fade-scale, 1.125)); } }
@-webkit-keyframes fa-flip {
50% {
-webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));
transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); } }
@keyframes fa-flip {
50% {
-webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));
transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); } }
@-webkit-keyframes fa-shake {
0% {
-webkit-transform: rotate(-15deg);
transform: rotate(-15deg); }
4% {
-webkit-transform: rotate(15deg);
transform: rotate(15deg); }
8%, 24% {
-webkit-transform: rotate(-18deg);
transform: rotate(-18deg); }
12%, 28% {
-webkit-transform: rotate(18deg);
transform: rotate(18deg); }
16% {
-webkit-transform: rotate(-22deg);
transform: rotate(-22deg); }
20% {
-webkit-transform: rotate(22deg);
transform: rotate(22deg); }
32% {
-webkit-transform: rotate(-12deg);
transform: rotate(-12deg); }
36% {
-webkit-transform: rotate(12deg);
transform: rotate(12deg); }
40%, 100% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg); } }
@keyframes fa-shake {
0% {
-webkit-transform: rotate(-15deg);
transform: rotate(-15deg); }
4% {
-webkit-transform: rotate(15deg);
transform: rotate(15deg); }
8%, 24% {
-webkit-transform: rotate(-18deg);
transform: rotate(-18deg); }
12%, 28% {
-webkit-transform: rotate(18deg);
transform: rotate(18deg); }
16% {
-webkit-transform: rotate(-22deg);
transform: rotate(-22deg); }
20% {
-webkit-transform: rotate(22deg);
transform: rotate(22deg); }
32% {
-webkit-transform: rotate(-12deg);
transform: rotate(-12deg); }
36% {
-webkit-transform: rotate(12deg);
transform: rotate(12deg); }
40%, 100% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg); } }
@-webkit-keyframes fa-spin {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg); }
100% {
-webkit-transform: rotate(360deg);
transform: rotate(360deg); } }
@keyframes fa-spin {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg); }
100% {
-webkit-transform: rotate(360deg);
transform: rotate(360deg); } }
.fa-rotate-90 {
-webkit-transform: rotate(90deg);
transform: rotate(90deg); }
.fa-rotate-180 {
-webkit-transform: rotate(180deg);
transform: rotate(180deg); }
.fa-rotate-270 {
-webkit-transform: rotate(270deg);
transform: rotate(270deg); }
.fa-flip-horizontal {
-webkit-transform: scale(-1, 1);
transform: scale(-1, 1); }
.fa-flip-vertical {
-webkit-transform: scale(1, -1);
transform: scale(1, -1); }
.fa-flip-both,
.fa-flip-horizontal.fa-flip-vertical {
-webkit-transform: scale(-1, -1);
transform: scale(-1, -1); }
.fa-rotate-by {
-webkit-transform: rotate(var(--fa-rotate-angle, none));
transform: rotate(var(--fa-rotate-angle, none)); }
.fa-stack {
display: inline-block;
vertical-align: middle;
height: 2em;
position: relative;
width: 2.5em; }
.fa-stack-1x,
.fa-stack-2x {
bottom: 0;
left: 0;
margin: auto;
position: absolute;
right: 0;
top: 0;
z-index: var(--fa-stack-z-index, auto); }
.svg-inline--fa.fa-stack-1x {
height: 1em;
width: 1.25em; }
.svg-inline--fa.fa-stack-2x {
height: 2em;
width: 2.5em; }
.fa-inverse {
color: var(--fa-inverse, #fff); }
.sr-only,
.fa-sr-only {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap;
border-width: 0; }
.sr-only-focusable:not(:focus),
.fa-sr-only-focusable:not(:focus) {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap;
border-width: 0; }
.svg-inline--fa .fa-primary {
fill: var(--fa-primary-color, currentColor);
opacity: var(--fa-primary-opacity, 1); }
.svg-inline--fa .fa-secondary {
fill: var(--fa-secondary-color, currentColor);
opacity: var(--fa-secondary-opacity, 0.4); }
.svg-inline--fa.fa-swap-opacity .fa-primary {
opacity: var(--fa-secondary-opacity, 0.4); }
.svg-inline--fa.fa-swap-opacity .fa-secondary {
opacity: var(--fa-primary-opacity, 1); }
.svg-inline--fa mask .fa-primary,
.svg-inline--fa mask .fa-secondary {
fill: black; }
.fad.fa-inverse,
.fa-duotone.fa-inverse {
color: var(--fa-inverse, #fff); }
File diff suppressed because one or more lines are too long
@@ -0,0 +1,26 @@
/*!
* Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
* Copyright 2023 Fonticons, Inc.
*/
@font-face {
font-family: 'FontAwesome';
font-display: block;
src: url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.ttf") format("truetype"); }
@font-face {
font-family: 'FontAwesome';
font-display: block;
src: url("../webfonts/fa-brands-400.woff2") format("woff2"), url("../webfonts/fa-brands-400.ttf") format("truetype"); }
@font-face {
font-family: 'FontAwesome';
font-display: block;
src: url("../webfonts/fa-regular-400.woff2") format("woff2"), url("../webfonts/fa-regular-400.ttf") format("truetype");
unicode-range: U+F003,U+F006,U+F014,U+F016-F017,U+F01A-F01B,U+F01D,U+F022,U+F03E,U+F044,U+F046,U+F05C-F05D,U+F06E,U+F070,U+F087-F088,U+F08A,U+F094,U+F096-F097,U+F09D,U+F0A0,U+F0A2,U+F0A4-F0A7,U+F0C5,U+F0C7,U+F0E5-F0E6,U+F0EB,U+F0F6-F0F8,U+F10C,U+F114-F115,U+F118-F11A,U+F11C-F11D,U+F133,U+F147,U+F14E,U+F150-F152,U+F185-F186,U+F18E,U+F190-F192,U+F196,U+F1C1-F1C9,U+F1D9,U+F1DB,U+F1E3,U+F1EA,U+F1F7,U+F1F9,U+F20A,U+F247-F248,U+F24A,U+F24D,U+F255-F25B,U+F25D,U+F271-F274,U+F278,U+F27B,U+F28C,U+F28E,U+F29C,U+F2B5,U+F2B7,U+F2BA,U+F2BC,U+F2BE,U+F2C0-F2C1,U+F2C3,U+F2D0,U+F2D2,U+F2D4,U+F2DC; }
@font-face {
font-family: 'FontAwesome';
font-display: block;
src: url("../webfonts/fa-v4compatibility.woff2") format("woff2"), url("../webfonts/fa-v4compatibility.ttf") format("truetype");
unicode-range: U+F041,U+F047,U+F065-F066,U+F07D-F07E,U+F080,U+F08B,U+F08E,U+F090,U+F09A,U+F0AC,U+F0AE,U+F0B2,U+F0D0,U+F0D6,U+F0E4,U+F0EC,U+F10A-F10B,U+F123,U+F13E,U+F148-F149,U+F14C,U+F156,U+F15E,U+F160-F161,U+F163,U+F175-F178,U+F195,U+F1F8,U+F219,U+F27A; }
@@ -0,0 +1,6 @@
/*!
* Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
* Copyright 2023 Fonticons, Inc.
*/
@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.ttf) format("truetype")}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype");unicode-range:u+f003,u+f006,u+f014,u+f016-f017,u+f01a-f01b,u+f01d,u+f022,u+f03e,u+f044,u+f046,u+f05c-f05d,u+f06e,u+f070,u+f087-f088,u+f08a,u+f094,u+f096-f097,u+f09d,u+f0a0,u+f0a2,u+f0a4-f0a7,u+f0c5,u+f0c7,u+f0e5-f0e6,u+f0eb,u+f0f6-f0f8,u+f10c,u+f114-f115,u+f118-f11a,u+f11c-f11d,u+f133,u+f147,u+f14e,u+f150-f152,u+f185-f186,u+f18e,u+f190-f192,u+f196,u+f1c1-f1c9,u+f1d9,u+f1db,u+f1e3,u+f1ea,u+f1f7,u+f1f9,u+f20a,u+f247-f248,u+f24a,u+f24d,u+f255-f25b,u+f25d,u+f271-f274,u+f278,u+f27b,u+f28c,u+f28e,u+f29c,u+f2b5,u+f2b7,u+f2ba,u+f2bc,u+f2be,u+f2c0-f2c1,u+f2c3,u+f2d0,u+f2d2,u+f2d4,u+f2dc}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-v4compatibility.woff2) format("woff2"),url(../webfonts/fa-v4compatibility.ttf) format("truetype");unicode-range:u+f041,u+f047,u+f065-f066,u+f07d-f07e,u+f080,u+f08b,u+f08e,u+f090,u+f09a,u+f0ac,u+f0ae,u+f0b2,u+f0d0,u+f0d6,u+f0e4,u+f0ec,u+f10a-f10b,u+f123,u+f13e,u+f148-f149,u+f14c,u+f156,u+f15e,u+f160-f161,u+f163,u+f175-f178,u+f195,u+f1f8,u+f219,u+f27a}
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
@@ -0,0 +1,22 @@
/*!
* Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
* Copyright 2023 Fonticons, Inc.
*/
@font-face {
font-family: 'Font Awesome 5 Brands';
font-display: block;
font-weight: 400;
src: url("../webfonts/fa-brands-400.woff2") format("woff2"), url("../webfonts/fa-brands-400.ttf") format("truetype"); }
@font-face {
font-family: 'Font Awesome 5 Free';
font-display: block;
font-weight: 900;
src: url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.ttf") format("truetype"); }
@font-face {
font-family: 'Font Awesome 5 Free';
font-display: block;
font-weight: 400;
src: url("../webfonts/fa-regular-400.woff2") format("woff2"), url("../webfonts/fa-regular-400.ttf") format("truetype"); }
@@ -0,0 +1,6 @@
/*!
* Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
* Copyright 2023 Fonticons, Inc.
*/
@font-face{font-family:"Font Awesome 5 Brands";font-display:block;font-weight:400;src:url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.ttf) format("truetype")}@font-face{font-family:"Font Awesome 5 Free";font-display:block;font-weight:900;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}@font-face{font-family:"Font Awesome 5 Free";font-display:block;font-weight:400;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype")}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,445 @@
/*!
* Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
* Copyright 2023 Fonticons, Inc.
*/
(function () {
'use strict';
var _WINDOW = {};
var _DOCUMENT = {};
try {
if (typeof window !== 'undefined') _WINDOW = window;
if (typeof document !== 'undefined') _DOCUMENT = document;
} catch (e) {}
var _ref = _WINDOW.navigator || {},
_ref$userAgent = _ref.userAgent,
userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent;
var WINDOW = _WINDOW;
var DOCUMENT = _DOCUMENT;
var IS_BROWSER = !!WINDOW.document;
var IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function';
var IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/');
function ownKeys(object, enumerableOnly) {
var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
enumerableOnly && (symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
})), keys.push.apply(keys, symbols);
}
return keys;
}
function _objectSpread2(target) {
for (var i = 1; i < arguments.length; i++) {
var source = null != arguments[i] ? arguments[i] : {};
i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {
_defineProperty(target, key, source[key]);
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
return target;
}
function _defineProperty(obj, key, value) {
if (key in obj) {
Object.defineProperty(obj, key, {
value: value,
enumerable: true,
configurable: true,
writable: true
});
} else {
obj[key] = value;
}
return obj;
}
function _toConsumableArray(arr) {
return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
}
function _arrayWithoutHoles(arr) {
if (Array.isArray(arr)) return _arrayLikeToArray(arr);
}
function _iterableToArray(iter) {
if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
}
function _unsupportedIterableToArray(o, minLen) {
if (!o) return;
if (typeof o === "string") return _arrayLikeToArray(o, minLen);
var n = Object.prototype.toString.call(o).slice(8, -1);
if (n === "Object" && o.constructor) n = o.constructor.name;
if (n === "Map" || n === "Set") return Array.from(o);
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
}
function _arrayLikeToArray(arr, len) {
if (len == null || len > arr.length) len = arr.length;
for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
return arr2;
}
function _nonIterableSpread() {
throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
}
var _familyProxy, _familyProxy2, _familyProxy3, _familyProxy4, _familyProxy5;
var NAMESPACE_IDENTIFIER = '___FONT_AWESOME___';
var PRODUCTION = function () {
try {
return "production" === 'production';
} catch (e) {
return false;
}
}();
var FAMILY_CLASSIC = 'classic';
var FAMILY_SHARP = 'sharp';
var FAMILIES = [FAMILY_CLASSIC, FAMILY_SHARP];
function familyProxy(obj) {
// Defaults to the classic family if family is not available
return new Proxy(obj, {
get: function get(target, prop) {
return prop in target ? target[prop] : target[FAMILY_CLASSIC];
}
});
}
var PREFIX_TO_STYLE = familyProxy((_familyProxy = {}, _defineProperty(_familyProxy, FAMILY_CLASSIC, {
'fa': 'solid',
'fas': 'solid',
'fa-solid': 'solid',
'far': 'regular',
'fa-regular': 'regular',
'fal': 'light',
'fa-light': 'light',
'fat': 'thin',
'fa-thin': 'thin',
'fad': 'duotone',
'fa-duotone': 'duotone',
'fab': 'brands',
'fa-brands': 'brands',
'fak': 'kit',
'fa-kit': 'kit'
}), _defineProperty(_familyProxy, FAMILY_SHARP, {
'fa': 'solid',
'fass': 'solid',
'fa-solid': 'solid',
'fasr': 'regular',
'fa-regular': 'regular',
'fasl': 'light',
'fa-light': 'light'
}), _familyProxy));
var STYLE_TO_PREFIX = familyProxy((_familyProxy2 = {}, _defineProperty(_familyProxy2, FAMILY_CLASSIC, {
'solid': 'fas',
'regular': 'far',
'light': 'fal',
'thin': 'fat',
'duotone': 'fad',
'brands': 'fab',
'kit': 'fak'
}), _defineProperty(_familyProxy2, FAMILY_SHARP, {
'solid': 'fass',
'regular': 'fasr',
'light': 'fasl'
}), _familyProxy2));
var PREFIX_TO_LONG_STYLE = familyProxy((_familyProxy3 = {}, _defineProperty(_familyProxy3, FAMILY_CLASSIC, {
'fab': 'fa-brands',
'fad': 'fa-duotone',
'fak': 'fa-kit',
'fal': 'fa-light',
'far': 'fa-regular',
'fas': 'fa-solid',
'fat': 'fa-thin'
}), _defineProperty(_familyProxy3, FAMILY_SHARP, {
'fass': 'fa-solid',
'fasr': 'fa-regular',
'fasl': 'fa-light'
}), _familyProxy3));
var LONG_STYLE_TO_PREFIX = familyProxy((_familyProxy4 = {}, _defineProperty(_familyProxy4, FAMILY_CLASSIC, {
'fa-brands': 'fab',
'fa-duotone': 'fad',
'fa-kit': 'fak',
'fa-light': 'fal',
'fa-regular': 'far',
'fa-solid': 'fas',
'fa-thin': 'fat'
}), _defineProperty(_familyProxy4, FAMILY_SHARP, {
'fa-solid': 'fass',
'fa-regular': 'fasr',
'fa-light': 'fasl'
}), _familyProxy4));
var FONT_WEIGHT_TO_PREFIX = familyProxy((_familyProxy5 = {}, _defineProperty(_familyProxy5, FAMILY_CLASSIC, {
'900': 'fas',
'400': 'far',
'normal': 'far',
'300': 'fal',
'100': 'fat'
}), _defineProperty(_familyProxy5, FAMILY_SHARP, {
'900': 'fass',
'400': 'fasr',
'300': 'fasl'
}), _familyProxy5));
var oneToTen = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
var oneToTwenty = oneToTen.concat([11, 12, 13, 14, 15, 16, 17, 18, 19, 20]);
var DUOTONE_CLASSES = {
GROUP: 'duotone-group',
SWAP_OPACITY: 'swap-opacity',
PRIMARY: 'primary',
SECONDARY: 'secondary'
};
var prefixes = new Set();
Object.keys(STYLE_TO_PREFIX[FAMILY_CLASSIC]).map(prefixes.add.bind(prefixes));
Object.keys(STYLE_TO_PREFIX[FAMILY_SHARP]).map(prefixes.add.bind(prefixes));
var RESERVED_CLASSES = [].concat(FAMILIES, _toConsumableArray(prefixes), ['2xs', 'xs', 'sm', 'lg', 'xl', '2xl', 'beat', 'border', 'fade', 'beat-fade', 'bounce', 'flip-both', 'flip-horizontal', 'flip-vertical', 'flip', 'fw', 'inverse', 'layers-counter', 'layers-text', 'layers', 'li', 'pull-left', 'pull-right', 'pulse', 'rotate-180', 'rotate-270', 'rotate-90', 'rotate-by', 'shake', 'spin-pulse', 'spin-reverse', 'spin', 'stack-1x', 'stack-2x', 'stack', 'ul', DUOTONE_CLASSES.GROUP, DUOTONE_CLASSES.SWAP_OPACITY, DUOTONE_CLASSES.PRIMARY, DUOTONE_CLASSES.SECONDARY]).concat(oneToTen.map(function (n) {
return "".concat(n, "x");
})).concat(oneToTwenty.map(function (n) {
return "w-".concat(n);
}));
function bunker(fn) {
try {
for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
args[_key - 1] = arguments[_key];
}
fn.apply(void 0, args);
} catch (e) {
if (!PRODUCTION) {
throw e;
}
}
}
var w = WINDOW || {};
if (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {};
if (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {};
if (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {};
if (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = [];
var namespace = w[NAMESPACE_IDENTIFIER];
function normalizeIcons(icons) {
return Object.keys(icons).reduce(function (acc, iconName) {
var icon = icons[iconName];
var expanded = !!icon.icon;
if (expanded) {
acc[icon.iconName] = icon.icon;
} else {
acc[iconName] = icon;
}
return acc;
}, {});
}
function defineIcons(prefix, icons) {
var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
var _params$skipHooks = params.skipHooks,
skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks;
var normalized = normalizeIcons(icons);
if (typeof namespace.hooks.addPack === 'function' && !skipHooks) {
namespace.hooks.addPack(prefix, normalizeIcons(icons));
} else {
namespace.styles[prefix] = _objectSpread2(_objectSpread2({}, namespace.styles[prefix] || {}), normalized);
}
/**
* Font Awesome 4 used the prefix of `fa` for all icons. With the introduction
* of new styles we needed to differentiate between them. Prefix `fa` is now an alias
* for `fas` so we'll ease the upgrade process for our users by automatically defining
* this as well.
*/
if (prefix === 'fas') {
defineIcons('fa', icons);
}
}
var icons = {
"trash-can": [448, 512, [61460, "trash-alt"], "f2ed", "M170.5 51.6L151.5 80h145l-19-28.4c-1.5-2.2-4-3.6-6.7-3.6H177.1c-2.7 0-5.2 1.3-6.7 3.6zm147-26.6L354.2 80H368h48 8c13.3 0 24 10.7 24 24s-10.7 24-24 24h-8V432c0 44.2-35.8 80-80 80H112c-44.2 0-80-35.8-80-80V128H24c-13.3 0-24-10.7-24-24S10.7 80 24 80h8H80 93.8l36.7-55.1C140.9 9.4 158.4 0 177.1 0h93.7c18.7 0 36.2 9.4 46.6 24.9zM80 128V432c0 17.7 14.3 32 32 32H336c17.7 0 32-14.3 32-32V128H80zm80 64V400c0 8.8-7.2 16-16 16s-16-7.2-16-16V192c0-8.8 7.2-16 16-16s16 7.2 16 16zm80 0V400c0 8.8-7.2 16-16 16s-16-7.2-16-16V192c0-8.8 7.2-16 16-16s16 7.2 16 16zm80 0V400c0 8.8-7.2 16-16 16s-16-7.2-16-16V192c0-8.8 7.2-16 16-16s16 7.2 16 16z"],
"message": [512, 512, ["comment-alt"], "f27a", "M160 368c26.5 0 48 21.5 48 48v16l72.5-54.4c8.3-6.2 18.4-9.6 28.8-9.6H448c8.8 0 16-7.2 16-16V64c0-8.8-7.2-16-16-16H64c-8.8 0-16 7.2-16 16V352c0 8.8 7.2 16 16 16h96zm48 124l-.2 .2-5.1 3.8-17.1 12.8c-4.8 3.6-11.3 4.2-16.8 1.5s-8.8-8.2-8.8-14.3V474.7v-6.4V468v-4V416H112 64c-35.3 0-64-28.7-64-64V64C0 28.7 28.7 0 64 0H448c35.3 0 64 28.7 64 64V352c0 35.3-28.7 64-64 64H309.3L208 492z"],
"file-lines": [384, 512, [128441, 128462, 61686, "file-alt", "file-text"], "f15c", "M64 464c-8.8 0-16-7.2-16-16V64c0-8.8 7.2-16 16-16H224v80c0 17.7 14.3 32 32 32h80V448c0 8.8-7.2 16-16 16H64zM64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V154.5c0-17-6.7-33.3-18.7-45.3L274.7 18.7C262.7 6.7 246.5 0 229.5 0H64zm56 256c-13.3 0-24 10.7-24 24s10.7 24 24 24H264c13.3 0 24-10.7 24-24s-10.7-24-24-24H120zm0 96c-13.3 0-24 10.7-24 24s10.7 24 24 24H264c13.3 0 24-10.7 24-24s-10.7-24-24-24H120z"],
"calendar-days": [448, 512, ["calendar-alt"], "f073", "M152 24c0-13.3-10.7-24-24-24s-24 10.7-24 24V64H64C28.7 64 0 92.7 0 128v16 48V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V192 144 128c0-35.3-28.7-64-64-64H344V24c0-13.3-10.7-24-24-24s-24 10.7-24 24V64H152V24zM48 192h80v56H48V192zm0 104h80v64H48V296zm128 0h96v64H176V296zm144 0h80v64H320V296zm80-48H320V192h80v56zm0 160v40c0 8.8-7.2 16-16 16H320V408h80zm-128 0v56H176V408h96zm-144 0v56H64c-8.8 0-16-7.2-16-16V408h80zM272 248H176V192h96v56z"],
"hand-point-right": [512, 512, [], "f0a4", "M448 128l-177.6 0c1 5.2 1.6 10.5 1.6 16l0 16 32 0 144 0c8.8 0 16-7.2 16-16s-7.2-16-16-16zM224 144c0-17.7-14.3-32-32-32c0 0 0 0 0 0l-24 0c-66.3 0-120 53.7-120 120l0 48c0 52.5 33.7 97.1 80.7 113.4c-.5-3.1-.7-6.2-.7-9.4c0-20 9.2-37.9 23.6-49.7c-4.9-9-7.6-19.4-7.6-30.3c0-15.1 5.3-29 14-40c-8.8-11-14-24.9-14-40l0-40c0-13.3 10.7-24 24-24s24 10.7 24 24l0 40c0 8.8 7.2 16 16 16s16-7.2 16-16l0-40 0-40zM192 64s0 0 0 0c18 0 34.6 6 48 16l208 0c35.3 0 64 28.7 64 64s-28.7 64-64 64l-82 0c1.3 5.1 2 10.5 2 16c0 25.3-14.7 47.2-36 57.6c2.6 7 4 14.5 4 22.4c0 20-9.2 37.9-23.6 49.7c4.9 9 7.6 19.4 7.6 30.3c0 35.3-28.7 64-64 64l-64 0-24 0C75.2 448 0 372.8 0 280l0-48C0 139.2 75.2 64 168 64l24 0zm64 336c8.8 0 16-7.2 16-16s-7.2-16-16-16l-48 0-16 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l64 0zm16-176c0 5.5-.7 10.9-2 16l2 0 32 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-32 0 0 16zm-24 64l-40 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l48 0 16 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-24 0z"],
"face-smile-beam": [512, 512, [128522, "smile-beam"], "f5b8", "M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm177.6 62.1C192.8 334.5 218.8 352 256 352s63.2-17.5 78.4-33.9c9-9.7 24.2-10.4 33.9-1.4s10.4 24.2 1.4 33.9c-22 23.8-60 49.4-113.6 49.4s-91.7-25.5-113.6-49.4c-9-9.7-8.4-24.9 1.4-33.9s24.9-8.4 33.9 1.4zm40-89.3l0 0 0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0zm160 0l0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0 0 0z"],
"face-grin-stars": [512, 512, [129321, "grin-stars"], "f587", "M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM183.2 132.6c-1.3-2.8-4.1-4.6-7.2-4.6s-5.9 1.8-7.2 4.6l-16.6 34.7-38.1 5c-3.1 .4-5.6 2.5-6.6 5.5s-.1 6.2 2.1 8.3l27.9 26.5-7 37.8c-.6 3 .7 6.1 3.2 7.9s5.8 2 8.5 .6L176 240.5l33.8 18.3c2.7 1.5 6 1.3 8.5-.6s3.7-4.9 3.2-7.9l-7-37.8L242.4 186c2.2-2.1 3.1-5.3 2.1-8.3s-3.5-5.1-6.6-5.5l-38.1-5-16.6-34.7zm160 0c-1.3-2.8-4.1-4.6-7.2-4.6s-5.9 1.8-7.2 4.6l-16.6 34.7-38.1 5c-3.1 .4-5.6 2.5-6.6 5.5s-.1 6.2 2.1 8.3l27.9 26.5-7 37.8c-.6 3 .7 6.1 3.2 7.9s5.8 2 8.5 .6L336 240.5l33.8 18.3c2.7 1.5 6 1.3 8.5-.6s3.7-4.9 3.2-7.9l-7-37.8L402.4 186c2.2-2.1 3.1-5.3 2.1-8.3s-3.5-5.1-6.6-5.5l-38.1-5-16.6-34.7zm6.3 175.8c-28.9 6.8-60.5 10.5-93.6 10.5s-64.7-3.7-93.6-10.5c-18.7-4.4-35.9 12-25.5 28.1c24.6 38.1 68.7 63.5 119.1 63.5s94.5-25.4 119.1-63.5c10.4-16.1-6.8-32.5-25.5-28.1z"],
"address-book": [512, 512, [62138, "contact-book"], "f2b9", "M384 48c8.8 0 16 7.2 16 16V448c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V64c0-8.8 7.2-16 16-16H384zM96 0C60.7 0 32 28.7 32 64V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H96zM240 256a64 64 0 1 0 0-128 64 64 0 1 0 0 128zm-32 32c-44.2 0-80 35.8-80 80c0 8.8 7.2 16 16 16H336c8.8 0 16-7.2 16-16c0-44.2-35.8-80-80-80H208zM512 80c0-8.8-7.2-16-16-16s-16 7.2-16 16v64c0 8.8 7.2 16 16 16s16-7.2 16-16V80zM496 192c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16s16-7.2 16-16V208c0-8.8-7.2-16-16-16zm16 144c0-8.8-7.2-16-16-16s-16 7.2-16 16v64c0 8.8 7.2 16 16 16s16-7.2 16-16V336z"],
"comments": [640, 512, [128490, 61670], "f086", "M88.2 309.1c9.8-18.3 6.8-40.8-7.5-55.8C59.4 230.9 48 204 48 176c0-63.5 63.8-128 160-128s160 64.5 160 128s-63.8 128-160 128c-13.1 0-25.8-1.3-37.8-3.6c-10.4-2-21.2-.6-30.7 4.2c-4.1 2.1-8.3 4.1-12.6 6c-16 7.2-32.9 13.5-49.9 18c2.8-4.6 5.4-9.1 7.9-13.6c1.1-1.9 2.2-3.9 3.2-5.9zM0 176c0 41.8 17.2 80.1 45.9 110.3c-.9 1.7-1.9 3.5-2.8 5.1c-10.3 18.4-22.3 36.5-36.6 52.1c-6.6 7-8.3 17.2-4.6 25.9C5.8 378.3 14.4 384 24 384c43 0 86.5-13.3 122.7-29.7c4.8-2.2 9.6-4.5 14.2-6.8c15.1 3 30.9 4.5 47.1 4.5c114.9 0 208-78.8 208-176S322.9 0 208 0S0 78.8 0 176zM432 480c16.2 0 31.9-1.6 47.1-4.5c4.6 2.3 9.4 4.6 14.2 6.8C529.5 498.7 573 512 616 512c9.6 0 18.2-5.7 22-14.5c3.8-8.8 2-19-4.6-25.9c-14.2-15.6-26.2-33.7-36.6-52.1c-.9-1.7-1.9-3.4-2.8-5.1C622.8 384.1 640 345.8 640 304c0-94.4-87.9-171.5-198.2-175.8c4.1 15.2 6.2 31.2 6.2 47.8l0 .6c87.2 6.7 144 67.5 144 127.4c0 28-11.4 54.9-32.7 77.2c-14.3 15-17.3 37.6-7.5 55.8c1.1 2 2.2 4 3.2 5.9c2.5 4.5 5.2 9 7.9 13.6c-17-4.5-33.9-10.7-49.9-18c-4.3-1.9-8.5-3.9-12.6-6c-9.5-4.8-20.3-6.2-30.7-4.2c-12.1 2.4-24.7 3.6-37.8 3.6c-61.7 0-110-26.5-136.8-62.3c-16 5.4-32.8 9.4-50 11.8C279 439.8 350 480 432 480z"],
"paste": [512, 512, ["file-clipboard"], "f0ea", "M104.6 48H64C28.7 48 0 76.7 0 112V384c0 35.3 28.7 64 64 64h96V400H64c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16H80c0 17.7 14.3 32 32 32h72.4C202 108.4 227.6 96 256 96h62c-7.1-27.6-32.2-48-62-48H215.4C211.6 20.9 188.2 0 160 0s-51.6 20.9-55.4 48zM144 56a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zM448 464H256c-8.8 0-16-7.2-16-16V192c0-8.8 7.2-16 16-16l140.1 0L464 243.9V448c0 8.8-7.2 16-16 16zM256 512H448c35.3 0 64-28.7 64-64V243.9c0-12.7-5.1-24.9-14.1-33.9l-67.9-67.9c-9-9-21.2-14.1-33.9-14.1H256c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64z"],
"face-grin-tongue-squint": [512, 512, [128541, "grin-tongue-squint"], "f58a", "M464 256c0-114.9-93.1-208-208-208S48 141.1 48 256c0 81.7 47.1 152.4 115.7 186.4c-2.4-8.4-3.7-17.3-3.7-26.4V392.7c-24-17.5-43.1-41.4-54.8-69.2c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19c12.3-3.8 24.3 6.9 19.3 18.7c-11.8 28-31.1 52-55.4 69.6V416c0 9.2-1.3 18-3.7 26.4C416.9 408.4 464 337.7 464 256zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm116-98.9c0-9 9.6-14.7 17.5-10.5l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6zm262.5-10.5c7.9-4.2 17.5 1.5 17.5 10.5c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9zM320 416V378.6c0-14.7-11.9-26.6-26.6-26.6h-2c-11.3 0-21.1 7.9-23.6 18.9c-2.8 12.6-20.8 12.6-23.6 0c-2.5-11.1-12.3-18.9-23.6-18.9h-2c-14.7 0-26.6 11.9-26.6 26.6V416c0 35.3 28.7 64 64 64s64-28.7 64-64z"],
"face-flushed": [512, 512, [128563, "flushed"], "f579", "M464 256A208 208 0 1 1 48 256a208 208 0 1 1 416 0zM256 0a256 256 0 1 0 0 512A256 256 0 1 0 256 0zM160.4 248a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm216-24a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zM192 336c-13.3 0-24 10.7-24 24s10.7 24 24 24H320c13.3 0 24-10.7 24-24s-10.7-24-24-24H192zM160 176a48 48 0 1 1 0 96 48 48 0 1 1 0-96zm0 128a80 80 0 1 0 0-160 80 80 0 1 0 0 160zm144-80a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm128 0a80 80 0 1 0 -160 0 80 80 0 1 0 160 0z"],
"square-caret-right": [448, 512, ["caret-square-right"], "f152", "M400 96c0-8.8-7.2-16-16-16L64 80c-8.8 0-16 7.2-16 16l0 320c0 8.8 7.2 16 16 16l320 0c8.8 0 16-7.2 16-16l0-320zM384 32c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l320 0zM320 256c0 6.7-2.8 13-7.7 17.6l-112 104c-7 6.5-17.2 8.2-25.9 4.4s-14.4-12.5-14.4-22l0-208c0-9.5 5.7-18.2 14.4-22s18.9-2.1 25.9 4.4l112 104c4.9 4.5 7.7 10.9 7.7 17.6z"],
"square-minus": [448, 512, [61767, "minus-square"], "f146", "M64 80c-8.8 0-16 7.2-16 16V416c0 8.8 7.2 16 16 16H384c8.8 0 16-7.2 16-16V96c0-8.8-7.2-16-16-16H64zM0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM152 232H296c13.3 0 24 10.7 24 24s-10.7 24-24 24H152c-13.3 0-24-10.7-24-24s10.7-24 24-24z"],
"compass": [512, 512, [129517], "f14e", "M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm306.7 69.1L162.4 380.6c-19.4 7.5-38.5-11.6-31-31l55.5-144.3c3.3-8.5 9.9-15.1 18.4-18.4l144.3-55.5c19.4-7.5 38.5 11.6 31 31L325.1 306.7c-3.2 8.5-9.9 15.1-18.4 18.4zM288 256a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z"],
"square-caret-down": [448, 512, ["caret-square-down"], "f150", "M384 432c8.8 0 16-7.2 16-16l0-320c0-8.8-7.2-16-16-16L64 80c-8.8 0-16 7.2-16 16l0 320c0 8.8 7.2 16 16 16l320 0zm64-16c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l320 0c35.3 0 64 28.7 64 64l0 320zM224 352c-6.7 0-13-2.8-17.6-7.7l-104-112c-6.5-7-8.2-17.2-4.4-25.9s12.5-14.4 22-14.4l208 0c9.5 0 18.2 5.7 22 14.4s2.1 18.9-4.4 25.9l-104 112c-4.5 4.9-10.9 7.7-17.6 7.7z"],
"face-kiss-beam": [512, 512, [128537, "kiss-beam"], "f597", "M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm304.7 41.7c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4c-2.7 1.5-5.7 3-8.7 4.3c3.1 1.3 6 2.7 8.7 4.3c6.6 3.7 12.5 8.2 16.7 13.4c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4C274.7 427.1 257.4 432 240 432c-3.6 0-6.8-2.5-7.7-6s.6-7.2 3.8-9l0 0 0 0 0 0 0 0 .2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1c-.4-.2-.7-.4-.9-.5l-.2-.1 0 0 0 0 0 0c-2.5-1.4-4.1-4.1-4.1-7s1.6-5.6 4.1-7l0 0 0 0 0 0 0 0 0 0 .2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1c-.4-.2-.7-.4-.9-.5l-.2-.1 0 0 0 0 0 0c-3.2-1.8-4.7-5.5-3.8-9s4.1-6 7.7-6c17.4 0 34.7 4.9 47.9 12.3c6.6 3.7 12.5 8.2 16.7 13.4zm-87.1-68.9l0 0 0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0zm160 0l0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0 0 0z"],
"lightbulb": [384, 512, [128161], "f0eb", "M297.2 248.9C311.6 228.3 320 203.2 320 176c0-70.7-57.3-128-128-128S64 105.3 64 176c0 27.2 8.4 52.3 22.8 72.9c3.7 5.3 8.1 11.3 12.8 17.7l0 0c12.9 17.7 28.3 38.9 39.8 59.8c10.4 19 15.7 38.8 18.3 57.5H109c-2.2-12-5.9-23.7-11.8-34.5c-9.9-18-22.2-34.9-34.5-51.8l0 0 0 0c-5.2-7.1-10.4-14.2-15.4-21.4C27.6 247.9 16 213.3 16 176C16 78.8 94.8 0 192 0s176 78.8 176 176c0 37.3-11.6 71.9-31.4 100.3c-5 7.2-10.2 14.3-15.4 21.4l0 0 0 0c-12.3 16.8-24.6 33.7-34.5 51.8c-5.9 10.8-9.6 22.5-11.8 34.5H226.4c2.6-18.7 7.9-38.6 18.3-57.5c11.5-20.9 26.9-42.1 39.8-59.8l0 0 0 0 0 0c4.7-6.4 9-12.4 12.7-17.7zM192 128c-26.5 0-48 21.5-48 48c0 8.8-7.2 16-16 16s-16-7.2-16-16c0-44.2 35.8-80 80-80c8.8 0 16 7.2 16 16s-7.2 16-16 16zm0 384c-44.2 0-80-35.8-80-80V416H272v16c0 44.2-35.8 80-80 80z"],
"flag": [448, 512, [127988, 61725], "f024", "M48 24C48 10.7 37.3 0 24 0S0 10.7 0 24V64 350.5 400v88c0 13.3 10.7 24 24 24s24-10.7 24-24V388l80.3-20.1c41.1-10.3 84.6-5.5 122.5 13.4c44.2 22.1 95.5 24.8 141.7 7.4l34.7-13c12.5-4.7 20.8-16.6 20.8-30V66.1c0-23-24.2-38-44.8-27.7l-9.6 4.8c-46.3 23.2-100.8 23.2-147.1 0c-35.1-17.6-75.4-22-113.5-12.5L48 52V24zm0 77.5l96.6-24.2c27-6.7 55.5-3.6 80.4 8.8c54.9 27.4 118.7 29.7 175 6.8V334.7l-24.4 9.1c-33.7 12.6-71.2 10.7-103.4-5.4c-48.2-24.1-103.3-30.1-155.6-17.1L48 338.5v-237z"],
"square-check": [448, 512, [9745, 9989, 61510, "check-square"], "f14a", "M64 80c-8.8 0-16 7.2-16 16V416c0 8.8 7.2 16 16 16H384c8.8 0 16-7.2 16-16V96c0-8.8-7.2-16-16-16H64zM0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM337 209L209 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L303 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z"],
"circle-dot": [512, 512, [128280, "dot-circle"], "f192", "M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm256-96a96 96 0 1 1 0 192 96 96 0 1 1 0-192z"],
"face-dizzy": [512, 512, ["dizzy"], "f567", "M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm256 32a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM103 135c9.4-9.4 24.6-9.4 33.9 0l23 23 23-23c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-23 23 23 23c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-23-23-23 23c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l23-23-23-23c-9.4-9.4-9.4-24.6 0-33.9zm192 0c9.4-9.4 24.6-9.4 33.9 0l23 23 23-23c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-23 23 23 23c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-23-23-23 23c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l23-23-23-23c-9.4-9.4-9.4-24.6 0-33.9z"],
"futbol": [512, 512, [9917, "futbol-ball", "soccer-ball"], "f1e3", "M435.4 361.3l-89.7-6c-5.2-.3-10.3 1.1-14.5 4.2s-7.2 7.4-8.4 12.5l-22 87.2c-14.4 3.2-29.4 4.8-44.8 4.8s-30.3-1.7-44.8-4.8l-22-87.2c-1.3-5-4.3-9.4-8.4-12.5s-9.3-4.5-14.5-4.2l-89.7 6C61.7 335.9 51.9 307 49 276.2L125 228.3c4.4-2.8 7.6-7 9.2-11.9s1.4-10.2-.5-15L100.4 118c19.9-22.4 44.6-40.5 72.4-52.7l69.1 57.6c4 3.3 9 5.1 14.1 5.1s10.2-1.8 14.1-5.1l69.1-57.6c27.8 12.2 52.5 30.3 72.4 52.7l-33.4 83.4c-1.9 4.8-2.1 10.1-.5 15s4.9 9.1 9.2 11.9L463 276.2c-3 30.8-12.7 59.7-27.6 85.1zM256 48l.9 0h-1.8l.9 0zM56.7 196.2c.9-3 1.9-6.1 2.9-9.1l-2.9 9.1zM132 423l3.8 2.7c-1.3-.9-2.5-1.8-3.8-2.7zm248.1-.1c-1.3 1-2.7 2-4 2.9l4-2.9zm75.2-226.6l-3-9.2c1.1 3 2.1 6.1 3 9.2zM256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm14.1-325.7c-8.4-6.1-19.8-6.1-28.2 0L194 221c-8.4 6.1-11.9 16.9-8.7 26.8l18.3 56.3c3.2 9.9 12.4 16.6 22.8 16.6h59.2c10.4 0 19.6-6.7 22.8-16.6l18.3-56.3c3.2-9.9-.3-20.7-8.7-26.8l-47.9-34.8z"],
"pen-to-square": [512, 512, ["edit"], "f044", "M441 58.9L453.1 71c9.4 9.4 9.4 24.6 0 33.9L424 134.1 377.9 88 407 58.9c9.4-9.4 24.6-9.4 33.9 0zM209.8 256.2L344 121.9 390.1 168 255.8 302.2c-2.9 2.9-6.5 5-10.4 6.1l-58.5 16.7 16.7-58.5c1.1-3.9 3.2-7.5 6.1-10.4zM373.1 25L175.8 222.2c-8.7 8.7-15 19.4-18.3 31.1l-28.6 100c-2.4 8.4-.1 17.4 6.1 23.6s15.2 8.5 23.6 6.1l100-28.6c11.8-3.4 22.5-9.7 31.1-18.3L487 138.9c28.1-28.1 28.1-73.7 0-101.8L474.9 25C446.8-3.1 401.2-3.1 373.1 25zM88 64C39.4 64 0 103.4 0 152V424c0 48.6 39.4 88 88 88H360c48.6 0 88-39.4 88-88V312c0-13.3-10.7-24-24-24s-24 10.7-24 24V424c0 22.1-17.9 40-40 40H88c-22.1 0-40-17.9-40-40V152c0-22.1 17.9-40 40-40H200c13.3 0 24-10.7 24-24s-10.7-24-24-24H88z"],
"hourglass-half": [384, 512, ["hourglass-2"], "f252", "M0 24C0 10.7 10.7 0 24 0H360c13.3 0 24 10.7 24 24s-10.7 24-24 24h-8V67c0 40.3-16 79-44.5 107.5L225.9 256l81.5 81.5C336 366 352 404.7 352 445v19h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H24c-13.3 0-24-10.7-24-24s10.7-24 24-24h8V445c0-40.3 16-79 44.5-107.5L158.1 256 76.5 174.5C48 146 32 107.3 32 67V48H24C10.7 48 0 37.3 0 24zM110.5 371.5c-3.9 3.9-7.5 8.1-10.7 12.5H284.2c-3.2-4.4-6.8-8.6-10.7-12.5L192 289.9l-81.5 81.5zM284.2 128C297 110.4 304 89 304 67V48H80V67c0 22.1 7 43.4 19.8 61H284.2z"],
"eye-slash": [640, 512, [], "f070", "M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L525.6 386.7c39.6-40.6 66.4-86.1 79.9-118.4c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C465.5 68.8 400.8 32 320 32c-68.2 0-125 26.3-169.3 60.8L38.8 5.1zm151 118.3C226 97.7 269.5 80 320 80c65.2 0 118.8 29.6 159.9 67.7C518.4 183.5 545 226 558.6 256c-12.6 28-36.6 66.8-70.9 100.9l-53.8-42.2c9.1-17.6 14.2-37.5 14.2-58.7c0-70.7-57.3-128-128-128c-32.2 0-61.7 11.9-84.2 31.5l-46.1-36.1zM394.9 284.2l-81.5-63.9c4.2-8.5 6.6-18.2 6.6-28.3c0-5.5-.7-10.9-2-16c.7 0 1.3 0 2 0c44.2 0 80 35.8 80 80c0 9.9-1.8 19.4-5.1 28.2zm9.4 130.3C378.8 425.4 350.7 432 320 432c-65.2 0-118.8-29.6-159.9-67.7C121.6 328.5 95 286 81.4 256c8.3-18.4 21.5-41.5 39.4-64.8L83.1 161.5C60.3 191.2 44 220.8 34.5 243.7c-3.3 7.9-3.3 16.7 0 24.6c14.9 35.7 46.2 87.7 93 131.1C174.5 443.2 239.2 480 320 480c47.8 0 89.9-12.9 126.2-32.5l-41.9-33zM192 256c0 70.7 57.3 128 128 128c13.3 0 26.1-2 38.2-5.8L302 334c-23.5-5.4-43.1-21.2-53.7-42.3l-56.1-44.2c-.2 2.8-.3 5.6-.3 8.5z"],
"hand": [512, 512, [129306, 9995, "hand-paper"], "f256", "M256 0c-25.3 0-47.2 14.7-57.6 36c-7-2.6-14.5-4-22.4-4c-35.3 0-64 28.7-64 64V261.5l-2.7-2.7c-25-25-65.5-25-90.5 0s-25 65.5 0 90.5L106.5 437c48 48 113.1 75 181 75H296h8c1.5 0 3-.1 4.5-.4c91.7-6.2 165-79.4 171.1-171.1c.3-1.5 .4-3 .4-4.5V160c0-35.3-28.7-64-64-64c-5.5 0-10.9 .7-16 2V96c0-35.3-28.7-64-64-64c-7.9 0-15.4 1.4-22.4 4C303.2 14.7 281.3 0 256 0zM240 96.1c0 0 0-.1 0-.1V64c0-8.8 7.2-16 16-16s16 7.2 16 16V95.9c0 0 0 .1 0 .1V232c0 13.3 10.7 24 24 24s24-10.7 24-24V96c0 0 0 0 0-.1c0-8.8 7.2-16 16-16s16 7.2 16 16v55.9c0 0 0 .1 0 .1v80c0 13.3 10.7 24 24 24s24-10.7 24-24V160.1c0 0 0-.1 0-.1c0-8.8 7.2-16 16-16s16 7.2 16 16V332.9c-.1 .6-.1 1.3-.2 1.9c-3.4 69.7-59.3 125.6-129 129c-.6 0-1.3 .1-1.9 .2H296h-8.5c-55.2 0-108.1-21.9-147.1-60.9L52.7 315.3c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L119 336.4c6.9 6.9 17.2 8.9 26.2 5.2s14.8-12.5 14.8-22.2V96c0-8.8 7.2-16 16-16c8.8 0 16 7.1 16 15.9V232c0 13.3 10.7 24 24 24s24-10.7 24-24V96.1z"],
"hand-spock": [576, 512, [128406], "f259", "M221.7 25.3L215.6 2.1l6.2 23.2zm48.9 28.4l23.2-6.2v0l-23.2 6.2zM193.3 74.3l-23.2 6.2 0 0 23.2-6.2zm46.5 175.3l-22.1 9.3c4.9 11.6 17.9 17.5 29.9 13.4s18.7-16.7 15.4-28.9l-23.2 6.2zm-51-121.1l-22.1 9.3v0l22.1-9.3zm-52.4-21.3l9.3 22.1h0l-9.3-22.1zm-21.3 52.4L93 168.8h0l22.1-9.3zm5.4 144.9l14.7-18.9h0l-14.7 18.9zm-56.1 7l18.9 14.7 0 0L64.4 311.4zm7 56.1L56.7 386.5h0l14.7-18.9zm92 71.6l-14.7 18.9 14.7-18.9zm300.1-48.5l23.3 5.8-23.3-5.8zm55.2-220.9l23.3 5.8-23.3-5.8zm-29.1-48.5l5.8-23.3-5.8 23.3zm-48.5 29.1l23.3 5.8v0l-23.3-5.8zM415 255l23.3 5.8 0 0L415 255zm-2.6-.5l23.6 4.2 0 0-23.6-4.2zM439.4 103l23.6 4.2v0L439.4 103zM407 56.6l-4.2 23.6L407 56.6zM360.6 89L337 84.8 360.6 89zM331.5 252.6l-23.6-4.2 0 0 23.6 4.2zm-8 .3l23.2-6.2 0 0-23.2 6.2zM336 488l.5-24-.5 24zm-157-138L193.8 331l-14.7 18.9zM227.9 48.5c8.5-2.3 17.3 2.8 19.6 11.4l46.4-12.3c-9.1-34.2-44.1-54.5-78.3-45.4l12.3 46.4zM216.5 68.1c-2.3-8.5 2.8-17.3 11.4-19.6L215.6 2.1c-34.2 9.1-54.5 44.1-45.4 78.3l46.4-12.3zM263 243.4L216.5 68.1 170.1 80.4l46.5 175.3L263 243.4zM166.7 137.8l51 121.1L262 240.2 211 119.2l-44.2 18.6zm-21-8.5c8.1-3.4 17.5 .4 21 8.5L211 119.2C197.3 86.6 159.7 71.3 127.2 85l18.6 44.2zm-8.5 21c-3.4-8.1 .4-17.5 8.5-21L127.2 85C94.6 98.7 79.3 136.3 93 168.8l44.2-18.6zm76.2 181l-76.2-181L93 168.8l76.2 181 44.2-18.6zm-107.6-7.8l58.5 45.5L193.8 331l-58.5-45.5-29.5 37.9zm-22.5 2.8c5.4-7 15.5-8.2 22.5-2.8l29.5-37.9c-27.9-21.7-68.1-16.7-89.8 11.2l37.9 29.5zm2.8 22.5c-7-5.4-8.2-15.5-2.8-22.5L45.5 296.7c-21.7 27.9-16.7 68.1 11.2 89.8l29.5-37.9zm92 71.6l-92-71.6L56.7 386.5l92 71.6 29.5-37.9zM305.9 464c-46.3 0-91.2-15.4-127.7-43.8l-29.5 37.9C193.6 493 248.9 512 305.9 512V464zm30.1 0H305.9v48H336V464zm2.8 0c-.8 0-1.5 0-2.3 0l-1 48c1.1 0 2.2 0 3.3 0V464zm101.5-79.2C428.7 431.3 386.8 464 338.8 464v48c70 0 131.1-47.7 148-115.6l-46.6-11.6zm55.2-220.9L440.3 384.8l46.6 11.6 55.2-220.9-46.6-11.6zm-11.6-19.4c8.6 2.1 13.8 10.8 11.6 19.4l46.6 11.6c8.6-34.3-12.3-69-46.6-77.6l-11.6 46.6zm-19.4 11.6c2.1-8.6 10.8-13.8 19.4-11.6l11.6-46.6c-34.3-8.6-69 12.3-77.6 46.6l46.6 11.6zM438.3 260.8l26.2-104.7-46.6-11.6L391.7 249.2l46.6 11.6zM413.7 280c11.6 0 21.7-7.9 24.6-19.2l-46.6-11.6c2.5-10.1 11.6-17.2 22-17.2v48zm-24.9-29.7c-2.8 15.5 9.2 29.7 24.9 29.7V232c14.1 0 24.8 12.8 22.3 26.7l-47.3-8.4zM415.8 98.8L388.8 250.3l47.3 8.4L463 107.2l-47.3-8.4zm-13-18.6c8.7 1.5 14.5 9.9 13 18.6l47.3 8.4c6.2-34.8-17-68-51.8-74.2l-8.4 47.3zm-18.6 13c1.5-8.7 9.9-14.5 18.6-13L411.2 33c-34.8-6.2-68 17-74.2 51.8l47.3 8.4zM355.2 256.8L384.2 93.2 337 84.8 307.9 248.4l47.3 8.4zM327.5 280c13.6 0 25.3-9.8 27.7-23.2l-47.3-8.4c1.7-9.5 9.9-16.4 19.6-16.4v48zm-27.2-20.9c3.3 12.3 14.4 20.9 27.2 20.9V232c9 0 16.9 6.1 19.2 14.8l-46.4 12.3zM247.5 59.9l52.8 199.2 46.4-12.3L293.9 47.6 247.5 59.9zM360 488c0 13.5-11.1 24.3-24.5 24l1-48c-13.5-.3-24.5 10.5-24.5 24h48zm-24 24c13.3 0 24-10.8 24-24H312c0-13.2 10.7-24 24-24v48zM169.2 349.8c-6.4-15.2 11.6-29 24.6-18.8l-29.5 37.9c26 20.2 61.9-7.3 49.1-37.7l-44.2 18.6z"],
"face-kiss": [512, 512, [128535, "kiss"], "f596", "M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm304.7 25.7c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4c-2.7 1.5-5.7 3-8.7 4.3c3.1 1.3 6 2.7 8.7 4.3c6.6 3.7 12.5 8.2 16.7 13.4c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4C274.7 411.1 257.4 416 240 416c-3.6 0-6.8-2.5-7.7-6s.6-7.2 3.8-9l0 0 0 0 0 0 0 0 .2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1l-.8-.5-.1-.1-.2-.1 0 0 0 0 0 0c-2.5-1.4-4.1-4.1-4.1-7s1.6-5.6 4.1-7l0 0 0 0 0 0 0 0 0 0 .2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1c-.4-.2-.7-.4-.9-.5l-.2-.1 0 0 0 0 0 0c-3.2-1.8-4.7-5.5-3.8-9s4.1-6 7.7-6c17.4 0 34.7 4.9 47.9 12.3c6.6 3.7 12.5 8.2 16.7 13.4zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"],
"face-grin-tongue": [512, 512, [128539, "grin-tongue"], "f589", "M464 256c0-114.9-93.1-208-208-208S48 141.1 48 256c0 81.7 47.1 152.4 115.7 186.4c-2.4-8.4-3.7-17.3-3.7-26.4V363.6c-8.9-8-16.7-17.1-23.1-27.1c-10.4-16.1 6.8-32.5 25.5-28.1c28.9 6.8 60.5 10.5 93.6 10.5s64.7-3.7 93.6-10.5c18.7-4.4 35.9 12 25.5 28.1c-6.4 9.9-14.2 19-23 27V416c0 9.2-1.3 18-3.7 26.4C416.9 408.4 464 337.7 464 256zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm176.4-80a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM320 416V378.6c0-14.7-11.9-26.6-26.6-26.6h-2c-11.3 0-21.1 7.9-23.6 18.9c-2.8 12.6-20.8 12.6-23.6 0c-2.5-11.1-12.3-18.9-23.6-18.9h-2c-14.7 0-26.6 11.9-26.6 26.6V416c0 35.3 28.7 64 64 64s64-28.7 64-64z"],
"chess-bishop": [320, 512, [9821], "f43a", "M104 0C90.7 0 80 10.7 80 24c0 11.2 7.6 20.6 18 23.2c-7.8 8-16.1 17-24.4 27C38.2 116.7 0 178.8 0 250.9c0 44.8 24.6 72.2 48 87.8V352H96V325c0-9-5-17.2-13-21.3c-18-9.3-35-24.7-35-52.7c0-55.5 29.8-106.8 62.4-145.9c16-19.2 32.1-34.8 44.2-45.5c1.9-1.7 3.7-3.2 5.3-4.6c1.7 1.4 3.4 3 5.3 4.6c12.1 10.7 28.2 26.3 44.2 45.5c5.3 6.3 10.5 13 15.5 20L159 191c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l57.8-57.8c12.8 25.9 21.2 54.3 21.2 83.8c0 28-17 43.4-35 52.7c-8 4.1-13 12.3-13 21.3v27h48V338.7c23.4-15.6 48-42.9 48-87.8c0-72.1-38.2-134.2-73.6-176.7c-8.3-9.9-16.6-19-24.4-27c10.3-2.7 18-12.1 18-23.2c0-13.3-10.7-24-24-24H160 104zM52.7 464l16.6-32H250.8l16.6 32H52.7zm207.9-80H59.5c-12 0-22.9 6.7-28.4 17.3L4.6 452.5c-3 5.8-4.6 12.2-4.6 18.7C0 493.8 18.2 512 40.8 512H279.2c22.5 0 40.8-18.2 40.8-40.8c0-6.5-1.6-12.9-4.6-18.7l-26.5-51.2c-5.5-10.6-16.5-17.3-28.4-17.3z"],
"face-grin-wink": [512, 512, ["grin-wink"], "f58c", "M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm349.5 52.4c18.7-4.4 35.9 12 25.5 28.1C350.4 374.6 306.3 400 255.9 400s-94.5-25.4-119.1-63.5c-10.4-16.1 6.8-32.5 25.5-28.1c28.9 6.8 60.5 10.5 93.6 10.5s64.7-3.7 93.6-10.5zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm165.8 21.7c-7.6 8.1-20.2 8.5-28.3 .9s-8.5-20.2-.9-28.3c14.5-15.5 35.2-22.3 54.6-22.3s40.1 6.8 54.6 22.3c7.6 8.1 7.1 20.7-.9 28.3s-20.7 7.1-28.3-.9c-5.5-5.8-14.8-9.7-25.4-9.7s-19.9 3.8-25.4 9.7z"],
"face-grin-wide": [512, 512, [128515, "grin-alt"], "f581", "M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm349.5 52.4c18.7-4.4 35.9 12 25.5 28.1C350.4 374.6 306.3 400 255.9 400s-94.5-25.4-119.1-63.5c-10.4-16.1 6.8-32.5 25.5-28.1c28.9 6.8 60.5 10.5 93.6 10.5s64.7-3.7 93.6-10.5zM224 192c0 35.3-14.3 64-32 64s-32-28.7-32-64s14.3-64 32-64s32 28.7 32 64zm96 64c-17.7 0-32-28.7-32-64s14.3-64 32-64s32 28.7 32 64s-14.3 64-32 64z"],
"face-frown-open": [512, 512, [128550, "frown-open"], "f57a", "M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM182.4 382.5c-12.4 5.2-26.5-4.1-21.1-16.4c16-36.6 52.4-62.1 94.8-62.1s78.8 25.6 94.8 62.1c5.4 12.3-8.7 21.6-21.1 16.4c-22.4-9.5-47.4-14.8-73.7-14.8s-51.3 5.3-73.7 14.8zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"],
"hand-point-up": [384, 512, [9757], "f0a6", "M64 64V241.6c5.2-1 10.5-1.6 16-1.6H96V208 64c0-8.8-7.2-16-16-16s-16 7.2-16 16zM80 288c-17.7 0-32 14.3-32 32c0 0 0 0 0 0v24c0 66.3 53.7 120 120 120h48c52.5 0 97.1-33.7 113.4-80.7c-3.1 .5-6.2 .7-9.4 .7c-20 0-37.9-9.2-49.7-23.6c-9 4.9-19.4 7.6-30.3 7.6c-15.1 0-29-5.3-40-14c-11 8.8-24.9 14-40 14H120c-13.3 0-24-10.7-24-24s10.7-24 24-24h40c8.8 0 16-7.2 16-16s-7.2-16-16-16H120 80zM0 320s0 0 0 0c0-18 6-34.6 16-48V64C16 28.7 44.7 0 80 0s64 28.7 64 64v82c5.1-1.3 10.5-2 16-2c25.3 0 47.2 14.7 57.6 36c7-2.6 14.5-4 22.4-4c20 0 37.9 9.2 49.7 23.6c9-4.9 19.4-7.6 30.3-7.6c35.3 0 64 28.7 64 64v64 24c0 92.8-75.2 168-168 168H168C75.2 512 0 436.8 0 344V320zm336-64c0-8.8-7.2-16-16-16s-16 7.2-16 16v48 16c0 8.8 7.2 16 16 16s16-7.2 16-16V256zM160 240c5.5 0 10.9 .7 16 2v-2V208c0-8.8-7.2-16-16-16s-16 7.2-16 16v32h16zm64 24v40c0 8.8 7.2 16 16 16s16-7.2 16-16V256 240c0-8.8-7.2-16-16-16s-16 7.2-16 16v24z"],
"bookmark": [384, 512, [128278, 61591], "f02e", "M0 48C0 21.5 21.5 0 48 0l0 48V441.4l130.1-92.9c8.3-6 19.6-6 27.9 0L336 441.4V48H48V0H336c26.5 0 48 21.5 48 48V488c0 9-5 17.2-13 21.3s-17.6 3.4-24.9-1.8L192 397.5 37.9 507.5c-7.3 5.2-16.9 5.9-24.9 1.8S0 497 0 488V48z"],
"hand-point-down": [384, 512, [], "f0a7", "M64 448l0-177.6c5.2 1 10.5 1.6 16 1.6l16 0 0 32 0 144c0 8.8-7.2 16-16 16s-16-7.2-16-16zM80 224c-17.7 0-32-14.3-32-32c0 0 0 0 0 0l0-24c0-66.3 53.7-120 120-120l48 0c52.5 0 97.1 33.7 113.4 80.7c-3.1-.5-6.2-.7-9.4-.7c-20 0-37.9 9.2-49.7 23.6c-9-4.9-19.4-7.6-30.3-7.6c-15.1 0-29 5.3-40 14c-11-8.8-24.9-14-40-14l-40 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l40 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-40 0-40 0zM0 192s0 0 0 0c0 18 6 34.6 16 48l0 208c0 35.3 28.7 64 64 64s64-28.7 64-64l0-82c5.1 1.3 10.5 2 16 2c25.3 0 47.2-14.7 57.6-36c7 2.6 14.5 4 22.4 4c20 0 37.9-9.2 49.7-23.6c9 4.9 19.4 7.6 30.3 7.6c35.3 0 64-28.7 64-64l0-64 0-24C384 75.2 308.8 0 216 0L168 0C75.2 0 0 75.2 0 168l0 24zm336 64c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-48 0-16c0-8.8 7.2-16 16-16s16 7.2 16 16l0 64zM160 272c5.5 0 10.9-.7 16-2l0 2 0 32c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-32 16 0zm64-24l0-40c0-8.8 7.2-16 16-16s16 7.2 16 16l0 48 0 16c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-24z"],
"folder": [512, 512, [128193, 128447, 61716, "folder-blank"], "f07b", "M0 96C0 60.7 28.7 32 64 32H196.1c19.1 0 37.4 7.6 50.9 21.1L289.9 96H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM64 80c-8.8 0-16 7.2-16 16V416c0 8.8 7.2 16 16 16H448c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16H286.6c-10.6 0-20.8-4.2-28.3-11.7L213.1 87c-4.5-4.5-10.6-7-17-7H64z"],
"user": [448, 512, [128100, 62144], "f007", "M304 128a80 80 0 1 0 -160 0 80 80 0 1 0 160 0zM96 128a128 128 0 1 1 256 0A128 128 0 1 1 96 128zM49.3 464H398.7c-8.9-63.3-63.3-112-129-112H178.3c-65.7 0-120.1 48.7-129 112zM0 482.3C0 383.8 79.8 304 178.3 304h91.4C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7H29.7C13.3 512 0 498.7 0 482.3z"],
"square-caret-left": [448, 512, ["caret-square-left"], "f191", "M48 416c0 8.8 7.2 16 16 16l320 0c8.8 0 16-7.2 16-16l0-320c0-8.8-7.2-16-16-16L64 80c-8.8 0-16 7.2-16 16l0 320zm16 64c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l320 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480zm64-224c0-6.7 2.8-13 7.7-17.6l112-104c7-6.5 17.2-8.2 25.9-4.4s14.4 12.5 14.4 22l0 208c0 9.5-5.7 18.2-14.4 22s-18.9 2.1-25.9-4.4l-112-104c-4.9-4.5-7.7-10.9-7.7-17.6z"],
"star": [576, 512, [11088, 61446], "f005", "M287.9 0c9.2 0 17.6 5.2 21.6 13.5l68.6 141.3 153.2 22.6c9 1.3 16.5 7.6 19.3 16.3s.5 18.1-5.9 24.5L433.6 328.4l26.2 155.6c1.5 9-2.2 18.1-9.6 23.5s-17.3 6-25.3 1.7l-137-73.2L151 509.1c-8.1 4.3-17.9 3.7-25.3-1.7s-11.2-14.5-9.7-23.5l26.2-155.6L31.1 218.2c-6.5-6.4-8.7-15.9-5.9-24.5s10.3-14.9 19.3-16.3l153.2-22.6L266.3 13.5C270.4 5.2 278.7 0 287.9 0zm0 79L235.4 187.2c-3.5 7.1-10.2 12.1-18.1 13.3L99 217.9 184.9 303c5.5 5.5 8.1 13.3 6.8 21L171.4 443.7l105.2-56.2c7.1-3.8 15.6-3.8 22.6 0l105.2 56.2L384.2 324.1c-1.3-7.7 1.2-15.5 6.8-21l85.9-85.1L358.6 200.5c-7.8-1.2-14.6-6.1-18.1-13.3L287.9 79z"],
"chess-knight": [448, 512, [9822], "f441", "M226.6 48H117.3l17.1 12.8c6 4.5 9.6 11.6 9.6 19.2s-3.6 14.7-9.6 19.2l-6.5 4.9c-10 7.5-16 19.3-16 31.9l-.3 91c0 10.2 4.9 19.9 13.2 25.8l1.9 1.3c9.9 7.1 23.3 7 33.2-.1l49.9-36.3c10.7-7.8 25.7-5.4 33.5 5.3s5.4 25.7-5.3 33.5l-49.9 36.3-53.8 39.1c-7.3 5.3-13 12.2-16.9 20.1H66.8c5.3-22.1 17.8-41.9 35.9-56.3c-1.3-.8-2.6-1.7-3.8-2.6L97 291.8c-21-15-33.4-39.2-33.3-65l.3-91c.1-19.8 6.7-38.7 18.6-53.9l-.4-.3C70.7 73 64 59.6 64 45.3C64 20.3 84.3 0 109.3 0H226.6C331.2 0 416 84.8 416 189.4c0 11.1-1 22.2-2.9 33.2L390.1 352H341.3l24.5-137.8c1.5-8.2 2.2-16.5 2.2-24.8C368 111.3 304.7 48 226.6 48zM85.2 432L68.7 464H379.3l-16.6-32H85.2zm315.7-30.7l26.5 51.2c3 5.8 4.6 12.2 4.6 18.7c0 22.5-18.2 40.8-40.8 40.8H56.8C34.2 512 16 493.8 16 471.2c0-6.5 1.6-12.9 4.6-18.7l26.5-51.2C52.5 390.7 63.5 384 75.5 384h297c12 0 22.9 6.7 28.4 17.3zM172 128a20 20 0 1 1 0 40 20 20 0 1 1 0-40z"],
"face-laugh-squint": [512, 512, ["laugh-squint"], "f59b", "M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm130.7 57.9c-4.2-13.6 7.1-25.9 21.3-25.9H364.5c14.2 0 25.5 12.4 21.3 25.9C369 368.4 318.2 408 258.2 408s-110.8-39.6-127.5-94.1zm2.8-183.3l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6c0-9 9.6-14.7 17.5-10.5zM396 141.1c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9c7.9-4.2 17.5 1.5 17.5 10.5z"],
"face-laugh": [512, 512, ["laugh"], "f599", "M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm130.7 57.9c-4.2-13.6 7.1-25.9 21.3-25.9H364.5c14.2 0 25.5 12.4 21.3 25.9C369 368.4 318.2 408 258.2 408s-110.8-39.6-127.5-94.1zM144.4 192a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"],
"folder-open": [576, 512, [128194, 128449, 61717], "f07c", "M384 480h48c11.4 0 21.9-6 27.6-15.9l112-192c5.8-9.9 5.8-22.1 .1-32.1S555.5 224 544 224H144c-11.4 0-21.9 6-27.6 15.9L48 357.1V96c0-8.8 7.2-16 16-16H181.5c4.2 0 8.3 1.7 11.3 4.7l26.5 26.5c21 21 49.5 32.8 79.2 32.8H416c8.8 0 16 7.2 16 16v32h48V160c0-35.3-28.7-64-64-64H298.5c-17 0-33.3-6.7-45.3-18.7L226.7 50.7c-12-12-28.3-18.7-45.3-18.7H64C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H87.7 384z"],
"clipboard": [384, 512, [128203], "f328", "M280 64h40c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128C0 92.7 28.7 64 64 64h40 9.6C121 27.5 153.3 0 192 0s71 27.5 78.4 64H280zM64 112c-8.8 0-16 7.2-16 16V448c0 8.8 7.2 16 16 16H320c8.8 0 16-7.2 16-16V128c0-8.8-7.2-16-16-16H304v24c0 13.3-10.7 24-24 24H192 104c-13.3 0-24-10.7-24-24V112H64zm128-8a24 24 0 1 0 0-48 24 24 0 1 0 0 48z"],
"chess-queen": [512, 512, [9819], "f445", "M256 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-95.2-8c-18.1 0-31.3 12.8-35.6 26.9c-8 26.2-32.4 45.2-61.2 45.2c-10 0-19.4-2.3-27.7-6.3c-7.6-3.7-16.7-3.3-24 1.2C.7 162.1-3.1 177.1 3.7 188.9L97.6 352H153l-83-144.1c40.5-2.2 75.3-25.9 93.1-59.8c22 26.8 55.4 43.9 92.8 43.9s70.8-17.1 92.8-43.9c17.8 34 52.6 57.7 93.1 59.8L359 352h55.4l93.9-163.1c6.8-11.7 3-26.7-8.6-33.8c-7.3-4.5-16.4-4.9-24-1.2c-8.4 4-17.7 6.3-27.7 6.3c-28.8 0-53.2-19-61.2-45.2C382.5 100.8 369.3 88 351.2 88c-14.5 0-26.3 8.5-32.4 19.3c-12.4 22-35.9 36.7-62.8 36.7s-50.4-14.8-62.8-36.7C187.1 96.5 175.4 88 160.8 88zM133.2 432H378.8l16.6 32H116.7l16.6-32zm283.7-30.7c-5.5-10.6-16.5-17.3-28.4-17.3h-265c-12 0-22.9 6.7-28.4 17.3L68.6 452.5c-3 5.8-4.6 12.2-4.6 18.7c0 22.5 18.2 40.8 40.8 40.8H407.2c22.5 0 40.8-18.2 40.8-40.8c0-6.5-1.6-12.9-4.6-18.7l-26.5-51.2z"],
"hand-back-fist": [448, 512, ["hand-rock"], "f255", "M144 64c0-8.8 7.2-16 16-16s16 7.2 16 16c0 9.1 5.1 17.4 13.3 21.5s17.9 3.2 25.1-2.3c2.7-2 6-3.2 9.6-3.2c8.8 0 16 7.2 16 16c0 9.1 5.1 17.4 13.3 21.5s17.9 3.2 25.1-2.3c2.7-2 6-3.2 9.6-3.2c8.8 0 16 7.2 16 16c0 9.1 5.1 17.4 13.3 21.5s17.9 3.2 25.1-2.3c2.7-2 6-3.2 9.6-3.2c8.8 0 16 7.2 16 16V264c0 31.3-20 58-48 67.9c-9.6 3.4-16 12.5-16 22.6V488c0 13.3 10.7 24 24 24s24-10.7 24-24V370.2c38-20.1 64-60.1 64-106.2V160c0-35.3-28.7-64-64-64c-2.8 0-5.6 .2-8.3 .5C332.8 77.1 311.9 64 288 64c-2.8 0-5.6 .2-8.3 .5C268.8 45.1 247.9 32 224 32c-2.8 0-5.6 .2-8.3 .5C204.8 13.1 183.9 0 160 0C124.7 0 96 28.7 96 64v64.3c-11.7 7.4-22.5 16.4-32 26.9l17.8 16.1L64 155.2l-9.4 10.5C40 181.8 32 202.8 32 224.6v12.8c0 49.6 24.2 96.1 64.8 124.5l13.8-19.7L96.8 361.9l8.9 6.2c6.9 4.8 14.4 8.6 22.3 11.3V488c0 13.3 10.7 24 24 24s24-10.7 24-24V359.9c0-12.6-9.8-23.1-22.4-23.9c-7.3-.5-14.3-2.9-20.3-7.1l-13.1 18.7 13.1-18.7-8.9-6.2C96.6 303.1 80 271.3 80 237.4V224.6c0-9.9 3.7-19.4 10.3-26.8l9.4-10.5c3.8-4.2 7.9-8.1 12.3-11.6V208c0 8.8 7.2 16 16 16s16-7.2 16-16V142.3 128 64z"],
"square-caret-up": [448, 512, ["caret-square-up"], "f151", "M64 80c-8.8 0-16 7.2-16 16l0 320c0 8.8 7.2 16 16 16l320 0c8.8 0 16-7.2 16-16l0-320c0-8.8-7.2-16-16-16L64 80zM0 96C0 60.7 28.7 32 64 32l320 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zm224 64c6.7 0 13 2.8 17.6 7.7l104 112c6.5 7 8.2 17.2 4.4 25.9s-12.5 14.4-22 14.4l-208 0c-9.5 0-18.2-5.7-22-14.4s-2.1-18.9 4.4-25.9l104-112c4.5-4.9 10.9-7.7 17.6-7.7z"],
"chart-bar": [512, 512, ["bar-chart"], "f080", "M24 32c13.3 0 24 10.7 24 24V408c0 13.3 10.7 24 24 24H488c13.3 0 24 10.7 24 24s-10.7 24-24 24H72c-39.8 0-72-32.2-72-72V56C0 42.7 10.7 32 24 32zM128 136c0-13.3 10.7-24 24-24l208 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-208 0c-13.3 0-24-10.7-24-24zm24 72H296c13.3 0 24 10.7 24 24s-10.7 24-24 24H152c-13.3 0-24-10.7-24-24s10.7-24 24-24zm0 96H424c13.3 0 24 10.7 24 24s-10.7 24-24 24H152c-13.3 0-24-10.7-24-24s10.7-24 24-24z"],
"window-restore": [512, 512, [], "f2d2", "M432 48H208c-17.7 0-32 14.3-32 32V96H128V80c0-44.2 35.8-80 80-80H432c44.2 0 80 35.8 80 80V304c0 44.2-35.8 80-80 80H416V336h16c17.7 0 32-14.3 32-32V80c0-17.7-14.3-32-32-32zM48 448c0 8.8 7.2 16 16 16H320c8.8 0 16-7.2 16-16V256H48V448zM64 128H320c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V192c0-35.3 28.7-64 64-64z"],
"square-plus": [448, 512, [61846, "plus-square"], "f0fe", "M64 80c-8.8 0-16 7.2-16 16V416c0 8.8 7.2 16 16 16H384c8.8 0 16-7.2 16-16V96c0-8.8-7.2-16-16-16H64zM0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM200 344V280H136c-13.3 0-24-10.7-24-24s10.7-24 24-24h64V168c0-13.3 10.7-24 24-24s24 10.7 24 24v64h64c13.3 0 24 10.7 24 24s-10.7 24-24 24H248v64c0 13.3-10.7 24-24 24s-24-10.7-24-24z"],
"image": [512, 512, [], "f03e", "M448 80c8.8 0 16 7.2 16 16V415.8l-5-6.5-136-176c-4.5-5.9-11.6-9.3-19-9.3s-14.4 3.4-19 9.3L202 340.7l-30.5-42.7C167 291.7 159.8 288 152 288s-15 3.7-19.5 10.1l-80 112L48 416.3l0-.3V96c0-8.8 7.2-16 16-16H448zM64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm80 192a48 48 0 1 0 0-96 48 48 0 1 0 0 96z"],
"folder-closed": [512, 512, [], "e185", "M251.7 127.6l0 0c10.5 10.5 24.7 16.4 39.6 16.4H448c8.8 0 16 7.2 16 16v32H48V96c0-8.8 7.2-16 16-16H197.5c4.2 0 8.3 1.7 11.3 4.7l33.9-33.9L208.8 84.7l42.9 42.9zM48 240H464V416c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16V240zM285.7 93.7L242.7 50.7c-12-12-28.3-18.7-45.3-18.7H64C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H291.3c-2.1 0-4.2-.8-5.7-2.3z"],
"lemon": [448, 512, [127819], "f094", "M368 80c-3.2 0-6.2 .4-8.9 1.3C340 86.8 313 91.9 284.8 84.6C227.4 69.7 160.2 92 110.1 142.1S37.7 259.4 52.6 316.8c7.3 28.2 2.2 55.2-3.3 74.3c-.8 2.8-1.3 5.8-1.3 8.9c0 17.7 14.3 32 32 32c3.2 0 6.2-.4 8.9-1.3c19.1-5.5 46.1-10.7 74.3-3.3c57.4 14.9 124.6-7.4 174.7-57.5s72.4-117.3 57.5-174.7c-7.3-28.2-2.2-55.2 3.3-74.3c.8-2.8 1.3-5.8 1.3-8.9c0-17.7-14.3-32-32-32zm0-48c44.2 0 80 35.8 80 80c0 7.7-1.1 15.2-3.1 22.3c-4.6 15.8-7.1 32.9-3 48.9c20.1 77.6-10.9 161.5-70 220.7s-143.1 90.2-220.7 70c-16-4.1-33-1.6-48.9 3c-7.1 2-14.6 3.1-22.3 3.1c-44.2 0-80-35.8-80-80c0-7.7 1.1-15.2 3.1-22.3c4.6-15.8 7.1-32.9 3-48.9C-14 251.3 17 167.3 76.2 108.2S219.3 18 296.8 38.1c16 4.1 33 1.6 48.9-3c7.1-2 14.6-3.1 22.3-3.1zM246.7 167c-52 15.2-96.5 59.7-111.7 111.7c-3.7 12.7-17.1 20-29.8 16.3s-20-17.1-16.3-29.8c19.8-67.7 76.6-124.5 144.3-144.3c12.7-3.7 26.1 3.6 29.8 16.3s-3.6 26.1-16.3 29.8z"],
"handshake": [640, 512, [], "f2b5", "M272.2 64.6l-51.1 51.1c-15.3 4.2-29.5 11.9-41.5 22.5L153 161.9C142.8 171 129.5 176 115.8 176H96V304c20.4 .6 39.8 8.9 54.3 23.4l35.6 35.6 7 7 0 0L219.9 397c6.2 6.2 16.4 6.2 22.6 0c1.7-1.7 3-3.7 3.7-5.8c2.8-7.7 9.3-13.5 17.3-15.3s16.4 .6 22.2 6.5L296.5 393c11.6 11.6 30.4 11.6 41.9 0c5.4-5.4 8.3-12.3 8.6-19.4c.4-8.8 5.6-16.6 13.6-20.4s17.3-3 24.4 2.1c9.4 6.7 22.5 5.8 30.9-2.6c9.4-9.4 9.4-24.6 0-33.9L340.1 243l-35.8 33c-27.3 25.2-69.2 25.6-97 .9c-31.7-28.2-32.4-77.4-1.6-106.5l70.1-66.2C303.2 78.4 339.4 64 377.1 64c36.1 0 71 13.3 97.9 37.2L505.1 128H544h40 40c8.8 0 16 7.2 16 16V352c0 17.7-14.3 32-32 32H576c-11.8 0-22.2-6.4-27.7-16H463.4c-3.4 6.7-7.9 13.1-13.5 18.7c-17.1 17.1-40.8 23.8-63 20.1c-3.6 7.3-8.5 14.1-14.6 20.2c-27.3 27.3-70 30-100.4 8.1c-25.1 20.8-62.5 19.5-86-4.1L159 404l-7-7-35.6-35.6c-5.5-5.5-12.7-8.7-20.4-9.3C96 369.7 81.6 384 64 384H32c-17.7 0-32-14.3-32-32V144c0-8.8 7.2-16 16-16H56 96h19.8c2 0 3.9-.7 5.3-2l26.5-23.6C175.5 77.7 211.4 64 248.7 64H259c4.4 0 8.9 .2 13.2 .6zM544 320V176H496c-5.9 0-11.6-2.2-15.9-6.1l-36.9-32.8c-18.2-16.2-41.7-25.1-66.1-25.1c-25.4 0-49.8 9.7-68.3 27.1l-70.1 66.2c-10.3 9.8-10.1 26.3 .5 35.7c9.3 8.3 23.4 8.1 32.5-.3l71.9-66.4c9.7-9 24.9-8.4 33.9 1.4s8.4 24.9-1.4 33.9l-.8 .8 74.4 74.4c10 10 16.5 22.3 19.4 35.1H544zM64 336a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm528 16a16 16 0 1 0 0-32 16 16 0 1 0 0 32z"],
"gem": [512, 512, [128142], "f3a5", "M168.5 72L256 165l87.5-93h-175zM383.9 99.1L311.5 176h129L383.9 99.1zm50 124.9H256 78.1L256 420.3 433.9 224zM71.5 176h129L128.1 99.1 71.5 176zm434.3 40.1l-232 256c-4.5 5-11 7.9-17.8 7.9s-13.2-2.9-17.8-7.9l-232-256c-7.7-8.5-8.3-21.2-1.5-30.4l112-152c4.5-6.1 11.7-9.8 19.3-9.8H376c7.6 0 14.8 3.6 19.3 9.8l112 152c6.8 9.2 6.1 21.9-1.5 30.4z"],
"circle-play": [512, 512, [61469, "play-circle"], "f144", "M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM188.3 147.1c7.6-4.2 16.8-4.1 24.3 .5l144 88c7.1 4.4 11.5 12.1 11.5 20.5s-4.4 16.1-11.5 20.5l-144 88c-7.4 4.5-16.7 4.7-24.3 .5s-12.3-12.2-12.3-20.9V168c0-8.7 4.7-16.7 12.3-20.9z"],
"circle-check": [512, 512, [61533, "check-circle"], "f058", "M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM369 209c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-111 111-47-47c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0L369 209z"],
"circle-stop": [512, 512, [62094, "stop-circle"], "f28d", "M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm192-96H320c17.7 0 32 14.3 32 32V320c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V192c0-17.7 14.3-32 32-32z"],
"id-badge": [384, 512, [], "f2c1", "M256 48V64c0 17.7-14.3 32-32 32H160c-17.7 0-32-14.3-32-32V48H64c-8.8 0-16 7.2-16 16V448c0 8.8 7.2 16 16 16H320c8.8 0 16-7.2 16-16V64c0-8.8-7.2-16-16-16H256zM0 64C0 28.7 28.7 0 64 0H320c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zM160 320h64c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80zm-32-96a64 64 0 1 1 128 0 64 64 0 1 1 -128 0z"],
"face-laugh-beam": [512, 512, [128513, "laugh-beam"], "f59a", "M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm130.7 57.9c-4.2-13.6 7.1-25.9 21.3-25.9H364.5c14.2 0 25.5 12.4 21.3 25.9C369 368.4 318.2 408 258.2 408s-110.8-39.6-127.5-94.1zm86.9-85.1l0 0 0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0zm160 0l0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0 0 0z"],
"registered": [512, 512, [174], "f25d", "M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM160 152V264v96c0 13.3 10.7 24 24 24s24-10.7 24-24V288h60.9l37.2 81.9c5.5 12.1 19.7 17.4 31.8 11.9s17.4-19.7 11.9-31.8L315.7 275c21.8-14.3 36.3-39 36.3-67c0-44.2-35.8-80-80-80H184c-13.3 0-24 10.7-24 24zm48 88V176h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H208z"],
"address-card": [576, 512, [62140, "contact-card", "vcard"], "f2bb", "M512 80c8.8 0 16 7.2 16 16V416c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16V96c0-8.8 7.2-16 16-16H512zM64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM208 256a64 64 0 1 0 0-128 64 64 0 1 0 0 128zm-32 32c-44.2 0-80 35.8-80 80c0 8.8 7.2 16 16 16H304c8.8 0 16-7.2 16-16c0-44.2-35.8-80-80-80H176zM376 144c-13.3 0-24 10.7-24 24s10.7 24 24 24h80c13.3 0 24-10.7 24-24s-10.7-24-24-24H376zm0 96c-13.3 0-24 10.7-24 24s10.7 24 24 24h80c13.3 0 24-10.7 24-24s-10.7-24-24-24H376z"],
"face-tired": [512, 512, [128555, "tired"], "f5c8", "M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm176.5 64.3C196.1 302.1 223.8 288 256 288s59.9 14.1 79.5 32.3C354.5 338.1 368 362 368 384c0 5.4-2.7 10.4-7.2 13.4s-10.2 3.4-15.2 1.3l-17.2-7.5c-22.8-10-47.5-15.1-72.4-15.1s-49.6 5.2-72.4 15.1l-17.2 7.5c-4.9 2.2-10.7 1.7-15.2-1.3s-7.2-8-7.2-13.4c0-22 13.5-45.9 32.5-63.7zm-43-173.6l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6c0-9 9.6-14.7 17.5-10.5zM396 157.1c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9c7.9-4.2 17.5 1.5 17.5 10.5z"],
"font-awesome": [448, 512, [62501, 62694, "font-awesome-flag", "font-awesome-logo-full"], "f2b4", "M48 56c0-13.3-10.7-24-24-24S0 42.7 0 56V456c0 13.3 10.7 24 24 24s24-10.7 24-24V124.2l12.5-2.4c16.7-3.2 31.5-8.5 44.2-13.1l0 0 0 0c3.7-1.3 7.1-2.6 10.4-3.7c15.2-5.2 30.4-9.1 51.2-9.1c25.6 0 43 6 63.5 13.3l.5 .2c20.9 7.4 44.8 15.9 79.1 15.9c32.4 0 53.7-6.8 90.5-19.6V342.9l-9.5 3.3c-41.5 14.4-55.2 19.2-81 19.2c-25.7 0-43.1-6-63.6-13.3l-.6-.2c-20.8-7.4-44.8-15.8-79-15.8c-16.8 0-31 2-43.9 5c-12.9 3-20.9 16-17.9 28.9s16 20.9 28.9 17.9c9.6-2.2 20.1-3.7 32.9-3.7c25.6 0 43 6 63.5 13.3l.5 .2c20.9 7.4 44.8 15.9 79.1 15.9c34.4 0 56.4-7.7 97.8-22.2c7.5-2.6 15.5-5.4 24.4-8.5l16.2-5.5V360 72 38.4L416.2 49.3c-9.7 3.3-18.2 6.3-25.7 8.9c-41.5 14.4-55.2 19.2-81 19.2c-25.7 0-43.1-6-63.6-13.3l-.6-.2c-20.8-7.4-44.8-15.8-79-15.8c-27.8 0-48.5 5.5-66.6 11.6c-4.9 1.7-9.3 3.3-13.6 4.8c-11.9 4.3-22 7.9-34.7 10.3L48 75.4V56z"],
"face-smile-wink": [512, 512, [128521, "smile-wink"], "f4da", "M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm177.6 62.1C192.8 334.5 218.8 352 256 352s63.2-17.5 78.4-33.9c9-9.7 24.2-10.4 33.9-1.4s10.4 24.2 1.4 33.9c-22 23.8-60 49.4-113.6 49.4s-91.7-25.5-113.6-49.4c-9-9.7-8.4-24.9 1.4-33.9s24.9-8.4 33.9 1.4zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm165.8 21.7c-7.6 8.1-20.2 8.5-28.3 .9s-8.5-20.2-.9-28.3c14.5-15.5 35.2-22.3 54.6-22.3s40.1 6.8 54.6 22.3c7.6 8.1 7.1 20.7-.9 28.3s-20.7 7.1-28.3-.9c-5.5-5.8-14.8-9.7-25.4-9.7s-19.9 3.8-25.4 9.7z"],
"file-word": [384, 512, [], "f1c2", "M48 448V64c0-8.8 7.2-16 16-16H224v80c0 17.7 14.3 32 32 32h80V448c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16zM64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V154.5c0-17-6.7-33.3-18.7-45.3L274.7 18.7C262.7 6.7 246.5 0 229.5 0H64zm55 241.1c-3.8-12.7-17.2-19.9-29.9-16.1s-19.9 17.2-16.1 29.9l48 160c3 10.2 12.4 17.1 23 17.1s19.9-7 23-17.1l25-83.4 25 83.4c3 10.2 12.4 17.1 23 17.1s19.9-7 23-17.1l48-160c3.8-12.7-3.4-26.1-16.1-29.9s-26.1 3.4-29.9 16.1l-25 83.4-25-83.4c-3-10.2-12.4-17.1-23-17.1s-19.9 7-23 17.1l-25 83.4-25-83.4z"],
"file-powerpoint": [384, 512, [], "f1c4", "M64 464c-8.8 0-16-7.2-16-16V64c0-8.8 7.2-16 16-16H224v80c0 17.7 14.3 32 32 32h80V448c0 8.8-7.2 16-16 16H64zM64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V154.5c0-17-6.7-33.3-18.7-45.3L274.7 18.7C262.7 6.7 246.5 0 229.5 0H64zm72 208c-13.3 0-24 10.7-24 24V336v56c0 13.3 10.7 24 24 24s24-10.7 24-24V360h44c42 0 76-34 76-76s-34-76-76-76H136zm68 104H160V256h44c15.5 0 28 12.5 28 28s-12.5 28-28 28z"],
"envelope-open": [512, 512, [62135], "f2b6", "M255.4 48.2c.2-.1 .4-.2 .6-.2s.4 .1 .6 .2L460.6 194c2.1 1.5 3.4 3.9 3.4 6.5v13.6L291.5 355.7c-20.7 17-50.4 17-71.1 0L48 214.1V200.5c0-2.6 1.2-5 3.4-6.5L255.4 48.2zM48 276.2L190 392.8c38.4 31.5 93.7 31.5 132 0L464 276.2V456c0 4.4-3.6 8-8 8H56c-4.4 0-8-3.6-8-8V276.2zM256 0c-10.2 0-20.2 3.2-28.5 9.1L23.5 154.9C8.7 165.4 0 182.4 0 200.5V456c0 30.9 25.1 56 56 56H456c30.9 0 56-25.1 56-56V200.5c0-18.1-8.7-35.1-23.4-45.6L284.5 9.1C276.2 3.2 266.2 0 256 0z"],
"file-zipper": [384, 512, ["file-archive"], "f1c6", "M64 464c-8.8 0-16-7.2-16-16V64c0-8.8 7.2-16 16-16h48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16h48v80c0 17.7 14.3 32 32 32h80V448c0 8.8-7.2 16-16 16H64zM64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V154.5c0-17-6.7-33.3-18.7-45.3L274.7 18.7C262.7 6.7 246.5 0 229.5 0H64zm48 112c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H128c-8.8 0-16 7.2-16 16zm0 64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H128c-8.8 0-16 7.2-16 16zm-6.3 71.8L82.1 335.9c-1.4 5.4-2.1 10.9-2.1 16.4c0 35.2 28.8 63.7 64 63.7s64-28.5 64-63.7c0-5.5-.7-11.1-2.1-16.4l-23.5-88.2c-3.7-14-16.4-23.8-30.9-23.8H136.6c-14.5 0-27.2 9.7-30.9 23.8zM128 336h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H128c-8.8 0-16-7.2-16-16s7.2-16 16-16z"],
"square": [448, 512, [9632, 9723, 9724, 61590], "f0c8", "M384 80c8.8 0 16 7.2 16 16V416c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16V96c0-8.8 7.2-16 16-16H384zM64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64z"],
"snowflake": [448, 512, [10052, 10054], "f2dc", "M224 0c13.3 0 24 10.7 24 24V70.1l23-23c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-57 57v76.5l66.2-38.2 20.9-77.8c3.4-12.8 16.6-20.4 29.4-17s20.4 16.6 17 29.4L373 142.2l37.1-21.4c11.5-6.6 26.2-2.7 32.8 8.8s2.7 26.2-8.8 32.8L397 183.8l31.5 8.4c12.8 3.4 20.4 16.6 17 29.4s-16.6 20.4-29.4 17l-77.8-20.9L272 256l66.2 38.2 77.8-20.9c12.8-3.4 26 4.2 29.4 17s-4.2 26-17 29.4L397 328.2l37.1 21.4c11.5 6.6 15.4 21.3 8.8 32.8s-21.3 15.4-32.8 8.8L373 369.8l8.4 31.5c3.4 12.8-4.2 26-17 29.4s-26-4.2-29.4-17l-20.9-77.8L248 297.6v76.5l57 57c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-23-23V488c0 13.3-10.7 24-24 24s-24-10.7-24-24V441.9l-23 23c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l57-57V297.6l-66.2 38.2-20.9 77.8c-3.4 12.8-16.6 20.4-29.4 17s-20.4-16.6-17-29.4L75 369.8 37.9 391.2c-11.5 6.6-26.2 2.7-32.8-8.8s-2.7-26.2 8.8-32.8L51 328.2l-31.5-8.4c-12.8-3.4-20.4-16.6-17-29.4s16.6-20.4 29.4-17l77.8 20.9L176 256l-66.2-38.2L31.9 238.6c-12.8 3.4-26-4.2-29.4-17s4.2-26 17-29.4L51 183.8 13.9 162.4c-11.5-6.6-15.4-21.3-8.8-32.8s21.3-15.4 32.8-8.8L75 142.2l-8.4-31.5c-3.4-12.8 4.2-26 17-29.4s26 4.2 29.4 17l20.9 77.8L200 214.4V137.9L143 81c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l23 23V24c0-13.3 10.7-24 24-24z"],
"newspaper": [512, 512, [128240], "f1ea", "M168 80c-13.3 0-24 10.7-24 24V408c0 8.4-1.4 16.5-4.1 24H440c13.3 0 24-10.7 24-24V104c0-13.3-10.7-24-24-24H168zM72 480c-39.8 0-72-32.2-72-72V112C0 98.7 10.7 88 24 88s24 10.7 24 24V408c0 13.3 10.7 24 24 24s24-10.7 24-24V104c0-39.8 32.2-72 72-72H440c39.8 0 72 32.2 72 72V408c0 39.8-32.2 72-72 72H72zM176 136c0-13.3 10.7-24 24-24h96c13.3 0 24 10.7 24 24v80c0 13.3-10.7 24-24 24H200c-13.3 0-24-10.7-24-24V136zm200-24h32c13.3 0 24 10.7 24 24s-10.7 24-24 24H376c-13.3 0-24-10.7-24-24s10.7-24 24-24zm0 80h32c13.3 0 24 10.7 24 24s-10.7 24-24 24H376c-13.3 0-24-10.7-24-24s10.7-24 24-24zM200 272H408c13.3 0 24 10.7 24 24s-10.7 24-24 24H200c-13.3 0-24-10.7-24-24s10.7-24 24-24zm0 80H408c13.3 0 24 10.7 24 24s-10.7 24-24 24H200c-13.3 0-24-10.7-24-24s10.7-24 24-24z"],
"face-kiss-wink-heart": [512, 512, [128536, "kiss-wink-heart"], "f598", "M338.9 446.8c-25.4 11-53.4 17.2-82.9 17.2C141.1 464 48 370.9 48 256S141.1 48 256 48s208 93.1 208 208c0 22.4-3.5 43.9-10.1 64.1c3.1 4.5 5.7 9.4 7.8 14.6c12.7-1.6 25.1 .4 36.2 5c9.1-26.2 14-54.4 14-83.7C512 114.6 397.4 0 256 0S0 114.6 0 256S114.6 512 256 512c35.4 0 69.1-7.2 99.7-20.2c-4.8-5.5-8.5-12.2-10.4-19.7l-6.5-25.3zM296 316c0-6.9-3.1-13.2-7.3-18.3c-4.3-5.2-10.1-9.7-16.7-13.4C258.7 276.9 241.4 272 224 272c-3.6 0-6.8 2.5-7.7 6s.6 7.2 3.8 9l0 0 0 0 0 0 .2 .1c.2 .1 .5 .3 .9 .5c.8 .5 2 1.2 3.4 2.1c2.8 1.9 6.5 4.5 10.2 7.6c3.7 3.1 7.2 6.6 9.6 10.1c2.5 3.5 3.5 6.4 3.5 8.6s-1 5-3.5 8.6c-2.5 3.5-5.9 6.9-9.6 10.1c-3.7 3.1-7.4 5.7-10.2 7.6c-1.4 .9-2.6 1.6-3.4 2.1c-.4 .2-.7 .4-.9 .5l-.2 .1 0 0 0 0 0 0 0 0 0 0c-2.5 1.4-4.1 4.1-4.1 7s1.6 5.6 4.1 7l0 0 0 0 0 0 .2 .1c.2 .1 .5 .3 .9 .5c.8 .5 2 1.2 3.4 2.1c2.8 1.9 6.5 4.5 10.2 7.6c3.7 3.1 7.2 6.6 9.6 10.1c2.5 3.5 3.5 6.4 3.5 8.6s-1 5-3.5 8.6c-2.5 3.5-5.9 6.9-9.6 10.1c-3.7 3.1-7.4 5.7-10.2 7.6c-1.4 .9-2.6 1.6-3.4 2.1c-.4 .2-.7 .4-.9 .5l-.2 .1 0 0 0 0 0 0 0 0c-3.2 1.8-4.7 5.5-3.8 9s4.1 6 7.7 6c17.4 0 34.7-4.9 47.9-12.3c6.6-3.7 12.5-8.2 16.7-13.4c4.3-5.1 7.3-11.4 7.3-18.3s-3.1-13.2-7.3-18.3c-4.3-5.2-10.1-9.7-16.7-13.4c-2.7-1.5-5.7-3-8.7-4.3c3.1-1.3 6-2.7 8.7-4.3c6.6-3.7 12.5-8.2 16.7-13.4c4.3-5.1 7.3-11.4 7.3-18.3zM176.4 240a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm159.3-20c10.6 0 19.9 3.8 25.4 9.7c7.6 8.1 20.2 8.5 28.3 .9s8.5-20.2 .9-28.3C375.7 186.8 355 180 335.6 180s-40.1 6.8-54.6 22.3c-7.6 8.1-7.1 20.7 .9 28.3s20.7 7.1 28.3-.9c5.5-5.8 14.8-9.7 25.4-9.7zM434 352.3c-6-23.2-28.8-37-51.1-30.8s-35.4 30.1-29.5 53.4l22.9 89.3c2.2 8.7 11.2 13.9 19.8 11.4l84.9-23.8c22.2-6.2 35.4-30.1 29.5-53.4s-28.8-37-51.1-30.8l-20.2 5.6-5.4-21z"],
"star-half-stroke": [640, 512, ["star-half-alt"], "f5c0", "M341.5 13.5C337.5 5.2 329.1 0 319.9 0s-17.6 5.2-21.6 13.5L229.7 154.8 76.5 177.5c-9 1.3-16.5 7.6-19.3 16.3s-.5 18.1 5.9 24.5L174.2 328.4 148 483.9c-1.5 9 2.2 18.1 9.7 23.5s17.3 6 25.3 1.7l137-73.2 137 73.2c8.1 4.3 17.9 3.7 25.3-1.7s11.2-14.5 9.7-23.5L465.6 328.4 576.8 218.2c6.5-6.4 8.7-15.9 5.9-24.5s-10.3-14.9-19.3-16.3L410.1 154.8 341.5 13.5zM320 384.7V79.1l52.5 108.1c3.5 7.1 10.2 12.1 18.1 13.3l118.3 17.5L423 303c-5.5 5.5-8.1 13.3-6.8 21l20.2 119.6L331.2 387.5c-3.5-1.9-7.4-2.8-11.2-2.8z"],
"file-excel": [384, 512, [], "f1c3", "M48 448V64c0-8.8 7.2-16 16-16H224v80c0 17.7 14.3 32 32 32h80V448c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16zM64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V154.5c0-17-6.7-33.3-18.7-45.3L274.7 18.7C262.7 6.7 246.5 0 229.5 0H64zm90.9 233.3c-8.1-10.5-23.2-12.3-33.7-4.2s-12.3 23.2-4.2 33.7L161.6 320l-44.5 57.3c-8.1 10.5-6.3 25.5 4.2 33.7s25.5 6.3 33.7-4.2L192 359.1l37.1 47.6c8.1 10.5 23.2 12.3 33.7 4.2s12.3-23.2 4.2-33.7L222.4 320l44.5-57.3c8.1-10.5 6.3-25.5-4.2-33.7s-25.5-6.3-33.7 4.2L192 280.9l-37.1-47.6z"],
"face-grin-beam": [512, 512, [128516, "grin-beam"], "f582", "M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm349.5 52.4c18.7-4.4 35.9 12 25.5 28.1C350.4 374.6 306.3 400 255.9 400s-94.5-25.4-119.1-63.5c-10.4-16.1 6.8-32.5 25.5-28.1c28.9 6.8 60.5 10.5 93.6 10.5s64.7-3.7 93.6-10.5zM217.6 228.8l0 0 0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0zm160 0l0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0 0 0z"],
"object-ungroup": [640, 512, [], "f248", "M48.2 66.8c-.1-.8-.2-1.7-.2-2.5c0-.1 0-.1 0-.2c0-8.8 7.2-16 16-16c.9 0 1.9 .1 2.8 .2C74.3 49.5 80 56.1 80 64c0 8.8-7.2 16-16 16c-7.9 0-14.5-5.7-15.8-13.2zM0 64c0 26.9 16.5 49.9 40 59.3V228.7C16.5 238.1 0 261.1 0 288c0 35.3 28.7 64 64 64c26.9 0 49.9-16.5 59.3-40H324.7c9.5 23.5 32.5 40 59.3 40c35.3 0 64-28.7 64-64c0-26.9-16.5-49.9-40-59.3V123.3c23.5-9.5 40-32.5 40-59.3c0-35.3-28.7-64-64-64c-26.9 0-49.9 16.5-59.3 40H123.3C113.9 16.5 90.9 0 64 0C28.7 0 0 28.7 0 64zm368 0a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zM324.7 88c6.5 16 19.3 28.9 35.3 35.3V228.7c-16 6.5-28.9 19.3-35.3 35.3H123.3c-6.5-16-19.3-28.9-35.3-35.3V123.3c16-6.5 28.9-19.3 35.3-35.3H324.7zM384 272a16 16 0 1 1 0 32 16 16 0 1 1 0-32zM80 288c0 7.9-5.7 14.5-13.2 15.8c-.8 .1-1.7 .2-2.5 .2l-.2 0c-8.8 0-16-7.2-16-16c0-.9 .1-1.9 .2-2.8C49.5 277.7 56.1 272 64 272c8.8 0 16 7.2 16 16zm391.3-40h45.4c6.5 16 19.3 28.9 35.3 35.3V388.7c-16 6.5-28.9 19.3-35.3 35.3H315.3c-6.5-16-19.3-28.9-35.3-35.3V352H232v36.7c-23.5 9.5-40 32.5-40 59.3c0 35.3 28.7 64 64 64c26.9 0 49.9-16.5 59.3-40H516.7c9.5 23.5 32.5 40 59.3 40c35.3 0 64-28.7 64-64c0-26.9-16.5-49.9-40-59.3V283.3c23.5-9.5 40-32.5 40-59.3c0-35.3-28.7-64-64-64c-26.9 0-49.9 16.5-59.3 40H448v16.4c9.8 8.8 17.8 19.5 23.3 31.6zm88.9-26.7a16 16 0 1 1 31.5 5.5 16 16 0 1 1 -31.5-5.5zM271.8 450.7a16 16 0 1 1 -31.5-5.5 16 16 0 1 1 31.5 5.5zm301.5 13c-7.5-1.3-13.2-7.9-13.2-15.8c0-8.8 7.2-16 16-16c7.9 0 14.5 5.7 15.8 13.2l0 .1c.1 .9 .2 1.8 .2 2.7c0 8.8-7.2 16-16 16c-.9 0-1.9-.1-2.8-.2z"],
"circle-right": [512, 512, [61838, "arrow-alt-circle-right"], "f35a", "M464 256A208 208 0 1 1 48 256a208 208 0 1 1 416 0zM0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zM294.6 135.1c-4.2-4.5-10.1-7.1-16.3-7.1C266 128 256 138 256 150.3V208H160c-17.7 0-32 14.3-32 32v32c0 17.7 14.3 32 32 32h96v57.7c0 12.3 10 22.3 22.3 22.3c6.2 0 12.1-2.6 16.3-7.1l99.9-107.1c3.5-3.8 5.5-8.7 5.5-13.8s-2-10.1-5.5-13.8L294.6 135.1z"],
"face-rolling-eyes": [512, 512, [128580, "meh-rolling-eyes"], "f5a5", "M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM168 376c0 13.3 10.7 24 24 24H320c13.3 0 24-10.7 24-24s-10.7-24-24-24H192c-13.3 0-24 10.7-24 24zm-8-104c-26.5 0-48-21.5-48-48c0-14.3 6.3-27.2 16.2-36c-.2 1.3-.2 2.6-.2 4c0 17.7 14.3 32 32 32s32-14.3 32-32c0-1.4-.1-2.7-.2-4c10 8.8 16.2 21.7 16.2 36c0 26.5-21.5 48-48 48zm0 32a80 80 0 1 0 0-160 80 80 0 1 0 0 160zm192-32c-26.5 0-48-21.5-48-48c0-14.3 6.3-27.2 16.2-36c-.2 1.3-.2 2.6-.2 4c0 17.7 14.3 32 32 32s32-14.3 32-32c0-1.4-.1-2.7-.2-4c10 8.8 16.2 21.7 16.2 36c0 26.5-21.5 48-48 48zm0 32a80 80 0 1 0 0-160 80 80 0 1 0 0 160z"],
"object-group": [576, 512, [], "f247", "M48 115.8C38.2 107 32 94.2 32 80c0-26.5 21.5-48 48-48c14.2 0 27 6.2 35.8 16H460.2c8.8-9.8 21.6-16 35.8-16c26.5 0 48 21.5 48 48c0 14.2-6.2 27-16 35.8V396.2c9.8 8.8 16 21.6 16 35.8c0 26.5-21.5 48-48 48c-14.2 0-27-6.2-35.8-16H115.8c-8.8 9.8-21.6 16-35.8 16c-26.5 0-48-21.5-48-48c0-14.2 6.2-27 16-35.8V115.8zM125.3 96c-4.8 13.6-15.6 24.4-29.3 29.3V386.7c13.6 4.8 24.4 15.6 29.3 29.3H450.7c4.8-13.6 15.6-24.4 29.3-29.3V125.3c-13.6-4.8-24.4-15.6-29.3-29.3H125.3zm2.7 64c0-17.7 14.3-32 32-32H288c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H160c-17.7 0-32-14.3-32-32V160zM256 320h32c35.3 0 64-28.7 64-64V224h64c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H288c-17.7 0-32-14.3-32-32V320z"],
"heart": [512, 512, [128153, 128154, 128155, 128156, 128420, 129293, 129294, 129505, 9829, 10084, 61578], "f004", "M225.8 468.2l-2.5-2.3L48.1 303.2C17.4 274.7 0 234.7 0 192.8v-3.3c0-70.4 50-130.8 119.2-144C158.6 37.9 198.9 47 231 69.6c9 6.4 17.4 13.8 25 22.3c4.2-4.8 8.7-9.2 13.5-13.3c3.7-3.2 7.5-6.2 11.5-9c0 0 0 0 0 0C313.1 47 353.4 37.9 392.8 45.4C462 58.6 512 119.1 512 189.5v3.3c0 41.9-17.4 81.9-48.1 110.4L288.7 465.9l-2.5 2.3c-8.2 7.6-19 11.9-30.2 11.9s-22-4.2-30.2-11.9zM239.1 145c-.4-.3-.7-.7-1-1.1l-17.8-20c0 0-.1-.1-.1-.1c0 0 0 0 0 0c-23.1-25.9-58-37.7-92-31.2C81.6 101.5 48 142.1 48 189.5v3.3c0 28.5 11.9 55.8 32.8 75.2L256 430.7 431.2 268c20.9-19.4 32.8-46.7 32.8-75.2v-3.3c0-47.3-33.6-88-80.1-96.9c-34-6.5-69 5.4-92 31.2c0 0 0 0-.1 .1s0 0-.1 .1l-17.8 20c-.3 .4-.7 .7-1 1.1c-4.5 4.5-10.6 7-16.9 7s-12.4-2.5-16.9-7z"],
"face-surprise": [512, 512, [128558, "surprise"], "f5c2", "M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm176.4-80a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM256 288a64 64 0 1 1 0 128 64 64 0 1 1 0-128z"],
"circle-pause": [512, 512, [62092, "pause-circle"], "f28b", "M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm224-72V328c0 13.3-10.7 24-24 24s-24-10.7-24-24V184c0-13.3 10.7-24 24-24s24 10.7 24 24zm112 0V328c0 13.3-10.7 24-24 24s-24-10.7-24-24V184c0-13.3 10.7-24 24-24s24 10.7 24 24z"],
"circle": [512, 512, [128308, 128309, 128992, 128993, 128994, 128995, 128996, 9679, 9898, 9899, 11044, 61708, 61915], "f111", "M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256z"],
"circle-up": [512, 512, [61467, "arrow-alt-circle-up"], "f35b", "M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM135.1 217.4c-4.5 4.2-7.1 10.1-7.1 16.3c0 12.3 10 22.3 22.3 22.3H208v96c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V256h57.7c12.3 0 22.3-10 22.3-22.3c0-6.2-2.6-12.1-7.1-16.3L269.8 117.5c-3.8-3.5-8.7-5.5-13.8-5.5s-10.1 2-13.8 5.5L135.1 217.4z"],
"file-audio": [384, 512, [], "f1c7", "M64 464H320c8.8 0 16-7.2 16-16V160H256c-17.7 0-32-14.3-32-32V48H64c-8.8 0-16 7.2-16 16V448c0 8.8 7.2 16 16 16zM0 64C0 28.7 28.7 0 64 0H229.5c17 0 33.3 6.7 45.3 18.7l90.5 90.5c12 12 18.7 28.3 18.7 45.3V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zM192 272V400c0 6.5-3.9 12.3-9.9 14.8s-12.9 1.1-17.4-3.5L129.4 376H112c-8.8 0-16-7.2-16-16V312c0-8.8 7.2-16 16-16h17.4l35.3-35.3c4.6-4.6 11.5-5.9 17.4-3.5s9.9 8.3 9.9 14.8zm85.8-4c11.6 20 18.2 43.3 18.2 68s-6.6 48-18.2 68c-6.6 11.5-21.3 15.4-32.8 8.8s-15.4-21.3-8.8-32.8c7.5-12.9 11.8-27.9 11.8-44s-4.3-31.1-11.8-44c-6.6-11.5-2.7-26.2 8.8-32.8s26.2-2.7 32.8 8.8z"],
"file-image": [384, 512, [128443], "f1c5", "M64 464c-8.8 0-16-7.2-16-16V64c0-8.8 7.2-16 16-16H224v80c0 17.7 14.3 32 32 32h80V448c0 8.8-7.2 16-16 16H64zM64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V154.5c0-17-6.7-33.3-18.7-45.3L274.7 18.7C262.7 6.7 246.5 0 229.5 0H64zm96 256a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm69.2 46.9c-3-4.3-7.9-6.9-13.2-6.9s-10.2 2.6-13.2 6.9l-41.3 59.7-11.9-19.1c-2.9-4.7-8.1-7.5-13.6-7.5s-10.6 2.8-13.6 7.5l-40 64c-3.1 4.9-3.2 11.1-.4 16.2s8.2 8.2 14 8.2h48 32 40 72c6 0 11.4-3.3 14.2-8.6s2.4-11.6-1-16.5l-72-104z"],
"circle-question": [512, 512, [62108, "question-circle"], "f059", "M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm169.8-90.7c7.9-22.3 29.1-37.3 52.8-37.3h58.3c34.9 0 63.1 28.3 63.1 63.1c0 22.6-12.1 43.5-31.7 54.8L280 264.4c-.2 13-10.9 23.6-24 23.6c-13.3 0-24-10.7-24-24V250.5c0-8.6 4.6-16.5 12.1-20.8l44.3-25.4c4.7-2.7 7.6-7.7 7.6-13.1c0-8.4-6.8-15.1-15.1-15.1H222.6c-3.4 0-6.4 2.1-7.5 5.3l-.4 1.2c-4.4 12.5-18.2 19-30.6 14.6s-19-18.2-14.6-30.6l.4-1.2zM224 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z"],
"face-meh-blank": [512, 512, [128566, "meh-blank"], "f5a4", "M256 48a208 208 0 1 0 0 416 208 208 0 1 0 0-416zM512 256A256 256 0 1 1 0 256a256 256 0 1 1 512 0zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"],
"eye": [576, 512, [128065], "f06e", "M288 80c-65.2 0-118.8 29.6-159.9 67.7C89.6 183.5 63 226 49.4 256c13.6 30 40.2 72.5 78.6 108.3C169.2 402.4 222.8 432 288 432s118.8-29.6 159.9-67.7C486.4 328.5 513 286 526.6 256c-13.6-30-40.2-72.5-78.6-108.3C406.8 109.6 353.2 80 288 80zM95.4 112.6C142.5 68.8 207.2 32 288 32s145.5 36.8 192.6 80.6c46.8 43.5 78.1 95.4 93 131.1c3.3 7.9 3.3 16.7 0 24.6c-14.9 35.7-46.2 87.7-93 131.1C433.5 443.2 368.8 480 288 480s-145.5-36.8-192.6-80.6C48.6 356 17.3 304 2.5 268.3c-3.3-7.9-3.3-16.7 0-24.6C17.3 208 48.6 156 95.4 112.6zM288 336c44.2 0 80-35.8 80-80s-35.8-80-80-80c-.7 0-1.3 0-2 0c1.3 5.1 2 10.5 2 16c0 35.3-28.7 64-64 64c-5.5 0-10.9-.7-16-2c0 .7 0 1.3 0 2c0 44.2 35.8 80 80 80zm0-208a128 128 0 1 1 0 256 128 128 0 1 1 0-256z"],
"face-sad-cry": [512, 512, [128557, "sad-cry"], "f5b3", "M400 406.1V288c0-13.3-10.7-24-24-24s-24 10.7-24 24V440.6c-28.7 15-61.4 23.4-96 23.4s-67.3-8.5-96-23.4V288c0-13.3-10.7-24-24-24s-24 10.7-24 24V406.1C72.6 368.2 48 315 48 256C48 141.1 141.1 48 256 48s208 93.1 208 208c0 59-24.6 112.2-64 150.1zM256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM159.6 220c10.6 0 19.9 3.8 25.4 9.7c7.6 8.1 20.2 8.5 28.3 .9s8.5-20.2 .9-28.3C199.7 186.8 179 180 159.6 180s-40.1 6.8-54.6 22.3c-7.6 8.1-7.1 20.7 .9 28.3s20.7 7.1 28.3-.9c5.5-5.8 14.8-9.7 25.4-9.7zm166.6 9.7c5.5-5.8 14.8-9.7 25.4-9.7s19.9 3.8 25.4 9.7c7.6 8.1 20.2 8.5 28.3 .9s8.5-20.2 .9-28.3C391.7 186.8 371 180 351.6 180s-40.1 6.8-54.6 22.3c-7.6 8.1-7.1 20.7 .9 28.3s20.7 7.1 28.3-.9zM208 320v32c0 26.5 21.5 48 48 48s48-21.5 48-48V320c0-26.5-21.5-48-48-48s-48 21.5-48 48z"],
"file-code": [384, 512, [], "f1c9", "M64 464c-8.8 0-16-7.2-16-16V64c0-8.8 7.2-16 16-16H224v80c0 17.7 14.3 32 32 32h80V448c0 8.8-7.2 16-16 16H64zM64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V154.5c0-17-6.7-33.3-18.7-45.3L274.7 18.7C262.7 6.7 246.5 0 229.5 0H64zm97 289c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L79 303c-9.4 9.4-9.4 24.6 0 33.9l48 48c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-31-31 31-31zM257 255c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l31 31-31 31c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l48-48c9.4-9.4 9.4-24.6 0-33.9l-48-48z"],
"window-maximize": [512, 512, [128470], "f2d0", "M.3 89.5C.1 91.6 0 93.8 0 96V224 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64V224 96c0-35.3-28.7-64-64-64H64c-2.2 0-4.4 .1-6.5 .3c-9.2 .9-17.8 3.8-25.5 8.2C21.8 46.5 13.4 55.1 7.7 65.5c-3.9 7.3-6.5 15.4-7.4 24zM48 224H464l0 192c0 8.8-7.2 16-16 16L64 432c-8.8 0-16-7.2-16-16l0-192z"],
"face-frown": [512, 512, [9785, "frown"], "f119", "M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM174.6 384.1c-4.5 12.5-18.2 18.9-30.7 14.4s-18.9-18.2-14.4-30.7C146.9 319.4 198.9 288 256 288s109.1 31.4 126.6 79.9c4.5 12.5-2 26.2-14.4 30.7s-26.2-2-30.7-14.4C328.2 358.5 297.2 336 256 336s-72.2 22.5-81.4 48.1zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"],
"floppy-disk": [448, 512, [128190, 128426, "save"], "f0c7", "M48 96V416c0 8.8 7.2 16 16 16H384c8.8 0 16-7.2 16-16V170.5c0-4.2-1.7-8.3-4.7-11.3l33.9-33.9c12 12 18.7 28.3 18.7 45.3V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H309.5c17 0 33.3 6.7 45.3 18.7l74.5 74.5-33.9 33.9L320.8 84.7c-.3-.3-.5-.5-.8-.8V184c0 13.3-10.7 24-24 24H104c-13.3 0-24-10.7-24-24V80H64c-8.8 0-16 7.2-16 16zm80-16v80H272V80H128zm32 240a64 64 0 1 1 128 0 64 64 0 1 1 -128 0z"],
"comment-dots": [512, 512, [128172, 62075, "commenting"], "f4ad", "M168.2 384.9c-15-5.4-31.7-3.1-44.6 6.4c-8.2 6-22.3 14.8-39.4 22.7c5.6-14.7 9.9-31.3 11.3-49.4c1-12.9-3.3-25.7-11.8-35.5C60.4 302.8 48 272 48 240c0-79.5 83.3-160 208-160s208 80.5 208 160s-83.3 160-208 160c-31.6 0-61.3-5.5-87.8-15.1zM26.3 423.8c-1.6 2.7-3.3 5.4-5.1 8.1l-.3 .5c-1.6 2.3-3.2 4.6-4.8 6.9c-3.5 4.7-7.3 9.3-11.3 13.5c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c5.1 0 10.2-.3 15.3-.8l.7-.1c4.4-.5 8.8-1.1 13.2-1.9c.8-.1 1.6-.3 2.4-.5c17.8-3.5 34.9-9.5 50.1-16.1c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9zM144 272a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm144-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm80 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z"],
"face-grin-squint": [512, 512, [128518, "grin-squint"], "f585", "M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm349.5 52.4c18.7-4.4 35.9 12 25.5 28.1C350.4 374.6 306.3 400 255.9 400s-94.5-25.4-119.1-63.5c-10.4-16.1 6.8-32.5 25.5-28.1c28.9 6.8 60.5 10.5 93.6 10.5s64.7-3.7 93.6-10.5zm-216-161.7l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6c0-9 9.6-14.7 17.5-10.5zM396 157.1c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9c7.9-4.2 17.5 1.5 17.5 10.5z"],
"hand-pointer": [448, 512, [], "f25a", "M160 64c0-8.8 7.2-16 16-16s16 7.2 16 16V200c0 10.3 6.6 19.5 16.4 22.8s20.6-.1 26.8-8.3c3-3.9 7.6-6.4 12.8-6.4c8.8 0 16 7.2 16 16c0 10.3 6.6 19.5 16.4 22.8s20.6-.1 26.8-8.3c3-3.9 7.6-6.4 12.8-6.4c7.8 0 14.3 5.6 15.7 13c1.6 8.2 7.3 15.1 15.1 18s16.7 1.6 23.3-3.6c2.7-2.1 6.1-3.4 9.9-3.4c8.8 0 16 7.2 16 16l0 16V392c0 39.8-32.2 72-72 72H272 212.3h-.9c-37.4 0-72.4-18.7-93.2-49.9L50.7 312.9c-4.9-7.4-2.9-17.3 4.4-22.2s17.3-2.9 22.2 4.4L116 353.2c5.9 8.8 16.8 12.7 26.9 9.7s17-12.4 17-23V320 64zM176 0c-35.3 0-64 28.7-64 64V261.7C91.2 238 55.5 232.8 28.5 250.7C-.9 270.4-8.9 310.1 10.8 339.5L78.3 440.8c29.7 44.5 79.6 71.2 133.1 71.2h.9H272h56c66.3 0 120-53.7 120-120V288l0-16c0-35.3-28.7-64-64-64c-4.5 0-8.8 .5-13 1.3c-11.7-15.4-30.2-25.3-51-25.3c-6.9 0-13.5 1.1-19.7 3.1C288.7 170.7 269.6 160 248 160c-2.7 0-5.4 .2-8 .5V64c0-35.3-28.7-64-64-64zm48 304c0-8.8-7.2-16-16-16s-16 7.2-16 16v96c0 8.8 7.2 16 16 16s16-7.2 16-16V304zm48-16c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16s16-7.2 16-16V304c0-8.8-7.2-16-16-16zm80 16c0-8.8-7.2-16-16-16s-16 7.2-16 16v96c0 8.8 7.2 16 16 16s16-7.2 16-16V304z"],
"hand-scissors": [512, 512, [], "f257", "M.2 276.3c-1.2-35.3 26.4-65 61.7-66.2l3.3-.1L57 208.1C22.5 200.5 .7 166.3 8.3 131.8S50.2 75.5 84.7 83.2l173 38.3c2.3-2.9 4.7-5.7 7.1-8.5l18.4-20.3C299.9 74.5 323.5 64 348.3 64l10.2 0c54.1 0 104.1 28.7 131.3 75.4l1.5 2.6c13.6 23.2 20.7 49.7 20.7 76.6L512 344c0 66.3-53.7 120-120 120l-8 0-96 0c-35.3 0-64-28.7-64-64c0-2.8 .2-5.6 .5-8.3c-19.4-11-32.5-31.8-32.5-55.7c0-.8 0-1.6 0-2.4L66.4 338c-35.3 1.2-65-26.4-66.2-61.7zm63.4-18.2c-8.8 .3-15.7 7.7-15.4 16.5s7.7 15.7 16.5 15.4l161.5-5.6c9.8-.3 18.7 5.3 22.7 14.2s2.2 19.3-4.5 26.4c-2.8 2.9-4.4 6.7-4.4 11c0 8.8 7.2 16 16 16c9.1 0 17.4 5.1 21.5 13.3s3.2 17.9-2.3 25.1c-2 2.7-3.2 6-3.2 9.6c0 8.8 7.2 16 16 16l96 0 8 0c39.8 0 72-32.2 72-72l0-125.4c0-18.4-4.9-36.5-14.2-52.4l-1.5-2.6c-18.6-32-52.8-51.6-89.8-51.6l-10.2 0c-11.3 0-22 4.8-29.6 13.1l-17.5-15.9 17.5 15.9-18.4 20.3c-.6 .6-1.1 1.3-1.7 1.9l57 13.2c8.6 2 14 10.6 12 19.2s-10.6 14-19.2 12l-85.6-19.7L74.3 130c-8.6-1.9-17.2 3.5-19.1 12.2s3.5 17.2 12.2 19.1l187.5 41.6c10.2 2.3 17.8 10.9 18.7 21.4l.1 1c.6 6.6-1.5 13.1-5.8 18.1s-10.6 7.9-17.2 8.2L63.6 258.1z"],
"face-grin-tears": [640, 512, [128514, "grin-tears"], "f588", "M516.1 325.5c1 3 2.1 6 3.3 8.9c3.3 8.1 8.4 18.5 16.5 26.6c3.9 3.9 8.2 7.4 12.7 10.3C506.4 454.8 419.9 512 320 512s-186.4-57.2-228.6-140.6c4.5-2.9 8.7-6.3 12.7-10.3c8.1-8.1 13.2-18.6 16.5-26.6c1.2-2.9 2.3-5.9 3.3-8.9C152.5 406.2 229.5 464 320 464s167.5-57.8 196.1-138.5zM320 48c-101.4 0-185.8 72.5-204.3 168.5c-6.7-3.1-14.3-4.3-22.3-3.1c-6.8 .9-16.2 2.4-26.6 4.4C85.3 94.5 191.6 0 320 0S554.7 94.5 573.2 217.7c-10.3-2-19.8-3.5-26.6-4.4c-8-1.2-15.7 .1-22.3 3.1C505.8 120.5 421.4 48 320 48zM78.5 341.1C60 356.7 32 355.5 14.3 337.7c-18.7-18.7-19.1-48.8-.7-67.2c8.6-8.6 30.1-15.1 50.5-19.6c13-2.8 25.5-4.8 33.9-6c5.4-.8 9.9 3.7 9 9c-3.1 21.5-11.4 70.2-25.5 84.4c-.9 1-1.9 1.8-2.9 2.7zm483 0c-.8-.6-1.5-1.3-2.3-2c-.2-.2-.5-.4-.7-.7c-14.1-14.1-22.5-62.9-25.5-84.4c-.8-5.4 3.7-9.9 9-9c1 .1 2.2 .3 3.3 .5c8.2 1.2 19.2 3 30.6 5.5c20.4 4.4 41.9 10.9 50.5 19.6c18.4 18.4 18 48.5-.7 67.2c-17.7 17.7-45.7 19-64.2 3.4zM439 336.5C414.4 374.6 370.3 400 319.9 400s-94.5-25.4-119.1-63.5c-10.4-16.1 6.8-32.5 25.5-28.1c28.9 6.8 60.5 10.5 93.6 10.5s64.7-3.7 93.6-10.5c18.7-4.4 35.9 12 25.5 28.1zM281.6 228.8l0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0 0 0zm160 0l0 0 0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0z"],
"calendar-xmark": [512, 512, ["calendar-times"], "f273", "M160 0c13.3 0 24 10.7 24 24V64H328V24c0-13.3 10.7-24 24-24s24 10.7 24 24V64h40c35.3 0 64 28.7 64 64v16 48V448c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V192 144 128c0-35.3 28.7-64 64-64h40V24c0-13.3 10.7-24 24-24zM432 192H80V448c0 8.8 7.2 16 16 16H416c8.8 0 16-7.2 16-16V192zm-95 89l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z"],
"file-video": [384, 512, [], "f1c8", "M320 464c8.8 0 16-7.2 16-16V160H256c-17.7 0-32-14.3-32-32V48H64c-8.8 0-16 7.2-16 16V448c0 8.8 7.2 16 16 16H320zM0 64C0 28.7 28.7 0 64 0H229.5c17 0 33.3 6.7 45.3 18.7l90.5 90.5c12 12 18.7 28.3 18.7 45.3V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zM80 288c0-17.7 14.3-32 32-32h96c17.7 0 32 14.3 32 32v16l44.9-29.9c2-1.3 4.4-2.1 6.8-2.1c6.8 0 12.3 5.5 12.3 12.3V387.7c0 6.8-5.5 12.3-12.3 12.3c-2.4 0-4.8-.7-6.8-2.1L240 368v16c0 17.7-14.3 32-32 32H112c-17.7 0-32-14.3-32-32V288z"],
"file-pdf": [512, 512, [], "f1c1", "M64 464H96v48H64c-35.3 0-64-28.7-64-64V64C0 28.7 28.7 0 64 0H229.5c17 0 33.3 6.7 45.3 18.7l90.5 90.5c12 12 18.7 28.3 18.7 45.3V288H336V160H256c-17.7 0-32-14.3-32-32V48H64c-8.8 0-16 7.2-16 16V448c0 8.8 7.2 16 16 16zM176 352h32c30.9 0 56 25.1 56 56s-25.1 56-56 56H192v32c0 8.8-7.2 16-16 16s-16-7.2-16-16V448 368c0-8.8 7.2-16 16-16zm32 80c13.3 0 24-10.7 24-24s-10.7-24-24-24H192v48h16zm96-80h32c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48H304c-8.8 0-16-7.2-16-16V368c0-8.8 7.2-16 16-16zm32 128c8.8 0 16-7.2 16-16V400c0-8.8-7.2-16-16-16H320v96h16zm80-112c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16s-7.2 16-16 16H448v32h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H448v48c0 8.8-7.2 16-16 16s-16-7.2-16-16V432 368z"],
"comment": [512, 512, [128489, 61669], "f075", "M123.6 391.3c12.9-9.4 29.6-11.8 44.6-6.4c26.5 9.6 56.2 15.1 87.8 15.1c124.7 0 208-80.5 208-160s-83.3-160-208-160S48 160.5 48 240c0 32 12.4 62.8 35.7 89.2c8.6 9.7 12.8 22.5 11.8 35.5c-1.4 18.1-5.7 34.7-11.3 49.4c17-7.9 31.1-16.7 39.4-22.7zM21.2 431.9c1.8-2.7 3.5-5.4 5.1-8.1c10-16.6 19.5-38.4 21.4-62.9C17.7 326.8 0 285.1 0 240C0 125.1 114.6 32 256 32s256 93.1 256 208s-114.6 208-256 208c-37.1 0-72.3-6.4-104.1-17.9c-11.9 8.7-31.3 20.6-54.3 30.6c-15.1 6.6-32.3 12.6-50.1 16.1c-.8 .2-1.6 .3-2.4 .5c-4.4 .8-8.7 1.5-13.2 1.9c-.2 0-.5 .1-.7 .1c-5.1 .5-10.2 .8-15.3 .8c-6.5 0-12.3-3.9-14.8-9.9c-2.5-6-1.1-12.8 3.4-17.4c4.1-4.2 7.8-8.7 11.3-13.5c1.7-2.3 3.3-4.6 4.8-6.9c.1-.2 .2-.3 .3-.5z"],
"envelope": [512, 512, [128386, 9993, 61443], "f0e0", "M64 112c-8.8 0-16 7.2-16 16v22.1L220.5 291.7c20.7 17 50.4 17 71.1 0L464 150.1V128c0-8.8-7.2-16-16-16H64zM48 212.2V384c0 8.8 7.2 16 16 16H448c8.8 0 16-7.2 16-16V212.2L322 328.8c-38.4 31.5-93.7 31.5-132 0L48 212.2zM0 128C0 92.7 28.7 64 64 64H448c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128z"],
"hourglass": [384, 512, [9203, 62032, "hourglass-empty"], "f254", "M24 0C10.7 0 0 10.7 0 24S10.7 48 24 48h8V67c0 40.3 16 79 44.5 107.5L158.1 256 76.5 337.5C48 366 32 404.7 32 445v19H24c-13.3 0-24 10.7-24 24s10.7 24 24 24H360c13.3 0 24-10.7 24-24s-10.7-24-24-24h-8V445c0-40.3-16-79-44.5-107.5L225.9 256l81.5-81.5C336 146 352 107.3 352 67V48h8c13.3 0 24-10.7 24-24s-10.7-24-24-24H24zM192 289.9l81.5 81.5C293 391 304 417.4 304 445v19H80V445c0-27.6 11-54 30.5-73.5L192 289.9zm0-67.9l-81.5-81.5C91 121 80 94.6 80 67V48H304V67c0 27.6-11 54-30.5 73.5L192 222.1z"],
"calendar-check": [448, 512, [], "f274", "M128 0c13.3 0 24 10.7 24 24V64H296V24c0-13.3 10.7-24 24-24s24 10.7 24 24V64h40c35.3 0 64 28.7 64 64v16 48V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V192 144 128C0 92.7 28.7 64 64 64h40V24c0-13.3 10.7-24 24-24zM400 192H48V448c0 8.8 7.2 16 16 16H384c8.8 0 16-7.2 16-16V192zM329 297L217 409c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47 95-95c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z"],
"hard-drive": [512, 512, [128436, "hdd"], "f0a0", "M64 80c-8.8 0-16 7.2-16 16V258c5.1-1.3 10.5-2 16-2H448c5.5 0 10.9 .7 16 2V96c0-8.8-7.2-16-16-16H64zM48 320v96c0 8.8 7.2 16 16 16H448c8.8 0 16-7.2 16-16V320c0-8.8-7.2-16-16-16H64c-8.8 0-16 7.2-16 16zM0 320V96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64V320v96c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V320zm280 48a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm120-24a24 24 0 1 1 0 48 24 24 0 1 1 0-48z"],
"face-grin-squint-tears": [512, 512, [129315, "grin-squint-tears"], "f586", "M426.8 14.2C446-5 477.5-4.6 497.1 14.9s20 51 .7 70.3c-14.8 14.8-65.7 23.6-88.3 26.7c-5.6 .9-10.3-3.9-9.5-9.5C403.3 79.9 412 29 426.8 14.2zM75 75C158.2-8.3 284.5-22.2 382.2 33.2c-1.5 4.8-2.9 9.6-4.1 14.3c-3.1 12.2-5.5 24.6-7.3 35c-80.8-53.6-190.7-44.8-261.9 26.4C37.7 180.1 28.9 290 82.5 370.8c-10.5 1.8-22.9 4.2-35 7.3c-4.7 1.2-9.5 2.5-14.3 4.1C-22.2 284.5-8.2 158.2 75 75zm389.6 58.9c4.7-1.2 9.5-2.5 14.3-4.1C534.2 227.5 520.2 353.8 437 437c-83.2 83.2-209.5 97.2-307.2 41.8c1.5-4.8 2.8-9.6 4-14.3c3.1-12.2 5.5-24.6 7.3-35c80.8 53.6 190.7 44.8 261.9-26.4c71.2-71.2 80-181.1 26.4-261.9c10.5-1.8 22.9-4.2 35-7.3zm-105.4 93c10.1-16.3 33.9-16.9 37.9 1.9c9.5 44.4-3.7 93.5-39.3 129.1s-84.8 48.8-129.1 39.3c-18.7-4-18.2-27.8-1.9-37.9c25.2-15.7 50.2-35.4 73.6-58.8s43.1-48.4 58.8-73.6zM92 265.3l97.4-29.7c11.6-3.5 22.5 7.3 19 19l-29.7 97.4c-2.6 8.6-13.4 11.3-19.8 4.9c-2-2-3.2-4.6-3.4-7.3l-5.1-56.1-56.1-5.1c-2.8-.3-5.4-1.5-7.3-3.4c-6.3-6.3-3.6-17.2 4.9-19.8zm193-178.2c2 2 3.2 4.6 3.4 7.3l5.1 56.1 56.1 5.1c2.8 .3 5.4 1.5 7.3 3.4c6.3 6.3 3.6 17.2-4.9 19.8l-97.4 29.7c-11.6 3.5-22.5-7.3-19-19L265.3 92c2.6-8.6 13.4-11.3 19.8-4.9zM14.9 497.1c-19.6-19.6-20-51-.7-70.3C29 412 79.8 403.2 102.4 400.1c5.6-.9 10.3 3.9 9.5 9.5c-3.2 22.5-11.9 73.5-26.7 88.3C66 517 34.5 516.6 14.9 497.1z"],
"rectangle-list": [576, 512, ["list-alt"], "f022", "M64 80c-8.8 0-16 7.2-16 16V416c0 8.8 7.2 16 16 16H512c8.8 0 16-7.2 16-16V96c0-8.8-7.2-16-16-16H64zM0 96C0 60.7 28.7 32 64 32H512c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm96 64a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm104 0c0-13.3 10.7-24 24-24H448c13.3 0 24 10.7 24 24s-10.7 24-24 24H224c-13.3 0-24-10.7-24-24zm0 96c0-13.3 10.7-24 24-24H448c13.3 0 24 10.7 24 24s-10.7 24-24 24H224c-13.3 0-24-10.7-24-24zm0 96c0-13.3 10.7-24 24-24H448c13.3 0 24 10.7 24 24s-10.7 24-24 24H224c-13.3 0-24-10.7-24-24zm-72-64a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM96 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z"],
"calendar-plus": [512, 512, [], "f271", "M184 24c0-13.3-10.7-24-24-24s-24 10.7-24 24V64H96c-35.3 0-64 28.7-64 64v16 48V448c0 35.3 28.7 64 64 64H416c35.3 0 64-28.7 64-64V192 144 128c0-35.3-28.7-64-64-64H376V24c0-13.3-10.7-24-24-24s-24 10.7-24 24V64H184V24zM80 192H432V448c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V192zm176 40c-13.3 0-24 10.7-24 24v48H184c-13.3 0-24 10.7-24 24s10.7 24 24 24h48v48c0 13.3 10.7 24 24 24s24-10.7 24-24V352h48c13.3 0 24-10.7 24-24s-10.7-24-24-24H280V256c0-13.3-10.7-24-24-24z"],
"circle-left": [512, 512, [61840, "arrow-alt-circle-left"], "f359", "M48 256a208 208 0 1 1 416 0A208 208 0 1 1 48 256zm464 0A256 256 0 1 0 0 256a256 256 0 1 0 512 0zM217.4 376.9c4.2 4.5 10.1 7.1 16.3 7.1c12.3 0 22.3-10 22.3-22.3V304h96c17.7 0 32-14.3 32-32V240c0-17.7-14.3-32-32-32H256V150.3c0-12.3-10-22.3-22.3-22.3c-6.2 0-12.1 2.6-16.3 7.1L117.5 242.2c-3.5 3.8-5.5 8.7-5.5 13.8s2 10.1 5.5 13.8l99.9 107.1z"],
"money-bill-1": [576, 512, ["money-bill-alt"], "f3d1", "M112 112c0 35.3-28.7 64-64 64V336c35.3 0 64 28.7 64 64H464c0-35.3 28.7-64 64-64V176c-35.3 0-64-28.7-64-64H112zM0 128C0 92.7 28.7 64 64 64H512c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128zM176 256a112 112 0 1 1 224 0 112 112 0 1 1 -224 0zm80-48c0 8.8 7.2 16 16 16v64h-8c-8.8 0-16 7.2-16 16s7.2 16 16 16h24 24c8.8 0 16-7.2 16-16s-7.2-16-16-16h-8V208c0-8.8-7.2-16-16-16H272c-8.8 0-16 7.2-16 16z"],
"clock": [512, 512, [128339, "clock-four"], "f017", "M464 256A208 208 0 1 1 48 256a208 208 0 1 1 416 0zM0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zM232 120V256c0 8 4 15.5 10.7 20l96 64c11 7.4 25.9 4.4 33.3-6.7s4.4-25.9-6.7-33.3L280 243.2V120c0-13.3-10.7-24-24-24s-24 10.7-24 24z"],
"keyboard": [576, 512, [9000], "f11c", "M64 112c-8.8 0-16 7.2-16 16V384c0 8.8 7.2 16 16 16H512c8.8 0 16-7.2 16-16V128c0-8.8-7.2-16-16-16H64zM0 128C0 92.7 28.7 64 64 64H512c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128zM176 320H400c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16zm-72-72c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H120c-8.8 0-16-7.2-16-16V248zm16-96h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H120c-8.8 0-16-7.2-16-16V168c0-8.8 7.2-16 16-16zm64 96c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H200c-8.8 0-16-7.2-16-16V248zm16-96h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H200c-8.8 0-16-7.2-16-16V168c0-8.8 7.2-16 16-16zm64 96c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H280c-8.8 0-16-7.2-16-16V248zm16-96h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H280c-8.8 0-16-7.2-16-16V168c0-8.8 7.2-16 16-16zm64 96c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H360c-8.8 0-16-7.2-16-16V248zm16-96h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H360c-8.8 0-16-7.2-16-16V168c0-8.8 7.2-16 16-16zm64 96c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H440c-8.8 0-16-7.2-16-16V248zm16-96h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H440c-8.8 0-16-7.2-16-16V168c0-8.8 7.2-16 16-16z"],
"closed-captioning": [576, 512, [], "f20a", "M512 80c8.8 0 16 7.2 16 16V416c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16V96c0-8.8 7.2-16 16-16H512zM64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM200 208c14.2 0 27 6.1 35.8 16c8.8 9.9 24 10.7 33.9 1.9s10.7-24 1.9-33.9c-17.5-19.6-43.1-32-71.5-32c-53 0-96 43-96 96s43 96 96 96c28.4 0 54-12.4 71.5-32c8.8-9.9 8-25-1.9-33.9s-25-8-33.9 1.9c-8.8 9.9-21.6 16-35.8 16c-26.5 0-48-21.5-48-48s21.5-48 48-48zm144 48c0-26.5 21.5-48 48-48c14.2 0 27 6.1 35.8 16c8.8 9.9 24 10.7 33.9 1.9s10.7-24 1.9-33.9c-17.5-19.6-43.1-32-71.5-32c-53 0-96 43-96 96s43 96 96 96c28.4 0 54-12.4 71.5-32c8.8-9.9 8-25-1.9-33.9s-25-8-33.9 1.9c-8.8 9.9-21.6 16-35.8 16c-26.5 0-48-21.5-48-48z"],
"images": [576, 512, [], "f302", "M160 80H512c8.8 0 16 7.2 16 16V320c0 8.8-7.2 16-16 16H490.8L388.1 178.9c-4.4-6.8-12-10.9-20.1-10.9s-15.7 4.1-20.1 10.9l-52.2 79.8-12.4-16.9c-4.5-6.2-11.7-9.8-19.4-9.8s-14.8 3.6-19.4 9.8L175.6 336H160c-8.8 0-16-7.2-16-16V96c0-8.8 7.2-16 16-16zM96 96V320c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H160c-35.3 0-64 28.7-64 64zM48 120c0-13.3-10.7-24-24-24S0 106.7 0 120V344c0 75.1 60.9 136 136 136H456c13.3 0 24-10.7 24-24s-10.7-24-24-24H136c-48.6 0-88-39.4-88-88V120zm208 24a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z"],
"face-grin": [512, 512, [128512, "grin"], "f580", "M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm349.5 52.4c18.7-4.4 35.9 12 25.5 28.1C350.4 374.6 306.3 400 255.9 400s-94.5-25.4-119.1-63.5c-10.4-16.1 6.8-32.5 25.5-28.1c28.9 6.8 60.5 10.5 93.6 10.5s64.7-3.7 93.6-10.5zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"],
"face-meh": [512, 512, [128528, "meh"], "f11a", "M464 256A208 208 0 1 1 48 256a208 208 0 1 1 416 0zM256 0a256 256 0 1 0 0 512A256 256 0 1 0 256 0zM176.4 240a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm192-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM184 328c-13.3 0-24 10.7-24 24s10.7 24 24 24H328c13.3 0 24-10.7 24-24s-10.7-24-24-24H184z"],
"id-card": [576, 512, [62147, "drivers-license"], "f2c2", "M528 160V416c0 8.8-7.2 16-16 16H320c0-44.2-35.8-80-80-80H176c-44.2 0-80 35.8-80 80H64c-8.8 0-16-7.2-16-16V160H528zM64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM272 256a64 64 0 1 0 -128 0 64 64 0 1 0 128 0zm104-48c-13.3 0-24 10.7-24 24s10.7 24 24 24h80c13.3 0 24-10.7 24-24s-10.7-24-24-24H376zm0 96c-13.3 0-24 10.7-24 24s10.7 24 24 24h80c13.3 0 24-10.7 24-24s-10.7-24-24-24H376z"],
"sun": [512, 512, [9728], "f185", "M375.7 19.7c-1.5-8-6.9-14.7-14.4-17.8s-16.1-2.2-22.8 2.4L256 61.1 173.5 4.2c-6.7-4.6-15.3-5.5-22.8-2.4s-12.9 9.8-14.4 17.8l-18.1 98.5L19.7 136.3c-8 1.5-14.7 6.9-17.8 14.4s-2.2 16.1 2.4 22.8L61.1 256 4.2 338.5c-4.6 6.7-5.5 15.3-2.4 22.8s9.8 13 17.8 14.4l98.5 18.1 18.1 98.5c1.5 8 6.9 14.7 14.4 17.8s16.1 2.2 22.8-2.4L256 450.9l82.5 56.9c6.7 4.6 15.3 5.5 22.8 2.4s12.9-9.8 14.4-17.8l18.1-98.5 98.5-18.1c8-1.5 14.7-6.9 17.8-14.4s2.2-16.1-2.4-22.8L450.9 256l56.9-82.5c4.6-6.7 5.5-15.3 2.4-22.8s-9.8-12.9-17.8-14.4l-98.5-18.1L375.7 19.7zM269.6 110l65.6-45.2 14.4 78.3c1.8 9.8 9.5 17.5 19.3 19.3l78.3 14.4L402 242.4c-5.7 8.2-5.7 19 0 27.2l45.2 65.6-78.3 14.4c-9.8 1.8-17.5 9.5-19.3 19.3l-14.4 78.3L269.6 402c-8.2-5.7-19-5.7-27.2 0l-65.6 45.2-14.4-78.3c-1.8-9.8-9.5-17.5-19.3-19.3L64.8 335.2 110 269.6c5.7-8.2 5.7-19 0-27.2L64.8 176.8l78.3-14.4c9.8-1.8 17.5-9.5 19.3-19.3l14.4-78.3L242.4 110c8.2 5.7 19 5.7 27.2 0zM256 368a112 112 0 1 0 0-224 112 112 0 1 0 0 224zM192 256a64 64 0 1 1 128 0 64 64 0 1 1 -128 0z"],
"face-laugh-wink": [512, 512, ["laugh-wink"], "f59c", "M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm130.7 57.9c-4.2-13.6 7.1-25.9 21.3-25.9H364.5c14.2 0 25.5 12.4 21.3 25.9C369 368.4 318.2 408 258.2 408s-110.8-39.6-127.5-94.1zM144.4 192a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm165.8 21.7c-7.6 8.1-20.2 8.5-28.3 .9s-8.5-20.2-.9-28.3c14.5-15.5 35.2-22.3 54.6-22.3s40.1 6.8 54.6 22.3c7.6 8.1 7.1 20.7-.9 28.3s-20.7 7.1-28.3-.9c-5.5-5.8-14.8-9.7-25.4-9.7s-19.9 3.8-25.4 9.7z"],
"circle-down": [512, 512, [61466, "arrow-alt-circle-down"], "f358", "M256 464a208 208 0 1 1 0-416 208 208 0 1 1 0 416zM256 0a256 256 0 1 0 0 512A256 256 0 1 0 256 0zM376.9 294.6c4.5-4.2 7.1-10.1 7.1-16.3c0-12.3-10-22.3-22.3-22.3H304V160c0-17.7-14.3-32-32-32l-32 0c-17.7 0-32 14.3-32 32v96H150.3C138 256 128 266 128 278.3c0 6.2 2.6 12.1 7.1 16.3l107.1 99.9c3.8 3.5 8.7 5.5 13.8 5.5s10.1-2 13.8-5.5l107.1-99.9z"],
"thumbs-down": [512, 512, [128078, 61576], "f165", "M323.8 477.2c-38.2 10.9-78.1-11.2-89-49.4l-5.7-20c-3.7-13-10.4-25-19.5-35l-51.3-56.4c-8.9-9.8-8.2-25 1.6-33.9s25-8.2 33.9 1.6l51.3 56.4c14.1 15.5 24.4 34 30.1 54.1l5.7 20c3.6 12.7 16.9 20.1 29.7 16.5s20.1-16.9 16.5-29.7l-5.7-20c-5.7-19.9-14.7-38.7-26.6-55.5c-5.2-7.3-5.8-16.9-1.7-24.9s12.3-13 21.3-13L448 288c8.8 0 16-7.2 16-16c0-6.8-4.3-12.7-10.4-15c-7.4-2.8-13-9-14.9-16.7s.1-15.8 5.3-21.7c2.5-2.8 4-6.5 4-10.6c0-7.8-5.6-14.3-13-15.7c-8.2-1.6-15.1-7.3-18-15.2s-1.6-16.7 3.6-23.3c2.1-2.7 3.4-6.1 3.4-9.9c0-6.7-4.2-12.6-10.2-14.9c-11.5-4.5-17.7-16.9-14.4-28.8c.4-1.3 .6-2.8 .6-4.3c0-8.8-7.2-16-16-16H286.5c-12.6 0-25 3.7-35.5 10.7l-61.7 41.1c-11 7.4-25.9 4.4-33.3-6.7s-4.4-25.9 6.7-33.3l61.7-41.1c18.4-12.3 40-18.8 62.1-18.8H384c34.7 0 62.9 27.6 64 62c14.6 11.7 24 29.7 24 50c0 4.5-.5 8.8-1.3 13c15.4 11.7 25.3 30.2 25.3 51c0 6.5-1 12.8-2.8 18.7C504.8 238.3 512 254.3 512 272c0 35.3-28.6 64-64 64l-92.3 0c4.7 10.4 8.7 21.2 11.8 32.2l5.7 20c10.9 38.2-11.2 78.1-49.4 89zM32 384c-17.7 0-32-14.3-32-32V128c0-17.7 14.3-32 32-32H96c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32H32z"],
"chess-pawn": [320, 512, [9823], "f443", "M232 152A72 72 0 1 0 88 152a72 72 0 1 0 144 0zm24 120H243.4l10.7 80H205.7L195 272H160 125l-10.7 80H65.9l10.7-80H64c-13.3 0-24-10.7-24-24s10.7-24 24-24c-15.1-20.1-24-45-24-72C40 85.7 93.7 32 160 32s120 53.7 120 120c0 27-8.9 51.9-24 72c13.3 0 24 10.7 24 24s-10.7 24-24 24zM52.7 464H267.3l-16.6-32H69.2L52.7 464zm207.9-80c12 0 22.9 6.7 28.4 17.3l26.5 51.2c3 5.8 4.6 12.2 4.6 18.7c0 22.5-18.2 40.8-40.8 40.8H40.8C18.2 512 0 493.8 0 471.2c0-6.5 1.6-12.9 4.6-18.7l26.5-51.2C36.5 390.7 47.5 384 59.5 384h201z"],
"credit-card": [576, 512, [128179, 62083, "credit-card-alt"], "f09d", "M512 80c8.8 0 16 7.2 16 16v32H48V96c0-8.8 7.2-16 16-16H512zm16 144V416c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16V224H528zM64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm56 304c-13.3 0-24 10.7-24 24s10.7 24 24 24h48c13.3 0 24-10.7 24-24s-10.7-24-24-24H120zm128 0c-13.3 0-24 10.7-24 24s10.7 24 24 24H360c13.3 0 24-10.7 24-24s-10.7-24-24-24H248z"],
"bell": [448, 512, [128276, 61602], "f0f3", "M224 0c-17.7 0-32 14.3-32 32V49.9C119.5 61.4 64 124.2 64 200v33.4c0 45.4-15.5 89.5-43.8 124.9L5.3 377c-5.8 7.2-6.9 17.1-2.9 25.4S14.8 416 24 416H424c9.2 0 17.6-5.3 21.6-13.6s2.9-18.2-2.9-25.4l-14.9-18.6C399.5 322.9 384 278.8 384 233.4V200c0-75.8-55.5-138.6-128-150.1V32c0-17.7-14.3-32-32-32zm0 96h8c57.4 0 104 46.6 104 104v33.4c0 47.9 13.9 94.6 39.7 134.6H72.3C98.1 328 112 281.3 112 233.4V200c0-57.4 46.6-104 104-104h8zm64 352H224 160c0 17 6.7 33.3 18.7 45.3s28.3 18.7 45.3 18.7s33.3-6.7 45.3-18.7s18.7-28.3 18.7-45.3z"],
"file": [384, 512, [128196, 128459, 61462], "f15b", "M320 464c8.8 0 16-7.2 16-16V160H256c-17.7 0-32-14.3-32-32V48H64c-8.8 0-16 7.2-16 16V448c0 8.8 7.2 16 16 16H320zM0 64C0 28.7 28.7 0 64 0H229.5c17 0 33.3 6.7 45.3 18.7l90.5 90.5c12 12 18.7 28.3 18.7 45.3V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64z"],
"hospital": [640, 512, [127973, 62589, "hospital-alt", "hospital-wide"], "f0f8", "M232 0c-39.8 0-72 32.2-72 72v8H72C32.2 80 0 112.2 0 152V440c0 39.8 32.2 72 72 72h.2 .2 .2 .2 .2H73h.2 .2 .2 .2 .2 .2 .2 .2 .2 .2H75h.2 .2 .2 .2 .2 .2 .2 .2 .2 .2H77h.2 .2 .2 .2 .2 .2 .2 .2 .2 .2H79h.2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2H82h.2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2H85h.2 .2 .2 .2H86h.2 .2 .2 .2H87h.2 .2 .2 .2H88h.2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2H98h.2 .2 .2 .2H99h.2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2v0H456h8v0H568c39.8 0 72-32.2 72-72V152c0-39.8-32.2-72-72-72H480V72c0-39.8-32.2-72-72-72H232zM480 128h88c13.3 0 24 10.7 24 24v40H536c-13.3 0-24 10.7-24 24s10.7 24 24 24h56v48H536c-13.3 0-24 10.7-24 24s10.7 24 24 24h56V440c0 13.3-10.7 24-24 24H480V336 128zM72 128h88V464h-.1-.2-.2-.2H159h-.2-.2-.2H158h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H154h-.2-.2-.2H153h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H150h-.2-.2-.2H149h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H146h-.2-.2-.2H145h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H142h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H139h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H136h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H133h-.2-.2-.2-.2-.2-.2-.2-.2H131h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H128h-.2-.2-.2-.2-.2-.2-.2-.2H126h-.2-.2-.2-.2-.2-.2-.2-.2H124h-.2-.2-.2-.2-.2-.2-.2-.2H122h-.2-.2-.2-.2-.2-.2-.2-.2H120h-.2-.2-.2-.2-.2-.2-.2-.2H118h-.2-.2-.2-.2-.2-.2-.2-.2H116h-.2-.2-.2-.2-.2-.2-.2-.2H114h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H111h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H108h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H105h-.2-.2-.2-.2H104h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H100h-.2-.2-.2-.2H99h-.2-.2-.2-.2H98h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H88h-.2-.2-.2-.2H87h-.2-.2-.2-.2H86h-.2-.2-.2-.2H85h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H82h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H79h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H77h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H75h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H73h-.2-.2-.2-.2-.2H72c-13.2 0-24-10.7-24-24V336h56c13.3 0 24-10.7 24-24s-10.7-24-24-24H48V240h56c13.3 0 24-10.7 24-24s-10.7-24-24-24H48V152c0-13.3 10.7-24 24-24zM208 72c0-13.3 10.7-24 24-24H408c13.3 0 24 10.7 24 24V336 464H368V400c0-26.5-21.5-48-48-48s-48 21.5-48 48v64H208V72zm88 24v24H272c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h24v24c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16V168h24c8.8 0 16-7.2 16-16V136c0-8.8-7.2-16-16-16H344V96c0-8.8-7.2-16-16-16H312c-8.8 0-16 7.2-16 16z"],
"chess-rook": [448, 512, [9820], "f447", "M80 80V192c0 2.5 1.2 4.9 3.2 6.4l51.2 38.4c6.8 5.1 10.4 13.4 9.5 21.9L133.5 352H85.2l9.4-85L54.4 236.8C40.3 226.2 32 209.6 32 192V72c0-22.1 17.9-40 40-40H376c22.1 0 40 17.9 40 40V192c0 17.6-8.3 34.2-22.4 44.8L353.4 267l9.4 85H314.5l-10.4-93.3c-.9-8.4 2.7-16.8 9.5-21.9l51.2-38.4c2-1.5 3.2-3.9 3.2-6.4V80H304v24c0 13.3-10.7 24-24 24s-24-10.7-24-24V80H192v24c0 13.3-10.7 24-24 24s-24-10.7-24-24V80H80zm4.7 384H363.3l-16.6-32H101.2L84.7 464zm271.9-80c12 0 22.9 6.7 28.4 17.3l26.5 51.2c3 5.8 4.6 12.2 4.6 18.7c0 22.5-18.2 40.8-40.8 40.8H72.8C50.2 512 32 493.8 32 471.2c0-6.5 1.6-12.9 4.6-18.7l26.5-51.2C68.5 390.7 79.5 384 91.5 384h265zM208 288c-8.8 0-16-7.2-16-16V224c0-17.7 14.3-32 32-32s32 14.3 32 32v48c0 8.8-7.2 16-16 16H208z"],
"star-half": [576, 512, [61731], "f089", "M293.3 .6c10.9 2.5 18.6 12.2 18.6 23.4V408.7c0 8.9-4.9 17-12.7 21.2L151 509.1c-8.1 4.3-17.9 3.7-25.3-1.7s-11.2-14.5-9.7-23.5l26.2-155.6L31.1 218.2c-6.5-6.4-8.7-15.9-5.9-24.5s10.3-14.9 19.3-16.3l153.2-22.6L266.3 13.5c4.9-10.1 16.1-15.4 27-12.9zM263.9 128.4l-28.6 58.8c-3.5 7.1-10.2 12.1-18.1 13.3L99 217.9 184.9 303c5.5 5.5 8.1 13.3 6.8 21L171.4 443.7l92.5-49.4V128.4z"],
"chess-king": [448, 512, [9818], "f43f", "M248 24c0-13.3-10.7-24-24-24s-24 10.7-24 24V56H168c-13.3 0-24 10.7-24 24s10.7 24 24 24h32v40H59.6C26.7 144 0 170.7 0 203.6c0 8.2 1.7 16.3 4.9 23.8L59.1 352h52.3L49 208.2c-.6-1.5-1-3-1-4.6c0-6.4 5.2-11.6 11.6-11.6H224 388.4c6.4 0 11.6 5.2 11.6 11.6c0 1.6-.3 3.2-1 4.6L336.5 352h52.3l54.2-124.6c3.3-7.5 4.9-15.6 4.9-23.8c0-32.9-26.7-59.6-59.6-59.6H248V104h32c13.3 0 24-10.7 24-24s-10.7-24-24-24H248V24zM101.2 432H346.8l16.6 32H84.7l16.6-32zm283.7-30.7c-5.5-10.6-16.5-17.3-28.4-17.3H91.5c-12 0-22.9 6.7-28.4 17.3L36.6 452.5c-3 5.8-4.6 12.2-4.6 18.7C32 493.8 50.2 512 72.8 512H375.2c22.5 0 40.8-18.2 40.8-40.8c0-6.5-1.6-12.9-4.6-18.7l-26.5-51.2z"],
"circle-user": [512, 512, [62142, "user-circle"], "f2bd", "M406.5 399.6C387.4 352.9 341.5 320 288 320H224c-53.5 0-99.4 32.9-118.5 79.6C69.9 362.2 48 311.7 48 256C48 141.1 141.1 48 256 48s208 93.1 208 208c0 55.7-21.9 106.2-57.5 143.6zm-40.1 32.7C334.4 452.4 296.6 464 256 464s-78.4-11.6-110.5-31.7c7.3-36.7 39.7-64.3 78.5-64.3h64c38.8 0 71.2 27.6 78.5 64.3zM256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm0-272a40 40 0 1 1 0-80 40 40 0 1 1 0 80zm-88-40a88 88 0 1 0 176 0 88 88 0 1 0 -176 0z"],
"copy": [512, 512, [], "f0c5", "M448 384H256c-35.3 0-64-28.7-64-64V64c0-35.3 28.7-64 64-64H396.1c12.7 0 24.9 5.1 33.9 14.1l67.9 67.9c9 9 14.1 21.2 14.1 33.9V320c0 35.3-28.7 64-64 64zM64 128h96v48H64c-8.8 0-16 7.2-16 16V448c0 8.8 7.2 16 16 16H256c8.8 0 16-7.2 16-16V416h48v32c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V192c0-35.3 28.7-64 64-64z"],
"share-from-square": [576, 512, [61509, "share-square"], "f14d", "M400 255.4V240 208c0-8.8-7.2-16-16-16H352 336 289.5c-50.9 0-93.9 33.5-108.3 79.6c-3.3-9.4-5.2-19.8-5.2-31.6c0-61.9 50.1-112 112-112h48 16 32c8.8 0 16-7.2 16-16V80 64.6L506 160 400 255.4zM336 240h16v48c0 17.7 14.3 32 32 32h3.7c7.9 0 15.5-2.9 21.4-8.2l139-125.1c7.6-6.8 11.9-16.5 11.9-26.7s-4.3-19.9-11.9-26.7L409.9 8.9C403.5 3.2 395.3 0 386.7 0C367.5 0 352 15.5 352 34.7V80H336 304 288c-88.4 0-160 71.6-160 160c0 60.4 34.6 99.1 63.9 120.9c5.9 4.4 11.5 8.1 16.7 11.2c4.4 2.7 8.5 4.9 11.9 6.6c3.4 1.7 6.2 3 8.2 3.9c2.2 1 4.6 1.4 7.1 1.4h2.5c9.8 0 17.8-8 17.8-17.8c0-7.8-5.3-14.7-11.6-19.5l0 0c-.4-.3-.7-.5-1.1-.8c-1.7-1.1-3.4-2.5-5-4.1c-.8-.8-1.7-1.6-2.5-2.6s-1.6-1.9-2.4-2.9c-1.8-2.5-3.5-5.3-5-8.5c-2.6-6-4.3-13.3-4.3-22.4c0-36.1 29.3-65.5 65.5-65.5H304h32zM72 32C32.2 32 0 64.2 0 104V440c0 39.8 32.2 72 72 72H408c39.8 0 72-32.2 72-72V376c0-13.3-10.7-24-24-24s-24 10.7-24 24v64c0 13.3-10.7 24-24 24H72c-13.3 0-24-10.7-24-24V104c0-13.3 10.7-24 24-24h64c13.3 0 24-10.7 24-24s-10.7-24-24-24H72z"],
"copyright": [512, 512, [169], "f1f9", "M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM199.4 312.6c-31.2-31.2-31.2-81.9 0-113.1s81.9-31.2 113.1 0c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9c-50-50-131-50-181 0s-50 131 0 181s131 50 181 0c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0c-31.2 31.2-81.9 31.2-113.1 0z"],
"map": [576, 512, [128506, 62072], "f279", "M565.6 36.2C572.1 40.7 576 48.1 576 56V392c0 10-6.2 18.9-15.5 22.4l-168 64c-5.2 2-10.9 2.1-16.1 .3L192.5 417.5l-160 61c-7.4 2.8-15.7 1.8-22.2-2.7S0 463.9 0 456V120c0-10 6.1-18.9 15.5-22.4l168-64c5.2-2 10.9-2.1 16.1-.3L383.5 94.5l160-61c7.4-2.8 15.7-1.8 22.2 2.7zM48 136.5V421.2l120-45.7V90.8L48 136.5zM360 422.7V137.3l-144-48V374.7l144 48zm48-1.5l120-45.7V90.8L408 136.5V421.2z"],
"bell-slash": [640, 512, [128277, 61943], "f1f6", "M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L542.6 400c2.7-7.8 1.3-16.5-3.9-23l-14.9-18.6C495.5 322.9 480 278.8 480 233.4V200c0-75.8-55.5-138.6-128-150.1V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V49.9c-43.9 7-81.5 32.7-104.4 68.7L38.8 5.1zM221.7 148.4C239.6 117.1 273.3 96 312 96h8 8c57.4 0 104 46.6 104 104v33.4c0 32.7 6.4 64.8 18.7 94.5L221.7 148.4zM406.2 416l-60.9-48H168.3c21.2-32.8 34.4-70.3 38.4-109.1L160 222.1v11.4c0 45.4-15.5 89.5-43.8 124.9L101.3 377c-5.8 7.2-6.9 17.1-2.9 25.4s12.4 13.6 21.6 13.6H406.2zM384 448H320 256c0 17 6.7 33.3 18.7 45.3s28.3 18.7 45.3 18.7s33.3-6.7 45.3-18.7s18.7-28.3 18.7-45.3z"],
"hand-lizard": [512, 512, [], "f258", "M72 112c-13.3 0-24 10.7-24 24s10.7 24 24 24H240c35.3 0 64 28.7 64 64s-28.7 64-64 64H136c-13.3 0-24 10.7-24 24s10.7 24 24 24H288c4.5 0 8.9 1.3 12.7 3.6l64 40c7 4.4 11.3 12.1 11.3 20.4v24c0 13.3-10.7 24-24 24s-24-10.7-24-24V413.3L281.1 384H136c-39.8 0-72-32.2-72-72s32.2-72 72-72H240c8.8 0 16-7.2 16-16s-7.2-16-16-16H72c-39.8 0-72-32.2-72-72S32.2 64 72 64H281.6c46.7 0 90.9 21.5 119.7 58.3l78.4 100.1c20.9 26.7 32.3 59.7 32.3 93.7V424c0 13.3-10.7 24-24 24s-24-10.7-24-24V316.1c0-23.2-7.8-45.8-22.1-64.1L363.5 151.9c-19.7-25.2-49.9-39.9-81.9-39.9H72z"],
"face-smile": [512, 512, [128578, "smile"], "f118", "M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm177.6 62.1C192.8 334.5 218.8 352 256 352s63.2-17.5 78.4-33.9c9-9.7 24.2-10.4 33.9-1.4s10.4 24.2 1.4 33.9c-22 23.8-60 49.4-113.6 49.4s-91.7-25.5-113.6-49.4c-9-9.7-8.4-24.9 1.4-33.9s24.9-8.4 33.9 1.4zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"],
"hand-peace": [512, 512, [9996], "f25b", "M250.8 1.4c-35.2-3.7-66.6 21.8-70.3 57L174 119 156.7 69.6C145 36.3 108.4 18.8 75.1 30.5S24.2 78.8 35.9 112.1L88.7 262.2C73.5 276.7 64 297.3 64 320v0 24c0 92.8 75.2 168 168 168h48c92.8 0 168-75.2 168-168V272 256 224c0-35.3-28.7-64-64-64c-7.9 0-15.4 1.4-22.4 4c-10.4-21.3-32.3-36-57.6-36c-.7 0-1.5 0-2.2 0l5.9-56.3c3.7-35.2-21.8-66.6-57-70.3zm-.2 155.4C243.9 166.9 240 179 240 192v48c0 .7 0 1.4 0 2c-5.1-1.3-10.5-2-16-2h-7.4l-5.4-15.3 17-161.3c.9-8.8 8.8-15.2 17.6-14.2s15.2 8.8 14.2 17.6l-9.5 90.1zM111.4 85.6L165.7 240H144c-4 0-8 .3-11.9 .9L81.2 96.2c-2.9-8.3 1.5-17.5 9.8-20.4s17.5 1.5 20.4 9.8zM288 192c0-8.8 7.2-16 16-16s16 7.2 16 16v32 16c0 8.8-7.2 16-16 16s-16-7.2-16-16V192zm38.4 108c10.4 21.3 32.3 36 57.6 36c5.5 0 10.9-.7 16-2v10c0 66.3-53.7 120-120 120H232c-66.3 0-120-53.7-120-120l0-24 0 0c0-17.7 14.3-32 32-32h80c8.8 0 16 7.2 16 16s-7.2 16-16 16H184c-13.3 0-24 10.7-24 24s10.7 24 24 24h40c35.3 0 64-28.7 64-64c0-.7 0-1.4 0-2c5.1 1.3 10.5 2 16 2c7.9 0 15.4-1.4 22.4-4zM400 272c0 8.8-7.2 16-16 16s-16-7.2-16-16V240 224c0-8.8 7.2-16 16-16s16 7.2 16 16v32 16z"],
"face-grin-hearts": [512, 512, [128525, "grin-hearts"], "f584", "M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm349.5 52.4c18.7-4.4 35.9 12 25.5 28.1C350.4 374.6 306.3 400 255.9 400s-94.5-25.4-119.1-63.5c-10.4-16.1 6.8-32.5 25.5-28.1c28.9 6.8 60.5 10.5 93.6 10.5s64.7-3.7 93.6-10.5zM215.3 137.1c17.8 4.8 28.4 23.1 23.6 40.8l-17.4 65c-2.3 8.5-11.1 13.6-19.6 11.3l-65.1-17.4c-17.8-4.8-28.4-23.1-23.6-40.8s23.1-28.4 40.8-23.6l16.1 4.3 4.3-16.1c4.8-17.8 23.1-28.4 40.8-23.6zm122.3 23.6l4.3 16.1 16.1-4.3c17.8-4.8 36.1 5.8 40.8 23.6s-5.8 36.1-23.6 40.8l-65.1 17.4c-8.5 2.3-17.3-2.8-19.6-11.3l-17.4-65c-4.8-17.8 5.8-36.1 23.6-40.8s36.1 5.8 40.9 23.6z"],
"building": [384, 512, [127970, 61687], "f1ad", "M64 48c-8.8 0-16 7.2-16 16V448c0 8.8 7.2 16 16 16h80V400c0-26.5 21.5-48 48-48s48 21.5 48 48v64h80c8.8 0 16-7.2 16-16V64c0-8.8-7.2-16-16-16H64zM0 64C0 28.7 28.7 0 64 0H320c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zm88 40c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v48c0 8.8-7.2 16-16 16H104c-8.8 0-16-7.2-16-16V104zM232 88h48c8.8 0 16 7.2 16 16v48c0 8.8-7.2 16-16 16H232c-8.8 0-16-7.2-16-16V104c0-8.8 7.2-16 16-16zM88 232c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v48c0 8.8-7.2 16-16 16H104c-8.8 0-16-7.2-16-16V232zm144-16h48c8.8 0 16 7.2 16 16v48c0 8.8-7.2 16-16 16H232c-8.8 0-16-7.2-16-16V232c0-8.8 7.2-16 16-16z"],
"face-grin-beam-sweat": [512, 512, [128517, "grin-beam-sweat"], "f583", "M476.8 126.3C497.1 120.8 512 102.7 512 81c0-20-28.6-60.4-41.6-77.7c-3.2-4.4-9.6-4.4-12.8 0c-9.5 12.6-27.1 37.2-36 57.5c-.3 .7-.6 1.4-.9 2.1C417.8 69.7 416 76 416 81c0 26 21.5 47 48 47c4.4 0 8.7-.6 12.8-1.7zM395.4 41.2C355.3 15.2 307.4 0 256 0C114.6 0 0 114.6 0 256S114.6 512 256 512s256-114.6 256-256c0-35.8-7.3-69.9-20.6-100.8c-8.6 3.1-17.8 4.8-27.4 4.8c-8.9 0-17.6-1.5-25.7-4.2C454.7 185.5 464 219.7 464 256c0 114.9-93.1 208-208 208S48 370.9 48 256S141.1 48 256 48c48.7 0 93.4 16.7 128.9 44.7c-.6-3.8-.9-7.7-.9-11.7c0-11.4 3.8-22.4 7.1-30.5c1.3-3.1 2.7-6.2 4.3-9.3zM375 336.5c10.4-16.1-6.8-32.5-25.5-28.1c-28.9 6.8-60.5 10.5-93.6 10.5s-64.7-3.7-93.6-10.5c-18.7-4.4-35.9 12-25.5 28.1c24.6 38.1 68.7 63.5 119.1 63.5s94.5-25.4 119.1-63.5zM217.6 228.8l0 0 0 0 0 0c2.1 2.8 5.7 3.9 8.9 2.8s5.5-4.1 5.5-7.6c0-17.9-6.7-35.6-16.6-48.8c-9.8-13-23.9-23.2-39.4-23.2s-29.6 10.2-39.4 23.2C126.7 188.4 120 206.1 120 224c0 3.4 2.2 6.5 5.5 7.6s6.9 0 8.9-2.8l0 0 0 0 0 0 .2-.2c.2-.2 .4-.5 .7-.9c.6-.8 1.6-2 2.8-3.4c2.5-2.8 6-6.6 10.2-10.3c8.8-7.8 18.8-14 27.7-14s18.9 6.2 27.7 14c4.2 3.7 7.7 7.5 10.2 10.3c1.2 1.4 2.2 2.6 2.8 3.4c.3 .4 .6 .7 .7 .9l.2 .2 0 0zm160 0l0 0 0 0c2.1 2.8 5.7 3.9 8.9 2.8s5.5-4.1 5.5-7.6c0-17.9-6.7-35.6-16.6-48.8c-9.8-13-23.9-23.2-39.4-23.2s-29.6 10.2-39.4 23.2C286.7 188.4 280 206.1 280 224c0 3.4 2.2 6.5 5.5 7.6s6.9 0 8.9-2.8l0 0 0 0 0 0 .2-.2c.2-.2 .4-.5 .7-.9c.6-.8 1.6-2 2.8-3.4c2.5-2.8 6-6.6 10.2-10.3c8.8-7.8 18.8-14 27.7-14s18.9 6.2 27.7 14c4.2 3.7 7.7 7.5 10.2 10.3c1.2 1.4 2.2 2.6 2.8 3.4c.3 .4 .6 .7 .7 .9l.2 .2 0 0 0 0z"],
"moon": [384, 512, [127769, 9214], "f186", "M144.7 98.7c-21 34.1-33.1 74.3-33.1 117.3c0 98 62.8 181.4 150.4 211.7c-12.4 2.8-25.3 4.3-38.6 4.3C126.6 432 48 353.3 48 256c0-68.9 39.4-128.4 96.8-157.3zm62.1-66C91.1 41.2 0 137.9 0 256C0 379.7 100 480 223.5 480c47.8 0 92-15 128.4-40.6c1.9-1.3 3.7-2.7 5.5-4c4.8-3.6 9.4-7.4 13.9-11.4c2.7-2.4 5.3-4.8 7.9-7.3c5-4.9 6.3-12.5 3.1-18.7s-10.1-9.7-17-8.5c-3.7 .6-7.4 1.2-11.1 1.6c-5 .5-10.1 .9-15.3 1c-1.2 0-2.5 0-3.7 0c-.1 0-.2 0-.3 0c-96.8-.2-175.2-78.9-175.2-176c0-54.8 24.9-103.7 64.1-136c1-.9 2.1-1.7 3.2-2.6c4-3.2 8.2-6.2 12.5-9c3.1-2 6.3-4 9.6-5.8c6.1-3.5 9.2-10.5 7.7-17.3s-7.3-11.9-14.3-12.5c-3.6-.3-7.1-.5-10.7-.6c-2.7-.1-5.5-.1-8.2-.1c-3.3 0-6.5 .1-9.8 .2c-2.3 .1-4.6 .2-6.9 .4z"],
"calendar": [448, 512, [128197, 128198], "f133", "M152 24c0-13.3-10.7-24-24-24s-24 10.7-24 24V64H64C28.7 64 0 92.7 0 128v16 48V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V192 144 128c0-35.3-28.7-64-64-64H344V24c0-13.3-10.7-24-24-24s-24 10.7-24 24V64H152V24zM48 192H400V448c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16V192z"],
"face-grin-tongue-wink": [512, 512, [128540, "grin-tongue-wink"], "f58b", "M348.3 442.4c2.4-8.4 3.7-17.3 3.7-26.4V363.5c8.8-8 16.6-17.1 23-27c10.4-16.1-6.8-32.5-25.5-28.1c-28.9 6.8-60.5 10.5-93.6 10.5s-64.7-3.7-93.6-10.5c-18.7-4.4-35.9 12-25.5 28.1c6.5 10 14.3 19.1 23.1 27.1V416c0 9.2 1.3 18 3.7 26.4C95.1 408.4 48 337.7 48 256C48 141.1 141.1 48 256 48s208 93.1 208 208c0 81.7-47.1 152.4-115.7 186.4zM256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM159.6 220c10.6 0 19.9 3.8 25.4 9.7c7.6 8.1 20.2 8.5 28.3 .9s8.5-20.2 .9-28.3C199.7 186.8 179 180 159.6 180s-40.1 6.8-54.6 22.3c-7.6 8.1-7.1 20.7 .9 28.3s20.7 7.1 28.3-.9c5.5-5.8 14.8-9.7 25.4-9.7zm176.7 12a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm-.4-72a48 48 0 1 1 0 96 48 48 0 1 1 0-96zm0 128a80 80 0 1 0 0-160 80 80 0 1 0 0 160zM320 416c0 35.3-28.7 64-64 64s-64-28.7-64-64V378.6c0-14.7 11.9-26.6 26.6-26.6h2c11.3 0 21.1 7.9 23.6 18.9c2.8 12.6 20.8 12.6 23.6 0c2.5-11.1 12.3-18.9 23.6-18.9h2c14.7 0 26.6 11.9 26.6 26.6V416z"],
"clone": [512, 512, [], "f24d", "M64 464H288c8.8 0 16-7.2 16-16V384h48v64c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V224c0-35.3 28.7-64 64-64h64v48H64c-8.8 0-16 7.2-16 16V448c0 8.8 7.2 16 16 16zM224 352c-35.3 0-64-28.7-64-64V64c0-35.3 28.7-64 64-64H448c35.3 0 64 28.7 64 64V288c0 35.3-28.7 64-64 64H224z"],
"face-angry": [512, 512, [128544, "angry"], "f556", "M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm72.4-118.5c9.7-9 10.2-24.2 1.2-33.9C315.3 344.3 290.6 328 256 328s-59.3 16.3-73.5 31.6c-9 9.7-8.5 24.9 1.2 33.9s24.9 8.5 33.9-1.2c7.4-7.9 20-16.4 38.5-16.4s31.1 8.5 38.5 16.4c9 9.7 24.2 10.2 33.9 1.2zM176.4 272c17.7 0 32-14.3 32-32c0-1.5-.1-3-.3-4.4l10.9 3.6c8.4 2.8 17.4-1.7 20.2-10.1s-1.7-17.4-10.1-20.2l-96-32c-8.4-2.8-17.4 1.7-20.2 10.1s1.7 17.4 10.1 20.2l30.7 10.2c-5.8 5.8-9.3 13.8-9.3 22.6c0 17.7 14.3 32 32 32zm192-32c0-8.9-3.6-17-9.5-22.8l30.2-10.1c8.4-2.8 12.9-11.9 10.1-20.2s-11.9-12.9-20.2-10.1l-96 32c-8.4 2.8-12.9 11.9-10.1 20.2s11.9 12.9 20.2 10.1l11.7-3.9c-.2 1.5-.3 3.1-.3 4.7c0 17.7 14.3 32 32 32s32-14.3 32-32z"],
"rectangle-xmark": [512, 512, [62164, "rectangle-times", "times-rectangle", "window-close"], "f410", "M64 80c-8.8 0-16 7.2-16 16V416c0 8.8 7.2 16 16 16H448c8.8 0 16-7.2 16-16V96c0-8.8-7.2-16-16-16H64zM0 96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm175 79c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z"],
"paper-plane": [512, 512, [61913], "f1d8", "M16.1 260.2c-22.6 12.9-20.5 47.3 3.6 57.3L160 376V479.3c0 18.1 14.6 32.7 32.7 32.7c9.7 0 18.9-4.3 25.1-11.8l62-74.3 123.9 51.6c18.9 7.9 40.8-4.5 43.9-24.7l64-416c1.9-12.1-3.4-24.3-13.5-31.2s-23.3-7.5-34-1.4l-448 256zm52.1 25.5L409.7 90.6 190.1 336l1.2 1L68.2 285.7zM403.3 425.4L236.7 355.9 450.8 116.6 403.3 425.4z"],
"life-ring": [512, 512, [], "f1cd", "M385.1 419.1C349.7 447.2 304.8 464 256 464s-93.7-16.8-129.1-44.9l80.4-80.4c14.3 8.4 31 13.3 48.8 13.3s34.5-4.8 48.8-13.3l80.4 80.4zm68.1 .2C489.9 374.9 512 318.1 512 256s-22.1-118.9-58.8-163.3L465 81c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L419.3 58.8C374.9 22.1 318.1 0 256 0S137.1 22.1 92.7 58.8L81 47c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9L58.8 92.7C22.1 137.1 0 193.9 0 256s22.1 118.9 58.8 163.3L47 431c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l11.8-11.8C137.1 489.9 193.9 512 256 512s118.9-22.1 163.3-58.8L431 465c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-11.8-11.8zm-34.1-34.1l-80.4-80.4c8.4-14.3 13.3-31 13.3-48.8s-4.8-34.5-13.3-48.8l80.4-80.4C447.2 162.3 464 207.2 464 256s-16.8 93.7-44.9 129.1zM385.1 92.9l-80.4 80.4c-14.3-8.4-31-13.3-48.8-13.3s-34.5 4.8-48.8 13.3L126.9 92.9C162.3 64.8 207.2 48 256 48s93.7 16.8 129.1 44.9zM173.3 304.8L92.9 385.1C64.8 349.7 48 304.8 48 256s16.8-93.7 44.9-129.1l80.4 80.4c-8.4 14.3-13.3 31-13.3 48.8s4.8 34.5 13.3 48.8zM208 256a48 48 0 1 1 96 0 48 48 0 1 1 -96 0z"],
"face-grimace": [512, 512, [128556, "grimace"], "f57f", "M256 48a208 208 0 1 0 0 416 208 208 0 1 0 0-416zM512 256A256 256 0 1 1 0 256a256 256 0 1 1 512 0zM168 320c-13.3 0-24 10.7-24 24s10.7 24 24 24h8V320h-8zm40 48h32V320H208v48zm96 0V320H272v48h32zm32 0h8c13.3 0 24-10.7 24-24s-10.7-24-24-24h-8v48zM168 288H344c30.9 0 56 25.1 56 56s-25.1 56-56 56H168c-30.9 0-56-25.1-56-56s25.1-56 56-56zm-23.6-80a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"],
"calendar-minus": [512, 512, [], "f272", "M160 0c13.3 0 24 10.7 24 24V64H328V24c0-13.3 10.7-24 24-24s24 10.7 24 24V64h40c35.3 0 64 28.7 64 64v16 48V448c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V192 144 128c0-35.3 28.7-64 64-64h40V24c0-13.3 10.7-24 24-24zM432 192H80V448c0 8.8 7.2 16 16 16H416c8.8 0 16-7.2 16-16V192zM328 352H184c-13.3 0-24-10.7-24-24s10.7-24 24-24H328c13.3 0 24 10.7 24 24s-10.7 24-24 24z"],
"circle-xmark": [512, 512, [61532, "times-circle", "xmark-circle"], "f057", "M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM175 175c-9.4 9.4-9.4 24.6 0 33.9l47 47-47 47c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l47-47 47 47c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-47-47 47-47c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-47 47-47-47c-9.4-9.4-24.6-9.4-33.9 0z"],
"thumbs-up": [512, 512, [128077, 61575], "f164", "M323.8 34.8c-38.2-10.9-78.1 11.2-89 49.4l-5.7 20c-3.7 13-10.4 25-19.5 35l-51.3 56.4c-8.9 9.8-8.2 25 1.6 33.9s25 8.2 33.9-1.6l51.3-56.4c14.1-15.5 24.4-34 30.1-54.1l5.7-20c3.6-12.7 16.9-20.1 29.7-16.5s20.1 16.9 16.5 29.7l-5.7 20c-5.7 19.9-14.7 38.7-26.6 55.5c-5.2 7.3-5.8 16.9-1.7 24.9s12.3 13 21.3 13L448 224c8.8 0 16 7.2 16 16c0 6.8-4.3 12.7-10.4 15c-7.4 2.8-13 9-14.9 16.7s.1 15.8 5.3 21.7c2.5 2.8 4 6.5 4 10.6c0 7.8-5.6 14.3-13 15.7c-8.2 1.6-15.1 7.3-18 15.1s-1.6 16.7 3.6 23.3c2.1 2.7 3.4 6.1 3.4 9.9c0 6.7-4.2 12.6-10.2 14.9c-11.5 4.5-17.7 16.9-14.4 28.8c.4 1.3 .6 2.8 .6 4.3c0 8.8-7.2 16-16 16H286.5c-12.6 0-25-3.7-35.5-10.7l-61.7-41.1c-11-7.4-25.9-4.4-33.3 6.7s-4.4 25.9 6.7 33.3l61.7 41.1c18.4 12.3 40 18.8 62.1 18.8H384c34.7 0 62.9-27.6 64-62c14.6-11.7 24-29.7 24-50c0-4.5-.5-8.8-1.3-13c15.4-11.7 25.3-30.2 25.3-51c0-6.5-1-12.8-2.8-18.7C504.8 273.7 512 257.7 512 240c0-35.3-28.6-64-64-64l-92.3 0c4.7-10.4 8.7-21.2 11.8-32.2l5.7-20c10.9-38.2-11.2-78.1-49.4-89zM32 192c-17.7 0-32 14.3-32 32V448c0 17.7 14.3 32 32 32H96c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32H32z"],
"window-minimize": [512, 512, [128469], "f2d1", "M24 432c-13.3 0-24 10.7-24 24s10.7 24 24 24H488c13.3 0 24-10.7 24-24s-10.7-24-24-24H24z"],
"square-full": [512, 512, [128997, 128998, 128999, 129000, 129001, 129002, 129003, 11035, 11036], "f45c", "M464 48V464H48V48H464zM48 0H0V48 464v48H48 464h48V464 48 0H464 48z"],
"note-sticky": [448, 512, [62026, "sticky-note"], "f249", "M64 80c-8.8 0-16 7.2-16 16V416c0 8.8 7.2 16 16 16H288V352c0-17.7 14.3-32 32-32h80V96c0-8.8-7.2-16-16-16H64zM288 480H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V320v5.5c0 17-6.7 33.3-18.7 45.3l-90.5 90.5c-12 12-28.3 18.7-45.3 18.7H288z"],
"face-sad-tear": [512, 512, [128546, "sad-tear"], "f5b4", "M175.9 448c-35-.1-65.5-22.6-76-54.6C67.6 356.8 48 308.7 48 256C48 141.1 141.1 48 256 48s208 93.1 208 208s-93.1 208-208 208c-28.4 0-55.5-5.7-80.1-16zM0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zM128 369c0 26 21.5 47 48 47s48-21 48-47c0-20-28.4-60.4-41.6-77.7c-3.2-4.4-9.6-4.4-12.8 0C156.6 308.6 128 349 128 369zm128-65c-13.3 0-24 10.7-24 24s10.7 24 24 24c30.7 0 58.7 11.5 80 30.6c9.9 8.8 25 8 33.9-1.9s8-25-1.9-33.9C338.3 320.2 299 304 256 304zm47.6-96a32 32 0 1 0 64 0 32 32 0 1 0 -64 0zm-128 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z"],
"hand-point-left": [512, 512, [], "f0a5", "M64 128l177.6 0c-1 5.2-1.6 10.5-1.6 16l0 16-32 0L64 160c-8.8 0-16-7.2-16-16s7.2-16 16-16zm224 16c0-17.7 14.3-32 32-32c0 0 0 0 0 0l24 0c66.3 0 120 53.7 120 120l0 48c0 52.5-33.7 97.1-80.7 113.4c.5-3.1 .7-6.2 .7-9.4c0-20-9.2-37.9-23.6-49.7c4.9-9 7.6-19.4 7.6-30.3c0-15.1-5.3-29-14-40c8.8-11 14-24.9 14-40l0-40c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 40c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-40 0-40zm32-80s0 0 0 0c-18 0-34.6 6-48 16L64 80C28.7 80 0 108.7 0 144s28.7 64 64 64l82 0c-1.3 5.1-2 10.5-2 16c0 25.3 14.7 47.2 36 57.6c-2.6 7-4 14.5-4 22.4c0 20 9.2 37.9 23.6 49.7c-4.9 9-7.6 19.4-7.6 30.3c0 35.3 28.7 64 64 64l64 0 24 0c92.8 0 168-75.2 168-168l0-48c0-92.8-75.2-168-168-168l-24 0zM256 400c-8.8 0-16-7.2-16-16s7.2-16 16-16l48 0 16 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-64 0zM240 224c0 5.5 .7 10.9 2 16l-2 0-32 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l32 0 0 16zm24 64l40 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-48 0-16 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l24 0z"]
};
bunker(function () {
defineIcons('far', icons);
defineIcons('fa-regular', icons);
});
}());
File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show More