Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • Synzvato/decentraleyes
  • gkrishnaks/decentraleyes
  • ExE-Boss/decentraleyes
  • whtsky/decentraleyes
  • grtgarrett/decentraleyes
  • An_dz/decentraleyes
  • Alaska/decentraleyes
  • finn/decentraleyes
  • klippy/decentraleyes
9 results
Show changes
Showing
with 1856 additions and 0 deletions
/**
* Sections
*/
body {
background-color: #f0f0f0;
color: #555;
cursor: default;
font-family: 'Noto Sans', Arial, sans-serif !important;
font-size: 75%;
margin: 0 auto;
max-width: 348px;
overflow: hidden;
padding: 0;
}
header {
align-items: center;
border-bottom: solid #d3d3d3 1px;
display: flex;
position: relative;
}
.panel {
overflow: hidden;
padding: 10px 8px;
}
.panel:not(:last-child) {
border-bottom: 1px solid #d8d8d8;
}
.sub-panel {
padding-bottom: 6px;
}
footer {
overflow: hidden;
padding: 8px;
}
/**
* Fonts
*/
@font-face {
font-family: 'Noto Sans';
font-style: normal;
font-weight: 400;
src: url('../shared/resources/fonts/noto-sans/regular.woff2')
format('woff2');
}
@font-face {
font-family: 'Noto Sans';
font-style: normal;
font-weight: 600;
src: url('../shared/resources/fonts/noto-sans/bold.woff2')
format('woff2');
}
@font-face {
font-family: 'Noto Sans';
font-style: italic;
font-weight: 400;
src: url('../shared/resources/fonts/noto-sans/italic.woff2')
format('woff2');
}
/**
* Headings
*/
.heading {
font-size: 14px;
font-weight: 600;
padding-left: 0;
}
.subheading {
font-weight: 600;
margin-bottom: 2px;
text-align: center;
}
/**
* Lists
*/
.list {
margin: 0;
padding: 8px 0 0;
}
.list-item {
background-color: #f7f7f7;
border: 1px solid #e4e4e4;
color: #555;
font-weight: 600;
list-style: none;
margin: 0;
padding: 10px;
}
.sublist {
align-items: center;
background-color: #ececec;
border: 1px solid #e0e0e0;
box-shadow: inset 0 2px 10px #e2e2e2;
list-style: none;
padding: 0;
}
.sublist:last-child {
border-bottom: 1px solid #e0e0e0;
}
.sublist-item {
border-bottom: 1px solid #e0e0e0;
color: #555;
font-weight: 600;
padding: 10px;
}
.sublist-item:last-child {
border-bottom: none;
}
/**
* Icons
*/
.icon {
margin-right: 6px;
}
.icon-symbolic {
height: 26px;
padding: 14px 6px 14px 8px;
width: 26px;
}
/**
* Buttons
*/
.button {
background-color: #f5f5f5;
border-radius: 2px;
border: 1px solid #cfcfcf;
color: #5f5f5f;
cursor: pointer;
float: right;
font-size: 12px;
overflow: hidden;
padding: 5px 22px;
user-select: none;
}
.button-toggle {
border-color: #d8d8d8;
color: #bbb;
}
.button-toggle.active {
border-color: #cfcfcf;
color: #339a6f;
}
.button:hover {
background-color: #fff;
}
.button:focus {
background-color: #f9f9f9;
border: 1px solid #bbb;
box-shadow: 0 0 4px #b9b9b9;
outline: 0;
}
.button:active {
background-color: #dedede;
}
/**
* Links
*/
.link-text {
color: #6d6d6d;
cursor: pointer;
float: left;
font-size: 13px;
line-height: 1;
margin: 6px 0 0 2px;
padding: 1px 2px 4px;
text-decoration: none;
}
.link-text:hover {
color: #555;
text-decoration: underline;
}
.link-text:focus {
color: #555;
outline-color: #555;
text-decoration: underline;
}
/**
* Miscellaneous
*/
.badge {
background: #fbfbfb;
border-radius: 10px;
border: 2px solid #7db69f;
color: #4a7767;
font-family: monospace;
font-size: 13px;
font-weight: 600;
margin-right: 7px;
padding: 0 13px;
}
.counter {
font-size: 36px;
font-weight: 600;
margin-top: 4px;
text-align: center;
}
.description {
color: #6d6d6d;
font-style: italic;
margin: 0 6px;
text-align: center;
}
.hidden {
max-height: 0 !important;
padding: 0 !important;
visibility: hidden !important;
}
.label-version {
color: #457763;
font-size: 9px;
}
.label-domain {
color: #6d6d6d;
display: flex;
font-style: italic;
overflow: hidden;
padding: 6px 0 0 4px;
white-space: nowrap;
}
.side-note {
color: #646464;
font-style: italic;
font-weight: 400;
}
/**
* Compatibility
*/
@media screen and (-webkit-min-device-pixel-ratio: 0) {
body {
width: 348px;
}
}
@media (prefers-color-scheme: dark) {
/**
* Sections
*/
body {
background-color: #404040;
color: #f9f9fa;
}
header {
border-bottom-color: #292929;
}
/**
* Lists
*/
.list-item {
background-color: #484848;
border-color: #292929;
color: #f0f0f0;
}
.sublist {
background-color: #323232;
border-color: #292929;
box-shadow: inset 0 2px 10px #292929;
}
.sublist:last-child {
border-bottom-color: #292929;
}
.sublist-item {
border-bottom-color: #2c2c2c;
color: #f0f0f0;
}
/**
* Buttons
*/
.button {
background-color: #3c3c3c;
border-color: #292929;
color: #dadada;
}
.button:hover {
background-color: #434343;
}
.button:focus {
background-color: #434343;
border-color: #292929;
box-shadow: 0 0 4px #323232;
}
.button:active {
background-color: #393939;
}
.button-toggle {
border-color: #363636;
color: #636363;
}
.button-toggle.active {
border-color: #292929;
color: #3dbb87;
}
/**
* Links
*/
.link-text {
color: #dadada;
}
.link-text:hover {
color: #f9f9fa;
}
.link-text:focus {
color: #f9f9fa;
outline-color: #dadada;
}
/**
* Miscellaneous
*/
.badge {
background-color: #323232;
border-color: #4a826c;
color: #f9f9fa;
}
.description {
color: #dadada;
}
.label-version {
color: #93d7bc;
}
.label-domain {
color: #dadada;
}
.panel:not(:last-child) {
border-bottom-color: #292929;
}
.side-note {
color: #dadada;
}
}
<!DOCTYPE html>
<html lang="en">
<head>
<title>Decentraleyes Popup</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta charset="utf-8">
<link rel="shortcut icon" href="../shared/resources/images/icons/extension/favicon.ico" type="image/x-icon">
<link rel="icon" href="../shared/resources/images/icons/extension/favicon.ico" type="image/x-icon">
<link rel="stylesheet" type="text/css" href="popup.css">
<script defer type="module" src="../shared/resources/images/icons/default.js"></script>
<script defer src="../shared/resources/scripts/fontawesome.min.js"></script>
</head>
<body>
<script type="module" src="popup.js"></script>
<div id="wrapper" class="hidden">
<header>
<img class="icon-symbolic" src="../shared/resources/images/icons/extension/symbolic.svg" alt="Symbolic Icon">
<div class="heading">Decentraleyes <sup id="version-label" class="label-version"></sup></div>
</header>
<section class="content">
<div id="website-context" class="panel hidden">
<div class="sub-panel">
<div id="protection-toggle-button" class="button button-toggle active" tabindex="0">
<i class="fa fa-power-off" data-fa-transform="grow-2 down-.5"></i>
</div>
<div class="label-domain">
<i class="icon fa fa-globe fa-lg" data-fa-transform="down-1"></i>
<span id="domain-indicator"></span>
</div>
</div>
</div>
<div id="extension-context" class="panel">
<div id="injection-counter" class="counter">0</div>
<div class="subheading" data-i18n-content="amountInjectedTitle"></div>
<div class="description" data-i18n-content="amountInjectedDescription"></div>
</div>
</section>
<footer>
<span id="testing-utility-link" class="link-text" tabindex="0">decentraleyes.org/test</span>
<div id="options-button" class="button" data-i18n-title="optionsTitle" tabindex="0">
<i class="fa fa-cog" data-fa-transform="grow-2 down-.5"></i>
</div>
</footer>
</div>
</body>
</html>
/**
* Popup Page
* Belongs to Decentraleyes.
*
* @author Thomas Rientjes
* @since 2016-08-09
* @license MPL 2.0
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/.
*/
import Helpers from '../shared/code/helpers.js';
/**
* Private Functions
*/
const _groupResourceInjections = (injections) => {
return Object.values(injections).reduce((accumulator, injection) => {
accumulator[injection.source] = accumulator[injection.source] ?? [];
accumulator[injection.source].push(injection);
return accumulator;
}, {});
};
const _createInjectionGroupHeaderElement = (source, injections) => {
let injectionGroupHeaderElement, badgeElement, badgeTextNode, cdnNameTextNode;
injectionGroupHeaderElement = document.createElement('li');
injectionGroupHeaderElement.setAttribute('class', 'list-item');
badgeElement = document.createElement('span');
badgeElement.setAttribute('class', 'badge');
badgeTextNode = document.createTextNode(injections.length);
badgeElement.appendChild(badgeTextNode);
cdnNameTextNode = document.createTextNode(Helpers.determineCdnName(source));
injectionGroupHeaderElement.appendChild(badgeElement);
injectionGroupHeaderElement.appendChild(cdnNameTextNode);
return injectionGroupHeaderElement;
};
const _createInjectionElement = (injection) => {
let injectionElement, filename, name, nameTextNode, noteElement, noteTextNode;
injectionElement = document.createElement('li');
injectionElement.setAttribute('class', 'sublist-item');
filename = Helpers.extractFilenameFromPath(injection.path);
name = Helpers.determineResourceName(filename);
nameTextNode = document.createTextNode(`- ${name}`);
injectionElement.appendChild(nameTextNode);
noteElement = document.createElement('span');
noteElement.setAttribute('class', 'side-note');
noteTextNode = document.createTextNode(` v${injection.version}`);
noteElement.appendChild(noteTextNode);
injectionElement.appendChild(noteElement);
return injectionElement;
};
const _createInjectionGroupElement = (source, injections) => {
let injectionGroupElement;
injectionGroupElement = document.createElement('ul');
injectionGroupElement.setAttribute('class', 'sublist');
for (const injection of injections) {
const injectionElement = _createInjectionElement(injection);
injectionGroupElement.appendChild(injectionElement);
}
return injectionGroupElement;
};
const _createInjectionOverviewElement = (groupedInjections) => {
const injectionOverviewElement = document.createElement('ul');
injectionOverviewElement.setAttribute('class', 'list');
for (const [source, injections] of Object.entries(groupedInjections)) {
let injectionGroupHeaderElement, injectionGroupElement;
injectionGroupHeaderElement = _createInjectionGroupHeaderElement(source, injections);
injectionGroupElement = _createInjectionGroupElement(source, injections);
injectionOverviewElement.appendChild(injectionGroupHeaderElement);
injectionOverviewElement.appendChild(injectionGroupElement);
}
return injectionOverviewElement;
};
const _renderInjectionPanel = (groupedInjections) => {
let websiteContextElement, injectionOverviewElement;
websiteContextElement = document.getElementById('website-context');
injectionOverviewElement = _createInjectionOverviewElement(groupedInjections);
websiteContextElement.append(injectionOverviewElement);
};
const _close = async () => {
const platform = await chrome.runtime.getPlatformInfo();
if (platform.os === chrome.runtime.PlatformOs.ANDROID) {
const activeTab = await chrome.tabs.getCurrent();
if (activeTab) {
chrome.tabs.remove(activeTab.id);
} else {
window.close();
}
} else {
window.close();
}
};
/**
* Event Handlers
*/
const _onTestingUtilityLinkClicked = (event) => {
if (event.button === 0 || event.button === 1) {
chrome.tabs.create({
'url': 'https://decentraleyes.org/test',
'active': (event.button === 0)
});
}
if (event.button === 0) {
window.close();
}
};
const _onOptionsButtonClicked = async () => {
const platform = await chrome.runtime.getPlatformInfo();
if (platform.os === chrome.runtime.PlatformOs.ANDROID) {
chrome.tabs.create({
'url': chrome.runtime.getURL('pages/options/options.html'),
'active': true
});
return window.close();
} else {
chrome.runtime.openOptionsPage();
return window.close();
}
};
const _renderNonContextualContents = async () => {
let versionLabelElement, counterElement, testingUtilityLinkElement, optionsButtonElement, amountInjected;
versionLabelElement = document.getElementById('version-label');
counterElement = document.getElementById('injection-counter');
testingUtilityLinkElement = document.getElementById('testing-utility-link');
optionsButtonElement = document.getElementById('options-button');
versionLabelElement.innerText = Helpers.determineVersion();
amountInjected = await Helpers.delegateAction('statistics:get-amount-injected');
counterElement.innerText = Helpers.formatNumber(amountInjected.value);
testingUtilityLinkElement.addEventListener('mouseup', _onTestingUtilityLinkClicked);
optionsButtonElement.addEventListener('mouseup', _onOptionsButtonClicked);
testingUtilityLinkElement.addEventListener('keydown', (event) => {
const enterOrSpaceKeyPressed = Helpers.enterOrSpaceKeyPressed(event);
if (enterOrSpaceKeyPressed) {
chrome.tabs.create({
'url': 'https://decentraleyes.org/test'
});
window.close();
}
});
optionsButtonElement.addEventListener('keydown', (event) => {
const enterOrSpaceKeyPressed = Helpers.enterOrSpaceKeyPressed(event);
if (enterOrSpaceKeyPressed) {
chrome.runtime.openOptionsPage();
return window.close();
}
});
};
const _onProtectionToggled = async () => {
let bypassCache, activeTab;
bypassCache = (typeof browser === 'undefined');
activeTab = await Helpers.determineActiveTab();
chrome.tabs.reload(activeTab.id, {bypassCache});
_close();
};
const _enableProtection = async () => {
let activeTab, tabDomain;
activeTab = await Helpers.determineActiveTab();
tabDomain = await Helpers.delegateAction('domain:extract-from-url', activeTab.url);
await Helpers.delegateAction('domain:remove-from-whitelist', tabDomain);
_onProtectionToggled();
};
const _disableProtection = async () => {
let activeTab, tabDomain;
activeTab = await Helpers.determineActiveTab();
tabDomain = await Helpers.delegateAction('domain:extract-from-url', activeTab.url);
await Helpers.delegateAction('domain:add-to-whitelist', tabDomain);
_onProtectionToggled();
};
const _renderDomainWhitelistPanel = async (domain) => {
let websiteContextElement, protectionToggleElement, domainIndicatorElement, domainIsWhitelisted;
websiteContextElement = document.getElementById('website-context');
protectionToggleElement = document.getElementById('protection-toggle-button');
domainIndicatorElement = document.getElementById('domain-indicator');
protectionToggleElement.setAttribute('dir', Helpers.determineScriptDirection());
domainIndicatorElement.innerText = domain;
domainIsWhitelisted = await Helpers.delegateAction('domain:is-whitelisted', domain);
if (domainIsWhitelisted === true) {
const enableProtectionTitle = chrome.i18n.getMessage('enableProtectionTitle');
protectionToggleElement.setAttribute('class', 'button button-toggle');
protectionToggleElement.addEventListener('click', _enableProtection);
protectionToggleElement.setAttribute('title', enableProtectionTitle);
protectionToggleElement.addEventListener('keydown', (event) => {
const enterOrSpaceKeyPressed = Helpers.enterOrSpaceKeyPressed(event);
if (enterOrSpaceKeyPressed) {
_enableProtection();
}
});
} else {
const disableProtectionTitle = chrome.i18n.getMessage('disableProtectionTitle');
protectionToggleElement.setAttribute('class', 'button button-toggle active');
protectionToggleElement.addEventListener('click', _disableProtection);
protectionToggleElement.setAttribute('title', disableProtectionTitle);
protectionToggleElement.addEventListener('keydown', (event) => {
const enterOrSpaceKeyPressed = Helpers.enterOrSpaceKeyPressed(event);
if (enterOrSpaceKeyPressed) {
_disableProtection();
}
});
}
websiteContextElement.classList.remove('hidden');
};
const _renderContextualContents = async () => {
let activeTab, tabDomain, tabContext, groupedInjections;
activeTab = await Helpers.determineActiveTab();
tabDomain = await Helpers.delegateAction('domain:extract-from-url', activeTab.url);
if (tabDomain !== null) {
await _renderDomainWhitelistPanel(tabDomain);
}
tabContext = await Helpers.delegateAction('tab-context:get', activeTab.id);
groupedInjections = _groupResourceInjections(tabContext.injections);
if (Object.keys(groupedInjections).length > 0) {
_renderInjectionPanel(groupedInjections);
}
};
const _onDocumentLoaded = async () => {
Helpers.applyI18nContentToDocument(document);
Helpers.applyI18nTitlesToDocument(document);
await _renderNonContextualContents();
await _renderContextualContents();
Helpers.unhideDocumentContents(document);
};
/**
* Initializations
*/
document.addEventListener('DOMContentLoaded', _onDocumentLoaded);
/**
* Page Helpers
* Belongs to Decentraleyes.
*
* @author Thomas Rientjes
* @since 2024-10-10
* @license MPL-2.0
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/.
*/
/**
* Public Functions
*/
const awaitInitialization = () => {
return new Promise((resolve, reject) => {
let request, intervalIdentifier, timeoutIdentifier;
request = {'topic': 'extension:is-initialized'};
intervalIdentifier = setInterval(() => {
chrome.runtime.sendMessage(request, (response) => {
if (response?.value === true) {
clearInterval(intervalIdentifier);
clearTimeout(timeoutIdentifier);
resolve();
}
});
}, 100);
timeoutIdentifier = setTimeout(() => {
clearInterval(intervalIdentifier);
reject(new Error('The extension failed to initialize.'));
}, 10000);
});
};
const delegateAction = (identifier, payload, persist = true) => {
return new Promise((resolve, reject) => {
const request = {'topic': identifier, 'value': payload};
chrome.runtime.sendMessage(request, (response) => {
if (response) {
resolve(response.value);
} else {
if (persist === true) {
awaitInitialization().then(() => {
delegateAction(identifier, payload, false).then(resolve).catch(reject);
}).catch(reject);
} else {
reject(new Error(`Action "${identifier}" failed to complete.`));
}
}
});
});
};
const determineActiveTab = async () => {
let queryParameters, tabs;
queryParameters = {'active': true, 'currentWindow': true};
tabs = await chrome.tabs.query(queryParameters);
if (tabs[0]) {
return tabs[0];
}
queryParameters = {'active': true};
tabs = await chrome.tabs.query(queryParameters);
return tabs[0];
};
const determineScriptDirection = (language) => {
let rightToLeftLanguages, scriptDirection;
rightToLeftLanguages = ['ar', 'he'];
language ??= navigator.language;
if (rightToLeftLanguages.indexOf(language) === -1) {
scriptDirection = 'ltr';
} else {
scriptDirection = 'rtl';
}
return scriptDirection;
};
const languageIsFullySupported = (language) => {
let supportedLanguages, languageSupported;
supportedLanguages = [
'ar', 'bg', 'bn', 'cs', 'da', 'de', 'el', 'en', 'eo', 'es', 'et',
'fi', 'fr', 'he', 'hr', 'hu', 'id', 'is', 'it', 'ja', 'ko', 'nb',
'nl', 'pl', 'pt', 'ro', 'ru', 'si', 'sq', 'sv', 'tr', 'uk', 'zh'
];
language ??= navigator.language;
languageSupported = false;
for (const supportedLanguage of supportedLanguages) {
if (language.search(supportedLanguage) !== -1) {
languageSupported = true;
}
}
return languageSupported;
};
const applyI18nContentToDocument = (document) => {
let i18nElements, scriptDirection;
i18nElements = document.querySelectorAll('[data-i18n-content]');
scriptDirection = determineScriptDirection();
i18nElements.forEach((i18nElement) => {
const i18nMessageName = i18nElement.getAttribute('data-i18n-content');
i18nElement.innerText = chrome.i18n.getMessage(i18nMessageName);
i18nElement.setAttribute('dir', scriptDirection);
});
};
const applyI18nTitlesToDocument = (document) => {
let i18nElements, scriptDirection;
i18nElements = document.querySelectorAll('[data-i18n-title]');
scriptDirection = determineScriptDirection();
i18nElements.forEach((i18nElement) => {
const i18nMessageName = i18nElement.getAttribute('data-i18n-title');
i18nElement.setAttribute('title', chrome.i18n.getMessage(i18nMessageName));
i18nElement.setAttribute('dir', scriptDirection);
});
};
const unhideDocumentContents = (document) => {
document.getElementById('wrapper').classList.remove('hidden');
};
const extractFilenameFromPath = (path) => {
let pathSegments, filename;
pathSegments = path.split('/');
filename = pathSegments[pathSegments.length - 1];
return filename;
};
const enterOrSpaceKeyPressed = (event) => {
if (! event.isComposing && event.keyCode !== 229) {
return event.keyCode === 13 || event.keyCode === 32;
}
return false;
};
const determineResourceName = (filename) => {
switch (filename) {
case 'angular.min.jsm':
return 'AngularJS';
case 'backbone-min.jsm':
return 'Backbone.js';
case 'dojo.jsm':
return 'Dojo';
case 'ember.min.jsm':
return 'Ember.js';
case 'ext-core.jsm':
return 'Ext Core';
case 'jquery.min.jsm':
return 'jQuery';
case 'jquery-ui.min.jsm':
return 'jQuery UI';
case 'modernizr.min.jsm':
return 'Modernizr';
case 'mootools-yui-compressed.jsm':
return 'MooTools';
case 'prototype.jsm':
return 'Prototype';
case 'scriptaculous.jsm':
return 'Scriptaculous';
case 'swfobject.jsm':
return 'SWFObject';
case 'underscore-min.jsm':
return 'Underscore.js';
case 'webfont.jsm':
return 'Web Font Loader';
default:
return 'Unknown';
}
};
const determineCdnName = (domainName) => {
switch (domainName) {
case 'ajax.googleapis.com':
return 'Google Hosted Libraries';
case 'ajax.aspnetcdn.com':
return 'Microsoft Ajax CDN';
case 'ajax.microsoft.com':
return 'Microsoft Ajax CDN [Deprecated]';
case 'cdnjs.cloudflare.com':
return 'CDNJS (Cloudflare)';
case 'code.jquery.com':
return 'jQuery CDN (Fastly)';
case 'cdn.jsdelivr.net':
return 'jsDelivr (Cloudflare, Fastly)';
case 'yastatic.net':
return 'Yandex CDN';
case 'yandex.st':
return 'Yandex CDN [Deprecated]';
case 'apps.bdimg.com':
return 'Baidu CDN';
case 'libs.baidu.com':
return 'Baidu CDN [Deprecated]';
case 'lib.sinaapp.com':
return 'Sina Public Resources';
case 'upcdn.b0.upaiyun.com':
return 'UpYun Library';
case 'mat1.gtimg.com':
return 'Tencent Cloud CDN';
case 'cdn.bootcss.com':
return 'BootCDN [Dissolved]';
case 'sdn.geekzu.org':
return 'Geekzu Public Service [Mirror]';
case 'ajax.proxy.ustclug.org':
return 'USTC Linux User Group [Mirror]';
default:
return 'Unknown';
}
};
const determineVersion = () => {
const version = chrome.runtime.getManifest().version;
if (version.indexOf('beta') === -1) {
return version;
} else {
return 'BETA';
}
};
const formatNumber = (number) => {
if (typeof number === 'number') {
return number.toLocaleString();
}
};
/**
* Exports
*/
export default {
awaitInitialization,
delegateAction,
determineActiveTab,
determineScriptDirection,
languageIsFullySupported,
applyI18nContentToDocument,
applyI18nTitlesToDocument,
unhideDocumentContents,
extractFilenameFromPath,
enterOrSpaceKeyPressed,
determineResourceName,
determineCdnName,
determineVersion,
formatNumber
};
File added
File added
File added
/**
* Default Icons
*
* @author Icons: Font Awesome
* @since 2019-05-17 (originally "icons")
* @license Icons: CC BY 4.0
*/
/**
* Private Constants
*/
const _icons = {
'battery-three-quarters': [640, 512, [], 'f241', 'M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48zm-144 96H96v128h320V192z'],
'cog': [512, 512, [], 'f013', 'M444.788 291.1l42.616 24.599c4.867 2.809 7.126 8.618 5.459 13.985-11.07 35.642-29.97 67.842-54.689 94.586a12.016 12.016 0 0 1-14.832 2.254l-42.584-24.595a191.577 191.577 0 0 1-60.759 35.13v49.182a12.01 12.01 0 0 1-9.377 11.718c-34.956 7.85-72.499 8.256-109.219.007-5.49-1.233-9.403-6.096-9.403-11.723v-49.184a191.555 191.555 0 0 1-60.759-35.13l-42.584 24.595a12.016 12.016 0 0 1-14.832-2.254c-24.718-26.744-43.619-58.944-54.689-94.586-1.667-5.366.592-11.175 5.459-13.985L67.212 291.1a193.48 193.48 0 0 1 0-70.199l-42.616-24.599c-4.867-2.809-7.126-8.618-5.459-13.985 11.07-35.642 29.97-67.842 54.689-94.586a12.016 12.016 0 0 1 14.832-2.254l42.584 24.595a191.577 191.577 0 0 1 60.759-35.13V25.759a12.01 12.01 0 0 1 9.377-11.718c34.956-7.85 72.499-8.256 109.219-.007 5.49 1.233 9.403 6.096 9.403 11.723v49.184a191.555 191.555 0 0 1 60.759 35.13l42.584-24.595a12.016 12.016 0 0 1 14.832 2.254c24.718 26.744 43.619 58.944 54.689 94.586 1.667 5.366-.592 11.175-5.459 13.985L444.788 220.9a193.485 193.485 0 0 1 0 70.2zM336 256c0-44.112-35.888-80-80-80s-80 35.888-80 80 35.888 80 80 80 80-35.888 80-80z'],
'cube': [512, 512, [], 'f1b2', 'M239.1 6.3l-208 78c-18.7 7-31.1 25-31.1 45v225.1c0 18.2 10.3 34.8 26.5 42.9l208 104c13.5 6.8 29.4 6.8 42.9 0l208-104c16.3-8.1 26.5-24.8 26.5-42.9V129.3c0-20-12.4-37.9-31.1-44.9l-208-78C262 2.2 250 2.2 239.1 6.3zM256 68.4l192 72v1.1l-192 78-192-78v-1.1l192-72zm32 356V275.5l160-65v133.9l-160 80z'],
'donate': [512, 512, [], 'f4b9', 'M256 416c114.9 0 208-93.1 208-208S370.9 0 256 0 48 93.1 48 208s93.1 208 208 208zM233.8 97.4V80.6c0-9.2 7.4-16.6 16.6-16.6h11.1c9.2 0 16.6 7.4 16.6 16.6v17c15.5.8 30.5 6.1 43 15.4 5.6 4.1 6.2 12.3 1.2 17.1L306 145.6c-3.8 3.7-9.5 3.8-14 1-5.4-3.4-11.4-5.1-17.8-5.1h-38.9c-9 0-16.3 8.2-16.3 18.3 0 8.2 5 15.5 12.1 17.6l62.3 18.7c25.7 7.7 43.7 32.4 43.7 60.1 0 34-26.4 61.5-59.1 62.4v16.8c0 9.2-7.4 16.6-16.6 16.6h-11.1c-9.2 0-16.6-7.4-16.6-16.6v-17c-15.5-.8-30.5-6.1-43-15.4-5.6-4.1-6.2-12.3-1.2-17.1l16.3-15.5c3.8-3.7 9.5-3.8 14-1 5.4 3.4 11.4 5.1 17.8 5.1h38.9c9 0 16.3-8.2 16.3-18.3 0-8.2-5-15.5-12.1-17.6l-62.3-18.7c-25.7-7.7-43.7-32.4-43.7-60.1.1-34 26.4-61.5 59.1-62.4zM480 352h-32.5c-19.6 26-44.6 47.7-73 64h63.8c5.3 0 9.6 3.6 9.6 8v16c0 4.4-4.3 8-9.6 8H73.6c-5.3 0-9.6-3.6-9.6-8v-16c0-4.4 4.3-8 9.6-8h63.8c-28.4-16.3-53.3-38-73-64H32c-17.7 0-32 14.3-32 32v96c0 17.7 14.3 32 32 32h448c17.7 0 32-14.3 32-32v-96c0-17.7-14.3-32-32-32z'],
'exclamation-triangle': [576, 512, [], 'f071', 'M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'],
'gitlab': [512, 512, [], 'f296', 'M29.782 199.732L256 493.714 8.074 309.699c-6.856-5.142-9.712-13.996-7.141-21.993l28.849-87.974zm75.405-174.806c-3.142-8.854-15.709-8.854-18.851 0L29.782 199.732h131.961L105.187 24.926zm56.556 174.806L256 493.714l94.257-293.982H161.743zm349.324 87.974l-28.849-87.974L256 493.714l247.926-184.015c6.855-5.142 9.711-13.996 7.141-21.993zm-85.404-262.78c-3.142-8.854-15.709-8.854-18.851 0l-56.555 174.806h131.961L425.663 24.926z'],
'globe': [512, 512, [], 'f0ac', 'M364.215 192h131.43c5.439 20.419 8.354 41.868 8.354 64s-2.915 43.581-8.354 64h-131.43c5.154-43.049 4.939-86.746 0-128zM185.214 352c10.678 53.68 33.173 112.514 70.125 151.992.221.001.44.008.661.008s.44-.008.661-.008c37.012-39.543 59.467-98.414 70.125-151.992H185.214zm174.13-192h125.385C452.802 84.024 384.128 27.305 300.95 12.075c30.238 43.12 48.821 96.332 58.394 147.925zm-27.35 32H180.006c-5.339 41.914-5.345 86.037 0 128h151.989c5.339-41.915 5.345-86.037-.001-128zM152.656 352H27.271c31.926 75.976 100.6 132.695 183.778 147.925-30.246-43.136-48.823-96.35-58.393-147.925zm206.688 0c-9.575 51.605-28.163 104.814-58.394 147.925 83.178-15.23 151.852-71.949 183.778-147.925H359.344zm-32.558-192c-10.678-53.68-33.174-112.514-70.125-151.992-.221 0-.44-.008-.661-.008s-.44.008-.661.008C218.327 47.551 195.872 106.422 185.214 160h141.572zM16.355 192C10.915 212.419 8 233.868 8 256s2.915 43.581 8.355 64h131.43c-4.939-41.254-5.154-84.951 0-128H16.355zm136.301-32c9.575-51.602 28.161-104.81 58.394-147.925C127.872 27.305 59.198 84.024 27.271 160h125.385z'],
'power-off': [512, 512, [], 'f011', 'M400 54.1c63 45 104 118.6 104 201.9 0 136.8-110.8 247.7-247.5 248C120 504.3 8.2 393 8 256.4 7.9 173.1 48.9 99.3 111.8 54.2c11.7-8.3 28-4.8 35 7.7L162.6 90c5.9 10.5 3.1 23.8-6.6 31-41.5 30.8-68 79.6-68 134.9-.1 92.3 74.5 168.1 168 168.1 91.6 0 168.6-74.2 168-169.1-.3-51.8-24.7-101.8-68.1-134-9.7-7.2-12.4-20.5-6.5-30.9l15.8-28.1c7-12.4 23.2-16.1 34.8-7.8zM296 264V24c0-13.3-10.7-24-24-24h-32c-13.3 0-24 10.7-24 24v240c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24z'],
'shield-alt': [512, 512, [], 'f3ed', 'M496 128c0 221.282-135.934 344.645-221.539 380.308a48 48 0 0 1-36.923 0C130.495 463.713 16 326.487 16 128a48 48 0 0 1 29.539-44.308l192-80a48 48 0 0 1 36.923 0l192 80A48 48 0 0 1 496 128zM256 446.313l.066.034c93.735-46.689 172.497-156.308 175.817-307.729L256 65.333v380.98z'],
'user-circle': [496, 512, [], 'f2bd', 'M248 104c-53 0-96 43-96 96s43 96 96 96 96-43 96-96-43-96-96-96zm0 144c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm0-240C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-49.7 0-95.1-18.3-130.1-48.4 14.9-23 40.4-38.6 69.6-39.5 20.8 6.4 40.6 9.6 60.5 9.6s39.7-3.1 60.5-9.6c29.2 1 54.7 16.5 69.6 39.5-35 30.1-80.4 48.4-130.1 48.4zm162.7-84.1c-24.4-31.4-62.1-51.9-105.1-51.9-10.2 0-26 9.6-57.6 9.6-31.5 0-47.4-9.6-57.6-9.6-42.9 0-80.6 20.5-105.1 51.9C61.9 339.2 48 299.2 48 256c0-110.3 89.7-200 200-200s200 89.7 200 200c0 43.2-13.9 83.2-37.3 115.9z']
};
/**
* Initializations
*/
window.___FONT_AWESOME___ = {'hooks': {}, 'shims': [], 'styles': {'fa': _icons}};
pages/shared/resources/images/icons/extension/favicon.ico

21.9 KiB

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="36.124mm" width="36.124mm" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" viewBox="0 0 128.00104 128.00051">
<circle cx="64.001" cy="64" r="64.001" fill="#69ab90"/>
<circle cx="64.085" cy="64.083" r="42.971" fill="#4a856d"/>
<circle cx="64.001" cy="64" r="37.949" fill="#d9ccb5"/>
<path fill-rule="evenodd" fill="#e1eee9" d="m64.311 5.2027c-15.917-0.0951-30.901 6.0143-42.297 17.411-9.644 9.644-15.441 21.629-17.026 35.2-0.67006 5.7369-0.5107 8.2382 0.64347 10.105 1.1507 1.8612 3.4249 3.149 5.5615 3.149 0.98722 0 1.9386-0.26228 3.0452-0.84038 1.1586-0.60529 1.8574-1.2411 2.4937-2.2704 0.79457-1.2852 0.90909-1.8011 1.1381-5.1021 0.47883-6.9012 1.6169-11.749 4.005-17.062 2.4555-5.4634 5.301-9.5916 9.5135-13.805 6.8213-6.8213 15.13-11.141 24.787-12.887 3.4249-0.6191 11.015-0.68351 14.953-0.12635 3.4428 0.48699 4.4984 0.34055 6.3481-0.88446 2.5756-1.7059 3.6144-5.2162 2.3537-7.9532-1.345-2.9219-3.165-3.8706-8.649-4.5119-2.304-0.2695-4.596-0.4095-6.871-0.4231zm48.799 33.074c-3.6389-0.0167-6.6202 2.8979-6.6202 6.4702 0 4.9481 4.8624 8.1224 9.2627 6.0472 1.7758-0.83744 2.6468-1.713 3.3302-3.3488 1.7958-4.2982-1.3632-9.1478-5.973-9.1686zm-6.6455 50.306c-1.8089 0.0287-3.2552 0.89689-4.9072 2.8179-4.0831 4.7483-5.0657 5.7999-7.0837 7.5812-6.0836 5.3693-13.897 9.1442-22.35 10.798-4.148 0.81126-12.804 0.72705-17.001-0.16553-8.8295-1.8778-15.896-5.4994-22.652-11.609-3.4712-3.1388-4.5921-3.771-6.685-3.771-3.6521 0-6.4471 2.8341-6.4626 6.5536-0.01154 2.8111 0.78192 4.015 5.3001 8.0376 8.8557 7.8844 20.747 13.194 32.607 14.559 3.2817 0.37766 9.806 0.38602 13.176 0.0177 10.723-1.1723 21.082-5.2921 29.672-11.8 2.8661-2.1714 8.7727-7.9998 10.807-10.665 2.479-3.2464 3.0147-5.0679 2.2792-7.7566-0.48979-1.7903-2.7682-3.8797-4.7483-4.3547-0.70468-0.16905-1.3482-0.25346-1.9511-0.24389z"/>
<g fill="#fff">
<path d="m115.71 72.61c-1.0127-0.0447-1.543 0.72998-2.0903 2.7813-0.3222 1.0306-0.36075 1.5153-0.70486 2.5359l-0.50284 1.5094-0.98575-0.34766-0.98576-0.34679 0.21415 1.3976c0.55593 3.6249 1.212 7.3784 1.284 7.3478 0.77038-0.62132 3.556-2.9529 6.764-5.5758 0 0-0.53223-0.19135-1.1262-0.40574l-1.0273-0.39968 0.54013-1.6499c0.29698-0.9075 0.66712-2.4862 0.82275-3.5087 0.0445-0.29211 0.0661-0.51442 0.0876-0.73779 0.0612-1.479-0.39204-2.0925-1.5051-2.444-0.29124-0.092-0.55092-0.14575-0.78463-0.15606z"/>
<path d="m95.495 22.566c-0.70228 0.73105-1.6206 0.53609-3.432-0.57125-0.94425-0.52374-1.3066-0.84801-2.2598-1.3494l-1.4054-0.74574-0.47372 0.93173-0.47434 0.93111-0.80917-1.1594c-2.0984-3.0076-4.213-6.1772-4.1397-6.2047 0.98633-0.0817 4.6116-0.31574 8.7434-0.63059 0 0-0.25324 0.50568-0.53534 1.0707l-0.46795 0.99814 1.5293 0.82169c0.84104 0.45202 2.1982 1.3395 3.0163 1.9723 0.23375 0.18076 0.40278 0.32678 0.5724 0.47368 1.0647 1.0285 1.1598 1.7852 0.59664 2.8076-0.14735 0.26753-0.29824 0.48558-0.46032 0.6543z"/>
<path d="m100.68 24.418c-0.41116 0.0497-0.78285 0.27452-1.1522 0.6511-1.1247 1.1466-0.79426 2.2417 1.414 4.6809 1.1056 1.2212 2.684 2.99 3.5069 3.9309 1.6663 1.9055 2.4818 2.1423 3.6214 1.0508 1.2686-1.2149 0.95797-2.245-1.6386-5.4359-2.9317-3.6029-4.5179-5.0266-5.7515-4.8775z"/>
<path d="m114.85 65.305c-0.0768-1.2476-0.24583-3.612-0.37543-5.2544-0.25887-3.2801 0.14812-4.3493 1.7388-4.5703 2.0899-0.29035 2.7244 1.3726 2.8855 7.5639 0.10703 4.1126-0.27587 5.1176-2.0227 5.3045-1.569 0.16821-2.0704-0.51749-2.2262-3.044z"/>
</g>
<path d="m91.66 60.795c-0.93701-0.008-1.9364 0.57493-3.4194 1.8857-4.5166 3.992-9.731 6.8036-15.334 8.2684-3.9675 1.0372-10.902 1.303-15.065 0.57826-6.5683-1.1435-11.892-3.7156-17.722-8.5623-2.1236-1.7655-2.7229-2.1137-3.6344-2.1137-1.5619 0-2.6737 1.1688-2.6737 2.8107 0 1.1208 0.1712 1.3926 1.9498 3.0942 1.0724 1.026 2.8609 2.5027 3.9751 3.2824 1.1142 0.77975 2.1341 1.5093 2.2663 1.6212 0.13241 0.11197 0.07916 0.86576-0.11878 1.6741-0.65399 2.671-1.899 4.6351-3.415 5.5713-0.50004 0.34112-1.005 0.56308-1.4739 0.61382-2.9014 0.3139-4.1706 1.9141-3.2373 4.0817 0.74121 1.7215 2.9369 2.1278 5.3405 1.3265 0.10942-0.0376 0.21878-0.0751 0.32772-0.11704 0.10578-0.0398 0.21192-0.0821 0.31818-0.12658 0.21898-0.0932 0.43684-0.19232 0.65283-0.30257 0.02255-0.0114 0.04507-0.0213 0.06762-0.0329 0.80513-0.4182 1.5854-0.95459 2.3201-1.5961 0.06231-0.0557 0.12467-0.11433 0.18727-0.1734 0.0908-0.0825 0.1795-0.16916 0.26876-0.25489 0.7607-0.76949 1.5238-1.7523 2.1718-2.77 0.09146-0.14364 0.17441-0.28823 0.26096-0.43262 0.04771-0.0815 0.09926-0.1609 0.14566-0.24276 0.67702-1.1947 1.2064-2.4123 1.3811-3.2858 0.10325-0.51634 0.29812-0.93892 0.43262-0.93892 0.13454-0.00001 1.1642 0.33163 2.288 0.73695 2.7272 0.98358 6.5825 1.8868 9.1233 2.1371l2.0721 0.20374v4.889c0 4.7949 0.01465 4.9068 0.76034 5.7932 0.41819 0.49698 1.0597 0.94882 1.4253 1.004 1.1983 0.18067 2.0095-0.11877 2.7683-1.0204 0.72861-0.86617 0.74734-1.0054 0.74734-5.7724v-4.8846l2.1353-0.19854c2.6646-0.24764 7.3558-1.3941 9.8495-2.4076 1.0409-0.42294 1.9928-0.7069 2.1154-0.63117 0.12256 0.0757 0.30511 0.64675 0.40574 1.2693 0.33341 2.0621 2.1929 5.4333 3.9344 7.1334 3.2076 3.1317 7.4636 3.7675 8.7367 1.3057 1.0782-2.085-0.06861-3.7616-2.9252-4.2768-1.2731-0.22964-2.7375-1.7153-3.5633-3.6153-0.69673-1.6033-1.3079-4.6702-0.98837-4.9592 0.13916-0.12572 1.1234-0.85383 2.1874-1.6178 2.7792-1.9955 5.3418-4.5654 5.5651-5.5815 0.22086-1.0056-0.45672-2.5324-1.3317-3.0006-0.43971-0.23532-0.8529-0.36123-1.2788-0.365z" fill="#2a4c3d"/>
</svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg xmlns="http://www.w3.org/2000/svg" height="7.1673mm" width="7.2061mm" version="1.1"
viewBox="0 0 25.5334 25.395792" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3.org/2000/svg ">
<g transform="translate(177.77 -519.66)">
<path d="m-165 519.66c-2.6196 0-4.9735 0.71508-7.2323 2.1971-0.9279 0.60864-2.7283 2.4092-3.337 3.337-1.4712 2.2424-2.1972 4.6154-2.1972 7.1819 0 2.5788 0.7141 4.9223 2.1797 7.1552 0.6309 0.96123 2.4192 2.7501 3.3802 3.3808 1.4791 0.97083 3.2841 1.71 4.9268 2.0176 1.0838 0.20297 3.9457 0.15209 5.0159-0.0894 2.4596-0.55481 4.4742-1.6723 6.29-3.4887 2.4847-2.4856 3.7408-5.4989 3.7408-8.9756 0-3.4682-1.2629-6.498-3.7405-8.9756-2.4919-2.4919-5.5045-3.7404-9.0264-3.7404z"
fill="#7db69f"/>
<path d="m-165.02 528.24c-0.8699 0-1.6514 0.23746-2.4016 0.72959-0.3081 0.20212-0.9061 0.80004-1.1081 1.1081-0.4886 0.74466-0.7298 1.5326-0.7298 2.3849 0 0.85636 0.2371 1.6346 0.724 2.3761 0.2094 0.3192 0.8033 0.91326 1.1224 1.1227 0.4911 0.32239 1.0906 0.56785 1.6361 0.67001 0.3598 0.0673 1.3102 0.0504 1.6658-0.0297 0.8167-0.18424 1.4856-0.55532 2.0886-1.1585 0.8251-0.8254 1.2423-1.826 1.2423-2.9806 0-1.1517-0.4195-2.1578-1.2421-2.9806-0.8277-0.82751-1.8279-1.2421-2.9976-1.2421z"
fill="#4a826c"/>
<path d="m-2404.4 671.18c-3.2399-0.0194-6.3107 1.2365-8.6289 3.5547 0 0.002 0 0.004-0.01 0.006-1.9541 1.9569-3.1473 4.4242-3.4687 7.1758-0.1336 1.143-0.1324 1.8177 0.2265 2.3984 0.3941 0.63745 0.9181 0.94336 1.6758 0.94336 0.2981 0 0.6535-0.10695 0.916-0.24414 0.2434-0.12713 0.6126-0.46272 0.7539-0.69141 0.065-0.10555 0.202-0.39493 0.2403-0.56641 0.053-0.23546 0.061-0.41065 0.084-0.74218 0.088-1.2626 0.2865-2.0912 0.7089-3.0312 0.4385-0.97557 0.9254-1.6871 1.6778-2.4395 1.2078-1.2078 2.6659-1.965 4.3828-2.2754 0.3293-0.0595 0.7416-0.0624 1.2617-0.0684s1.0247-0.004 1.3828 0.0469c0.3661 0.0518 0.6053 0.0832 0.9219 0.0391 0.2645-0.0368 0.6003-0.19398 0.791-0.32031 0.8224-0.54467 1.1248-1.5151 0.707-2.4219a0.6513 0.6513 0 0 1 0 -0.002c-0.1439-0.31257-0.5075-0.75154-0.8496-0.92969-0.4136-0.21541-0.8031-0.27857-1.3769-0.3457-0.4667-0.0546-0.9332-0.0832-1.3985-0.0859zm9.3692 6.3516c-1.074-0.004-1.9883 0.87522-1.9883 1.957 0 1.3647 1.5564 2.3925 2.7988 1.8066 0.3338-0.1574 0.8593-0.69555 0.9922-1.0137 0.5288-1.2658-0.423-2.7422-1.8008-2.75zm-1.291 9.6602c-0.5015 0.009-1.1313 0.39448-1.4707 0.78906-0.7801 0.90716-0.9293 1.0694-1.2911 1.3887-1.0664 0.94113-2.4514 1.6118-3.957 1.9062-0.394 0.0771-0.8958 0.072-1.4824 0.0664-0.5866-0.006-1.0998-0.0118-1.4941-0.0957l0.1328 0.0137a0.6513 0.6513 0 0 1 -0.1328 -0.0137c-1.5797-0.33594-2.8091-0.96601-4.0195-2.0606-0.3529-0.31903-0.5674-0.50965-0.8692-0.67969-0.2288-0.12895-0.689-0.22851-0.8945-0.22851-1.03 0-1.951 0.94359-1.9551 1.9688v0.002a0.6513 0.6513 0 0 1 0 0.002c0 0.26313 0.1216 0.80286 0.3028 1.0781 0.2346 0.35637 0.5009 0.59192 0.957 0.99805 1.8218 1.622 4.2177 2.6942 6.6543 2.9746 0.7641 0.0879 1.9155 0.0871 2.6895 0.002 2.1894-0.23969 4.2945-1.0791 6.0489-2.4082 0.7055-0.53445 1.6855-1.491 2.2129-2.1816 0.2682-0.35126 0.4557-0.64063 0.5664-1.0176 0.098-0.33319 0.076-0.788-0.01-1.0938-0.1165-0.42605-0.279-0.59899-0.5546-0.85157-0.2646-0.24237-0.4858-0.39738-0.8809-0.49218-0.1798-0.0432-0.3602-0.0694-0.5527-0.0664z"
fill-rule="evenodd" transform="matrix(.82404 0 0 .82404 1816.1 -30.489)" fill="#f1f7f5"/>
</g>
</svg>
<?xml version="1.0" encoding="UTF-8"?>
<svg width="230.16mm" height="39.735mm" version="1.1" viewBox="0 0 815.52 140.8" xmlns="http://www.w3.org/2000/svg">
<g transform="translate(495.3 730.12)">
<g fill="#3f3f3f">
<g transform="translate(-173.28 -703.95)" fill="#3f3f3f">
<g fill="#3f3f3f">
<path d="m-278.88 51.115c0 4.9562-0.18356 9.5452-1.8356 12.299-2.2027 3.8548-6.4247 4.4055-10.647 4.4055h-8.2603v-74.526h8.2603c4.2219 0 8.4439 0.55069 10.647 4.4055 1.6521 2.937 1.8356 7.526 1.8356 12.299v41.118zm22.578-36.162c0-6.0575 0-12.299-1.1014-17.806-1.2849-6.9754-4.2219-12.115-8.4438-15.97-8.6274-7.7096-23.496-7.3425-24.964-7.3425h-31.206v113.44h30.104c5.1397 0 10.096-0.18356 14.501-1.2849 4.2219-1.1014 8.0767-2.937 11.197-5.5069 4.2219-3.4877 7.3425-8.9945 8.811-16.521 1.1014-5.5069 1.1014-11.748 1.1014-17.622v-31.389z"/>
<path d="m-222.65 38.265c0-3.8548 0.18357-8.4439 1.8356-11.564 1.4685-2.3863 3.6712-4.2219 7.526-4.2219 4.4055 0 6.7918 2.0192 8.0767 4.9562s1.2849 7.3425 1.2849 10.83h-18.723zm-20.375 13.767c0 12.666 2.0192 22.395 8.0767 28.636 4.7726 4.7726 11.564 7.526 22.395 7.526 4.4055 0.18356 9.5452-0.55069 13.767-1.8356 3.6712-0.91781 7.1589-2.3863 10.647-4.2219l-4.589-16.337c-4.0384 1.2849-7.8932 2.7534-11.932 3.4877-2.3863 0.55069-4.9562 0.73425-7.7096 0.73425-4.0384-0.18356-7.1589-1.8356-8.6274-4.589-1.4685-3.3041-1.6521-7.526-1.6521-11.014h37.08c0-6.4247 0.55069-14.685 0-22.762-0.55068-7.1589-2.3863-13.033-5.6904-17.622-4.589-6.0575-11.564-9.7288-21.66-9.7288-8.6274 0-15.419 2.7534-20.008 7.1589-7.7096 7.526-10.096 19.641-10.096 32.674v7.8932z"/>
<path d="m-173.83 52.216c0 9.9123 0.91781 21.66 8.2603 28.636 6.0576 6.0575 14.501 7.3425 22.578 7.3425 7.1589 0 15.052-1.4685 21.11-4.7726l-3.6712-16.704c-3.8548 1.1014-5.874 1.8356-9.5452 2.3863-3.1206 0.55069-4.0384 0.73425-7.3425 0.73425-4.9562-0.18356-8.0767-2.3863-9.5452-5.5069-1.2849-2.3863-1.4685-5.5069-1.4685-9.1781v-17.622c0-4.4055 0.36712-8.4439 2.3863-11.197 1.4685-2.2027 3.8548-3.3041 7.7096-3.4877 5.5069-0.18356 12.115 1.4685 17.071 3.1206l3.4877-17.255c-2.3863-1.1014-6.6082-2.5699-10.096-3.3041-3.4877-0.73425-6.9754-1.1014-10.463-1.1014-9.3617 0.18356-18.54 2.5699-24.414 10.647-6.0576 8.2603-6.0576 19.274-6.0576 29.186v8.0767z"/>
<path d="m-92.864 38.265c0-3.8548 0.18356-8.4439 1.8356-11.564 1.4685-2.3863 3.6712-4.2219 7.526-4.2219 4.4055 0 6.7918 2.0192 8.0767 4.9562s1.2849 7.3425 1.2849 10.83h-18.723zm-20.375 13.767c0 12.666 2.0192 22.395 8.0767 28.636 4.7726 4.7726 11.564 7.526 22.395 7.526 4.4055 0.18356 9.5452-0.55069 13.767-1.8356 3.6712-0.91781 7.1589-2.3863 10.647-4.2219l-4.5891-16.337c-4.0384 1.2849-7.8932 2.7534-11.932 3.4877-2.3863 0.55069-4.9562 0.73425-7.7096 0.73425-4.0384-0.18356-7.1589-1.8356-8.6274-4.589-1.4685-3.3041-1.6521-7.526-1.6521-11.014h37.08c0-6.4247 0.55069-14.685 0-22.762-0.55069-7.1589-2.3863-13.033-5.6904-17.622-4.5891-6.0575-11.564-9.7288-21.66-9.7288-8.6274 0-15.419 2.7534-20.008 7.1589-7.7096 7.526-10.096 19.641-10.096 32.674v7.8932z"/>
<path d="m-21.65 87.276v-63.696c1.6521-0.55069 4.4055-0.91781 7.526-0.91781 4.5891 0 7.3425 1.4685 8.811 4.0384 2.2027 3.6712 1.8356 11.748 1.8356 16.704v43.871h20.375v-50.48c0-11.564-1.1014-19.825-6.7918-25.699-4.0382-4.2208-11.014-6.6071-20.559-6.7907-7.8932 0-18.723 1.1014-31.206 4.7726v78.197h20.008z"/>
<path d="m36.393 54.602c0 9.3617-0.36712 21.293 6.6082 28.452 4.2219 4.4055 10.463 5.874 17.255 5.6904 5.6904 0 11.564-1.6521 16.704-4.4055l-4.222-16.703c-2.3863 0.91781-6.4247 2.7534-9.7288 2.5699-6.424-0.551-6.241-10.646-6.241-15.236v-31.022h16.153v-17.622h-16.153v-18.54h-20.375v18.54h-9.5452v17.622h9.5452v30.655z"/>
<path d="m108.13 87.276v-63.329c2.2027-0.73425 4.4055-1.1014 6.4247-1.1014 1.4685 0 4.0384 0 6.4247 0.55069l2.57-18.355c-4.4-0.7347-8.44-0.9182-12.48-0.7347-7.71 0.1836-15.785 1.6521-22.944 4.5891v78.381h20.008z"/>
<path d="m160.29 68.92c-2.937 1.2849-6.4247 2.5699-8.9945 1.2849-1.2849-0.73425-2.3863-2.2027-2.3863-4.7726v-1.2849c0-3.1206 1.1014-5.1397 2.5699-6.4247 1.652-1.4685 4.0384-2.2027 6.6082-3.1206l8.6274-2.7534v13.951l-6.4247 3.1206zm26.433-27.167c0-10.096-0.55068-20.559-5.874-27.901-2.2027-3.1206-5.5069-5.6904-9.9124-7.3425-4.2219-1.6521-8.9945-2.2027-13.767-2.2027-4.0384 0-8.6274 0.55069-13.033 1.4685-3.4877 0.73425-6.7918 1.6521-9.5452 2.937l3.6712 17.622c2.5699-0.73425 5.5069-1.6521 8.4438-2.2027 3.1206-0.73425 6.2411-0.91781 8.9945-0.91781 3.6712 0.18356 6.6082 1.1014 8.0767 2.7534 2.7534 2.937 2.937 6.6082 2.937 10.463l-18.356 4.9562c-6.2411 1.4685-11.197 4.2219-14.318 8.0767-3.1206 3.6712-4.7726 8.6274-4.7726 15.236v2.937c0 5.5069 1.2849 11.381 4.9562 15.419 2.7534 2.937 6.4247 4.5891 11.564 4.9562 4.0384 0.36712 8.0767-0.36712 11.748-1.8356 3.1206-1.2849 6.0576-2.937 9.1781-4.5891l0.36713 5.6904h19.641v-45.523z"/>
<path d="m222.5-26.165h-20.008v113.44h20.008z"/>
<path d="m257.04 38.265c0-3.8548 0.18356-8.4439 1.8356-11.564 1.4685-2.3863 3.6712-4.2219 7.526-4.2219 4.4055 0 6.7918 2.0192 8.0767 4.9562s1.2849 7.3425 1.2849 10.83h-18.723zm-20.375 13.767c0 12.666 2.0192 22.395 8.0767 28.636 4.7726 4.7726 11.564 7.526 22.395 7.526 4.4055 0.18356 9.5452-0.55069 13.767-1.8356 3.6712-0.91781 7.1589-2.3863 10.647-4.2219l-4.589-16.337c-4.0384 1.2849-7.8932 2.7534-11.932 3.4877-2.3863 0.55069-4.9562 0.73425-7.7096 0.73425-4.0384-0.18356-7.1589-1.8356-8.6274-4.589-1.4685-3.3041-1.6521-7.526-1.6521-11.014h37.08c0-6.4247 0.55068-14.685 0-22.762-0.55069-7.1589-2.3863-13.033-5.6904-17.622-4.589-6.0575-11.564-9.7288-21.66-9.7288-8.6274 0-15.419 2.7534-20.008 7.1589-7.7096 7.526-10.096 19.641-10.096 32.674v7.8932z"/>
<path d="m366.62 10.915v-5.5069h-20.008l-11.014 46.992-13.216-46.992h-20.559v4.5891l23.496 69.57c-1.6521 6.9754-6.4247 16.888-17.622 16.888l1.4685 17.622c3.6712 0.73425 7.7096 0.73425 11.197 0 16.521-3.4877 21.11-20.192 25.332-34.326l20.926-68.836z"/>
<path d="m392.92 38.265c0-3.8548 0.18356-8.4439 1.8356-11.564 1.4685-2.3863 3.6712-4.2219 7.526-4.2219 4.4055 0 6.7918 2.0192 8.0767 4.9562s1.2849 7.3425 1.2849 10.83h-18.723zm-20.375 13.767c0 12.666 2.0192 22.395 8.0767 28.636 4.7726 4.7726 11.564 7.526 22.395 7.526 4.4055 0.18356 9.5452-0.55069 13.767-1.8356 3.6712-0.91781 7.1589-2.3863 10.647-4.2219l-4.589-16.337c-4.0384 1.2849-7.8932 2.7534-11.932 3.4877-2.3863 0.55069-4.9562 0.73425-7.7096 0.73425-4.0384-0.18356-7.1589-1.8356-8.6274-4.589-1.4685-3.3041-1.6521-7.526-1.6521-11.014h37.08c0-6.4247 0.55068-14.685 0-22.762-0.55069-7.1589-2.3863-13.033-5.6904-17.622-4.5891-6.0575-11.564-9.7288-21.66-9.7288-8.6274 0-15.419 2.7534-20.008 7.1589-7.7096 7.526-10.096 19.641-10.096 32.674v7.8932z"/>
<path d="m493.5 63.597c0-9.9123-4.0384-16.521-12.666-20.559-4.2219-1.8356-8.9945-3.8548-12.666-5.5069-2.3863-1.1014-4.5891-2.3863-6.2411-4.2219-1.1014-1.4685-1.8356-3.1206-1.6521-5.3233 0.36712-4.2219 3.8548-6.2411 8.2603-6.2411 5.5069 0 10.83 1.6521 16.704 3.1206l3.4877-16.153c-2.937-1.2849-6.0575-2.2027-9.7288-3.1206-3.8548-0.73425-8.0767-1.2849-12.482-1.2849-5.6904 0-10.463 1.1014-14.318 3.1206-7.526 3.8548-11.197 11.381-11.564 19.641-0.36712 9.5452 3.4877 16.704 11.564 22.027 5.5069 3.4877 11.748 5.874 17.071 8.811 2.3863 1.4685 4.589 3.4877 4.2219 6.6082 0 4.2219-4.0384 6.4247-8.0767 6.4247-2.3863 0.18356-4.7726-0.18356-6.9754-0.55069-4.589-0.73425-8.6274-2.0192-13.216-3.1206l-3.4877 15.97c2.5699 1.2849 6.0576 2.3863 9.1781 3.3041 4.589 1.1014 8.6274 1.6521 13.951 1.6521 8.9945 0 16.521-2.2027 21.477-6.9754 4.4055-4.0384 6.9754-9.5452 7.1589-17.622z"/>
</g>
</g>
</g>
</g>
</svg>
/*!
* Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
*/
!function(){"use strict";function r(t){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function i(t,e){for(var n=0;n<e.length;n++){var a=e[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(t,a.key,a)}}function $(r){for(var t=1;t<arguments.length;t++){var i=null!=arguments[t]?arguments[t]:{},e=Object.keys(i);"function"==typeof Object.getOwnPropertySymbols&&(e=e.concat(Object.getOwnPropertySymbols(i).filter(function(t){return Object.getOwnPropertyDescriptor(i,t).enumerable}))),e.forEach(function(t){var e,n,a;e=r,a=i[n=t],n in e?Object.defineProperty(e,n,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[n]=a})}return r}function p(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=[],a=!0,r=!1,i=void 0;try{for(var o,c=t[Symbol.iterator]();!(a=(o=c.next()).done)&&(n.push(o.value),!e||n.length!==e);a=!0);}catch(t){r=!0,i=t}finally{try{a||null==c.return||c.return()}finally{if(r)throw i}}return n}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function d(t){return function(t){if(Array.isArray(t)){for(var e=0,n=new Array(t.length);e<t.length;e++)n[e]=t[e];return n}}(t)||function(t){if(Symbol.iterator in Object(t)||"[object Arguments]"===Object.prototype.toString.call(t))return Array.from(t)}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance")}()}var t=function(){},e={},n={},a=null,o={mark:t,measure:t};try{"undefined"!=typeof window&&(e=window),"undefined"!=typeof document&&(n=document),"undefined"!=typeof MutationObserver&&(a=MutationObserver),"undefined"!=typeof performance&&(o=performance)}catch(t){}var c=(e.navigator||{}).userAgent,s=void 0===c?"":c,v=e,b=n,l=a,f=o,u=!!v.document,m=!!b.documentElement&&!!b.head&&"function"==typeof b.addEventListener&&"function"==typeof b.createElement,k=~s.indexOf("MSIE")||~s.indexOf("Trident/"),h="___FONT_AWESOME___",A=16,g="fa",y="svg-inline--fa",tt="data-fa-i2svg",w="data-fa-pseudo-element",x="data-fa-pseudo-element-pending",C="data-prefix",O="data-icon",P="fontawesome-i2svg",S="async",N=["HTML","HEAD","STYLE","SCRIPT"],M=function(){try{return!0}catch(t){return!1}}(),z={fas:"solid",far:"regular",fal:"light",fad:"duotone",fab:"brands",fak:"kit",fa:"solid"},E={solid:"fas",regular:"far",light:"fal",duotone:"fad",brands:"fab",kit:"fak"},j="fa-layers-text",L=/Font Awesome ([5 ]*)(Solid|Regular|Light|Duotone|Brands|Free|Pro|Kit).*/i,R={900:"fas",400:"far",normal:"far",300:"fal"},I=[1,2,3,4,5,6,7,8,9,10],_=I.concat([11,12,13,14,15,16,17,18,19,20]),T=["class","data-prefix","data-icon","data-fa-transform","data-fa-mask"],Y={GROUP:"group",SWAP_OPACITY:"swap-opacity",PRIMARY:"primary",SECONDARY:"secondary"},H=["xs","sm","lg","fw","ul","li","border","pull-left","pull-right","spin","pulse","rotate-90","rotate-180","rotate-270","flip-horizontal","flip-vertical","flip-both","stack","stack-1x","stack-2x","inverse","layers","layers-text","layers-counter",Y.GROUP,Y.SWAP_OPACITY,Y.PRIMARY,Y.SECONDARY].concat(I.map(function(t){return"".concat(t,"x")})).concat(_.map(function(t){return"w-".concat(t)})),F=v.FontAwesomeConfig||{};if(b&&"function"==typeof b.querySelector){[["data-family-prefix","familyPrefix"],["data-replacement-class","replacementClass"],["data-auto-replace-svg","autoReplaceSvg"],["data-auto-add-css","autoAddCss"],["data-auto-a11y","autoA11y"],["data-search-pseudo-elements","searchPseudoElements"],["data-observe-mutations","observeMutations"],["data-mutate-approach","mutateApproach"],["data-keep-original-source","keepOriginalSource"],["data-measure-performance","measurePerformance"],["data-show-missing-icons","showMissingIcons"]].forEach(function(t){var e,n=p(t,2),a=n[0],r=n[1],i=""===(e=function(t){var e=b.querySelector("script["+t+"]");if(e)return e.getAttribute(t)}(a))||"false"!==e&&("true"===e||e);null!=i&&(F[r]=i)})}var D=$({},{familyPrefix:g,replacementClass:y,autoReplaceSvg:!0,autoAddCss:!0,autoA11y:!0,searchPseudoElements:!1,observeMutations:!0,mutateApproach:"async",keepOriginalSource:!0,measurePerformance:!1,showMissingIcons:!0},F);D.autoReplaceSvg||(D.observeMutations=!1);var et=$({},D);v.FontAwesomeConfig=et;var U=v||{};U[h]||(U[h]={}),U[h].styles||(U[h].styles={}),U[h].hooks||(U[h].hooks={}),U[h].shims||(U[h].shims=[]);var W=U[h],q=[],V=!1;function X(t){m&&(V?setTimeout(t,0):q.push(t))}m&&((V=(b.documentElement.doScroll?/^loaded|^c/:/^loaded|^i|^c/).test(b.readyState))||b.addEventListener("DOMContentLoaded",function t(){b.removeEventListener("DOMContentLoaded",t),V=1,q.map(function(t){return t()})}));var B,G="pending",K="settled",J="fulfilled",Q="rejected",Z=function(){},nt="undefined"!=typeof global&&void 0!==global.process&&"function"==typeof global.process.emit,at="undefined"==typeof setImmediate?setTimeout:setImmediate,rt=[];function it(){for(var t=0;t<rt.length;t++)rt[t][0](rt[t][1]);B=!(rt=[])}function ot(t,e){rt.push([t,e]),B||(B=!0,at(it,0))}function ct(t){var e=t.owner,n=e._state,a=e._data,r=t[n],i=t.then;if("function"==typeof r){n=J;try{a=r(a)}catch(t){ut(i,t)}}st(i,a)||(n===J&&lt(i,a),n===Q&&ut(i,a))}function st(e,n){var a;try{if(e===n)throw new TypeError("A promises callback cannot return that same promise.");if(n&&("function"==typeof n||"object"===r(n))){var t=n.then;if("function"==typeof t)return t.call(n,function(t){a||(a=!0,n===t?ft(e,t):lt(e,t))},function(t){a||(a=!0,ut(e,t))}),!0}}catch(t){return a||ut(e,t),!0}return!1}function lt(t,e){t!==e&&st(t,e)||ft(t,e)}function ft(t,e){t._state===G&&(t._state=K,t._data=e,ot(mt,t))}function ut(t,e){t._state===G&&(t._state=K,t._data=e,ot(pt,t))}function dt(t){t._then=t._then.forEach(ct)}function mt(t){t._state=J,dt(t)}function pt(t){t._state=Q,dt(t),!t._handled&&nt&&global.process.emit("unhandledRejection",t._data,t)}function ht(t){global.process.emit("rejectionHandled",t)}function gt(t){if("function"!=typeof t)throw new TypeError("Promise resolver "+t+" is not a function");if(this instanceof gt==!1)throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.");this._then=[],function(t,e){function n(t){ut(e,t)}try{t(function(t){lt(e,t)},n)}catch(t){n(t)}}(t,this)}gt.prototype={constructor:gt,_state:G,_then:null,_data:void 0,_handled:!1,then:function(t,e){var n={owner:this,then:new this.constructor(Z),fulfilled:t,rejected:e};return!e&&!t||this._handled||(this._handled=!0,this._state===Q&&nt&&ot(ht,this)),this._state===J||this._state===Q?ot(ct,n):this._then.push(n),n.then},catch:function(t){return this.then(null,t)}},gt.all=function(c){if(!Array.isArray(c))throw new TypeError("You must pass an array to Promise.all().");return new gt(function(n,t){var a=[],r=0;function e(e){return r++,function(t){a[e]=t,--r||n(a)}}for(var i,o=0;o<c.length;o++)(i=c[o])&&"function"==typeof i.then?i.then(e(o),t):a[o]=i;r||n(a)})},gt.race=function(r){if(!Array.isArray(r))throw new TypeError("You must pass an array to Promise.race().");return new gt(function(t,e){for(var n,a=0;a<r.length;a++)(n=r[a])&&"function"==typeof n.then?n.then(t,e):t(n)})},gt.resolve=function(e){return e&&"object"===r(e)&&e.constructor===gt?e:new gt(function(t){t(e)})},gt.reject=function(n){return new gt(function(t,e){e(n)})};var vt="function"==typeof Promise?Promise:gt,bt=A,yt={size:16,x:0,y:0,rotate:0,flipX:!1,flipY:!1};function wt(t){if(t&&m){var e=b.createElement("style");e.setAttribute("type","text/css"),e.innerHTML=t;for(var n=b.head.childNodes,a=null,r=n.length-1;-1<r;r--){var i=n[r],o=(i.tagName||"").toUpperCase();-1<["STYLE","LINK"].indexOf(o)&&(a=i)}return b.head.insertBefore(e,a),t}}var xt="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";function kt(){for(var t=12,e="";0<t--;)e+=xt[62*Math.random()|0];return e}function At(t){for(var e=[],n=(t||[]).length>>>0;n--;)e[n]=t[n];return e}function Ct(t){return t.classList?At(t.classList):(t.getAttribute("class")||"").split(" ").filter(function(t){return t})}function Ot(t,e){var n,a=e.split("-"),r=a[0],i=a.slice(1).join("-");return r!==t||""===i||(n=i,~H.indexOf(n))?null:i}function Pt(t){return"".concat(t).replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/'/g,"&#39;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function St(n){return Object.keys(n||{}).reduce(function(t,e){return t+"".concat(e,": ").concat(n[e],";")},"")}function Nt(t){return t.size!==yt.size||t.x!==yt.x||t.y!==yt.y||t.rotate!==yt.rotate||t.flipX||t.flipY}function Mt(t){var e=t.transform,n=t.containerWidth,a=t.iconWidth,r={transform:"translate(".concat(n/2," 256)")},i="translate(".concat(32*e.x,", ").concat(32*e.y,") "),o="scale(".concat(e.size/16*(e.flipX?-1:1),", ").concat(e.size/16*(e.flipY?-1:1),") "),c="rotate(".concat(e.rotate," 0 0)");return{outer:r,inner:{transform:"".concat(i," ").concat(o," ").concat(c)},path:{transform:"translate(".concat(a/2*-1," -256)")}}}var zt={x:0,y:0,width:"100%",height:"100%"};function Et(t){var e=!(1<arguments.length&&void 0!==arguments[1])||arguments[1];return t.attributes&&(t.attributes.fill||e)&&(t.attributes.fill="black"),t}function jt(t){var e=t.icons,n=e.main,a=e.mask,r=t.prefix,i=t.iconName,o=t.transform,c=t.symbol,s=t.title,l=t.maskId,f=t.titleId,u=t.extra,d=t.watchable,m=void 0!==d&&d,p=a.found?a:n,h=p.width,g=p.height,v="fak"===r,b=v?"":"fa-w-".concat(Math.ceil(h/g*16)),y=[et.replacementClass,i?"".concat(et.familyPrefix,"-").concat(i):"",b].filter(function(t){return-1===u.classes.indexOf(t)}).filter(function(t){return""!==t||!!t}).concat(u.classes).join(" "),w={children:[],attributes:$({},u.attributes,{"data-prefix":r,"data-icon":i,class:y,role:u.attributes.role||"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 ".concat(h," ").concat(g)})},x=v&&!~u.classes.indexOf("fa-fw")?{width:"".concat(h/g*16*.0625,"em")}:{};m&&(w.attributes[tt]=""),s&&w.children.push({tag:"title",attributes:{id:w.attributes["aria-labelledby"]||"title-".concat(f||kt())},children:[s]});var k,A,C,O,P,S,N,M,z,E,j,L,R,I,_,T,Y,H,F,D,U,W,q,V,X,B,G,K=$({},w,{prefix:r,iconName:i,main:n,mask:a,maskId:l,transform:o,symbol:c,styles:$({},x,u.styles)}),J=a.found&&n.found?(C=(k=K).children,O=k.attributes,P=k.main,S=k.mask,N=k.maskId,M=k.transform,z=P.width,E=P.icon,j=S.width,L=S.icon,R=Mt({transform:M,containerWidth:j,iconWidth:z}),I={tag:"rect",attributes:$({},zt,{fill:"white"})},_=E.children?{children:E.children.map(Et)}:{},T={tag:"g",attributes:$({},R.inner),children:[Et($({tag:E.tag,attributes:$({},E.attributes,R.path)},_))]},Y={tag:"g",attributes:$({},R.outer),children:[T]},H="mask-".concat(N||kt()),F="clip-".concat(N||kt()),D={tag:"mask",attributes:$({},zt,{id:H,maskUnits:"userSpaceOnUse",maskContentUnits:"userSpaceOnUse"}),children:[I,Y]},U={tag:"defs",children:[{tag:"clipPath",attributes:{id:F},children:(A=L,"g"===A.tag?A.children:[A])},D]},C.push(U,{tag:"rect",attributes:$({fill:"currentColor","clip-path":"url(#".concat(F,")"),mask:"url(#".concat(H,")")},zt)}),{children:C,attributes:O}):function(t){var e=t.children,n=t.attributes,a=t.main,r=t.transform,i=St(t.styles);if(0<i.length&&(n.style=i),Nt(r)){var o=Mt({transform:r,containerWidth:a.width,iconWidth:a.width});e.push({tag:"g",attributes:$({},o.outer),children:[{tag:"g",attributes:$({},o.inner),children:[{tag:a.icon.tag,children:a.icon.children,attributes:$({},a.icon.attributes,o.path)}]}]})}else e.push(a.icon);return{children:e,attributes:n}}(K),Q=J.children,Z=J.attributes;return K.children=Q,K.attributes=Z,c?(q=(W=K).prefix,V=W.iconName,X=W.children,B=W.attributes,G=W.symbol,[{tag:"svg",attributes:{style:"display: none;"},children:[{tag:"symbol",attributes:$({},B,{id:!0===G?"".concat(q,"-").concat(et.familyPrefix,"-").concat(V):G}),children:X}]}]):function(t){var e=t.children,n=t.main,a=t.mask,r=t.attributes,i=t.styles,o=t.transform;if(Nt(o)&&n.found&&!a.found){var c=n.width/n.height/2,s=.5;r.style=St($({},i,{"transform-origin":"".concat(c+o.x/16,"em ").concat(s+o.y/16,"em")}))}return[{tag:"svg",attributes:r,children:e}]}(K)}function Lt(t){var e=t.content,n=t.width,a=t.height,r=t.transform,i=t.title,o=t.extra,c=t.watchable,s=void 0!==c&&c,l=$({},o.attributes,i?{title:i}:{},{class:o.classes.join(" ")});s&&(l[tt]="");var f,u,d,m,p,h,g,v,b,y=$({},o.styles);Nt(r)&&(y.transform=(u=(f={transform:r,startCentered:!0,width:n,height:a}).transform,d=f.width,m=void 0===d?A:d,p=f.height,h=void 0===p?A:p,g=f.startCentered,b="",b+=(v=void 0!==g&&g)&&k?"translate(".concat(u.x/bt-m/2,"em, ").concat(u.y/bt-h/2,"em) "):v?"translate(calc(-50% + ".concat(u.x/bt,"em), calc(-50% + ").concat(u.y/bt,"em)) "):"translate(".concat(u.x/bt,"em, ").concat(u.y/bt,"em) "),b+="scale(".concat(u.size/bt*(u.flipX?-1:1),", ").concat(u.size/bt*(u.flipY?-1:1),") "),b+="rotate(".concat(u.rotate,"deg) ")),y["-webkit-transform"]=y.transform);var w=St(y);0<w.length&&(l.style=w);var x=[];return x.push({tag:"span",attributes:l,children:[e]}),i&&x.push({tag:"span",attributes:{class:"sr-only"},children:[i]}),x}var Rt=function(){},It=et.measurePerformance&&f&&f.mark&&f.measure?f:{mark:Rt,measure:Rt},_t='FA "5.15.4"',Tt=function(t){It.mark("".concat(_t," ").concat(t," ends")),It.measure("".concat(_t," ").concat(t),"".concat(_t," ").concat(t," begins"),"".concat(_t," ").concat(t," ends"))},Yt={begin:function(t){return It.mark("".concat(_t," ").concat(t," begins")),function(){return Tt(t)}},end:Tt},Ht=function(t,e,n,a){var r,i,o,c,s,l=Object.keys(t),f=l.length,u=void 0!==a?(c=e,s=a,function(t,e,n,a){return c.call(s,t,e,n,a)}):e;for(o=void 0===n?(r=1,t[l[0]]):(r=0,n);r<f;r++)o=u(o,t[i=l[r]],i,t);return o};function Ft(t){for(var e="",n=0;n<t.length;n++){e+=("000"+t.charCodeAt(n).toString(16)).slice(-4)}return e}var Dt=W.styles,Ut=W.shims,Wt={},qt={},Vt={},Xt=function(){var t=function(a){return Ht(Dt,function(t,e,n){return t[n]=Ht(e,a,{}),t},{})};Wt=t(function(t,e,n){return e[3]&&(t[e[3]]=n),t}),qt=t(function(e,t,n){var a=t[2];return e[n]=n,a.forEach(function(t){e[t]=n}),e});var i="far"in Dt;Vt=Ht(Ut,function(t,e){var n=e[0],a=e[1],r=e[2];return"far"!==a||i||(a="fas"),t[n]={prefix:a,iconName:r},t},{})};function Bt(t,e){return(Wt[t]||{})[e]}Xt();var Gt=W.styles,Kt=function(){return{prefix:null,iconName:null,rest:[]}};function Jt(t){return t.reduce(function(t,e){var n=Ot(et.familyPrefix,e);if(Gt[e])t.prefix=e;else if(et.autoFetchSvg&&-1<Object.keys(z).indexOf(e))t.prefix=e;else if(n){var a="fa"===t.prefix?Vt[n]||{prefix:null,iconName:null}:{};t.iconName=a.iconName||n,t.prefix=a.prefix||t.prefix}else e!==et.replacementClass&&0!==e.indexOf("fa-w-")&&t.rest.push(e);return t},Kt())}function Qt(t,e,n){if(t&&t[e]&&t[e][n])return{prefix:e,iconName:n,icon:t[e][n]}}function Zt(t){var n,e=t.tag,a=t.attributes,r=void 0===a?{}:a,i=t.children,o=void 0===i?[]:i;return"string"==typeof t?Pt(t):"<".concat(e," ").concat((n=r,Object.keys(n||{}).reduce(function(t,e){return t+"".concat(e,'="').concat(Pt(n[e]),'" ')},"").trim()),">").concat(o.map(Zt).join(""),"</").concat(e,">")}var $t=function(){};function te(t){return"string"==typeof(t.getAttribute?t.getAttribute(tt):null)}var ee={replace:function(t){var e=t[0],n=t[1].map(function(t){return Zt(t)}).join("\n");if(e.parentNode&&e.outerHTML)e.outerHTML=n+(et.keepOriginalSource&&"svg"!==e.tagName.toLowerCase()?"\x3c!-- ".concat(e.outerHTML," Font Awesome fontawesome.com --\x3e"):"");else if(e.parentNode){var a=document.createElement("span");e.parentNode.replaceChild(a,e),a.outerHTML=n}},nest:function(t){var e=t[0],n=t[1];if(~Ct(e).indexOf(et.replacementClass))return ee.replace(t);var a=new RegExp("".concat(et.familyPrefix,"-.*"));delete n[0].attributes.style,delete n[0].attributes.id;var r=n[0].attributes.class.split(" ").reduce(function(t,e){return e===et.replacementClass||e.match(a)?t.toSvg.push(e):t.toNode.push(e),t},{toNode:[],toSvg:[]});n[0].attributes.class=r.toSvg.join(" ");var i=n.map(function(t){return Zt(t)}).join("\n");e.setAttribute("class",r.toNode.join(" ")),e.setAttribute(tt,""),e.innerHTML=i}};function ne(t){t()}function ae(n,t){var a="function"==typeof t?t:$t;if(0===n.length)a();else{var e=ne;et.mutateApproach===S&&(e=v.requestAnimationFrame||ne),e(function(){var t=!0===et.autoReplaceSvg?ee.replace:ee[et.autoReplaceSvg]||ee.replace,e=Yt.begin("mutate");n.map(t),e(),a()})}}var re=!1;function ie(){re=!1}var oe=null;function ce(t){if(l&&et.observeMutations){var r=t.treeCallback,i=t.nodeCallback,o=t.pseudoElementsCallback,e=t.observeMutationsRoot,n=void 0===e?b:e;oe=new l(function(t){re||At(t).forEach(function(t){if("childList"===t.type&&0<t.addedNodes.length&&!te(t.addedNodes[0])&&(et.searchPseudoElements&&o(t.target),r(t.target)),"attributes"===t.type&&t.target.parentNode&&et.searchPseudoElements&&o(t.target.parentNode),"attributes"===t.type&&te(t.target)&&~T.indexOf(t.attributeName))if("class"===t.attributeName){var e=Jt(Ct(t.target)),n=e.prefix,a=e.iconName;n&&t.target.setAttribute("data-prefix",n),a&&t.target.setAttribute("data-icon",a)}else i(t.target)})}),m&&oe.observe(n,{childList:!0,attributes:!0,characterData:!0,subtree:!0})}}function se(t){var e,n,a=t.getAttribute("data-prefix"),r=t.getAttribute("data-icon"),i=void 0!==t.innerText?t.innerText.trim():"",o=Jt(Ct(t));return a&&r&&(o.prefix=a,o.iconName=r),o.prefix&&1<i.length?o.iconName=(e=o.prefix,n=t.innerText,(qt[e]||{})[n]):o.prefix&&1===i.length&&(o.iconName=Bt(o.prefix,Ft(t.innerText))),o}var le=function(t){var e={size:16,x:0,y:0,flipX:!1,flipY:!1,rotate:0};return t?t.toLowerCase().split(" ").reduce(function(t,e){var n=e.toLowerCase().split("-"),a=n[0],r=n.slice(1).join("-");if(a&&"h"===r)return t.flipX=!0,t;if(a&&"v"===r)return t.flipY=!0,t;if(r=parseFloat(r),isNaN(r))return t;switch(a){case"grow":t.size=t.size+r;break;case"shrink":t.size=t.size-r;break;case"left":t.x=t.x-r;break;case"right":t.x=t.x+r;break;case"up":t.y=t.y-r;break;case"down":t.y=t.y+r;break;case"rotate":t.rotate=t.rotate+r}return t},e):e};function fe(t){var e,n,a,r,i,o,c,s,l=se(t),f=l.iconName,u=l.prefix,d=l.rest,m=(e=t.getAttribute("style"),n=[],e&&(n=e.split(";").reduce(function(t,e){var n=e.split(":"),a=n[0],r=n.slice(1);return a&&0<r.length&&(t[a]=r.join(":").trim()),t},{})),n),p=le(t.getAttribute("data-fa-transform")),h=null!==(a=t.getAttribute("data-fa-symbol"))&&(""===a||a),g=(i=At((r=t).attributes).reduce(function(t,e){return"class"!==t.name&&"style"!==t.name&&(t[e.name]=e.value),t},{}),o=r.getAttribute("title"),c=r.getAttribute("data-fa-title-id"),et.autoA11y&&(o?i["aria-labelledby"]="".concat(et.replacementClass,"-title-").concat(c||kt()):(i["aria-hidden"]="true",i.focusable="false")),i),v=(s=t.getAttribute("data-fa-mask"))?Jt(s.split(" ").map(function(t){return t.trim()})):Kt();return{iconName:f,title:t.getAttribute("title"),titleId:t.getAttribute("data-fa-title-id"),prefix:u,transform:p,symbol:h,mask:v,maskId:t.getAttribute("data-fa-mask-id"),extra:{classes:d,styles:m,attributes:g}}}function ue(t){this.name="MissingIcon",this.message=t||"Icon unavailable",this.stack=(new Error).stack}(ue.prototype=Object.create(Error.prototype)).constructor=ue;var de={fill:"currentColor"},me={attributeType:"XML",repeatCount:"indefinite",dur:"2s"},pe={tag:"path",attributes:$({},de,{d:"M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z"})},he=$({},me,{attributeName:"opacity"}),ge={tag:"g",children:[pe,{tag:"circle",attributes:$({},de,{cx:"256",cy:"364",r:"28"}),children:[{tag:"animate",attributes:$({},me,{attributeName:"r",values:"28;14;28;28;14;28;"})},{tag:"animate",attributes:$({},he,{values:"1;0;1;1;0;1;"})}]},{tag:"path",attributes:$({},de,{opacity:"1",d:"M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z"}),children:[{tag:"animate",attributes:$({},he,{values:"1;0;0;0;0;1;"})}]},{tag:"path",attributes:$({},de,{opacity:"0",d:"M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z"}),children:[{tag:"animate",attributes:$({},he,{values:"0;0;1;1;0;0;"})}]}]},ve=W.styles;function be(t){var e=t[0],n=t[1],a=p(t.slice(4),1)[0];return{found:!0,width:e,height:n,icon:Array.isArray(a)?{tag:"g",attributes:{class:"".concat(et.familyPrefix,"-").concat(Y.GROUP)},children:[{tag:"path",attributes:{class:"".concat(et.familyPrefix,"-").concat(Y.SECONDARY),fill:"currentColor",d:a[0]}},{tag:"path",attributes:{class:"".concat(et.familyPrefix,"-").concat(Y.PRIMARY),fill:"currentColor",d:a[1]}}]}:{tag:"path",attributes:{fill:"currentColor",d:a}}}}function ye(a,r){return new vt(function(t,e){var n={found:!1,width:512,height:512,icon:ge};if(a&&r&&ve[r]&&ve[r][a])return t(be(ve[r][a]));a&&r&&!et.showMissingIcons?e(new ue("Icon is missing for prefix ".concat(r," with icon name ").concat(a))):t(n)})}var we=W.styles;function xe(t){var i,e,o,c,s,l,f,u,n,d,m,a=fe(t);return~a.extra.classes.indexOf(j)?function(t,e){var n=e.title,a=e.transform,r=e.extra,i=null,o=null;if(k){var c=parseInt(getComputedStyle(t).fontSize,10),s=t.getBoundingClientRect();i=s.width/c,o=s.height/c}return et.autoA11y&&!n&&(r.attributes["aria-hidden"]="true"),vt.resolve([t,Lt({content:t.innerHTML,width:i,height:o,transform:a,title:n,extra:r,watchable:!0})])}(t,a):(i=t,o=(e=a).iconName,c=e.title,s=e.titleId,l=e.prefix,f=e.transform,u=e.symbol,n=e.mask,d=e.maskId,m=e.extra,new vt(function(r,t){vt.all([ye(o,l),ye(n.iconName,n.prefix)]).then(function(t){var e=p(t,2),n=e[0],a=e[1];r([i,jt({icons:{main:n,mask:a},prefix:l,iconName:o,transform:f,symbol:u,mask:a,maskId:d,title:c,titleId:s,extra:m,watchable:!0})])})}))}function ke(t){var n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:null;if(m){var e=b.documentElement.classList,a=function(t){return e.add("".concat(P,"-").concat(t))},r=function(t){return e.remove("".concat(P,"-").concat(t))},i=et.autoFetchSvg?Object.keys(z):Object.keys(we),o=[".".concat(j,":not([").concat(tt,"])")].concat(i.map(function(t){return".".concat(t,":not([").concat(tt,"])")})).join(", ");if(0!==o.length){var c=[];try{c=At(t.querySelectorAll(o))}catch(t){}if(0<c.length){a("pending"),r("complete");var s=Yt.begin("onTree"),l=c.reduce(function(t,e){try{var n=xe(e);n&&t.push(n)}catch(t){M||t instanceof ue&&console.error(t)}return t},[]);return new vt(function(e,t){vt.all(l).then(function(t){ae(t,function(){a("active"),a("complete"),r("pending"),"function"==typeof n&&n(),s(),e()})}).catch(function(){s(),t()})})}}}}function Ae(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:null;xe(t).then(function(t){t&&ae([t],e)})}function Ce(p,h){var g="".concat(x).concat(h.replace(":","-"));return new vt(function(a,t){if(null!==p.getAttribute(g))return a();var e=At(p.children).filter(function(t){return t.getAttribute(w)===h})[0],n=v.getComputedStyle(p,h),r=n.getPropertyValue("font-family").match(L),i=n.getPropertyValue("font-weight"),o=n.getPropertyValue("content");if(e&&!r)return p.removeChild(e),a();if(r&&"none"!==o&&""!==o){var c=n.getPropertyValue("content"),s=~["Solid","Regular","Light","Duotone","Brands","Kit"].indexOf(r[2])?E[r[2].toLowerCase()]:R[i],l=Ft(3===c.length?c.substr(1,1):c),f=Bt(s,l),u=f;if(!f||e&&e.getAttribute(C)===s&&e.getAttribute(O)===u)a();else{p.setAttribute(g,u),e&&p.removeChild(e);var d={iconName:null,title:null,titleId:null,prefix:null,transform:yt,symbol:!1,mask:null,maskId:null,extra:{classes:[],styles:{},attributes:{}}},m=d.extra;m.attributes[w]=h,ye(f,s).then(function(t){var e=jt($({},d,{icons:{main:t,mask:Kt()},prefix:s,iconName:u,extra:m,watchable:!0})),n=b.createElement("svg");":before"===h?p.insertBefore(n,p.firstChild):p.appendChild(n),n.outerHTML=e.map(function(t){return Zt(t)}).join("\n"),p.removeAttribute(g),a()}).catch(t)}}else a()})}function Oe(t){return vt.all([Ce(t,":before"),Ce(t,":after")])}function Pe(t){return!(t.parentNode===document.head||~N.indexOf(t.tagName.toUpperCase())||t.getAttribute(w)||t.parentNode&&"svg"===t.parentNode.tagName)}function Se(r){if(m)return new vt(function(t,e){var n=At(r.querySelectorAll("*")).filter(Pe).map(Oe),a=Yt.begin("searchPseudoElements");re=!0,vt.all(n).then(function(){a(),ie(),t()}).catch(function(){a(),ie(),e()})})}var Ne="svg:not(:root).svg-inline--fa{overflow:visible}.svg-inline--fa{display:inline-block;font-size:inherit;height:1em;overflow:visible;vertical-align:-.125em}.svg-inline--fa.fa-lg{vertical-align:-.225em}.svg-inline--fa.fa-w-1{width:.0625em}.svg-inline--fa.fa-w-2{width:.125em}.svg-inline--fa.fa-w-3{width:.1875em}.svg-inline--fa.fa-w-4{width:.25em}.svg-inline--fa.fa-w-5{width:.3125em}.svg-inline--fa.fa-w-6{width:.375em}.svg-inline--fa.fa-w-7{width:.4375em}.svg-inline--fa.fa-w-8{width:.5em}.svg-inline--fa.fa-w-9{width:.5625em}.svg-inline--fa.fa-w-10{width:.625em}.svg-inline--fa.fa-w-11{width:.6875em}.svg-inline--fa.fa-w-12{width:.75em}.svg-inline--fa.fa-w-13{width:.8125em}.svg-inline--fa.fa-w-14{width:.875em}.svg-inline--fa.fa-w-15{width:.9375em}.svg-inline--fa.fa-w-16{width:1em}.svg-inline--fa.fa-w-17{width:1.0625em}.svg-inline--fa.fa-w-18{width:1.125em}.svg-inline--fa.fa-w-19{width:1.1875em}.svg-inline--fa.fa-w-20{width:1.25em}.svg-inline--fa.fa-pull-left{margin-right:.3em;width:auto}.svg-inline--fa.fa-pull-right{margin-left:.3em;width:auto}.svg-inline--fa.fa-border{height:1.5em}.svg-inline--fa.fa-li{width:2em}.svg-inline--fa.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{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-counter,.fa-layers-text{display:inline-block;position:absolute;text-align: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:#ff253a;border-radius:1em;-webkit-box-sizing:border-box;box-sizing:border-box;color:#fff;height:1.5em;line-height:1;max-width:5em;min-width:1.5em;overflow:hidden;padding:.25em;right:0;text-overflow:ellipsis;top:0;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:top right;transform-origin:top right}.fa-layers-bottom-right{bottom:0;right:0;top:auto;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:bottom right;transform-origin:bottom right}.fa-layers-bottom-left{bottom:0;left:0;right:auto;top:auto;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:bottom left;transform-origin:bottom left}.fa-layers-top-right{right:0;top:0;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:top right;transform-origin:top right}.fa-layers-top-left{left:0;right:auto;top:0;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:top left;transform-origin:top left}.fa-lg{font-size:1.3333333333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:solid .08em #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}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)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-rotate-90{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;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}.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:#fff}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}.svg-inline--fa .fa-primary{fill:var(--fa-primary-color,currentColor);opacity:1;opacity:var(--fa-primary-opacity,1)}.svg-inline--fa .fa-secondary{fill:var(--fa-secondary-color,currentColor);opacity:.4;opacity:var(--fa-secondary-opacity,.4)}.svg-inline--fa.fa-swap-opacity .fa-primary{opacity:.4;opacity:var(--fa-secondary-opacity,.4)}.svg-inline--fa.fa-swap-opacity .fa-secondary{opacity:1;opacity:var(--fa-primary-opacity,1)}.svg-inline--fa mask .fa-primary,.svg-inline--fa mask .fa-secondary{fill:#000}.fad.fa-inverse{color:#fff}";function Me(){var t=g,e=y,n=et.familyPrefix,a=et.replacementClass,r=Ne;if(n!==t||a!==e){var i=new RegExp("\\.".concat(t,"\\-"),"g"),o=new RegExp("\\--".concat(t,"\\-"),"g"),c=new RegExp("\\.".concat(e),"g");r=r.replace(i,".".concat(n,"-")).replace(o,"--".concat(n,"-")).replace(c,".".concat(a))}return r}function ze(){et.autoAddCss&&!Ie&&(wt(Me()),Ie=!0)}function Ee(e,t){return Object.defineProperty(e,"abstract",{get:t}),Object.defineProperty(e,"html",{get:function(){return e.abstract.map(function(t){return Zt(t)})}}),Object.defineProperty(e,"node",{get:function(){if(m){var t=b.createElement("div");return t.innerHTML=e.html,t.children}}}),e}function je(t){var e=t.prefix,n=void 0===e?"fa":e,a=t.iconName;if(a)return Qt(Re.definitions,n,a)||Qt(W.styles,n,a)}var Le,Re=new(function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.definitions={}}var e,n,a;return e=t,(n=[{key:"add",value:function(){for(var e=this,t=arguments.length,n=new Array(t),a=0;a<t;a++)n[a]=arguments[a];var r=n.reduce(this._pullDefinitions,{});Object.keys(r).forEach(function(t){e.definitions[t]=$({},e.definitions[t]||{},r[t]),function t(e,a){var n=(2<arguments.length&&void 0!==arguments[2]?arguments[2]:{}).skipHooks,r=void 0!==n&&n,i=Object.keys(a).reduce(function(t,e){var n=a[e];return n.icon?t[n.iconName]=n.icon:t[e]=n,t},{});"function"!=typeof W.hooks.addPack||r?W.styles[e]=$({},W.styles[e]||{},i):W.hooks.addPack(e,i),"fas"===e&&t("fa",a)}(t,r[t]),Xt()})}},{key:"reset",value:function(){this.definitions={}}},{key:"_pullDefinitions",value:function(i,t){var o=t.prefix&&t.iconName&&t.icon?{0:t}:t;return Object.keys(o).map(function(t){var e=o[t],n=e.prefix,a=e.iconName,r=e.icon;i[n]||(i[n]={}),i[n][a]=r}),i}}])&&i(e.prototype,n),a&&i(e,a),t}()),Ie=!1,_e={i2svg:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};if(m){ze();var e=t.node,n=void 0===e?b:e,a=t.callback,r=void 0===a?function(){}:a;return et.searchPseudoElements&&Se(n),ke(n,r)}return vt.reject("Operation requires a DOM of some kind.")},css:Me,insertCss:function(){Ie||(wt(Me()),Ie=!0)},watch:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},e=t.autoReplaceSvgRoot,n=t.observeMutationsRoot;!1===et.autoReplaceSvg&&(et.autoReplaceSvg=!0),et.observeMutations=!0,X(function(){He({autoReplaceSvgRoot:e}),ce({treeCallback:ke,nodeCallback:Ae,pseudoElementsCallback:Se,observeMutationsRoot:n})})}},Te=(Le=function(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},n=e.transform,a=void 0===n?yt:n,r=e.symbol,i=void 0!==r&&r,o=e.mask,c=void 0===o?null:o,s=e.maskId,l=void 0===s?null:s,f=e.title,u=void 0===f?null:f,d=e.titleId,m=void 0===d?null:d,p=e.classes,h=void 0===p?[]:p,g=e.attributes,v=void 0===g?{}:g,b=e.styles,y=void 0===b?{}:b;if(t){var w=t.prefix,x=t.iconName,k=t.icon;return Ee($({type:"icon"},t),function(){return ze(),et.autoA11y&&(u?v["aria-labelledby"]="".concat(et.replacementClass,"-title-").concat(m||kt()):(v["aria-hidden"]="true",v.focusable="false")),jt({icons:{main:be(k),mask:c?be(c.icon):{found:!1,width:null,height:null,icon:{}}},prefix:w,iconName:x,transform:$({},yt,a),symbol:i,title:u,maskId:l,titleId:m,extra:{attributes:v,styles:y,classes:h}})})}},function(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},n=(t||{}).icon?t:je(t||{}),a=e.mask;return a&&(a=(a||{}).icon?a:je(a||{})),Le(n,$({},e,{mask:a}))}),Ye={noAuto:function(){et.autoReplaceSvg=!1,et.observeMutations=!1,oe&&oe.disconnect()},config:et,dom:_e,library:Re,parse:{transform:function(t){return le(t)}},findIconDefinition:je,icon:Te,text:function(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},n=e.transform,a=void 0===n?yt:n,r=e.title,i=void 0===r?null:r,o=e.classes,c=void 0===o?[]:o,s=e.attributes,l=void 0===s?{}:s,f=e.styles,u=void 0===f?{}:f;return Ee({type:"text",content:t},function(){return ze(),Lt({content:t,transform:$({},yt,a),title:i,extra:{attributes:l,styles:u,classes:["".concat(et.familyPrefix,"-layers-text")].concat(d(c))}})})},counter:function(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},n=e.title,a=void 0===n?null:n,r=e.classes,i=void 0===r?[]:r,o=e.attributes,c=void 0===o?{}:o,s=e.styles,l=void 0===s?{}:s;return Ee({type:"counter",content:t},function(){return ze(),function(t){var e=t.content,n=t.title,a=t.extra,r=$({},a.attributes,n?{title:n}:{},{class:a.classes.join(" ")}),i=St(a.styles);0<i.length&&(r.style=i);var o=[];return o.push({tag:"span",attributes:r,children:[e]}),n&&o.push({tag:"span",attributes:{class:"sr-only"},children:[n]}),o}({content:t.toString(),title:a,extra:{attributes:c,styles:l,classes:["".concat(et.familyPrefix,"-layers-counter")].concat(d(i))}})})},layer:function(t){var e=(1<arguments.length&&void 0!==arguments[1]?arguments[1]:{}).classes,n=void 0===e?[]:e;return Ee({type:"layer"},function(){ze();var e=[];return t(function(t){Array.isArray(t)?t.map(function(t){e=e.concat(t.abstract)}):e=e.concat(t.abstract)}),[{tag:"span",attributes:{class:["".concat(et.familyPrefix,"-layers")].concat(d(n)).join(" ")},children:e}]})},toHtml:Zt},He=function(){var t=(0<arguments.length&&void 0!==arguments[0]?arguments[0]:{}).autoReplaceSvgRoot,e=void 0===t?b:t;(0<Object.keys(W.styles).length||et.autoFetchSvg)&&m&&et.autoReplaceSvg&&Ye.dom.i2svg({node:e})};!function(t){try{t()}catch(t){if(!M)throw t}}(function(){u&&(v.FontAwesome||(v.FontAwesome=Ye),X(function(){He(),ce({treeCallback:ke,nodeCallback:Ae,pseudoElementsCallback:Se})})),W.hooks=$({},W.hooks,{addPack:function(t,e){W.styles[t]=$({},W.styles[t]||{},e),Xt(),He()},addShims:function(t){var e;(e=W.shims).push.apply(e,d(t)),Xt(),He()}})})}();
\ No newline at end of file
/**
* Sections
*/
body {
background-color: #edf2e1;
font-family: 'Noto Sans', Arial, sans-serif;
font-size: 14px;
margin: 0 auto;
max-width: 982px;
min-width: 256px;
padding: 33px 18px;
}
#wrapper {
display: grid;
}
header {
align-items: center;
display: flex;
gap: 15px;
grid-row: 1;
justify-content: center;
margin-bottom: 15px;
margin-top: 15px;
}
.content {
display: flex;
flex-direction: column;
gap: 45px;
grid-row: 2;
margin-top: 15px;
padding: 20px;
}
.content .item:nth-child(odd) {
align-self: flex-start;
}
.content .item:nth-child(even) {
align-self: flex-end;
}
footer {
display: flex;
gap: 20px;
grid-row: 3;
justify-content: flex-end;
margin: 30px 0 15px;
padding: 10px;
text-align: center;
}
/**
* Fonts
*/
@font-face {
font-family: 'Noto Sans';
font-style: normal;
font-weight: 400;
src: url('../shared/resources/fonts/noto-sans/regular.woff2')
format('woff2');
}
@font-face {
font-family: 'Noto Sans';
font-style: normal;
font-weight: 600;
src: url('../shared/resources/fonts/noto-sans/bold.woff2')
format('woff2');
}
@font-face {
font-family: 'Noto Sans';
font-style: italic;
font-weight: 400;
src: url('../shared/resources/fonts/noto-sans/italic.woff2')
format('woff2');
}
/**
* Headings
*/
.heading {
align-items: flex-start;
color: #575757;
display: flex;
flex-direction: column;
font-size: 30px;
font-style: italic;
gap: 3px;
padding: 5px 0;
}
/**
* Titles
*/
.title-item {
color: #2d2f27;
font-size: 18px;
font-style: italic;
font-weight: bold;
padding: 3px 0;
}
/**
* Items
*/
.item {
background: linear-gradient(145deg, #fefefe, #edf2e1);
border-radius: 24px;
box-shadow: -5px -5px #dce2cd inset;
color: #2d2f27;
padding: 20px 35px;
text-align: left;
width: 75%;
}
.header-item {
align-items: center;
display: flex;
gap: 15px;
}
.body-item {
font-size: 16px;
}
/**
* Icons
*/
.wrapper-icon {
align-items: center;
display: flex;
height: 112px;
justify-content: center;
position: relative;
width: 112px;
}
.icon {
margin-left: 5px;
margin-top: 5px;
max-height: calc(100% - 10px);
max-width: calc(100% - 10px);
min-height: calc(100% - 10px);
min-width: calc(100% - 10px);
}
.icon-item {
background: #141415;
border-radius: 50px;
box-shadow: -3px -3px rgba(0, 0, 0, .2) inset;
color: #fefefe;
display: flex;
padding: 7px 14px;
}
.icon-item-gray {
background: linear-gradient(145deg, #3f5469, #304050);
}
.icon-item-green {
background: linear-gradient(145deg, #00bd7f, #00885e);
}
.icon-item svg {
rotate: 22.5deg;
}
/**
* Buttons
*/
.button {
align-items: center;
background: rgba(255, 255, 255, 0.75);
border-radius: 15px;
border: 2px solid #b6bfa2;
box-shadow: -3px -3px rgba(0, 0, 0, .1) inset;
color: #2d2f27;
display: flex;
flex-wrap: wrap;
font-weight: bold;
gap: 10px;
justify-content: center;
overflow: hidden;
padding: 15px 23px;
text-decoration: none;
user-select: none;
}
.button:hover {
border: 2px solid transparent;
color: #fefefe;
cursor: pointer;
opacity: 1;
}
.button-website:hover {
background: linear-gradient(145deg, #007bbd, #005e8f) padding-box;
}
.button-gitlab:hover {
background: linear-gradient(145deg, #3f5469, #304050) padding-box;
}
.button-donate:hover {
background: linear-gradient(145deg, #f58700, #c36c00) padding-box;
}
.button-author:hover {
background: linear-gradient(145deg, #00bd7f, #00885e) padding-box;
}
.button:active {
background: transparent !important;
border: 2px solid #b6bfa2;
box-shadow: 3px 3px rgba(0, 0, 0, .2) inset;
color: #121212;
opacity: .5;
}
/**
* Miscellaneous
*/
.accent-icon {
border-radius: 500px;
height: 100%;
max-height: 112px;
max-width: 112px;
overflow: hidden;
position: absolute;
width: 100%;
z-index: 0;
}
.accent-icon:before {
background-image: conic-gradient(rgba(0, 0, 0, 0), #69aa8f, rgba(0, 0, 0, 0) 25%);
background-position: 0 0;
background-repeat: no-repeat;
content: '';
height: 100000px;
left: 50%;
position: absolute;
top: 50%;
transform: translate(-50%, -50%) rotate(0deg);
width: 100000px;
z-index: -2;
}
.accent-icon:after {
background-color: #edf2e1;
background-size: 100%;
border-radius: 500px;
content: '';
left: 5px;
min-height: calc(100% - 10px);
min-width: calc(100% - 10px);
position: absolute;
top: 5px;
z-index: -1;
}
.logotype {
display: flex;
width: 250px;
}
.label-version {
align-items: center;
background: linear-gradient(135deg, #2f5948, #4a856d);
color: #fefefe;
display: flex;
font-size: 20px;
height: 34px;
justify-content: center;
opacity: 0;
text-shadow: 2px 2px #27483a;
width: 60px;
}
/**
* Keyframes
*/
@keyframes appear {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
@keyframes appear-and-skew {
0% {
opacity: 0;
}
100% {
opacity: 1;
transform: skew(-12deg, 0);
}
}
@keyframes appear-and-turn {
0% {
opacity: 0;
rotate: 12deg;
}
70% {
rotate: 0deg;
}
100% {
opacity: 1;
}
}
@keyframes disappear {
0% {
display: flex;
opacity: 1;
}
100% {
display: none;
opacity: 0;
}
}
@keyframes rotate {
100% {
transform: translate(-50%, -50%) rotate(1turn);
}
}
/**
* Animations
*/
#icon.animated {
animation: appear-and-turn 1s 1s both;
}
#logotype.animated {
animation: appear 1s 1.5s both;
}
#version-label.animated {
animation: appear-and-skew 2s 2s both;
}
#first-item.animated {
animation: appear 1s 3.25s both;
}
#second-item.animated {
animation: appear 1s 3.5s both;
}
#footer.animated {
animation: appear 1s 4s both;
}
#icon-accent.animated:before {
animation: rotate 1.25s linear infinite, disappear 2.25s .25s both;
}
/**
* Compatibility
*/
@media (prefers-color-scheme: dark) {
body {
background-color: #1d1e22;
}
.title-item {
color: #fefefe;
}
.item {
background: #121212 linear-gradient(145deg, #1d1e22, #101010);
box-shadow: -5px -5px rgba(0, 0, 0, .1) inset;
color: #dcdcdc;
}
.button {
background: transparent;
border: 2px solid #0f0f12;
box-shadow: -3px -3px rgba(0, 0, 0, .2) inset;
color: #fefefe;
}
.button:hover {
border: 2px solid #0f0f12;
}
.button:active {
border: 2px solid #0f0f12;
box-shadow: 3px 3px rgba(0, 0, 0, .2) inset;
color: #fefefe;
opacity: .5;
}
.accent-icon:after {
background-color: #2a2c32;
}
.logotype {
filter: brightness(1%) invert(100%);
}
}
@media screen and (max-width: 700px) {
body {
padding: 33px 11px;
}
header {
flex-direction: column;
gap: 10px;
}
.content {
gap: 40px;
padding: 15px 10px;
}
.content .item:nth-child(odd) {
align-self: unset;
}
.content .item:nth-child(even) {
align-self: unset;
}
footer {
flex-direction: column;
gap: 15px;
margin-bottom: 10px;
}
.heading {
align-items: center;
gap: 5px;
}
.item {
width: auto;
}
}
<!DOCTYPE html>
<html lang="en">
<head>
<title>Decentraleyes v3.0 - What's New?</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta charset="utf-8">
<link rel="shortcut icon" href="../shared/resources/images/icons/extension/favicon.ico" type="image/x-icon">
<link rel="icon" href="../shared/resources/images/icons/extension/favicon.ico" type="image/x-icon">
<link rel="stylesheet" type="text/css" href="welcome.css">
<script defer type="module" src="../shared/resources/images/icons/default.js"></script>
<script defer src="../shared/resources/scripts/fontawesome.min.js"></script>
</head>
<body>
<script type="module" src="welcome.js"></script>
<div id="wrapper">
<header>
<div class="wrapper-icon">
<div id="icon-accent" class="accent-icon">
<img id="icon" class="icon hidden" src="../shared/resources/images/icons/extension/regular.svg" alt="">
</div>
</div>
<div class="heading">
<img id="logotype" class="logotype hidden" src="../shared/resources/images/logotype.svg" alt="Decentraleyes">
<div id="version-label" class="label-version hidden">v3.0</div>
</div>
</header>
<section class="content">
<div id="first-item" class="item">
<div class="header-item">
<div class="icon-item icon-item-gray">
<i class="fa fa-lg fa-cube"></i>
</div>
<div class="title-item">A Fully Fresh Foundation</div>
</div>
<div class="body-item">
<p>The extension has been completely overhauled to allow it to take advantage of the latest web technologies, as well as to ensure continued compatibility with modern web browsers.</p>
</div>
</div>
<div id="second-item" class="item">
<div class="header-item">
<div class="icon-item icon-item-green">
<i class="fa fa-lg fa-battery-three-quarters"></i>
</div>
<div class="title-item">Easier on Your Battery</div>
</div>
<div class="body-item">
<p>Supported web browsers can now pause and resume the extension's background activity, at any given moment, in order to conserve system resources and reduce battery usage.</p>
</div>
</div>
</section>
<footer id="footer">
<a class="button button-website" href="https://decentraleyes.org/" target="_blank">
<i class="fa fa-globe" data-fa-transform="grow-2 down-.5"></i>
<span>Website</span>
</a>
<a class="button button-gitlab" href="https://git.synz.io/Synzvato/decentraleyes" target="_blank">
<i class="fa fa-gitlab" data-fa-transform="grow-2 down-.5"></i>
<span>GitLab</span>
</a>
<a class="button button-donate" href="https://decentraleyes.org/donate/" target="_blank">
<i class="fa fa-donate" data-fa-transform="grow-2 down-.5"></i>
<span>Donate</span>
</a>
<a class="button button-author" href="https://synz.io/" target="_blank">
<i class="fa fa-user-circle" data-fa-transform="grow-2 down-.5"></i>
<span>Author</span>
</a>
</footer>
</div>
</body>
</html>
/**
* Welcome Page
* Belongs to Decentraleyes.
*
* @author Thomas Rientjes
* @since 2024-11-11
* @license MPL 2.0
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/.
*/
/**
* Private Functions
*/
const _animateHeaderElements = () => {
document.querySelector('#icon').classList.add('animated');
document.querySelector('#icon-accent').classList.add('animated');
document.querySelector('#logotype').classList.add('animated');
document.querySelector('#version-label').classList.add('animated');
};
const _animateContentElements = () => {
document.querySelector('#first-item').classList.add('animated');
document.querySelector('#second-item').classList.add('animated');
};
const _animateFooterElement = () => {
document.querySelector('#footer').classList.add('animated');
};
/**
* Event Handlers
*/
const _onDocumentVisible = () => {
window.scrollTo(0, 0);
_animateHeaderElements();
_animateContentElements();
_animateFooterElement();
};
/**
* Initializations
*/
document.addEventListener('DOMContentLoaded', () => {
if (document.visibilityState === 'visible') {
_onDocumentVisible();
} else {
document.addEventListener('visibilitychange', () => {
if (document.visibilityState === 'visible') {
_onDocumentVisible();
}
});
}
});