diff --git a/CHANGELOG.md b/CHANGELOG.md index 0f941ab2..5dc98806 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,18 @@ +# v1.10.49 +## 08/25/2025 + +1. [](#new) + * Upgraded to very latest FontAwesome 7.0 with custom ForkAwesome Shim + * Support for enhanced Scheduler in admin + * PHP 8.4 compatibility +1. [](#improved) + * Vendor libraries updated + * Added translations for Fetchpriority Trait [#2436](https://github.com/getgrav/grav-plugin-admin/pull/2346) + * Other various missing langs strings added to 'english' translation +1. [](#bugfix) + * Fix `force_ssl` use schema instead of server var [#2435](https://github.com/getgrav/grav-plugin-admin/pull/2345) + * Fix for fully turning off notifications JS + # v1.10.48 ## 10/28/2024 diff --git a/admin.php b/admin.php index 123831e0..305b7683 100644 --- a/admin.php +++ b/admin.php @@ -396,9 +396,10 @@ class AdminPlugin extends Plugin // Force SSL with redirect if required if ($config->get('system.force_ssl')) { - if (!isset($_SERVER['HTTPS']) || strtolower($_SERVER['HTTPS']) !== 'on') { + $scheme = $this->uri->scheme(true); + if ($scheme !== 'https') { Admin::DEBUG && Admin::addDebugMessage('Admin SSL forced on, redirect'); - $url = 'https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; + $url = 'https://' . $this->uri->host() . $this->uri->uri(); $this->grav->redirect($url); } } diff --git a/blueprints.yaml b/blueprints.yaml index 921e11e3..6d3d93b5 100644 --- a/blueprints.yaml +++ b/blueprints.yaml @@ -1,7 +1,7 @@ name: Admin Panel slug: admin type: plugin -version: 1.10.48 +version: 1.10.49 description: Adds an advanced administration panel to manage your site icon: empire author: @@ -15,7 +15,7 @@ docs: https://github.com/getgrav/grav-plugin-admin/blob/develop/README.md license: MIT dependencies: - - { name: grav, version: '>=1.7.42' } + - { name: grav, version: '>=1.7.49' } - { name: form, version: '>=6.0.1' } - { name: login, version: '>=3.7.8' } - { name: email, version: '>=3.1.6' } diff --git a/classes/plugin/Admin.php b/classes/plugin/Admin.php index df1c7358..56958e5c 100644 --- a/classes/plugin/Admin.php +++ b/classes/plugin/Admin.php @@ -2413,7 +2413,7 @@ class Admin */ public function getLogFiles() { - $logs = new GravData(['grav.log' => 'Grav System Log', 'email.log' => 'Email Log']); + $logs = new GravData(['grav.log' => 'Grav System Log', 'email.log' => 'Email Log', 'scheduler.log' => 'Scheduler Log']); Grav::instance()->fireEvent('onAdminLogFiles', new Event(['logs' => &$logs])); return $logs->toArray(); } diff --git a/composer.json b/composer.json index 328482a1..a836d2e4 100644 --- a/composer.json +++ b/composer.json @@ -22,20 +22,18 @@ "require": { "php": "^7.3.6 || ^8.0", "ext-json": "*", - "scssphp/scssphp": "^1.11", - "laminas/laminas-zendframework-bridge": "^1.4", - "p3k/picofeed": "@stable" + "scssphp/scssphp": "^1.13", + "p3k/picofeed": "^1.0" }, "require-dev": { - "codeception/codeception": "^2.4", - "fzaninotto/faker": "^1.8", + "codeception/codeception": "^2.5", + "fzaninotto/faker": "^1.9", "symfony/yaml": "~4.4", "symfony/console": "~4.4", "symfony/finder": "~4.4", "symfony/event-dispatcher": "~4.4" }, "replace": { - "symfony/polyfill-php72": "*", "symfony/polyfill-php73": "*" }, "autoload": { diff --git a/composer.lock b/composer.lock index 6e850a0e..e0ed4100 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "bc8a9ba032ce28a2c93282b6f1a6e7b9", + "content-hash": "a7aa8659d733e6cb2b5a6e4c6754cc6e", "packages": [ { "name": "laminas/laminas-xml", @@ -66,68 +66,6 @@ ], "time": "2021-11-30T02:16:35+00:00" }, - { - "name": "laminas/laminas-zendframework-bridge", - "version": "1.4.1", - "source": { - "type": "git", - "url": "https://github.com/laminas/laminas-zendframework-bridge.git", - "reference": "88bf037259869891afce6504cacc4f8a07b24d0f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-zendframework-bridge/zipball/88bf037259869891afce6504cacc4f8a07b24d0f", - "reference": "88bf037259869891afce6504cacc4f8a07b24d0f", - "shasum": "" - }, - "require": { - "php": "^7.3 || ~8.0.0 || ~8.1.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3", - "psalm/plugin-phpunit": "^0.15.1", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.6" - }, - "type": "library", - "extra": { - "laminas": { - "module": "Laminas\\ZendFrameworkBridge" - } - }, - "autoload": { - "files": [ - "src/autoload.php" - ], - "psr-4": { - "Laminas\\ZendFrameworkBridge\\": "src//" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "Alias legacy ZF class names to Laminas Project equivalents.", - "keywords": [ - "ZendFramework", - "autoloading", - "laminas", - "zf" - ], - "support": { - "forum": "https://discourse.laminas.dev/", - "issues": "https://github.com/laminas/laminas-zendframework-bridge/issues", - "rss": "https://github.com/laminas/laminas-zendframework-bridge/releases.atom", - "source": "https://github.com/laminas/laminas-zendframework-bridge" - }, - "funding": [ - { - "url": "https://funding.communitybridge.org/projects/laminas-project", - "type": "community_bridge" - } - ], - "time": "2021-12-21T14:34:37+00:00" - }, { "name": "p3k/picofeed", "version": "1.0.0", @@ -188,16 +126,16 @@ }, { "name": "scssphp/scssphp", - "version": "v1.11.0", + "version": "v1.13.0", "source": { "type": "git", "url": "https://github.com/scssphp/scssphp.git", - "reference": "33749d12c2569bb24071f94e9af828662dabb068" + "reference": "63d1157457e5554edf00b0c1fabab4c1511d2520" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/scssphp/scssphp/zipball/33749d12c2569bb24071f94e9af828662dabb068", - "reference": "33749d12c2569bb24071f94e9af828662dabb068", + "url": "https://api.github.com/repos/scssphp/scssphp/zipball/63d1157457e5554edf00b0c1fabab4c1511d2520", + "reference": "63d1157457e5554edf00b0c1fabab4c1511d2520", "shasum": "" }, "require": { @@ -214,7 +152,7 @@ "thoughtbot/bourbon": "^7.0", "twbs/bootstrap": "~5.0", "twbs/bootstrap4": "4.6.1", - "zurb/foundation": "~6.5" + "zurb/foundation": "~6.7.0" }, "suggest": { "ext-iconv": "Can be used as fallback when ext-mbstring is not available", @@ -226,8 +164,8 @@ "type": "library", "extra": { "bamarni-bin": { - "forward-command": false, - "bin-links": false + "bin-links": false, + "forward-command": false } }, "autoload": { @@ -262,33 +200,33 @@ ], "support": { "issues": "https://github.com/scssphp/scssphp/issues", - "source": "https://github.com/scssphp/scssphp/tree/v1.11.0" + "source": "https://github.com/scssphp/scssphp/tree/v1.13.0" }, - "time": "2022-09-02T21:24:55+00:00" + "time": "2024-08-17T21:02:11+00:00" } ], "packages-dev": [ { "name": "behat/gherkin", - "version": "v4.9.0", + "version": "v4.10.0", "source": { "type": "git", "url": "https://github.com/Behat/Gherkin.git", - "reference": "0bc8d1e30e96183e4f36db9dc79caead300beff4" + "reference": "cbb83c4c435dd8d05a161f2a5ae322e61b2f4db6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Behat/Gherkin/zipball/0bc8d1e30e96183e4f36db9dc79caead300beff4", - "reference": "0bc8d1e30e96183e4f36db9dc79caead300beff4", + "url": "https://api.github.com/repos/Behat/Gherkin/zipball/cbb83c4c435dd8d05a161f2a5ae322e61b2f4db6", + "reference": "cbb83c4c435dd8d05a161f2a5ae322e61b2f4db6", "shasum": "" }, "require": { "php": "~7.2|~8.0" }, "require-dev": { - "cucumber/cucumber": "dev-gherkin-22.0.0", + "cucumber/cucumber": "dev-gherkin-24.1.0", "phpunit/phpunit": "~8|~9", - "symfony/yaml": "~3|~4|~5" + "symfony/yaml": "~3|~4|~5|~6|~7" }, "suggest": { "symfony/yaml": "If you want to parse features, represented in YAML files" @@ -327,9 +265,9 @@ ], "support": { "issues": "https://github.com/Behat/Gherkin/issues", - "source": "https://github.com/Behat/Gherkin/tree/v4.9.0" + "source": "https://github.com/Behat/Gherkin/tree/v4.10.0" }, - "time": "2021-10-12T13:05:09+00:00" + "time": "2024-10-19T14:46:06+00:00" }, { "name": "codeception/codeception", @@ -508,6 +446,51 @@ }, "time": "2019-03-02T15:35:10+00:00" }, + { + "name": "doctrine/deprecations", + "version": "1.1.4", + "source": { + "type": "git", + "url": "https://github.com/doctrine/deprecations.git", + "reference": "31610dbb31faa98e6b5447b62340826f54fbc4e9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/31610dbb31faa98e6b5447b62340826f54fbc4e9", + "reference": "31610dbb31faa98e6b5447b62340826f54fbc4e9", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^9 || ^12", + "phpstan/phpstan": "1.4.10 || 2.0.3", + "phpstan/phpstan-phpunit": "^1.0 || ^2", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "psr/log": "^1 || ^2 || ^3" + }, + "suggest": { + "psr/log": "Allows logging deprecations via PSR-3 logger implementation" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Deprecations\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.", + "homepage": "https://www.doctrine-project.org/", + "support": { + "issues": "https://github.com/doctrine/deprecations/issues", + "source": "https://github.com/doctrine/deprecations/tree/1.1.4" + }, + "time": "2024-12-07T21:18:45+00:00" + }, { "name": "doctrine/instantiator", "version": "1.5.0", @@ -1000,16 +983,16 @@ }, { "name": "myclabs/deep-copy", - "version": "1.11.1", + "version": "1.12.1", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c" + "reference": "123267b2c49fbf30d78a7b2d333f6be754b94845" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", - "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/123267b2c49fbf30d78a7b2d333f6be754b94845", + "reference": "123267b2c49fbf30d78a7b2d333f6be754b94845", "shasum": "" }, "require": { @@ -1017,11 +1000,12 @@ }, "conflict": { "doctrine/collections": "<1.6.8", - "doctrine/common": "<2.13.3 || >=3,<3.2.2" + "doctrine/common": "<2.13.3 || >=3 <3.2.2" }, "require-dev": { "doctrine/collections": "^1.6.8", "doctrine/common": "^2.13.3 || ^3.2.2", + "phpspec/prophecy": "^1.10", "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" }, "type": "library", @@ -1047,7 +1031,7 @@ ], "support": { "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.11.1" + "source": "https://github.com/myclabs/DeepCopy/tree/1.12.1" }, "funding": [ { @@ -1055,7 +1039,7 @@ "type": "tidelift" } ], - "time": "2023-03-08T13:26:56+00:00" + "time": "2024-11-08T17:47:46+00:00" }, { "name": "phar-io/manifest", @@ -1279,25 +1263,33 @@ }, { "name": "phpdocumentor/type-resolver", - "version": "1.6.1", + "version": "1.10.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "77a32518733312af16a44300404e945338981de3" + "reference": "679e3ce485b99e84c775d28e2e96fade9a7fb50a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/77a32518733312af16a44300404e945338981de3", - "reference": "77a32518733312af16a44300404e945338981de3", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/679e3ce485b99e84c775d28e2e96fade9a7fb50a", + "reference": "679e3ce485b99e84c775d28e2e96fade9a7fb50a", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" + "doctrine/deprecations": "^1.0", + "php": "^7.3 || ^8.0", + "phpdocumentor/reflection-common": "^2.0", + "phpstan/phpdoc-parser": "^1.18|^2.0" }, "require-dev": { "ext-tokenizer": "*", - "psalm/phar": "^4.8" + "phpbench/phpbench": "^1.2", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-phpunit": "^1.1", + "phpunit/phpunit": "^9.5", + "rector/rector": "^0.13.9", + "vimeo/psalm": "^4.25" }, "type": "library", "extra": { @@ -1323,35 +1315,36 @@ "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", "support": { "issues": "https://github.com/phpDocumentor/TypeResolver/issues", - "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.1" + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.10.0" }, - "time": "2022-03-15T21:29:03+00:00" + "time": "2024-11-09T15:12:26+00:00" }, { "name": "phpspec/prophecy", - "version": "v1.17.0", + "version": "v1.20.0", "source": { "type": "git", "url": "https://github.com/phpspec/prophecy.git", - "reference": "15873c65b207b07765dbc3c95d20fdf4a320cbe2" + "reference": "a0165c648cab6a80311c74ffc708a07bb53ecc93" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/15873c65b207b07765dbc3c95d20fdf4a320cbe2", - "reference": "15873c65b207b07765dbc3c95d20fdf4a320cbe2", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/a0165c648cab6a80311c74ffc708a07bb53ecc93", + "reference": "a0165c648cab6a80311c74ffc708a07bb53ecc93", "shasum": "" }, "require": { "doctrine/instantiator": "^1.2 || ^2.0", - "php": "^7.2 || 8.0.* || 8.1.* || 8.2.*", + "php": "^7.2 || 8.0.* || 8.1.* || 8.2.* || 8.3.* || 8.4.*", "phpdocumentor/reflection-docblock": "^5.2", - "sebastian/comparator": "^3.0 || ^4.0", - "sebastian/recursion-context": "^3.0 || ^4.0" + "sebastian/comparator": "^3.0 || ^4.0 || ^5.0 || ^6.0", + "sebastian/recursion-context": "^3.0 || ^4.0 || ^5.0 || ^6.0" }, "require-dev": { + "friendsofphp/php-cs-fixer": "^3.40", "phpspec/phpspec": "^6.0 || ^7.0", "phpstan/phpstan": "^1.9", - "phpunit/phpunit": "^8.0 || ^9.0" + "phpunit/phpunit": "^8.0 || ^9.0 || ^10.0" }, "type": "library", "extra": { @@ -1384,6 +1377,7 @@ "keywords": [ "Double", "Dummy", + "dev", "fake", "mock", "spy", @@ -1391,9 +1385,56 @@ ], "support": { "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/v1.17.0" + "source": "https://github.com/phpspec/prophecy/tree/v1.20.0" }, - "time": "2023-02-02T15:41:36+00:00" + "time": "2024-11-19T13:12:41+00:00" + }, + { + "name": "phpstan/phpdoc-parser", + "version": "1.33.0", + "source": { + "type": "git", + "url": "https://github.com/phpstan/phpdoc-parser.git", + "reference": "82a311fd3690fb2bf7b64d5c98f912b3dd746140" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/82a311fd3690fb2bf7b64d5c98f912b3dd746140", + "reference": "82a311fd3690fb2bf7b64d5c98f912b3dd746140", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "doctrine/annotations": "^2.0", + "nikic/php-parser": "^4.15", + "php-parallel-lint/php-parallel-lint": "^1.2", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^1.5", + "phpstan/phpstan-phpunit": "^1.1", + "phpstan/phpstan-strict-rules": "^1.0", + "phpunit/phpunit": "^9.5", + "symfony/process": "^5.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "PHPStan\\PhpDocParser\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "PHPDoc parser with support for nullable, intersection and generic types", + "support": { + "issues": "https://github.com/phpstan/phpdoc-parser/issues", + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.33.0" + }, + "time": "2024-10-13T11:25:22+00:00" }, { "name": "phpunit/php-code-coverage", @@ -1464,16 +1505,16 @@ }, { "name": "phpunit/php-file-iterator", - "version": "2.0.5", + "version": "2.0.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "42c5ba5220e6904cbfe8b1a1bda7c0cfdc8c12f5" + "reference": "69deeb8664f611f156a924154985fbd4911eb36b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/42c5ba5220e6904cbfe8b1a1bda7c0cfdc8c12f5", - "reference": "42c5ba5220e6904cbfe8b1a1bda7c0cfdc8c12f5", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/69deeb8664f611f156a924154985fbd4911eb36b", + "reference": "69deeb8664f611f156a924154985fbd4911eb36b", "shasum": "" }, "require": { @@ -1512,7 +1553,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/2.0.5" + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/2.0.6" }, "funding": [ { @@ -1520,7 +1561,7 @@ "type": "github" } ], - "time": "2021-12-02T12:42:26+00:00" + "time": "2024-03-01T13:39:50+00:00" }, { "name": "phpunit/php-text-template", @@ -1569,16 +1610,16 @@ }, { "name": "phpunit/php-timer", - "version": "2.1.3", + "version": "2.1.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "2454ae1765516d20c4ffe103d85a58a9a3bd5662" + "reference": "a691211e94ff39a34811abd521c31bd5b305b0bb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/2454ae1765516d20c4ffe103d85a58a9a3bd5662", - "reference": "2454ae1765516d20c4ffe103d85a58a9a3bd5662", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/a691211e94ff39a34811abd521c31bd5b305b0bb", + "reference": "a691211e94ff39a34811abd521c31bd5b305b0bb", "shasum": "" }, "require": { @@ -1616,7 +1657,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-timer/issues", - "source": "https://github.com/sebastianbergmann/php-timer/tree/2.1.3" + "source": "https://github.com/sebastianbergmann/php-timer/tree/2.1.4" }, "funding": [ { @@ -1624,7 +1665,7 @@ "type": "github" } ], - "time": "2020-11-30T08:20:02+00:00" + "time": "2024-03-01T13:42:41+00:00" }, { "name": "phpunit/php-token-stream", @@ -1921,16 +1962,16 @@ }, { "name": "sebastian/code-unit-reverse-lookup", - "version": "1.0.2", + "version": "1.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "1de8cd5c010cb153fcd68b8d0f64606f523f7619" + "reference": "92a1a52e86d34cde6caa54f1b5ffa9fda18e5d54" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/1de8cd5c010cb153fcd68b8d0f64606f523f7619", - "reference": "1de8cd5c010cb153fcd68b8d0f64606f523f7619", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/92a1a52e86d34cde6caa54f1b5ffa9fda18e5d54", + "reference": "92a1a52e86d34cde6caa54f1b5ffa9fda18e5d54", "shasum": "" }, "require": { @@ -1964,7 +2005,7 @@ "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", "support": { "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", - "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/1.0.2" + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/1.0.3" }, "funding": [ { @@ -1972,7 +2013,7 @@ "type": "github" } ], - "time": "2020-11-30T08:15:22+00:00" + "time": "2024-03-01T13:45:45+00:00" }, { "name": "sebastian/comparator", @@ -2050,16 +2091,16 @@ }, { "name": "sebastian/diff", - "version": "3.0.4", + "version": "3.0.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "6296a0c086dd0117c1b78b059374d7fcbe7545ae" + "reference": "98ff311ca519c3aa73ccd3de053bdb377171d7b6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/6296a0c086dd0117c1b78b059374d7fcbe7545ae", - "reference": "6296a0c086dd0117c1b78b059374d7fcbe7545ae", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/98ff311ca519c3aa73ccd3de053bdb377171d7b6", + "reference": "98ff311ca519c3aa73ccd3de053bdb377171d7b6", "shasum": "" }, "require": { @@ -2104,7 +2145,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/3.0.4" + "source": "https://github.com/sebastianbergmann/diff/tree/3.0.6" }, "funding": [ { @@ -2112,20 +2153,20 @@ "type": "github" } ], - "time": "2023-05-07T05:30:20+00:00" + "time": "2024-03-02T06:16:36+00:00" }, { "name": "sebastian/environment", - "version": "4.2.4", + "version": "4.2.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "d47bbbad83711771f167c72d4e3f25f7fcc1f8b0" + "reference": "56932f6049a0482853056ffd617c91ffcc754205" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/d47bbbad83711771f167c72d4e3f25f7fcc1f8b0", - "reference": "d47bbbad83711771f167c72d4e3f25f7fcc1f8b0", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/56932f6049a0482853056ffd617c91ffcc754205", + "reference": "56932f6049a0482853056ffd617c91ffcc754205", "shasum": "" }, "require": { @@ -2167,7 +2208,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/4.2.4" + "source": "https://github.com/sebastianbergmann/environment/tree/4.2.5" }, "funding": [ { @@ -2175,24 +2216,24 @@ "type": "github" } ], - "time": "2020-11-30T07:53:42+00:00" + "time": "2024-03-01T13:49:59+00:00" }, { "name": "sebastian/exporter", - "version": "3.1.5", + "version": "3.1.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "73a9676f2833b9a7c36968f9d882589cd75511e6" + "reference": "1939bc8fd1d39adcfa88c5b35335910869214c56" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/73a9676f2833b9a7c36968f9d882589cd75511e6", - "reference": "73a9676f2833b9a7c36968f9d882589cd75511e6", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/1939bc8fd1d39adcfa88c5b35335910869214c56", + "reference": "1939bc8fd1d39adcfa88c5b35335910869214c56", "shasum": "" }, "require": { - "php": ">=7.0", + "php": ">=7.2", "sebastian/recursion-context": "^3.0" }, "require-dev": { @@ -2244,7 +2285,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/3.1.5" + "source": "https://github.com/sebastianbergmann/exporter/tree/3.1.6" }, "funding": [ { @@ -2252,7 +2293,7 @@ "type": "github" } ], - "time": "2022-09-14T06:00:17+00:00" + "time": "2024-03-02T06:21:38+00:00" }, { "name": "sebastian/global-state", @@ -2311,16 +2352,16 @@ }, { "name": "sebastian/object-enumerator", - "version": "3.0.4", + "version": "3.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2" + "reference": "ac5b293dba925751b808e02923399fb44ff0d541" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2", - "reference": "e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/ac5b293dba925751b808e02923399fb44ff0d541", + "reference": "ac5b293dba925751b808e02923399fb44ff0d541", "shasum": "" }, "require": { @@ -2356,7 +2397,7 @@ "homepage": "https://github.com/sebastianbergmann/object-enumerator/", "support": { "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", - "source": "https://github.com/sebastianbergmann/object-enumerator/tree/3.0.4" + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/3.0.5" }, "funding": [ { @@ -2364,20 +2405,20 @@ "type": "github" } ], - "time": "2020-11-30T07:40:27+00:00" + "time": "2024-03-01T13:54:02+00:00" }, { "name": "sebastian/object-reflector", - "version": "1.1.2", + "version": "1.1.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "9b8772b9cbd456ab45d4a598d2dd1a1bced6363d" + "reference": "1d439c229e61f244ff1f211e5c99737f90c67def" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/9b8772b9cbd456ab45d4a598d2dd1a1bced6363d", - "reference": "9b8772b9cbd456ab45d4a598d2dd1a1bced6363d", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/1d439c229e61f244ff1f211e5c99737f90c67def", + "reference": "1d439c229e61f244ff1f211e5c99737f90c67def", "shasum": "" }, "require": { @@ -2411,7 +2452,7 @@ "homepage": "https://github.com/sebastianbergmann/object-reflector/", "support": { "issues": "https://github.com/sebastianbergmann/object-reflector/issues", - "source": "https://github.com/sebastianbergmann/object-reflector/tree/1.1.2" + "source": "https://github.com/sebastianbergmann/object-reflector/tree/1.1.3" }, "funding": [ { @@ -2419,20 +2460,20 @@ "type": "github" } ], - "time": "2020-11-30T07:37:18+00:00" + "time": "2024-03-01T13:56:04+00:00" }, { "name": "sebastian/recursion-context", - "version": "3.0.1", + "version": "3.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "367dcba38d6e1977be014dc4b22f47a484dac7fb" + "reference": "9bfd3c6f1f08c026f542032dfb42813544f7d64c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/367dcba38d6e1977be014dc4b22f47a484dac7fb", - "reference": "367dcba38d6e1977be014dc4b22f47a484dac7fb", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/9bfd3c6f1f08c026f542032dfb42813544f7d64c", + "reference": "9bfd3c6f1f08c026f542032dfb42813544f7d64c", "shasum": "" }, "require": { @@ -2474,7 +2515,7 @@ "homepage": "http://www.github.com/sebastianbergmann/recursion-context", "support": { "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/3.0.1" + "source": "https://github.com/sebastianbergmann/recursion-context/tree/3.0.2" }, "funding": [ { @@ -2482,20 +2523,20 @@ "type": "github" } ], - "time": "2020-11-30T07:34:24+00:00" + "time": "2024-03-01T14:07:30+00:00" }, { "name": "sebastian/resource-operations", - "version": "2.0.2", + "version": "2.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "31d35ca87926450c44eae7e2611d45a7a65ea8b3" + "reference": "72a7f7674d053d548003b16ff5a106e7e0e06eee" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/31d35ca87926450c44eae7e2611d45a7a65ea8b3", - "reference": "31d35ca87926450c44eae7e2611d45a7a65ea8b3", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/72a7f7674d053d548003b16ff5a106e7e0e06eee", + "reference": "72a7f7674d053d548003b16ff5a106e7e0e06eee", "shasum": "" }, "require": { @@ -2525,8 +2566,7 @@ "description": "Provides a list of PHP built-in functions that operate on resources", "homepage": "https://www.github.com/sebastianbergmann/resource-operations", "support": { - "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/2.0.2" + "source": "https://github.com/sebastianbergmann/resource-operations/tree/2.0.3" }, "funding": [ { @@ -2534,7 +2574,7 @@ "type": "github" } ], - "time": "2020-11-30T07:30:19+00:00" + "time": "2024-03-01T13:59:09+00:00" }, { "name": "sebastian/version", @@ -2813,16 +2853,16 @@ }, { "name": "symfony/deprecation-contracts", - "version": "v2.5.2", + "version": "v2.5.4", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66" + "reference": "605389f2a7e5625f273b53960dc46aeaf9c62918" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66", - "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/605389f2a7e5625f273b53960dc46aeaf9c62918", + "reference": "605389f2a7e5625f273b53960dc46aeaf9c62918", "shasum": "" }, "require": { @@ -2860,7 +2900,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.2" + "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.4" }, "funding": [ { @@ -2876,7 +2916,7 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:53:40+00:00" + "time": "2024-09-25T14:11:13+00:00" }, { "name": "symfony/dom-crawler", @@ -3038,16 +3078,16 @@ }, { "name": "symfony/event-dispatcher-contracts", - "version": "v1.1.13", + "version": "v1.10.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "1d5cd762abaa6b2a4169d3e77610193a7157129e" + "reference": "761c8b8387cfe5f8026594a75fdf0a4e83ba6974" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/1d5cd762abaa6b2a4169d3e77610193a7157129e", - "reference": "1d5cd762abaa6b2a4169d3e77610193a7157129e", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/761c8b8387cfe5f8026594a75fdf0a4e83ba6974", + "reference": "761c8b8387cfe5f8026594a75fdf0a4e83ba6974", "shasum": "" }, "require": { @@ -3097,7 +3137,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v1.1.13" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v1.10.0" }, "funding": [ { @@ -3113,7 +3153,7 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:41:36+00:00" + "time": "2022-07-20T09:59:04+00:00" }, { "name": "symfony/finder", @@ -3179,20 +3219,20 @@ }, { "name": "symfony/polyfill-ctype", - "version": "v1.28.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb" + "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", - "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/a3cc8b044a6ea513310cbd48ef7333b384945638", + "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "provide": { "ext-ctype": "*" @@ -3202,12 +3242,9 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -3241,7 +3278,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.31.0" }, "funding": [ { @@ -3257,35 +3294,31 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-intl-idn", - "version": "v1.28.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "ecaafce9f77234a6a449d29e49267ba10499116d" + "reference": "c36586dcf89a12315939e00ec9b4474adcb1d773" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/ecaafce9f77234a6a449d29e49267ba10499116d", - "reference": "ecaafce9f77234a6a449d29e49267ba10499116d", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/c36586dcf89a12315939e00ec9b4474adcb1d773", + "reference": "c36586dcf89a12315939e00ec9b4474adcb1d773", "shasum": "" }, "require": { - "php": ">=7.1", - "symfony/polyfill-intl-normalizer": "^1.10", - "symfony/polyfill-php72": "^1.10" + "php": ">=7.2", + "symfony/polyfill-intl-normalizer": "^1.10" }, "suggest": { "ext-intl": "For best performance" }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -3328,7 +3361,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.31.0" }, "funding": [ { @@ -3344,36 +3377,33 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:30:37+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.28.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92" + "reference": "3833d7255cc303546435cb650316bff708a1c75c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", - "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/3833d7255cc303546435cb650316bff708a1c75c", + "reference": "3833d7255cc303546435cb650316bff708a1c75c", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "suggest": { "ext-intl": "For best performance" }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -3412,7 +3442,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.31.0" }, "funding": [ { @@ -3428,24 +3458,24 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.28.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "42292d99c55abe617799667f454222c54c60e229" + "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/42292d99c55abe617799667f454222c54c60e229", - "reference": "42292d99c55abe617799667f454222c54c60e229", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/85181ba99b2345b0ef10ce42ecac37612d9fd341", + "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "provide": { "ext-mbstring": "*" @@ -3455,9 +3485,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -3495,7 +3522,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.31.0" }, "funding": [ { @@ -3511,33 +3538,30 @@ "type": "tidelift" } ], - "time": "2023-07-28T09:04:16+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-php80", - "version": "v1.28.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5" + "reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/6caa57379c4aec19c0a12a38b59b26487dcfe4b5", - "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/60328e362d4c2c802a54fcbf04f9d3fb892b4cf8", + "reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -3578,7 +3602,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.31.0" }, "funding": [ { @@ -3594,7 +3618,7 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/process", @@ -3660,16 +3684,16 @@ }, { "name": "symfony/service-contracts", - "version": "v2.5.2", + "version": "v2.5.4", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c" + "reference": "f37b419f7aea2e9abf10abd261832cace12e3300" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/4b426aac47d6427cc1a1d0f7e2ac724627f5966c", - "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/f37b419f7aea2e9abf10abd261832cace12e3300", + "reference": "f37b419f7aea2e9abf10abd261832cace12e3300", "shasum": "" }, "require": { @@ -3723,7 +3747,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v2.5.2" + "source": "https://github.com/symfony/service-contracts/tree/v2.5.4" }, "funding": [ { @@ -3739,7 +3763,7 @@ "type": "tidelift" } ], - "time": "2022-05-30T19:17:29+00:00" + "time": "2024-09-25T14:11:13+00:00" }, { "name": "symfony/yaml", @@ -3814,16 +3838,16 @@ }, { "name": "theseer/tokenizer", - "version": "1.2.1", + "version": "1.2.3", "source": { "type": "git", "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" + "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", + "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", "shasum": "" }, "require": { @@ -3852,7 +3876,7 @@ "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", "support": { "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.1" + "source": "https://github.com/theseer/tokenizer/tree/1.2.3" }, "funding": [ { @@ -3860,7 +3884,7 @@ "type": "github" } ], - "time": "2021-07-28T10:34:58+00:00" + "time": "2024-03-03T12:36:25+00:00" }, { "name": "webmozart/assert", @@ -3923,18 +3947,16 @@ ], "aliases": [], "minimum-stability": "stable", - "stability-flags": { - "p3k/picofeed": 0 - }, + "stability-flags": {}, "prefer-stable": false, "prefer-lowest": false, "platform": { "php": "^7.3.6 || ^8.0", "ext-json": "*" }, - "platform-dev": [], + "platform-dev": {}, "platform-overrides": { "php": "7.3.6" }, - "plugin-api-version": "2.3.0" + "plugin-api-version": "2.6.0" } diff --git a/languages/en.yaml b/languages/en.yaml index 2f3ec863..9738edc2 100644 --- a/languages/en.yaml +++ b/languages/en.yaml @@ -383,6 +383,8 @@ PLUGIN_ADMIN: CACHE_JOB_TYPE: "Cache Job Type" CACHE_JOB_TYPE_HELP: "Either clear with the 'standard' folders cache clear, or with 'all' folders" CACHE_PURGE: "Purge Old Cache" + CACHE_PURGE_AGE: "Cache Purge Age" + CACHE_PURGE_AGE_HELP: "Purge all cache items older than this age (in seconds)" LIFETIME: "Lifetime" LIFETIME_HELP: "Sets the cache lifetime in seconds. 0 = infinite" GZIP_COMPRESSION: "Gzip compression" @@ -449,6 +451,8 @@ PLUGIN_ADMIN: DEBUG_TWIG_HELP: "Enable debugging of Twig templates" SHUTDOWN_CLOSE_CONNECTION: "Shutdown close connection" SHUTDOWN_CLOSE_CONNECTION_HELP: "Close the connection before calling onShutdown(). false for debugging" + IMAGE_ADAPTER: "Image Adapter" + IMAGE_ADAPTER_HELP: "The image adapter to use for image manipulation. 'GD' is the default, 'Imagick' is an alternative" DEFAULT_IMAGE_QUALITY: "Default image quality" DEFAULT_IMAGE_QUALITY_HELP: "Default image quality to use when resampling or caching images (85%)" CACHE_ALL: "Cache all images" @@ -459,6 +463,8 @@ PLUGIN_ADMIN: IMAGES_LOADING_HELP: "The loading attribute allows a browser to defer loading offscreen images and iframes until users scroll near them. loading supports three values: auto, lazy, eager" IMAGES_DECODING: "Image decoding behavior" IMAGES_DECODING_HELP: "The decoding attribute allows a browser to defer decoding offscreen images until users scroll near them. decoding supports three values: auto, sync, async" + IMAGES_FETCHPRIORITY: "Image Fetchpriority Property" + IMAGES_FETCHPRIORITY_HELP: "The fetchpriority property in HTML is an attribute that specifies the priority for loading certain resources, such as images or iframes, to optimize performance. Possible values are high, low, or auto." # Removed in Grav 1.8 IMAGES_SEOFRIENDLY: "SEO-Friendly Image names" IMAGES_SEOFRIENDLY_HELP: "When enabled, the image name is displayed first, then a smaller hash to reflect processed operations" @@ -794,7 +800,7 @@ PLUGIN_ADMIN: STRICT_TWIG_COMPAT_HELP: "Enables deprecated Twig autoescape setting. When disabled, |raw filter is required to output HTML as Twig will autoescape output" SCHEDULER: "Scheduler" SCHEDULER_INSTALL_INSTRUCTIONS: "Install Instructions" - SCHEDULER_INSTALLED_READY: "Installed and Ready" + SCHEDULER_INSTALLED_READY: "Scheduler Ready" SCHEDULER_CRON_NA: "Cron Not Available for user: %s" SCHEDULER_NOT_ENABLED: "Not Enabled for user: %s" SCHEDULER_SETUP: "Scheduler Setup" @@ -810,7 +816,7 @@ PLUGIN_ADMIN: SCHEDULER_OUTPUT_TYPE_HELP: "Either append to the same file each run, or overwrite the file with each run" SCHEDULER_EMAIL: "Email" SCHEDULER_EMAIL_HELP: "Email to send output to. NOTE: requires output file to be set" - SCHEDULER_WARNING: "The scheduler uses your system's crontab system to execute commands. You should use this only if you are an advanced user and know what you are doing. Misconfiguration or abuse can lead to security vulnerabilities." + SCHEDULER_WARNING: "The scheduler can use either system crontab or webhook triggers to execute commands. Webhooks are recommended for cloud environments. Only advanced users should configure custom jobs. Misconfiguration or abuse can lead to security vulnerabilities." SECURITY: "Security" XSS_SECURITY: "XSS Security for Content" XSS_WHITELIST_PERMISSIONS: "Whitelist Permissions" diff --git a/languages/es.yaml b/languages/es.yaml index 58673701..df723881 100644 --- a/languages/es.yaml +++ b/languages/es.yaml @@ -460,6 +460,8 @@ PLUGIN_ADMIN: IMAGES_LOADING_HELP: "El atributo cargando, permite al navegador diferir la carga de las imágenes que están fuera de pantalla y los iframes, hasta que el usuario se acerca a ellos. Cargando soporta tres valores: auto, lazy, eager" IMAGES_DECODING: "Comportamiento de decodificación de imágenes" IMAGES_DECODING_HELP: "El atributo de decodificación permite a un navegador posponer la decodificación de imágenes fuera de la pantalla hasta que los usuarios se desplacen cerca de ellas. la decodificación admite tres valores: auto, sync, async" + IMAGES_FETCHPRIORITY: Propiedad de Imagen Fetchpriority" + IMAGES_FETCHPRIORITY_HELP: "La propiedad fetchpriority en HTML es un atributo que permite indicar la prioridad con la que los navegadores deben cargar ciertos recursos, como imágenes o iframes, optimizando el rendimiento. Los valores posibles son high, low o auto." #Removed in Grav 1.8 IMAGES_SEOFRIENDLY: "Nombres de imágenes SEO-Friendly" IMAGES_SEOFRIENDLY_HELP: "Cuando está activado, el nombre de la imagen se muestra primero, luego un hash menor para reflejar las operaciones procesadas" diff --git a/themes/grav/css/fontawesome7.min.css b/themes/grav/css/fontawesome7.min.css new file mode 100644 index 00000000..65918947 --- /dev/null +++ b/themes/grav/css/fontawesome7.min.css @@ -0,0 +1,9 @@ +/*! + * Font Awesome Free 7.0.0 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + * Copyright 2025 Fonticons, Inc. + */ +.fa,.fa-brands,.fa-classic,.fa-regular,.fa-solid,.fab,.far,.fas{--_fa-family:var(--fa-family,var(--fa-style-family,"Font Awesome 7 Free"));-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:var(--fa-display,inline-block);font-family:var(--_fa-family);font-feature-settings:normal;font-style:normal;font-synthesis:none;font-variant:normal;font-weight:var(--fa-style,900);line-height:1;text-align:center;text-rendering:auto;width:var(--fa-width,1.25em)}:is(.fas,.far,.fab,.fa-solid,.fa-regular,.fa-brands,.fa-classic,.fa):before{content:var(--fa);content:var(--fa)/""}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-2xs{font-size:.625em;line-height:.1em;vertical-align:.225em}.fa-xs{font-size:.75em;line-height:.08333em;vertical-align:.125em}.fa-sm{font-size:.875em;line-height:.07143em;vertical-align:.05357em}.fa-lg{font-size:1.25em;line-height:.05em;vertical-align:-.075em}.fa-xl{font-size:1.5em;line-height:.04167em;vertical-align:-.125em}.fa-2xl{font-size:2em;line-height:.03125em;vertical-align:-.1875em}.fa-width-auto{--fa-width:auto}.fa-fw,.fa-width-fixed{--fa-width:1.25em}.fa-ul{list-style-type:none;margin-inline-start:var(--fa-li-margin,2.5em);padding-inline-start:0}.fa-ul>li{position:relative}.fa-li{inset-inline-start:calc(var(--fa-li-width, 2em)*-1);position:absolute;text-align:center;width:var(--fa-li-width,2em);line-height:inherit}.fa-border{border-radius:var(--fa-border-radius,.1em);border:var(--fa-border-width,.0625em) var(--fa-border-style,solid) var(--fa-border-color,#eee);box-sizing:var(--fa-border-box-sizing,content-box);padding:var(--fa-border-padding,.1875em .25em)}.fa-pull-left,.fa-pull-start{float:inline-start;margin-inline-end:var(--fa-pull-margin,.3em)}.fa-pull-end,.fa-pull-right{float:inline-end;margin-inline-start:var(--fa-pull-margin,.3em)}.fa-beat{animation-name:fa-beat;animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-bounce{animation-name:fa-bounce;animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,cubic-bezier(.28,.84,.42,1))}.fa-fade{animation-name:fa-fade;animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-beat-fade,.fa-fade{animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s)}.fa-beat-fade{animation-name:fa-beat-fade;animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-flip{animation-name:fa-flip;animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-shake{animation-name:fa-shake;animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,linear)}.fa-shake,.fa-spin{animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal)}.fa-spin{animation-name:fa-spin;animation-duration:var(--fa-animation-duration,2s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,linear)}.fa-spin-reverse{--fa-animation-direction:reverse}.fa-pulse,.fa-spin-pulse{animation-name:fa-spin;animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,steps(8))}@media (prefers-reduced-motion:reduce){.fa-beat,.fa-beat-fade,.fa-bounce,.fa-fade,.fa-flip,.fa-pulse,.fa-shake,.fa-spin,.fa-spin-pulse{animation:none!important;transition:none!important}}@keyframes fa-beat{0%,90%{transform:scale(1)}45%{transform:scale(var(--fa-beat-scale,1.25))}}@keyframes fa-bounce{0%{transform:scale(1) translateY(0)}10%{transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0)}30%{transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em))}50%{transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0)}57%{transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em))}64%{transform:scale(1) translateY(0)}to{transform:scale(1) translateY(0)}}@keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,.4)}}@keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity,.4);transform:scale(1)}50%{opacity:1;transform:scale(var(--fa-beat-fade-scale,1.125))}}@keyframes fa-flip{50%{transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}}@keyframes fa-shake{0%{transform:rotate(-15deg)}4%{transform:rotate(15deg)}8%,24%{transform:rotate(-18deg)}12%,28%{transform:rotate(18deg)}16%{transform:rotate(-22deg)}20%{transform:rotate(22deg)}32%{transform:rotate(-12deg)}36%{transform:rotate(12deg)}40%,to{transform:rotate(0deg)}}@keyframes fa-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.fa-rotate-90{transform:rotate(90deg)}.fa-rotate-180{transform:rotate(180deg)}.fa-rotate-270{transform:rotate(270deg)}.fa-flip-horizontal{transform:scaleX(-1)}.fa-flip-vertical{transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{transform:scale(-1)}.fa-rotate-by{transform:rotate(var(--fa-rotate-angle,0))}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%;z-index:var(--fa-stack-z-index,auto)}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:var(--fa-inverse,#fff)} + +.fa-0{--fa:"\30 "}.fa-1{--fa:"\31 "}.fa-2{--fa:"\32 "}.fa-3{--fa:"\33 "}.fa-4{--fa:"\34 "}.fa-5{--fa:"\35 "}.fa-6{--fa:"\36 "}.fa-7{--fa:"\37 "}.fa-8{--fa:"\38 "}.fa-9{--fa:"\39 "}.fa-exclamation{--fa:"\!"}.fa-hashtag{--fa:"\#"}.fa-dollar,.fa-dollar-sign,.fa-usd{--fa:"\$"}.fa-percent,.fa-percentage{--fa:"\%"}.fa-asterisk{--fa:"\*"}.fa-add,.fa-plus{--fa:"\+"}.fa-less-than{--fa:"\<"}.fa-equals{--fa:"\="}.fa-greater-than{--fa:"\>"}.fa-question{--fa:"\?"}.fa-at{--fa:"\@"}.fa-a{--fa:"A"}.fa-b{--fa:"B"}.fa-c{--fa:"C"}.fa-d{--fa:"D"}.fa-e{--fa:"E"}.fa-f{--fa:"F"}.fa-g{--fa:"G"}.fa-h{--fa:"H"}.fa-i{--fa:"I"}.fa-j{--fa:"J"}.fa-k{--fa:"K"}.fa-l{--fa:"L"}.fa-m{--fa:"M"}.fa-n{--fa:"N"}.fa-o{--fa:"O"}.fa-p{--fa:"P"}.fa-q{--fa:"Q"}.fa-r{--fa:"R"}.fa-s{--fa:"S"}.fa-t{--fa:"T"}.fa-u{--fa:"U"}.fa-v{--fa:"V"}.fa-w{--fa:"W"}.fa-x{--fa:"X"}.fa-y{--fa:"Y"}.fa-z{--fa:"Z"}.fa-faucet{--fa:"\e005"}.fa-faucet-drip{--fa:"\e006"}.fa-house-chimney-window{--fa:"\e00d"}.fa-house-signal{--fa:"\e012"}.fa-temperature-arrow-down,.fa-temperature-down{--fa:"\e03f"}.fa-temperature-arrow-up,.fa-temperature-up{--fa:"\e040"}.fa-trailer{--fa:"\e041"}.fa-bacteria{--fa:"\e059"}.fa-bacterium{--fa:"\e05a"}.fa-box-tissue{--fa:"\e05b"}.fa-hand-holding-medical{--fa:"\e05c"}.fa-hand-sparkles{--fa:"\e05d"}.fa-hands-bubbles,.fa-hands-wash{--fa:"\e05e"}.fa-handshake-alt-slash,.fa-handshake-simple-slash,.fa-handshake-slash{--fa:"\e060"}.fa-head-side-cough{--fa:"\e061"}.fa-head-side-cough-slash{--fa:"\e062"}.fa-head-side-mask{--fa:"\e063"}.fa-head-side-virus{--fa:"\e064"}.fa-house-chimney-user{--fa:"\e065"}.fa-house-laptop,.fa-laptop-house{--fa:"\e066"}.fa-lungs-virus{--fa:"\e067"}.fa-people-arrows,.fa-people-arrows-left-right{--fa:"\e068"}.fa-plane-slash{--fa:"\e069"}.fa-pump-medical{--fa:"\e06a"}.fa-pump-soap{--fa:"\e06b"}.fa-shield-virus{--fa:"\e06c"}.fa-sink{--fa:"\e06d"}.fa-soap{--fa:"\e06e"}.fa-stopwatch-20{--fa:"\e06f"}.fa-shop-slash,.fa-store-alt-slash{--fa:"\e070"}.fa-store-slash{--fa:"\e071"}.fa-toilet-paper-slash{--fa:"\e072"}.fa-users-slash{--fa:"\e073"}.fa-virus{--fa:"\e074"}.fa-virus-slash{--fa:"\e075"}.fa-viruses{--fa:"\e076"}.fa-vest{--fa:"\e085"}.fa-vest-patches{--fa:"\e086"}.fa-arrow-trend-down{--fa:"\e097"}.fa-arrow-trend-up{--fa:"\e098"}.fa-arrow-up-from-bracket{--fa:"\e09a"}.fa-austral-sign{--fa:"\e0a9"}.fa-baht-sign{--fa:"\e0ac"}.fa-bitcoin-sign{--fa:"\e0b4"}.fa-bolt-lightning{--fa:"\e0b7"}.fa-book-bookmark{--fa:"\e0bb"}.fa-camera-rotate{--fa:"\e0d8"}.fa-cedi-sign{--fa:"\e0df"}.fa-chart-column{--fa:"\e0e3"}.fa-chart-gantt{--fa:"\e0e4"}.fa-clapperboard{--fa:"\e131"}.fa-clover{--fa:"\e139"}.fa-code-compare{--fa:"\e13a"}.fa-code-fork{--fa:"\e13b"}.fa-code-pull-request{--fa:"\e13c"}.fa-colon-sign{--fa:"\e140"}.fa-cruzeiro-sign{--fa:"\e152"}.fa-display{--fa:"\e163"}.fa-dong-sign{--fa:"\e169"}.fa-elevator{--fa:"\e16d"}.fa-filter-circle-xmark{--fa:"\e17b"}.fa-florin-sign{--fa:"\e184"}.fa-folder-closed{--fa:"\e185"}.fa-franc-sign{--fa:"\e18f"}.fa-guarani-sign{--fa:"\e19a"}.fa-gun{--fa:"\e19b"}.fa-hands-clapping{--fa:"\e1a8"}.fa-home-user,.fa-house-user{--fa:"\e1b0"}.fa-indian-rupee,.fa-indian-rupee-sign,.fa-inr{--fa:"\e1bc"}.fa-kip-sign{--fa:"\e1c4"}.fa-lari-sign{--fa:"\e1c8"}.fa-litecoin-sign{--fa:"\e1d3"}.fa-manat-sign{--fa:"\e1d5"}.fa-mask-face{--fa:"\e1d7"}.fa-mill-sign{--fa:"\e1ed"}.fa-money-bills{--fa:"\e1f3"}.fa-naira-sign{--fa:"\e1f6"}.fa-notdef{--fa:"\e1fe"}.fa-panorama{--fa:"\e209"}.fa-peseta-sign{--fa:"\e221"}.fa-peso-sign{--fa:"\e222"}.fa-plane-up{--fa:"\e22d"}.fa-rupiah-sign{--fa:"\e23d"}.fa-stairs{--fa:"\e289"}.fa-timeline{--fa:"\e29c"}.fa-truck-front{--fa:"\e2b7"}.fa-try,.fa-turkish-lira,.fa-turkish-lira-sign{--fa:"\e2bb"}.fa-vault{--fa:"\e2c5"}.fa-magic-wand-sparkles,.fa-wand-magic-sparkles{--fa:"\e2ca"}.fa-wheat-alt,.fa-wheat-awn{--fa:"\e2cd"}.fa-wheelchair-alt,.fa-wheelchair-move{--fa:"\e2ce"}.fa-bangladeshi-taka-sign{--fa:"\e2e6"}.fa-bowl-rice{--fa:"\e2eb"}.fa-person-pregnant{--fa:"\e31e"}.fa-home-lg,.fa-house-chimney{--fa:"\e3af"}.fa-house-crack{--fa:"\e3b1"}.fa-house-medical{--fa:"\e3b2"}.fa-cent-sign{--fa:"\e3f5"}.fa-plus-minus{--fa:"\e43c"}.fa-sailboat{--fa:"\e445"}.fa-section{--fa:"\e447"}.fa-shrimp{--fa:"\e448"}.fa-brazilian-real-sign{--fa:"\e46c"}.fa-chart-simple{--fa:"\e473"}.fa-diagram-next{--fa:"\e476"}.fa-diagram-predecessor{--fa:"\e477"}.fa-diagram-successor{--fa:"\e47a"}.fa-earth-oceania,.fa-globe-oceania{--fa:"\e47b"}.fa-bug-slash{--fa:"\e490"}.fa-file-circle-plus{--fa:"\e494"}.fa-shop-lock{--fa:"\e4a5"}.fa-virus-covid{--fa:"\e4a8"}.fa-virus-covid-slash{--fa:"\e4a9"}.fa-anchor-circle-check{--fa:"\e4aa"}.fa-anchor-circle-exclamation{--fa:"\e4ab"}.fa-anchor-circle-xmark{--fa:"\e4ac"}.fa-anchor-lock{--fa:"\e4ad"}.fa-arrow-down-up-across-line{--fa:"\e4af"}.fa-arrow-down-up-lock{--fa:"\e4b0"}.fa-arrow-right-to-city{--fa:"\e4b3"}.fa-arrow-up-from-ground-water{--fa:"\e4b5"}.fa-arrow-up-from-water-pump{--fa:"\e4b6"}.fa-arrow-up-right-dots{--fa:"\e4b7"}.fa-arrows-down-to-line{--fa:"\e4b8"}.fa-arrows-down-to-people{--fa:"\e4b9"}.fa-arrows-left-right-to-line{--fa:"\e4ba"}.fa-arrows-spin{--fa:"\e4bb"}.fa-arrows-split-up-and-left{--fa:"\e4bc"}.fa-arrows-to-circle{--fa:"\e4bd"}.fa-arrows-to-dot{--fa:"\e4be"}.fa-arrows-to-eye{--fa:"\e4bf"}.fa-arrows-turn-right{--fa:"\e4c0"}.fa-arrows-turn-to-dots{--fa:"\e4c1"}.fa-arrows-up-to-line{--fa:"\e4c2"}.fa-bore-hole{--fa:"\e4c3"}.fa-bottle-droplet{--fa:"\e4c4"}.fa-bottle-water{--fa:"\e4c5"}.fa-bowl-food{--fa:"\e4c6"}.fa-boxes-packing{--fa:"\e4c7"}.fa-bridge{--fa:"\e4c8"}.fa-bridge-circle-check{--fa:"\e4c9"}.fa-bridge-circle-exclamation{--fa:"\e4ca"}.fa-bridge-circle-xmark{--fa:"\e4cb"}.fa-bridge-lock{--fa:"\e4cc"}.fa-bridge-water{--fa:"\e4ce"}.fa-bucket{--fa:"\e4cf"}.fa-bugs{--fa:"\e4d0"}.fa-building-circle-arrow-right{--fa:"\e4d1"}.fa-building-circle-check{--fa:"\e4d2"}.fa-building-circle-exclamation{--fa:"\e4d3"}.fa-building-circle-xmark{--fa:"\e4d4"}.fa-building-flag{--fa:"\e4d5"}.fa-building-lock{--fa:"\e4d6"}.fa-building-ngo{--fa:"\e4d7"}.fa-building-shield{--fa:"\e4d8"}.fa-building-un{--fa:"\e4d9"}.fa-building-user{--fa:"\e4da"}.fa-building-wheat{--fa:"\e4db"}.fa-burst{--fa:"\e4dc"}.fa-car-on{--fa:"\e4dd"}.fa-car-tunnel{--fa:"\e4de"}.fa-child-combatant,.fa-child-rifle{--fa:"\e4e0"}.fa-children{--fa:"\e4e1"}.fa-circle-nodes{--fa:"\e4e2"}.fa-clipboard-question{--fa:"\e4e3"}.fa-cloud-showers-water{--fa:"\e4e4"}.fa-computer{--fa:"\e4e5"}.fa-cubes-stacked{--fa:"\e4e6"}.fa-envelope-circle-check{--fa:"\e4e8"}.fa-explosion{--fa:"\e4e9"}.fa-ferry{--fa:"\e4ea"}.fa-file-circle-exclamation{--fa:"\e4eb"}.fa-file-circle-minus{--fa:"\e4ed"}.fa-file-circle-question{--fa:"\e4ef"}.fa-file-shield{--fa:"\e4f0"}.fa-fire-burner{--fa:"\e4f1"}.fa-fish-fins{--fa:"\e4f2"}.fa-flask-vial{--fa:"\e4f3"}.fa-glass-water{--fa:"\e4f4"}.fa-glass-water-droplet{--fa:"\e4f5"}.fa-group-arrows-rotate{--fa:"\e4f6"}.fa-hand-holding-hand{--fa:"\e4f7"}.fa-handcuffs{--fa:"\e4f8"}.fa-hands-bound{--fa:"\e4f9"}.fa-hands-holding-child{--fa:"\e4fa"}.fa-hands-holding-circle{--fa:"\e4fb"}.fa-heart-circle-bolt{--fa:"\e4fc"}.fa-heart-circle-check{--fa:"\e4fd"}.fa-heart-circle-exclamation{--fa:"\e4fe"}.fa-heart-circle-minus{--fa:"\e4ff"}.fa-heart-circle-plus{--fa:"\e500"}.fa-heart-circle-xmark{--fa:"\e501"}.fa-helicopter-symbol{--fa:"\e502"}.fa-helmet-un{--fa:"\e503"}.fa-hill-avalanche{--fa:"\e507"}.fa-hill-rockslide{--fa:"\e508"}.fa-house-circle-check{--fa:"\e509"}.fa-house-circle-exclamation{--fa:"\e50a"}.fa-house-circle-xmark{--fa:"\e50b"}.fa-house-fire{--fa:"\e50c"}.fa-house-flag{--fa:"\e50d"}.fa-house-flood-water{--fa:"\e50e"}.fa-house-flood-water-circle-arrow-right{--fa:"\e50f"}.fa-house-lock{--fa:"\e510"}.fa-house-medical-circle-check{--fa:"\e511"}.fa-house-medical-circle-exclamation{--fa:"\e512"}.fa-house-medical-circle-xmark{--fa:"\e513"}.fa-house-medical-flag{--fa:"\e514"}.fa-house-tsunami{--fa:"\e515"}.fa-jar{--fa:"\e516"}.fa-jar-wheat{--fa:"\e517"}.fa-jet-fighter-up{--fa:"\e518"}.fa-jug-detergent{--fa:"\e519"}.fa-kitchen-set{--fa:"\e51a"}.fa-land-mine-on{--fa:"\e51b"}.fa-landmark-flag{--fa:"\e51c"}.fa-laptop-file{--fa:"\e51d"}.fa-lines-leaning{--fa:"\e51e"}.fa-location-pin-lock{--fa:"\e51f"}.fa-locust{--fa:"\e520"}.fa-magnifying-glass-arrow-right{--fa:"\e521"}.fa-magnifying-glass-chart{--fa:"\e522"}.fa-mars-and-venus-burst{--fa:"\e523"}.fa-mask-ventilator{--fa:"\e524"}.fa-mattress-pillow{--fa:"\e525"}.fa-mobile-retro{--fa:"\e527"}.fa-money-bill-transfer{--fa:"\e528"}.fa-money-bill-trend-up{--fa:"\e529"}.fa-money-bill-wheat{--fa:"\e52a"}.fa-mosquito{--fa:"\e52b"}.fa-mosquito-net{--fa:"\e52c"}.fa-mound{--fa:"\e52d"}.fa-mountain-city{--fa:"\e52e"}.fa-mountain-sun{--fa:"\e52f"}.fa-oil-well{--fa:"\e532"}.fa-people-group{--fa:"\e533"}.fa-people-line{--fa:"\e534"}.fa-people-pulling{--fa:"\e535"}.fa-people-robbery{--fa:"\e536"}.fa-people-roof{--fa:"\e537"}.fa-person-arrow-down-to-line{--fa:"\e538"}.fa-person-arrow-up-from-line{--fa:"\e539"}.fa-person-breastfeeding{--fa:"\e53a"}.fa-person-burst{--fa:"\e53b"}.fa-person-cane{--fa:"\e53c"}.fa-person-chalkboard{--fa:"\e53d"}.fa-person-circle-check{--fa:"\e53e"}.fa-person-circle-exclamation{--fa:"\e53f"}.fa-person-circle-minus{--fa:"\e540"}.fa-person-circle-plus{--fa:"\e541"}.fa-person-circle-question{--fa:"\e542"}.fa-person-circle-xmark{--fa:"\e543"}.fa-person-dress-burst{--fa:"\e544"}.fa-person-drowning{--fa:"\e545"}.fa-person-falling{--fa:"\e546"}.fa-person-falling-burst{--fa:"\e547"}.fa-person-half-dress{--fa:"\e548"}.fa-person-harassing{--fa:"\e549"}.fa-person-military-pointing{--fa:"\e54a"}.fa-person-military-rifle{--fa:"\e54b"}.fa-person-military-to-person{--fa:"\e54c"}.fa-person-rays{--fa:"\e54d"}.fa-person-rifle{--fa:"\e54e"}.fa-person-shelter{--fa:"\e54f"}.fa-person-walking-arrow-loop-left{--fa:"\e551"}.fa-person-walking-arrow-right{--fa:"\e552"}.fa-person-walking-dashed-line-arrow-right{--fa:"\e553"}.fa-person-walking-luggage{--fa:"\e554"}.fa-plane-circle-check{--fa:"\e555"}.fa-plane-circle-exclamation{--fa:"\e556"}.fa-plane-circle-xmark{--fa:"\e557"}.fa-plane-lock{--fa:"\e558"}.fa-plate-wheat{--fa:"\e55a"}.fa-plug-circle-bolt{--fa:"\e55b"}.fa-plug-circle-check{--fa:"\e55c"}.fa-plug-circle-exclamation{--fa:"\e55d"}.fa-plug-circle-minus{--fa:"\e55e"}.fa-plug-circle-plus{--fa:"\e55f"}.fa-plug-circle-xmark{--fa:"\e560"}.fa-ranking-star{--fa:"\e561"}.fa-road-barrier{--fa:"\e562"}.fa-road-bridge{--fa:"\e563"}.fa-road-circle-check{--fa:"\e564"}.fa-road-circle-exclamation{--fa:"\e565"}.fa-road-circle-xmark{--fa:"\e566"}.fa-road-lock{--fa:"\e567"}.fa-road-spikes{--fa:"\e568"}.fa-rug{--fa:"\e569"}.fa-sack-xmark{--fa:"\e56a"}.fa-school-circle-check{--fa:"\e56b"}.fa-school-circle-exclamation{--fa:"\e56c"}.fa-school-circle-xmark{--fa:"\e56d"}.fa-school-flag{--fa:"\e56e"}.fa-school-lock{--fa:"\e56f"}.fa-sheet-plastic{--fa:"\e571"}.fa-shield-cat{--fa:"\e572"}.fa-shield-dog{--fa:"\e573"}.fa-shield-heart{--fa:"\e574"}.fa-square-nfi{--fa:"\e576"}.fa-square-person-confined{--fa:"\e577"}.fa-square-virus{--fa:"\e578"}.fa-rod-asclepius,.fa-rod-snake,.fa-staff-aesculapius,.fa-staff-snake{--fa:"\e579"}.fa-sun-plant-wilt{--fa:"\e57a"}.fa-tarp{--fa:"\e57b"}.fa-tarp-droplet{--fa:"\e57c"}.fa-tent{--fa:"\e57d"}.fa-tent-arrow-down-to-line{--fa:"\e57e"}.fa-tent-arrow-left-right{--fa:"\e57f"}.fa-tent-arrow-turn-left{--fa:"\e580"}.fa-tent-arrows-down{--fa:"\e581"}.fa-tents{--fa:"\e582"}.fa-toilet-portable{--fa:"\e583"}.fa-toilets-portable{--fa:"\e584"}.fa-tower-cell{--fa:"\e585"}.fa-tower-observation{--fa:"\e586"}.fa-tree-city{--fa:"\e587"}.fa-trowel{--fa:"\e589"}.fa-trowel-bricks{--fa:"\e58a"}.fa-truck-arrow-right{--fa:"\e58b"}.fa-truck-droplet{--fa:"\e58c"}.fa-truck-field{--fa:"\e58d"}.fa-truck-field-un{--fa:"\e58e"}.fa-truck-plane{--fa:"\e58f"}.fa-users-between-lines{--fa:"\e591"}.fa-users-line{--fa:"\e592"}.fa-users-rays{--fa:"\e593"}.fa-users-rectangle{--fa:"\e594"}.fa-users-viewfinder{--fa:"\e595"}.fa-vial-circle-check{--fa:"\e596"}.fa-vial-virus{--fa:"\e597"}.fa-wheat-awn-circle-exclamation{--fa:"\e598"}.fa-worm{--fa:"\e599"}.fa-xmarks-lines{--fa:"\e59a"}.fa-child-dress{--fa:"\e59c"}.fa-child-reaching{--fa:"\e59d"}.fa-file-circle-check{--fa:"\e5a0"}.fa-file-circle-xmark{--fa:"\e5a1"}.fa-person-through-window{--fa:"\e5a9"}.fa-plant-wilt{--fa:"\e5aa"}.fa-stapler{--fa:"\e5af"}.fa-train-tram{--fa:"\e5b4"}.fa-table-cells-column-lock{--fa:"\e678"}.fa-table-cells-row-lock{--fa:"\e67a"}.fa-thumb-tack-slash,.fa-thumbtack-slash{--fa:"\e68f"}.fa-table-cells-row-unlock{--fa:"\e691"}.fa-chart-diagram{--fa:"\e695"}.fa-comment-nodes{--fa:"\e696"}.fa-file-fragment{--fa:"\e697"}.fa-file-half-dashed{--fa:"\e698"}.fa-hexagon-nodes{--fa:"\e699"}.fa-hexagon-nodes-bolt{--fa:"\e69a"}.fa-square-binary{--fa:"\e69b"}.fa-pentagon{--fa:"\e790"}.fa-non-binary{--fa:"\e807"}.fa-spiral{--fa:"\e80a"}.fa-mobile-vibrate{--fa:"\e816"}.fa-single-quote-left{--fa:"\e81b"}.fa-single-quote-right{--fa:"\e81c"}.fa-bus-side{--fa:"\e81d"}.fa-heptagon,.fa-septagon{--fa:"\e820"}.fa-glass-martini,.fa-martini-glass-empty{--fa:"\f000"}.fa-music{--fa:"\f001"}.fa-magnifying-glass,.fa-search{--fa:"\f002"}.fa-heart{--fa:"\f004"}.fa-star{--fa:"\f005"}.fa-user,.fa-user-alt,.fa-user-large{--fa:"\f007"}.fa-film,.fa-film-alt,.fa-film-simple{--fa:"\f008"}.fa-table-cells-large,.fa-th-large{--fa:"\f009"}.fa-table-cells,.fa-th{--fa:"\f00a"}.fa-table-list,.fa-th-list{--fa:"\f00b"}.fa-check{--fa:"\f00c"}.fa-close,.fa-multiply,.fa-remove,.fa-times,.fa-xmark{--fa:"\f00d"}.fa-magnifying-glass-plus,.fa-search-plus{--fa:"\f00e"}.fa-magnifying-glass-minus,.fa-search-minus{--fa:"\f010"}.fa-power-off{--fa:"\f011"}.fa-signal,.fa-signal-5,.fa-signal-perfect{--fa:"\f012"}.fa-cog,.fa-gear{--fa:"\f013"}.fa-home,.fa-home-alt,.fa-home-lg-alt,.fa-house{--fa:"\f015"}.fa-clock,.fa-clock-four{--fa:"\f017"}.fa-road{--fa:"\f018"}.fa-download{--fa:"\f019"}.fa-inbox{--fa:"\f01c"}.fa-arrow-right-rotate,.fa-arrow-rotate-forward,.fa-arrow-rotate-right,.fa-redo{--fa:"\f01e"}.fa-arrows-rotate,.fa-refresh,.fa-sync{--fa:"\f021"}.fa-list-alt,.fa-rectangle-list{--fa:"\f022"}.fa-lock{--fa:"\f023"}.fa-flag{--fa:"\f024"}.fa-headphones,.fa-headphones-alt,.fa-headphones-simple{--fa:"\f025"}.fa-volume-off{--fa:"\f026"}.fa-volume-down,.fa-volume-low{--fa:"\f027"}.fa-volume-high,.fa-volume-up{--fa:"\f028"}.fa-qrcode{--fa:"\f029"}.fa-barcode{--fa:"\f02a"}.fa-tag{--fa:"\f02b"}.fa-tags{--fa:"\f02c"}.fa-book{--fa:"\f02d"}.fa-bookmark{--fa:"\f02e"}.fa-print{--fa:"\f02f"}.fa-camera,.fa-camera-alt{--fa:"\f030"}.fa-font{--fa:"\f031"}.fa-bold{--fa:"\f032"}.fa-italic{--fa:"\f033"}.fa-text-height{--fa:"\f034"}.fa-text-width{--fa:"\f035"}.fa-align-left{--fa:"\f036"}.fa-align-center{--fa:"\f037"}.fa-align-right{--fa:"\f038"}.fa-align-justify{--fa:"\f039"}.fa-list,.fa-list-squares{--fa:"\f03a"}.fa-dedent,.fa-outdent{--fa:"\f03b"}.fa-indent{--fa:"\f03c"}.fa-video,.fa-video-camera{--fa:"\f03d"}.fa-image{--fa:"\f03e"}.fa-location-pin,.fa-map-marker{--fa:"\f041"}.fa-adjust,.fa-circle-half-stroke{--fa:"\f042"}.fa-droplet,.fa-tint{--fa:"\f043"}.fa-edit,.fa-pen-to-square{--fa:"\f044"}.fa-arrows,.fa-arrows-up-down-left-right{--fa:"\f047"}.fa-backward-step,.fa-step-backward{--fa:"\f048"}.fa-backward-fast,.fa-fast-backward{--fa:"\f049"}.fa-backward{--fa:"\f04a"}.fa-play{--fa:"\f04b"}.fa-pause{--fa:"\f04c"}.fa-stop{--fa:"\f04d"}.fa-forward{--fa:"\f04e"}.fa-fast-forward,.fa-forward-fast{--fa:"\f050"}.fa-forward-step,.fa-step-forward{--fa:"\f051"}.fa-eject{--fa:"\f052"}.fa-chevron-left{--fa:"\f053"}.fa-chevron-right{--fa:"\f054"}.fa-circle-plus,.fa-plus-circle{--fa:"\f055"}.fa-circle-minus,.fa-minus-circle{--fa:"\f056"}.fa-circle-xmark,.fa-times-circle,.fa-xmark-circle{--fa:"\f057"}.fa-check-circle,.fa-circle-check{--fa:"\f058"}.fa-circle-question,.fa-question-circle{--fa:"\f059"}.fa-circle-info,.fa-info-circle{--fa:"\f05a"}.fa-crosshairs{--fa:"\f05b"}.fa-ban,.fa-cancel{--fa:"\f05e"}.fa-arrow-left{--fa:"\f060"}.fa-arrow-right{--fa:"\f061"}.fa-arrow-up{--fa:"\f062"}.fa-arrow-down{--fa:"\f063"}.fa-mail-forward,.fa-share{--fa:"\f064"}.fa-expand{--fa:"\f065"}.fa-compress{--fa:"\f066"}.fa-minus,.fa-subtract{--fa:"\f068"}.fa-circle-exclamation,.fa-exclamation-circle{--fa:"\f06a"}.fa-gift{--fa:"\f06b"}.fa-leaf{--fa:"\f06c"}.fa-fire{--fa:"\f06d"}.fa-eye{--fa:"\f06e"}.fa-eye-slash{--fa:"\f070"}.fa-exclamation-triangle,.fa-triangle-exclamation,.fa-warning{--fa:"\f071"}.fa-plane{--fa:"\f072"}.fa-calendar-alt,.fa-calendar-days{--fa:"\f073"}.fa-random,.fa-shuffle{--fa:"\f074"}.fa-comment{--fa:"\f075"}.fa-magnet{--fa:"\f076"}.fa-chevron-up{--fa:"\f077"}.fa-chevron-down{--fa:"\f078"}.fa-retweet{--fa:"\f079"}.fa-cart-shopping,.fa-shopping-cart{--fa:"\f07a"}.fa-folder,.fa-folder-blank{--fa:"\f07b"}.fa-folder-open{--fa:"\f07c"}.fa-arrows-up-down,.fa-arrows-v{--fa:"\f07d"}.fa-arrows-h,.fa-arrows-left-right{--fa:"\f07e"}.fa-bar-chart,.fa-chart-bar{--fa:"\f080"}.fa-camera-retro{--fa:"\f083"}.fa-key{--fa:"\f084"}.fa-cogs,.fa-gears{--fa:"\f085"}.fa-comments{--fa:"\f086"}.fa-star-half{--fa:"\f089"}.fa-arrow-right-from-bracket,.fa-sign-out{--fa:"\f08b"}.fa-thumb-tack,.fa-thumbtack{--fa:"\f08d"}.fa-arrow-up-right-from-square,.fa-external-link{--fa:"\f08e"}.fa-arrow-right-to-bracket,.fa-sign-in{--fa:"\f090"}.fa-trophy{--fa:"\f091"}.fa-upload{--fa:"\f093"}.fa-lemon{--fa:"\f094"}.fa-phone{--fa:"\f095"}.fa-phone-square,.fa-square-phone{--fa:"\f098"}.fa-unlock{--fa:"\f09c"}.fa-credit-card,.fa-credit-card-alt{--fa:"\f09d"}.fa-feed,.fa-rss{--fa:"\f09e"}.fa-hard-drive,.fa-hdd{--fa:"\f0a0"}.fa-bullhorn{--fa:"\f0a1"}.fa-certificate{--fa:"\f0a3"}.fa-hand-point-right{--fa:"\f0a4"}.fa-hand-point-left{--fa:"\f0a5"}.fa-hand-point-up{--fa:"\f0a6"}.fa-hand-point-down{--fa:"\f0a7"}.fa-arrow-circle-left,.fa-circle-arrow-left{--fa:"\f0a8"}.fa-arrow-circle-right,.fa-circle-arrow-right{--fa:"\f0a9"}.fa-arrow-circle-up,.fa-circle-arrow-up{--fa:"\f0aa"}.fa-arrow-circle-down,.fa-circle-arrow-down{--fa:"\f0ab"}.fa-globe{--fa:"\f0ac"}.fa-wrench{--fa:"\f0ad"}.fa-list-check,.fa-tasks{--fa:"\f0ae"}.fa-filter{--fa:"\f0b0"}.fa-briefcase{--fa:"\f0b1"}.fa-arrows-alt,.fa-up-down-left-right{--fa:"\f0b2"}.fa-users{--fa:"\f0c0"}.fa-chain,.fa-link{--fa:"\f0c1"}.fa-cloud{--fa:"\f0c2"}.fa-flask{--fa:"\f0c3"}.fa-cut,.fa-scissors{--fa:"\f0c4"}.fa-copy{--fa:"\f0c5"}.fa-paperclip{--fa:"\f0c6"}.fa-floppy-disk,.fa-save{--fa:"\f0c7"}.fa-square{--fa:"\f0c8"}.fa-bars,.fa-navicon{--fa:"\f0c9"}.fa-list-dots,.fa-list-ul{--fa:"\f0ca"}.fa-list-1-2,.fa-list-numeric,.fa-list-ol{--fa:"\f0cb"}.fa-strikethrough{--fa:"\f0cc"}.fa-underline{--fa:"\f0cd"}.fa-table{--fa:"\f0ce"}.fa-magic,.fa-wand-magic{--fa:"\f0d0"}.fa-truck{--fa:"\f0d1"}.fa-money-bill{--fa:"\f0d6"}.fa-caret-down{--fa:"\f0d7"}.fa-caret-up{--fa:"\f0d8"}.fa-caret-left{--fa:"\f0d9"}.fa-caret-right{--fa:"\f0da"}.fa-columns,.fa-table-columns{--fa:"\f0db"}.fa-sort,.fa-unsorted{--fa:"\f0dc"}.fa-sort-desc,.fa-sort-down{--fa:"\f0dd"}.fa-sort-asc,.fa-sort-up{--fa:"\f0de"}.fa-envelope{--fa:"\f0e0"}.fa-arrow-left-rotate,.fa-arrow-rotate-back,.fa-arrow-rotate-backward,.fa-arrow-rotate-left,.fa-undo{--fa:"\f0e2"}.fa-gavel,.fa-legal{--fa:"\f0e3"}.fa-bolt,.fa-zap{--fa:"\f0e7"}.fa-sitemap{--fa:"\f0e8"}.fa-umbrella{--fa:"\f0e9"}.fa-file-clipboard,.fa-paste{--fa:"\f0ea"}.fa-lightbulb{--fa:"\f0eb"}.fa-arrow-right-arrow-left,.fa-exchange{--fa:"\f0ec"}.fa-cloud-arrow-down,.fa-cloud-download,.fa-cloud-download-alt{--fa:"\f0ed"}.fa-cloud-arrow-up,.fa-cloud-upload,.fa-cloud-upload-alt{--fa:"\f0ee"}.fa-user-doctor,.fa-user-md{--fa:"\f0f0"}.fa-stethoscope{--fa:"\f0f1"}.fa-suitcase{--fa:"\f0f2"}.fa-bell{--fa:"\f0f3"}.fa-coffee,.fa-mug-saucer{--fa:"\f0f4"}.fa-hospital,.fa-hospital-alt,.fa-hospital-wide{--fa:"\f0f8"}.fa-ambulance,.fa-truck-medical{--fa:"\f0f9"}.fa-medkit,.fa-suitcase-medical{--fa:"\f0fa"}.fa-fighter-jet,.fa-jet-fighter{--fa:"\f0fb"}.fa-beer,.fa-beer-mug-empty{--fa:"\f0fc"}.fa-h-square,.fa-square-h{--fa:"\f0fd"}.fa-plus-square,.fa-square-plus{--fa:"\f0fe"}.fa-angle-double-left,.fa-angles-left{--fa:"\f100"}.fa-angle-double-right,.fa-angles-right{--fa:"\f101"}.fa-angle-double-up,.fa-angles-up{--fa:"\f102"}.fa-angle-double-down,.fa-angles-down{--fa:"\f103"}.fa-angle-left{--fa:"\f104"}.fa-angle-right{--fa:"\f105"}.fa-angle-up{--fa:"\f106"}.fa-angle-down{--fa:"\f107"}.fa-laptop{--fa:"\f109"}.fa-tablet-button{--fa:"\f10a"}.fa-mobile-button{--fa:"\f10b"}.fa-quote-left,.fa-quote-left-alt{--fa:"\f10d"}.fa-quote-right,.fa-quote-right-alt{--fa:"\f10e"}.fa-spinner{--fa:"\f110"}.fa-circle{--fa:"\f111"}.fa-face-smile,.fa-smile{--fa:"\f118"}.fa-face-frown,.fa-frown{--fa:"\f119"}.fa-face-meh,.fa-meh{--fa:"\f11a"}.fa-gamepad{--fa:"\f11b"}.fa-keyboard{--fa:"\f11c"}.fa-flag-checkered{--fa:"\f11e"}.fa-terminal{--fa:"\f120"}.fa-code{--fa:"\f121"}.fa-mail-reply-all,.fa-reply-all{--fa:"\f122"}.fa-location-arrow{--fa:"\f124"}.fa-crop{--fa:"\f125"}.fa-code-branch{--fa:"\f126"}.fa-chain-broken,.fa-chain-slash,.fa-link-slash,.fa-unlink{--fa:"\f127"}.fa-info{--fa:"\f129"}.fa-superscript{--fa:"\f12b"}.fa-subscript{--fa:"\f12c"}.fa-eraser{--fa:"\f12d"}.fa-puzzle-piece{--fa:"\f12e"}.fa-microphone{--fa:"\f130"}.fa-microphone-slash{--fa:"\f131"}.fa-shield,.fa-shield-blank{--fa:"\f132"}.fa-calendar{--fa:"\f133"}.fa-fire-extinguisher{--fa:"\f134"}.fa-rocket{--fa:"\f135"}.fa-chevron-circle-left,.fa-circle-chevron-left{--fa:"\f137"}.fa-chevron-circle-right,.fa-circle-chevron-right{--fa:"\f138"}.fa-chevron-circle-up,.fa-circle-chevron-up{--fa:"\f139"}.fa-chevron-circle-down,.fa-circle-chevron-down{--fa:"\f13a"}.fa-anchor{--fa:"\f13d"}.fa-unlock-alt,.fa-unlock-keyhole{--fa:"\f13e"}.fa-bullseye{--fa:"\f140"}.fa-ellipsis,.fa-ellipsis-h{--fa:"\f141"}.fa-ellipsis-v,.fa-ellipsis-vertical{--fa:"\f142"}.fa-rss-square,.fa-square-rss{--fa:"\f143"}.fa-circle-play,.fa-play-circle{--fa:"\f144"}.fa-ticket{--fa:"\f145"}.fa-minus-square,.fa-square-minus{--fa:"\f146"}.fa-arrow-turn-up,.fa-level-up{--fa:"\f148"}.fa-arrow-turn-down,.fa-level-down{--fa:"\f149"}.fa-check-square,.fa-square-check{--fa:"\f14a"}.fa-pen-square,.fa-pencil-square,.fa-square-pen{--fa:"\f14b"}.fa-external-link-square,.fa-square-arrow-up-right{--fa:"\f14c"}.fa-share-from-square,.fa-share-square{--fa:"\f14d"}.fa-compass{--fa:"\f14e"}.fa-caret-square-down,.fa-square-caret-down{--fa:"\f150"}.fa-caret-square-up,.fa-square-caret-up{--fa:"\f151"}.fa-caret-square-right,.fa-square-caret-right{--fa:"\f152"}.fa-eur,.fa-euro,.fa-euro-sign{--fa:"\f153"}.fa-gbp,.fa-pound-sign,.fa-sterling-sign{--fa:"\f154"}.fa-rupee,.fa-rupee-sign{--fa:"\f156"}.fa-cny,.fa-jpy,.fa-rmb,.fa-yen,.fa-yen-sign{--fa:"\f157"}.fa-rouble,.fa-rub,.fa-ruble,.fa-ruble-sign{--fa:"\f158"}.fa-krw,.fa-won,.fa-won-sign{--fa:"\f159"}.fa-file{--fa:"\f15b"}.fa-file-alt,.fa-file-lines,.fa-file-text{--fa:"\f15c"}.fa-arrow-down-a-z,.fa-sort-alpha-asc,.fa-sort-alpha-down{--fa:"\f15d"}.fa-arrow-up-a-z,.fa-sort-alpha-up{--fa:"\f15e"}.fa-arrow-down-wide-short,.fa-sort-amount-asc,.fa-sort-amount-down{--fa:"\f160"}.fa-arrow-up-wide-short,.fa-sort-amount-up{--fa:"\f161"}.fa-arrow-down-1-9,.fa-sort-numeric-asc,.fa-sort-numeric-down{--fa:"\f162"}.fa-arrow-up-1-9,.fa-sort-numeric-up{--fa:"\f163"}.fa-thumbs-up{--fa:"\f164"}.fa-thumbs-down{--fa:"\f165"}.fa-arrow-down-long,.fa-long-arrow-down{--fa:"\f175"}.fa-arrow-up-long,.fa-long-arrow-up{--fa:"\f176"}.fa-arrow-left-long,.fa-long-arrow-left{--fa:"\f177"}.fa-arrow-right-long,.fa-long-arrow-right{--fa:"\f178"}.fa-female,.fa-person-dress{--fa:"\f182"}.fa-male,.fa-person{--fa:"\f183"}.fa-sun{--fa:"\f185"}.fa-moon{--fa:"\f186"}.fa-archive,.fa-box-archive{--fa:"\f187"}.fa-bug{--fa:"\f188"}.fa-caret-square-left,.fa-square-caret-left{--fa:"\f191"}.fa-circle-dot,.fa-dot-circle{--fa:"\f192"}.fa-wheelchair{--fa:"\f193"}.fa-lira-sign{--fa:"\f195"}.fa-shuttle-space,.fa-space-shuttle{--fa:"\f197"}.fa-envelope-square,.fa-square-envelope{--fa:"\f199"}.fa-bank,.fa-building-columns,.fa-institution,.fa-museum,.fa-university{--fa:"\f19c"}.fa-graduation-cap,.fa-mortar-board{--fa:"\f19d"}.fa-language{--fa:"\f1ab"}.fa-fax{--fa:"\f1ac"}.fa-building{--fa:"\f1ad"}.fa-child{--fa:"\f1ae"}.fa-paw{--fa:"\f1b0"}.fa-cube{--fa:"\f1b2"}.fa-cubes{--fa:"\f1b3"}.fa-recycle{--fa:"\f1b8"}.fa-automobile,.fa-car{--fa:"\f1b9"}.fa-cab,.fa-taxi{--fa:"\f1ba"}.fa-tree{--fa:"\f1bb"}.fa-database{--fa:"\f1c0"}.fa-file-pdf{--fa:"\f1c1"}.fa-file-word{--fa:"\f1c2"}.fa-file-excel{--fa:"\f1c3"}.fa-file-powerpoint{--fa:"\f1c4"}.fa-file-image{--fa:"\f1c5"}.fa-file-archive,.fa-file-zipper{--fa:"\f1c6"}.fa-file-audio{--fa:"\f1c7"}.fa-file-video{--fa:"\f1c8"}.fa-file-code{--fa:"\f1c9"}.fa-life-ring{--fa:"\f1cd"}.fa-circle-notch{--fa:"\f1ce"}.fa-paper-plane{--fa:"\f1d8"}.fa-clock-rotate-left,.fa-history{--fa:"\f1da"}.fa-header,.fa-heading{--fa:"\f1dc"}.fa-paragraph{--fa:"\f1dd"}.fa-sliders,.fa-sliders-h{--fa:"\f1de"}.fa-share-alt,.fa-share-nodes{--fa:"\f1e0"}.fa-share-alt-square,.fa-square-share-nodes{--fa:"\f1e1"}.fa-bomb{--fa:"\f1e2"}.fa-futbol,.fa-futbol-ball,.fa-soccer-ball{--fa:"\f1e3"}.fa-teletype,.fa-tty{--fa:"\f1e4"}.fa-binoculars{--fa:"\f1e5"}.fa-plug{--fa:"\f1e6"}.fa-newspaper{--fa:"\f1ea"}.fa-wifi,.fa-wifi-3,.fa-wifi-strong{--fa:"\f1eb"}.fa-calculator{--fa:"\f1ec"}.fa-bell-slash{--fa:"\f1f6"}.fa-trash{--fa:"\f1f8"}.fa-copyright{--fa:"\f1f9"}.fa-eye-dropper,.fa-eye-dropper-empty,.fa-eyedropper{--fa:"\f1fb"}.fa-paint-brush,.fa-paintbrush{--fa:"\f1fc"}.fa-birthday-cake,.fa-cake,.fa-cake-candles{--fa:"\f1fd"}.fa-area-chart,.fa-chart-area{--fa:"\f1fe"}.fa-chart-pie,.fa-pie-chart{--fa:"\f200"}.fa-chart-line,.fa-line-chart{--fa:"\f201"}.fa-toggle-off{--fa:"\f204"}.fa-toggle-on{--fa:"\f205"}.fa-bicycle{--fa:"\f206"}.fa-bus{--fa:"\f207"}.fa-closed-captioning{--fa:"\f20a"}.fa-ils,.fa-shekel,.fa-shekel-sign,.fa-sheqel,.fa-sheqel-sign{--fa:"\f20b"}.fa-cart-plus{--fa:"\f217"}.fa-cart-arrow-down{--fa:"\f218"}.fa-diamond{--fa:"\f219"}.fa-ship{--fa:"\f21a"}.fa-user-secret{--fa:"\f21b"}.fa-motorcycle{--fa:"\f21c"}.fa-street-view{--fa:"\f21d"}.fa-heart-pulse,.fa-heartbeat{--fa:"\f21e"}.fa-venus{--fa:"\f221"}.fa-mars{--fa:"\f222"}.fa-mercury{--fa:"\f223"}.fa-mars-and-venus{--fa:"\f224"}.fa-transgender,.fa-transgender-alt{--fa:"\f225"}.fa-venus-double{--fa:"\f226"}.fa-mars-double{--fa:"\f227"}.fa-venus-mars{--fa:"\f228"}.fa-mars-stroke{--fa:"\f229"}.fa-mars-stroke-up,.fa-mars-stroke-v{--fa:"\f22a"}.fa-mars-stroke-h,.fa-mars-stroke-right{--fa:"\f22b"}.fa-neuter{--fa:"\f22c"}.fa-genderless{--fa:"\f22d"}.fa-server{--fa:"\f233"}.fa-user-plus{--fa:"\f234"}.fa-user-times,.fa-user-xmark{--fa:"\f235"}.fa-bed{--fa:"\f236"}.fa-train{--fa:"\f238"}.fa-subway,.fa-train-subway{--fa:"\f239"}.fa-battery,.fa-battery-5,.fa-battery-full{--fa:"\f240"}.fa-battery-4,.fa-battery-three-quarters{--fa:"\f241"}.fa-battery-3,.fa-battery-half{--fa:"\f242"}.fa-battery-2,.fa-battery-quarter{--fa:"\f243"}.fa-battery-0,.fa-battery-empty{--fa:"\f244"}.fa-arrow-pointer,.fa-mouse-pointer{--fa:"\f245"}.fa-i-cursor{--fa:"\f246"}.fa-object-group{--fa:"\f247"}.fa-object-ungroup{--fa:"\f248"}.fa-note-sticky,.fa-sticky-note{--fa:"\f249"}.fa-clone{--fa:"\f24d"}.fa-balance-scale,.fa-scale-balanced{--fa:"\f24e"}.fa-hourglass-1,.fa-hourglass-start{--fa:"\f251"}.fa-hourglass-2,.fa-hourglass-half{--fa:"\f252"}.fa-hourglass-3,.fa-hourglass-end{--fa:"\f253"}.fa-hourglass,.fa-hourglass-empty{--fa:"\f254"}.fa-hand-back-fist,.fa-hand-rock{--fa:"\f255"}.fa-hand,.fa-hand-paper{--fa:"\f256"}.fa-hand-scissors{--fa:"\f257"}.fa-hand-lizard{--fa:"\f258"}.fa-hand-spock{--fa:"\f259"}.fa-hand-pointer{--fa:"\f25a"}.fa-hand-peace{--fa:"\f25b"}.fa-trademark{--fa:"\f25c"}.fa-registered{--fa:"\f25d"}.fa-television,.fa-tv,.fa-tv-alt{--fa:"\f26c"}.fa-calendar-plus{--fa:"\f271"}.fa-calendar-minus{--fa:"\f272"}.fa-calendar-times,.fa-calendar-xmark{--fa:"\f273"}.fa-calendar-check{--fa:"\f274"}.fa-industry{--fa:"\f275"}.fa-map-pin{--fa:"\f276"}.fa-map-signs,.fa-signs-post{--fa:"\f277"}.fa-map{--fa:"\f279"}.fa-comment-alt,.fa-message{--fa:"\f27a"}.fa-circle-pause,.fa-pause-circle{--fa:"\f28b"}.fa-circle-stop,.fa-stop-circle{--fa:"\f28d"}.fa-bag-shopping,.fa-shopping-bag{--fa:"\f290"}.fa-basket-shopping,.fa-shopping-basket{--fa:"\f291"}.fa-universal-access{--fa:"\f29a"}.fa-blind,.fa-person-walking-with-cane{--fa:"\f29d"}.fa-audio-description{--fa:"\f29e"}.fa-phone-volume,.fa-volume-control-phone{--fa:"\f2a0"}.fa-braille{--fa:"\f2a1"}.fa-assistive-listening-systems,.fa-ear-listen{--fa:"\f2a2"}.fa-american-sign-language-interpreting,.fa-asl-interpreting,.fa-hands-american-sign-language-interpreting,.fa-hands-asl-interpreting{--fa:"\f2a3"}.fa-deaf,.fa-deafness,.fa-ear-deaf,.fa-hard-of-hearing{--fa:"\f2a4"}.fa-hands,.fa-sign-language,.fa-signing{--fa:"\f2a7"}.fa-eye-low-vision,.fa-low-vision{--fa:"\f2a8"}.fa-handshake,.fa-handshake-alt,.fa-handshake-simple{--fa:"\f2b5"}.fa-envelope-open{--fa:"\f2b6"}.fa-address-book,.fa-contact-book{--fa:"\f2b9"}.fa-address-card,.fa-contact-card,.fa-vcard{--fa:"\f2bb"}.fa-circle-user,.fa-user-circle{--fa:"\f2bd"}.fa-id-badge{--fa:"\f2c1"}.fa-drivers-license,.fa-id-card{--fa:"\f2c2"}.fa-temperature-4,.fa-temperature-full,.fa-thermometer-4,.fa-thermometer-full{--fa:"\f2c7"}.fa-temperature-3,.fa-temperature-three-quarters,.fa-thermometer-3,.fa-thermometer-three-quarters{--fa:"\f2c8"}.fa-temperature-2,.fa-temperature-half,.fa-thermometer-2,.fa-thermometer-half{--fa:"\f2c9"}.fa-temperature-1,.fa-temperature-quarter,.fa-thermometer-1,.fa-thermometer-quarter{--fa:"\f2ca"}.fa-temperature-0,.fa-temperature-empty,.fa-thermometer-0,.fa-thermometer-empty{--fa:"\f2cb"}.fa-shower{--fa:"\f2cc"}.fa-bath,.fa-bathtub{--fa:"\f2cd"}.fa-podcast{--fa:"\f2ce"}.fa-window-maximize{--fa:"\f2d0"}.fa-window-minimize{--fa:"\f2d1"}.fa-window-restore{--fa:"\f2d2"}.fa-square-xmark,.fa-times-square,.fa-xmark-square{--fa:"\f2d3"}.fa-microchip{--fa:"\f2db"}.fa-snowflake{--fa:"\f2dc"}.fa-spoon,.fa-utensil-spoon{--fa:"\f2e5"}.fa-cutlery,.fa-utensils{--fa:"\f2e7"}.fa-rotate-back,.fa-rotate-backward,.fa-rotate-left,.fa-undo-alt{--fa:"\f2ea"}.fa-trash-alt,.fa-trash-can{--fa:"\f2ed"}.fa-rotate,.fa-sync-alt{--fa:"\f2f1"}.fa-stopwatch{--fa:"\f2f2"}.fa-right-from-bracket,.fa-sign-out-alt{--fa:"\f2f5"}.fa-right-to-bracket,.fa-sign-in-alt{--fa:"\f2f6"}.fa-redo-alt,.fa-rotate-forward,.fa-rotate-right{--fa:"\f2f9"}.fa-poo{--fa:"\f2fe"}.fa-images{--fa:"\f302"}.fa-pencil,.fa-pencil-alt{--fa:"\f303"}.fa-pen{--fa:"\f304"}.fa-pen-alt,.fa-pen-clip{--fa:"\f305"}.fa-octagon{--fa:"\f306"}.fa-down-long,.fa-long-arrow-alt-down{--fa:"\f309"}.fa-left-long,.fa-long-arrow-alt-left{--fa:"\f30a"}.fa-long-arrow-alt-right,.fa-right-long{--fa:"\f30b"}.fa-long-arrow-alt-up,.fa-up-long{--fa:"\f30c"}.fa-hexagon{--fa:"\f312"}.fa-file-edit,.fa-file-pen{--fa:"\f31c"}.fa-expand-arrows-alt,.fa-maximize{--fa:"\f31e"}.fa-clipboard{--fa:"\f328"}.fa-arrows-alt-h,.fa-left-right{--fa:"\f337"}.fa-arrows-alt-v,.fa-up-down{--fa:"\f338"}.fa-alarm-clock{--fa:"\f34e"}.fa-arrow-alt-circle-down,.fa-circle-down{--fa:"\f358"}.fa-arrow-alt-circle-left,.fa-circle-left{--fa:"\f359"}.fa-arrow-alt-circle-right,.fa-circle-right{--fa:"\f35a"}.fa-arrow-alt-circle-up,.fa-circle-up{--fa:"\f35b"}.fa-external-link-alt,.fa-up-right-from-square{--fa:"\f35d"}.fa-external-link-square-alt,.fa-square-up-right{--fa:"\f360"}.fa-exchange-alt,.fa-right-left{--fa:"\f362"}.fa-repeat{--fa:"\f363"}.fa-code-commit{--fa:"\f386"}.fa-code-merge{--fa:"\f387"}.fa-desktop,.fa-desktop-alt{--fa:"\f390"}.fa-gem{--fa:"\f3a5"}.fa-level-down-alt,.fa-turn-down{--fa:"\f3be"}.fa-level-up-alt,.fa-turn-up{--fa:"\f3bf"}.fa-lock-open{--fa:"\f3c1"}.fa-location-dot,.fa-map-marker-alt{--fa:"\f3c5"}.fa-microphone-alt,.fa-microphone-lines{--fa:"\f3c9"}.fa-mobile-alt,.fa-mobile-screen-button{--fa:"\f3cd"}.fa-mobile,.fa-mobile-android,.fa-mobile-phone{--fa:"\f3ce"}.fa-mobile-android-alt,.fa-mobile-screen{--fa:"\f3cf"}.fa-money-bill-1,.fa-money-bill-alt{--fa:"\f3d1"}.fa-phone-slash{--fa:"\f3dd"}.fa-image-portrait,.fa-portrait{--fa:"\f3e0"}.fa-mail-reply,.fa-reply{--fa:"\f3e5"}.fa-shield-alt,.fa-shield-halved{--fa:"\f3ed"}.fa-tablet-alt,.fa-tablet-screen-button{--fa:"\f3fa"}.fa-tablet,.fa-tablet-android{--fa:"\f3fb"}.fa-ticket-alt,.fa-ticket-simple{--fa:"\f3ff"}.fa-rectangle-times,.fa-rectangle-xmark,.fa-times-rectangle,.fa-window-close{--fa:"\f410"}.fa-compress-alt,.fa-down-left-and-up-right-to-center{--fa:"\f422"}.fa-expand-alt,.fa-up-right-and-down-left-from-center{--fa:"\f424"}.fa-baseball-bat-ball{--fa:"\f432"}.fa-baseball,.fa-baseball-ball{--fa:"\f433"}.fa-basketball,.fa-basketball-ball{--fa:"\f434"}.fa-bowling-ball{--fa:"\f436"}.fa-chess{--fa:"\f439"}.fa-chess-bishop{--fa:"\f43a"}.fa-chess-board{--fa:"\f43c"}.fa-chess-king{--fa:"\f43f"}.fa-chess-knight{--fa:"\f441"}.fa-chess-pawn{--fa:"\f443"}.fa-chess-queen{--fa:"\f445"}.fa-chess-rook{--fa:"\f447"}.fa-dumbbell{--fa:"\f44b"}.fa-football,.fa-football-ball{--fa:"\f44e"}.fa-golf-ball,.fa-golf-ball-tee{--fa:"\f450"}.fa-hockey-puck{--fa:"\f453"}.fa-broom-ball,.fa-quidditch,.fa-quidditch-broom-ball{--fa:"\f458"}.fa-square-full{--fa:"\f45c"}.fa-ping-pong-paddle-ball,.fa-table-tennis,.fa-table-tennis-paddle-ball{--fa:"\f45d"}.fa-volleyball,.fa-volleyball-ball{--fa:"\f45f"}.fa-allergies,.fa-hand-dots{--fa:"\f461"}.fa-band-aid,.fa-bandage{--fa:"\f462"}.fa-box{--fa:"\f466"}.fa-boxes,.fa-boxes-alt,.fa-boxes-stacked{--fa:"\f468"}.fa-briefcase-medical{--fa:"\f469"}.fa-burn,.fa-fire-flame-simple{--fa:"\f46a"}.fa-capsules{--fa:"\f46b"}.fa-clipboard-check{--fa:"\f46c"}.fa-clipboard-list{--fa:"\f46d"}.fa-diagnoses,.fa-person-dots-from-line{--fa:"\f470"}.fa-dna{--fa:"\f471"}.fa-dolly,.fa-dolly-box{--fa:"\f472"}.fa-cart-flatbed,.fa-dolly-flatbed{--fa:"\f474"}.fa-file-medical{--fa:"\f477"}.fa-file-medical-alt,.fa-file-waveform{--fa:"\f478"}.fa-first-aid,.fa-kit-medical{--fa:"\f479"}.fa-circle-h,.fa-hospital-symbol{--fa:"\f47e"}.fa-id-card-alt,.fa-id-card-clip{--fa:"\f47f"}.fa-notes-medical{--fa:"\f481"}.fa-pallet{--fa:"\f482"}.fa-pills{--fa:"\f484"}.fa-prescription-bottle{--fa:"\f485"}.fa-prescription-bottle-alt,.fa-prescription-bottle-medical{--fa:"\f486"}.fa-bed-pulse,.fa-procedures{--fa:"\f487"}.fa-shipping-fast,.fa-truck-fast{--fa:"\f48b"}.fa-smoking{--fa:"\f48d"}.fa-syringe{--fa:"\f48e"}.fa-tablets{--fa:"\f490"}.fa-thermometer{--fa:"\f491"}.fa-vial{--fa:"\f492"}.fa-vials{--fa:"\f493"}.fa-warehouse{--fa:"\f494"}.fa-weight,.fa-weight-scale{--fa:"\f496"}.fa-x-ray{--fa:"\f497"}.fa-box-open{--fa:"\f49e"}.fa-comment-dots,.fa-commenting{--fa:"\f4ad"}.fa-comment-slash{--fa:"\f4b3"}.fa-couch{--fa:"\f4b8"}.fa-circle-dollar-to-slot,.fa-donate{--fa:"\f4b9"}.fa-dove{--fa:"\f4ba"}.fa-hand-holding{--fa:"\f4bd"}.fa-hand-holding-heart{--fa:"\f4be"}.fa-hand-holding-dollar,.fa-hand-holding-usd{--fa:"\f4c0"}.fa-hand-holding-droplet,.fa-hand-holding-water{--fa:"\f4c1"}.fa-hands-holding{--fa:"\f4c2"}.fa-hands-helping,.fa-handshake-angle{--fa:"\f4c4"}.fa-parachute-box{--fa:"\f4cd"}.fa-people-carry,.fa-people-carry-box{--fa:"\f4ce"}.fa-piggy-bank{--fa:"\f4d3"}.fa-ribbon{--fa:"\f4d6"}.fa-route{--fa:"\f4d7"}.fa-seedling,.fa-sprout{--fa:"\f4d8"}.fa-sign,.fa-sign-hanging{--fa:"\f4d9"}.fa-face-smile-wink,.fa-smile-wink{--fa:"\f4da"}.fa-tape{--fa:"\f4db"}.fa-truck-loading,.fa-truck-ramp-box{--fa:"\f4de"}.fa-truck-moving{--fa:"\f4df"}.fa-video-slash{--fa:"\f4e2"}.fa-wine-glass{--fa:"\f4e3"}.fa-user-astronaut{--fa:"\f4fb"}.fa-user-check{--fa:"\f4fc"}.fa-user-clock{--fa:"\f4fd"}.fa-user-cog,.fa-user-gear{--fa:"\f4fe"}.fa-user-edit,.fa-user-pen{--fa:"\f4ff"}.fa-user-friends,.fa-user-group{--fa:"\f500"}.fa-user-graduate{--fa:"\f501"}.fa-user-lock{--fa:"\f502"}.fa-user-minus{--fa:"\f503"}.fa-user-ninja{--fa:"\f504"}.fa-user-shield{--fa:"\f505"}.fa-user-alt-slash,.fa-user-large-slash,.fa-user-slash{--fa:"\f506"}.fa-user-tag{--fa:"\f507"}.fa-user-tie{--fa:"\f508"}.fa-users-cog,.fa-users-gear{--fa:"\f509"}.fa-balance-scale-left,.fa-scale-unbalanced{--fa:"\f515"}.fa-balance-scale-right,.fa-scale-unbalanced-flip{--fa:"\f516"}.fa-blender{--fa:"\f517"}.fa-book-open{--fa:"\f518"}.fa-broadcast-tower,.fa-tower-broadcast{--fa:"\f519"}.fa-broom{--fa:"\f51a"}.fa-blackboard,.fa-chalkboard{--fa:"\f51b"}.fa-chalkboard-teacher,.fa-chalkboard-user{--fa:"\f51c"}.fa-church{--fa:"\f51d"}.fa-coins{--fa:"\f51e"}.fa-compact-disc{--fa:"\f51f"}.fa-crow{--fa:"\f520"}.fa-crown{--fa:"\f521"}.fa-dice{--fa:"\f522"}.fa-dice-five{--fa:"\f523"}.fa-dice-four{--fa:"\f524"}.fa-dice-one{--fa:"\f525"}.fa-dice-six{--fa:"\f526"}.fa-dice-three{--fa:"\f527"}.fa-dice-two{--fa:"\f528"}.fa-divide{--fa:"\f529"}.fa-door-closed{--fa:"\f52a"}.fa-door-open{--fa:"\f52b"}.fa-feather{--fa:"\f52d"}.fa-frog{--fa:"\f52e"}.fa-gas-pump{--fa:"\f52f"}.fa-glasses{--fa:"\f530"}.fa-greater-than-equal{--fa:"\f532"}.fa-helicopter{--fa:"\f533"}.fa-infinity{--fa:"\f534"}.fa-kiwi-bird{--fa:"\f535"}.fa-less-than-equal{--fa:"\f537"}.fa-memory{--fa:"\f538"}.fa-microphone-alt-slash,.fa-microphone-lines-slash{--fa:"\f539"}.fa-money-bill-wave{--fa:"\f53a"}.fa-money-bill-1-wave,.fa-money-bill-wave-alt{--fa:"\f53b"}.fa-money-check{--fa:"\f53c"}.fa-money-check-alt,.fa-money-check-dollar{--fa:"\f53d"}.fa-not-equal{--fa:"\f53e"}.fa-palette{--fa:"\f53f"}.fa-parking,.fa-square-parking{--fa:"\f540"}.fa-diagram-project,.fa-project-diagram{--fa:"\f542"}.fa-receipt{--fa:"\f543"}.fa-robot{--fa:"\f544"}.fa-ruler{--fa:"\f545"}.fa-ruler-combined{--fa:"\f546"}.fa-ruler-horizontal{--fa:"\f547"}.fa-ruler-vertical{--fa:"\f548"}.fa-school{--fa:"\f549"}.fa-screwdriver{--fa:"\f54a"}.fa-shoe-prints{--fa:"\f54b"}.fa-skull{--fa:"\f54c"}.fa-ban-smoking,.fa-smoking-ban{--fa:"\f54d"}.fa-store{--fa:"\f54e"}.fa-shop,.fa-store-alt{--fa:"\f54f"}.fa-bars-staggered,.fa-reorder,.fa-stream{--fa:"\f550"}.fa-stroopwafel{--fa:"\f551"}.fa-toolbox{--fa:"\f552"}.fa-shirt,.fa-t-shirt,.fa-tshirt{--fa:"\f553"}.fa-person-walking,.fa-walking{--fa:"\f554"}.fa-wallet{--fa:"\f555"}.fa-angry,.fa-face-angry{--fa:"\f556"}.fa-archway{--fa:"\f557"}.fa-atlas,.fa-book-atlas{--fa:"\f558"}.fa-award{--fa:"\f559"}.fa-backspace,.fa-delete-left{--fa:"\f55a"}.fa-bezier-curve{--fa:"\f55b"}.fa-bong{--fa:"\f55c"}.fa-brush{--fa:"\f55d"}.fa-bus-alt,.fa-bus-simple{--fa:"\f55e"}.fa-cannabis{--fa:"\f55f"}.fa-check-double{--fa:"\f560"}.fa-cocktail,.fa-martini-glass-citrus{--fa:"\f561"}.fa-bell-concierge,.fa-concierge-bell{--fa:"\f562"}.fa-cookie{--fa:"\f563"}.fa-cookie-bite{--fa:"\f564"}.fa-crop-alt,.fa-crop-simple{--fa:"\f565"}.fa-digital-tachograph,.fa-tachograph-digital{--fa:"\f566"}.fa-dizzy,.fa-face-dizzy{--fa:"\f567"}.fa-compass-drafting,.fa-drafting-compass{--fa:"\f568"}.fa-drum{--fa:"\f569"}.fa-drum-steelpan{--fa:"\f56a"}.fa-feather-alt,.fa-feather-pointed{--fa:"\f56b"}.fa-file-contract{--fa:"\f56c"}.fa-file-arrow-down,.fa-file-download{--fa:"\f56d"}.fa-arrow-right-from-file,.fa-file-export{--fa:"\f56e"}.fa-arrow-right-to-file,.fa-file-import{--fa:"\f56f"}.fa-file-invoice{--fa:"\f570"}.fa-file-invoice-dollar{--fa:"\f571"}.fa-file-prescription{--fa:"\f572"}.fa-file-signature{--fa:"\f573"}.fa-file-arrow-up,.fa-file-upload{--fa:"\f574"}.fa-fill{--fa:"\f575"}.fa-fill-drip{--fa:"\f576"}.fa-fingerprint{--fa:"\f577"}.fa-fish{--fa:"\f578"}.fa-face-flushed,.fa-flushed{--fa:"\f579"}.fa-face-frown-open,.fa-frown-open{--fa:"\f57a"}.fa-glass-martini-alt,.fa-martini-glass{--fa:"\f57b"}.fa-earth-africa,.fa-globe-africa{--fa:"\f57c"}.fa-earth,.fa-earth-america,.fa-earth-americas,.fa-globe-americas{--fa:"\f57d"}.fa-earth-asia,.fa-globe-asia{--fa:"\f57e"}.fa-face-grimace,.fa-grimace{--fa:"\f57f"}.fa-face-grin,.fa-grin{--fa:"\f580"}.fa-face-grin-wide,.fa-grin-alt{--fa:"\f581"}.fa-face-grin-beam,.fa-grin-beam{--fa:"\f582"}.fa-face-grin-beam-sweat,.fa-grin-beam-sweat{--fa:"\f583"}.fa-face-grin-hearts,.fa-grin-hearts{--fa:"\f584"}.fa-face-grin-squint,.fa-grin-squint{--fa:"\f585"}.fa-face-grin-squint-tears,.fa-grin-squint-tears{--fa:"\f586"}.fa-face-grin-stars,.fa-grin-stars{--fa:"\f587"}.fa-face-grin-tears,.fa-grin-tears{--fa:"\f588"}.fa-face-grin-tongue,.fa-grin-tongue{--fa:"\f589"}.fa-face-grin-tongue-squint,.fa-grin-tongue-squint{--fa:"\f58a"}.fa-face-grin-tongue-wink,.fa-grin-tongue-wink{--fa:"\f58b"}.fa-face-grin-wink,.fa-grin-wink{--fa:"\f58c"}.fa-grid-horizontal,.fa-grip,.fa-grip-horizontal{--fa:"\f58d"}.fa-grid-vertical,.fa-grip-vertical{--fa:"\f58e"}.fa-headset{--fa:"\f590"}.fa-highlighter{--fa:"\f591"}.fa-hot-tub,.fa-hot-tub-person{--fa:"\f593"}.fa-hotel{--fa:"\f594"}.fa-joint{--fa:"\f595"}.fa-face-kiss,.fa-kiss{--fa:"\f596"}.fa-face-kiss-beam,.fa-kiss-beam{--fa:"\f597"}.fa-face-kiss-wink-heart,.fa-kiss-wink-heart{--fa:"\f598"}.fa-face-laugh,.fa-laugh{--fa:"\f599"}.fa-face-laugh-beam,.fa-laugh-beam{--fa:"\f59a"}.fa-face-laugh-squint,.fa-laugh-squint{--fa:"\f59b"}.fa-face-laugh-wink,.fa-laugh-wink{--fa:"\f59c"}.fa-cart-flatbed-suitcase,.fa-luggage-cart{--fa:"\f59d"}.fa-map-location,.fa-map-marked{--fa:"\f59f"}.fa-map-location-dot,.fa-map-marked-alt{--fa:"\f5a0"}.fa-marker{--fa:"\f5a1"}.fa-medal{--fa:"\f5a2"}.fa-face-meh-blank,.fa-meh-blank{--fa:"\f5a4"}.fa-face-rolling-eyes,.fa-meh-rolling-eyes{--fa:"\f5a5"}.fa-monument{--fa:"\f5a6"}.fa-mortar-pestle{--fa:"\f5a7"}.fa-paint-roller{--fa:"\f5aa"}.fa-passport{--fa:"\f5ab"}.fa-pen-fancy{--fa:"\f5ac"}.fa-pen-nib{--fa:"\f5ad"}.fa-pen-ruler,.fa-pencil-ruler{--fa:"\f5ae"}.fa-plane-arrival{--fa:"\f5af"}.fa-plane-departure{--fa:"\f5b0"}.fa-prescription{--fa:"\f5b1"}.fa-face-sad-cry,.fa-sad-cry{--fa:"\f5b3"}.fa-face-sad-tear,.fa-sad-tear{--fa:"\f5b4"}.fa-shuttle-van,.fa-van-shuttle{--fa:"\f5b6"}.fa-signature{--fa:"\f5b7"}.fa-face-smile-beam,.fa-smile-beam{--fa:"\f5b8"}.fa-solar-panel{--fa:"\f5ba"}.fa-spa{--fa:"\f5bb"}.fa-splotch{--fa:"\f5bc"}.fa-spray-can{--fa:"\f5bd"}.fa-stamp{--fa:"\f5bf"}.fa-star-half-alt,.fa-star-half-stroke{--fa:"\f5c0"}.fa-suitcase-rolling{--fa:"\f5c1"}.fa-face-surprise,.fa-surprise{--fa:"\f5c2"}.fa-swatchbook{--fa:"\f5c3"}.fa-person-swimming,.fa-swimmer{--fa:"\f5c4"}.fa-ladder-water,.fa-swimming-pool,.fa-water-ladder{--fa:"\f5c5"}.fa-droplet-slash,.fa-tint-slash{--fa:"\f5c7"}.fa-face-tired,.fa-tired{--fa:"\f5c8"}.fa-tooth{--fa:"\f5c9"}.fa-umbrella-beach{--fa:"\f5ca"}.fa-weight-hanging{--fa:"\f5cd"}.fa-wine-glass-alt,.fa-wine-glass-empty{--fa:"\f5ce"}.fa-air-freshener,.fa-spray-can-sparkles{--fa:"\f5d0"}.fa-apple-alt,.fa-apple-whole{--fa:"\f5d1"}.fa-atom{--fa:"\f5d2"}.fa-bone{--fa:"\f5d7"}.fa-book-open-reader,.fa-book-reader{--fa:"\f5da"}.fa-brain{--fa:"\f5dc"}.fa-car-alt,.fa-car-rear{--fa:"\f5de"}.fa-battery-car,.fa-car-battery{--fa:"\f5df"}.fa-car-burst,.fa-car-crash{--fa:"\f5e1"}.fa-car-side{--fa:"\f5e4"}.fa-charging-station{--fa:"\f5e7"}.fa-diamond-turn-right,.fa-directions{--fa:"\f5eb"}.fa-draw-polygon,.fa-vector-polygon{--fa:"\f5ee"}.fa-laptop-code{--fa:"\f5fc"}.fa-layer-group{--fa:"\f5fd"}.fa-location,.fa-location-crosshairs{--fa:"\f601"}.fa-lungs{--fa:"\f604"}.fa-microscope{--fa:"\f610"}.fa-oil-can{--fa:"\f613"}.fa-poop{--fa:"\f619"}.fa-shapes,.fa-triangle-circle-square{--fa:"\f61f"}.fa-star-of-life{--fa:"\f621"}.fa-dashboard,.fa-gauge,.fa-gauge-med,.fa-tachometer-alt-average{--fa:"\f624"}.fa-gauge-high,.fa-tachometer-alt,.fa-tachometer-alt-fast{--fa:"\f625"}.fa-gauge-simple,.fa-gauge-simple-med,.fa-tachometer-average{--fa:"\f629"}.fa-gauge-simple-high,.fa-tachometer,.fa-tachometer-fast{--fa:"\f62a"}.fa-teeth{--fa:"\f62e"}.fa-teeth-open{--fa:"\f62f"}.fa-masks-theater,.fa-theater-masks{--fa:"\f630"}.fa-traffic-light{--fa:"\f637"}.fa-truck-monster{--fa:"\f63b"}.fa-truck-pickup{--fa:"\f63c"}.fa-ad,.fa-rectangle-ad{--fa:"\f641"}.fa-ankh{--fa:"\f644"}.fa-bible,.fa-book-bible{--fa:"\f647"}.fa-briefcase-clock,.fa-business-time{--fa:"\f64a"}.fa-city{--fa:"\f64f"}.fa-comment-dollar{--fa:"\f651"}.fa-comments-dollar{--fa:"\f653"}.fa-cross{--fa:"\f654"}.fa-dharmachakra{--fa:"\f655"}.fa-envelope-open-text{--fa:"\f658"}.fa-folder-minus{--fa:"\f65d"}.fa-folder-plus{--fa:"\f65e"}.fa-filter-circle-dollar,.fa-funnel-dollar{--fa:"\f662"}.fa-gopuram{--fa:"\f664"}.fa-hamsa{--fa:"\f665"}.fa-bahai,.fa-haykal{--fa:"\f666"}.fa-jedi{--fa:"\f669"}.fa-book-journal-whills,.fa-journal-whills{--fa:"\f66a"}.fa-kaaba{--fa:"\f66b"}.fa-khanda{--fa:"\f66d"}.fa-landmark{--fa:"\f66f"}.fa-envelopes-bulk,.fa-mail-bulk{--fa:"\f674"}.fa-menorah{--fa:"\f676"}.fa-mosque{--fa:"\f678"}.fa-om{--fa:"\f679"}.fa-pastafarianism,.fa-spaghetti-monster-flying{--fa:"\f67b"}.fa-peace{--fa:"\f67c"}.fa-place-of-worship{--fa:"\f67f"}.fa-poll,.fa-square-poll-vertical{--fa:"\f681"}.fa-poll-h,.fa-square-poll-horizontal{--fa:"\f682"}.fa-person-praying,.fa-pray{--fa:"\f683"}.fa-hands-praying,.fa-praying-hands{--fa:"\f684"}.fa-book-quran,.fa-quran{--fa:"\f687"}.fa-magnifying-glass-dollar,.fa-search-dollar{--fa:"\f688"}.fa-magnifying-glass-location,.fa-search-location{--fa:"\f689"}.fa-socks{--fa:"\f696"}.fa-square-root-alt,.fa-square-root-variable{--fa:"\f698"}.fa-star-and-crescent{--fa:"\f699"}.fa-star-of-david{--fa:"\f69a"}.fa-synagogue{--fa:"\f69b"}.fa-scroll-torah,.fa-torah{--fa:"\f6a0"}.fa-torii-gate{--fa:"\f6a1"}.fa-vihara{--fa:"\f6a7"}.fa-volume-mute,.fa-volume-times,.fa-volume-xmark{--fa:"\f6a9"}.fa-yin-yang{--fa:"\f6ad"}.fa-blender-phone{--fa:"\f6b6"}.fa-book-dead,.fa-book-skull{--fa:"\f6b7"}.fa-campground{--fa:"\f6bb"}.fa-cat{--fa:"\f6be"}.fa-chair{--fa:"\f6c0"}.fa-cloud-moon{--fa:"\f6c3"}.fa-cloud-sun{--fa:"\f6c4"}.fa-cow{--fa:"\f6c8"}.fa-dice-d20{--fa:"\f6cf"}.fa-dice-d6{--fa:"\f6d1"}.fa-dog{--fa:"\f6d3"}.fa-dragon{--fa:"\f6d5"}.fa-drumstick-bite{--fa:"\f6d7"}.fa-dungeon{--fa:"\f6d9"}.fa-file-csv{--fa:"\f6dd"}.fa-fist-raised,.fa-hand-fist{--fa:"\f6de"}.fa-ghost{--fa:"\f6e2"}.fa-hammer{--fa:"\f6e3"}.fa-hanukiah{--fa:"\f6e6"}.fa-hat-wizard{--fa:"\f6e8"}.fa-hiking,.fa-person-hiking{--fa:"\f6ec"}.fa-hippo{--fa:"\f6ed"}.fa-horse{--fa:"\f6f0"}.fa-house-chimney-crack,.fa-house-damage{--fa:"\f6f1"}.fa-hryvnia,.fa-hryvnia-sign{--fa:"\f6f2"}.fa-mask{--fa:"\f6fa"}.fa-mountain{--fa:"\f6fc"}.fa-network-wired{--fa:"\f6ff"}.fa-otter{--fa:"\f700"}.fa-ring{--fa:"\f70b"}.fa-person-running,.fa-running{--fa:"\f70c"}.fa-scroll{--fa:"\f70e"}.fa-skull-crossbones{--fa:"\f714"}.fa-slash{--fa:"\f715"}.fa-spider{--fa:"\f717"}.fa-toilet-paper,.fa-toilet-paper-alt,.fa-toilet-paper-blank{--fa:"\f71e"}.fa-tractor{--fa:"\f722"}.fa-user-injured{--fa:"\f728"}.fa-vr-cardboard{--fa:"\f729"}.fa-wand-sparkles{--fa:"\f72b"}.fa-wind{--fa:"\f72e"}.fa-wine-bottle{--fa:"\f72f"}.fa-cloud-meatball{--fa:"\f73b"}.fa-cloud-moon-rain{--fa:"\f73c"}.fa-cloud-rain{--fa:"\f73d"}.fa-cloud-showers-heavy{--fa:"\f740"}.fa-cloud-sun-rain{--fa:"\f743"}.fa-democrat{--fa:"\f747"}.fa-flag-usa{--fa:"\f74d"}.fa-hurricane{--fa:"\f751"}.fa-landmark-alt,.fa-landmark-dome{--fa:"\f752"}.fa-meteor{--fa:"\f753"}.fa-person-booth{--fa:"\f756"}.fa-poo-bolt,.fa-poo-storm{--fa:"\f75a"}.fa-rainbow{--fa:"\f75b"}.fa-republican{--fa:"\f75e"}.fa-smog{--fa:"\f75f"}.fa-temperature-high{--fa:"\f769"}.fa-temperature-low{--fa:"\f76b"}.fa-cloud-bolt,.fa-thunderstorm{--fa:"\f76c"}.fa-tornado{--fa:"\f76f"}.fa-volcano{--fa:"\f770"}.fa-check-to-slot,.fa-vote-yea{--fa:"\f772"}.fa-water{--fa:"\f773"}.fa-baby{--fa:"\f77c"}.fa-baby-carriage,.fa-carriage-baby{--fa:"\f77d"}.fa-biohazard{--fa:"\f780"}.fa-blog{--fa:"\f781"}.fa-calendar-day{--fa:"\f783"}.fa-calendar-week{--fa:"\f784"}.fa-candy-cane{--fa:"\f786"}.fa-carrot{--fa:"\f787"}.fa-cash-register{--fa:"\f788"}.fa-compress-arrows-alt,.fa-minimize{--fa:"\f78c"}.fa-dumpster{--fa:"\f793"}.fa-dumpster-fire{--fa:"\f794"}.fa-ethernet{--fa:"\f796"}.fa-gifts{--fa:"\f79c"}.fa-champagne-glasses,.fa-glass-cheers{--fa:"\f79f"}.fa-glass-whiskey,.fa-whiskey-glass{--fa:"\f7a0"}.fa-earth-europe,.fa-globe-europe{--fa:"\f7a2"}.fa-grip-lines{--fa:"\f7a4"}.fa-grip-lines-vertical{--fa:"\f7a5"}.fa-guitar{--fa:"\f7a6"}.fa-heart-broken,.fa-heart-crack{--fa:"\f7a9"}.fa-holly-berry{--fa:"\f7aa"}.fa-horse-head{--fa:"\f7ab"}.fa-icicles{--fa:"\f7ad"}.fa-igloo{--fa:"\f7ae"}.fa-mitten{--fa:"\f7b5"}.fa-mug-hot{--fa:"\f7b6"}.fa-radiation{--fa:"\f7b9"}.fa-circle-radiation,.fa-radiation-alt{--fa:"\f7ba"}.fa-restroom{--fa:"\f7bd"}.fa-satellite{--fa:"\f7bf"}.fa-satellite-dish{--fa:"\f7c0"}.fa-sd-card{--fa:"\f7c2"}.fa-sim-card{--fa:"\f7c4"}.fa-person-skating,.fa-skating{--fa:"\f7c5"}.fa-person-skiing,.fa-skiing{--fa:"\f7c9"}.fa-person-skiing-nordic,.fa-skiing-nordic{--fa:"\f7ca"}.fa-sleigh{--fa:"\f7cc"}.fa-comment-sms,.fa-sms{--fa:"\f7cd"}.fa-person-snowboarding,.fa-snowboarding{--fa:"\f7ce"}.fa-snowman{--fa:"\f7d0"}.fa-snowplow{--fa:"\f7d2"}.fa-tenge,.fa-tenge-sign{--fa:"\f7d7"}.fa-toilet{--fa:"\f7d8"}.fa-screwdriver-wrench,.fa-tools{--fa:"\f7d9"}.fa-cable-car,.fa-tram{--fa:"\f7da"}.fa-fire-alt,.fa-fire-flame-curved{--fa:"\f7e4"}.fa-bacon{--fa:"\f7e5"}.fa-book-medical{--fa:"\f7e6"}.fa-bread-slice{--fa:"\f7ec"}.fa-cheese{--fa:"\f7ef"}.fa-clinic-medical,.fa-house-chimney-medical{--fa:"\f7f2"}.fa-clipboard-user{--fa:"\f7f3"}.fa-comment-medical{--fa:"\f7f5"}.fa-crutch{--fa:"\f7f7"}.fa-disease{--fa:"\f7fa"}.fa-egg{--fa:"\f7fb"}.fa-folder-tree{--fa:"\f802"}.fa-burger,.fa-hamburger{--fa:"\f805"}.fa-hand-middle-finger{--fa:"\f806"}.fa-hard-hat,.fa-hat-hard,.fa-helmet-safety{--fa:"\f807"}.fa-hospital-user{--fa:"\f80d"}.fa-hotdog{--fa:"\f80f"}.fa-ice-cream{--fa:"\f810"}.fa-laptop-medical{--fa:"\f812"}.fa-pager{--fa:"\f815"}.fa-pepper-hot{--fa:"\f816"}.fa-pizza-slice{--fa:"\f818"}.fa-sack-dollar{--fa:"\f81d"}.fa-book-tanakh,.fa-tanakh{--fa:"\f827"}.fa-bars-progress,.fa-tasks-alt{--fa:"\f828"}.fa-trash-arrow-up,.fa-trash-restore{--fa:"\f829"}.fa-trash-can-arrow-up,.fa-trash-restore-alt{--fa:"\f82a"}.fa-user-nurse{--fa:"\f82f"}.fa-wave-square{--fa:"\f83e"}.fa-biking,.fa-person-biking{--fa:"\f84a"}.fa-border-all{--fa:"\f84c"}.fa-border-none{--fa:"\f850"}.fa-border-style,.fa-border-top-left{--fa:"\f853"}.fa-digging,.fa-person-digging{--fa:"\f85e"}.fa-fan{--fa:"\f863"}.fa-heart-music-camera-bolt,.fa-icons{--fa:"\f86d"}.fa-phone-alt,.fa-phone-flip{--fa:"\f879"}.fa-phone-square-alt,.fa-square-phone-flip{--fa:"\f87b"}.fa-photo-film,.fa-photo-video{--fa:"\f87c"}.fa-remove-format,.fa-text-slash{--fa:"\f87d"}.fa-arrow-down-z-a,.fa-sort-alpha-desc,.fa-sort-alpha-down-alt{--fa:"\f881"}.fa-arrow-up-z-a,.fa-sort-alpha-up-alt{--fa:"\f882"}.fa-arrow-down-short-wide,.fa-sort-amount-desc,.fa-sort-amount-down-alt{--fa:"\f884"}.fa-arrow-up-short-wide,.fa-sort-amount-up-alt{--fa:"\f885"}.fa-arrow-down-9-1,.fa-sort-numeric-desc,.fa-sort-numeric-down-alt{--fa:"\f886"}.fa-arrow-up-9-1,.fa-sort-numeric-up-alt{--fa:"\f887"}.fa-spell-check{--fa:"\f891"}.fa-voicemail{--fa:"\f897"}.fa-hat-cowboy{--fa:"\f8c0"}.fa-hat-cowboy-side{--fa:"\f8c1"}.fa-computer-mouse,.fa-mouse{--fa:"\f8cc"}.fa-radio{--fa:"\f8d7"}.fa-record-vinyl{--fa:"\f8d9"}.fa-walkie-talkie{--fa:"\f8ef"}.fa-caravan{--fa:"\f8ff"} +:host,:root{--fa-family-brands:"Font Awesome 7 Brands";--fa-font-brands:normal 400 1em/1 var(--fa-family-brands)}@font-face{font-family:"Font Awesome 7 Brands";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-brands-400.woff2)}.fa-brands,.fa-classic.fa-brands,.fab{--fa-family:var(--fa-family-brands);--fa-style:400}.fa-firefox-browser{--fa:"\e007"}.fa-ideal{--fa:"\e013"}.fa-microblog{--fa:"\e01a"}.fa-pied-piper-square,.fa-square-pied-piper{--fa:"\e01e"}.fa-unity{--fa:"\e049"}.fa-dailymotion{--fa:"\e052"}.fa-instagram-square,.fa-square-instagram{--fa:"\e055"}.fa-mixer{--fa:"\e056"}.fa-shopify{--fa:"\e057"}.fa-deezer{--fa:"\e077"}.fa-edge-legacy{--fa:"\e078"}.fa-google-pay{--fa:"\e079"}.fa-rust{--fa:"\e07a"}.fa-tiktok{--fa:"\e07b"}.fa-unsplash{--fa:"\e07c"}.fa-cloudflare{--fa:"\e07d"}.fa-guilded{--fa:"\e07e"}.fa-hive{--fa:"\e07f"}.fa-42-group,.fa-innosoft{--fa:"\e080"}.fa-instalod{--fa:"\e081"}.fa-octopus-deploy{--fa:"\e082"}.fa-perbyte{--fa:"\e083"}.fa-uncharted{--fa:"\e084"}.fa-watchman-monitoring{--fa:"\e087"}.fa-wodu{--fa:"\e088"}.fa-wirsindhandwerk,.fa-wsh{--fa:"\e2d0"}.fa-bots{--fa:"\e340"}.fa-cmplid{--fa:"\e360"}.fa-bilibili{--fa:"\e3d9"}.fa-golang{--fa:"\e40f"}.fa-pix{--fa:"\e43a"}.fa-sitrox{--fa:"\e44a"}.fa-hashnode{--fa:"\e499"}.fa-meta{--fa:"\e49b"}.fa-padlet{--fa:"\e4a0"}.fa-nfc-directional{--fa:"\e530"}.fa-nfc-symbol{--fa:"\e531"}.fa-screenpal{--fa:"\e570"}.fa-space-awesome{--fa:"\e5ac"}.fa-square-font-awesome{--fa:"\e5ad"}.fa-gitlab-square,.fa-square-gitlab{--fa:"\e5ae"}.fa-odysee{--fa:"\e5c6"}.fa-stubber{--fa:"\e5c7"}.fa-debian{--fa:"\e60b"}.fa-shoelace{--fa:"\e60c"}.fa-threads{--fa:"\e618"}.fa-square-threads{--fa:"\e619"}.fa-square-x-twitter{--fa:"\e61a"}.fa-x-twitter{--fa:"\e61b"}.fa-opensuse{--fa:"\e62b"}.fa-letterboxd{--fa:"\e62d"}.fa-square-letterboxd{--fa:"\e62e"}.fa-mintbit{--fa:"\e62f"}.fa-google-scholar{--fa:"\e63b"}.fa-brave{--fa:"\e63c"}.fa-brave-reverse{--fa:"\e63d"}.fa-pixiv{--fa:"\e640"}.fa-upwork{--fa:"\e641"}.fa-webflow{--fa:"\e65c"}.fa-signal-messenger{--fa:"\e663"}.fa-bluesky{--fa:"\e671"}.fa-jxl{--fa:"\e67b"}.fa-square-upwork{--fa:"\e67c"}.fa-web-awesome{--fa:"\e682"}.fa-square-web-awesome{--fa:"\e683"}.fa-square-web-awesome-stroke{--fa:"\e684"}.fa-dart-lang{--fa:"\e693"}.fa-flutter{--fa:"\e694"}.fa-files-pinwheel{--fa:"\e69f"}.fa-css{--fa:"\e6a2"}.fa-square-bluesky{--fa:"\e6a3"}.fa-openai{--fa:"\e7cf"}.fa-square-linkedin{--fa:"\e7d0"}.fa-cash-app{--fa:"\e7d4"}.fa-disqus{--fa:"\e7d5"}.fa-11ty,.fa-eleventy{--fa:"\e7d6"}.fa-kakao-talk{--fa:"\e7d7"}.fa-linktree{--fa:"\e7d8"}.fa-notion{--fa:"\e7d9"}.fa-pandora{--fa:"\e7da"}.fa-pixelfed{--fa:"\e7db"}.fa-tidal{--fa:"\e7dc"}.fa-vsco{--fa:"\e7dd"}.fa-w3c{--fa:"\e7de"}.fa-lumon{--fa:"\e7e2"}.fa-lumon-drop{--fa:"\e7e3"}.fa-square-figma{--fa:"\e7e4"}.fa-tex{--fa:"\e7ff"}.fa-duolingo{--fa:"\e812"}.fa-square-twitter,.fa-twitter-square{--fa:"\f081"}.fa-facebook-square,.fa-square-facebook{--fa:"\f082"}.fa-linkedin{--fa:"\f08c"}.fa-github-square,.fa-square-github{--fa:"\f092"}.fa-twitter{--fa:"\f099"}.fa-facebook{--fa:"\f09a"}.fa-github{--fa:"\f09b"}.fa-pinterest{--fa:"\f0d2"}.fa-pinterest-square,.fa-square-pinterest{--fa:"\f0d3"}.fa-google-plus-square,.fa-square-google-plus{--fa:"\f0d4"}.fa-google-plus-g{--fa:"\f0d5"}.fa-linkedin-in{--fa:"\f0e1"}.fa-github-alt{--fa:"\f113"}.fa-maxcdn{--fa:"\f136"}.fa-html5{--fa:"\f13b"}.fa-css3{--fa:"\f13c"}.fa-btc{--fa:"\f15a"}.fa-youtube{--fa:"\f167"}.fa-xing{--fa:"\f168"}.fa-square-xing,.fa-xing-square{--fa:"\f169"}.fa-dropbox{--fa:"\f16b"}.fa-stack-overflow{--fa:"\f16c"}.fa-instagram{--fa:"\f16d"}.fa-flickr{--fa:"\f16e"}.fa-adn{--fa:"\f170"}.fa-bitbucket{--fa:"\f171"}.fa-tumblr{--fa:"\f173"}.fa-square-tumblr,.fa-tumblr-square{--fa:"\f174"}.fa-apple{--fa:"\f179"}.fa-windows{--fa:"\f17a"}.fa-android{--fa:"\f17b"}.fa-linux{--fa:"\f17c"}.fa-dribbble{--fa:"\f17d"}.fa-skype{--fa:"\f17e"}.fa-foursquare{--fa:"\f180"}.fa-trello{--fa:"\f181"}.fa-gratipay{--fa:"\f184"}.fa-vk{--fa:"\f189"}.fa-weibo{--fa:"\f18a"}.fa-renren{--fa:"\f18b"}.fa-pagelines{--fa:"\f18c"}.fa-stack-exchange{--fa:"\f18d"}.fa-square-vimeo,.fa-vimeo-square{--fa:"\f194"}.fa-slack,.fa-slack-hash{--fa:"\f198"}.fa-wordpress{--fa:"\f19a"}.fa-openid{--fa:"\f19b"}.fa-yahoo{--fa:"\f19e"}.fa-google{--fa:"\f1a0"}.fa-reddit{--fa:"\f1a1"}.fa-reddit-square,.fa-square-reddit{--fa:"\f1a2"}.fa-stumbleupon-circle{--fa:"\f1a3"}.fa-stumbleupon{--fa:"\f1a4"}.fa-delicious{--fa:"\f1a5"}.fa-digg{--fa:"\f1a6"}.fa-pied-piper-pp{--fa:"\f1a7"}.fa-pied-piper-alt{--fa:"\f1a8"}.fa-drupal{--fa:"\f1a9"}.fa-joomla{--fa:"\f1aa"}.fa-behance{--fa:"\f1b4"}.fa-behance-square,.fa-square-behance{--fa:"\f1b5"}.fa-steam{--fa:"\f1b6"}.fa-square-steam,.fa-steam-square{--fa:"\f1b7"}.fa-spotify{--fa:"\f1bc"}.fa-deviantart{--fa:"\f1bd"}.fa-soundcloud{--fa:"\f1be"}.fa-vine{--fa:"\f1ca"}.fa-codepen{--fa:"\f1cb"}.fa-jsfiddle{--fa:"\f1cc"}.fa-rebel{--fa:"\f1d0"}.fa-empire{--fa:"\f1d1"}.fa-git-square,.fa-square-git{--fa:"\f1d2"}.fa-git{--fa:"\f1d3"}.fa-hacker-news{--fa:"\f1d4"}.fa-tencent-weibo{--fa:"\f1d5"}.fa-qq{--fa:"\f1d6"}.fa-weixin{--fa:"\f1d7"}.fa-slideshare{--fa:"\f1e7"}.fa-twitch{--fa:"\f1e8"}.fa-yelp{--fa:"\f1e9"}.fa-paypal{--fa:"\f1ed"}.fa-google-wallet{--fa:"\f1ee"}.fa-cc-visa{--fa:"\f1f0"}.fa-cc-mastercard{--fa:"\f1f1"}.fa-cc-discover{--fa:"\f1f2"}.fa-cc-amex{--fa:"\f1f3"}.fa-cc-paypal{--fa:"\f1f4"}.fa-cc-stripe{--fa:"\f1f5"}.fa-lastfm{--fa:"\f202"}.fa-lastfm-square,.fa-square-lastfm{--fa:"\f203"}.fa-ioxhost{--fa:"\f208"}.fa-angellist{--fa:"\f209"}.fa-buysellads{--fa:"\f20d"}.fa-connectdevelop{--fa:"\f20e"}.fa-dashcube{--fa:"\f210"}.fa-forumbee{--fa:"\f211"}.fa-leanpub{--fa:"\f212"}.fa-sellsy{--fa:"\f213"}.fa-shirtsinbulk{--fa:"\f214"}.fa-simplybuilt{--fa:"\f215"}.fa-skyatlas{--fa:"\f216"}.fa-pinterest-p{--fa:"\f231"}.fa-whatsapp{--fa:"\f232"}.fa-viacoin{--fa:"\f237"}.fa-medium,.fa-medium-m{--fa:"\f23a"}.fa-y-combinator{--fa:"\f23b"}.fa-optin-monster{--fa:"\f23c"}.fa-opencart{--fa:"\f23d"}.fa-expeditedssl{--fa:"\f23e"}.fa-cc-jcb{--fa:"\f24b"}.fa-cc-diners-club{--fa:"\f24c"}.fa-creative-commons{--fa:"\f25e"}.fa-gg{--fa:"\f260"}.fa-gg-circle{--fa:"\f261"}.fa-odnoklassniki{--fa:"\f263"}.fa-odnoklassniki-square,.fa-square-odnoklassniki{--fa:"\f264"}.fa-get-pocket{--fa:"\f265"}.fa-wikipedia-w{--fa:"\f266"}.fa-safari{--fa:"\f267"}.fa-chrome{--fa:"\f268"}.fa-firefox{--fa:"\f269"}.fa-opera{--fa:"\f26a"}.fa-internet-explorer{--fa:"\f26b"}.fa-contao{--fa:"\f26d"}.fa-500px{--fa:"\f26e"}.fa-amazon{--fa:"\f270"}.fa-houzz{--fa:"\f27c"}.fa-vimeo-v{--fa:"\f27d"}.fa-black-tie{--fa:"\f27e"}.fa-fonticons{--fa:"\f280"}.fa-reddit-alien{--fa:"\f281"}.fa-edge{--fa:"\f282"}.fa-codiepie{--fa:"\f284"}.fa-modx{--fa:"\f285"}.fa-fort-awesome{--fa:"\f286"}.fa-usb{--fa:"\f287"}.fa-product-hunt{--fa:"\f288"}.fa-mixcloud{--fa:"\f289"}.fa-scribd{--fa:"\f28a"}.fa-bluetooth{--fa:"\f293"}.fa-bluetooth-b{--fa:"\f294"}.fa-gitlab{--fa:"\f296"}.fa-wpbeginner{--fa:"\f297"}.fa-wpforms{--fa:"\f298"}.fa-envira{--fa:"\f299"}.fa-glide{--fa:"\f2a5"}.fa-glide-g{--fa:"\f2a6"}.fa-viadeo{--fa:"\f2a9"}.fa-square-viadeo,.fa-viadeo-square{--fa:"\f2aa"}.fa-snapchat,.fa-snapchat-ghost{--fa:"\f2ab"}.fa-snapchat-square,.fa-square-snapchat{--fa:"\f2ad"}.fa-pied-piper{--fa:"\f2ae"}.fa-first-order{--fa:"\f2b0"}.fa-yoast{--fa:"\f2b1"}.fa-themeisle{--fa:"\f2b2"}.fa-google-plus{--fa:"\f2b3"}.fa-font-awesome,.fa-font-awesome-flag,.fa-font-awesome-logo-full{--fa:"\f2b4"}.fa-linode{--fa:"\f2b8"}.fa-quora{--fa:"\f2c4"}.fa-free-code-camp{--fa:"\f2c5"}.fa-telegram,.fa-telegram-plane{--fa:"\f2c6"}.fa-bandcamp{--fa:"\f2d5"}.fa-grav{--fa:"\f2d6"}.fa-etsy{--fa:"\f2d7"}.fa-imdb{--fa:"\f2d8"}.fa-ravelry{--fa:"\f2d9"}.fa-sellcast{--fa:"\f2da"}.fa-superpowers{--fa:"\f2dd"}.fa-wpexplorer{--fa:"\f2de"}.fa-meetup{--fa:"\f2e0"}.fa-font-awesome-alt,.fa-square-font-awesome-stroke{--fa:"\f35c"}.fa-accessible-icon{--fa:"\f368"}.fa-accusoft{--fa:"\f369"}.fa-adversal{--fa:"\f36a"}.fa-affiliatetheme{--fa:"\f36b"}.fa-algolia{--fa:"\f36c"}.fa-amilia{--fa:"\f36d"}.fa-angrycreative{--fa:"\f36e"}.fa-app-store{--fa:"\f36f"}.fa-app-store-ios{--fa:"\f370"}.fa-apper{--fa:"\f371"}.fa-asymmetrik{--fa:"\f372"}.fa-audible{--fa:"\f373"}.fa-avianex{--fa:"\f374"}.fa-aws{--fa:"\f375"}.fa-bimobject{--fa:"\f378"}.fa-bitcoin{--fa:"\f379"}.fa-bity{--fa:"\f37a"}.fa-blackberry{--fa:"\f37b"}.fa-blogger{--fa:"\f37c"}.fa-blogger-b{--fa:"\f37d"}.fa-buromobelexperte{--fa:"\f37f"}.fa-centercode{--fa:"\f380"}.fa-cloudscale{--fa:"\f383"}.fa-cloudsmith{--fa:"\f384"}.fa-cloudversify{--fa:"\f385"}.fa-cpanel{--fa:"\f388"}.fa-css3-alt{--fa:"\f38b"}.fa-cuttlefish{--fa:"\f38c"}.fa-d-and-d{--fa:"\f38d"}.fa-deploydog{--fa:"\f38e"}.fa-deskpro{--fa:"\f38f"}.fa-digital-ocean{--fa:"\f391"}.fa-discord{--fa:"\f392"}.fa-discourse{--fa:"\f393"}.fa-dochub{--fa:"\f394"}.fa-docker{--fa:"\f395"}.fa-draft2digital{--fa:"\f396"}.fa-dribbble-square,.fa-square-dribbble{--fa:"\f397"}.fa-dyalog{--fa:"\f399"}.fa-earlybirds{--fa:"\f39a"}.fa-erlang{--fa:"\f39d"}.fa-facebook-f{--fa:"\f39e"}.fa-facebook-messenger{--fa:"\f39f"}.fa-firstdraft{--fa:"\f3a1"}.fa-fonticons-fi{--fa:"\f3a2"}.fa-fort-awesome-alt{--fa:"\f3a3"}.fa-freebsd{--fa:"\f3a4"}.fa-gitkraken{--fa:"\f3a6"}.fa-gofore{--fa:"\f3a7"}.fa-goodreads{--fa:"\f3a8"}.fa-goodreads-g{--fa:"\f3a9"}.fa-google-drive{--fa:"\f3aa"}.fa-google-play{--fa:"\f3ab"}.fa-gripfire{--fa:"\f3ac"}.fa-grunt{--fa:"\f3ad"}.fa-gulp{--fa:"\f3ae"}.fa-hacker-news-square,.fa-square-hacker-news{--fa:"\f3af"}.fa-hire-a-helper{--fa:"\f3b0"}.fa-hotjar{--fa:"\f3b1"}.fa-hubspot{--fa:"\f3b2"}.fa-itunes{--fa:"\f3b4"}.fa-itunes-note{--fa:"\f3b5"}.fa-jenkins{--fa:"\f3b6"}.fa-joget{--fa:"\f3b7"}.fa-js{--fa:"\f3b8"}.fa-js-square,.fa-square-js{--fa:"\f3b9"}.fa-keycdn{--fa:"\f3ba"}.fa-kickstarter,.fa-square-kickstarter{--fa:"\f3bb"}.fa-kickstarter-k{--fa:"\f3bc"}.fa-laravel{--fa:"\f3bd"}.fa-line{--fa:"\f3c0"}.fa-lyft{--fa:"\f3c3"}.fa-magento{--fa:"\f3c4"}.fa-medapps{--fa:"\f3c6"}.fa-medrt{--fa:"\f3c8"}.fa-microsoft{--fa:"\f3ca"}.fa-mix{--fa:"\f3cb"}.fa-mizuni{--fa:"\f3cc"}.fa-monero{--fa:"\f3d0"}.fa-napster{--fa:"\f3d2"}.fa-node-js{--fa:"\f3d3"}.fa-npm{--fa:"\f3d4"}.fa-ns8{--fa:"\f3d5"}.fa-nutritionix{--fa:"\f3d6"}.fa-page4{--fa:"\f3d7"}.fa-palfed{--fa:"\f3d8"}.fa-patreon{--fa:"\f3d9"}.fa-periscope{--fa:"\f3da"}.fa-phabricator{--fa:"\f3db"}.fa-phoenix-framework{--fa:"\f3dc"}.fa-playstation{--fa:"\f3df"}.fa-pushed{--fa:"\f3e1"}.fa-python{--fa:"\f3e2"}.fa-red-river{--fa:"\f3e3"}.fa-rendact,.fa-wpressr{--fa:"\f3e4"}.fa-replyd{--fa:"\f3e6"}.fa-resolving{--fa:"\f3e7"}.fa-rocketchat{--fa:"\f3e8"}.fa-rockrms{--fa:"\f3e9"}.fa-schlix{--fa:"\f3ea"}.fa-searchengin{--fa:"\f3eb"}.fa-servicestack{--fa:"\f3ec"}.fa-sistrix{--fa:"\f3ee"}.fa-speakap{--fa:"\f3f3"}.fa-staylinked{--fa:"\f3f5"}.fa-steam-symbol{--fa:"\f3f6"}.fa-sticker-mule{--fa:"\f3f7"}.fa-studiovinari{--fa:"\f3f8"}.fa-supple{--fa:"\f3f9"}.fa-uber{--fa:"\f402"}.fa-uikit{--fa:"\f403"}.fa-uniregistry{--fa:"\f404"}.fa-untappd{--fa:"\f405"}.fa-ussunnah{--fa:"\f407"}.fa-vaadin{--fa:"\f408"}.fa-viber{--fa:"\f409"}.fa-vimeo{--fa:"\f40a"}.fa-vnv{--fa:"\f40b"}.fa-square-whatsapp,.fa-whatsapp-square{--fa:"\f40c"}.fa-whmcs{--fa:"\f40d"}.fa-wordpress-simple{--fa:"\f411"}.fa-xbox{--fa:"\f412"}.fa-yandex{--fa:"\f413"}.fa-yandex-international{--fa:"\f414"}.fa-apple-pay{--fa:"\f415"}.fa-cc-apple-pay{--fa:"\f416"}.fa-fly{--fa:"\f417"}.fa-node{--fa:"\f419"}.fa-osi{--fa:"\f41a"}.fa-react{--fa:"\f41b"}.fa-autoprefixer{--fa:"\f41c"}.fa-less{--fa:"\f41d"}.fa-sass{--fa:"\f41e"}.fa-vuejs{--fa:"\f41f"}.fa-angular{--fa:"\f420"}.fa-aviato{--fa:"\f421"}.fa-ember{--fa:"\f423"}.fa-gitter{--fa:"\f426"}.fa-hooli{--fa:"\f427"}.fa-strava{--fa:"\f428"}.fa-stripe{--fa:"\f429"}.fa-stripe-s{--fa:"\f42a"}.fa-typo3{--fa:"\f42b"}.fa-amazon-pay{--fa:"\f42c"}.fa-cc-amazon-pay{--fa:"\f42d"}.fa-ethereum{--fa:"\f42e"}.fa-korvue{--fa:"\f42f"}.fa-elementor{--fa:"\f430"}.fa-square-youtube,.fa-youtube-square{--fa:"\f431"}.fa-flipboard{--fa:"\f44d"}.fa-hips{--fa:"\f452"}.fa-php{--fa:"\f457"}.fa-quinscape{--fa:"\f459"}.fa-readme{--fa:"\f4d5"}.fa-java{--fa:"\f4e4"}.fa-pied-piper-hat{--fa:"\f4e5"}.fa-creative-commons-by{--fa:"\f4e7"}.fa-creative-commons-nc{--fa:"\f4e8"}.fa-creative-commons-nc-eu{--fa:"\f4e9"}.fa-creative-commons-nc-jp{--fa:"\f4ea"}.fa-creative-commons-nd{--fa:"\f4eb"}.fa-creative-commons-pd{--fa:"\f4ec"}.fa-creative-commons-pd-alt{--fa:"\f4ed"}.fa-creative-commons-remix{--fa:"\f4ee"}.fa-creative-commons-sa{--fa:"\f4ef"}.fa-creative-commons-sampling{--fa:"\f4f0"}.fa-creative-commons-sampling-plus{--fa:"\f4f1"}.fa-creative-commons-share{--fa:"\f4f2"}.fa-creative-commons-zero{--fa:"\f4f3"}.fa-ebay{--fa:"\f4f4"}.fa-keybase{--fa:"\f4f5"}.fa-mastodon{--fa:"\f4f6"}.fa-r-project{--fa:"\f4f7"}.fa-researchgate{--fa:"\f4f8"}.fa-teamspeak{--fa:"\f4f9"}.fa-first-order-alt{--fa:"\f50a"}.fa-fulcrum{--fa:"\f50b"}.fa-galactic-republic{--fa:"\f50c"}.fa-galactic-senate{--fa:"\f50d"}.fa-jedi-order{--fa:"\f50e"}.fa-mandalorian{--fa:"\f50f"}.fa-old-republic{--fa:"\f510"}.fa-phoenix-squadron{--fa:"\f511"}.fa-sith{--fa:"\f512"}.fa-trade-federation{--fa:"\f513"}.fa-wolf-pack-battalion{--fa:"\f514"}.fa-hornbill{--fa:"\f592"}.fa-mailchimp{--fa:"\f59e"}.fa-megaport{--fa:"\f5a3"}.fa-nimblr{--fa:"\f5a8"}.fa-rev{--fa:"\f5b2"}.fa-shopware{--fa:"\f5b5"}.fa-squarespace{--fa:"\f5be"}.fa-themeco{--fa:"\f5c6"}.fa-weebly{--fa:"\f5cc"}.fa-wix{--fa:"\f5cf"}.fa-ello{--fa:"\f5f1"}.fa-hackerrank{--fa:"\f5f7"}.fa-kaggle{--fa:"\f5fa"}.fa-markdown{--fa:"\f60f"}.fa-neos{--fa:"\f612"}.fa-zhihu{--fa:"\f63f"}.fa-alipay{--fa:"\f642"}.fa-the-red-yeti{--fa:"\f69d"}.fa-critical-role{--fa:"\f6c9"}.fa-d-and-d-beyond{--fa:"\f6ca"}.fa-dev{--fa:"\f6cc"}.fa-fantasy-flight-games{--fa:"\f6dc"}.fa-wizards-of-the-coast{--fa:"\f730"}.fa-think-peaks{--fa:"\f731"}.fa-reacteurope{--fa:"\f75d"}.fa-artstation{--fa:"\f77a"}.fa-atlassian{--fa:"\f77b"}.fa-canadian-maple-leaf{--fa:"\f785"}.fa-centos{--fa:"\f789"}.fa-confluence{--fa:"\f78d"}.fa-dhl{--fa:"\f790"}.fa-diaspora{--fa:"\f791"}.fa-fedex{--fa:"\f797"}.fa-fedora{--fa:"\f798"}.fa-figma{--fa:"\f799"}.fa-intercom{--fa:"\f7af"}.fa-invision{--fa:"\f7b0"}.fa-jira{--fa:"\f7b1"}.fa-mendeley{--fa:"\f7b3"}.fa-raspberry-pi{--fa:"\f7bb"}.fa-redhat{--fa:"\f7bc"}.fa-sketch{--fa:"\f7c6"}.fa-sourcetree{--fa:"\f7d3"}.fa-suse{--fa:"\f7d6"}.fa-ubuntu{--fa:"\f7df"}.fa-ups{--fa:"\f7e0"}.fa-usps{--fa:"\f7e1"}.fa-yarn{--fa:"\f7e3"}.fa-airbnb{--fa:"\f834"}.fa-battle-net{--fa:"\f835"}.fa-bootstrap{--fa:"\f836"}.fa-buffer{--fa:"\f837"}.fa-chromecast{--fa:"\f838"}.fa-evernote{--fa:"\f839"}.fa-itch-io{--fa:"\f83a"}.fa-salesforce{--fa:"\f83b"}.fa-speaker-deck{--fa:"\f83c"}.fa-symfony{--fa:"\f83d"}.fa-waze{--fa:"\f83f"}.fa-yammer{--fa:"\f840"}.fa-git-alt{--fa:"\f841"}.fa-stackpath{--fa:"\f842"}.fa-cotton-bureau{--fa:"\f89e"}.fa-buy-n-large{--fa:"\f8a6"}.fa-mdb{--fa:"\f8ca"}.fa-orcid{--fa:"\f8d2"}.fa-swift{--fa:"\f8e1"}.fa-umbraco{--fa:"\f8e8"}:host,:root{--fa-font-regular:normal 400 1em/1 var(--fa-family-classic)}@font-face{font-family:"Font Awesome 7 Free";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-regular-400.woff2)}.far{--fa-family:var(--fa-family-classic)}.fa-regular,.far{--fa-style:400}:host,:root{--fa-family-classic:"Font Awesome 7 Free";--fa-font-solid:normal 900 1em/1 var(--fa-family-classic);--fa-style-family-classic:var(--fa-family-classic)}@font-face{font-family:"Font Awesome 7 Free";font-style:normal;font-weight:900;font-display:block;src:url(../webfonts/fa-solid-900.woff2)}.fas{--fa-style:900}.fa-classic,.fas{--fa-family:var(--fa-family-classic)}.fa-solid{--fa-style:900}@font-face{font-family:"Font Awesome 5 Brands";font-display:block;font-weight:400;src:url(../webfonts/fa-brands-400.woff2) format("woff2")}@font-face{font-family:"Font Awesome 5 Free";font-display:block;font-weight:900;src:url(../webfonts/fa-solid-900.woff2) format("woff2")}@font-face{font-family:"Font Awesome 5 Free";font-display:block;font-weight:400;src:url(../webfonts/fa-regular-400.woff2) format("woff2")}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-solid-900.woff2) format("woff2")}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-brands-400.woff2) format("woff2")}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-regular-400.woff2) format("woff2");unicode-range:u+f003,u+f006,u+f014,u+f016-f017,u+f01a-f01b,u+f01d,u+f022,u+f03e,u+f044,u+f046,u+f05c-f05d,u+f06e,u+f070,u+f087-f088,u+f08a,u+f094,u+f096-f097,u+f09d,u+f0a0,u+f0a2,u+f0a4-f0a7,u+f0c5,u+f0c7,u+f0e5-f0e6,u+f0eb,u+f0f6-f0f8,u+f10c,u+f114-f115,u+f118-f11a,u+f11c-f11d,u+f133,u+f147,u+f14e,u+f150-f152,u+f185-f186,u+f18e,u+f190-f192,u+f196,u+f1c1-f1c9,u+f1d9,u+f1db,u+f1e3,u+f1ea,u+f1f7,u+f1f9,u+f20a,u+f247-f248,u+f24a,u+f24d,u+f255-f25b,u+f25d,u+f271-f274,u+f278,u+f27b,u+f28c,u+f28e,u+f29c,u+f2b5,u+f2b7,u+f2ba,u+f2bc,u+f2be,u+f2c0-f2c1,u+f2c3,u+f2d0,u+f2d2,u+f2d4,u+f2dc}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-v4compatibility.woff2) format("woff2");unicode-range:u+f041,u+f047,u+f065-f066,u+f07d-f07e,u+f080,u+f08b,u+f08e,u+f090,u+f09a,u+f0ac,u+f0ae,u+f0b2,u+f0d0,u+f0d6,u+f0e4,u+f0ec,u+f10a-f10b,u+f123,u+f13e,u+f148-f149,u+f14c,u+f156,u+f15e,u+f160-f161,u+f163,u+f175-f178,u+f195,u+f1f8,u+f219,u+f27a} \ No newline at end of file diff --git a/themes/grav/css/fork-awesome-shim.css b/themes/grav/css/fork-awesome-shim.css new file mode 100644 index 00000000..2ba34872 --- /dev/null +++ b/themes/grav/css/fork-awesome-shim.css @@ -0,0 +1,651 @@ +/*! + * ForkAwesome to FontAwesome 7 Compatibility Shim + * Version: 1.0.0 + * + * This CSS shim provides compatibility for ForkAwesome 1.1.5 classes + * when migrating to FontAwesome 7 + */ + +/* Base Font Family Override */ +.fa { + font-family: 'Font Awesome 7 Free' , 'Font Awesome 7 Brands' !important; + font-weight: 900 !important; /* Default to solid style */ +} + +/* Utility Classes */ +.fa-fw { + width: 1.25em !important; + text-align: center !important; +} + +.fa-ul { + padding-left: 0 !important; + margin-left: 2.5em !important; + list-style-type: none !important; +} + +.fa-ul > li { + position: relative !important; +} + +.fa-li { + position: absolute !important; + left: -2.5em !important; + width: 2.5em !important; + text-align: center !important; +} + +.fa-border { + padding: .2em .25em .15em !important; + border: solid 0.08em #eee !important; + border-radius: .1em !important; +} + +.fa-pull-left { + float: left !important; + margin-right: .3em !important; +} + +.fa-pull-right { + float: right !important; + margin-left: .3em !important; +} + +.fa-spin { + animation: fa-spin 2s infinite linear !important; +} + +.fa-pulse { + animation: fa-spin 1s infinite steps(8) !important; +} + +@keyframes fa-spin { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} + +/* Size modifiers */ +.fa-lg { + font-size: 1.33333333em !important; + line-height: 0.75em !important; + vertical-align: -15% !important; +} + +.fa-2x { + font-size: 2em !important; +} + +.fa-3x { + font-size: 3em !important; +} + +.fa-4x { + font-size: 4em !important; +} + +.fa-5x { + font-size: 5em !important; +} + +/* Rotation & Flip */ +.fa-rotate-90 { + transform: rotate(90deg) !important; +} + +.fa-rotate-180 { + transform: rotate(180deg) !important; +} + +.fa-rotate-270 { + transform: rotate(270deg) !important; +} + +.fa-flip-horizontal { + transform: scale(-1, 1) !important; +} + +.fa-flip-vertical { + transform: scale(1, -1) !important; +} + +/* Stack Support */ +.fa-stack { + position: relative !important; + display: inline-block !important; + width: 2em !important; + height: 2em !important; + line-height: 2em !important; + vertical-align: middle !important; +} + +.fa-stack-1x, .fa-stack-2x { + position: absolute !important; + left: 0 !important; + width: 100% !important; + text-align: center !important; +} + +.fa-stack-1x { + line-height: inherit !important; +} + +.fa-stack-2x { + font-size: 2em !important; +} + +.fa-inverse { + color: #fff !important; +} + +/* Icon Remapping - Direct mappings */ +.fa.fa-home:before { content: "\f015"; } /* house */ +.fa.fa-warning:before { content: "\f071"; } /* triangle-exclamation */ +.fa.fa-close:before { content: "\f00d"; } /* xmark */ +.fa.fa-remove:before { content: "\f00d"; } /* xmark */ +.fa.fa-trash-o:before { content: "\f2ed"; } /* trash-can */ +.fa.fa-file-text-o:before { content: "\f15c"; } /* file-lines */ +.fa.fa-clock-o:before { content: "\f017"; } /* clock regular */ +.fa.fa-check-circle-o:before { content: "\f058"; } /* circle-check regular */ +.fa.fa-circle-o:before { content: "\f111"; } /* circle regular */ +.fa.fa-dot-circle-o:before { content: "\f192"; } /* circle-dot regular */ +.fa.fa-minus-square-o:before { content: "\f146"; } /* square-minus regular */ +.fa.fa-plus-square-o:before { content: "\f0fe"; } /* square-plus regular */ +.fa.fa-square-o:before { content: "\f0c8"; } /* square regular */ +.fa.fa-envelope-o:before { content: "\f0e0"; } /* envelope regular */ +.fa.fa-file-o:before { content: "\f15b"; } /* file regular */ +.fa.fa-file-text-o:before { content: "\f15c"; } /* file-lines regular */ +.fa.fa-file-audio-o:before { content: "\f1c7"; } /* file-audio regular */ +.fa.fa-file-photo-o:before { content: "\f1c5"; } /* file-image regular */ +.fa.fa-files-o:before { content: "\f0c5"; } /* copy regular */ +.fa.fa-folder-o:before { content: "\f07b"; } /* folder regular */ +.fa.fa-folder-open-o:before { content: "\f07c"; } /* folder-open regular */ +.fa.fa-heart-o:before { content: "\f004"; } /* heart regular */ +.fa.fa-star-o:before { content: "\f005"; } /* star regular */ +.fa.fa-star-half-o:before { content: "\f089"; } /* star-half regular */ +.fa.fa-user-o:before { content: "\f007"; } /* user regular */ +.fa.fa-bell-o:before { content: "\f0f3"; } /* bell regular */ +.fa.fa-bookmark-o:before { content: "\f02e"; } /* bookmark regular */ +.fa.fa-building-o:before { content: "\f1ad"; } /* building regular */ +.fa.fa-calendar-o:before { content: "\f133"; } /* calendar regular */ +.fa.fa-comment-o:before { content: "\f075"; } /* comment regular */ +.fa.fa-comments-o:before { content: "\f086"; } /* comments regular */ +.fa.fa-flag-o:before { content: "\f024"; } /* flag regular */ +.fa.fa-lemon-o:before { content: "\f094"; } /* lemon regular */ +.fa.fa-thumbs-up-o:before { content: "\f164"; } /* thumbs-up regular */ +.fa.fa-thumbs-down-o:before { content: "\f165"; } /* thumbs-down regular */ +.fa.fa-picture-o:before { content: "\f03e"; } /* image regular */ +.fa.fa-map-o:before { content: "\f279"; } /* map regular */ +.fa.fa-lightbulb-o:before { content: "\f0eb"; } /* lightbulb regular */ +.fa.fa-sign-out:before { content: "\f08b"; } /* arrow-right-from-bracket */ +.fa.fa-list-ol:before { content: "\f0cb"; } /* list-ol */ +.fa.fa-toggle-on:before { content: "\f205"; } /* toggle-on */ +.fa.fa-toggle-off:before { content: "\f204"; } /* toggle-off */ +.fa.fa-bell-slash-o:before { content: "\f1f6"; } /* bell-slash regular */ +.fa.fa-paper-plane-o:before { content: "\f1d8"; } /* paper-plane regular */ +.fa.fa-keyboard-o:before { content: "\f11c"; } /* keyboard regular */ +.fa.fa-pencil-square-o:before { content: "\f044"; } /* pen-to-square regular */ +.fa.fa-smile-o:before { content: "\f118"; } /* face-smile regular */ +.fa.fa-hdd-o:before { content: "\f0a0"; } /* hard-drive regular */ + +/* Icon Remapping - Name changes */ +.fa.fa-home:before { content: "\f015"; } /* house */ +.fa.fa-gear:before { content: "\f013"; } /* gear */ +.fa.fa-gears:before { content: "\f085"; } /* gears */ +.fa.fa-remove:before { content: "\f00d"; } /* xmark */ +.fa.fa-close:before { content: "\f00d"; } /* xmark */ +.fa.fa-warning:before { content: "\f071"; } /* triangle-exclamation */ +.fa.fa-exclamation-triangle:before { content: "\f071"; } /* triangle-exclamation */ +.fa.fa-exclamation-circle:before { content: "\f06a"; } /* circle-exclamation */ +.fa.fa-check-circle:before { content: "\f058"; } /* circle-check */ +.fa.fa-times-circle:before { content: "\f057"; } /* circle-xmark */ +.fa.fa-times-circle-o:before { content: "\f057"; } /* circle-xmark regular */ +.fa.fa-chevron-circle-left:before { content: "\f137"; } /* circle-chevron-left */ +.fa.fa-chevron-circle-right:before { content: "\f138"; } /* circle-chevron-right */ +.fa.fa-chevron-circle-up:before { content: "\f139"; } /* circle-chevron-up */ +.fa.fa-chevron-circle-down:before { content: "\f13a"; } /* circle-chevron-down */ +.fa.fa-arrow-circle-left:before { content: "\f0a8"; } /* circle-arrow-left */ +.fa.fa-arrow-circle-right:before { content: "\f0a9"; } /* circle-arrow-right */ +.fa.fa-arrow-circle-up:before { content: "\f0aa"; } /* circle-arrow-up */ +.fa.fa-arrow-circle-down:before { content: "\f0ab"; } /* circle-arrow-down */ +.fa.fa-arrow-circle-o-left:before { content: "\f359"; } /* circle-left regular */ +.fa.fa-arrow-circle-o-right:before { content: "\f35a"; } /* circle-right regular */ +.fa.fa-arrow-circle-o-up:before { content: "\f358"; } /* circle-up regular */ +.fa.fa-arrow-circle-o-down:before { content: "\f356"; } /* circle-down regular */ +.fa.fa-mail-forward:before { content: "\f064"; } /* share */ +.fa.fa-mail-reply:before { content: "\f3e5"; } /* reply */ +.fa.fa-mail-reply-all:before { content: "\f122"; } /* reply-all */ +.fa.fa-chain:before { content: "\f0c1"; } /* link */ +.fa.fa-chain-broken:before { content: "\f127"; } /* link-slash */ +.fa.fa-shield:before { content: "\f3ed"; } /* shield */ +.fa.fa-calendar-o:before { content: "\f133"; } /* calendar regular */ +.fa.fa-ticket:before { content: "\f3ff"; } /* ticket-simple */ +.fa.fa-minus-square-o:before { content: "\f146"; } /* square-minus regular */ +.fa.fa-plus-square-o:before { content: "\f0fe"; } /* square-plus regular */ +.fa.fa-level-up:before { content: "\f3bf"; } /* turn-up */ +.fa.fa-level-down:before { content: "\f3be"; } /* turn-down */ +.fa.fa-pencil-square-o:before { content: "\f044"; } /* pen-to-square regular */ +.fa.fa-external-link:before { content: "\f35d"; } /* up-right-from-square */ +.fa.fa-compass:before { content: "\f14e"; } /* compass */ +.fa.fa-caret-square-o-down:before { content: "\f150"; } /* square-caret-down regular */ +.fa.fa-caret-square-o-up:before { content: "\f151"; } /* square-caret-up regular */ +.fa.fa-caret-square-o-right:before { content: "\f152"; } /* square-caret-right regular */ +.fa.fa-eur:before, .fa.fa-euro:before { content: "\f153"; } /* euro-sign */ +.fa.fa-gbp:before { content: "\f154"; } /* sterling-sign */ +.fa.fa-usd:before, .fa.fa-dollar:before { content: "\f155"; } /* dollar-sign */ +.fa.fa-inr:before, .fa.fa-rupee:before { content: "\e1bc"; } /* indian-rupee-sign */ +.fa.fa-jpy:before, .fa.fa-cny:before, .fa.fa-rmb:before, .fa.fa-yen:before { content: "\f157"; } /* yen-sign */ +.fa.fa-rub:before, .fa.fa-ruble:before, .fa.fa-rouble:before { content: "\f158"; } /* ruble-sign */ +.fa.fa-krw:before, .fa.fa-won:before { content: "\f159"; } /* won-sign */ +.fa.fa-btc:before, .fa.fa-bitcoin:before { content: "\f15a"; } /* bitcoin */ +.fa.fa-youtube-play:before { content: "\f167"; } /* youtube */ +.fa.fa-adn:before { content: "\f170"; } /* adn */ +.fa.fa-bitbucket-square:before { content: "\f171"; } /* bitbucket */ +.fa.fa-long-arrow-down:before { content: "\f309"; } /* arrow-down-long */ +.fa.fa-long-arrow-up:before { content: "\f30c"; } /* arrow-up-long */ +.fa.fa-long-arrow-left:before { content: "\f30a"; } /* arrow-left-long */ +.fa.fa-long-arrow-right:before { content: "\f30b"; } /* arrow-right-long */ +.fa.fa-apple:before { content: "\f179"; } /* apple */ +.fa.fa-windows:before { content: "\f17a"; } /* windows */ +.fa.fa-android:before { content: "\f17b"; } /* android */ +.fa.fa-linux:before { content: "\f17c"; } /* linux */ +.fa.fa-dribbble:before { content: "\f17d"; } /* dribbble */ +.fa.fa-skype:before { content: "\f17e"; } /* skype */ +.fa.fa-foursquare:before { content: "\f180"; } /* foursquare */ +.fa.fa-trello:before { content: "\f181"; } /* trello */ +.fa.fa-gratipay:before { content: "\f184"; } /* gratipay */ +.fa.fa-gittip:before { content: "\f184"; } /* gratipay */ +.fa.fa-sun-o:before { content: "\f185"; } /* sun regular */ +.fa.fa-moon-o:before { content: "\f186"; } /* moon regular */ +.fa.fa-vk:before { content: "\f189"; } /* vk */ +.fa.fa-weibo:before { content: "\f18a"; } /* weibo */ +.fa.fa-renren:before { content: "\f18b"; } /* renren */ +.fa.fa-pagelines:before { content: "\f18c"; } /* pagelines */ +.fa.fa-stack-exchange:before { content: "\f18d"; } /* stack-exchange */ +.fa.fa-arrow-circle-o-right:before { content: "\f35a"; } /* circle-right regular */ +.fa.fa-arrow-circle-o-left:before { content: "\f359"; } /* circle-left regular */ +.fa.fa-caret-square-o-left:before { content: "\f191"; } /* square-caret-left regular */ +.fa.fa-toggle-left:before { content: "\f191"; } /* square-caret-left regular */ +.fa.fa-dot-circle-o:before { content: "\f192"; } /* circle-dot regular */ +.fa.fa-vimeo-square:before { content: "\f194"; } /* vimeo */ +.fa.fa-try:before, .fa.fa-turkish-lira:before { content: "\e2bb"; } /* turkish-lira-sign */ +.fa.fa-plus-square-o:before { content: "\f0fe"; } /* square-plus regular */ +.fa.fa-slack:before { content: "\f198"; } /* slack */ +.fa.fa-wordpress:before { content: "\f19a"; } /* wordpress */ +.fa.fa-openid:before { content: "\f19b"; } /* openid */ +.fa.fa-institution:before, .fa.fa-bank:before, .fa.fa-university:before { content: "\f19c"; } /* building-columns */ +.fa.fa-mortar-board:before, .fa.fa-graduation-cap:before { content: "\f19d"; } /* graduation-cap */ +.fa.fa-yahoo:before { content: "\f19e"; } /* yahoo */ +.fa.fa-google:before { content: "\f1a0"; } /* google */ +.fa.fa-reddit:before { content: "\f1a1"; } /* reddit */ +.fa.fa-reddit-square:before { content: "\f1a2"; } /* reddit-square */ +.fa.fa-stumbleupon-circle:before { content: "\f1a3"; } /* stumbleupon-circle */ +.fa.fa-stumbleupon:before { content: "\f1a4"; } /* stumbleupon */ +.fa.fa-delicious:before { content: "\f1a5"; } /* delicious */ +.fa.fa-digg:before { content: "\f1a6"; } /* digg */ +.fa.fa-pied-piper-pp:before { content: "\f1a7"; } /* pied-piper-pp */ +.fa.fa-pied-piper-alt:before { content: "\f1a8"; } /* pied-piper-alt */ +.fa.fa-drupal:before { content: "\f1a9"; } /* drupal */ +.fa.fa-joomla:before { content: "\f1aa"; } /* joomla */ +.fa.fa-behance:before { content: "\f1b4"; } /* behance */ +.fa.fa-behance-square:before { content: "\f1b5"; } /* behance-square */ +.fa.fa-steam:before { content: "\f1b6"; } /* steam */ +.fa.fa-steam-square:before { content: "\f1b7"; } /* steam-square */ +.fa.fa-spotify:before { content: "\f1bc"; } /* spotify */ +.fa.fa-deviantart:before { content: "\f1bd"; } /* deviantart */ +.fa.fa-soundcloud:before { content: "\f1be"; } /* soundcloud */ +.fa.fa-vine:before { content: "\f1ca"; } /* vine */ +.fa.fa-codepen:before { content: "\f1cb"; } /* codepen */ +.fa.fa-jsfiddle:before { content: "\f1cc"; } /* jsfiddle */ +.fa.fa-life-ring:before, .fa.fa-life-bouy:before, .fa.fa-life-buoy:before, .fa.fa-life-saver:before, .fa.fa-support:before { content: "\f1cd"; } /* life-ring */ +.fa.fa-circle-o-notch:before { content: "\f1ce"; } /* circle-notch */ +.fa.fa-rebel:before, .fa.fa-ra:before, .fa.fa-resistance:before { content: "\f1d0"; } /* rebel */ +.fa.fa-empire:before, .fa.fa-ge:before { content: "\f1d1"; } /* empire */ +.fa.fa-git-square:before { content: "\f1d2"; } /* git-square */ +.fa.fa-git:before { content: "\f1d3"; } /* git */ +.fa.fa-hacker-news:before, .fa.fa-y-combinator-square:before, .fa.fa-yc-square:before { content: "\f1d4"; } /* hacker-news */ +.fa.fa-tencent-weibo:before { content: "\f1d5"; } /* tencent-weibo */ +.fa.fa-qq:before { content: "\f1d6"; } /* qq */ +.fa.fa-weixin:before, .fa.fa-wechat:before { content: "\f1d7"; } /* weixin */ +.fa.fa-paper-plane:before, .fa.fa-send:before { content: "\f1d8"; } /* paper-plane */ +.fa.fa-paper-plane-o:before, .fa.fa-send-o:before { content: "\f1d8"; } /* paper-plane regular */ +.fa.fa-circle-thin:before { content: "\f111"; } /* circle regular */ +.fa.fa-header:before { content: "\f1dc"; } /* heading */ +.fa.fa-futbol-o:before, .fa.fa-soccer-ball-o:before { content: "\f1e3"; } /* futbol regular */ +.fa.fa-tty:before { content: "\f1e4"; } /* tty */ +.fa.fa-binoculars:before { content: "\f1e5"; } /* binoculars */ +.fa.fa-plug:before { content: "\f1e6"; } /* plug */ +.fa.fa-slideshare:before { content: "\f1e7"; } /* slideshare */ +.fa.fa-twitch:before { content: "\f1e8"; } /* twitch */ +.fa.fa-yelp:before { content: "\f1e9"; } /* yelp */ +.fa.fa-newspaper-o:before { content: "\f1ea"; } /* newspaper regular */ +.fa.fa-wifi:before { content: "\f1eb"; } /* wifi */ +.fa.fa-paypal:before { content: "\f1ed"; } /* paypal */ +.fa.fa-google-wallet:before { content: "\f1ee"; } /* google-wallet */ +.fa.fa-cc-visa:before { content: "\f1f0"; } /* cc-visa */ +.fa.fa-cc-mastercard:before { content: "\f1f1"; } /* cc-mastercard */ +.fa.fa-cc-discover:before { content: "\f1f2"; } /* cc-discover */ +.fa.fa-cc-amex:before { content: "\f1f3"; } /* cc-amex */ +.fa.fa-cc-paypal:before { content: "\f1f4"; } /* cc-paypal */ +.fa.fa-cc-stripe:before { content: "\f1f5"; } /* cc-stripe */ +.fa.fa-bell-slash:before { content: "\f1f6"; } /* bell-slash */ +.fa.fa-bell-slash-o:before { content: "\f1f6"; } /* bell-slash regular */ +.fa.fa-cc:before { content: "\f20a"; } /* closed-captioning regular */ +.fa.fa-ils:before, .fa.fa-shekel:before, .fa.fa-sheqel:before { content: "\f20b"; } /* shekel-sign */ +.fa.fa-meanpath:before { content: "\f20c"; } /* font-awesome */ +.fa.fa-buysellads:before { content: "\f20d"; } /* buysellads */ +.fa.fa-connectdevelop:before { content: "\f20e"; } /* connectdevelop */ +.fa.fa-dashcube:before { content: "\f210"; } /* dashcube */ +.fa.fa-forumbee:before { content: "\f211"; } /* forumbee */ +.fa.fa-leanpub:before { content: "\f212"; } /* leanpub */ +.fa.fa-sellsy:before { content: "\f213"; } /* sellsy */ +.fa.fa-shirtsinbulk:before { content: "\f214"; } /* shirtsinbulk */ +.fa.fa-simplybuilt:before { content: "\f215"; } /* simplybuilt */ +.fa.fa-skyatlas:before { content: "\f216"; } /* skyatlas */ +.fa.fa-diamond:before { content: "\f3a5"; } /* gem */ +.fa.fa-intersex:before, .fa.fa-transgender:before { content: "\f224"; } /* mars-and-venus */ +.fa.fa-transgender-alt:before { content: "\f225"; } /* transgender */ +.fa.fa-pinterest-p:before { content: "\f231"; } /* pinterest-p */ +.fa.fa-whatsapp:before { content: "\f232"; } /* whatsapp */ +.fa.fa-hotel:before, .fa.fa-bed:before { content: "\f236"; } /* bed */ +.fa.fa-viacoin:before { content: "\f237"; } /* viacoin */ +.fa.fa-medium:before { content: "\f23a"; } /* medium */ +.fa.fa-y-combinator:before, .fa.fa-yc:before { content: "\f23b"; } /* y-combinator */ +.fa.fa-optin-monster:before { content: "\f23c"; } /* optin-monster */ +.fa.fa-opencart:before { content: "\f23d"; } /* opencart */ +.fa.fa-expeditedssl:before { content: "\f23e"; } /* expeditedssl */ +.fa.fa-battery-4:before, .fa.fa-battery:before, .fa.fa-battery-full:before { content: "\f240"; } /* battery-full */ +.fa.fa-battery-3:before, .fa.fa-battery-three-quarters:before { content: "\f241"; } /* battery-three-quarters */ +.fa.fa-battery-2:before, .fa.fa-battery-half:before { content: "\f242"; } /* battery-half */ +.fa.fa-battery-1:before, .fa.fa-battery-quarter:before { content: "\f243"; } /* battery-quarter */ +.fa.fa-battery-0:before, .fa.fa-battery-empty:before { content: "\f244"; } /* battery-empty */ +.fa.fa-sticky-note:before { content: "\f249"; } /* note-sticky */ +.fa.fa-sticky-note-o:before { content: "\f249"; } /* note-sticky regular */ +.fa.fa-cc-jcb:before { content: "\f24b"; } /* cc-jcb */ +.fa.fa-cc-diners-club:before { content: "\f24c"; } /* cc-diners-club */ +.fa.fa-clone:before { content: "\f24d"; } /* clone */ +.fa.fa-hourglass-o:before { content: "\f254"; } /* hourglass regular */ +.fa.fa-hourglass-1:before, .fa.fa-hourglass-start:before { content: "\f251"; } /* hourglass-start */ +.fa.fa-hourglass-2:before, .fa.fa-hourglass-half:before { content: "\f252"; } /* hourglass-half */ +.fa.fa-hourglass-3:before, .fa.fa-hourglass-end:before { content: "\f253"; } /* hourglass-end */ +.fa.fa-hand-rock-o:before { content: "\f255"; } /* hand-back-fist regular */ +.fa.fa-hand-grab-o:before, .fa.fa-hand-stop-o:before { content: "\f256"; } /* hand regular */ +.fa.fa-hand-paper-o:before { content: "\f256"; } /* hand regular */ +.fa.fa-hand-scissors-o:before { content: "\f257"; } /* hand-scissors regular */ +.fa.fa-hand-lizard-o:before { content: "\f258"; } /* hand-lizard regular */ +.fa.fa-hand-spock-o:before { content: "\f259"; } /* hand-spock regular */ +.fa.fa-hand-pointer-o:before { content: "\f25a"; } /* hand-pointer regular */ +.fa.fa-hand-peace-o:before { content: "\f25b"; } /* hand-peace regular */ +.fa.fa-registered:before { content: "\f25d"; } /* registered regular */ +.fa.fa-creative-commons:before { content: "\f25e"; } /* creative-commons */ +.fa.fa-gg:before { content: "\f260"; } /* gg */ +.fa.fa-gg-circle:before { content: "\f261"; } /* gg-circle */ +.fa.fa-odnoklassniki:before { content: "\f263"; } /* odnoklassniki */ +.fa.fa-odnoklassniki-square:before { content: "\f264"; } /* odnoklassniki-square */ +.fa.fa-get-pocket:before { content: "\f265"; } /* get-pocket */ +.fa.fa-wikipedia-w:before { content: "\f266"; } /* wikipedia-w */ +.fa.fa-safari:before { content: "\f267"; } /* safari */ +.fa.fa-chrome:before { content: "\f268"; } /* chrome */ +.fa.fa-firefox:before { content: "\f269"; } /* firefox */ +.fa.fa-opera:before { content: "\f26a"; } /* opera */ +.fa.fa-internet-explorer:before { content: "\f26b"; } /* internet-explorer */ +.fa.fa-television:before, .fa.fa-tv:before { content: "\f26c"; } /* tv */ +.fa.fa-contao:before { content: "\f26d"; } /* contao */ +.fa.fa-500px:before { content: "\f26e"; } /* 500px */ +.fa.fa-amazon:before { content: "\f270"; } /* amazon */ +.fa.fa-calendar-plus-o:before { content: "\f271"; } /* calendar-plus regular */ +.fa.fa-calendar-minus-o:before { content: "\f272"; } /* calendar-minus regular */ +.fa.fa-calendar-times-o:before { content: "\f273"; } /* calendar-xmark regular */ +.fa.fa-calendar-check-o:before { content: "\f274"; } /* calendar-check regular */ +.fa.fa-map-o:before { content: "\f279"; } /* map regular */ +.fa.fa-commenting:before { content: "\f4ad"; } /* comment-dots */ +.fa.fa-commenting-o:before { content: "\f4ad"; } /* comment-dots regular */ +.fa.fa-houzz:before { content: "\f27c"; } /* houzz */ +.fa.fa-vimeo:before { content: "\f27d"; } /* vimeo-v */ +.fa.fa-black-tie:before { content: "\f27e"; } /* black-tie */ +.fa.fa-fonticons:before { content: "\f280"; } /* fonticons */ +.fa.fa-reddit-alien:before { content: "\f281"; } /* reddit-alien */ +.fa.fa-edge:before { content: "\f282"; } /* edge */ +.fa.fa-codiepie:before { content: "\f284"; } /* codiepie */ +.fa.fa-modx:before { content: "\f285"; } /* modx */ +.fa.fa-fort-awesome:before { content: "\f286"; } /* fort-awesome */ +.fa.fa-usb:before { content: "\f287"; } /* usb */ +.fa.fa-product-hunt:before { content: "\f288"; } /* product-hunt */ +.fa.fa-mixcloud:before { content: "\f289"; } /* mixcloud */ +.fa.fa-scribd:before { content: "\f28a"; } /* scribd */ +.fa.fa-pause-circle-o:before { content: "\f28c"; } /* circle-pause regular */ +.fa.fa-stop-circle:before { content: "\f28d"; } /* circle-stop */ +.fa.fa-stop-circle-o:before { content: "\f28d"; } /* circle-stop regular */ +.fa.fa-bluetooth:before { content: "\f293"; } /* bluetooth */ +.fa.fa-bluetooth-b:before { content: "\f294"; } /* bluetooth-b */ +.fa.fa-gitlab:before { content: "\f296"; } /* gitlab */ +.fa.fa-wpbeginner:before { content: "\f297"; } /* wpbeginner */ +.fa.fa-wpforms:before { content: "\f298"; } /* wpforms */ +.fa.fa-envira:before { content: "\f299"; } /* envira */ +.fa.fa-wheelchair-alt:before { content: "\f368"; } /* accessible-icon */ +.fa.fa-question-circle-o:before { content: "\f059"; } /* circle-question regular */ +.fa.fa-blind:before { content: "\f29d"; } /* person-walking-with-cane */ +.fa.fa-audio-description:before { content: "\f29e"; } /* audio-description */ +.fa.fa-phone-volume:before, .fa.fa-volume-control-phone:before { content: "\f2a0"; } /* phone-volume */ +.fa.fa-braille:before { content: "\f2a1"; } /* braille */ +.fa.fa-assistive-listening-systems:before { content: "\f2a2"; } /* assistive-listening-systems */ +.fa.fa-american-sign-language-interpreting:before, .fa.fa-asl-interpreting:before { content: "\f2a3"; } /* hands-asl-interpreting */ +.fa.fa-deaf:before, .fa.fa-deafness:before, .fa.fa-hard-of-hearing:before { content: "\f2a4"; } /* ear-deaf */ +.fa.fa-glide:before { content: "\f2a5"; } /* glide */ +.fa.fa-glide-g:before { content: "\f2a6"; } /* glide-g */ +.fa.fa-sign-language:before, .fa.fa-signing:before { content: "\f2a7"; } /* hands */ +.fa.fa-viadeo:before { content: "\f2a9"; } /* viadeo */ +.fa.fa-viadeo-square:before { content: "\f2aa"; } /* viadeo-square */ +.fa.fa-snapchat:before { content: "\f2ab"; } /* snapchat */ +.fa.fa-snapchat-ghost:before { content: "\f2ac"; } /* snapchat */ +.fa.fa-snapchat-square:before { content: "\f2ad"; } /* snapchat-square */ +.fa.fa-pied-piper:before { content: "\f2ae"; } /* pied-piper */ +.fa.fa-first-order:before { content: "\f2b0"; } /* first-order */ +.fa.fa-yoast:before { content: "\f2b1"; } /* yoast */ +.fa.fa-themeisle:before { content: "\f2b2"; } /* themeisle */ +.fa.fa-google-plus-official:before, .fa.fa-google-plus-circle:before { content: "\f2b3"; } /* google-plus */ +.fa.fa-fa:before, .fa.fa-font-awesome:before { content: "\f2b4"; } /* font-awesome */ +.fa.fa-user-o:before { content: "\f007"; } /* user regular */ +.fa.fa-id-badge:before { content: "\f2c1"; } /* id-badge */ +.fa.fa-id-badge-o:before { content: "\f2c1"; } /* id-badge regular */ +.fa.fa-id-card:before { content: "\f2c2"; } /* id-card */ +.fa.fa-id-card-o:before { content: "\f2c2"; } /* id-card regular */ +.fa.fa-quora:before { content: "\f2c4"; } /* quora */ +.fa.fa-free-code-camp:before { content: "\f2c5"; } /* free-code-camp */ +.fa.fa-telegram:before { content: "\f2c6"; } /* telegram */ +.fa.fa-shower:before { content: "\f2cc"; } /* shower */ +.fa.fa-bath:before, .fa.fa-bathtub:before, .fa.fa-s15:before { content: "\f2cd"; } /* bath */ +.fa.fa-imdb:before { content: "\f2d8"; } /* imdb */ +.fa.fa-ravelry:before { content: "\f2d9"; } /* ravelry */ +.fa.fa-eercast:before { content: "\f2da"; } /* sellcast */ +.fa.fa-linode:before { content: "\f2b8"; } /* linode */ +.fa.fa-address-book-o:before { content: "\f2b9"; } /* address-book regular */ +.fa.fa-address-card-o:before { content: "\f2bb"; } /* address-card regular */ +.fa.fa-user-circle-o:before { content: "\f2bd"; } /* circle-user regular */ +.fa.fa-user-circle:before { content: "\f2bd"; } /* circle-user */ +.fa.fa-bandcamp:before { content: "\f2d5"; } /* bandcamp */ +/*.fa.fa-grav:before { content: "\f2d6"; } !* grav *!*/ +.fa.fa-etsy:before { content: "\f2d7"; } /* etsy */ +.fa.fa-meetup:before { content: "\f2e0"; } /* meetup */ + +/* Brands requiring explicit font-family */ +.fa.fa-twitter:before { content: "\e61b"; } /* x-twitter */ +.fa.fa-facebook-square:before { content: "\f082"; } /* square-facebook */ +.fa.fa-facebook:before { content: "\f09a"; } /* facebook */ +.fa.fa-github:before { content: "\f09b"; } /* github */ +.fa.fa-github-square:before { content: "\f092"; } /* square-github */ +.fa.fa-google-plus:before { content: "\f0d5"; } /* google-plus */ +.fa.fa-google-plus-square:before { content: "\f0d4"; } /* square-google-plus */ +.fa.fa-linkedin:before { content: "\f08c"; } /* linkedin */ +.fa.fa-linkedin-square:before { content: "\f08c"; } /* square-linkedin */ +.fa.fa-pinterest:before { content: "\f0d2"; } /* pinterest */ +.fa.fa-pinterest-square:before { content: "\f0d3"; } /* square-pinterest */ +.fa.fa-reddit-square:before { content: "\f1a2"; } /* square-reddit */ +.fa.fa-tumblr:before { content: "\f173"; } /* tumblr */ +.fa.fa-tumblr-square:before { content: "\f174"; } /* square-tumblr */ +.fa.fa-twitter-square:before { content: "\e61a"; } /* square-x-twitter */ +.fa.fa-vimeo-square:before { content: "\f194"; } /* square-vimeo */ +.fa.fa-youtube:before { content: "\f167"; } /* youtube */ +.fa.fa-youtube-square:before { content: "\f431"; } /* square-youtube */ +.fa.fa-xing:before { content: "\f168"; } /* xing */ +.fa.fa-xing-square:before { content: "\f169"; } /* square-xing */ +.fa.fa-unsplash:before { content: "\e07c"; } /* unsplash */ +.fa.fa-artstation:before { content: "\f77a"; } /* artstation */ +.fa.fa-cc-by:before { content: "\f4e7"; } /* creative-commons-by */ +.fa.fa-cc-nc:before { content: "\f4e8"; } /* creative-commons-nc */ +.fa.fa-cc-nc-eu:before { content: "\f4e9"; } /* creative-commons-nc-eu */ +.fa.fa-cc-nc-jp:before { content: "\f4ea"; } /* creative-commons-nc-jp */ +.fa.fa-cc-nd:before { content: "\f4eb"; } /* creative-commons-nd */ +.fa.fa-cc-pd:before { content: "\f4ec"; } /* creative-commons-pd */ +.fa.fa-cc-remix:before { content: "\f4ee"; } /* creative-commons-remix */ +.fa.fa-cc-sa:before { content: "\f4ef"; } /* creative-commons-sa */ +.fa.fa-cc-share:before { content: "\f4f1"; } /* creative-commons-share */ +.fa.fa-cc-zero:before { content: "\f4f3"; } /* creative-commons-zero */ +.fa.fa-digitalocean:before { content: "\f391"; } /* digital-ocean */ +.fa.fa-discord:before { content: "\f392"; } /* discord */ +.fa.fa-ethereum:before { content: "\f42e"; } /* ethereum */ +.fa.fa-f-droid:before { content: "\f17b"; } /* android */ +.fa.fa-facebook-messenger:before { content: "\f39f"; } /* facebook-messenger */ +.fa.fa-laravel:before { content: "\f3bd"; } /* laravel */ +.fa.fa-mastodon:before { content: "\f4f6"; } /* mastodon */ +.fa.fa-nodejs:before { content: "\f3d3"; } /* node-js */ +.fa.fa-orcid:before { content: "\f8d2"; } /* orcid */ +.fa.fa-patreon:before { content: "\f3d9"; } /* patreon */ +.fa.fa-php:before { content: "\f457"; } /* php */ +.fa.fa-python:before { content: "\f3e2"; } /* python */ +.fa.fa-react:before { content: "\f41b"; } /* react */ +.fa.fa-researchgate:before { content: "\f4f8"; } /* researchgate */ +.fa.fa-signal:before { content: "\f694"; } /* signal-messenger */ + + +/* Fork Awesome specific icon fallbacks */ +.fa.fa-activitypub:before { content: "\f1e0"; } /* share-nodes */ +.fa.fa-archive-org:before { content: "\f19c"; } /* building-columns */ +.fa.fa-biometric:before { content: "\f577"; } /* fingerprint */ +.fa.fa-c:before { content: "\43"; } /* letter C fallback */ +.fa.fa-dat:before { content: "\f1c0"; } /* database */ +.fa.fa-diaspora:before { content: "\f069"; } /* asterisk */ +.fa.fa-emby:before { content: "\f144"; } /* play-circle */ +.fa.fa-foster:before { content: "\e58b"; } /* hands-holding-child */ +.fa.fa-friendica:before { content: "\f0c0"; } /* users */ +.fa.fa-galaxy:before { content: "\f135"; } /* rocket */ +.fa.fa-gimp:before { content: "\f53f"; } /* palette */ +.fa.fa-gitea:before { content: "\f0f4"; } /* mug-hot */ +.fa.fa-gnu-social:before { content: "\e60c"; } /* gnu */ +.fa.fa-google-auth:before { content: "\f3ed"; } /* shield */ +.fa.fa-hackaday:before { content: "\f0ad"; } /* wrench */ +.fa.fa-hackster:before { content: "\f2db"; } /* microchip */ +.fa.fa-inkscape:before { content: "\f5c3"; } /* pen-nib */ +.fa.fa-jirafeau:before { content: "\f064"; } /* share */ +.fa.fa-joplin:before { content: "\f02d"; } /* book */ +.fa.fa-jsdelivr:before { content: "\f48b"; } /* truck-fast */ +.fa.fa-keybase:before { content: "\f084"; } /* key */ +.fa.fa-liberapay:before { content: "\f4b9"; } /* hand-holding-heart */ +.fa.fa-libreoffice:before { content: "\f1c2"; } /* file-word */ +.fa.fa-line-graph:before { content: "\f201"; } /* chart-line */ +.fa.fa-matrix-org:before { content: "\f4ad"; } /* comment-dots */ +.fa.fa-nextcloud:before { content: "\f0c2"; } /* cloud */ +.fa.fa-peertube:before { content: "\f03d"; } /* video */ +.fa.fa-pi-hole:before { content: "\f3ed"; } /* shield-halved */ +.fa.fa-pixelfed:before { content: "\f083"; } /* camera-retro */ +.fa.fa-plume:before { content: "\f56b"; } /* feather */ +.fa.fa-postgresql:before { content: "\f1c0"; } /* database */ +.fa.fa-riot:before { content: "\f086"; } /* comments */ +.fa.fa-scuttlebutt:before { content: "\f578"; } /* fish */ +.fa.fa-sketchfab:before { content: "\f1b2"; } /* cube */ +.fa.fa-snowdrift:before { content: "\f2dc"; } /* snowflake */ +.fa.fa-social-home:before { content: "\e57f"; } /* house-user */ +.fa.fa-syncthing:before { content: "\f2f1"; } /* arrows-rotate */ +.fa.fa-tex:before { content: "\f121"; } /* code */ +.fa.fa-tor:before { content: "\f4f5"; } /* user-secret */ + +.fa.fa-vagrant:before { content: "\56"; } /* letter V fallback */ +.fa.fa-vscode:before { content: "\f121"; } /* code */ +.fa.fa-xmpp:before { content: "\f075"; } /* comment */ +.fa.fa-zotero:before { content: "\f02e"; } /* bookmark */ + +/* Additional common icons from Grav admin usage */ +.fa.fa-paint-brush:before { content: "\f53c"; } /* paintbrush */ +.fa.fa-birthday-cake:before { content: "\f1fd"; } /* cake-candles */ +.fa.fa-chart-pie:before { content: "\f200"; } /* chart-pie */ +.fa.fa-chart-line:before { content: "\f201"; } /* chart-line */ +.fa.fa-toggle-off:before { content: "\f204"; } /* toggle-off */ +.fa.fa-toggle-on:before { content: "\f205"; } /* toggle-on */ +.fa.fa-bicycle:before { content: "\f206"; } /* bicycle */ +.fa.fa-bus:before { content: "\f207"; } /* bus */ +.fa.fa-closed-captioning:before { content: "\f20a"; } /* closed-captioning regular */ +.fa.fa-shekel:before, .fa.fa-sheqel:before, .fa.fa-ils:before { content: "\f20b"; } /* shekel-sign */ +.fa.fa-cart-plus:before { content: "\f217"; } /* cart-plus */ +.fa.fa-cart-arrow-down:before { content: "\f218"; } /* cart-arrow-down */ +.fa.fa-ship:before { content: "\f21a"; } /* ship */ +.fa.fa-user-secret:before { content: "\f21b"; } /* user-secret */ +.fa.fa-motorcycle:before { content: "\f21c"; } /* motorcycle */ +.fa.fa-street-view:before { content: "\f21d"; } /* street-view */ +.fa.fa-heartbeat:before { content: "\f21e"; } /* heart-pulse */ +.fa.fa-venus:before { content: "\f221"; } /* venus */ +.fa.fa-mars:before { content: "\f222"; } /* mars */ +.fa.fa-mercury:before { content: "\f223"; } /* mercury */ +.fa.fa-transgender:before { content: "\f224"; } /* mars-and-venus */ +.fa.fa-transgender-alt:before { content: "\f225"; } /* transgender */ +.fa.fa-venus-double:before { content: "\f226"; } /* venus-double */ +.fa.fa-mars-double:before { content: "\f227"; } /* mars-double */ +.fa.fa-venus-mars:before { content: "\f228"; } /* venus-mars */ +.fa.fa-mars-stroke:before { content: "\f229"; } /* mars-stroke */ +.fa.fa-mars-stroke-v:before { content: "\f22a"; } /* mars-stroke-up */ +.fa.fa-mars-stroke-h:before { content: "\f22b"; } /* mars-stroke-right */ +.fa.fa-neuter:before { content: "\f22c"; } /* neuter */ +.fa.fa-genderless:before { content: "\f22d"; } /* genderless */ +.fa.fa-server:before { content: "\f233"; } /* server */ +.fa.fa-user-plus:before { content: "\f234"; } /* user-plus */ +.fa.fa-user-times:before { content: "\f235"; } /* user-xmark */ +.fa.fa-vcard:before, .fa.fa-vcard-o:before { content: "\f2bb"; } /* address-card */ +.fa.fa-balance-scale:before { content: "\f24e"; } /* scale-balanced */ +.fa.fa-balance-scale-left:before { content: "\f515"; } /* scale-unbalanced */ +.fa.fa-balance-scale-right:before { content: "\f516"; } /* scale-unbalanced-flip */ +.fa.fa-map-signs:before { content: "\f277"; } /* signs-post */ +.fa.fa-map-marker-alt:before { content: "\f3c5"; } /* location-dot */ +.fa.fa-mobile-phone:before, .fa.fa-mobile:before { content: "\f3cd"; } /* mobile-screen-button */ +.fa.fa-money:before { content: "\f3d1"; } /* money-bill */ +.fa.fa-euro-sign:before, .fa.fa-eur:before, .fa.fa-euro:before { content: "\f153"; } /* euro-sign */ +.fa.fa-pound-sign:before, .fa.fa-gbp:before { content: "\f154"; } /* sterling-sign */ +.fa.fa-dollar-sign:before, .fa.fa-dollar:before, .fa.fa-usd:before { content: "\f155"; } /* dollar-sign */ +.fa.fa-rupee-sign:before, .fa.fa-rupee:before, .fa.fa-inr:before { content: "\e1bc"; } /* indian-rupee-sign */ +.fa.fa-yen-sign:before, .fa.fa-cny:before, .fa.fa-rmb:before, .fa.fa-yen:before, .fa.fa-jpy:before { content: "\f157"; } /* yen-sign */ +.fa.fa-ruble-sign:before, .fa.fa-ruble:before, .fa.fa-rouble:before, .fa.fa-rub:before { content: "\f158"; } /* ruble-sign */ +.fa.fa-won-sign:before, .fa.fa-krw:before, .fa.fa-won:before { content: "\f159"; } /* won-sign */ +.fa.fa-lira-sign:before, .fa.fa-try:before { content: "\f195"; } /* turkish-lira-sign */ +.fa.fa-thermometer-empty:before { content: "\f2cb"; } /* temperature-empty */ +.fa.fa-thermometer-full:before { content: "\f2c7"; } /* temperature-full */ +.fa.fa-thermometer-half:before { content: "\f2c9"; } /* temperature-half */ +.fa.fa-thermometer-quarter:before { content: "\f2ca"; } /* temperature-quarter */ +.fa.fa-thermometer-three-quarters:before { content: "\f2c8"; } /* temperature-three-quarters */ +.fa.fa-bath:before, .fa.fa-bathtub:before { content: "\f2cd"; } /* bath */ +.fa.fa-times-rectangle:before, .fa.fa-window-close:before, .fa.fa-times-rectangle-o:before, .fa.fa-window-close-o:before { content: "\f410"; } /* rectangle-xmark */ +.fa.fa-power-off:before { content: "\f011"; } /* power-off */ + +/* Ensure FA4 style classes work */ +.fa.pull-left { + float: left; + margin-right: .3em; +} + +.fa.pull-right { + float: right; + margin-left: .3em; +} + +/* Compatibility for -o outline variants using CSS pseudo-elements */ +/*[class*=" fa-"][class*="-o"]:not(.fa-spotify):not(.fa-edge-o):not(.fa-sign-o),*/ +/*[class^="fa-"][class*="-o"]:not(.fa-spotify):not(.fa-edge-o):not(.fa-sign-o) {*/ +/* font-weight: 400 !important;*/ +/*}*/ + +/* Handle special cases for icons ending in -o that aren't outline variants */ +/*.fa-spotify:before,*/ +/*.fa-edge-o:before,*/ +/*.fa-sign-o:before {*/ +/* font-weight: 900 !important;*/ +/*}*/ \ No newline at end of file diff --git a/themes/grav/css/fork-awesome.min.css b/themes/grav/css/fork-awesome.min.css deleted file mode 100755 index 82222e06..00000000 --- a/themes/grav/css/fork-awesome.min.css +++ /dev/null @@ -1,12 +0,0 @@ -/*! -Fork Awesome 1.1.5 -License - http://forkawesome.github.io/Fork-Awesome/license - -Copyright 2018 Dave Gandy & Fork Awesome - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */@font-face{font-family:FontAwesome;src:url(../fonts/forkawesome-webfont.eot?v=1.1.5);src:url(../fonts/forkawesome-webfont.eot?#iefix&v=1.1.5) format('embedded-opentype'),url(../fonts/forkawesome-webfont.woff2?v=1.1.5) format('woff2'),url(../fonts/forkawesome-webfont.woff?v=1.1.5) format('woff'),url(../fonts/forkawesome-webfont.ttf?v=1.1.5) format('truetype'),url(../fonts/forkawesome-webfont.svg?v=1.1.5#forkawesomeregular) format('svg');font-weight:400;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.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(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1,1);-ms-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1,-1);-ms-transform:scale(1,-1);transform:scale(1,-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-rotate-90{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-close:before,.fa-remove:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-cog:before,.fa-gear:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-repeat:before,.fa-rotate-right:before{content:"\f01e"}.fa-refresh:before,.fa-sync:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before,.fa-video:before{content:"\f03d"}.fa-image:before,.fa-photo:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-exclamation-triangle:before,.fa-warning:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-cogs:before,.fa-gears:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell-o:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-globe-e:before{content:"\f304"}.fa-globe-w:before{content:"\f305"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-community:before,.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-floppy-o:before,.fa-save:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-bars:before,.fa-navicon:before,.fa-reorder:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus-g:before,.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-sort:before,.fa-unsorted:before{content:"\f0dc"}.fa-sort-desc:before,.fa-sort-down:before{content:"\f0dd"}.fa-sort-asc:before,.fa-sort-up:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-gavel:before,.fa-legal:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-bolt:before,.fa-flash:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-clipboard:before,.fa-paste:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before,.fa-utensils:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-chain-broken:before,.fa-unlink:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-caret-square-o-down:before,.fa-toggle-down:before{content:"\f150"}.fa-caret-square-o-up:before,.fa-toggle-up:before{content:"\f151"}.fa-caret-square-o-right:before,.fa-toggle-right:before{content:"\f152"}.fa-eur:before,.fa-euro:before{content:"\f153"}.fa-gbp:before,.fa-pound:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-inr:before,.fa-rupee:before{content:"\f156"}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen:before{content:"\f157"}.fa-rouble:before,.fa-rub:before,.fa-ruble:before{content:"\f158"}.fa-krw:before,.fa-won:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before,.fa-sort-alpha-down:before{content:"\f15d"}.fa-sort-alpha-desc:before,.fa-sort-alpha-up:before{content:"\f15e"}.fa-sort-amount-asc:before,.fa-sort-amount-down:before{content:"\f160"}.fa-sort-amount-desc:before,.fa-sort-amount-up:before{content:"\f161"}.fa-sort-numeric-asc:before,.fa-sort-numeric-down:before{content:"\f162"}.fa-sort-numeric-desc:before,.fa-sort-numeric-up:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-caret-square-o-left:before,.fa-toggle-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-try:before,.fa-turkish-lira:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-bank:before,.fa-institution:before,.fa-university:before{content:"\f19c"}.fa-graduation-cap:before,.fa-mortar-board:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before,.fa-utensil-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-image-o:before,.fa-file-photo-o:before,.fa-file-picture-o:before{content:"\f1c5"}.fa-file-archive-o:before,.fa-file-zip-o:before{content:"\f1c6"}.fa-file-audio-o:before,.fa-file-sound-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-ring:before,.fa-life-saver:before,.fa-support:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-rebel:before,.fa-resistance:before{content:"\f1d0"}.fa-empire:before,.fa-ge:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-hacker-news:before,.fa-y-combinator-square:before,.fa-yc-square:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-paper-plane:before,.fa-send:before{content:"\f1d8"}.fa-paper-plane-o:before,.fa-send-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before,.fa-heading:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-futbol-o:before,.fa-soccer-ball-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before,.fa-closed-captioning:before{content:"\f20a"}.fa-ils:before,.fa-shekel:before,.fa-sheqel:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before,.fa-gem:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-bed:before,.fa-hotel:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-medium-square:before{content:"\f2f8"}.fa-y-combinator:before,.fa-yc:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery-full:before,.fa-battery:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-paper-o:before,.fa-hand-stop-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-television:before,.fa-tv:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo-v:before,.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}.fa-gitlab:before{content:"\f296"}.fa-wpbeginner:before{content:"\f297"}.fa-wpforms:before{content:"\f298"}.fa-envira:before{content:"\f299"}.fa-universal-access:before{content:"\f29a"}.fa-wheelchair-alt:before{content:"\f29b"}.fa-question-circle-o:before{content:"\f29c"}.fa-blind:before{content:"\f29d"}.fa-audio-description:before{content:"\f29e"}.fa-phone-volume:before,.fa-volume-control-phone:before{content:"\f2a0"}.fa-braille:before{content:"\f2a1"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before{content:"\f2a3"}.fa-deaf:before,.fa-deafness:before,.fa-hard-of-hearing:before{content:"\f2a4"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-sign-language:before,.fa-signing:before{content:"\f2a7"}.fa-low-vision:before{content:"\f2a8"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-first-order:before{content:"\f2b0"}.fa-yoast:before{content:"\f2b1"}.fa-themeisle:before{content:"\f2b2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\f2b3"}.fa-fa:before,.fa-font-awesome:before{content:"\f2b4"}.fa-handshake-o:before{content:"\f2b5"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-o:before{content:"\f2b7"}.fa-linode:before{content:"\f2b8"}.fa-address-book:before{content:"\f2b9"}.fa-address-book-o:before{content:"\f2ba"}.fa-address-card:before,.fa-vcard:before{content:"\f2bb"}.fa-address-card-o:before,.fa-vcard-o:before{content:"\f2bc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-circle-o:before{content:"\f2be"}.fa-user-o:before{content:"\f2c0"}.fa-id-badge:before{content:"\f2c1"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-drivers-license-o:before,.fa-id-card-o:before{content:"\f2c3"}.fa-quora:before{content:"\f2c4"}.fa-free-code-camp:before{content:"\f2c5"}.fa-telegram:before{content:"\f2c6"}.fa-thermometer-4:before,.fa-thermometer-full:before,.fa-thermometer:before{content:"\f2c7"}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-shower:before{content:"\f2cc"}.fa-bath:before,.fa-bathtub:before,.fa-s15:before{content:"\f2cd"}.fa-podcast:before{content:"\f2ce"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-times-rectangle:before,.fa-window-close:before{content:"\f2d3"}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:"\f2d4"}.fa-bandcamp:before{content:"\f2d5"}.fa-grav:before{content:"\f2d6"}.fa-etsy:before{content:"\f2d7"}.fa-imdb:before{content:"\f2d8"}.fa-ravelry:before{content:"\f2d9"}.fa-eercast:before{content:"\f2da"}.fa-microchip:before{content:"\f2db"}.fa-snowflake-o:before{content:"\f2dc"}.fa-superpowers:before{content:"\f2dd"}.fa-wpexplorer:before{content:"\f2de"}.fa-meetup:before{content:"\f2e0"}.fa-mastodon:before{content:"\f2e1"}.fa-mastodon-alt:before{content:"\f2e2"}.fa-fork-awesome:before,.fa-fork-circle:before{content:"\f2e3"}.fa-peertube:before{content:"\f2e4"}.fa-diaspora:before{content:"\f2e5"}.fa-friendica:before{content:"\f2e6"}.fa-gnu-social:before{content:"\f2e7"}.fa-liberapay-square:before{content:"\f2e8"}.fa-liberapay:before{content:"\f2e9"}.fa-scuttlebutt:before,.fa-ssb:before{content:"\f2ea"}.fa-hubzilla:before{content:"\f2eb"}.fa-social-home:before{content:"\f2ec"}.fa-artstation:before{content:"\f2ed"}.fa-discord:before{content:"\f2ee"}.fa-discord-alt:before{content:"\f2ef"}.fa-patreon:before{content:"\f2f0"}.fa-snowdrift:before{content:"\f2f1"}.fa-activitypub:before{content:"\f2f2"}.fa-ethereum:before{content:"\f2f3"}.fa-keybase:before{content:"\f2f4"}.fa-shaarli:before{content:"\f2f5"}.fa-shaarli-o:before{content:"\f2f6"}.fa-cut-key:before,.fa-key-modern:before{content:"\f2f7"}.fa-xmpp:before{content:"\f2f9"}.fa-archive-org:before{content:"\f2fc"}.fa-freedombox:before{content:"\f2fd"}.fa-facebook-messenger:before{content:"\f2fe"}.fa-debian:before{content:"\f2ff"}.fa-mastodon-square:before{content:"\f300"}.fa-tipeee:before{content:"\f301"}.fa-react:before{content:"\f302"}.fa-dogmazic:before{content:"\f303"}.fa-zotero:before{content:"\f309"}.fa-nodejs:before{content:"\f308"}.fa-nextcloud:before{content:"\f306"}.fa-nextcloud-square:before{content:"\f307"}.fa-hackaday:before{content:"\f30a"}.fa-laravel:before{content:"\f30b"}.fa-signalapp:before{content:"\f30c"}.fa-gnupg:before{content:"\f30d"}.fa-php:before{content:"\f30e"}.fa-ffmpeg:before{content:"\f30f"}.fa-joplin:before{content:"\f310"}.fa-syncthing:before{content:"\f311"}.fa-inkscape:before{content:"\f312"}.fa-matrix-org:before{content:"\f313"}.fa-pixelfed:before{content:"\f314"}.fa-bootstrap:before{content:"\f315"}.fa-dev-to:before{content:"\f316"}.fa-hashnode:before{content:"\f317"}.fa-jirafeau:before{content:"\f318"}.fa-emby:before{content:"\f319"}.fa-wikidata:before{content:"\f31a"}.fa-gimp:before{content:"\f31b"}.fa-c:before{content:"\f31c"}.fa-digitalocean:before{content:"\f31d"}.fa-att:before{content:"\f31e"}.fa-gitea:before{content:"\f31f"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto} diff --git a/themes/grav/fonts/forkawesome-webfont.eot b/themes/grav/fonts/forkawesome-webfont.eot deleted file mode 100755 index 23b4f41f..00000000 Binary files a/themes/grav/fonts/forkawesome-webfont.eot and /dev/null differ diff --git a/themes/grav/fonts/forkawesome-webfont.svg b/themes/grav/fonts/forkawesome-webfont.svg deleted file mode 100755 index 874a3a1d..00000000 --- a/themes/grav/fonts/forkawesome-webfont.svg +++ /dev/null @@ -1,2810 +0,0 @@ - - - - - -Created by FontForge 20180321 at Mon Oct 15 10:55:59 2018 - By Julien Deswaef -The Fork Awesome font is licensed under the SIL OFL 1.1 (http://scripts.sil.org/OFL). Fork Awesome is a fork based of off Font Awesome 4.7.0 by Dave Gandy. More info on licenses at https://forkawesome.github.io - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/themes/grav/fonts/forkawesome-webfont.ttf b/themes/grav/fonts/forkawesome-webfont.ttf deleted file mode 100755 index c8a66266..00000000 Binary files a/themes/grav/fonts/forkawesome-webfont.ttf and /dev/null differ diff --git a/themes/grav/fonts/forkawesome-webfont.woff b/themes/grav/fonts/forkawesome-webfont.woff deleted file mode 100755 index 8f8204ed..00000000 Binary files a/themes/grav/fonts/forkawesome-webfont.woff and /dev/null differ diff --git a/themes/grav/fonts/forkawesome-webfont.woff2 b/themes/grav/fonts/forkawesome-webfont.woff2 deleted file mode 100755 index 50e05226..00000000 Binary files a/themes/grav/fonts/forkawesome-webfont.woff2 and /dev/null differ diff --git a/themes/grav/js/clipboard-helper.js b/themes/grav/js/clipboard-helper.js new file mode 100644 index 00000000..9a6db317 --- /dev/null +++ b/themes/grav/js/clipboard-helper.js @@ -0,0 +1,129 @@ +/** + * Clipboard Helper for Grav Admin + * Provides copy-to-clipboard functionality with visual feedback + */ + +window.GravClipboard = { + /** + * Copy the value from an input/textarea element with visual feedback + * @param {HTMLElement} buttonElement - The button element that was clicked + * @param {string} inputId - Optional ID of input to copy from (if not previous sibling) + */ + copy: function(buttonElement, inputId) { + var input; + + if (inputId) { + input = document.getElementById(inputId); + } else { + input = buttonElement.previousElementSibling; + } + + if (!input) { + console.error('No input element found to copy from'); + return; + } + + // Select and copy the text + input.select(); + var success = document.execCommand('copy'); + + if (success) { + // Store original content + var originalHTML = buttonElement.innerHTML; + + // Show success feedback + buttonElement.innerHTML = ' Copied!'; + + // Restore original content after delay + setTimeout(function() { + buttonElement.innerHTML = originalHTML; + }, 2000); + } else { + console.error('Failed to copy to clipboard'); + } + }, + + /** + * Update webhook commands with actual token and URL values + * @param {string} tokenFieldSelector - Selector for the token input field + */ + updateWebhookCommands: function(tokenFieldSelector) { + tokenFieldSelector = tokenFieldSelector || '[name="data[scheduler][modern][webhook][token]"]'; + + // Try multiple ways to get the token field + var tokenField = document.querySelector(tokenFieldSelector); + if (!tokenField) { + tokenField = document.querySelector('input[name*="webhook][token"]'); + } + if (!tokenField) { + // Look for the token input by searching in the webhook section + var inputs = document.querySelectorAll('input[type="text"]'); + for (var i = 0; i < inputs.length; i++) { + if (inputs[i].name && inputs[i].name.includes('webhook') && inputs[i].name.includes('token')) { + tokenField = inputs[i]; + break; + } + } + } + + var token = (tokenField && tokenField.value && tokenField.value.trim()) ? tokenField.value.trim() : 'YOUR_TOKEN'; + var siteUrl = window.location.origin + window.location.pathname.replace(/\/admin.*$/, ''); + + // Update webhook commands with actual values (URLs quoted for shell compatibility) + var webhookAllCmd = 'curl -X POST "' + siteUrl + '/scheduler/webhook" \\\n -H "Authorization: Bearer ' + token + '"'; + var webhookJobCmd = 'curl -X POST "' + siteUrl + '/scheduler/webhook?job=backup" \\\n -H "Authorization: Bearer ' + token + '"'; + var healthCmd = 'curl "' + siteUrl + '/scheduler/health"'; + + // Set values in input fields if they exist + var allInput = document.getElementById('webhook-all-cmd'); + var jobInput = document.getElementById('webhook-job-cmd'); + var healthInput = document.getElementById('webhook-health-cmd'); + + if (allInput) allInput.value = webhookAllCmd; + if (jobInput) jobInput.value = webhookJobCmd; + if (healthInput) healthInput.value = healthCmd; + + return { + token: token, + siteUrl: siteUrl, + webhookAllCmd: webhookAllCmd, + webhookJobCmd: webhookJobCmd, + healthCmd: healthCmd + }; + }, + + /** + * Initialize webhook command updates and listeners + */ + initWebhookCommands: function() { + var self = this; + + // Update on page load + self.updateWebhookCommands(); + + // Also update when token field changes + setTimeout(function() { + var tokenField = document.querySelector('[name="data[scheduler][modern][webhook][token]"]'); + if (!tokenField) { + tokenField = document.querySelector('input[name*="webhook][token"]'); + } + if (tokenField) { + tokenField.addEventListener('change', function() { self.updateWebhookCommands(); }); + tokenField.addEventListener('input', function() { self.updateWebhookCommands(); }); + } + }, 500); + } +}; + +// Auto-initialize when DOM is ready +if (document.readyState === 'loading') { + document.addEventListener('DOMContentLoaded', function() { + if (document.getElementById('webhook-all-cmd')) { + GravClipboard.initWebhookCommands(); + } + }); +} else { + if (document.getElementById('webhook-all-cmd')) { + GravClipboard.initWebhookCommands(); + } +} \ No newline at end of file diff --git a/themes/grav/js/fork-awesome-shim.js b/themes/grav/js/fork-awesome-shim.js new file mode 100644 index 00000000..4074593a --- /dev/null +++ b/themes/grav/js/fork-awesome-shim.js @@ -0,0 +1,1389 @@ +/*! + * ForkAwesome to FontAwesome 7 JavaScript Shim + * Version: 1.0.0 + * + * This JavaScript shim provides runtime compatibility for ForkAwesome 1.1.5 + * when migrating to FontAwesome 7 + */ + +(function() { + 'use strict'; + + // Icon mapping database - loaded from external JSON or embedded + const iconMappings = { + // Direct mappings (icon name changes) + 'home': 'house', + 'warning': 'triangle-exclamation', + 'close': 'xmark', + 'remove': 'xmark', + 'trash-o': 'trash-can', + 'file-text-o': 'file-lines', + 'gear': 'gear', + 'gears': 'gears', + 'exclamation-triangle': 'triangle-exclamation', + 'exclamation-circle': 'circle-exclamation', + 'check-circle': 'circle-check', + 'times-circle': 'circle-xmark', + 'chevron-circle-left': 'circle-chevron-left', + 'chevron-circle-right': 'circle-chevron-right', + 'chevron-circle-up': 'circle-chevron-up', + 'chevron-circle-down': 'circle-chevron-down', + 'arrow-circle-left': 'circle-arrow-left', + 'arrow-circle-right': 'circle-arrow-right', + 'arrow-circle-up': 'circle-arrow-up', + 'arrow-circle-down': 'circle-arrow-down', + 'mail-forward': 'share', + 'mail-reply': 'reply', + 'mail-reply-all': 'reply-all', + 'chain': 'link', + 'chain-broken': 'link-slash', + 'external-link': 'up-right-from-square', + 'level-up': 'turn-up', + 'level-down': 'turn-down', + 'pencil-square-o': 'pen-to-square', + 'ticket': 'ticket-simple', + 'diamond': 'gem', + 'bank': 'building-columns', + 'institution': 'building-columns', + 'university': 'building-columns', + 'mortar-board': 'graduation-cap', + 'graduation-cap': 'graduation-cap', + 'euro': 'euro-sign', + 'eur': 'euro-sign', + 'dollar': 'dollar-sign', + 'usd': 'dollar-sign', + 'rupee': 'indian-rupee-sign', + 'inr': 'indian-rupee-sign', + 'cny': 'yen-sign', + 'rmb': 'yen-sign', + 'yen': 'yen-sign', + 'jpy': 'yen-sign', + 'ruble': 'ruble-sign', + 'rouble': 'ruble-sign', + 'rub': 'ruble-sign', + 'won': 'won-sign', + 'krw': 'won-sign', + 'bitcoin': 'bitcoin', + 'btc': 'bitcoin', + 'youtube-play': 'youtube', + 'television': 'tv', + 'tv': 'tv', + 'calendar': 'calendar', + 'calendar-o': 'calendar', + 'arrows': 'arrows-up-down-left-right', + 'arrows-alt': 'maximize', + 'arrows-h': 'arrows-left-right', + 'arrows-v': 'arrows-up-down', + 'bar-chart': 'chart-column', + 'bar-chart-o': 'chart-bar', + 'line-chart': 'chart-line', + 'pie-chart': 'chart-pie', + 'battery': 'battery-full', + 'battery-4': 'battery-full', + 'battery-3': 'battery-three-quarters', + 'battery-2': 'battery-half', + 'battery-1': 'battery-quarter', + 'battery-0': 'battery-empty', + 'sign-in': 'right-to-bracket', + 'sign-out': 'right-from-bracket', + 'sign-in-alt': 'right-to-bracket', + 'sign-out-alt': 'right-from-bracket', + 'map-marker': 'location-dot', + 'map-marker-alt': 'location-dot', + 'refresh': 'rotate', + 'shield': 'shield', + 'shield-alt': 'shield-halved', + 'shopping-cart': 'cart-shopping', + 'shopping-bag': 'bag-shopping', + 'trash': 'trash', + 'angle-double-down': 'angles-down', + 'angle-double-left': 'angles-left', + 'angle-double-right': 'angles-right', + 'angle-double-up': 'angles-up', + 'long-arrow-down': 'arrow-down-long', + 'long-arrow-up': 'arrow-up-long', + 'long-arrow-left': 'arrow-left-long', + 'long-arrow-right': 'arrow-right-long', + 'magic': 'wand-magic-sparkles', + 'envelope': 'envelope', + 'envelope-o': 'envelope', + 'cloud-download': 'cloud-arrow-down', + 'cloud-upload': 'cloud-arrow-up', + 'reply': 'reply', + 'reply-all': 'reply-all', + 'forward': 'forward', + 'paper-plane': 'paper-plane', + 'paper-plane-o': 'paper-plane', + 'send': 'paper-plane', + 'send-o': 'paper-plane', + 'history': 'clock-rotate-left', + 'circle-thin': 'circle', + 'header': 'heading', + 'sliders': 'sliders', + 'list-ul': 'list-ul', + 'list-ol': 'list-ol', + 'th-large': 'table-cells-large', + 'th-list': 'table-list', + 'th': 'table-cells', + 'check': 'check', + 'times': 'xmark', + 'search-plus': 'magnifying-glass-plus', + 'search-minus': 'magnifying-glass-minus', + 'search': 'magnifying-glass', + 'power-off': 'power-off', + 'signal': 'signal', + 'cog': 'gear', + 'cogs': 'gears', + 'home': 'house', + 'clock-o': 'clock', + 'road': 'road', + 'download': 'download', + 'inbox': 'inbox', + 'repeat': 'repeat', + 'rotate': 'rotate', + 'retweet': 'retweet', + 'lock': 'lock', + 'unlock': 'unlock', + 'flag': 'flag', + 'flag-o': 'flag', + 'headphones': 'headphones', + 'volume-off': 'volume-xmark', + 'volume-down': 'volume-low', + 'volume-up': 'volume-high', + 'qrcode': 'qrcode', + 'barcode': 'barcode', + 'tag': 'tag', + 'tags': 'tags', + 'book': 'book', + 'bookmark': 'bookmark', + 'bookmark-o': 'bookmark', + 'print': 'print', + 'camera': 'camera', + 'font': 'font', + 'bold': 'bold', + 'italic': 'italic', + 'text-height': 'text-height', + 'text-width': 'text-width', + 'align-left': 'align-left', + 'align-center': 'align-center', + 'align-right': 'align-right', + 'align-justify': 'align-justify', + 'list': 'list', + 'dedent': 'outdent', + 'outdent': 'outdent', + 'indent': 'indent', + 'video': 'video', + 'image': 'image', + 'photo': 'image', + 'picture': 'image', + 'picture-o': 'image', + 'pencil': 'pencil', + 'map-marker': 'location-dot', + 'adjust': 'circle-half-stroke', + 'tint': 'droplet', + 'edit': 'pen-to-square', + 'pencil-square': 'pen-to-square', + 'share-square-o': 'share-from-square', + 'check-square-o': 'square-check', + 'arrows': 'arrows-up-down-left-right', + 'step-backward': 'backward-step', + 'fast-backward': 'backward-fast', + 'backward': 'backward', + 'play': 'play', + 'pause': 'pause', + 'stop': 'stop', + 'forward': 'forward', + 'fast-forward': 'forward-fast', + 'step-forward': 'forward-step', + 'eject': 'eject', + 'chevron-left': 'chevron-left', + 'chevron-right': 'chevron-right', + 'plus-circle': 'circle-plus', + 'minus-circle': 'circle-minus', + 'times-circle-o': 'circle-xmark', + 'check-circle-o': 'circle-check', + 'question-circle': 'circle-question', + 'question-circle-o': 'circle-question', + 'info-circle': 'circle-info', + 'crosshairs': 'crosshairs', + 'ban': 'ban', + 'arrow-left': 'arrow-left', + 'arrow-right': 'arrow-right', + 'arrow-up': 'arrow-up', + 'arrow-down': 'arrow-down', + 'share': 'share', + 'expand': 'expand', + 'compress': 'compress', + 'plus': 'plus', + 'minus': 'minus', + 'asterisk': 'asterisk', + 'exclamation': 'exclamation', + 'gift': 'gift', + 'leaf': 'leaf', + 'fire': 'fire', + 'eye': 'eye', + 'eye-slash': 'eye-slash', + 'exclamation-triangle': 'triangle-exclamation', + 'plane': 'plane', + 'random': 'shuffle', + 'magnet': 'magnet', + 'chevron-up': 'chevron-up', + 'chevron-down': 'chevron-down', + 'retweet': 'retweet', + 'folder': 'folder', + 'folder-open': 'folder-open', + 'folder-o': 'folder', + 'folder-open-o': 'folder-open', + 'bar-chart': 'chart-column', + 'bar-chart-o': 'chart-bar', + 'caret-down': 'caret-down', + 'caret-up': 'caret-up', + 'caret-left': 'caret-left', + 'caret-right': 'caret-right', + 'sort': 'sort', + 'sort-down': 'sort-down', + 'sort-desc': 'sort-down', + 'sort-up': 'sort-up', + 'sort-asc': 'sort-up', + 'envelope': 'envelope', + 'linkedin-in': 'linkedin-in', + 'rotate-left': 'rotate-left', + 'undo': 'rotate-left', + 'gavel': 'gavel', + 'legal': 'gavel', + 'tachometer': 'gauge-high', + 'dashboard': 'gauge-high', + 'comment-o': 'comment', + 'comments-o': 'comments', + 'flash': 'bolt', + 'bolt': 'bolt', + 'sitemap': 'sitemap', + 'umbrella': 'umbrella', + 'lightbulb': 'lightbulb', + 'lightbulb-o': 'lightbulb', + 'exchange': 'arrow-right-arrow-left', + 'cloud-download-alt': 'cloud-arrow-down', + 'cloud-upload-alt': 'cloud-arrow-up', + 'user-md': 'user-doctor', + 'stethoscope': 'stethoscope', + 'suitcase': 'suitcase', + 'bell-o': 'bell', + 'coffee': 'mug-hot', + 'cutlery': 'utensils', + 'file-text-o': 'file-lines', + 'building-o': 'building', + 'hospital-o': 'hospital', + 'ambulance': 'truck-medical', + 'medkit': 'suitcase-medical', + 'fighter-jet': 'jet-fighter', + 'beer': 'beer-mug-empty', + 'h-square': 'square-h', + 'plus-square-o': 'square-plus', + 'angle-double-left': 'angles-left', + 'angle-double-right': 'angles-right', + 'angle-double-up': 'angles-up', + 'angle-double-down': 'angles-down', + 'angle-left': 'angle-left', + 'angle-right': 'angle-right', + 'angle-up': 'angle-up', + 'angle-down': 'angle-down', + 'desktop': 'desktop', + 'laptop': 'laptop', + 'tablet': 'tablet-screen-button', + 'mobile': 'mobile-screen-button', + 'mobile-phone': 'mobile-screen-button', + 'circle-o': 'circle', + 'quote-left': 'quote-left', + 'quote-right': 'quote-right', + 'spinner': 'spinner', + 'circle': 'circle', + 'mail-reply': 'reply', + 'github-alt': 'github-alt', + 'folder-o': 'folder', + 'folder-open-o': 'folder-open', + 'smile-o': 'face-smile', + 'frown-o': 'face-frown', + 'meh-o': 'face-meh', + 'gamepad': 'gamepad', + 'keyboard': 'keyboard', + 'keyboard-o': 'keyboard', + 'flag-checkered': 'flag-checkered', + 'terminal': 'terminal', + 'code': 'code', + 'mail-reply-all': 'reply-all', + 'star-half-o': 'star-half', + 'location-arrow': 'location-arrow', + 'crop': 'crop-simple', + 'code-fork': 'code-branch', + 'chain-broken': 'link-slash', + 'unlink': 'link-slash', + 'question': 'question', + 'info': 'info', + 'exclamation': 'exclamation', + 'superscript': 'superscript', + 'subscript': 'subscript', + 'eraser': 'eraser', + 'puzzle-piece': 'puzzle-piece', + 'microphone': 'microphone', + 'microphone-slash': 'microphone-slash', + 'shield': 'shield', + 'calendar-o': 'calendar', + 'fire-extinguisher': 'fire-extinguisher', + 'rocket': 'rocket', + 'maxcdn': 'maxcdn', + 'chevron-circle-left': 'circle-chevron-left', + 'chevron-circle-right': 'circle-chevron-right', + 'chevron-circle-up': 'circle-chevron-up', + 'chevron-circle-down': 'circle-chevron-down', + 'html5': 'html5', + 'css3': 'css3', + 'anchor': 'anchor', + 'unlock-alt': 'unlock-keyhole', + 'bullseye': 'bullseye', + 'ellipsis-h': 'ellipsis', + 'ellipsis-v': 'ellipsis-vertical', + 'rss-square': 'square-rss', + 'play-circle-o': 'circle-play', + 'minus-square-o': 'square-minus', + 'check-square': 'square-check', + 'pen-square': 'pen-to-square', + 'share-square': 'share-from-square', + 'compass': 'compass', + 'caret-square-o-down': 'square-caret-down', + 'toggle-down': 'square-caret-down', + 'caret-square-o-up': 'square-caret-up', + 'toggle-up': 'square-caret-up', + 'caret-square-o-right': 'square-caret-right', + 'toggle-right': 'square-caret-right', + 'eur': 'euro-sign', + 'euro': 'euro-sign', + 'gbp': 'sterling-sign', + 'usd': 'dollar-sign', + 'dollar': 'dollar-sign', + 'inr': 'indian-rupee-sign', + 'rupee': 'indian-rupee-sign', + 'jpy': 'yen-sign', + 'cny': 'yen-sign', + 'rmb': 'yen-sign', + 'yen': 'yen-sign', + 'rub': 'ruble-sign', + 'ruble': 'ruble-sign', + 'rouble': 'ruble-sign', + 'krw': 'won-sign', + 'won': 'won-sign', + 'bitcoin': 'bitcoin', + 'btc': 'bitcoin', + 'file': 'file', + 'file-o': 'file', + 'file-text': 'file-lines', + 'sort-alpha-asc': 'arrow-down-a-z', + 'sort-alpha-desc': 'arrow-down-z-a', + 'sort-amount-asc': 'arrow-down-short-wide', + 'sort-amount-desc': 'arrow-down-wide-short', + 'sort-numeric-asc': 'arrow-down-1-9', + 'sort-numeric-desc': 'arrow-down-9-1', + 'thumbs-up': 'thumbs-up', + 'thumbs-down': 'thumbs-down', + 'thumbs-o-up': 'thumbs-up', + 'thumbs-o-down': 'thumbs-down', + 'heart-o': 'heart', + 'lemon-o': 'lemon', + 'phone-square': 'square-phone', + 'twitter-square': 'square-x-twitter', + 'facebook-square': 'square-facebook', + 'github-square': 'square-github', + 'credit-card': 'credit-card', + 'credit-card-o': 'credit-card', + 'rss': 'rss', + 'hdd-o': 'hard-drive', + 'bullhorn': 'bullhorn', + 'bell': 'bell', + 'certificate': 'certificate', + 'hand-o-right': 'hand-point-right', + 'hand-o-left': 'hand-point-left', + 'hand-o-up': 'hand-point-up', + 'hand-o-down': 'hand-point-down', + 'arrow-circle-left': 'circle-arrow-left', + 'arrow-circle-right': 'circle-arrow-right', + 'arrow-circle-up': 'circle-arrow-up', + 'arrow-circle-down': 'circle-arrow-down', + 'globe': 'globe', + 'wrench': 'wrench', + 'tasks': 'list-check', + 'filter': 'filter', + 'briefcase': 'briefcase', + 'arrows-alt': 'maximize', + 'group': 'users', + 'users': 'users', + 'link': 'link', + 'cloud': 'cloud', + 'flask': 'flask', + 'cut': 'scissors', + 'scissors': 'scissors', + 'copy': 'copy', + 'files-o': 'copy', + 'paperclip': 'paperclip', + 'floppy-o': 'floppy-disk', + 'save': 'floppy-disk', + 'square': 'square', + 'square-o': 'square', + 'navicon': 'bars', + 'reorder': 'bars', + 'bars': 'bars', + 'list-ul': 'list-ul', + 'list-ol': 'list-ol', + 'strikethrough': 'strikethrough', + 'underline': 'underline', + 'table': 'table', + 'magic': 'wand-magic-sparkles', + 'truck': 'truck', + 'pinterest-square': 'square-pinterest', + 'google-plus-square': 'square-google-plus', + 'google-plus': 'google-plus', + 'money': 'money-bill', + 'caret-down': 'caret-down', + 'caret-up': 'caret-up', + 'caret-left': 'caret-left', + 'caret-right': 'caret-right', + 'columns': 'columns', + 'sort': 'sort', + 'sort-down': 'sort-down', + 'sort-desc': 'sort-down', + 'sort-up': 'sort-up', + 'sort-asc': 'sort-up', + 'envelope': 'envelope', + 'undo': 'rotate-left', + 'gavel': 'gavel', + 'legal': 'gavel', + 'tachometer': 'gauge-high', + 'dashboard': 'gauge-high', + 'comment-o': 'comment', + 'comments-o': 'comments', + 'flash': 'bolt', + 'bolt': 'bolt', + 'sitemap': 'sitemap', + 'umbrella': 'umbrella', + 'paste': 'clipboard', + 'clipboard': 'clipboard', + 'lightbulb-o': 'lightbulb', + 'exchange': 'arrow-right-arrow-left', + 'cloud-download': 'cloud-arrow-down', + 'cloud-upload': 'cloud-arrow-up', + 'user-md': 'user-doctor', + 'stethoscope': 'stethoscope', + 'suitcase': 'suitcase', + 'bell-o': 'bell', + 'coffee': 'mug-hot', + 'cutlery': 'utensils', + 'file-text-o': 'file-lines', + 'building-o': 'building', + 'hospital-o': 'hospital', + 'ambulance': 'truck-medical', + 'medkit': 'suitcase-medical', + 'fighter-jet': 'jet-fighter', + 'beer': 'beer-mug-empty', + 'h-square': 'square-h', + 'plus-square': 'square-plus', + 'angle-double-left': 'angles-left', + 'angle-double-right': 'angles-right', + 'angle-double-up': 'angles-up', + 'angle-double-down': 'angles-down', + 'angle-left': 'angle-left', + 'angle-right': 'angle-right', + 'angle-up': 'angle-up', + 'angle-down': 'angle-down', + 'desktop': 'desktop', + 'laptop': 'laptop', + 'tablet': 'tablet-screen-button', + 'mobile': 'mobile-screen-button', + 'mobile-phone': 'mobile-screen-button', + 'circle-o': 'circle', + 'quote-left': 'quote-left', + 'quote-right': 'quote-right', + 'spinner': 'spinner', + 'circle': 'circle', + 'smile-o': 'face-smile', + 'frown-o': 'face-frown', + 'meh-o': 'face-meh', + 'gamepad': 'gamepad', + 'keyboard-o': 'keyboard', + 'flag-checkered': 'flag-checkered', + 'terminal': 'terminal', + 'code': 'code', + 'star-half': 'star-half', + 'star-half-empty': 'star-half', + 'star-half-o': 'star-half', + 'star-half-full': 'star-half', + 'location-arrow': 'location-arrow', + 'crop': 'crop-simple', + 'code-fork': 'code-branch', + 'chain-broken': 'link-slash', + 'unlink': 'link-slash', + 'question': 'question', + 'info': 'info', + 'exclamation': 'exclamation', + 'superscript': 'superscript', + 'subscript': 'subscript', + 'eraser': 'eraser', + 'puzzle-piece': 'puzzle-piece', + 'microphone': 'microphone', + 'microphone-slash': 'microphone-slash', + 'shield': 'shield', + 'calendar-o': 'calendar', + 'fire-extinguisher': 'fire-extinguisher', + 'rocket': 'rocket', + 'maxcdn': 'maxcdn', + 'chevron-circle-left': 'circle-chevron-left', + 'chevron-circle-right': 'circle-chevron-right', + 'chevron-circle-up': 'circle-chevron-up', + 'chevron-circle-down': 'circle-chevron-down', + 'html5': 'html5', + 'css3': 'css3', + 'anchor': 'anchor', + 'unlock-alt': 'unlock-keyhole', + 'bullseye': 'bullseye', + 'ellipsis-h': 'ellipsis', + 'ellipsis-v': 'ellipsis-vertical', + 'rss-square': 'square-rss', + 'play-circle': 'circle-play', + 'minus-square': 'square-minus', + 'check-square': 'square-check', + 'pen-square': 'pen-to-square', + 'share-square': 'share-from-square', + 'cc': 'closed-captioning', + 'dedent': 'outdent', + 'outdent': 'outdent', + 'indent': 'indent', + 'video-camera': 'video', + 'picture-o': 'image', + 'pencil': 'pencil', + 'map-marker': 'location-dot', + 'adjust': 'circle-half-stroke', + 'tint': 'droplet', + 'pencil-square': 'pen-to-square', + 'share-square-o': 'share-from-square', + 'check-square-o': 'square-check', + 'arrows': 'arrows-up-down-left-right', + 'step-backward': 'backward-step', + 'fast-backward': 'backward-fast', + 'backward': 'backward', + 'play': 'play', + 'pause': 'pause', + 'stop': 'stop', + 'forward': 'forward', + 'fast-forward': 'forward-fast', + 'step-forward': 'forward-step', + 'eject': 'eject', + 'chevron-left': 'chevron-left', + 'chevron-right': 'chevron-right', + 'plus-circle': 'circle-plus', + 'minus-circle': 'circle-minus', + 'times-circle': 'circle-xmark', + 'check-circle': 'circle-check', + 'question-circle': 'circle-question', + 'info-circle': 'circle-info', + 'screenshot': 'crosshairs', + 'remove-circle': 'circle-xmark', + 'ok-circle': 'circle-check', + 'ban-circle': 'ban', + 'mail-forward': 'share', + 'resize-full': 'maximize', + 'resize-small': 'minimize', + 'plus': 'plus', + 'minus': 'minus', + 'asterisk': 'asterisk', + 'exclamation-sign': 'exclamation', + 'gift': 'gift', + 'leaf': 'leaf', + 'fire': 'fire', + 'eye-open': 'eye', + 'eye-close': 'eye-slash', + 'warning-sign': 'triangle-exclamation', + 'plane': 'plane', + 'random': 'shuffle', + 'comment': 'comment', + 'chevron-up': 'chevron-up', + 'chevron-down': 'chevron-down', + 'shopping-cart': 'cart-shopping', + 'bar-chart': 'chart-column', + 'bar-chart-o': 'chart-bar', + 'facebook-official': 'facebook', + 'pinterest-p': 'pinterest-p', + 'whatsapp': 'whatsapp', + 'server': 'server', + 'user-plus': 'user-plus', + 'user-times': 'user-xmark', + 'bed': 'bed', + 'train': 'train', + 'subway': 'train-subway', + 'battery-full': 'battery-full', + 'battery-three-quarters': 'battery-three-quarters', + 'battery-half': 'battery-half', + 'battery-quarter': 'battery-quarter', + 'battery-empty': 'battery-empty', + 'mouse-pointer': 'arrow-pointer', + 'i-cursor': 'i-cursor', + 'object-group': 'object-group', + 'object-ungroup': 'object-ungroup', + 'sticky-note': 'note-sticky', + 'sticky-note-o': 'note-sticky', + 'clone': 'clone', + 'hourglass-o': 'hourglass', + 'hourglass-start': 'hourglass-start', + 'hourglass-1': 'hourglass-start', + 'hourglass-half': 'hourglass-half', + 'hourglass-2': 'hourglass-half', + 'hourglass-end': 'hourglass-end', + 'hourglass-3': 'hourglass-end', + 'hand-rock-o': 'hand-back-fist', + 'hand-grab-o': 'hand', + 'hand-stop-o': 'hand', + 'hand-paper-o': 'hand', + 'hand-scissors-o': 'hand-scissors', + 'hand-lizard-o': 'hand-lizard', + 'hand-spock-o': 'hand-spock', + 'hand-pointer-o': 'hand-pointer', + 'hand-peace-o': 'hand-peace', + 'registered': 'registered', + 'creative-commons': 'creative-commons', + 'television': 'tv', + 'contao': 'contao', + 'paypal': 'paypal', + 'industry': 'industry', + 'map-pin': 'map-pin', + 'map-signs': 'signs-post', + 'map-o': 'map', + 'map': 'map', + 'commenting': 'comment-dots', + 'commenting-o': 'comment-dots', + 'houzz': 'houzz', + 'vimeo': 'vimeo-v', + 'black-tie': 'black-tie', + 'fonticons': 'fonticons', + 'reddit-alien': 'reddit-alien', + 'edge': 'edge', + 'codiepie': 'codiepie', + 'modx': 'modx', + 'fort-awesome': 'fort-awesome', + 'usb': 'usb', + 'product-hunt': 'product-hunt', + 'mixcloud': 'mixcloud', + 'scribd': 'scribd', + 'pause-circle': 'circle-pause', + 'pause-circle-o': 'circle-pause', + 'stop-circle': 'circle-stop', + 'stop-circle-o': 'circle-stop', + 'bluetooth': 'bluetooth', + 'bluetooth-b': 'bluetooth-b', + 'gitlab': 'gitlab', + 'wpbeginner': 'wpbeginner', + 'wpforms': 'wpforms', + 'envira': 'envira', + 'universal-access': 'universal-access', + 'wheelchair-alt': 'accessible-icon', + 'question-circle': 'circle-question', + 'blind': 'person-walking-with-cane', + 'audio-description': 'audio-description', + 'volume-control-phone': 'phone-volume', + 'phone-volume': 'phone-volume', + 'braille': 'braille', + 'assistive-listening-systems': 'assistive-listening-systems', + 'american-sign-language-interpreting': 'hands-asl-interpreting', + 'asl-interpreting': 'hands-asl-interpreting', + 'deaf': 'ear-deaf', + 'deafness': 'ear-deaf', + 'hard-of-hearing': 'ear-deaf', + 'glide': 'glide', + 'glide-g': 'glide-g', + 'sign-language': 'hands', + 'signing': 'hands', + 'viadeo': 'viadeo', + 'viadeo-square': 'square-viadeo', + 'snapchat': 'snapchat', + 'snapchat-ghost': 'snapchat', + 'snapchat-square': 'square-snapchat', + 'pied-piper': 'pied-piper', + 'first-order': 'first-order', + 'yoast': 'yoast', + 'themeisle': 'themeisle', + 'google-plus-official': 'google-plus', + 'google-plus-circle': 'google-plus', + 'font-awesome': 'font-awesome', + 'fa': 'font-awesome', + 'shower': 'shower', + 'bath': 'bath', + 'bathtub': 'bath', + 's15': 'bath', + 'bandcamp': 'bandcamp', + 'grav': 'grav', + 'etsy': 'etsy', + 'imdb': 'imdb', + 'ravelry': 'ravelry', + 'eercast': 'sellcast', + 'snowflake-o': 'snowflake', + 'superpowers': 'superpowers', + 'wpexplorer': 'wpexplorer', + 'meetup': 'meetup', + 'linode': 'linode', + 'angellist': 'angellist', + 'bitbucket': 'bitbucket', + 'drupal': 'drupal', + 'joomla': 'joomla', + 'behance': 'behance', + 'behance-square': 'square-behance', + 'steam': 'steam', + 'steam-square': 'square-steam', + 'spotify': 'spotify', + 'deviantart': 'deviantart', + 'soundcloud': 'soundcloud', + 'vine': 'vine', + 'codepen': 'codepen', + 'jsfiddle': 'jsfiddle', + 'rebel': 'rebel', + 'ra': 'rebel', + 'resistance': 'rebel', + 'empire': 'empire', + 'ge': 'empire', + 'git-square': 'square-git', + 'git': 'git', + 'hacker-news': 'hacker-news', + 'yc-square': 'hacker-news', + 'y-combinator-square': 'hacker-news', + 'tencent-weibo': 'tencent-weibo', + 'qq': 'qq', + 'weixin': 'weixin', + 'wechat': 'weixin', + 'slideshare': 'slideshare', + 'twitch': 'twitch', + 'yelp': 'yelp', + 'paypal': 'paypal', + 'google-wallet': 'google-wallet', + 'cc-visa': 'cc-visa', + 'cc-mastercard': 'cc-mastercard', + 'cc-discover': 'cc-discover', + 'cc-amex': 'cc-amex', + 'cc-paypal': 'cc-paypal', + 'cc-stripe': 'cc-stripe', + 'bell-slash': 'bell-slash', + 'bell-slash-o': 'bell-slash', + 'meanpath': 'font-awesome', + 'buysellads': 'buysellads', + 'connectdevelop': 'connectdevelop', + 'dashcube': 'dashcube', + 'forumbee': 'forumbee', + 'leanpub': 'leanpub', + 'sellsy': 'sellsy', + 'shirtsinbulk': 'shirtsinbulk', + 'simplybuilt': 'simplybuilt', + 'skyatlas': 'skyatlas', + 'pinterest-p': 'pinterest-p', + 'viacoin': 'viacoin', + 'medium': 'medium', + 'y-combinator': 'y-combinator', + 'yc': 'y-combinator', + 'optin-monster': 'optin-monster', + 'opencart': 'opencart', + 'expeditedssl': 'expeditedssl', + 'cc-jcb': 'cc-jcb', + 'cc-diners-club': 'cc-diners-club', + 'creative-commons': 'creative-commons', + 'gg': 'gg', + 'gg-circle': 'gg-circle', + 'odnoklassniki': 'odnoklassniki', + 'odnoklassniki-square': 'square-odnoklassniki', + 'get-pocket': 'get-pocket', + 'wikipedia-w': 'wikipedia-w', + 'safari': 'safari', + 'chrome': 'chrome', + 'firefox': 'firefox', + 'opera': 'opera', + 'internet-explorer': 'internet-explorer', + 'amazon': 'amazon', + 'reddit': 'reddit', + 'reddit-square': 'square-reddit', + 'stumbleupon-circle': 'stumbleupon-circle', + 'stumbleupon': 'stumbleupon', + 'delicious': 'delicious', + 'digg': 'digg', + 'drupal': 'drupal', + 'joomla': 'joomla', + 'behance': 'behance', + 'behance-square': 'square-behance', + 'steam': 'steam', + 'steam-square': 'square-steam', + 'spotify': 'spotify', + 'deviantart': 'deviantart', + 'soundcloud': 'soundcloud', + 'vine': 'vine', + 'codepen': 'codepen', + 'jsfiddle': 'jsfiddle', + 'rebel': 'rebel', + 'empire': 'empire', + 'git-square': 'square-git', + 'git': 'git', + 'hacker-news': 'hacker-news', + 'tencent-weibo': 'tencent-weibo', + 'qq': 'qq', + 'weixin': 'weixin', + 'slideshare': 'slideshare', + 'twitch': 'twitch', + 'yelp': 'yelp', + 'lastfm': 'lastfm', + 'lastfm-square': 'square-lastfm', + 'ioxhost': 'ioxhost', + 'angellist': 'angellist', + 'meanpath': 'font-awesome', + 'pagelines': 'pagelines', + 'stack-exchange': 'stack-exchange', + 'stack-overflow': 'stack-overflow', + 'pinterest': 'pinterest', + 'pinterest-square': 'square-pinterest', + 'maxcdn': 'maxcdn', + 'adn': 'adn', + 'behance': 'behance', + 'behance-square': 'square-behance', + 'bitbucket': 'bitbucket', + 'bitbucket-square': 'bitbucket', + 'tumblr': 'tumblr', + 'tumblr-square': 'square-tumblr', + 'apple': 'apple', + 'windows': 'windows', + 'android': 'android', + 'linux': 'linux', + 'dribbble': 'dribbble', + 'skype': 'skype', + 'foursquare': 'foursquare', + 'trello': 'trello', + 'gratipay': 'gratipay', + 'gittip': 'gratipay', + 'star': 'star', + 'star-o': 'star', + 'sun-o': 'sun', + 'moon-o': 'moon', + 'vk': 'vk', + 'weibo': 'weibo', + 'renren': 'renren', + 'pagelines': 'pagelines', + 'stack-exchange': 'stack-exchange', + 'arrow-circle-o-right': 'circle-right', + 'arrow-circle-o-left': 'circle-left', + 'arrow-circle-o-up': 'circle-up', + 'arrow-circle-o-down': 'circle-down', + 'caret-square-o-left': 'square-caret-left', + 'toggle-left': 'square-caret-left', + 'dot-circle-o': 'circle-dot', + 'vimeo-square': 'square-vimeo', + 'try': 'turkish-lira-sign', + 'turkish-lira': 'turkish-lira-sign', + 'slack': 'slack', + 'wordpress': 'wordpress', + 'openid': 'openid', + 'yahoo': 'yahoo', + 'google': 'google', + 'reddit': 'reddit', + 'reddit-square': 'square-reddit', + 'stumbleupon-circle': 'stumbleupon-circle', + 'stumbleupon': 'stumbleupon', + 'delicious': 'delicious', + 'digg': 'digg', + 'pied-piper-pp': 'pied-piper-pp', + 'pied-piper-alt': 'pied-piper-alt', + 'drupal': 'drupal', + 'joomla': 'joomla', + 'fax': 'fax', + 'child': 'child', + 'paw': 'paw', + 'cube': 'cube', + 'cubes': 'cubes', + 'recycle': 'recycle', + 'car': 'car', + 'automobile': 'car', + 'cab': 'taxi', + 'taxi': 'taxi', + 'tree': 'tree', + 'database': 'database', + 'file-pdf-o': 'file-pdf', + 'file-word-o': 'file-word', + 'file-excel-o': 'file-excel', + 'file-powerpoint-o': 'file-powerpoint', + 'file-image-o': 'file-image', + 'file-photo-o': 'file-image', + 'file-picture-o': 'file-image', + 'file-archive-o': 'file-zipper', + 'file-zip-o': 'file-zipper', + 'file-audio-o': 'file-audio', + 'file-sound-o': 'file-audio', + 'file-video-o': 'file-video', + 'file-movie-o': 'file-video', + 'file-code-o': 'file-code', + 'life-ring': 'life-ring', + 'life-bouy': 'life-ring', + 'life-buoy': 'life-ring', + 'life-saver': 'life-ring', + 'support': 'life-ring', + 'circle-o-notch': 'circle-notch', + 'rebel': 'rebel', + 'ra': 'rebel', + 'resistance': 'rebel', + 'empire': 'empire', + 'ge': 'empire', + 'git-square': 'square-git', + 'git': 'git', + 'hacker-news': 'hacker-news', + 'yc-square': 'hacker-news', + 'y-combinator-square': 'hacker-news', + 'tencent-weibo': 'tencent-weibo', + 'qq': 'qq', + 'weixin': 'weixin', + 'wechat': 'weixin', + 'paper-plane': 'paper-plane', + 'paper-plane-o': 'paper-plane', + 'send': 'paper-plane', + 'send-o': 'paper-plane', + 'circle-thin': 'circle', + 'futbol-o': 'futbol', + 'soccer-ball-o': 'futbol', + 'tty': 'tty', + 'binoculars': 'binoculars', + 'plug': 'plug', + 'newspaper-o': 'newspaper', + 'wifi': 'wifi', + 'calculator': 'calculator', + 'cc': 'closed-captioning', + 'ils': 'shekel-sign', + 'shekel': 'shekel-sign', + 'sheqel': 'shekel-sign', + 'transgender': 'mars-and-venus', + 'intersex': 'mars-and-venus', + 'transgender-alt': 'transgender', + 'venus-double': 'venus-double', + 'mars-double': 'mars-double', + 'venus-mars': 'venus-mars', + 'mars-stroke': 'mars-stroke', + 'mars-stroke-v': 'mars-stroke-up', + 'mars-stroke-h': 'mars-stroke-right', + 'neuter': 'neuter', + 'genderless': 'genderless', + 'user-plus': 'user-plus', + 'user-times': 'user-xmark', + 'user-circle': 'circle-user', + 'user-circle-o': 'circle-user', + 'bed': 'bed', + 'vcard': 'address-card', + 'vcard-o': 'address-card', + 'facebook-official': 'facebook', + 'pinterest-p': 'pinterest-p', + 'whatsapp': 'whatsapp', + 'server': 'server', + 'balance-scale': 'scale-balanced', + 'balance-scale-left': 'scale-unbalanced', + 'balance-scale-right': 'scale-unbalanced-flip', + 'hourglass': 'hourglass', + 'hourglass-o': 'hourglass', + 'hourglass-1': 'hourglass-start', + 'hourglass-start': 'hourglass-start', + 'hourglass-2': 'hourglass-half', + 'hourglass-half': 'hourglass-half', + 'hourglass-3': 'hourglass-end', + 'hourglass-end': 'hourglass-end', + 'hand-grab-o': 'hand', + 'hand-rock-o': 'hand-back-fist', + 'hand-paper-o': 'hand', + 'hand-stop-o': 'hand', + 'hand-scissors-o': 'hand-scissors', + 'hand-lizard-o': 'hand-lizard', + 'hand-spock-o': 'hand-spock', + 'hand-pointer-o': 'hand-pointer', + 'hand-peace-o': 'hand-peace', + '500px': '500px', + 'adn': 'adn', + 'bitbucket': 'bitbucket', + 'bitbucket-square': 'bitbucket', + 'tumblr': 'tumblr', + 'tumblr-square': 'square-tumblr', + 'apple': 'apple', + 'windows': 'windows', + 'android': 'android', + 'linux': 'linux', + 'dribbble': 'dribbble', + 'skype': 'skype', + 'foursquare': 'foursquare', + 'trello': 'trello', + 'female': 'person-dress', + 'male': 'person', + 'gratipay': 'gratipay', + 'gittip': 'gratipay', + 'sun-o': 'sun', + 'moon-o': 'moon', + 'vk': 'vk', + 'weibo': 'weibo', + 'renren': 'renren', + 'pagelines': 'pagelines', + 'stack-exchange': 'stack-exchange', + 'arrow-circle-o-right': 'circle-right', + 'arrow-circle-o-left': 'circle-left', + 'caret-square-o-left': 'square-caret-left', + 'toggle-left': 'square-caret-left', + 'dot-circle-o': 'circle-dot', + 'vimeo-square': 'square-vimeo', + 'try': 'turkish-lira-sign', + 'turkish-lira': 'turkish-lira-sign', + 'plus-square-o': 'square-plus', + }; + + // Outline icons (-o suffix) mappings to regular style + const outlineIcons = { + 'address-book-o': 'address-book', + 'address-card-o': 'address-card', + 'arrow-circle-o-down': 'circle-down', + 'arrow-circle-o-left': 'circle-left', + 'arrow-circle-o-right': 'circle-right', + 'arrow-circle-o-up': 'circle-up', + 'bar-chart-o': 'chart-bar', + 'bell-o': 'bell', + 'bell-slash-o': 'bell-slash', + 'bookmark-o': 'bookmark', + 'building-o': 'building', + 'calendar-check-o': 'calendar-check', + 'calendar-minus-o': 'calendar-minus', + 'calendar-o': 'calendar', + 'calendar-plus-o': 'calendar-plus', + 'calendar-times-o': 'calendar-xmark', + 'caret-square-o-down': 'square-caret-down', + 'caret-square-o-left': 'square-caret-left', + 'caret-square-o-right': 'square-caret-right', + 'caret-square-o-up': 'square-caret-up', + 'cc-o': 'closed-captioning', + 'check-circle-o': 'circle-check', + 'check-square-o': 'square-check', + 'circle-o': 'circle', + 'clock-o': 'clock', + 'clone-o': 'clone', + 'comment-o': 'comment', + 'commenting-o': 'comment-dots', + 'comments-o': 'comments', + 'copy-o': 'copy', + 'copyright-o': 'copyright', + 'credit-card-o': 'credit-card', + 'dot-circle-o': 'circle-dot', + 'envelope-o': 'envelope', + 'envelope-open-o': 'envelope-open', + 'eye-o': 'eye', + 'file-archive-o': 'file-zipper', + 'file-audio-o': 'file-audio', + 'file-code-o': 'file-code', + 'file-excel-o': 'file-excel', + 'file-image-o': 'file-image', + 'file-o': 'file', + 'file-pdf-o': 'file-pdf', + 'file-photo-o': 'file-image', + 'file-powerpoint-o': 'file-powerpoint', + 'file-text-o': 'file-lines', + 'file-video-o': 'file-video', + 'file-word-o': 'file-word', + 'files-o': 'copy', + 'flag-o': 'flag', + 'floppy-o': 'floppy-disk', + 'folder-o': 'folder', + 'folder-open-o': 'folder-open', + 'frown-o': 'face-frown', + 'futbol-o': 'futbol', + 'gem-o': 'gem', + 'hand-lizard-o': 'hand-lizard', + 'hand-o-down': 'hand-point-down', + 'hand-o-left': 'hand-point-left', + 'hand-o-right': 'hand-point-right', + 'hand-o-up': 'hand-point-up', + 'hand-paper-o': 'hand', + 'hand-peace-o': 'hand-peace', + 'hand-pointer-o': 'hand-pointer', + 'hand-rock-o': 'hand-back-fist', + 'hand-scissors-o': 'hand-scissors', + 'hand-spock-o': 'hand-spock', + 'handshake-o': 'handshake', + 'hdd-o': 'hard-drive', + 'heart-o': 'heart', + 'hospital-o': 'hospital', + 'hourglass-o': 'hourglass', + 'id-badge-o': 'id-badge', + 'id-card-o': 'id-card', + 'image-o': 'image', + 'keyboard-o': 'keyboard', + 'lemon-o': 'lemon', + 'life-ring-o': 'life-ring', + 'lightbulb-o': 'lightbulb', + 'map-o': 'map', + 'meh-o': 'face-meh', + 'minus-square-o': 'square-minus', + 'money-o': 'money-bill', + 'moon-o': 'moon', + 'newspaper-o': 'newspaper', + 'object-group-o': 'object-group', + 'object-ungroup-o': 'object-ungroup', + 'paper-plane-o': 'paper-plane', + 'pause-circle-o': 'circle-pause', + 'pencil-square-o': 'pen-to-square', + 'picture-o': 'image', + 'play-circle-o': 'circle-play', + 'plus-square-o': 'square-plus', + 'question-circle-o': 'circle-question', + 'registered-o': 'registered', + 'share-square-o': 'share-from-square', + 'smile-o': 'face-smile', + 'snowflake-o': 'snowflake', + 'square-o': 'square', + 'star-half-o': 'star-half', + 'star-o': 'star', + 'sticky-note-o': 'note-sticky', + 'stop-circle-o': 'circle-stop', + 'sun-o': 'sun', + 'thumbs-down-o': 'thumbs-down', + 'thumbs-o-down': 'thumbs-down', + 'thumbs-o-up': 'thumbs-up', + 'thumbs-up-o': 'thumbs-up', + 'times-circle-o': 'circle-xmark', + 'trash-o': 'trash-can', + 'user-circle-o': 'circle-user', + 'user-o': 'user', + 'window-close-o': 'rectangle-xmark', + 'window-maximize-o': 'window-maximize', + 'window-minimize-o': 'window-minimize', + 'window-restore-o': 'window-restore' + }; + + // Brand icons that need explicit font-family + const brandIcons = [ + '500px', 'adn', 'amazon', 'android', 'angellist', 'apple', 'bandcamp', 'behance', + 'bitbucket', 'bitcoin', 'black-tie', 'bluetooth', 'bluetooth-b', 'buysellads', + 'cc-amex', 'cc-diners-club', 'cc-discover', 'cc-jcb', 'cc-mastercard', 'cc-paypal', + 'cc-stripe', 'cc-visa', 'chrome', 'codepen', 'codiepie', 'connectdevelop', 'contao', + 'css3', 'dashcube', 'delicious', 'deviantart', 'digg', 'dribbble', 'dropbox', 'drupal', + 'edge', 'empire', 'envira', 'etsy', 'expeditedssl', 'facebook', 'facebook-f', + 'firefox', 'flickr', 'fonticons', 'fort-awesome', 'forumbee', 'foursquare', + 'free-code-camp', 'get-pocket', 'gg', 'gg-circle', 'git', 'github', 'github-alt', + 'gitlab', 'glide', 'glide-g', 'google', 'google-plus', 'google-wallet', 'gratipay', + 'grav', 'hacker-news', 'houzz', 'html5', 'imdb', 'instagram', 'internet-explorer', + 'ioxhost', 'joomla', 'jsfiddle', 'lastfm', 'leanpub', 'linkedin', 'linode', 'linux', + 'maxcdn', 'meanpath', 'medium', 'meetup', 'mixcloud', 'modx', 'odnoklassniki', + 'opencart', 'openid', 'opera', 'optin-monster', 'pagelines', 'paypal', 'pied-piper', + 'pied-piper-alt', 'pied-piper-pp', 'pinterest', 'pinterest-p', 'product-hunt', 'qq', + 'quora', 'ravelry', 'rebel', 'reddit', 'reddit-alien', 'renren', 'safari', 'scribd', + 'sellsy', 'shirtsinbulk', 'simplybuilt', 'skyatlas', 'skype', 'slack', 'slideshare', + 'snapchat', 'soundcloud', 'spotify', 'stack-exchange', 'stack-overflow', 'steam', + 'stumbleupon', 'stumbleupon-circle', 'superpowers', 'telegram', 'tencent-weibo', + 'themeisle', 'trello', 'tumblr', 'twitch', 'twitter', 'usb', 'viacoin', 'viadeo', + 'vimeo', 'vine', 'vk', 'weibo', 'weixin', 'whatsapp', 'wikipedia-w', 'windows', + 'wordpress', 'wpbeginner', 'wpexplorer', 'wpforms', 'xing', 'y-combinator', 'yahoo', + 'yelp', 'yoast', 'youtube' + ]; + + // Fork Awesome specific icons fallback mappings + const forkSpecificIcons = { + 'activitypub': 'share-nodes', + 'archive-org': 'building-columns', + 'artstation': 'artstation', + 'bell-slash-o': 'bell-slash', + 'biometric': 'fingerprint', + 'c': 'c', + 'cc-by': 'creative-commons-by', + 'cc-nc': 'creative-commons-nc', + 'cc-nc-eu': 'creative-commons-nc-eu', + 'cc-nc-jp': 'creative-commons-nc-jp', + 'cc-nd': 'creative-commons-nd', + 'cc-pd': 'creative-commons-pd', + 'cc-remix': 'creative-commons-remix', + 'cc-sa': 'creative-commons-sa', + 'cc-share': 'creative-commons-share', + 'cc-zero': 'creative-commons-zero', + 'commenting': 'comment-dots', + 'commenting-o': 'comment-dots', + 'dat': 'database', + 'diaspora': 'asterisk', + 'digitalocean': 'digital-ocean', + 'discord': 'discord', + 'emby': 'circle-play', + 'ethereum': 'ethereum', + 'f-droid': 'android', + 'facebook-messenger': 'facebook-messenger', + 'foster': 'hands-holding-child', + 'friendica': 'users', + 'galaxy': 'rocket', + 'gimp': 'palette', + 'gitea': 'mug-hot', + 'gnu-social': 'gnu', + 'google-auth': 'shield', + 'hackaday': 'wrench', + 'hackster': 'microchip', + 'inkscape': 'pen-nib', + 'jirafeau': 'share', + 'joplin': 'book', + 'jsdelivr': 'truck-fast', + 'keybase': 'key', + 'laravel': 'laravel', + 'liberapay': 'hand-holding-heart', + 'libreoffice': 'file-word', + 'line-graph': 'chart-line', + 'mastodon': 'mastodon', + 'matrix-org': 'comment-dots', + 'nextcloud': 'cloud', + 'nodejs': 'node-js', + 'orcid': 'orcid', + 'patreon': 'patreon', + 'peertube': 'video', + 'php': 'php', + 'pi-hole': 'shield-halved', + 'pixelfed': 'camera-retro', + 'plume': 'feather', + 'postgresql': 'database', + 'python': 'python', + 'react': 'react', + 'researchgate': 'researchgate', + 'riot': 'comments', + 'scuttlebutt': 'fish', + 'signal': 'signal-messenger', + 'sketchfab': 'cube', + 'snowdrift': 'snowflake', + 'social-home': 'house-user', + 'syncthing': 'arrows-rotate', + 'tex': 'code', + 'tor': 'user-secret', + 'unsplash': 'unsplash', + 'vagrant': 'v', + 'vscode': 'code', + 'xmpp': 'comment', + 'zotero': 'bookmark' + }; + + // Determine if an icon needs regular style + function isRegularIcon(iconName) { + return iconName in outlineIcons || iconName.endsWith('-o'); + } + + // Determine if an icon is a brand icon + function isBrandIcon(iconName) { + return brandIcons.includes(iconName) || iconName in forkSpecificIcons; + } + + // Get the mapped icon name and style + function getMappedIcon(iconName) { + // Check direct mappings first + if (iconName in iconMappings) { + return { name: iconMappings[iconName], style: 'solid' }; + } + + // Check outline icons + if (iconName in outlineIcons) { + return { name: outlineIcons[iconName], style: 'regular' }; + } + + // Check Fork-specific icons + if (iconName in forkSpecificIcons) { + const mappedName = forkSpecificIcons[iconName]; + const style = isBrandIcon(mappedName) ? 'brands' : 'solid'; + return { name: mappedName, style: style }; + } + + // Default: return as-is + return { name: iconName, style: 'solid' }; + } + + // Transform icon classes + function transformIconClasses(element) { + if (!element || !element.classList) return; + + const classList = element.classList; + let iconClass = null; + let hasFA = false; + + // Check if element has 'fa' class + for (let i = 0; i < classList.length; i++) { + if (classList[i] === 'fa') { + hasFA = true; + } else if (classList[i].startsWith('fa-') && !classList[i].match(/^fa-(fw|spin|pulse|rotate|flip|stack|inverse|border|pull|li|lg|2x|3x|4x|5x)/)) { + iconClass = classList[i].substring(3); // Remove 'fa-' prefix + } + } + + if (!hasFA || !iconClass) return; + + // Get mapped icon + const mapped = getMappedIcon(iconClass); + + // Remove old icon class + classList.remove('fa-' + iconClass); + + // Add new icon class + classList.add('fa-' + mapped.name); + + // Handle style-specific classes + if (mapped.style === 'regular') { + classList.add('far'); + classList.remove('fas', 'fab'); + } else if (mapped.style === 'brands') { + classList.add('fab'); + classList.remove('fas', 'far'); + } else { + classList.add('fas'); + classList.remove('far', 'fab'); + } + } + + // Process all icons on the page + function processAllIcons() { + const icons = document.querySelectorAll('.fa'); + for (let i = 0; i < icons.length; i++) { + transformIconClasses(icons[i]); + } + } + + // MutationObserver to handle dynamically added icons + function observeDynamicIcons() { + const observer = new MutationObserver(function(mutations) { + mutations.forEach(function(mutation) { + mutation.addedNodes.forEach(function(node) { + if (node.nodeType === 1) { // Element node + if (node.classList && node.classList.contains('fa')) { + transformIconClasses(node); + } + // Check child nodes + const childIcons = node.querySelectorAll('.fa'); + for (let i = 0; i < childIcons.length; i++) { + transformIconClasses(childIcons[i]); + } + } + }); + }); + }); + + observer.observe(document.body, { + childList: true, + subtree: true + }); + } + + // Initialize shim + function init() { + // Process existing icons + if (document.readyState === 'loading') { + document.addEventListener('DOMContentLoaded', function() { + processAllIcons(); + observeDynamicIcons(); + }); + } else { + processAllIcons(); + observeDynamicIcons(); + } + } + + // Expose API + window.ForkAwesomeShim = { + init: init, + processAllIcons: processAllIcons, + transformIconClasses: transformIconClasses, + getMappedIcon: getMappedIcon + }; + + // Auto-initialize + init(); + +})(); \ No newline at end of file diff --git a/themes/grav/js/icon-mappings.json b/themes/grav/js/icon-mappings.json new file mode 100644 index 00000000..f1ad1c8f --- /dev/null +++ b/themes/grav/js/icon-mappings.json @@ -0,0 +1,800 @@ +{ + "version": "1.0.0", + "description": "ForkAwesome 1.1.5 to FontAwesome 7 icon mappings", + "mappings": { + "direct": { + "comment": "Icons that map directly without changes", + "icons": { + "anchor": "anchor", + "archive": "archive", + "asterisk": "asterisk", + "ban": "ban", + "barcode": "barcode", + "bars": "bars", + "battery-full": "battery-full", + "battery-three-quarters": "battery-three-quarters", + "battery-half": "battery-half", + "battery-quarter": "battery-quarter", + "battery-empty": "battery-empty", + "bed": "bed", + "beer": "beer", + "bell": "bell", + "bell-slash": "bell-slash", + "bicycle": "bicycle", + "binoculars": "binoculars", + "birthday-cake": "cake-candles", + "bitcoin": "bitcoin", + "bold": "bold", + "bolt": "bolt", + "bomb": "bomb", + "book": "book", + "bookmark": "bookmark", + "briefcase": "briefcase", + "bug": "bug", + "building": "building", + "bullhorn": "bullhorn", + "bullseye": "bullseye", + "bus": "bus", + "calculator": "calculator", + "calendar": "calendar", + "camera": "camera", + "car": "car", + "caret-down": "caret-down", + "caret-left": "caret-left", + "caret-right": "caret-right", + "caret-up": "caret-up", + "cart-plus": "cart-plus", + "certificate": "certificate", + "check": "check", + "check-circle": "circle-check", + "chevron-down": "chevron-down", + "chevron-left": "chevron-left", + "chevron-right": "chevron-right", + "chevron-up": "chevron-up", + "child": "child", + "circle": "circle", + "clipboard": "clipboard", + "clock": "clock", + "cloud": "cloud", + "cloud-download": "cloud-arrow-down", + "cloud-upload": "cloud-arrow-up", + "code": "code", + "coffee": "mug-hot", + "cog": "gear", + "cogs": "gears", + "comment": "comment", + "comments": "comments", + "compass": "compass", + "copy": "copy", + "copyright": "copyright", + "credit-card": "credit-card", + "crop": "crop-simple", + "crosshairs": "crosshairs", + "cube": "cube", + "cubes": "cubes", + "database": "database", + "desktop": "desktop", + "diamond": "gem", + "download": "download", + "edit": "pen-to-square", + "eject": "eject", + "ellipsis-h": "ellipsis", + "ellipsis-v": "ellipsis-vertical", + "envelope": "envelope", + "eraser": "eraser", + "exclamation": "exclamation", + "exclamation-circle": "circle-exclamation", + "exclamation-triangle": "triangle-exclamation", + "external-link": "up-right-from-square", + "eye": "eye", + "eye-slash": "eye-slash", + "eyedropper": "eye-dropper", + "fax": "fax", + "file": "file", + "file-archive": "file-zipper", + "file-audio": "file-audio", + "file-code": "file-code", + "file-excel": "file-excel", + "file-image": "file-image", + "file-pdf": "file-pdf", + "file-powerpoint": "file-powerpoint", + "file-text": "file-lines", + "file-video": "file-video", + "file-word": "file-word", + "film": "film", + "filter": "filter", + "fire": "fire", + "flag": "flag", + "flask": "flask", + "folder": "folder", + "folder-open": "folder-open", + "font": "font", + "forward": "forward", + "gamepad": "gamepad", + "gavel": "gavel", + "gift": "gift", + "globe": "globe", + "graduation-cap": "graduation-cap", + "h-square": "square-h", + "hand-point-down": "hand-point-down", + "hand-point-left": "hand-point-left", + "hand-point-right": "hand-point-right", + "hand-point-up": "hand-point-up", + "hashtag": "hashtag", + "headphones": "headphones", + "heart": "heart", + "history": "clock-rotate-left", + "home": "house", + "hospital": "hospital", + "hourglass": "hourglass", + "image": "image", + "inbox": "inbox", + "indent": "indent", + "info": "info", + "info-circle": "circle-info", + "italic": "italic", + "key": "key", + "keyboard": "keyboard", + "language": "language", + "laptop": "laptop", + "leaf": "leaf", + "lemon": "lemon", + "level-down": "turn-down", + "level-up": "turn-up", + "life-ring": "life-ring", + "lightbulb": "lightbulb", + "link": "link", + "list": "list", + "list-alt": "rectangle-list", + "list-ol": "list-ol", + "list-ul": "list-ul", + "location-arrow": "location-arrow", + "lock": "lock", + "magic": "wand-magic-sparkles", + "magnet": "magnet", + "mail-forward": "share", + "mail-reply": "reply", + "mail-reply-all": "reply-all", + "map": "map", + "map-marker": "location-dot", + "map-pin": "map-pin", + "microphone": "microphone", + "microphone-slash": "microphone-slash", + "minus": "minus", + "minus-circle": "circle-minus", + "mobile": "mobile-screen-button", + "money": "money-bill", + "moon": "moon", + "music": "music", + "paint-brush": "paintbrush", + "paper-plane": "paper-plane", + "paperclip": "paperclip", + "pause": "pause", + "paw": "paw", + "pencil": "pencil", + "phone": "phone", + "picture": "image", + "pie-chart": "chart-pie", + "plane": "plane", + "play": "play", + "plug": "plug", + "plus": "plus", + "plus-circle": "circle-plus", + "power-off": "power-off", + "print": "print", + "puzzle-piece": "puzzle-piece", + "qrcode": "qrcode", + "question": "question", + "question-circle": "circle-question", + "quote-left": "quote-left", + "quote-right": "quote-right", + "random": "shuffle", + "recycle": "recycle", + "refresh": "rotate", + "registered": "registered", + "remove": "xmark", + "reorder": "bars", + "repeat": "repeat", + "reply": "reply", + "reply-all": "reply-all", + "retweet": "retweet", + "road": "road", + "rocket": "rocket", + "rss": "rss", + "save": "floppy-disk", + "scissors": "scissors", + "search": "magnifying-glass", + "search-minus": "magnifying-glass-minus", + "search-plus": "magnifying-glass-plus", + "server": "server", + "share": "share", + "share-alt": "share-nodes", + "shield": "shield", + "shopping-cart": "cart-shopping", + "sign-in": "right-to-bracket", + "sign-out": "right-from-bracket", + "signal": "signal", + "sitemap": "sitemap", + "sliders": "sliders", + "smile": "face-smile", + "sort": "sort", + "sort-alpha-asc": "arrow-down-a-z", + "sort-alpha-desc": "arrow-down-z-a", + "sort-amount-asc": "arrow-down-short-wide", + "sort-amount-desc": "arrow-down-wide-short", + "sort-asc": "sort-up", + "sort-desc": "sort-down", + "sort-numeric-asc": "arrow-down-1-9", + "sort-numeric-desc": "arrow-down-9-1", + "spinner": "spinner", + "square": "square", + "star": "star", + "star-half": "star-half", + "stop": "stop", + "strikethrough": "strikethrough", + "subscript": "subscript", + "sun": "sun", + "superscript": "superscript", + "table": "table", + "tablet": "tablet-screen-button", + "tag": "tag", + "tags": "tags", + "tasks": "list-check", + "terminal": "terminal", + "text-height": "text-height", + "text-width": "text-width", + "th": "table-cells", + "th-large": "table-cells-large", + "th-list": "table-list", + "thumbs-down": "thumbs-down", + "thumbs-up": "thumbs-up", + "ticket": "ticket", + "times": "xmark", + "times-circle": "circle-xmark", + "tint": "droplet", + "toggle-off": "toggle-off", + "toggle-on": "toggle-on", + "trademark": "trademark", + "trash": "trash", + "tree": "tree", + "trophy": "trophy", + "truck": "truck", + "umbrella": "umbrella", + "underline": "underline", + "undo": "rotate-left", + "unlock": "unlock", + "upload": "upload", + "user": "user", + "users": "users", + "video-camera": "video", + "volume-down": "volume-low", + "volume-off": "volume-xmark", + "volume-up": "volume-high", + "warning": "triangle-exclamation", + "wheelchair": "wheelchair", + "wifi": "wifi", + "wrench": "wrench" + } + }, + "outline": { + "comment": "Icons with -o suffix that map to FontAwesome regular style", + "icons": { + "address-book-o": { "name": "address-book", "style": "regular" }, + "address-card-o": { "name": "address-card", "style": "regular" }, + "bell-o": { "name": "bell", "style": "regular" }, + "bookmark-o": { "name": "bookmark", "style": "regular" }, + "building-o": { "name": "building", "style": "regular" }, + "calendar-o": { "name": "calendar", "style": "regular" }, + "check-circle-o": { "name": "circle-check", "style": "regular" }, + "check-square-o": { "name": "square-check", "style": "regular" }, + "circle-o": { "name": "circle", "style": "regular" }, + "clock-o": { "name": "clock", "style": "regular" }, + "comment-o": { "name": "comment", "style": "regular" }, + "comments-o": { "name": "comments", "style": "regular" }, + "credit-card-o": { "name": "credit-card", "style": "regular" }, + "dot-circle-o": { "name": "circle-dot", "style": "regular" }, + "envelope-o": { "name": "envelope", "style": "regular" }, + "envelope-open-o": { "name": "envelope-open", "style": "regular" }, + "eye-o": { "name": "eye", "style": "regular" }, + "file-o": { "name": "file", "style": "regular" }, + "file-text-o": { "name": "file-lines", "style": "regular" }, + "flag-o": { "name": "flag", "style": "regular" }, + "floppy-o": { "name": "floppy-disk", "style": "regular" }, + "folder-o": { "name": "folder", "style": "regular" }, + "folder-open-o": { "name": "folder-open", "style": "regular" }, + "frown-o": { "name": "face-frown", "style": "regular" }, + "hand-o-down": { "name": "hand-point-down", "style": "regular" }, + "hand-o-left": { "name": "hand-point-left", "style": "regular" }, + "hand-o-right": { "name": "hand-point-right", "style": "regular" }, + "hand-o-up": { "name": "hand-point-up", "style": "regular" }, + "heart-o": { "name": "heart", "style": "regular" }, + "hospital-o": { "name": "hospital", "style": "regular" }, + "hourglass-o": { "name": "hourglass", "style": "regular" }, + "image-o": { "name": "image", "style": "regular" }, + "keyboard-o": { "name": "keyboard", "style": "regular" }, + "lemon-o": { "name": "lemon", "style": "regular" }, + "lightbulb-o": { "name": "lightbulb", "style": "regular" }, + "map-o": { "name": "map", "style": "regular" }, + "meh-o": { "name": "face-meh", "style": "regular" }, + "minus-square-o": { "name": "square-minus", "style": "regular" }, + "moon-o": { "name": "moon", "style": "regular" }, + "newspaper-o": { "name": "newspaper", "style": "regular" }, + "paper-plane-o": { "name": "paper-plane", "style": "regular" }, + "pause-circle-o": { "name": "circle-pause", "style": "regular" }, + "picture-o": { "name": "image", "style": "regular" }, + "play-circle-o": { "name": "circle-play", "style": "regular" }, + "plus-square-o": { "name": "square-plus", "style": "regular" }, + "question-circle-o": { "name": "circle-question", "style": "regular" }, + "share-square-o": { "name": "share-from-square", "style": "regular" }, + "smile-o": { "name": "face-smile", "style": "regular" }, + "snowflake-o": { "name": "snowflake", "style": "regular" }, + "square-o": { "name": "square", "style": "regular" }, + "star-half-o": { "name": "star-half", "style": "regular" }, + "star-o": { "name": "star", "style": "regular" }, + "sticky-note-o": { "name": "note-sticky", "style": "regular" }, + "stop-circle-o": { "name": "circle-stop", "style": "regular" }, + "sun-o": { "name": "sun", "style": "regular" }, + "thumbs-down-o": { "name": "thumbs-down", "style": "regular" }, + "thumbs-up-o": { "name": "thumbs-up", "style": "regular" }, + "times-circle-o": { "name": "circle-xmark", "style": "regular" }, + "trash-o": { "name": "trash-can", "style": "regular" }, + "user-o": { "name": "user", "style": "regular" } + } + }, + "directional": { + "comment": "Directional and arrow icons with special mappings", + "icons": { + "angle-double-down": "angles-down", + "angle-double-left": "angles-left", + "angle-double-right": "angles-right", + "angle-double-up": "angles-up", + "angle-down": "angle-down", + "angle-left": "angle-left", + "angle-right": "angle-right", + "angle-up": "angle-up", + "arrow-circle-down": "circle-arrow-down", + "arrow-circle-left": "circle-arrow-left", + "arrow-circle-right": "circle-arrow-right", + "arrow-circle-up": "circle-arrow-up", + "arrow-circle-o-down": { "name": "circle-down", "style": "regular" }, + "arrow-circle-o-left": { "name": "circle-left", "style": "regular" }, + "arrow-circle-o-right": { "name": "circle-right", "style": "regular" }, + "arrow-circle-o-up": { "name": "circle-up", "style": "regular" }, + "arrow-down": "arrow-down", + "arrow-left": "arrow-left", + "arrow-right": "arrow-right", + "arrow-up": "arrow-up", + "arrows": "arrows-up-down-left-right", + "arrows-alt": "maximize", + "arrows-h": "arrows-left-right", + "arrows-v": "arrows-up-down", + "caret-square-o-down": { "name": "square-caret-down", "style": "regular" }, + "caret-square-o-left": { "name": "square-caret-left", "style": "regular" }, + "caret-square-o-right": { "name": "square-caret-right", "style": "regular" }, + "caret-square-o-up": { "name": "square-caret-up", "style": "regular" }, + "chevron-circle-down": "circle-chevron-down", + "chevron-circle-left": "circle-chevron-left", + "chevron-circle-right": "circle-chevron-right", + "chevron-circle-up": "circle-chevron-up", + "long-arrow-down": "arrow-down-long", + "long-arrow-left": "arrow-left-long", + "long-arrow-right": "arrow-right-long", + "long-arrow-up": "arrow-up-long" + } + }, + "brands": { + "comment": "Brand icons that need explicit brand style", + "icons": { + "500px": { "name": "500px", "style": "brands" }, + "adn": { "name": "adn", "style": "brands" }, + "amazon": { "name": "amazon", "style": "brands" }, + "android": { "name": "android", "style": "brands" }, + "angellist": { "name": "angellist", "style": "brands" }, + "apple": { "name": "apple", "style": "brands" }, + "bandcamp": { "name": "bandcamp", "style": "brands" }, + "behance": { "name": "behance", "style": "brands" }, + "bitbucket": { "name": "bitbucket", "style": "brands" }, + "bitcoin": { "name": "bitcoin", "style": "brands" }, + "black-tie": { "name": "black-tie", "style": "brands" }, + "bluetooth": { "name": "bluetooth", "style": "brands" }, + "bluetooth-b": { "name": "bluetooth-b", "style": "brands" }, + "buysellads": { "name": "buysellads", "style": "brands" }, + "cc-amex": { "name": "cc-amex", "style": "brands" }, + "cc-diners-club": { "name": "cc-diners-club", "style": "brands" }, + "cc-discover": { "name": "cc-discover", "style": "brands" }, + "cc-jcb": { "name": "cc-jcb", "style": "brands" }, + "cc-mastercard": { "name": "cc-mastercard", "style": "brands" }, + "cc-paypal": { "name": "cc-paypal", "style": "brands" }, + "cc-stripe": { "name": "cc-stripe", "style": "brands" }, + "cc-visa": { "name": "cc-visa", "style": "brands" }, + "chrome": { "name": "chrome", "style": "brands" }, + "codepen": { "name": "codepen", "style": "brands" }, + "connectdevelop": { "name": "connectdevelop", "style": "brands" }, + "contao": { "name": "contao", "style": "brands" }, + "css3": { "name": "css3", "style": "brands" }, + "dashcube": { "name": "dashcube", "style": "brands" }, + "delicious": { "name": "delicious", "style": "brands" }, + "deviantart": { "name": "deviantart", "style": "brands" }, + "digg": { "name": "digg", "style": "brands" }, + "dribbble": { "name": "dribbble", "style": "brands" }, + "dropbox": { "name": "dropbox", "style": "brands" }, + "drupal": { "name": "drupal", "style": "brands" }, + "edge": { "name": "edge", "style": "brands" }, + "empire": { "name": "empire", "style": "brands" }, + "envira": { "name": "envira", "style": "brands" }, + "expeditedssl": { "name": "expeditedssl", "style": "brands" }, + "facebook": { "name": "facebook", "style": "brands" }, + "facebook-f": { "name": "facebook-f", "style": "brands" }, + "facebook-official": { "name": "facebook", "style": "brands" }, + "facebook-square": { "name": "square-facebook", "style": "brands" }, + "firefox": { "name": "firefox", "style": "brands" }, + "flickr": { "name": "flickr", "style": "brands" }, + "fonticons": { "name": "fonticons", "style": "brands" }, + "fort-awesome": { "name": "fort-awesome", "style": "brands" }, + "forumbee": { "name": "forumbee", "style": "brands" }, + "foursquare": { "name": "foursquare", "style": "brands" }, + "free-code-camp": { "name": "free-code-camp", "style": "brands" }, + "get-pocket": { "name": "get-pocket", "style": "brands" }, + "gg": { "name": "gg", "style": "brands" }, + "gg-circle": { "name": "gg-circle", "style": "brands" }, + "git": { "name": "git", "style": "brands" }, + "git-square": { "name": "square-git", "style": "brands" }, + "github": { "name": "github", "style": "brands" }, + "github-alt": { "name": "github-alt", "style": "brands" }, + "github-square": { "name": "square-github", "style": "brands" }, + "gitlab": { "name": "gitlab", "style": "brands" }, + "gittip": { "name": "gratipay", "style": "brands" }, + "glide": { "name": "glide", "style": "brands" }, + "glide-g": { "name": "glide-g", "style": "brands" }, + "google": { "name": "google", "style": "brands" }, + "google-plus": { "name": "google-plus", "style": "brands" }, + "google-plus-circle": { "name": "google-plus", "style": "brands" }, + "google-plus-square": { "name": "square-google-plus", "style": "brands" }, + "google-wallet": { "name": "google-wallet", "style": "brands" }, + "gratipay": { "name": "gratipay", "style": "brands" }, + "grav": { "name": "grav", "style": "brands" }, + "hacker-news": { "name": "hacker-news", "style": "brands" }, + "houzz": { "name": "houzz", "style": "brands" }, + "html5": { "name": "html5", "style": "brands" }, + "imdb": { "name": "imdb", "style": "brands" }, + "instagram": { "name": "instagram", "style": "brands" }, + "internet-explorer": { "name": "internet-explorer", "style": "brands" }, + "ioxhost": { "name": "ioxhost", "style": "brands" }, + "joomla": { "name": "joomla", "style": "brands" }, + "jsfiddle": { "name": "jsfiddle", "style": "brands" }, + "lastfm": { "name": "lastfm", "style": "brands" }, + "lastfm-square": { "name": "square-lastfm", "style": "brands" }, + "leanpub": { "name": "leanpub", "style": "brands" }, + "linkedin": { "name": "linkedin", "style": "brands" }, + "linkedin-square": { "name": "square-linkedin", "style": "brands" }, + "linux": { "name": "linux", "style": "brands" }, + "maxcdn": { "name": "maxcdn", "style": "brands" }, + "meanpath": { "name": "font-awesome", "style": "brands" }, + "medium": { "name": "medium", "style": "brands" }, + "meetup": { "name": "meetup", "style": "brands" }, + "mixcloud": { "name": "mixcloud", "style": "brands" }, + "modx": { "name": "modx", "style": "brands" }, + "odnoklassniki": { "name": "odnoklassniki", "style": "brands" }, + "odnoklassniki-square": { "name": "square-odnoklassniki", "style": "brands" }, + "opencart": { "name": "opencart", "style": "brands" }, + "openid": { "name": "openid", "style": "brands" }, + "opera": { "name": "opera", "style": "brands" }, + "optin-monster": { "name": "optin-monster", "style": "brands" }, + "pagelines": { "name": "pagelines", "style": "brands" }, + "paypal": { "name": "paypal", "style": "brands" }, + "pied-piper": { "name": "pied-piper", "style": "brands" }, + "pied-piper-alt": { "name": "pied-piper-alt", "style": "brands" }, + "pied-piper-pp": { "name": "pied-piper-pp", "style": "brands" }, + "pinterest": { "name": "pinterest", "style": "brands" }, + "pinterest-p": { "name": "pinterest-p", "style": "brands" }, + "pinterest-square": { "name": "square-pinterest", "style": "brands" }, + "product-hunt": { "name": "product-hunt", "style": "brands" }, + "qq": { "name": "qq", "style": "brands" }, + "quora": { "name": "quora", "style": "brands" }, + "ra": { "name": "rebel", "style": "brands" }, + "rebel": { "name": "rebel", "style": "brands" }, + "reddit": { "name": "reddit", "style": "brands" }, + "reddit-alien": { "name": "reddit-alien", "style": "brands" }, + "reddit-square": { "name": "square-reddit", "style": "brands" }, + "renren": { "name": "renren", "style": "brands" }, + "resistance": { "name": "rebel", "style": "brands" }, + "safari": { "name": "safari", "style": "brands" }, + "scribd": { "name": "scribd", "style": "brands" }, + "sellsy": { "name": "sellsy", "style": "brands" }, + "shirtsinbulk": { "name": "shirtsinbulk", "style": "brands" }, + "simplybuilt": { "name": "simplybuilt", "style": "brands" }, + "skyatlas": { "name": "skyatlas", "style": "brands" }, + "skype": { "name": "skype", "style": "brands" }, + "slack": { "name": "slack", "style": "brands" }, + "slideshare": { "name": "slideshare", "style": "brands" }, + "snapchat": { "name": "snapchat", "style": "brands" }, + "snapchat-ghost": { "name": "snapchat", "style": "brands" }, + "snapchat-square": { "name": "square-snapchat", "style": "brands" }, + "soundcloud": { "name": "soundcloud", "style": "brands" }, + "spotify": { "name": "spotify", "style": "brands" }, + "stack-exchange": { "name": "stack-exchange", "style": "brands" }, + "stack-overflow": { "name": "stack-overflow", "style": "brands" }, + "steam": { "name": "steam", "style": "brands" }, + "steam-square": { "name": "square-steam", "style": "brands" }, + "stumbleupon": { "name": "stumbleupon", "style": "brands" }, + "stumbleupon-circle": { "name": "stumbleupon-circle", "style": "brands" }, + "tencent-weibo": { "name": "tencent-weibo", "style": "brands" }, + "themeisle": { "name": "themeisle", "style": "brands" }, + "trello": { "name": "trello", "style": "brands" }, + "tripadvisor": { "name": "tripadvisor", "style": "brands" }, + "tumblr": { "name": "tumblr", "style": "brands" }, + "tumblr-square": { "name": "square-tumblr", "style": "brands" }, + "twitch": { "name": "twitch", "style": "brands" }, + "twitter": { "name": "x-twitter", "style": "brands" }, + "twitter-square": { "name": "square-x-twitter", "style": "brands" }, + "usb": { "name": "usb", "style": "brands" }, + "viacoin": { "name": "viacoin", "style": "brands" }, + "viadeo": { "name": "viadeo", "style": "brands" }, + "viadeo-square": { "name": "square-viadeo", "style": "brands" }, + "vimeo": { "name": "vimeo-v", "style": "brands" }, + "vimeo-square": { "name": "square-vimeo", "style": "brands" }, + "vine": { "name": "vine", "style": "brands" }, + "vk": { "name": "vk", "style": "brands" }, + "wechat": { "name": "weixin", "style": "brands" }, + "weibo": { "name": "weibo", "style": "brands" }, + "weixin": { "name": "weixin", "style": "brands" }, + "whatsapp": { "name": "whatsapp", "style": "brands" }, + "wikipedia-w": { "name": "wikipedia-w", "style": "brands" }, + "windows": { "name": "windows", "style": "brands" }, + "wordpress": { "name": "wordpress", "style": "brands" }, + "wpbeginner": { "name": "wpbeginner", "style": "brands" }, + "wpexplorer": { "name": "wpexplorer", "style": "brands" }, + "wpforms": { "name": "wpforms", "style": "brands" }, + "xing": { "name": "xing", "style": "brands" }, + "xing-square": { "name": "square-xing", "style": "brands" }, + "y-combinator": { "name": "y-combinator", "style": "brands" }, + "yahoo": { "name": "yahoo", "style": "brands" }, + "yc": { "name": "y-combinator", "style": "brands" }, + "yelp": { "name": "yelp", "style": "brands" }, + "yoast": { "name": "yoast", "style": "brands" }, + "youtube": { "name": "youtube", "style": "brands" }, + "youtube-play": { "name": "youtube", "style": "brands" }, + "youtube-square": { "name": "square-youtube", "style": "brands" } + } + }, + "forkSpecific": { + "comment": "Fork Awesome specific icons that need fallbacks in FontAwesome 6", + "icons": { + "activitypub": { "name": "share-nodes", "fallback": true }, + "archive-org": { "name": "building-columns", "fallback": true }, + "artstation": { "name": "artstation", "style": "brands" }, + "bell-slash-o": { "name": "bell-slash", "style": "regular" }, + "biometric": { "name": "fingerprint", "fallback": true }, + "c": { "name": "c", "fallback": true }, + "cc-by": { "name": "creative-commons-by", "style": "brands" }, + "cc-nc": { "name": "creative-commons-nc", "style": "brands" }, + "cc-nc-eu": { "name": "creative-commons-nc-eu", "style": "brands" }, + "cc-nc-jp": { "name": "creative-commons-nc-jp", "style": "brands" }, + "cc-nd": { "name": "creative-commons-nd", "style": "brands" }, + "cc-pd": { "name": "creative-commons-pd", "style": "brands" }, + "cc-remix": { "name": "creative-commons-remix", "style": "brands" }, + "cc-sa": { "name": "creative-commons-sa", "style": "brands" }, + "cc-share": { "name": "creative-commons-share", "style": "brands" }, + "cc-zero": { "name": "creative-commons-zero", "style": "brands" }, + "commenting": { "name": "comment-dots", "fallback": true }, + "commenting-o": { "name": "comment-dots", "style": "regular", "fallback": true }, + "dat": { "name": "database", "fallback": true }, + "diaspora": { "name": "asterisk", "fallback": true }, + "digitalocean": { "name": "digital-ocean", "style": "brands" }, + "discord": { "name": "discord", "style": "brands" }, + "emby": { "name": "play-circle", "fallback": true }, + "ethereum": { "name": "ethereum", "style": "brands" }, + "f-droid": { "name": "android", "style": "brands", "fallback": true }, + "facebook-messenger": { "name": "facebook-messenger", "style": "brands" }, + "foster": { "name": "hands-holding-child", "fallback": true }, + "friendica": { "name": "users", "fallback": true }, + "galaxy": { "name": "rocket", "fallback": true }, + "gimp": { "name": "palette", "fallback": true }, + "gitea": { "name": "mug-hot", "fallback": true }, + "gnu-social": { "name": "gnu", "fallback": true }, + "google-auth": { "name": "shield", "fallback": true }, + "hackaday": { "name": "wrench", "fallback": true }, + "hackster": { "name": "microchip", "fallback": true }, + "inkscape": { "name": "pen-nib", "fallback": true }, + "jirafeau": { "name": "share", "fallback": true }, + "joplin": { "name": "book", "fallback": true }, + "jsdelivr": { "name": "truck-fast", "fallback": true }, + "keybase": { "name": "key", "fallback": true }, + "laravel": { "name": "laravel", "style": "brands" }, + "liberapay": { "name": "hand-holding-heart", "fallback": true }, + "libreoffice": { "name": "file-word", "fallback": true }, + "line-graph": { "name": "chart-line", "fallback": true }, + "mastodon": { "name": "mastodon", "style": "brands" }, + "matrix-org": { "name": "comment-dots", "fallback": true }, + "meetup": { "name": "meetup", "style": "brands" }, + "nextcloud": { "name": "cloud", "fallback": true }, + "nodejs": { "name": "node-js", "style": "brands" }, + "orcid": { "name": "orcid", "style": "brands" }, + "patreon": { "name": "patreon", "style": "brands" }, + "peertube": { "name": "video", "fallback": true }, + "php": { "name": "php", "style": "brands" }, + "pi-hole": { "name": "shield-halved", "fallback": true }, + "pixelfed": { "name": "camera-retro", "fallback": true }, + "plume": { "name": "feather", "fallback": true }, + "postgresql": { "name": "database", "fallback": true }, + "python": { "name": "python", "style": "brands" }, + "react": { "name": "react", "style": "brands" }, + "researchgate": { "name": "researchgate", "style": "brands" }, + "riot": { "name": "comments", "fallback": true }, + "scuttlebutt": { "name": "fish", "fallback": true }, + "signal": { "name": "signal-messenger", "style": "brands" }, + "sketchfab": { "name": "cube", "fallback": true }, + "snowdrift": { "name": "snowflake", "fallback": true }, + "social-home": { "name": "house-user", "fallback": true }, + "syncthing": { "name": "arrows-rotate", "fallback": true }, + "telegram": { "name": "telegram", "style": "brands" }, + "tex": { "name": "code", "fallback": true }, + "tor": { "name": "user-secret", "fallback": true }, + "unsplash": { "name": "unsplash", "style": "brands" }, + "vagrant": { "name": "v", "fallback": true }, + "vscode": { "name": "code", "fallback": true }, + "xmpp": { "name": "comment", "fallback": true }, + "zotero": { "name": "bookmark", "fallback": true } + } + }, + "aliases": { + "comment": "Common aliases and alternative names", + "icons": { + "automobile": "car", + "bank": "building-columns", + "bar-chart": "chart-column", + "bar-chart-o": { "name": "chart-bar", "style": "regular" }, + "battery": "battery-full", + "battery-0": "battery-empty", + "battery-1": "battery-quarter", + "battery-2": "battery-half", + "battery-3": "battery-three-quarters", + "battery-4": "battery-full", + "calendar-check-o": { "name": "calendar-check", "style": "regular" }, + "calendar-minus-o": { "name": "calendar-minus", "style": "regular" }, + "calendar-plus-o": { "name": "calendar-plus", "style": "regular" }, + "calendar-times-o": { "name": "calendar-xmark", "style": "regular" }, + "cc": { "name": "closed-captioning", "style": "regular" }, + "chain": "link", + "chain-broken": "link-slash", + "close": "xmark", + "cloud-download-alt": "cloud-arrow-down", + "cloud-upload-alt": "cloud-arrow-up", + "code-fork": "code-branch", + "dashboard": "gauge-high", + "deaf": "ear-deaf", + "deafness": "ear-deaf", + "edit": "pen-to-square", + "euro": "euro-sign", + "eur": "euro-sign", + "eyedropper": "eye-dropper", + "fa": { "name": "font-awesome", "style": "brands" }, + "facebook-official": { "name": "facebook", "style": "brands" }, + "feed": "rss", + "file-archive-o": { "name": "file-zipper", "style": "regular" }, + "file-audio-o": { "name": "file-audio", "style": "regular" }, + "file-code-o": { "name": "file-code", "style": "regular" }, + "file-excel-o": { "name": "file-excel", "style": "regular" }, + "file-image-o": { "name": "file-image", "style": "regular" }, + "file-movie-o": { "name": "file-video", "style": "regular" }, + "file-pdf-o": { "name": "file-pdf", "style": "regular" }, + "file-photo-o": { "name": "file-image", "style": "regular" }, + "file-picture-o": { "name": "file-image", "style": "regular" }, + "file-powerpoint-o": { "name": "file-powerpoint", "style": "regular" }, + "file-sound-o": { "name": "file-audio", "style": "regular" }, + "file-video-o": { "name": "file-video", "style": "regular" }, + "file-word-o": { "name": "file-word", "style": "regular" }, + "file-zip-o": { "name": "file-zipper", "style": "regular" }, + "flash": "bolt", + "futbol-o": { "name": "futbol", "style": "regular" }, + "gbp": "sterling-sign", + "ge": "greater-than-equal", + "gear": "gear", + "gears": "gears", + "google-plus-circle": { "name": "google-plus", "style": "brands" }, + "google-plus-official": { "name": "google-plus", "style": "brands" }, + "group": "users", + "hand-grab-o": { "name": "hand", "style": "regular" }, + "hand-lizard-o": { "name": "hand-lizard", "style": "regular" }, + "hand-paper-o": { "name": "hand", "style": "regular" }, + "hand-peace-o": { "name": "hand-peace", "style": "regular" }, + "hand-pointer-o": { "name": "hand-pointer", "style": "regular" }, + "hand-rock-o": { "name": "hand-back-fist", "style": "regular" }, + "hand-scissors-o": { "name": "hand-scissors", "style": "regular" }, + "hand-spock-o": { "name": "hand-spock", "style": "regular" }, + "hand-stop-o": { "name": "hand", "style": "regular" }, + "hard-of-hearing": "ear-deaf", + "header": "heading", + "hotel": "bed", + "hourglass-1": "hourglass-start", + "hourglass-2": "hourglass-half", + "hourglass-3": "hourglass-end", + "id-badge-o": { "name": "id-badge", "style": "regular" }, + "id-card-o": { "name": "id-card", "style": "regular" }, + "ils": "shekel-sign", + "image": "image", + "inr": "indian-rupee-sign", + "institution": "building-columns", + "intersex": "mars-and-venus", + "jpy": "yen-sign", + "krw": "won-sign", + "legal": "gavel", + "life-bouy": "life-ring", + "life-buoy": "life-ring", + "life-saver": "life-ring", + "line-chart": "chart-line", + "linkedin-in": { "name": "linkedin-in", "style": "brands" }, + "map-o": { "name": "map", "style": "regular" }, + "mortar-board": "graduation-cap", + "navicon": "bars", + "newspaper-o": { "name": "newspaper", "style": "regular" }, + "paste": "clipboard", + "pencil-square-o": { "name": "pen-to-square", "style": "regular" }, + "pencil-square": "pen-to-square", + "photo": "image", + "pie-chart": "chart-pie", + "refresh": "rotate", + "registered": { "name": "registered", "style": "regular" }, + "remove": "xmark", + "reorder": "bars", + "rmb": "yen-sign", + "rouble": "ruble-sign", + "rub": "ruble-sign", + "ruble": "ruble-sign", + "rupee": "indian-rupee-sign", + "s15": "bath", + "save": "floppy-disk", + "send": "paper-plane", + "send-o": { "name": "paper-plane", "style": "regular" }, + "shekel": "shekel-sign", + "sheqel": "shekel-sign", + "shield-alt": "shield-halved", + "shopping-bag": "bag-shopping", + "sign-in-alt": "right-to-bracket", + "sign-out-alt": "right-from-bracket", + "signing": "hands", + "soccer-ball-o": { "name": "futbol", "style": "regular" }, + "sort-alpha-down": "arrow-down-a-z", + "sort-alpha-up": "arrow-up-a-z", + "sort-amount-down": "arrow-down-short-wide", + "sort-amount-up": "arrow-up-short-wide", + "sort-numeric-down": "arrow-down-1-9", + "sort-numeric-up": "arrow-up-1-9", + "spoon": "utensil-spoon", + "support": "life-ring", + "tablet": "tablet-screen-button", + "tachometer": "gauge-high", + "television": "tv", + "thumb-tack": "thumbtack", + "thumbs-o-down": { "name": "thumbs-down", "style": "regular" }, + "thumbs-o-up": { "name": "thumbs-up", "style": "regular" }, + "ticket": "ticket-simple", + "times-rectangle": "rectangle-xmark", + "times-rectangle-o": { "name": "rectangle-xmark", "style": "regular" }, + "toggle-down": { "name": "square-caret-down", "style": "regular" }, + "toggle-left": { "name": "square-caret-left", "style": "regular" }, + "toggle-right": { "name": "square-caret-right", "style": "regular" }, + "toggle-up": { "name": "square-caret-up", "style": "regular" }, + "trash": "trash", + "trash-o": { "name": "trash-can", "style": "regular" }, + "try": "turkish-lira-sign", + "turkish-lira": "turkish-lira-sign", + "university": "building-columns", + "unlink": "link-slash", + "usd": "dollar-sign", + "user-circle-o": { "name": "circle-user", "style": "regular" }, + "user-o": { "name": "user", "style": "regular" }, + "vcard": "address-card", + "vcard-o": { "name": "address-card", "style": "regular" }, + "volume-control-phone": "phone-volume", + "wheelchair-alt": "accessible-icon", + "window-close": "rectangle-xmark", + "window-close-o": { "name": "rectangle-xmark", "style": "regular" }, + "won": "won-sign", + "y-combinator-square": { "name": "hacker-news", "style": "brands" }, + "yc-square": { "name": "hacker-news", "style": "brands" }, + "yen": "yen-sign" + } + } + } +} \ No newline at end of file diff --git a/themes/grav/js/scheduler-admin.js b/themes/grav/js/scheduler-admin.js new file mode 100644 index 00000000..60df75fe --- /dev/null +++ b/themes/grav/js/scheduler-admin.js @@ -0,0 +1,144 @@ +/** + * Scheduler Admin JavaScript + * Handles dynamic loading of scheduler status in admin panel + */ + +(function() { + 'use strict'; + + // Wait for DOM to be ready + document.addEventListener('DOMContentLoaded', function() { + // Check if we're on the scheduler config page + const healthStatusEl = document.getElementById('scheduler-health-status'); + const triggersEl = document.getElementById('scheduler-triggers'); + + if (!healthStatusEl && !triggersEl) { + return; // Not on scheduler page + } + + // Load scheduler status + loadSchedulerStatus(); + + // Refresh every 30 seconds if page is visible + let refreshInterval = setInterval(function() { + if (!document.hidden) { + loadSchedulerStatus(); + } + }, 30000); + + // Clean up interval when leaving page + window.addEventListener('beforeunload', function() { + clearInterval(refreshInterval); + }); + }); + + /** + * Load scheduler status via AJAX + */ + function loadSchedulerStatus() { + const healthStatusEl = document.getElementById('scheduler-health-status'); + const triggersEl = document.getElementById('scheduler-triggers'); + + // Get the admin base URL + const adminBase = GravAdmin ? GravAdmin.config.base_url_relative : '/admin'; + const nonce = GravAdmin ? GravAdmin.config.admin_nonce : ''; + + // Make AJAX request + fetch(adminBase + '/scheduler/status', { + method: 'GET', + headers: { + 'Accept': 'application/json', + 'X-Requested-With': 'XMLHttpRequest', + 'Admin-Nonce': nonce + }, + credentials: 'same-origin' + }) + .then(response => { + if (!response.ok) { + throw new Error('Network response was not ok'); + } + return response.json(); + }) + .then(data => { + // Update health status + if (healthStatusEl && data.health) { + healthStatusEl.innerHTML = data.health; + healthStatusEl.classList.remove('text-muted'); + } + + // Update triggers + if (triggersEl && data.triggers) { + triggersEl.innerHTML = data.triggers; + triggersEl.classList.remove('text-muted'); + } + }) + .catch(error => { + console.error('Error loading scheduler status:', error); + + // Show error message + if (healthStatusEl) { + healthStatusEl.innerHTML = '
Failed to load status
'; + } + if (triggersEl) { + triggersEl.innerHTML = '
Failed to load triggers
'; + } + }); + } + + /** + * Test scheduler webhook + */ + window.testSchedulerWebhook = function() { + const token = document.querySelector('input[name="data[scheduler][modern][webhook][token]"]')?.value; + + if (!token) { + alert('Please set a webhook token first'); + return; + } + + const siteUrl = window.location.origin; + const webhookUrl = siteUrl + '/scheduler/webhook'; + + fetch(webhookUrl, { + method: 'POST', + headers: { + 'Authorization': 'Bearer ' + token, + 'Accept': 'application/json' + } + }) + .then(response => response.json()) + .then(data => { + if (data.success) { + alert('Webhook test successful! Jobs run: ' + (data.jobs_run || 0)); + } else { + alert('Webhook test failed: ' + (data.message || 'Unknown error')); + } + }) + .catch(error => { + alert('Webhook test error: ' + error.message); + }); + }; + + /** + * Generate secure token + */ + window.generateSchedulerToken = function() { + const tokenField = document.querySelector('input[name="data[scheduler][modern][webhook][token]"]'); + + if (!tokenField) { + return; + } + + // Generate random token (32 bytes = 64 hex chars) + const array = new Uint8Array(32); + crypto.getRandomValues(array); + const token = Array.from(array, byte => byte.toString(16).padStart(2, '0')).join(''); + + tokenField.value = token; + + // Trigger change event + const event = new Event('change', { bubbles: true }); + tokenField.dispatchEvent(event); + }; + +})(); \ No newline at end of file diff --git a/themes/grav/templates/forms/fields/file/file.html.twig b/themes/grav/templates/forms/fields/file/file.html.twig index 8e06edf4..75d79de1 100644 --- a/themes/grav/templates/forms/fields/file/file.html.twig +++ b/themes/grav/templates/forms/fields/file/file.html.twig @@ -1,7 +1,7 @@ {% extends "forms/field.html.twig" %} {% macro bytesToSize(bytes) -%} - {% spaceless %} +{% apply spaceless %} {% set kilobyte = 1024 %} {% set megabyte = kilobyte * 1024 %} {% set gigabyte = megabyte * 1024 %} @@ -18,7 +18,7 @@ {% else %} {{ (bytes / terabyte)|number_format(2, '.') ~ ' TB' }} {% endif %} - {% endspaceless %} + {% endapply %} {%- endmacro %} {% macro preview(path, value, global) %} diff --git a/themes/grav/templates/forms/fields/webhook-status/webhook-status.html.twig b/themes/grav/templates/forms/fields/webhook-status/webhook-status.html.twig new file mode 100644 index 00000000..6a9f4e74 --- /dev/null +++ b/themes/grav/templates/forms/fields/webhook-status/webhook-status.html.twig @@ -0,0 +1,33 @@ +{% extends "forms/field.html.twig" %} + +{% block field %} +
+ {% set plugin_exists = config.plugins['scheduler-webhook'] is defined %} + {% set plugin_enabled = plugin_exists and config.plugins['scheduler-webhook'].enabled %} + + {% if not plugin_exists %} + {# Plugin not installed #} +
+ Webhook Plugin Required
+ The scheduler-webhook plugin is required for webhook functionality.

+ + Install Plugin Now + + or run: bin/gpm install scheduler-webhook +
+ {% elseif not plugin_enabled %} + {# Plugin installed but disabled #} +
+ Webhook Plugin Installed
+ The scheduler-webhook plugin is installed but disabled. + Enable it in plugin settings to use webhook functionality. +
+ {% else %} + {# Plugin installed and enabled #} +
+ Webhook Plugin Ready!
+ The scheduler-webhook plugin is installed and active. Configure your webhook settings below. +
+ {% endif %} +
+{% endblock %} \ No newline at end of file diff --git a/themes/grav/templates/partials/base-root.html.twig b/themes/grav/templates/partials/base-root.html.twig index bec3c3ce..9a0c7aae 100644 --- a/themes/grav/templates/partials/base-root.html.twig +++ b/themes/grav/templates/partials/base-root.html.twig @@ -33,13 +33,11 @@ {{ assets.js()|raw }} {% endblock %} - + {% block body %} diff --git a/themes/grav/templates/partials/footer.html.twig b/themes/grav/templates/partials/footer.html.twig index 468f7a80..19f5aa84 100644 --- a/themes/grav/templates/partials/footer.html.twig +++ b/themes/grav/templates/partials/footer.html.twig @@ -1,5 +1,5 @@ {% if custom_admin_footer %} {{ custom_admin_footer|raw }} {% else %} - Grav v{{ constant('GRAV_VERSION') }} - Admin v{{ admin_version }} - {{ "PLUGIN_ADMIN.WAS_MADE_WITH"|t|lower }} {{ "PLUGIN_ADMIN.BY"|t|lower }} Trilby Media. + Grav v{{ constant('GRAV_VERSION') }} - Admin v{{ admin_version }} - {{ "PLUGIN_ADMIN.WAS_MADE_WITH"|t|lower }} {{ "PLUGIN_ADMIN.BY"|t|lower }} Trilby Media. {% endif %} diff --git a/themes/grav/templates/partials/javascript-config.html.twig b/themes/grav/templates/partials/javascript-config.html.twig index 6e75b3db..c0c1542a 100644 --- a/themes/grav/templates/partials/javascript-config.html.twig +++ b/themes/grav/templates/partials/javascript-config.html.twig @@ -1,5 +1,10 @@ {% if user.authorized and authorize(['admin.login', 'admin.super']) %} -{% set notifications = (config.plugins.admin.widgets['dashboard-notifications'] or config.plugins.admin.notifications.dashboard or config.plugins.admin.notifications.plugins or config.plugins.admin.notifications.themes) ? 1 : 0 %} +{% set feed_enabled = config.plugins.admin.notifications.feed is same as(true) or config.plugins.admin.notifications.feed == 'true' %} +{% set dashboard_enabled = config.plugins.admin.notifications.dashboard is same as(true) or config.plugins.admin.notifications.dashboard == 'true' %} +{% set plugins_enabled = config.plugins.admin.notifications.plugins is same as(true) or config.plugins.admin.notifications.plugins == 'true' %} +{% set themes_enabled = config.plugins.admin.notifications.themes is same as(true) or config.plugins.admin.notifications.themes == 'true' %} +{% set notifications = (feed_enabled or dashboard_enabled or plugins_enabled or themes_enabled) ? 1 : 0 %} + {% switch template_route %} {% case 'dashboard' %} {% set notifications_filters = "['feed', 'dashboard', 'top']" %} diff --git a/themes/grav/templates/partials/stylesheets.html.twig b/themes/grav/templates/partials/stylesheets.html.twig index a3153c97..c155faf3 100644 --- a/themes/grav/templates/partials/stylesheets.html.twig +++ b/themes/grav/templates/partials/stylesheets.html.twig @@ -2,7 +2,8 @@ {% do assets.addCss(theme_url~'/css-compiled/template.css', {priority: 20}) %} {% do assets.addCss('asset://admin-preset.css', {priority: 5}) %} {% do assets.addCss(theme_url~'/css-compiled/simple-fonts.css') %} -{% do assets.addCss(theme_url~'/css/fork-awesome.min.css') %} +{% do assets.addCss(theme_url~'/css/fontawesome7.min.css') %} +{% do assets.addCss(theme_url~'/css/fork-awesome-shim.css') %} {% do assets.addCss(theme_url~'/css/chartist.min.css') %} {% do assets.addCss(theme_url~'/css/selectize.min.css') %} {% do assets.addCss(theme_url~'/css/hint.base.min.css') %} diff --git a/themes/grav/templates/partials/tools-scheduler.html.twig b/themes/grav/templates/partials/tools-scheduler.html.twig index 06ba1f18..0034383c 100644 --- a/themes/grav/templates/partials/tools-scheduler.html.twig +++ b/themes/grav/templates/partials/tools-scheduler.html.twig @@ -1,14 +1,33 @@ +
{% set data = admin.data('config/scheduler') %} {% set cron_status = grav.scheduler.isCrontabSetup() %} {% set user = grav.scheduler.whoami() %} + {% set webhook_enabled = grav.scheduler.isWebhookEnabled() %} + {% set active_triggers = grav.scheduler.getActiveTriggers() %} - {% if cron_status == 1 %} -
-
{{ "PLUGIN_ADMIN.SCHEDULER_INSTALL_INSTRUCTIONS"|t }}
- {{ "PLUGIN_ADMIN.SCHEDULER_INSTALLED_READY"|t }} -
+ {% if active_triggers|length > 0 %} + {# We have at least one active trigger method #} + {% if 'webhook' in active_triggers and 'cron' not in active_triggers %} + {# Webhook only mode #} +
+
{{ "PLUGIN_ADMIN.SCHEDULER_INSTALL_INSTRUCTIONS"|t }}
+ Webhook Active - Scheduler is ready to receive webhook triggers +
+ {% elseif 'cron' in active_triggers and 'webhook' in active_triggers %} + {# Both cron and webhook #} +
+
{{ "PLUGIN_ADMIN.SCHEDULER_INSTALL_INSTRUCTIONS"|t }}
+ Cron & Webhook Active - Scheduler is running via cron and accepts webhook triggers +
+ {% elseif 'cron' in active_triggers %} + {# Cron only #} +
+
{{ "PLUGIN_ADMIN.SCHEDULER_INSTALL_INSTRUCTIONS"|t }}
+ {{ "PLUGIN_ADMIN.SCHEDULER_INSTALLED_READY"|t }} +
+ {% endif %} {% elseif cron_status == 2 %}
{{ "PLUGIN_ADMIN.SCHEDULER_CRON_NA"|t([user])|raw }}
{% else %} @@ -17,8 +36,35 @@
{{ "PLUGIN_ADMIN.SCHEDULER_WARNING"|t([user]) }}
-
-
{{- grav.scheduler.getCronCommand()|trim -}}
+
+ {% if webhook_enabled %} +

Webhook Setup

+

The scheduler is configured to use webhooks. To trigger jobs via webhook:

+ + {% set webhook_token = config.get('scheduler.modern.webhook.token') %} + {% if not webhook_token %} + {% set webhook_token = 'YOUR_TOKEN' %} + {% endif %} +
+ +
+ Copy +
+
+ +

Make sure the scheduler-webhook plugin is installed and enabled.

+ +
+

Alternative: Cron Setup

+ {% endif %} + +
+ +
+ Copy +
+

{{ "PLUGIN_ADMIN.SCHEDULER_POST_INSTRUCTIONS"|t([user])|raw }}

diff --git a/themes/grav/test-icons.html b/themes/grav/test-icons.html new file mode 100644 index 00000000..4f64ad4c --- /dev/null +++ b/themes/grav/test-icons.html @@ -0,0 +1,40 @@ + + + + + Icon Test + + + + + +

FontAwesome 7 Icon Test

+ +
+

Testing fa-sign-out with ForkAwesome shim:

+ - Should show logout icon +
+ +
+

Testing fa-list-ol with ForkAwesome shim:

+ - Should show ordered list icon +
+ +
+

Testing native FontAwesome 7 classes:

+ - Native FA7 logout icon (solid)
+ - Native FA7 list icon (solid)
+ - Alternative logout icon +
+ +
+

Testing with different font weights:

+ - Force 900 weight
+ - Force 400 weight +
+ + \ No newline at end of file diff --git a/themes/grav/webfonts/fa-brands-400.woff2 b/themes/grav/webfonts/fa-brands-400.woff2 new file mode 100644 index 00000000..4bb9e620 Binary files /dev/null and b/themes/grav/webfonts/fa-brands-400.woff2 differ diff --git a/themes/grav/webfonts/fa-regular-400.woff2 b/themes/grav/webfonts/fa-regular-400.woff2 new file mode 100644 index 00000000..644a834d Binary files /dev/null and b/themes/grav/webfonts/fa-regular-400.woff2 differ diff --git a/themes/grav/webfonts/fa-solid-900.woff2 b/themes/grav/webfonts/fa-solid-900.woff2 new file mode 100644 index 00000000..6b79def0 Binary files /dev/null and b/themes/grav/webfonts/fa-solid-900.woff2 differ diff --git a/themes/grav/webfonts/fa-v4compatibility.woff2 b/themes/grav/webfonts/fa-v4compatibility.woff2 new file mode 100644 index 00000000..c5eb3351 Binary files /dev/null and b/themes/grav/webfonts/fa-v4compatibility.woff2 differ diff --git a/vendor/bin/pscss b/vendor/bin/pscss index 9743992a..e57bed8f 100755 --- a/vendor/bin/pscss +++ b/vendor/bin/pscss @@ -112,9 +112,8 @@ if (PHP_VERSION_ID < 80000) { (function_exists('stream_get_wrappers') && in_array('phpvfscomposer', stream_get_wrappers(), true)) || (function_exists('stream_wrapper_register') && stream_wrapper_register('phpvfscomposer', 'Composer\BinProxyWrapper')) ) { - include("phpvfscomposer://" . __DIR__ . '/..'.'/scssphp/scssphp/bin/pscss'); - exit(0); + return include("phpvfscomposer://" . __DIR__ . '/..'.'/scssphp/scssphp/bin/pscss'); } } -include __DIR__ . '/..'.'/scssphp/scssphp/bin/pscss'; +return include __DIR__ . '/..'.'/scssphp/scssphp/bin/pscss'; diff --git a/vendor/composer/autoload_files.php b/vendor/composer/autoload_files.php deleted file mode 100644 index c4d9d6a0..00000000 --- a/vendor/composer/autoload_files.php +++ /dev/null @@ -1,10 +0,0 @@ - $vendorDir . '/laminas/laminas-zendframework-bridge/src/autoload.php', -); diff --git a/vendor/composer/autoload_psr4.php b/vendor/composer/autoload_psr4.php index 4fc02d2a..e20c1717 100644 --- a/vendor/composer/autoload_psr4.php +++ b/vendor/composer/autoload_psr4.php @@ -7,7 +7,6 @@ $baseDir = dirname($vendorDir); return array( 'ScssPhp\\ScssPhp\\' => array($vendorDir . '/scssphp/scssphp/src'), - 'Laminas\\ZendFrameworkBridge\\' => array($vendorDir . '/laminas/laminas-zendframework-bridge/src'), 'Laminas\\Xml\\' => array($vendorDir . '/laminas/laminas-xml/src'), 'Grav\\Plugin\\Admin\\' => array($baseDir . '/classes/plugin'), ); diff --git a/vendor/composer/autoload_real.php b/vendor/composer/autoload_real.php index 82a6a2d7..cb2d2b89 100644 --- a/vendor/composer/autoload_real.php +++ b/vendor/composer/autoload_real.php @@ -33,18 +33,6 @@ class ComposerAutoloaderInit98c98c1c3d67f21a128f935fe4a74897 $loader->register(true); - $filesToLoad = \Composer\Autoload\ComposerStaticInit98c98c1c3d67f21a128f935fe4a74897::$files; - $requireFile = \Closure::bind(static function ($fileIdentifier, $file) { - if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { - $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true; - - require $file; - } - }, null, null); - foreach ($filesToLoad as $fileIdentifier => $file) { - $requireFile($fileIdentifier, $file); - } - return $loader; } } diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php index c5953f5f..aefc3b21 100644 --- a/vendor/composer/autoload_static.php +++ b/vendor/composer/autoload_static.php @@ -6,10 +6,6 @@ namespace Composer\Autoload; class ComposerStaticInit98c98c1c3d67f21a128f935fe4a74897 { - public static $files = array ( - '7e9bd612cc444b3eed788ebbe46263a0' => __DIR__ . '/..' . '/laminas/laminas-zendframework-bridge/src/autoload.php', - ); - public static $prefixLengthsPsr4 = array ( 'S' => array ( @@ -17,7 +13,6 @@ class ComposerStaticInit98c98c1c3d67f21a128f935fe4a74897 ), 'L' => array ( - 'Laminas\\ZendFrameworkBridge\\' => 28, 'Laminas\\Xml\\' => 12, ), 'G' => @@ -31,10 +26,6 @@ class ComposerStaticInit98c98c1c3d67f21a128f935fe4a74897 array ( 0 => __DIR__ . '/..' . '/scssphp/scssphp/src', ), - 'Laminas\\ZendFrameworkBridge\\' => - array ( - 0 => __DIR__ . '/..' . '/laminas/laminas-zendframework-bridge/src', - ), 'Laminas\\Xml\\' => array ( 0 => __DIR__ . '/..' . '/laminas/laminas-xml/src', diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json index 9efad0dd..f2700fa1 100644 --- a/vendor/composer/installed.json +++ b/vendor/composer/installed.json @@ -63,71 +63,6 @@ ], "install-path": "../laminas/laminas-xml" }, - { - "name": "laminas/laminas-zendframework-bridge", - "version": "1.4.1", - "version_normalized": "1.4.1.0", - "source": { - "type": "git", - "url": "https://github.com/laminas/laminas-zendframework-bridge.git", - "reference": "88bf037259869891afce6504cacc4f8a07b24d0f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-zendframework-bridge/zipball/88bf037259869891afce6504cacc4f8a07b24d0f", - "reference": "88bf037259869891afce6504cacc4f8a07b24d0f", - "shasum": "" - }, - "require": { - "php": "^7.3 || ~8.0.0 || ~8.1.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3", - "psalm/plugin-phpunit": "^0.15.1", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.6" - }, - "time": "2021-12-21T14:34:37+00:00", - "type": "library", - "extra": { - "laminas": { - "module": "Laminas\\ZendFrameworkBridge" - } - }, - "installation-source": "dist", - "autoload": { - "files": [ - "src/autoload.php" - ], - "psr-4": { - "Laminas\\ZendFrameworkBridge\\": "src//" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "Alias legacy ZF class names to Laminas Project equivalents.", - "keywords": [ - "ZendFramework", - "autoloading", - "laminas", - "zf" - ], - "support": { - "forum": "https://discourse.laminas.dev/", - "issues": "https://github.com/laminas/laminas-zendframework-bridge/issues", - "rss": "https://github.com/laminas/laminas-zendframework-bridge/releases.atom", - "source": "https://github.com/laminas/laminas-zendframework-bridge" - }, - "funding": [ - { - "url": "https://funding.communitybridge.org/projects/laminas-project", - "type": "community_bridge" - } - ], - "install-path": "../laminas/laminas-zendframework-bridge" - }, { "name": "p3k/picofeed", "version": "1.0.0", @@ -191,17 +126,17 @@ }, { "name": "scssphp/scssphp", - "version": "v1.11.0", - "version_normalized": "1.11.0.0", + "version": "v1.13.0", + "version_normalized": "1.13.0.0", "source": { "type": "git", "url": "https://github.com/scssphp/scssphp.git", - "reference": "33749d12c2569bb24071f94e9af828662dabb068" + "reference": "63d1157457e5554edf00b0c1fabab4c1511d2520" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/scssphp/scssphp/zipball/33749d12c2569bb24071f94e9af828662dabb068", - "reference": "33749d12c2569bb24071f94e9af828662dabb068", + "url": "https://api.github.com/repos/scssphp/scssphp/zipball/63d1157457e5554edf00b0c1fabab4c1511d2520", + "reference": "63d1157457e5554edf00b0c1fabab4c1511d2520", "shasum": "" }, "require": { @@ -218,21 +153,21 @@ "thoughtbot/bourbon": "^7.0", "twbs/bootstrap": "~5.0", "twbs/bootstrap4": "4.6.1", - "zurb/foundation": "~6.5" + "zurb/foundation": "~6.7.0" }, "suggest": { "ext-iconv": "Can be used as fallback when ext-mbstring is not available", "ext-mbstring": "For best performance, mbstring should be installed as it is faster than ext-iconv" }, - "time": "2022-09-02T21:24:55+00:00", + "time": "2024-08-17T21:02:11+00:00", "bin": [ "bin/pscss" ], "type": "library", "extra": { "bamarni-bin": { - "forward-command": false, - "bin-links": false + "bin-links": false, + "forward-command": false } }, "installation-source": "dist", @@ -268,7 +203,7 @@ ], "support": { "issues": "https://github.com/scssphp/scssphp/issues", - "source": "https://github.com/scssphp/scssphp/tree/v1.11.0" + "source": "https://github.com/scssphp/scssphp/tree/v1.13.0" }, "install-path": "../scssphp/scssphp" } diff --git a/vendor/composer/installed.php b/vendor/composer/installed.php index 80176dec..5ffa5c43 100644 --- a/vendor/composer/installed.php +++ b/vendor/composer/installed.php @@ -3,7 +3,7 @@ 'name' => 'getgrav/grav-plugin-admin', 'pretty_version' => 'dev-develop', 'version' => 'dev-develop', - 'reference' => '8c17ca7d75e271ee2cf4e38ae54e75d2ce8b9224', + 'reference' => '12bdb5af4bd10e30e24d191b7ea1a78602a583fb', 'type' => 'grav-plugin', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), @@ -13,7 +13,7 @@ 'getgrav/grav-plugin-admin' => array( 'pretty_version' => 'dev-develop', 'version' => 'dev-develop', - 'reference' => '8c17ca7d75e271ee2cf4e38ae54e75d2ce8b9224', + 'reference' => '12bdb5af4bd10e30e24d191b7ea1a78602a583fb', 'type' => 'grav-plugin', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), @@ -28,15 +28,6 @@ 'aliases' => array(), 'dev_requirement' => false, ), - 'laminas/laminas-zendframework-bridge' => array( - 'pretty_version' => '1.4.1', - 'version' => '1.4.1.0', - 'reference' => '88bf037259869891afce6504cacc4f8a07b24d0f', - 'type' => 'library', - 'install_path' => __DIR__ . '/../laminas/laminas-zendframework-bridge', - 'aliases' => array(), - 'dev_requirement' => false, - ), 'miniflux/picofeed' => array( 'dev_requirement' => false, 'replaced' => array( @@ -53,20 +44,14 @@ 'dev_requirement' => false, ), 'scssphp/scssphp' => array( - 'pretty_version' => 'v1.11.0', - 'version' => '1.11.0.0', - 'reference' => '33749d12c2569bb24071f94e9af828662dabb068', + 'pretty_version' => 'v1.13.0', + 'version' => '1.13.0.0', + 'reference' => '63d1157457e5554edf00b0c1fabab4c1511d2520', 'type' => 'library', 'install_path' => __DIR__ . '/../scssphp/scssphp', 'aliases' => array(), 'dev_requirement' => false, ), - 'symfony/polyfill-php72' => array( - 'dev_requirement' => false, - 'replaced' => array( - 0 => '*', - ), - ), 'symfony/polyfill-php73' => array( 'dev_requirement' => false, 'replaced' => array( diff --git a/vendor/laminas/laminas-zendframework-bridge/.github/FUNDING.yml b/vendor/laminas/laminas-zendframework-bridge/.github/FUNDING.yml deleted file mode 100644 index 6674aab6..00000000 --- a/vendor/laminas/laminas-zendframework-bridge/.github/FUNDING.yml +++ /dev/null @@ -1 +0,0 @@ -community_bridge: laminas-project diff --git a/vendor/laminas/laminas-zendframework-bridge/.github/workflows/continuous-integration.yml b/vendor/laminas/laminas-zendframework-bridge/.github/workflows/continuous-integration.yml deleted file mode 100644 index ab6f8eee..00000000 --- a/vendor/laminas/laminas-zendframework-bridge/.github/workflows/continuous-integration.yml +++ /dev/null @@ -1,32 +0,0 @@ -name: "Continuous Integration" - -on: - pull_request: - push: - branches: - - '[0-9]+.[0-9]+.x' - - 'refs/pull/*' - -jobs: - matrix: - name: Generate job matrix - runs-on: ubuntu-latest - outputs: - matrix: ${{ steps.matrix.outputs.matrix }} - steps: - - name: Gather CI configuration - id: matrix - uses: laminas/laminas-ci-matrix-action@v1 - - qa: - name: QA Checks - needs: [matrix] - runs-on: ${{ matrix.operatingSystem }} - strategy: - fail-fast: false - matrix: ${{ fromJSON(needs.matrix.outputs.matrix) }} - steps: - - name: ${{ matrix.name }} - uses: laminas/laminas-continuous-integration-action@v1 - with: - job: ${{ matrix.job }} diff --git a/vendor/laminas/laminas-zendframework-bridge/.github/workflows/release-on-milestone-closed.yml b/vendor/laminas/laminas-zendframework-bridge/.github/workflows/release-on-milestone-closed.yml deleted file mode 100644 index 2d88c947..00000000 --- a/vendor/laminas/laminas-zendframework-bridge/.github/workflows/release-on-milestone-closed.yml +++ /dev/null @@ -1,61 +0,0 @@ -# Alternate workflow example. -# This one is identical to the one in release-on-milestone.yml, with one change: -# the Release step uses the ORGANIZATION_ADMIN_TOKEN instead, to allow it to -# trigger a release workflow event. This is useful if you have other actions -# that intercept that event. - -name: "Automatic Releases" - -on: - milestone: - types: - - "closed" - -jobs: - release: - name: "GIT tag, release & create merge-up PR" - runs-on: ubuntu-latest - - steps: - - name: "Checkout" - uses: "actions/checkout@v2" - - - name: "Release" - uses: "laminas/automatic-releases@v1" - with: - command-name: "laminas:automatic-releases:release" - env: - "GITHUB_TOKEN": ${{ secrets.ORGANIZATION_ADMIN_TOKEN }} - "SIGNING_SECRET_KEY": ${{ secrets.SIGNING_SECRET_KEY }} - "GIT_AUTHOR_NAME": ${{ secrets.GIT_AUTHOR_NAME }} - "GIT_AUTHOR_EMAIL": ${{ secrets.GIT_AUTHOR_EMAIL }} - - - name: "Create Merge-Up Pull Request" - uses: "laminas/automatic-releases@v1" - with: - command-name: "laminas:automatic-releases:create-merge-up-pull-request" - env: - "GITHUB_TOKEN": ${{ secrets.GITHUB_TOKEN }} - "SIGNING_SECRET_KEY": ${{ secrets.SIGNING_SECRET_KEY }} - "GIT_AUTHOR_NAME": ${{ secrets.GIT_AUTHOR_NAME }} - "GIT_AUTHOR_EMAIL": ${{ secrets.GIT_AUTHOR_EMAIL }} - - - name: "Create and/or Switch to new Release Branch" - uses: "laminas/automatic-releases@v1" - with: - command-name: "laminas:automatic-releases:switch-default-branch-to-next-minor" - env: - "GITHUB_TOKEN": ${{ secrets.ORGANIZATION_ADMIN_TOKEN }} - "SIGNING_SECRET_KEY": ${{ secrets.SIGNING_SECRET_KEY }} - "GIT_AUTHOR_NAME": ${{ secrets.GIT_AUTHOR_NAME }} - "GIT_AUTHOR_EMAIL": ${{ secrets.GIT_AUTHOR_EMAIL }} - - - name: "Create new milestones" - uses: "laminas/automatic-releases@v1" - with: - command-name: "laminas:automatic-releases:create-milestones" - env: - "GITHUB_TOKEN": ${{ secrets.GITHUB_TOKEN }} - "SIGNING_SECRET_KEY": ${{ secrets.SIGNING_SECRET_KEY }} - "GIT_AUTHOR_NAME": ${{ secrets.GIT_AUTHOR_NAME }} - "GIT_AUTHOR_EMAIL": ${{ secrets.GIT_AUTHOR_EMAIL }} diff --git a/vendor/laminas/laminas-zendframework-bridge/.laminas-ci.json b/vendor/laminas/laminas-zendframework-bridge/.laminas-ci.json deleted file mode 100644 index bce3fa21..00000000 --- a/vendor/laminas/laminas-zendframework-bridge/.laminas-ci.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "ignore_php_platform_requirements": { - "8.1": true - } -} diff --git a/vendor/laminas/laminas-zendframework-bridge/COPYRIGHT.md b/vendor/laminas/laminas-zendframework-bridge/COPYRIGHT.md deleted file mode 100644 index 0a8cccc0..00000000 --- a/vendor/laminas/laminas-zendframework-bridge/COPYRIGHT.md +++ /dev/null @@ -1 +0,0 @@ -Copyright (c) 2020 Laminas Project a Series of LF Projects, LLC. (https://getlaminas.org/) diff --git a/vendor/laminas/laminas-zendframework-bridge/LICENSE.md b/vendor/laminas/laminas-zendframework-bridge/LICENSE.md deleted file mode 100644 index 10b40f14..00000000 --- a/vendor/laminas/laminas-zendframework-bridge/LICENSE.md +++ /dev/null @@ -1,26 +0,0 @@ -Copyright (c) 2020 Laminas Project a Series of LF Projects, LLC. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -- Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -- Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -- Neither the name of Laminas Foundation nor the names of its contributors may - be used to endorse or promote products derived from this software without - specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/laminas/laminas-zendframework-bridge/README.md b/vendor/laminas/laminas-zendframework-bridge/README.md deleted file mode 100644 index a8d8526f..00000000 --- a/vendor/laminas/laminas-zendframework-bridge/README.md +++ /dev/null @@ -1,30 +0,0 @@ -# laminas-zendframework-bridge - -[![Build Status](https://github.com/laminas/laminas-zendframework-bridge/workflows/Continuous%20Integration/badge.svg)](https://github.com/laminas/laminas-zendframework-bridge/actions?query=workflow%3A"Continuous+Integration") - - -This library provides a custom autoloader that aliases legacy Zend Framework, -Apigility, and Expressive classes to their replacements under the Laminas -Project. - -This package should be installed only if you are also using the composer plugin -that installs Laminas packages to replace ZF/Apigility/Expressive packages. - -This tool supports: - -* Zend Framework MVC projects, all v2 and v3 releases -* Apigility projects, all stable versions -* Expressive versions, all stable versions - -## Installation - -Run the following to install this library: - -```bash -$ composer require laminas/laminas-zendframework-bridge -``` - -## Support - -* [Issues](https://github.com/laminas/laminas-zendframework-bridge/issues/) -* [Forum](https://discourse.laminas.dev/) diff --git a/vendor/laminas/laminas-zendframework-bridge/composer.json b/vendor/laminas/laminas-zendframework-bridge/composer.json deleted file mode 100644 index 3f7af113..00000000 --- a/vendor/laminas/laminas-zendframework-bridge/composer.json +++ /dev/null @@ -1,61 +0,0 @@ -{ - "name": "laminas/laminas-zendframework-bridge", - "description": "Alias legacy ZF class names to Laminas Project equivalents.", - "license": "BSD-3-Clause", - "keywords": [ - "autoloading", - "laminas", - "zf", - "zendframework" - ], - "support": { - "issues": "https://github.com/laminas/laminas-zendframework-bridge/issues", - "source": "https://github.com/laminas/laminas-zendframework-bridge", - "rss": "https://github.com/laminas/laminas-zendframework-bridge/releases.atom", - "forum": "https://discourse.laminas.dev/" - }, - "require": { - "php": "^7.3 || ~8.0.0 || ~8.1.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3", - "psalm/plugin-phpunit": "^0.15.1", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.6" - }, - "autoload": { - "files": [ - "src/autoload.php" - ], - "psr-4": { - "Laminas\\ZendFrameworkBridge\\": "src//" - } - }, - "autoload-dev": { - "files": [ - "test/classes.php" - ], - "psr-4": { - "LaminasTest\\ZendFrameworkBridge\\": "test/", - "LaminasTest\\ZendFrameworkBridge\\TestAsset\\": "test/TestAsset/classes/", - "Laminas\\ApiTools\\": "test/TestAsset/LaminasApiTools/", - "Mezzio\\": "test/TestAsset/Mezzio/", - "Laminas\\": "test/TestAsset/Laminas/" - } - }, - "extra": { - "laminas": { - "module": "Laminas\\ZendFrameworkBridge" - } - }, - "config": { - "sort-packages": true - }, - "scripts": { - "cs-check": "phpcs", - "cs-fix": "phpcbf", - "static-analysis": "psalm --shepherd --stats", - "test": "phpunit --colors=always", - "test-coverage": "phpunit --colors=always --coverage-clover clover.xml" - } -} diff --git a/vendor/laminas/laminas-zendframework-bridge/composer.lock b/vendor/laminas/laminas-zendframework-bridge/composer.lock deleted file mode 100644 index 9bcac18b..00000000 --- a/vendor/laminas/laminas-zendframework-bridge/composer.lock +++ /dev/null @@ -1,3841 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "83af626bc1168baa0d5a1e19cb1b5807", - "packages": [], - "packages-dev": [ - { - "name": "amphp/amp", - "version": "v2.6.0", - "source": { - "type": "git", - "url": "https://github.com/amphp/amp.git", - "reference": "caa95edeb1ca1bf7532e9118ede4a3c3126408cc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/amphp/amp/zipball/caa95edeb1ca1bf7532e9118ede4a3c3126408cc", - "reference": "caa95edeb1ca1bf7532e9118ede4a3c3126408cc", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "require-dev": { - "amphp/php-cs-fixer-config": "dev-master", - "amphp/phpunit-util": "^1", - "ext-json": "*", - "jetbrains/phpstorm-stubs": "^2019.3", - "phpunit/phpunit": "^7 | ^8 | ^9", - "psalm/phar": "^3.11@dev", - "react/promise": "^2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.x-dev" - } - }, - "autoload": { - "psr-4": { - "Amp\\": "lib" - }, - "files": [ - "lib/functions.php", - "lib/Internal/functions.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Daniel Lowrey", - "email": "rdlowrey@php.net" - }, - { - "name": "Aaron Piotrowski", - "email": "aaron@trowski.com" - }, - { - "name": "Bob Weinand", - "email": "bobwei9@hotmail.com" - }, - { - "name": "Niklas Keller", - "email": "me@kelunik.com" - } - ], - "description": "A non-blocking concurrency framework for PHP applications.", - "homepage": "http://amphp.org/amp", - "keywords": [ - "async", - "asynchronous", - "awaitable", - "concurrency", - "event", - "event-loop", - "future", - "non-blocking", - "promise" - ], - "support": { - "irc": "irc://irc.freenode.org/amphp", - "issues": "https://github.com/amphp/amp/issues", - "source": "https://github.com/amphp/amp/tree/v2.6.0" - }, - "funding": [ - { - "url": "https://github.com/amphp", - "type": "github" - } - ], - "time": "2021-07-16T20:06:06+00:00" - }, - { - "name": "amphp/byte-stream", - "version": "v1.8.1", - "source": { - "type": "git", - "url": "https://github.com/amphp/byte-stream.git", - "reference": "acbd8002b3536485c997c4e019206b3f10ca15bd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/amphp/byte-stream/zipball/acbd8002b3536485c997c4e019206b3f10ca15bd", - "reference": "acbd8002b3536485c997c4e019206b3f10ca15bd", - "shasum": "" - }, - "require": { - "amphp/amp": "^2", - "php": ">=7.1" - }, - "require-dev": { - "amphp/php-cs-fixer-config": "dev-master", - "amphp/phpunit-util": "^1.4", - "friendsofphp/php-cs-fixer": "^2.3", - "jetbrains/phpstorm-stubs": "^2019.3", - "phpunit/phpunit": "^6 || ^7 || ^8", - "psalm/phar": "^3.11.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Amp\\ByteStream\\": "lib" - }, - "files": [ - "lib/functions.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Aaron Piotrowski", - "email": "aaron@trowski.com" - }, - { - "name": "Niklas Keller", - "email": "me@kelunik.com" - } - ], - "description": "A stream abstraction to make working with non-blocking I/O simple.", - "homepage": "http://amphp.org/byte-stream", - "keywords": [ - "amp", - "amphp", - "async", - "io", - "non-blocking", - "stream" - ], - "support": { - "irc": "irc://irc.freenode.org/amphp", - "issues": "https://github.com/amphp/byte-stream/issues", - "source": "https://github.com/amphp/byte-stream/tree/v1.8.1" - }, - "funding": [ - { - "url": "https://github.com/amphp", - "type": "github" - } - ], - "time": "2021-03-30T17:13:30+00:00" - }, - { - "name": "composer/package-versions-deprecated", - "version": "1.11.99.3", - "source": { - "type": "git", - "url": "https://github.com/composer/package-versions-deprecated.git", - "reference": "fff576ac850c045158a250e7e27666e146e78d18" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/package-versions-deprecated/zipball/fff576ac850c045158a250e7e27666e146e78d18", - "reference": "fff576ac850c045158a250e7e27666e146e78d18", - "shasum": "" - }, - "require": { - "composer-plugin-api": "^1.1.0 || ^2.0", - "php": "^7 || ^8" - }, - "replace": { - "ocramius/package-versions": "1.11.99" - }, - "require-dev": { - "composer/composer": "^1.9.3 || ^2.0@dev", - "ext-zip": "^1.13", - "phpunit/phpunit": "^6.5 || ^7" - }, - "type": "composer-plugin", - "extra": { - "class": "PackageVersions\\Installer", - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "PackageVersions\\": "src/PackageVersions" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com" - }, - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be" - } - ], - "description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)", - "support": { - "issues": "https://github.com/composer/package-versions-deprecated/issues", - "source": "https://github.com/composer/package-versions-deprecated/tree/1.11.99.3" - }, - "funding": [ - { - "url": "https://packagist.com", - "type": "custom" - }, - { - "url": "https://github.com/composer", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" - } - ], - "time": "2021-08-17T13:49:14+00:00" - }, - { - "name": "composer/semver", - "version": "3.2.5", - "source": { - "type": "git", - "url": "https://github.com/composer/semver.git", - "reference": "31f3ea725711245195f62e54ffa402d8ef2fdba9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/31f3ea725711245195f62e54ffa402d8ef2fdba9", - "reference": "31f3ea725711245195f62e54ffa402d8ef2fdba9", - "shasum": "" - }, - "require": { - "php": "^5.3.2 || ^7.0 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^0.12.54", - "symfony/phpunit-bridge": "^4.2 || ^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.x-dev" - } - }, - "autoload": { - "psr-4": { - "Composer\\Semver\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nils Adermann", - "email": "naderman@naderman.de", - "homepage": "http://www.naderman.de" - }, - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - }, - { - "name": "Rob Bast", - "email": "rob.bast@gmail.com", - "homepage": "http://robbast.nl" - } - ], - "description": "Semver library that offers utilities, version constraint parsing and validation.", - "keywords": [ - "semantic", - "semver", - "validation", - "versioning" - ], - "support": { - "irc": "irc://irc.freenode.org/composer", - "issues": "https://github.com/composer/semver/issues", - "source": "https://github.com/composer/semver/tree/3.2.5" - }, - "funding": [ - { - "url": "https://packagist.com", - "type": "custom" - }, - { - "url": "https://github.com/composer", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" - } - ], - "time": "2021-05-24T12:41:47+00:00" - }, - { - "name": "composer/xdebug-handler", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/composer/xdebug-handler.git", - "reference": "84674dd3a7575ba617f5a76d7e9e29a7d3891339" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/84674dd3a7575ba617f5a76d7e9e29a7d3891339", - "reference": "84674dd3a7575ba617f5a76d7e9e29a7d3891339", - "shasum": "" - }, - "require": { - "php": "^5.3.2 || ^7.0 || ^8.0", - "psr/log": "^1 || ^2 || ^3" - }, - "require-dev": { - "phpstan/phpstan": "^0.12.55", - "symfony/phpunit-bridge": "^4.2 || ^5" - }, - "type": "library", - "autoload": { - "psr-4": { - "Composer\\XdebugHandler\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "John Stevenson", - "email": "john-stevenson@blueyonder.co.uk" - } - ], - "description": "Restarts a process without Xdebug.", - "keywords": [ - "Xdebug", - "performance" - ], - "support": { - "irc": "irc://irc.freenode.org/composer", - "issues": "https://github.com/composer/xdebug-handler/issues", - "source": "https://github.com/composer/xdebug-handler/tree/2.0.2" - }, - "funding": [ - { - "url": "https://packagist.com", - "type": "custom" - }, - { - "url": "https://github.com/composer", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" - } - ], - "time": "2021-07-31T17:03:58+00:00" - }, - { - "name": "dnoegel/php-xdg-base-dir", - "version": "v0.1.1", - "source": { - "type": "git", - "url": "https://github.com/dnoegel/php-xdg-base-dir.git", - "reference": "8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dnoegel/php-xdg-base-dir/zipball/8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd", - "reference": "8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd", - "shasum": "" - }, - "require": { - "php": ">=5.3.2" - }, - "require-dev": { - "phpunit/phpunit": "~7.0|~6.0|~5.0|~4.8.35" - }, - "type": "library", - "autoload": { - "psr-4": { - "XdgBaseDir\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "implementation of xdg base directory specification for php", - "support": { - "issues": "https://github.com/dnoegel/php-xdg-base-dir/issues", - "source": "https://github.com/dnoegel/php-xdg-base-dir/tree/v0.1.1" - }, - "time": "2019-12-04T15:06:13+00:00" - }, - { - "name": "doctrine/instantiator", - "version": "1.4.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.0", - "ext-pdo": "*", - "ext-phar": "*", - "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "https://ocramius.github.io/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://www.doctrine-project.org/projects/instantiator.html", - "keywords": [ - "constructor", - "instantiate" - ], - "support": { - "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.0" - }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator", - "type": "tidelift" - } - ], - "time": "2020-11-10T18:47:58+00:00" - }, - { - "name": "felixfbecker/advanced-json-rpc", - "version": "v3.2.1", - "source": { - "type": "git", - "url": "https://github.com/felixfbecker/php-advanced-json-rpc.git", - "reference": "b5f37dbff9a8ad360ca341f3240dc1c168b45447" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/felixfbecker/php-advanced-json-rpc/zipball/b5f37dbff9a8ad360ca341f3240dc1c168b45447", - "reference": "b5f37dbff9a8ad360ca341f3240dc1c168b45447", - "shasum": "" - }, - "require": { - "netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0 || ^4.0", - "php": "^7.1 || ^8.0", - "phpdocumentor/reflection-docblock": "^4.3.4 || ^5.0.0" - }, - "require-dev": { - "phpunit/phpunit": "^7.0 || ^8.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "AdvancedJsonRpc\\": "lib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "ISC" - ], - "authors": [ - { - "name": "Felix Becker", - "email": "felix.b@outlook.com" - } - ], - "description": "A more advanced JSONRPC implementation", - "support": { - "issues": "https://github.com/felixfbecker/php-advanced-json-rpc/issues", - "source": "https://github.com/felixfbecker/php-advanced-json-rpc/tree/v3.2.1" - }, - "time": "2021-06-11T22:34:44+00:00" - }, - { - "name": "felixfbecker/language-server-protocol", - "version": "1.5.1", - "source": { - "type": "git", - "url": "https://github.com/felixfbecker/php-language-server-protocol.git", - "reference": "9d846d1f5cf101deee7a61c8ba7caa0a975cd730" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/felixfbecker/php-language-server-protocol/zipball/9d846d1f5cf101deee7a61c8ba7caa0a975cd730", - "reference": "9d846d1f5cf101deee7a61c8ba7caa0a975cd730", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "require-dev": { - "phpstan/phpstan": "*", - "squizlabs/php_codesniffer": "^3.1", - "vimeo/psalm": "^4.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "LanguageServerProtocol\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "ISC" - ], - "authors": [ - { - "name": "Felix Becker", - "email": "felix.b@outlook.com" - } - ], - "description": "PHP classes for the Language Server Protocol", - "keywords": [ - "language", - "microsoft", - "php", - "server" - ], - "support": { - "issues": "https://github.com/felixfbecker/php-language-server-protocol/issues", - "source": "https://github.com/felixfbecker/php-language-server-protocol/tree/1.5.1" - }, - "time": "2021-02-22T14:02:09+00:00" - }, - { - "name": "myclabs/deep-copy", - "version": "1.10.2", - "source": { - "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "replace": { - "myclabs/deep-copy": "self.version" - }, - "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "DeepCopy\\": "src/DeepCopy/" - }, - "files": [ - "src/DeepCopy/deep_copy.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Create deep copies (clones) of your objects", - "keywords": [ - "clone", - "copy", - "duplicate", - "object", - "object graph" - ], - "support": { - "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.10.2" - }, - "funding": [ - { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", - "type": "tidelift" - } - ], - "time": "2020-11-13T09:40:50+00:00" - }, - { - "name": "netresearch/jsonmapper", - "version": "v4.0.0", - "source": { - "type": "git", - "url": "https://github.com/cweiske/jsonmapper.git", - "reference": "8bbc021a8edb2e4a7ea2f8ad4fa9ec9dce2fcb8d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/8bbc021a8edb2e4a7ea2f8ad4fa9ec9dce2fcb8d", - "reference": "8bbc021a8edb2e4a7ea2f8ad4fa9ec9dce2fcb8d", - "shasum": "" - }, - "require": { - "ext-json": "*", - "ext-pcre": "*", - "ext-reflection": "*", - "ext-spl": "*", - "php": ">=7.1" - }, - "require-dev": { - "phpunit/phpunit": "~7.5 || ~8.0 || ~9.0", - "squizlabs/php_codesniffer": "~3.5" - }, - "type": "library", - "autoload": { - "psr-0": { - "JsonMapper": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "OSL-3.0" - ], - "authors": [ - { - "name": "Christian Weiske", - "email": "cweiske@cweiske.de", - "homepage": "http://github.com/cweiske/jsonmapper/", - "role": "Developer" - } - ], - "description": "Map nested JSON structures onto PHP classes", - "support": { - "email": "cweiske@cweiske.de", - "issues": "https://github.com/cweiske/jsonmapper/issues", - "source": "https://github.com/cweiske/jsonmapper/tree/v4.0.0" - }, - "time": "2020-12-01T19:48:11+00:00" - }, - { - "name": "nikic/php-parser", - "version": "v4.12.0", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "6608f01670c3cc5079e18c1dab1104e002579143" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/6608f01670c3cc5079e18c1dab1104e002579143", - "reference": "6608f01670c3cc5079e18c1dab1104e002579143", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "php": ">=7.0" - }, - "require-dev": { - "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" - }, - "bin": [ - "bin/php-parse" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.9-dev" - } - }, - "autoload": { - "psr-4": { - "PhpParser\\": "lib/PhpParser" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Nikita Popov" - } - ], - "description": "A PHP parser written in PHP", - "keywords": [ - "parser", - "php" - ], - "support": { - "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.12.0" - }, - "time": "2021-07-21T10:44:31+00:00" - }, - { - "name": "openlss/lib-array2xml", - "version": "1.0.0", - "source": { - "type": "git", - "url": "https://github.com/nullivex/lib-array2xml.git", - "reference": "a91f18a8dfc69ffabe5f9b068bc39bb202c81d90" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nullivex/lib-array2xml/zipball/a91f18a8dfc69ffabe5f9b068bc39bb202c81d90", - "reference": "a91f18a8dfc69ffabe5f9b068bc39bb202c81d90", - "shasum": "" - }, - "require": { - "php": ">=5.3.2" - }, - "type": "library", - "autoload": { - "psr-0": { - "LSS": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" - ], - "authors": [ - { - "name": "Bryan Tong", - "email": "bryan@nullivex.com", - "homepage": "https://www.nullivex.com" - }, - { - "name": "Tony Butler", - "email": "spudz76@gmail.com", - "homepage": "https://www.nullivex.com" - } - ], - "description": "Array2XML conversion library credit to lalit.org", - "homepage": "https://www.nullivex.com", - "keywords": [ - "array", - "array conversion", - "xml", - "xml conversion" - ], - "support": { - "issues": "https://github.com/nullivex/lib-array2xml/issues", - "source": "https://github.com/nullivex/lib-array2xml/tree/master" - }, - "time": "2019-03-29T20:06:56+00:00" - }, - { - "name": "phar-io/manifest", - "version": "2.0.3", - "source": { - "type": "git", - "url": "https://github.com/phar-io/manifest.git", - "reference": "97803eca37d319dfa7826cc2437fc020857acb53" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53", - "reference": "97803eca37d319dfa7826cc2437fc020857acb53", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-phar": "*", - "ext-xmlwriter": "*", - "phar-io/version": "^3.0.1", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - }, - { - "name": "Sebastian Heuer", - "email": "sebastian@phpeople.de", - "role": "Developer" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "Developer" - } - ], - "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", - "support": { - "issues": "https://github.com/phar-io/manifest/issues", - "source": "https://github.com/phar-io/manifest/tree/2.0.3" - }, - "time": "2021-07-20T11:28:43+00:00" - }, - { - "name": "phar-io/version", - "version": "3.1.0", - "source": { - "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "bae7c545bef187884426f042434e561ab1ddb182" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/bae7c545bef187884426f042434e561ab1ddb182", - "reference": "bae7c545bef187884426f042434e561ab1ddb182", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - }, - { - "name": "Sebastian Heuer", - "email": "sebastian@phpeople.de", - "role": "Developer" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "Developer" - } - ], - "description": "Library for handling version information and constraints", - "support": { - "issues": "https://github.com/phar-io/version/issues", - "source": "https://github.com/phar-io/version/tree/3.1.0" - }, - "time": "2021-02-23T14:00:09+00:00" - }, - { - "name": "phpdocumentor/reflection-common", - "version": "2.2.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-2.x": "2.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jaap van Otterdijk", - "email": "opensource@ijaap.nl" - } - ], - "description": "Common reflection classes used by phpdocumentor to reflect the code structure", - "homepage": "http://www.phpdoc.org", - "keywords": [ - "FQSEN", - "phpDocumentor", - "phpdoc", - "reflection", - "static analysis" - ], - "support": { - "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", - "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" - }, - "time": "2020-06-27T09:03:43+00:00" - }, - { - "name": "phpdocumentor/reflection-docblock", - "version": "5.2.2", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/069a785b2141f5bcf49f3e353548dc1cce6df556", - "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556", - "shasum": "" - }, - "require": { - "ext-filter": "*", - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.2", - "phpdocumentor/type-resolver": "^1.3", - "webmozart/assert": "^1.9.1" - }, - "require-dev": { - "mockery/mockery": "~1.3.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - }, - { - "name": "Jaap van Otterdijk", - "email": "account@ijaap.nl" - } - ], - "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "support": { - "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", - "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/master" - }, - "time": "2020-09-03T19:13:55+00:00" - }, - { - "name": "phpdocumentor/type-resolver", - "version": "1.4.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0", - "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" - }, - "require-dev": { - "ext-tokenizer": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-1.x": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - } - ], - "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", - "support": { - "issues": "https://github.com/phpDocumentor/TypeResolver/issues", - "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.4.0" - }, - "time": "2020-09-17T18:55:26+00:00" - }, - { - "name": "phpspec/prophecy", - "version": "1.13.0", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "be1996ed8adc35c3fd795488a653f4b518be70ea" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/be1996ed8adc35c3fd795488a653f4b518be70ea", - "reference": "be1996ed8adc35c3fd795488a653f4b518be70ea", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.2", - "php": "^7.2 || ~8.0, <8.1", - "phpdocumentor/reflection-docblock": "^5.2", - "sebastian/comparator": "^3.0 || ^4.0", - "sebastian/recursion-context": "^3.0 || ^4.0" - }, - "require-dev": { - "phpspec/phpspec": "^6.0", - "phpunit/phpunit": "^8.0 || ^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.11.x-dev" - } - }, - "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/1.13.0" - }, - "time": "2021-03-17T13:42:18+00:00" - }, - { - "name": "phpunit/php-code-coverage", - "version": "9.2.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "f6293e1b30a2354e8428e004689671b83871edde" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/f6293e1b30a2354e8428e004689671b83871edde", - "reference": "f6293e1b30a2354e8428e004689671b83871edde", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-xmlwriter": "*", - "nikic/php-parser": "^4.10.2", - "php": ">=7.3", - "phpunit/php-file-iterator": "^3.0.3", - "phpunit/php-text-template": "^2.0.2", - "sebastian/code-unit-reverse-lookup": "^2.0.2", - "sebastian/complexity": "^2.0", - "sebastian/environment": "^5.1.2", - "sebastian/lines-of-code": "^1.0.3", - "sebastian/version": "^3.0.1", - "theseer/tokenizer": "^1.2.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcov": "*", - "ext-xdebug": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.2-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", - "homepage": "https://github.com/sebastianbergmann/php-code-coverage", - "keywords": [ - "coverage", - "testing", - "xunit" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-03-28T07:26:59+00:00" - }, - { - "name": "phpunit/php-file-iterator", - "version": "3.0.5", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/aa4be8575f26070b100fccb67faabb28f21f66f8", - "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "FilterIterator implementation that filters files based on a list of suffixes.", - "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", - "keywords": [ - "filesystem", - "iterator" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.5" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:57:25+00:00" - }, - { - "name": "phpunit/php-invoker", - "version": "3.1.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "ext-pcntl": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcntl": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Invoke callables with a timeout", - "homepage": "https://github.com/sebastianbergmann/php-invoker/", - "keywords": [ - "process" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-invoker/issues", - "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:58:55+00:00" - }, - { - "name": "phpunit/php-text-template", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T05:33:50+00:00" - }, - { - "name": "phpunit/php-timer", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Utility class for timing", - "homepage": "https://github.com/sebastianbergmann/php-timer/", - "keywords": [ - "timer" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-timer/issues", - "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:16:10+00:00" - }, - { - "name": "phpunit/phpunit", - "version": "9.5.9", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "ea8c2dfb1065eb35a79b3681eee6e6fb0a6f273b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/ea8c2dfb1065eb35a79b3681eee6e6fb0a6f273b", - "reference": "ea8c2dfb1065eb35a79b3681eee6e6fb0a6f273b", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.3.1", - "ext-dom": "*", - "ext-json": "*", - "ext-libxml": "*", - "ext-mbstring": "*", - "ext-xml": "*", - "ext-xmlwriter": "*", - "myclabs/deep-copy": "^1.10.1", - "phar-io/manifest": "^2.0.3", - "phar-io/version": "^3.0.2", - "php": ">=7.3", - "phpspec/prophecy": "^1.12.1", - "phpunit/php-code-coverage": "^9.2.3", - "phpunit/php-file-iterator": "^3.0.5", - "phpunit/php-invoker": "^3.1.1", - "phpunit/php-text-template": "^2.0.3", - "phpunit/php-timer": "^5.0.2", - "sebastian/cli-parser": "^1.0.1", - "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.5", - "sebastian/diff": "^4.0.3", - "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.3", - "sebastian/global-state": "^5.0.1", - "sebastian/object-enumerator": "^4.0.3", - "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^2.3.4", - "sebastian/version": "^3.0.2" - }, - "require-dev": { - "ext-pdo": "*", - "phpspec/prophecy-phpunit": "^2.0.1" - }, - "suggest": { - "ext-soap": "*", - "ext-xdebug": "*" - }, - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.5-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ], - "files": [ - "src/Framework/Assert/Functions.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "The PHP Unit Testing framework.", - "homepage": "https://phpunit.de/", - "keywords": [ - "phpunit", - "testing", - "xunit" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.9" - }, - "funding": [ - { - "url": "https://phpunit.de/donate.html", - "type": "custom" - }, - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-08-31T06:47:40+00:00" - }, - { - "name": "psalm/plugin-phpunit", - "version": "0.15.2", - "source": { - "type": "git", - "url": "https://github.com/psalm/psalm-plugin-phpunit.git", - "reference": "31d15bbc0169a3c454e495e03fd8a6ccb663661b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/psalm/psalm-plugin-phpunit/zipball/31d15bbc0169a3c454e495e03fd8a6ccb663661b", - "reference": "31d15bbc0169a3c454e495e03fd8a6ccb663661b", - "shasum": "" - }, - "require": { - "composer/package-versions-deprecated": "^1.10", - "composer/semver": "^1.4 || ^2.0 || ^3.0", - "ext-simplexml": "*", - "php": "^7.1 || ^8.0", - "vimeo/psalm": "dev-master || dev-4.x || ^4.0" - }, - "conflict": { - "phpunit/phpunit": "<7.5" - }, - "require-dev": { - "codeception/codeception": "^4.0.3", - "php": "^7.3 || ^8.0", - "phpunit/phpunit": "^7.5 || ^8.0 || ^9.0", - "squizlabs/php_codesniffer": "^3.3.1", - "weirdan/codeception-psalm-module": "^0.11.0", - "weirdan/prophecy-shim": "^1.0 || ^2.0" - }, - "type": "psalm-plugin", - "extra": { - "psalm": { - "pluginClass": "Psalm\\PhpUnitPlugin\\Plugin" - } - }, - "autoload": { - "psr-4": { - "Psalm\\PhpUnitPlugin\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Matt Brown", - "email": "github@muglug.com" - } - ], - "description": "Psalm plugin for PHPUnit", - "support": { - "issues": "https://github.com/psalm/psalm-plugin-phpunit/issues", - "source": "https://github.com/psalm/psalm-plugin-phpunit/tree/0.15.2" - }, - "time": "2021-05-29T19:11:38+00:00" - }, - { - "name": "psr/container", - "version": "1.1.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/container.git", - "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/8622567409010282b7aeebe4bb841fe98b58dcaf", - "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf", - "shasum": "" - }, - "require": { - "php": ">=7.2.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Psr\\Container\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common Container Interface (PHP FIG PSR-11)", - "homepage": "https://github.com/php-fig/container", - "keywords": [ - "PSR-11", - "container", - "container-interface", - "container-interop", - "psr" - ], - "support": { - "issues": "https://github.com/php-fig/container/issues", - "source": "https://github.com/php-fig/container/tree/1.1.1" - }, - "time": "2021-03-05T17:36:06+00:00" - }, - { - "name": "psr/log", - "version": "1.1.4", - "source": { - "type": "git", - "url": "https://github.com/php-fig/log.git", - "reference": "d49695b909c3b7628b6289db5479a1c204601f11" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11", - "reference": "d49695b909c3b7628b6289db5479a1c204601f11", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Log\\": "Psr/Log/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common interface for logging libraries", - "homepage": "https://github.com/php-fig/log", - "keywords": [ - "log", - "psr", - "psr-3" - ], - "support": { - "source": "https://github.com/php-fig/log/tree/1.1.4" - }, - "time": "2021-05-03T11:20:27+00:00" - }, - { - "name": "sebastian/cli-parser", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library for parsing CLI options", - "homepage": "https://github.com/sebastianbergmann/cli-parser", - "support": { - "issues": "https://github.com/sebastianbergmann/cli-parser/issues", - "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:08:49+00:00" - }, - { - "name": "sebastian/code-unit", - "version": "1.0.8", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Collection of value objects that represent the PHP code units", - "homepage": "https://github.com/sebastianbergmann/code-unit", - "support": { - "issues": "https://github.com/sebastianbergmann/code-unit/issues", - "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:08:54+00:00" - }, - { - "name": "sebastian/code-unit-reverse-lookup", - "version": "2.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Looks up which function or method a line of code belongs to", - "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", - "support": { - "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", - "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:30:19+00:00" - }, - { - "name": "sebastian/comparator", - "version": "4.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/diff": "^4.0", - "sebastian/exporter": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" - } - ], - "description": "Provides the functionality to compare PHP values for equality", - "homepage": "https://github.com/sebastianbergmann/comparator", - "keywords": [ - "comparator", - "compare", - "equality" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/comparator/issues", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:49:45+00:00" - }, - { - "name": "sebastian/complexity", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.7", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library for calculating the complexity of PHP code units", - "homepage": "https://github.com/sebastianbergmann/complexity", - "support": { - "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:52:27+00:00" - }, - { - "name": "sebastian/diff", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3", - "symfony/process": "^4.2 || ^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:10:38+00:00" - }, - { - "name": "sebastian/environment", - "version": "5.1.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-posix": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides functionality to handle HHVM/PHP environments", - "homepage": "http://www.github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:52:38+00:00" - }, - { - "name": "sebastian/exporter", - "version": "4.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/d89cc98761b8cb5a1a235a6b703ae50d34080e65", - "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - } - ], - "description": "Provides the functionality to export PHP variables for visualization", - "homepage": "http://www.github.com/sebastianbergmann/exporter", - "keywords": [ - "export", - "exporter" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:24:23+00:00" - }, - { - "name": "sebastian/global-state", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-dom": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-uopz": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-11T13:31:12+00:00" - }, - { - "name": "sebastian/lines-of-code", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.6", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library for counting the lines of code in PHP source code", - "homepage": "https://github.com/sebastianbergmann/lines-of-code", - "support": { - "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-11-28T06:42:11+00:00" - }, - { - "name": "sebastian/object-enumerator", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Traverses array structures and object graphs to enumerate all referenced objects", - "homepage": "https://github.com/sebastianbergmann/object-enumerator/", - "support": { - "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", - "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:12:34+00:00" - }, - { - "name": "sebastian/object-reflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Allows reflection of object attributes, including inherited and non-public ones", - "homepage": "https://github.com/sebastianbergmann/object-reflector/", - "support": { - "issues": "https://github.com/sebastianbergmann/object-reflector/issues", - "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:14:26+00:00" - }, - { - "name": "sebastian/recursion-context", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" - } - ], - "description": "Provides functionality to recursively process PHP variables", - "homepage": "http://www.github.com/sebastianbergmann/recursion-context", - "support": { - "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:17:30+00:00" - }, - { - "name": "sebastian/resource-operations", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "support": { - "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:45:17+00:00" - }, - { - "name": "sebastian/type", - "version": "2.3.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Collection of value objects that represent the types of the PHP type system", - "homepage": "https://github.com/sebastianbergmann/type", - "support": { - "issues": "https://github.com/sebastianbergmann/type/issues", - "source": "https://github.com/sebastianbergmann/type/tree/2.3.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-15T12:49:02+00:00" - }, - { - "name": "sebastian/version", - "version": "3.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c6c1022351a901512170118436c764e473f6de8c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", - "reference": "c6c1022351a901512170118436c764e473f6de8c", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library that helps with managing the version number of Git-hosted PHP projects", - "homepage": "https://github.com/sebastianbergmann/version", - "support": { - "issues": "https://github.com/sebastianbergmann/version/issues", - "source": "https://github.com/sebastianbergmann/version/tree/3.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:39:44+00:00" - }, - { - "name": "squizlabs/php_codesniffer", - "version": "3.6.0", - "source": { - "type": "git", - "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "ffced0d2c8fa8e6cdc4d695a743271fab6c38625" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/ffced0d2c8fa8e6cdc4d695a743271fab6c38625", - "reference": "ffced0d2c8fa8e6cdc4d695a743271fab6c38625", - "shasum": "" - }, - "require": { - "ext-simplexml": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" - }, - "bin": [ - "bin/phpcs", - "bin/phpcbf" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Greg Sherwood", - "role": "lead" - } - ], - "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", - "keywords": [ - "phpcs", - "standards" - ], - "support": { - "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", - "source": "https://github.com/squizlabs/PHP_CodeSniffer", - "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" - }, - "time": "2021-04-09T00:54:41+00:00" - }, - { - "name": "symfony/console", - "version": "v5.3.7", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "8b1008344647462ae6ec57559da166c2bfa5e16a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/8b1008344647462ae6ec57559da166c2bfa5e16a", - "reference": "8b1008344647462ae6ec57559da166c2bfa5e16a", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php73": "^1.8", - "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1|^2", - "symfony/string": "^5.1" - }, - "conflict": { - "psr/log": ">=3", - "symfony/dependency-injection": "<4.4", - "symfony/dotenv": "<5.1", - "symfony/event-dispatcher": "<4.4", - "symfony/lock": "<4.4", - "symfony/process": "<4.4" - }, - "provide": { - "psr/log-implementation": "1.0|2.0" - }, - "require-dev": { - "psr/log": "^1|^2", - "symfony/config": "^4.4|^5.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/event-dispatcher": "^4.4|^5.0", - "symfony/lock": "^4.4|^5.0", - "symfony/process": "^4.4|^5.0", - "symfony/var-dumper": "^4.4|^5.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Console\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Eases the creation of beautiful and testable command line interfaces", - "homepage": "https://symfony.com", - "keywords": [ - "cli", - "command line", - "console", - "terminal" - ], - "support": { - "source": "https://github.com/symfony/console/tree/v5.3.7" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-08-25T20:02:16+00:00" - }, - { - "name": "symfony/deprecation-contracts", - "version": "v2.4.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "5f38c8804a9e97d23e0c8d63341088cd8a22d627" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/5f38c8804a9e97d23e0c8d63341088cd8a22d627", - "reference": "5f38c8804a9e97d23e0c8d63341088cd8a22d627", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.4-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "files": [ - "function.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "A generic function and convention to trigger deprecation notices", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v2.4.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-03-23T23:28:01+00:00" - }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.23.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/46cd95797e9df938fdd2b03693b5fca5e64b01ce", - "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Gert de Pagter", - "email": "BackEndTea@gmail.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for ctype functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "ctype", - "polyfill", - "portable" - ], - "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.23.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-02-19T12:13:01+00:00" - }, - { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.23.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "16880ba9c5ebe3642d1995ab866db29270b36535" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/16880ba9c5ebe3642d1995ab866db29270b36535", - "reference": "16880ba9c5ebe3642d1995ab866db29270b36535", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Intl\\Grapheme\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for intl's grapheme_* functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "grapheme", - "intl", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.23.1" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-05-27T12:26:48+00:00" - }, - { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.23.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Intl\\Normalizer\\": "" - }, - "files": [ - "bootstrap.php" - ], - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for intl's Normalizer class and related functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "intl", - "normalizer", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.23.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-02-19T12:13:01+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.23.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9174a3d80210dca8daa7f31fec659150bbeabfc6", - "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for the Mbstring extension", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "mbstring", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.23.1" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-05-27T12:26:48+00:00" - }, - { - "name": "symfony/polyfill-php73", - "version": "v1.23.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "fba8933c384d6476ab14fb7b8526e5287ca7e010" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/fba8933c384d6476ab14fb7b8526e5287ca7e010", - "reference": "fba8933c384d6476ab14fb7b8526e5287ca7e010", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php73\\": "" - }, - "files": [ - "bootstrap.php" - ], - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php73/tree/v1.23.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-02-19T12:13:01+00:00" - }, - { - "name": "symfony/polyfill-php80", - "version": "v1.23.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "1100343ed1a92e3a38f9ae122fc0eb21602547be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/1100343ed1a92e3a38f9ae122fc0eb21602547be", - "reference": "1100343ed1a92e3a38f9ae122fc0eb21602547be", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php80\\": "" - }, - "files": [ - "bootstrap.php" - ], - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ion Bazan", - "email": "ion.bazan@gmail.com" - }, - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.23.1" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-07-28T13:41:28+00:00" - }, - { - "name": "symfony/service-contracts", - "version": "v2.4.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb", - "reference": "f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "psr/container": "^1.1" - }, - "suggest": { - "symfony/service-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.4-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Service\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Generic abstractions related to writing services", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "support": { - "source": "https://github.com/symfony/service-contracts/tree/v2.4.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-04-01T10:43:52+00:00" - }, - { - "name": "symfony/string", - "version": "v5.3.7", - "source": { - "type": "git", - "url": "https://github.com/symfony/string.git", - "reference": "8d224396e28d30f81969f083a58763b8b9ceb0a5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/8d224396e28d30f81969f083a58763b8b9ceb0a5", - "reference": "8d224396e28d30f81969f083a58763b8b9ceb0a5", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "~1.15" - }, - "require-dev": { - "symfony/error-handler": "^4.4|^5.0", - "symfony/http-client": "^4.4|^5.0", - "symfony/translation-contracts": "^1.1|^2", - "symfony/var-exporter": "^4.4|^5.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\String\\": "" - }, - "files": [ - "Resources/functions.php" - ], - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", - "homepage": "https://symfony.com", - "keywords": [ - "grapheme", - "i18n", - "string", - "unicode", - "utf-8", - "utf8" - ], - "support": { - "source": "https://github.com/symfony/string/tree/v5.3.7" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-08-26T08:00:08+00:00" - }, - { - "name": "theseer/tokenizer", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - } - ], - "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "support": { - "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/theseer", - "type": "github" - } - ], - "time": "2021-07-28T10:34:58+00:00" - }, - { - "name": "vimeo/psalm", - "version": "4.9.3", - "source": { - "type": "git", - "url": "https://github.com/vimeo/psalm.git", - "reference": "4c262932602b9bbab5020863d1eb22d49de0dbf4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/vimeo/psalm/zipball/4c262932602b9bbab5020863d1eb22d49de0dbf4", - "reference": "4c262932602b9bbab5020863d1eb22d49de0dbf4", - "shasum": "" - }, - "require": { - "amphp/amp": "^2.4.2", - "amphp/byte-stream": "^1.5", - "composer/package-versions-deprecated": "^1.8.0", - "composer/semver": "^1.4 || ^2.0 || ^3.0", - "composer/xdebug-handler": "^1.1 || ^2.0", - "dnoegel/php-xdg-base-dir": "^0.1.1", - "ext-dom": "*", - "ext-json": "*", - "ext-libxml": "*", - "ext-mbstring": "*", - "ext-simplexml": "*", - "ext-tokenizer": "*", - "felixfbecker/advanced-json-rpc": "^3.0.3", - "felixfbecker/language-server-protocol": "^1.5", - "netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0 || ^4.0", - "nikic/php-parser": "^4.12", - "openlss/lib-array2xml": "^1.0", - "php": "^7.1|^8", - "sebastian/diff": "^3.0 || ^4.0", - "symfony/console": "^3.4.17 || ^4.1.6 || ^5.0", - "webmozart/path-util": "^2.3" - }, - "provide": { - "psalm/psalm": "self.version" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.2", - "brianium/paratest": "^4.0||^6.0", - "ext-curl": "*", - "php-parallel-lint/php-parallel-lint": "^1.2", - "phpdocumentor/reflection-docblock": "^5", - "phpmyadmin/sql-parser": "5.1.0||dev-master", - "phpspec/prophecy": ">=1.9.0", - "phpunit/phpunit": "^9.0", - "psalm/plugin-phpunit": "^0.16", - "slevomat/coding-standard": "^7.0", - "squizlabs/php_codesniffer": "^3.5", - "symfony/process": "^4.3 || ^5.0", - "weirdan/prophecy-shim": "^1.0 || ^2.0" - }, - "suggest": { - "ext-igbinary": "^2.0.5" - }, - "bin": [ - "psalm", - "psalm-language-server", - "psalm-plugin", - "psalm-refactor", - "psalter" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.x-dev", - "dev-3.x": "3.x-dev", - "dev-2.x": "2.x-dev", - "dev-1.x": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psalm\\": "src/Psalm/" - }, - "files": [ - "src/functions.php", - "src/spl_object_id.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Matthew Brown" - } - ], - "description": "A static analysis tool for finding errors in PHP applications", - "keywords": [ - "code", - "inspection", - "php" - ], - "support": { - "issues": "https://github.com/vimeo/psalm/issues", - "source": "https://github.com/vimeo/psalm/tree/4.9.3" - }, - "time": "2021-08-14T16:19:38+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.10.0", - "source": { - "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "phpstan/phpstan": "<0.12.20", - "vimeo/psalm": "<4.6.1 || 4.6.2" - }, - "require-dev": { - "phpunit/phpunit": "^8.5.13" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.10-dev" - } - }, - "autoload": { - "psr-4": { - "Webmozart\\Assert\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - } - ], - "description": "Assertions to validate method input/output with nice error messages.", - "keywords": [ - "assert", - "check", - "validate" - ], - "support": { - "issues": "https://github.com/webmozarts/assert/issues", - "source": "https://github.com/webmozarts/assert/tree/1.10.0" - }, - "time": "2021-03-09T10:59:23+00:00" - }, - { - "name": "webmozart/path-util", - "version": "2.3.0", - "source": { - "type": "git", - "url": "https://github.com/webmozart/path-util.git", - "reference": "d939f7edc24c9a1bb9c0dee5cb05d8e859490725" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozart/path-util/zipball/d939f7edc24c9a1bb9c0dee5cb05d8e859490725", - "reference": "d939f7edc24c9a1bb9c0dee5cb05d8e859490725", - "shasum": "" - }, - "require": { - "php": ">=5.3.3", - "webmozart/assert": "~1.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.6", - "sebastian/version": "^1.0.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-dev" - } - }, - "autoload": { - "psr-4": { - "Webmozart\\PathUtil\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - } - ], - "description": "A robust cross-platform utility for normalizing, comparing and modifying file paths.", - "support": { - "issues": "https://github.com/webmozart/path-util/issues", - "source": "https://github.com/webmozart/path-util/tree/2.3.0" - }, - "time": "2015-12-17T08:42:14+00:00" - } - ], - "aliases": [], - "minimum-stability": "stable", - "stability-flags": [], - "prefer-stable": false, - "prefer-lowest": false, - "platform": { - "php": "^7.3 || ~8.0.0 || ~8.1.0" - }, - "platform-dev": [], - "plugin-api-version": "2.0.0" -} diff --git a/vendor/laminas/laminas-zendframework-bridge/config/replacements.php b/vendor/laminas/laminas-zendframework-bridge/config/replacements.php deleted file mode 100644 index f5344355..00000000 --- a/vendor/laminas/laminas-zendframework-bridge/config/replacements.php +++ /dev/null @@ -1,372 +0,0 @@ - 'zendframework/zendframework', - 'zend-developer-tools/toolbar/bjy' => 'zend-developer-tools/toolbar/bjy', - 'zend-developer-tools/toolbar/doctrine' => 'zend-developer-tools/toolbar/doctrine', - - // NAMESPACES - // Zend Framework components - 'Zend\\AuraDi\\Config' => 'Laminas\\AuraDi\\Config', - 'Zend\\Authentication' => 'Laminas\\Authentication', - 'Zend\\Barcode' => 'Laminas\\Barcode', - 'Zend\\Cache' => 'Laminas\\Cache', - 'Zend\\Captcha' => 'Laminas\\Captcha', - 'Zend\\Code' => 'Laminas\\Code', - 'ZendCodingStandard\\Sniffs' => 'LaminasCodingStandard\\Sniffs', - 'ZendCodingStandard\\Utils' => 'LaminasCodingStandard\\Utils', - 'Zend\\ComponentInstaller' => 'Laminas\\ComponentInstaller', - 'Zend\\Config' => 'Laminas\\Config', - 'Zend\\ConfigAggregator' => 'Laminas\\ConfigAggregator', - 'Zend\\ConfigAggregatorModuleManager' => 'Laminas\\ConfigAggregatorModuleManager', - 'Zend\\ConfigAggregatorParameters' => 'Laminas\\ConfigAggregatorParameters', - 'Zend\\Console' => 'Laminas\\Console', - 'Zend\\ContainerConfigTest' => 'Laminas\\ContainerConfigTest', - 'Zend\\Crypt' => 'Laminas\\Crypt', - 'Zend\\Db' => 'Laminas\\Db', - 'ZendDeveloperTools' => 'Laminas\\DeveloperTools', - 'Zend\\Di' => 'Laminas\\Di', - 'Zend\\Diactoros' => 'Laminas\\Diactoros', - 'ZendDiagnostics\\Check' => 'Laminas\\Diagnostics\\Check', - 'ZendDiagnostics\\Result' => 'Laminas\\Diagnostics\\Result', - 'ZendDiagnostics\\Runner' => 'Laminas\\Diagnostics\\Runner', - 'Zend\\Dom' => 'Laminas\\Dom', - 'Zend\\Escaper' => 'Laminas\\Escaper', - 'Zend\\EventManager' => 'Laminas\\EventManager', - 'Zend\\Feed' => 'Laminas\\Feed', - 'Zend\\File' => 'Laminas\\File', - 'Zend\\Filter' => 'Laminas\\Filter', - 'Zend\\Form' => 'Laminas\\Form', - 'Zend\\Http' => 'Laminas\\Http', - 'Zend\\HttpHandlerRunner' => 'Laminas\\HttpHandlerRunner', - 'Zend\\Hydrator' => 'Laminas\\Hydrator', - 'Zend\\I18n' => 'Laminas\\I18n', - 'Zend\\InputFilter' => 'Laminas\\InputFilter', - 'Zend\\Json' => 'Laminas\\Json', - 'Zend\\Ldap' => 'Laminas\\Ldap', - 'Zend\\Loader' => 'Laminas\\Loader', - 'Zend\\Log' => 'Laminas\\Log', - 'Zend\\Mail' => 'Laminas\\Mail', - 'Zend\\Math' => 'Laminas\\Math', - 'Zend\\Memory' => 'Laminas\\Memory', - 'Zend\\Mime' => 'Laminas\\Mime', - 'Zend\\ModuleManager' => 'Laminas\\ModuleManager', - 'Zend\\Mvc' => 'Laminas\\Mvc', - 'Zend\\Navigation' => 'Laminas\\Navigation', - 'Zend\\Paginator' => 'Laminas\\Paginator', - 'Zend\\Permissions' => 'Laminas\\Permissions', - 'Zend\\Pimple\\Config' => 'Laminas\\Pimple\\Config', - 'Zend\\ProblemDetails' => 'Mezzio\\ProblemDetails', - 'Zend\\ProgressBar' => 'Laminas\\ProgressBar', - 'Zend\\Psr7Bridge' => 'Laminas\\Psr7Bridge', - 'Zend\\Router' => 'Laminas\\Router', - 'Zend\\Serializer' => 'Laminas\\Serializer', - 'Zend\\Server' => 'Laminas\\Server', - 'Zend\\ServiceManager' => 'Laminas\\ServiceManager', - 'ZendService\\ReCaptcha' => 'Laminas\\ReCaptcha', - 'ZendService\\Twitter' => 'Laminas\\Twitter', - 'Zend\\Session' => 'Laminas\\Session', - 'Zend\\SkeletonInstaller' => 'Laminas\\SkeletonInstaller', - 'Zend\\Soap' => 'Laminas\\Soap', - 'Zend\\Stdlib' => 'Laminas\\Stdlib', - 'Zend\\Stratigility' => 'Laminas\\Stratigility', - 'Zend\\Tag' => 'Laminas\\Tag', - 'Zend\\Test' => 'Laminas\\Test', - 'Zend\\Text' => 'Laminas\\Text', - 'Zend\\Uri' => 'Laminas\\Uri', - 'Zend\\Validator' => 'Laminas\\Validator', - 'Zend\\View' => 'Laminas\\View', - 'ZendXml' => 'Laminas\\Xml', - 'Zend\\Xml2Json' => 'Laminas\\Xml2Json', - 'Zend\\XmlRpc' => 'Laminas\\XmlRpc', - 'ZendOAuth' => 'Laminas\\OAuth', - - // class ZendAcl in zend-expressive-authorization-acl - 'ZendAcl' => 'LaminasAcl', - 'Zend\\Expressive\\Authorization\\Acl\\ZendAcl' => 'Mezzio\\Authorization\\Acl\\LaminasAcl', - // class ZendHttpClientDecorator in zend-feed - 'ZendHttp' => 'LaminasHttp', - // class ZendModuleProvider in zend-config-aggregator-modulemanager - 'ZendModule' => 'LaminasModule', - // class ZendRbac in zend-expressive-authorization-rbac - 'ZendRbac' => 'LaminasRbac', - 'Zend\\Expressive\\Authorization\\Rbac\\ZendRbac' => 'Mezzio\\Authorization\\Rbac\\LaminasRbac', - // class ZendRouter in zend-expressive-router-zendrouter - 'ZendRouter' => 'LaminasRouter', - 'Zend\\Expressive\\Router\\ZendRouter' => 'Mezzio\\Router\\LaminasRouter', - // class ZendViewRenderer in zend-expressive-zendviewrenderer - 'ZendViewRenderer' => 'LaminasViewRenderer', - 'Zend\\Expressive\\ZendView\\ZendViewRenderer' => 'Mezzio\\LaminasView\\LaminasViewRenderer', - 'a\\Zend' => 'a\\Zend', - 'b\\Zend' => 'b\\Zend', - 'c\\Zend' => 'c\\Zend', - 'd\\Zend' => 'd\\Zend', - 'e\\Zend' => 'e\\Zend', - 'f\\Zend' => 'f\\Zend', - 'g\\Zend' => 'g\\Zend', - 'h\\Zend' => 'h\\Zend', - 'i\\Zend' => 'i\\Zend', - 'j\\Zend' => 'j\\Zend', - 'k\\Zend' => 'k\\Zend', - 'l\\Zend' => 'l\\Zend', - 'm\\Zend' => 'm\\Zend', - 'n\\Zend' => 'n\\Zend', - 'o\\Zend' => 'o\\Zend', - 'p\\Zend' => 'p\\Zend', - 'q\\Zend' => 'q\\Zend', - 'r\\Zend' => 'r\\Zend', - 's\\Zend' => 's\\Zend', - 't\\Zend' => 't\\Zend', - 'u\\Zend' => 'u\\Zend', - 'v\\Zend' => 'v\\Zend', - 'w\\Zend' => 'w\\Zend', - 'x\\Zend' => 'x\\Zend', - 'y\\Zend' => 'y\\Zend', - 'z\\Zend' => 'z\\Zend', - - // Expressive - 'Zend\\Expressive' => 'Mezzio', - 'ZendAuthentication' => 'LaminasAuthentication', - 'ZendAcl' => 'LaminasAcl', - 'ZendRbac' => 'LaminasRbac', - 'ZendRouter' => 'LaminasRouter', - 'ExpressiveUrlGenerator' => 'MezzioUrlGenerator', - 'ExpressiveInstaller' => 'MezzioInstaller', - - // Apigility - 'ZF\\Apigility' => 'Laminas\\ApiTools', - 'ZF\\ApiProblem' => 'Laminas\\ApiTools\\ApiProblem', - 'ZF\\AssetManager' => 'Laminas\\ApiTools\\AssetManager', - 'ZF\\ComposerAutoloading' => 'Laminas\\ComposerAutoloading', - 'ZF\\Configuration' => 'Laminas\\ApiTools\\Configuration', - 'ZF\\ContentNegotiation' => 'Laminas\\ApiTools\\ContentNegotiation', - 'ZF\\ContentValidation' => 'Laminas\\ApiTools\\ContentValidation', - 'ZF\\DevelopmentMode' => 'Laminas\\DevelopmentMode', - 'ZF\\Doctrine\\QueryBuilder' => 'Laminas\\ApiTools\\Doctrine\\QueryBuilder', - 'ZF\\Hal' => 'Laminas\\ApiTools\\Hal', - 'ZF\\HttpCache' => 'Laminas\\ApiTools\\HttpCache', - 'ZF\\MvcAuth' => 'Laminas\\ApiTools\\MvcAuth', - 'ZF\\OAuth2' => 'Laminas\\ApiTools\\OAuth2', - 'ZF\\Rest' => 'Laminas\\ApiTools\\Rest', - 'ZF\\Rpc' => 'Laminas\\ApiTools\\Rpc', - 'ZF\\Versioning' => 'Laminas\\ApiTools\\Versioning', - 'a\\ZF' => 'a\\ZF', - 'b\\ZF' => 'b\\ZF', - 'c\\ZF' => 'c\\ZF', - 'd\\ZF' => 'd\\ZF', - 'e\\ZF' => 'e\\ZF', - 'f\\ZF' => 'f\\ZF', - 'g\\ZF' => 'g\\ZF', - 'h\\ZF' => 'h\\ZF', - 'i\\ZF' => 'i\\ZF', - 'j\\ZF' => 'j\\ZF', - 'k\\ZF' => 'k\\ZF', - 'l\\ZF' => 'l\\ZF', - 'm\\ZF' => 'm\\ZF', - 'n\\ZF' => 'n\\ZF', - 'o\\ZF' => 'o\\ZF', - 'p\\ZF' => 'p\\ZF', - 'q\\ZF' => 'q\\ZF', - 'r\\ZF' => 'r\\ZF', - 's\\ZF' => 's\\ZF', - 't\\ZF' => 't\\ZF', - 'u\\ZF' => 'u\\ZF', - 'v\\ZF' => 'v\\ZF', - 'w\\ZF' => 'w\\ZF', - 'x\\ZF' => 'x\\ZF', - 'y\\ZF' => 'y\\ZF', - 'z\\ZF' => 'z\\ZF', - - 'ApigilityModuleInterface' => 'ApiToolsModuleInterface', - 'ApigilityProviderInterface' => 'ApiToolsProviderInterface', - 'ApigilityVersionController' => 'ApiToolsVersionController', - - // PACKAGES - // ZF components, MVC - 'zendframework/skeleton-application' => 'laminas/skeleton-application', - 'zendframework/zend-auradi-config' => 'laminas/laminas-auradi-config', - 'zendframework/zend-authentication' => 'laminas/laminas-authentication', - 'zendframework/zend-barcode' => 'laminas/laminas-barcode', - 'zendframework/zend-cache' => 'laminas/laminas-cache', - 'zendframework/zend-captcha' => 'laminas/laminas-captcha', - 'zendframework/zend-code' => 'laminas/laminas-code', - 'zendframework/zend-coding-standard' => 'laminas/laminas-coding-standard', - 'zendframework/zend-component-installer' => 'laminas/laminas-component-installer', - 'zendframework/zend-composer-autoloading' => 'laminas/laminas-composer-autoloading', - 'zendframework/zend-config-aggregator' => 'laminas/laminas-config-aggregator', - 'zendframework/zend-config' => 'laminas/laminas-config', - 'zendframework/zend-console' => 'laminas/laminas-console', - 'zendframework/zend-container-config-test' => 'laminas/laminas-container-config-test', - 'zendframework/zend-crypt' => 'laminas/laminas-crypt', - 'zendframework/zend-db' => 'laminas/laminas-db', - 'zendframework/zend-developer-tools' => 'laminas/laminas-developer-tools', - 'zendframework/zend-diactoros' => 'laminas/laminas-diactoros', - 'zendframework/zenddiagnostics' => 'laminas/laminas-diagnostics', - 'zendframework/zend-di' => 'laminas/laminas-di', - 'zendframework/zend-dom' => 'laminas/laminas-dom', - 'zendframework/zend-escaper' => 'laminas/laminas-escaper', - 'zendframework/zend-eventmanager' => 'laminas/laminas-eventmanager', - 'zendframework/zend-feed' => 'laminas/laminas-feed', - 'zendframework/zend-file' => 'laminas/laminas-file', - 'zendframework/zend-filter' => 'laminas/laminas-filter', - 'zendframework/zend-form' => 'laminas/laminas-form', - 'zendframework/zend-httphandlerrunner' => 'laminas/laminas-httphandlerrunner', - 'zendframework/zend-http' => 'laminas/laminas-http', - 'zendframework/zend-hydrator' => 'laminas/laminas-hydrator', - 'zendframework/zend-i18n' => 'laminas/laminas-i18n', - 'zendframework/zend-i18n-resources' => 'laminas/laminas-i18n-resources', - 'zendframework/zend-inputfilter' => 'laminas/laminas-inputfilter', - 'zendframework/zend-json' => 'laminas/laminas-json', - 'zendframework/zend-json-server' => 'laminas/laminas-json-server', - 'zendframework/zend-ldap' => 'laminas/laminas-ldap', - 'zendframework/zend-loader' => 'laminas/laminas-loader', - 'zendframework/zend-log' => 'laminas/laminas-log', - 'zendframework/zend-mail' => 'laminas/laminas-mail', - 'zendframework/zend-math' => 'laminas/laminas-math', - 'zendframework/zend-memory' => 'laminas/laminas-memory', - 'zendframework/zend-mime' => 'laminas/laminas-mime', - 'zendframework/zend-modulemanager' => 'laminas/laminas-modulemanager', - 'zendframework/zend-mvc' => 'laminas/laminas-mvc', - 'zendframework/zend-navigation' => 'laminas/laminas-navigation', - 'zendframework/zend-oauth' => 'laminas/laminas-oauth', - 'zendframework/zend-paginator' => 'laminas/laminas-paginator', - 'zendframework/zend-permissions-acl' => 'laminas/laminas-permissions-acl', - 'zendframework/zend-permissions-rbac' => 'laminas/laminas-permissions-rbac', - 'zendframework/zend-pimple-config' => 'laminas/laminas-pimple-config', - 'zendframework/zend-progressbar' => 'laminas/laminas-progressbar', - 'zendframework/zend-psr7bridge' => 'laminas/laminas-psr7bridge', - 'zendframework/zend-recaptcha' => 'laminas/laminas-recaptcha', - 'zendframework/zend-router' => 'laminas/laminas-router', - 'zendframework/zend-serializer' => 'laminas/laminas-serializer', - 'zendframework/zend-server' => 'laminas/laminas-server', - 'zendframework/zend-servicemanager' => 'laminas/laminas-servicemanager', - 'zendframework/zendservice-recaptcha' => 'laminas/laminas-recaptcha', - 'zendframework/zendservice-twitter' => 'laminas/laminas-twitter', - 'zendframework/zend-session' => 'laminas/laminas-session', - 'zendframework/zend-skeleton-installer' => 'laminas/laminas-skeleton-installer', - 'zendframework/zend-soap' => 'laminas/laminas-soap', - 'zendframework/zend-stdlib' => 'laminas/laminas-stdlib', - 'zendframework/zend-stratigility' => 'laminas/laminas-stratigility', - 'zendframework/zend-tag' => 'laminas/laminas-tag', - 'zendframework/zend-test' => 'laminas/laminas-test', - 'zendframework/zend-text' => 'laminas/laminas-text', - 'zendframework/zend-uri' => 'laminas/laminas-uri', - 'zendframework/zend-validator' => 'laminas/laminas-validator', - 'zendframework/zend-view' => 'laminas/laminas-view', - 'zendframework/zend-xml2json' => 'laminas/laminas-xml2json', - 'zendframework/zend-xml' => 'laminas/laminas-xml', - 'zendframework/zend-xmlrpc' => 'laminas/laminas-xmlrpc', - - // Expressive packages - 'zendframework/zend-expressive' => 'mezzio/mezzio', - 'zendframework/zend-expressive-zendrouter' => 'mezzio/mezzio-laminasrouter', - 'zendframework/zend-problem-details' => 'mezzio/mezzio-problem-details', - 'zendframework/zend-expressive-zendviewrenderer' => 'mezzio/mezzio-laminasviewrenderer', - - // Apigility packages - 'zfcampus/apigility-documentation' => 'laminas-api-tools/documentation', - 'zfcampus/statuslib-example' => 'laminas-api-tools/statuslib-example', - 'zfcampus/zf-apigility' => 'laminas-api-tools/api-tools', - 'zfcampus/zf-api-problem' => 'laminas-api-tools/api-tools-api-problem', - 'zfcampus/zf-asset-manager' => 'laminas-api-tools/api-tools-asset-manager', - 'zfcampus/zf-configuration' => 'laminas-api-tools/api-tools-configuration', - 'zfcampus/zf-content-negotiation' => 'laminas-api-tools/api-tools-content-negotiation', - 'zfcampus/zf-content-validation' => 'laminas-api-tools/api-tools-content-validation', - 'zfcampus/zf-development-mode' => 'laminas/laminas-development-mode', - 'zfcampus/zf-doctrine-querybuilder' => 'laminas-api-tools/api-tools-doctrine-querybuilder', - 'zfcampus/zf-hal' => 'laminas-api-tools/api-tools-hal', - 'zfcampus/zf-http-cache' => 'laminas-api-tools/api-tools-http-cache', - 'zfcampus/zf-mvc-auth' => 'laminas-api-tools/api-tools-mvc-auth', - 'zfcampus/zf-oauth2' => 'laminas-api-tools/api-tools-oauth2', - 'zfcampus/zf-rest' => 'laminas-api-tools/api-tools-rest', - 'zfcampus/zf-rpc' => 'laminas-api-tools/api-tools-rpc', - 'zfcampus/zf-versioning' => 'laminas-api-tools/api-tools-versioning', - - // CONFIG KEYS, SCRIPT NAMES, ETC - // ZF components - '::fromZend' => '::fromLaminas', // psr7bridge - '::toZend' => '::toLaminas', // psr7bridge - 'use_zend_loader' => 'use_laminas_loader', // zend-modulemanager - 'zend-config' => 'laminas-config', - 'zend-developer-tools/' => 'laminas-developer-tools/', - 'zend-tag-cloud' => 'laminas-tag-cloud', - 'zenddevelopertools' => 'laminas-developer-tools', - 'zendbarcode' => 'laminasbarcode', - 'ZendBarcode' => 'LaminasBarcode', - 'zendcache' => 'laminascache', - 'ZendCache' => 'LaminasCache', - 'zendconfig' => 'laminasconfig', - 'ZendConfig' => 'LaminasConfig', - 'zendfeed' => 'laminasfeed', - 'ZendFeed' => 'LaminasFeed', - 'zendfilter' => 'laminasfilter', - 'ZendFilter' => 'LaminasFilter', - 'zendform' => 'laminasform', - 'ZendForm' => 'LaminasForm', - 'zendi18n' => 'laminasi18n', - 'ZendI18n' => 'LaminasI18n', - 'zendinputfilter' => 'laminasinputfilter', - 'ZendInputFilter' => 'LaminasInputFilter', - 'zendlog' => 'laminaslog', - 'ZendLog' => 'LaminasLog', - 'zendmail' => 'laminasmail', - 'ZendMail' => 'LaminasMail', - 'zendmvc' => 'laminasmvc', - 'ZendMvc' => 'LaminasMvc', - 'zendpaginator' => 'laminaspaginator', - 'ZendPaginator' => 'LaminasPaginator', - 'zendserializer' => 'laminasserializer', - 'ZendSerializer' => 'LaminasSerializer', - 'zendtag' => 'laminastag', - 'ZendTag' => 'LaminasTag', - 'zendtext' => 'laminastext', - 'ZendText' => 'LaminasText', - 'zendvalidator' => 'laminasvalidator', - 'ZendValidator' => 'LaminasValidator', - 'zendview' => 'laminasview', - 'ZendView' => 'LaminasView', - 'zend-framework.flf' => 'laminas-project.flf', - - // Expressive-related - "'zend-expressive'" => "'mezzio'", - '"zend-expressive"' => '"mezzio"', - 'zend-expressive.' => 'mezzio.', - 'zend-expressive-authorization' => 'mezzio-authorization', - 'zend-expressive-hal' => 'mezzio-hal', - 'zend-expressive-session' => 'mezzio-session', - 'zend-expressive-swoole' => 'mezzio-swoole', - 'zend-expressive-tooling' => 'mezzio-tooling', - - // Apigility-related - "'zf-apigility'" => "'api-tools'", - '"zf-apigility"' => '"api-tools"', - 'zf-apigility/' => 'api-tools/', - 'zf-apigility-admin' => 'api-tools-admin', - 'zf-content-negotiation' => 'api-tools-content-negotiation', - 'zf-hal' => 'api-tools-hal', - 'zf-rest' => 'api-tools-rest', - 'zf-rpc' => 'api-tools-rpc', - 'zf-content-validation' => 'api-tools-content-validation', - 'zf-apigility-ui' => 'api-tools-ui', - 'zf-apigility-documentation-blueprint' => 'api-tools-documentation-blueprint', - 'zf-apigility-documentation-swagger' => 'api-tools-documentation-swagger', - 'zf-apigility-welcome' => 'api-tools-welcome', - 'zf-api-problem' => 'api-tools-api-problem', - 'zf-configuration' => 'api-tools-configuration', - 'zf-http-cache' => 'api-tools-http-cache', - 'zf-mvc-auth' => 'api-tools-mvc-auth', - 'zf-oauth2' => 'api-tools-oauth2', - 'zf-versioning' => 'api-tools-versioning', - 'ZfApigilityDoctrineQueryProviderManager' => 'LaminasApiToolsDoctrineQueryProviderManager', - 'ZfApigilityDoctrineQueryCreateFilterManager' => 'LaminasApiToolsDoctrineQueryCreateFilterManager', - 'zf-apigility-doctrine' => 'api-tools-doctrine', - 'zf-development-mode' => 'laminas-development-mode', - 'zf-doctrine-querybuilder' => 'api-tools-doctrine-querybuilder', - - // 3rd party Apigility packages - 'api-skeletons/zf-' => 'api-skeletons/zf-', // api-skeletons packages - 'zf-oauth2-' => 'zf-oauth2-', // api-skeletons OAuth2-related packages - 'ZF\\OAuth2\\Client' => 'ZF\\OAuth2\\Client', // api-skeletons/zf-oauth2-client - 'ZF\\OAuth2\\Doctrine' => 'ZF\\OAuth2\\Doctrine', // api-skeletons/zf-oauth2-doctrine -]; diff --git a/vendor/laminas/laminas-zendframework-bridge/psalm-baseline.xml b/vendor/laminas/laminas-zendframework-bridge/psalm-baseline.xml deleted file mode 100644 index 76d61cd2..00000000 --- a/vendor/laminas/laminas-zendframework-bridge/psalm-baseline.xml +++ /dev/null @@ -1,345 +0,0 @@ - - - - - 'ZendAcl' => 'LaminasAcl' - 'ZendRbac' => 'LaminasRbac' - 'ZendRouter' => 'LaminasRouter' - - - - - $class - $class - - - load - - - $class - $class - $class - $class - $class - $class - $class - - - - $loaded[$class] - - - $namespaces[$check] - $namespaces[$check] - - - - - $keys - - - $value - $value - $value - $value - - - function ($value) { - function ($value) { - function ($value, array $keys) { - function ($value, array $keys) { - - - replaceDependencyConfiguration - replaceDependencyFactories - replaceDependencyServices - - - $config - $newKey - $newKey - $newKey - $target - - - [$key] - - - $config[$key] - $config['aliases'][$alias] - $config['aliases'][$service] - $config['aliases'][$service] - - - $aliases[$name] - $config[$key] - $keys[$key] - $rewritten[$newKey] - $rewritten[$newKey] - $rewritten[$newKey] - $this->exactReplacements[$value] - - - $aliases[$name] - - - $a[$key] - $a[$key] - $a[] - $config - $config - $config[$key] - $config['factories'][$replacedService] - $config['services'][$replacedService] - $data - $factory - $factory - $key - $key - $name - $newKey - $newValue - $notIn[] - $result - $rewritten[$key] - $rewritten[$newKey] - $rewritten[$newKey][] - $serviceInstance - $serviceInstance - $target - $value - $value - - - - - init - onMergeConfig - - - ModuleEvent - ModuleManager - - - - - $replacement - $replacement - - - $original - $original - $original - - - $replacement - - - $this->replacements - $this->replacements - - - - - new $legacy() - - - testLegacyClassIsAliasToLaminas - testReverseAliasCreated - testTypeHint - - - testLegacyClassIsAliasToLaminas - - - - - invalidServiceManagerConfiguration - testRewritesNestedKeys - testServiceManagerServiceInstancesCanBeHandled - testWillSkipInvalidConfigurations - - - $config - - - $config - $expected - - - iterable - - - require $configLocation - require $expectedResultLocation - - - - - $event - $moduleManager - - - testInitRegistersListenerWithEventManager - testOnMergeConfigProcessesAndReplacesConfigurationPulledFromListener - - - $config - - - $config - $expected - - - iterable - - - require $configFile - require $expectationsFile - - - - - testEdgeCases - - - iterable - - - - - ConfigAbstractFactory - ConfigAbstractFactory - InvokableFactory - InvokableFactory - - - - - 'Zend\Db\Adapter\Adapter' => 'ZF\Apigility\DbConnectedAdapter' - - - - - Factory\SlimRouterFactory - RouterInterface - - - - - LazyServiceFactory - - - - - CacheItemPoolInterface - ConfigFactory - ConfigFactory - ConfigFactory - ConfigFactory - ConfigFactory - ConfigFactory - Csp - DisplayPostHandler - Engine - EventDispatcherInterface - Factory\CachePoolFactory - Factory\EventDispatcherFactory - Factory\MailTransport - Factory\PlatesFunctionsDelegator - FeedReaderHttpClientInterface - Feed\HttpPlugClientFactory - Handler\ComicsPageHandler - Handler\ComicsPageHandlerFactory - Handler\HomePageHandler - Handler\HomePageHandlerFactory - Handler\PageHandlerFactory - Handler\PageHandlerFactory - Handler\ResumePageHandler - Handler\ResumePageHandler - Middleware\ContentSecurityPolicyMiddlewareFactory - Middleware\DisplayBlogPostHandlerDelegator - Middleware\RedirectAmpPagesMiddleware - Middleware\RedirectAmpPagesMiddlewareFactory - Middleware\RedirectsMiddleware - Middleware\RedirectsMiddleware - Middleware\XClacksOverheadMiddleware - Middleware\XClacksOverheadMiddleware - Middleware\XPoweredByMiddleware - Middleware\XPoweredByMiddleware - RequestFactory - RequestFactoryInterface - ResponseFactory - ResponseFactoryInterface - SessionCachePool - SessionCachePool - SessionCachePoolFactory - - - - - \Zend\Expressive\Router - - - - - OAuth2Client - - - - - setMergedConfig - - - - - $listener - - - $listeners - - - attach - - - $this->listeners[$eventName] - - - $this->listeners[$eventName] - - - $this->listeners[$eventName] - - - array - - - $this->listeners - - - - - $listener - - - ConfigListener - - - $this->listener - - - - - EventManager - - - $this->eventManager - - - $this->eventManager - - - $this->eventManager - - - diff --git a/vendor/laminas/laminas-zendframework-bridge/psalm.xml.dist b/vendor/laminas/laminas-zendframework-bridge/psalm.xml.dist deleted file mode 100644 index 788bbc00..00000000 --- a/vendor/laminas/laminas-zendframework-bridge/psalm.xml.dist +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/vendor/laminas/laminas-zendframework-bridge/src/Autoloader.php b/vendor/laminas/laminas-zendframework-bridge/src/Autoloader.php deleted file mode 100644 index 84f94061..00000000 --- a/vendor/laminas/laminas-zendframework-bridge/src/Autoloader.php +++ /dev/null @@ -1,181 +0,0 @@ -loadClass($class)) { - $legacy = $namespaces[$check] - . strtr(substr($class, strlen($check)), [ - 'ApiTools' => 'Apigility', - 'Mezzio' => 'Expressive', - 'Laminas' => 'Zend', - ]); - class_alias($class, $legacy); - } - }; - } - - /** - * @return callable - */ - private static function createAppendAutoloader(array $namespaces, ArrayObject $loaded) - { - /** - * @param string $class Class name to autoload - * @return void - */ - return static function ($class) use ($namespaces, $loaded) { - $segments = explode('\\', $class); - - if ($segments[0] === 'ZendService' && isset($segments[1])) { - $segments[0] .= '\\' . $segments[1]; - unset($segments[1]); - $segments = array_values($segments); - } - - $i = 0; - $check = ''; - - // We are checking segments of the namespace to match quicker - while (isset($segments[$i + 1], $namespaces[$check . $segments[$i] . '\\'])) { - $check .= $segments[$i] . '\\'; - ++$i; - } - - if ($check === '') { - return; - } - - $alias = $namespaces[$check] - . strtr(substr($class, strlen($check)), [ - 'Apigility' => 'ApiTools', - 'Expressive' => 'Mezzio', - 'Zend' => 'Laminas', - 'AbstractZendServer' => 'AbstractZendServer', - 'ZendServerDisk' => 'ZendServerDisk', - 'ZendServerShm' => 'ZendServerShm', - 'ZendMonitor' => 'ZendMonitor', - ]); - - $loaded[$alias] = true; - if (class_exists($alias) || interface_exists($alias) || trait_exists($alias)) { - class_alias($alias, $class); - } - }; - } - - private static function getClassLoaderFromVendorDirectory(string $composerVendorDirectory): ?ClassLoader - { - $filename = rtrim($composerVendorDirectory, '/') . '/autoload.php'; - if (!file_exists($filename)) { - return null; - } - - /** @psalm-suppress MixedAssignment */ - $loader = include $filename; - if (!$loader instanceof ClassLoader) { - return null; - } - - return $loader; - } -} diff --git a/vendor/laminas/laminas-zendframework-bridge/src/ConfigPostProcessor.php b/vendor/laminas/laminas-zendframework-bridge/src/ConfigPostProcessor.php deleted file mode 100644 index c3b601a6..00000000 --- a/vendor/laminas/laminas-zendframework-bridge/src/ConfigPostProcessor.php +++ /dev/null @@ -1,426 +0,0 @@ - true, - 'factories' => true, - 'invokables' => true, - 'services' => true, - ]; - - /** @var array String keys => string values */ - private $exactReplacements = [ - 'zend-expressive' => 'mezzio', - 'zf-apigility' => 'api-tools', - ]; - - /** @var Replacements */ - private $replacements; - - /** @var callable[] */ - private $rulesets; - - public function __construct() - { - $this->replacements = new Replacements(); - - /* Define the rulesets for replacements. - * - * Each ruleset has the following signature: - * - * @param mixed $value - * @param string[] $keys Full nested key hierarchy leading to the value - * @return null|callable - * - * If no match is made, a null is returned, allowing it to fallback to - * the next ruleset in the list. If a match is made, a callback is returned, - * and that will be used to perform the replacement on the value. - * - * The callback should have the following signature: - * - * @param mixed $value - * @param string[] $keys - * @return mixed The transformed value - */ - $this->rulesets = [ - // Exact values - function ($value) { - return is_string($value) && isset($this->exactReplacements[$value]) - ? [$this, 'replaceExactValue'] - : null; - }, - - // Router (MVC applications) - // We do not want to rewrite these. - function ($value, array $keys) { - $key = array_pop($keys); - // Only worried about a top-level "router" key. - return $key === 'router' && $keys === [] && is_array($value) - ? [$this, 'noopReplacement'] - : null; - }, - - // service- and pluginmanager handling - function ($value) { - return is_array($value) && array_intersect_key(self::SERVICE_MANAGER_KEYS_OF_INTEREST, $value) !== [] - ? [$this, 'replaceDependencyConfiguration'] - : null; - }, - - // Array values - function ($value, array $keys) { - return $keys !== [] && is_array($value) - ? [$this, '__invoke'] - : null; - }, - ]; - } - - /** - * @param string[] $keys Hierarchy of keys, for determining location in - * nested configuration. - * @return array - */ - public function __invoke(array $config, array $keys = []) - { - $rewritten = []; - - foreach ($config as $key => $value) { - // Determine new key from replacements - $newKey = is_string($key) ? $this->replace($key, $keys) : $key; - - // Keep original values with original key, if the key has changed, but only at the top-level. - if (empty($keys) && $newKey !== $key) { - $rewritten[$key] = $value; - } - - // Perform value replacements, if any - $newValue = $this->replace($value, $keys, $newKey); - - // Key does not already exist and/or is not an array value - if (! array_key_exists($newKey, $rewritten) || ! is_array($rewritten[$newKey])) { - // Do not overwrite existing values with null values - $rewritten[$newKey] = array_key_exists($newKey, $rewritten) && null === $newValue - ? $rewritten[$newKey] - : $newValue; - continue; - } - - // New value is null; nothing to do. - if (null === $newValue) { - continue; - } - - // Key already exists as an array value, but $value is not an array - if (! is_array($newValue)) { - $rewritten[$newKey][] = $newValue; - continue; - } - - // Key already exists as an array value, and $value is also an array - $rewritten[$newKey] = static::merge($rewritten[$newKey], $newValue); - } - - return $rewritten; - } - - /** - * Perform substitutions as needed on an individual value. - * - * The $key is provided to allow fine-grained selection of rewrite rules. - * - * @param mixed $value - * @param string[] $keys Key hierarchy - * @param null|int|string $key - * @return mixed - */ - private function replace($value, array $keys, $key = null) - { - // Add new key to the list of keys. - // We do not need to remove it later, as we are working on a copy of the array. - $keys[] = $key; - - // Identify rewrite strategy and perform replacements - $rewriteRule = $this->replacementRuleMatch($value, $keys); - return $rewriteRule($value, $keys); - } - - /** - * Merge two arrays together. - * - * If an integer key exists in both arrays, the value from the second array - * will be appended to the first array. If both values are arrays, they are - * merged together, else the value of the second array overwrites the one - * of the first array. - * - * Based on zend-stdlib Zend\Stdlib\ArrayUtils::merge - * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) - * - * @return array - */ - public static function merge(array $a, array $b) - { - foreach ($b as $key => $value) { - if (! isset($a[$key]) && ! array_key_exists($key, $a)) { - $a[$key] = $value; - continue; - } - - if (null === $value && array_key_exists($key, $a)) { - // Leave as-is if value from $b is null - continue; - } - - if (is_int($key)) { - $a[] = $value; - continue; - } - - if (is_array($value) && is_array($a[$key])) { - $a[$key] = static::merge($a[$key], $value); - continue; - } - - $a[$key] = $value; - } - - return $a; - } - - /** - * @param mixed $value - * @param null|int|string $key - * @return callable Callable to invoke with value - */ - private function replacementRuleMatch($value, $key = null) - { - foreach ($this->rulesets as $ruleset) { - $result = $ruleset($value, $key); - if (is_callable($result)) { - return $result; - } - } - return [$this, 'fallbackReplacement']; - } - - /** - * Replace a value using the translation table, if the value is a string. - * - * @param mixed $value - * @return mixed - */ - private function fallbackReplacement($value) - { - return is_string($value) - ? $this->replacements->replace($value) - : $value; - } - - /** - * Replace a value matched exactly. - * - * @param mixed $value - * @return mixed - */ - private function replaceExactValue($value) - { - return $this->exactReplacements[$value]; - } - - private function replaceDependencyConfiguration(array $config) - { - $aliases = isset($config['aliases']) && is_array($config['aliases']) - ? $this->replaceDependencyAliases($config['aliases']) - : []; - - if ($aliases) { - $config['aliases'] = $aliases; - } - - $config = $this->replaceDependencyInvokables($config); - $config = $this->replaceDependencyFactories($config); - $config = $this->replaceDependencyServices($config); - - $keys = self::SERVICE_MANAGER_KEYS_OF_INTEREST; - foreach ($config as $key => $data) { - if (isset($keys[$key])) { - continue; - } - - $config[$key] = is_array($data) ? $this->__invoke($data, [$key]) : $data; - } - - return $config; - } - - /** - * Rewrite dependency aliases array - * - * In this case, we want to keep the alias as-is, but rewrite the target. - * - * We need also provide an additional alias if the alias key is a legacy class. - * - * @return array - */ - private function replaceDependencyAliases(array $aliases) - { - foreach ($aliases as $alias => $target) { - if (! is_string($alias) || ! is_string($target)) { - continue; - } - - $newTarget = $this->replacements->replace($target); - $newAlias = $this->replacements->replace($alias); - - $notIn = [$newTarget]; - $name = $newTarget; - while (isset($aliases[$name])) { - $notIn[] = $aliases[$name]; - $name = $aliases[$name]; - } - - if ($newAlias === $alias && ! in_array($alias, $notIn, true)) { - $aliases[$alias] = $newTarget; - continue; - } - - if (isset($aliases[$newAlias])) { - continue; - } - - if (! in_array($newAlias, $notIn, true)) { - $aliases[$alias] = $newAlias; - $aliases[$newAlias] = $newTarget; - } - } - - return $aliases; - } - - /** - * Rewrite dependency invokables array - * - * In this case, we want to keep the alias as-is, but rewrite the target. - * - * We need also provide an additional alias if invokable is defined with - * an alias which is a legacy class. - * - * @return array - */ - private function replaceDependencyInvokables(array $config) - { - if (empty($config['invokables']) || ! is_array($config['invokables'])) { - return $config; - } - - foreach ($config['invokables'] as $alias => $target) { - if (! is_string($alias)) { - continue; - } - - $newTarget = $this->replacements->replace($target); - $newAlias = $this->replacements->replace($alias); - - if ($alias === $target || isset($config['aliases'][$newAlias])) { - $config['invokables'][$alias] = $newTarget; - continue; - } - - $config['invokables'][$newAlias] = $newTarget; - - if ($newAlias === $alias) { - continue; - } - - $config['aliases'][$alias] = $newAlias; - - unset($config['invokables'][$alias]); - } - - return $config; - } - - /** - * @param mixed $value - * @return mixed Returns $value verbatim. - */ - private function noopReplacement($value) - { - return $value; - } - - private function replaceDependencyFactories(array $config) - { - if (empty($config['factories']) || ! is_array($config['factories'])) { - return $config; - } - - foreach ($config['factories'] as $service => $factory) { - if (! is_string($service)) { - continue; - } - - $replacedService = $this->replacements->replace($service); - $factory = is_string($factory) ? $this->replacements->replace($factory) : $factory; - $config['factories'][$replacedService] = $factory; - - if ($replacedService === $service) { - continue; - } - - unset($config['factories'][$service]); - if (isset($config['aliases'][$service])) { - continue; - } - - $config['aliases'][$service] = $replacedService; - } - - return $config; - } - - private function replaceDependencyServices(array $config) - { - if (empty($config['services']) || ! is_array($config['services'])) { - return $config; - } - - foreach ($config['services'] as $service => $serviceInstance) { - if (! is_string($service)) { - continue; - } - - $replacedService = $this->replacements->replace($service); - $serviceInstance = is_array($serviceInstance) ? $this->__invoke($serviceInstance) : $serviceInstance; - - $config['services'][$replacedService] = $serviceInstance; - - if ($service === $replacedService) { - continue; - } - - unset($config['services'][$service]); - - if (isset($config['aliases'][$service])) { - continue; - } - - $config['aliases'][$service] = $replacedService; - } - - return $config; - } -} diff --git a/vendor/laminas/laminas-zendframework-bridge/src/Module.php b/vendor/laminas/laminas-zendframework-bridge/src/Module.php deleted file mode 100644 index 9bb12980..00000000 --- a/vendor/laminas/laminas-zendframework-bridge/src/Module.php +++ /dev/null @@ -1,48 +0,0 @@ -getEventManager() - ->attach('mergeConfig', [$this, 'onMergeConfig']); - } - - /** - * Perform substitutions in the merged configuration. - * - * Rewrites keys and values matching known ZF classes, namespaces, and - * configuration keys to their Laminas equivalents. - * - * Type-hinting deliberately omitted to allow unit testing - * without dependencies on packages that do not exist yet. - * - * @param ModuleEvent $event - */ - public function onMergeConfig($event) - { - /** @var ConfigMergerInterface */ - $configMerger = $event->getConfigListener(); - $processor = new ConfigPostProcessor(); - $configMerger->setMergedConfig( - $processor( - $configMerger->getMergedConfig($returnAsObject = false) - ) - ); - } -} diff --git a/vendor/laminas/laminas-zendframework-bridge/src/Replacements.php b/vendor/laminas/laminas-zendframework-bridge/src/Replacements.php deleted file mode 100644 index 5a09ef12..00000000 --- a/vendor/laminas/laminas-zendframework-bridge/src/Replacements.php +++ /dev/null @@ -1,40 +0,0 @@ -replacements = array_merge( - require __DIR__ . '/../config/replacements.php', - $additionalReplacements - ); - - // Provide multiple variants of strings containing namespace separators - foreach ($this->replacements as $original => $replacement) { - if (false === strpos($original, '\\')) { - continue; - } - $this->replacements[str_replace('\\', '\\\\', $original)] = str_replace('\\', '\\\\', $replacement); - $this->replacements[str_replace('\\', '\\\\\\\\', $original)] = str_replace('\\', '\\\\\\\\', $replacement); - } - } - - /** - * @param string $value - * @return string - */ - public function replace($value) - { - return strtr($value, $this->replacements); - } -} diff --git a/vendor/laminas/laminas-zendframework-bridge/src/RewriteRules.php b/vendor/laminas/laminas-zendframework-bridge/src/RewriteRules.php deleted file mode 100644 index 61aa56dd..00000000 --- a/vendor/laminas/laminas-zendframework-bridge/src/RewriteRules.php +++ /dev/null @@ -1,73 +0,0 @@ - 'Mezzio\\ProblemDetails\\', - 'Zend\\Expressive\\' => 'Mezzio\\', - - // Laminas - 'Zend\\' => 'Laminas\\', - 'ZF\\ComposerAutoloading\\' => 'Laminas\\ComposerAutoloading\\', - 'ZF\\DevelopmentMode\\' => 'Laminas\\DevelopmentMode\\', - - // Apigility - 'ZF\\Apigility\\' => 'Laminas\\ApiTools\\', - 'ZF\\' => 'Laminas\\ApiTools\\', - - // ZendXml, API wrappers, zend-http OAuth support, zend-diagnostics, ZendDeveloperTools - 'ZendXml\\' => 'Laminas\\Xml\\', - 'ZendOAuth\\' => 'Laminas\\OAuth\\', - 'ZendDiagnostics\\' => 'Laminas\\Diagnostics\\', - 'ZendService\\ReCaptcha\\' => 'Laminas\\ReCaptcha\\', - 'ZendService\\Twitter\\' => 'Laminas\\Twitter\\', - 'ZendDeveloperTools\\' => 'Laminas\\DeveloperTools\\', - ]; - } - - /** - * @return array - */ - public static function namespaceReverse() - { - return [ - // ZendXml, ZendOAuth, ZendDiagnostics, ZendDeveloperTools - 'Laminas\\Xml\\' => 'ZendXml\\', - 'Laminas\\OAuth\\' => 'ZendOAuth\\', - 'Laminas\\Diagnostics\\' => 'ZendDiagnostics\\', - 'Laminas\\DeveloperTools\\' => 'ZendDeveloperTools\\', - - // Zend Service - 'Laminas\\ReCaptcha\\' => 'ZendService\\ReCaptcha\\', - 'Laminas\\Twitter\\' => 'ZendService\\Twitter\\', - - // Zend - 'Laminas\\' => 'Zend\\', - - // Expressive - 'Mezzio\\ProblemDetails\\' => 'Zend\\ProblemDetails\\', - 'Mezzio\\' => 'Zend\\Expressive\\', - - // Laminas to ZfCampus - 'Laminas\\ComposerAutoloading\\' => 'ZF\\ComposerAutoloading\\', - 'Laminas\\DevelopmentMode\\' => 'ZF\\DevelopmentMode\\', - - // Apigility - 'Laminas\\ApiTools\\Admin\\' => 'ZF\\Apigility\\Admin\\', - 'Laminas\\ApiTools\\Doctrine\\' => 'ZF\\Apigility\\Doctrine\\', - 'Laminas\\ApiTools\\Documentation\\' => 'ZF\\Apigility\\Documentation\\', - 'Laminas\\ApiTools\\Example\\' => 'ZF\\Apigility\\Example\\', - 'Laminas\\ApiTools\\Provider\\' => 'ZF\\Apigility\\Provider\\', - 'Laminas\\ApiTools\\Welcome\\' => 'ZF\\Apiglity\\Welcome\\', - 'Laminas\\ApiTools\\' => 'ZF\\', - ]; - } -} diff --git a/vendor/laminas/laminas-zendframework-bridge/src/autoload.php b/vendor/laminas/laminas-zendframework-bridge/src/autoload.php deleted file mode 100644 index e92ff589..00000000 --- a/vendor/laminas/laminas-zendframework-bridge/src/autoload.php +++ /dev/null @@ -1,3 +0,0 @@ -|null */ public $args; diff --git a/vendor/scssphp/scssphp/src/Block/DirectiveBlock.php b/vendor/scssphp/scssphp/src/Block/DirectiveBlock.php index b1d3d1a8..22b346e9 100644 --- a/vendor/scssphp/scssphp/src/Block/DirectiveBlock.php +++ b/vendor/scssphp/scssphp/src/Block/DirectiveBlock.php @@ -13,6 +13,7 @@ namespace ScssPhp\ScssPhp\Block; use ScssPhp\ScssPhp\Block; +use ScssPhp\ScssPhp\Node\Number; use ScssPhp\ScssPhp\Type; /** @@ -26,7 +27,7 @@ class DirectiveBlock extends Block public $name; /** - * @var string|array|null + * @var array|Number|null */ public $value; diff --git a/vendor/scssphp/scssphp/src/Block/EachBlock.php b/vendor/scssphp/scssphp/src/Block/EachBlock.php index b3289579..1217994e 100644 --- a/vendor/scssphp/scssphp/src/Block/EachBlock.php +++ b/vendor/scssphp/scssphp/src/Block/EachBlock.php @@ -13,6 +13,7 @@ namespace ScssPhp\ScssPhp\Block; use ScssPhp\ScssPhp\Block; +use ScssPhp\ScssPhp\Node\Number; use ScssPhp\ScssPhp\Type; /** @@ -26,7 +27,7 @@ class EachBlock extends Block public $vars = []; /** - * @var array + * @var array|Number */ public $list; diff --git a/vendor/scssphp/scssphp/src/Block/ElseifBlock.php b/vendor/scssphp/scssphp/src/Block/ElseifBlock.php index 4622bca7..f732c2d7 100644 --- a/vendor/scssphp/scssphp/src/Block/ElseifBlock.php +++ b/vendor/scssphp/scssphp/src/Block/ElseifBlock.php @@ -13,6 +13,7 @@ namespace ScssPhp\ScssPhp\Block; use ScssPhp\ScssPhp\Block; +use ScssPhp\ScssPhp\Node\Number; use ScssPhp\ScssPhp\Type; /** @@ -21,7 +22,7 @@ use ScssPhp\ScssPhp\Type; class ElseifBlock extends Block { /** - * @var array + * @var array|Number */ public $cond; diff --git a/vendor/scssphp/scssphp/src/Block/ForBlock.php b/vendor/scssphp/scssphp/src/Block/ForBlock.php index a9cf6733..96294411 100644 --- a/vendor/scssphp/scssphp/src/Block/ForBlock.php +++ b/vendor/scssphp/scssphp/src/Block/ForBlock.php @@ -13,6 +13,7 @@ namespace ScssPhp\ScssPhp\Block; use ScssPhp\ScssPhp\Block; +use ScssPhp\ScssPhp\Node\Number; use ScssPhp\ScssPhp\Type; /** @@ -26,12 +27,12 @@ class ForBlock extends Block public $var; /** - * @var array + * @var array|Number */ public $start; /** - * @var array + * @var array|Number */ public $end; diff --git a/vendor/scssphp/scssphp/src/Block/IfBlock.php b/vendor/scssphp/scssphp/src/Block/IfBlock.php index 9f21bf88..659c7c27 100644 --- a/vendor/scssphp/scssphp/src/Block/IfBlock.php +++ b/vendor/scssphp/scssphp/src/Block/IfBlock.php @@ -13,6 +13,7 @@ namespace ScssPhp\ScssPhp\Block; use ScssPhp\ScssPhp\Block; +use ScssPhp\ScssPhp\Node\Number; use ScssPhp\ScssPhp\Type; /** @@ -21,7 +22,7 @@ use ScssPhp\ScssPhp\Type; class IfBlock extends Block { /** - * @var array + * @var array|Number */ public $cond; diff --git a/vendor/scssphp/scssphp/src/Block/MediaBlock.php b/vendor/scssphp/scssphp/src/Block/MediaBlock.php index c49ee1b2..ab975c74 100644 --- a/vendor/scssphp/scssphp/src/Block/MediaBlock.php +++ b/vendor/scssphp/scssphp/src/Block/MediaBlock.php @@ -13,6 +13,7 @@ namespace ScssPhp\ScssPhp\Block; use ScssPhp\ScssPhp\Block; +use ScssPhp\ScssPhp\Node\Number; use ScssPhp\ScssPhp\Type; /** @@ -21,7 +22,7 @@ use ScssPhp\ScssPhp\Type; class MediaBlock extends Block { /** - * @var string|array|null + * @var string|array|Number|null */ public $value; diff --git a/vendor/scssphp/scssphp/src/Compiler.php b/vendor/scssphp/scssphp/src/Compiler.php index ecafc8cb..d654ee6e 100644 --- a/vendor/scssphp/scssphp/src/Compiler.php +++ b/vendor/scssphp/scssphp/src/Compiler.php @@ -140,13 +140,28 @@ class Compiler /** @deprecated */ public static $Infinity = [Type::T_KEYWORD, 'Infinity']; public static $null = [Type::T_NULL]; + /** + * @internal + */ public static $nullString = [Type::T_STRING, '', []]; + /** + * @internal + */ public static $defaultValue = [Type::T_KEYWORD, '']; + /** + * @internal + */ public static $selfSelector = [Type::T_SELF]; public static $emptyList = [Type::T_LIST, '', []]; public static $emptyMap = [Type::T_MAP, [], []]; public static $emptyString = [Type::T_STRING, '"', []]; + /** + * @internal + */ public static $with = [Type::T_KEYWORD, 'with']; + /** + * @internal + */ public static $without = [Type::T_KEYWORD, 'without']; private static $emptyArgumentList = [Type::T_LIST, '', [], []]; @@ -458,10 +473,33 @@ class Compiler } /** - * Compile scss + * Compiles the provided scss file into CSS. + * + * @param string $path + * + * @return CompilationResult + * + * @throws SassException when the source fails to compile + */ + public function compileFile($path) + { + $source = file_get_contents($path); + + if ($source === false) { + throw new \RuntimeException('Could not read the file content'); + } + + return $this->compileString($source, $path); + } + + /** + * Compiles the provided scss source code into CSS. + * + * If provided, the path is considered to be the path from which the source code comes + * from, which will be used to resolve relative imports. * * @param string $source - * @param string|null $path + * @param string|null $path The path for the source, used to resolve relative imports * * @return CompilationResult * @@ -548,7 +586,7 @@ class Compiler $sourceMap = null; - if (! empty($out) && $this->sourceMap && $this->sourceMap !== self::SOURCE_MAP_NONE) { + if (! empty($out) && $this->sourceMap !== self::SOURCE_MAP_NONE && $this->sourceMap) { assert($sourceMapGenerator !== null); $sourceMap = $sourceMapGenerator->generateJson($prefix); $sourceMapUrl = null; @@ -1508,6 +1546,7 @@ class Compiler // start from the root while ($scope->parent && $scope->parent->type !== Type::T_ROOT) { array_unshift($childStash, $scope); + \assert($scope->parent !== null); $scope = $scope->parent; } @@ -1632,6 +1671,7 @@ class Compiler $parser = $this->parserFactory(__METHOD__); if ($parser->parseValue($buffer, $reParsedWith)) { + \assert(\is_array($reParsedWith)); $withCondition = $reParsedWith; } } @@ -2090,6 +2130,11 @@ class Compiler foreach ($selector as $node) { $compound = ''; + if (!is_array($node)) { + $output[] = $node; + continue; + } + array_walk_recursive( $node, function ($value, $key) use (&$compound) { @@ -2124,12 +2169,16 @@ class Compiler foreach ($selector as $node) { $compound = ''; - array_walk_recursive( - $node, - function ($value, $key) use (&$compound) { - $compound .= $value; - } - ); + if (!is_array($node)) { + $compound .= $node; + } else { + array_walk_recursive( + $node, + function ($value, $key) use (&$compound) { + $compound .= $value; + } + ); + } if ($this->isImmediateRelationshipCombinator($compound)) { if (\count($output)) { @@ -2885,7 +2934,7 @@ class Compiler { if (isset($child[Parser::SOURCE_LINE])) { $this->sourceIndex = isset($child[Parser::SOURCE_INDEX]) ? $child[Parser::SOURCE_INDEX] : null; - $this->sourceLine = isset($child[Parser::SOURCE_LINE]) ? $child[Parser::SOURCE_LINE] : -1; + $this->sourceLine = $child[Parser::SOURCE_LINE]; $this->sourceColumn = isset($child[Parser::SOURCE_COLUMN]) ? $child[Parser::SOURCE_COLUMN] : -1; } elseif (\is_array($child) && isset($child[1]->sourceLine) && $child[1] instanceof Block) { $this->sourceIndex = $child[1]->sourceIndex; @@ -4529,8 +4578,10 @@ EOL; return $colorName; } - if (is_numeric($alpha)) { + if (\is_int($alpha) || \is_float($alpha)) { $a = new Number($alpha, ''); + } elseif (is_numeric($alpha)) { + $a = new Number((float) $alpha, ''); } else { $a = $alpha; } @@ -5667,9 +5718,35 @@ EOL; @trigger_error('Omitting the argument declaration when registering custom function is deprecated and won\'t be supported in ScssPhp 2.0 anymore.', E_USER_DEPRECATED); } + if ($this->reflectCallable($callback)->getNumberOfRequiredParameters() > 1) { + @trigger_error('The second argument passed to the callback of custom functions is deprecated and won\'t be supported in ScssPhp 2.0 anymore. Register a callback accepting only 1 parameter instead.', E_USER_DEPRECATED); + } + $this->userFunctions[$this->normalizeName($name)] = [$callback, $argumentDeclaration]; } + /** + * @return \ReflectionFunctionAbstract + */ + private function reflectCallable(callable $c) + { + if (\is_object($c) && !$c instanceof \Closure) { + $c = [$c, '__invoke']; + } + + if (\is_string($c) && false !== strpos($c, '::')) { + $c = explode('::', $c, 2); + } + + if (\is_array($c)) { + return new \ReflectionMethod($c[0], $c[1]); + } + + \assert(\is_string($c) || $c instanceof \Closure); + + return new \ReflectionFunction($c); + } + /** * Unregister function * @@ -5806,13 +5883,13 @@ EOL; if (! \is_null($file)) { if (\is_array($dir)) { - $callableDescription = (\is_object($dir[0]) ? \get_class($dir[0]) : $dir[0]).'::'.$dir[1]; + $callableDescription = (\is_object($dir[0]) ? \get_class($dir[0]) : $dir[0]) . '::' . $dir[1]; } elseif ($dir instanceof \Closure) { $r = new \ReflectionFunction($dir); if (false !== strpos($r->name, '{closure}')) { $callableDescription = sprintf('closure{%s:%s}', $r->getFileName(), $r->getStartLine()); } elseif ($class = $r->getClosureScopeClass()) { - $callableDescription = $class->name.'::'.$r->name; + $callableDescription = $class->name . '::' . $r->name; } else { $callableDescription = $r->name; } @@ -5925,15 +6002,15 @@ EOL; private function tryImportPathWithExtensions($path) { $result = array_merge( - $this->tryImportPath($path.'.sass'), - $this->tryImportPath($path.'.scss') + $this->tryImportPath($path . '.sass'), + $this->tryImportPath($path . '.scss') ); if ($result) { return $result; } - return $this->tryImportPath($path.'.css'); + return $this->tryImportPath($path . '.css'); } /** @@ -5943,7 +6020,7 @@ EOL; */ private function tryImportPath($path) { - $partial = dirname($path).'/_'.basename($path); + $partial = dirname($path) . '/_' . basename($path); $candidates = []; @@ -5969,7 +6046,7 @@ EOL; return null; } - return $this->checkImportPathConflicts($this->tryImportPathWithExtensions($path.'/index')); + return $this->checkImportPathConflicts($this->tryImportPathWithExtensions($path . '/index')); } /** @@ -5984,7 +6061,7 @@ EOL; } $normalizedPath = $path; - $normalizedRootDirectory = $this->rootDirectory.'/'; + $normalizedRootDirectory = $this->rootDirectory . '/'; if (\DIRECTORY_SEPARATOR === '\\') { $normalizedRootDirectory = str_replace('\\', '/', $normalizedRootDirectory); @@ -6371,8 +6448,6 @@ EOL; */ protected function sortNativeFunctionArgs($functionName, $prototypes, $args) { - static $parser = null; - if (! isset($prototypes)) { $keyArgs = []; $posArgs = []; @@ -6526,7 +6601,7 @@ EOL; * * @return array * - * @phpstan-param non-empty-list, rest_argument: string|null}> $prototypes + * @phpstan-param non-empty-array, rest_argument: string|null}> $prototypes * @phpstan-return array{arguments: list, rest_argument: string|null} */ private function selectFunctionPrototype(array $prototypes, $positional, array $names) @@ -6984,10 +7059,14 @@ EOL; return static::$null; } - if (is_numeric($value)) { + if (\is_int($value) || \is_float($value)) { return new Number($value, ''); } + if (is_numeric($value)) { + return new Number((float) $value, ''); + } + if ($value === '') { return static::$emptyString; } @@ -7675,9 +7754,9 @@ EOL; $b = min(1.0 - $w, $b); $rgb = $this->toRGB($hue, 100, 50); - for($i = 1; $i < 4; $i++) { - $rgb[$i] *= (1.0 - $w - $b); - $rgb[$i] = round($rgb[$i] + 255 * $w + 0.0001); + for ($i = 1; $i < 4; $i++) { + $rgb[$i] *= (1.0 - $w - $b); + $rgb[$i] = round($rgb[$i] + 255 * $w + 0.0001); } return $rgb; @@ -7704,7 +7783,6 @@ EOL; if ((int) $d === 0) { $h = 0; } else { - if ($red == $max) { $h = 60 * ($green - $blue) / $d; } elseif ($green == $max) { @@ -7714,7 +7792,7 @@ EOL; } } - return [Type::T_HWB, fmod($h, 360), $min / 255 * 100, 100 - $max / 255 *100]; + return [Type::T_HWB, fmod($h, 360), $min / 255 * 100, 100 - $max / 255 * 100]; } @@ -7923,7 +8001,13 @@ EOL; $scale = $operation === 'scale'; $change = $operation === 'change'; - /** @phpstan-var callable(string, float|int, bool=, bool=): (float|int|null) $getParam */ + /** + * @param string $name + * @param float|int $max + * @param bool $checkPercent + * @param bool $assertPercent + * @return float|int|null + */ $getParam = function ($name, $max, $checkPercent = false, $assertPercent = false) use (&$kwargs, $scale, $change) { if (!isset($kwargs[$name])) { return null; @@ -8065,7 +8149,7 @@ EOL; protected static $libChangeColor = ['color', 'kwargs...']; protected function libChangeColor($args) { - return $this->alterColor($args,'change', function ($base, $alter, $max) { + return $this->alterColor($args, 'change', function ($base, $alter, $max) { if ($alter === null) { return $base; } diff --git a/vendor/scssphp/scssphp/src/Node/Number.php b/vendor/scssphp/scssphp/src/Node/Number.php index 48e711f0..6c044587 100644 --- a/vendor/scssphp/scssphp/src/Node/Number.php +++ b/vendor/scssphp/scssphp/src/Node/Number.php @@ -33,7 +33,7 @@ use ScssPhp\ScssPhp\Util; * * @template-implements \ArrayAccess */ -class Number extends Node implements \ArrayAccess +class Number extends Node implements \ArrayAccess, \JsonSerializable { const PRECISION = 10; @@ -131,7 +131,7 @@ class Number extends Node implements \ArrayAccess } /** - * @return string[] + * @return list */ public function getNumeratorUnits() { @@ -139,13 +139,23 @@ class Number extends Node implements \ArrayAccess } /** - * @return string[] + * @return list */ public function getDenominatorUnits() { return $this->denominatorUnits; } + /** + * @return mixed + */ + #[\ReturnTypeWillChange] + public function jsonSerialize() + { + // Passing a compiler instance makes the method output a Sass representation instead of a CSS one, supporting full units. + return $this->output(new Compiler()); + } + /** * @return bool */ @@ -554,7 +564,7 @@ class Number extends Node implements \ArrayAccess try { return $this->coerceUnits($other, function ($num1, $num2) { - return round($num1,self::PRECISION) == round($num2, self::PRECISION); + return round($num1, self::PRECISION) == round($num2, self::PRECISION); }); } catch (SassScriptException $e) { return false; diff --git a/vendor/scssphp/scssphp/src/OutputStyle.php b/vendor/scssphp/scssphp/src/OutputStyle.php index c284639c..a1d8b425 100644 --- a/vendor/scssphp/scssphp/src/OutputStyle.php +++ b/vendor/scssphp/scssphp/src/OutputStyle.php @@ -1,9 +1,62 @@ saveEncoding(); $this->extractLineNumbers($buffer); + if ($this->utf8 && !preg_match('//u', $buffer)) { + $message = $this->sourceName ? 'Invalid UTF-8 file: ' . $this->sourceName : 'Invalid UTF-8 file'; + throw new ParserException($message); + } + $this->pushBlock(null); // root block $this->whitespace(); $this->pushBlock(null); @@ -305,8 +310,9 @@ class Parser * * @api * - * @param string $buffer - * @param string|array $out + * @param string $buffer + * @param mixed $out + * @param-out array|Number $out * * @return bool */ @@ -323,6 +329,13 @@ class Parser $list = $this->valueList($out); + if ($this->count !== \strlen($this->buffer)) { + $error = $this->parseError('Expected end of value'); + $message = 'Passing trailing content after the expression when parsing a value is deprecated since Scssphp 1.12.0 and will be an error in 2.0. ' . $error->getMessage(); + + @trigger_error($message, E_USER_DEPRECATED); + } + $this->restoreEncoding(); return $list; @@ -333,9 +346,9 @@ class Parser * * @api * - * @param string $buffer - * @param string|array $out - * @param bool $shouldValidate + * @param string $buffer + * @param array $out + * @param bool $shouldValidate * * @return bool */ @@ -383,10 +396,13 @@ class Parser $this->inParens = false; $this->eatWhiteDefault = true; $this->buffer = (string) $buffer; + $this->discardComments = true; $this->saveEncoding(); $this->extractLineNumbers($this->buffer); + $this->whitespace(); + $isMediaQuery = $this->mediaQueryList($out); $this->restoreEncoding(); @@ -1240,10 +1256,10 @@ class Parser /** * Assert a parsed part is plain CSS Valid * - * @param array|false $parsed + * @param array|Number|false $parsed * @param int $startPos * - * @return array + * @return array|Number * * @throws ParserException */ @@ -1273,10 +1289,10 @@ class Parser /** * Check a parsed element is plain CSS Valid * - * @param array $parsed + * @param array|Number|string $parsed * @param bool $allowExpression * - * @return array|false + * @return ($parsed is string ? string : ($parsed is Number ? Number : array|false)) */ protected function isPlainCssValidElement($parsed, $allowExpression = false) { @@ -1285,6 +1301,10 @@ class Parser return $parsed; } + if ($parsed instanceof Number) { + return $parsed; + } + if ( \in_array($parsed[0], [Type::T_FUNCTION, Type::T_FUNCTION_CALL]) && !\in_array($parsed[1], [ @@ -1678,9 +1698,9 @@ class Parser */ protected function appendComment($comment) { - assert($this->env !== null); - if (! $this->discardComments) { + assert($this->env !== null); + $this->env->comments[] = $comment; } } @@ -2079,8 +2099,9 @@ class Parser /** * Parse directive value list that considers $vars as keyword * - * @param array $out + * @param mixed $out * @param string|false $endChar + * @param-out array|Number $out * * @return bool * @@ -2143,7 +2164,8 @@ class Parser /** * Parse comma separated value list * - * @param array $out + * @param mixed $out + * @param-out array|Number $out * * @return bool */ @@ -2161,10 +2183,11 @@ class Parser * Parse a function call, where externals () are part of the call * and not of the value list * - * @param array $out + * @param mixed $out * @param bool $mandatoryEnclos * @param null|string $charAfter * @param null|bool $eatWhiteSp + * @param-out array|Number $out * * @return bool */ @@ -2200,7 +2223,8 @@ class Parser /** * Parse space separated value list * - * @param array $out + * @param mixed $out + * @param-out array|Number $out * * @return bool */ @@ -2212,10 +2236,11 @@ class Parser /** * Parse generic list * - * @param array $out + * @param mixed $out * @param string $parseItem The name of the method used to parse items * @param string $delim * @param bool $flatten + * @param-out ($flatten is false ? array : array|Number) $out * * @return bool */ @@ -2319,9 +2344,10 @@ class Parser /** * Parse expression * - * @param array $out + * @param mixed $out * @param bool $listOnly * @param bool $lookForExp + * @param-out array|Number $out * * @return bool * @@ -2386,10 +2412,11 @@ class Parser /** * Parse expression specifically checking for lists in parenthesis or brackets * - * @param array $out + * @param mixed $out * @param int $s * @param string $closingParen * @param string[] $allowedTypes + * @param-out array|Number $out * * @return bool * @@ -2448,10 +2475,10 @@ class Parser /** * Parse left-hand side of subexpression * - * @param array $lhs - * @param int $minP + * @param array|Number $lhs + * @param int $minP * - * @return array + * @return array|Number */ protected function expHelper($lhs, $minP) { @@ -2502,7 +2529,8 @@ class Parser /** * Parse value * - * @param array $out + * @param mixed $out + * @param-out array|Number $out * * @return bool */ @@ -2710,7 +2738,8 @@ class Parser /** * Parse parenthesized value * - * @param array $out + * @param mixed $out + * @param-out array|Number $out * * @return bool */ @@ -2782,7 +2811,8 @@ class Parser * Parse function call * * @param string $name - * @param array $func + * @param mixed $func + * @param-out array $func * * @return bool */ @@ -2885,7 +2915,8 @@ class Parser /** * Parse mixin/function definition argument list * - * @param array $out + * @param mixed $out + * @param-out list $out * * @return bool */ @@ -2947,7 +2978,8 @@ class Parser /** * Parse map * - * @param array $out + * @param mixed $out + * @param-out array $out * * @return bool */ @@ -2989,7 +3021,8 @@ class Parser /** * Parse color * - * @param array $out + * @param mixed $out + * @param-out array $out * * @return bool */ @@ -3015,7 +3048,8 @@ class Parser /** * Parse number with unit * - * @param array $unit + * @param mixed $unit + * @param-out Number $unit * * @return bool */ @@ -3221,11 +3255,12 @@ class Parser * Parse an unbounded string stopped by $end * * @param string $end - * @param array $out + * @param mixed $out * @param string $nestOpen * @param string $nestClose * @param bool $rtrim * @param string $disallow + * @param-out array $out * * @return bool */ @@ -3302,8 +3337,9 @@ class Parser /** * Parser interpolation * - * @param string|array $out - * @param bool $lookWhite save information about whitespace before and after + * @param mixed $out + * @param bool $lookWhite save information about whitespace before and after + * @param-out array $out * * @return bool */ @@ -3837,7 +3873,8 @@ class Parser /** * Parse a variable * - * @param array $out + * @param mixed $out + * @param-out array{Type::*, string} $out * * @return bool */ @@ -3866,9 +3903,10 @@ class Parser /** * Parse a keyword * - * @param string $word - * @param bool $eatWhitespace - * @param bool $inSelector + * @param mixed $word + * @param bool $eatWhitespace + * @param bool $inSelector + * @param-out string $word * * @return bool */ @@ -3984,7 +4022,8 @@ class Parser /** * Parse a url * - * @param array $out + * @param mixed $out + * @param-out array $out * * @return bool */ @@ -3994,10 +4033,10 @@ class Parser $s = $this->count; if ( - ($this->string($out) || $this->spaceList($out)) && + ($this->string($inner) || $this->spaceList($inner)) && $this->matchChar(')') ) { - $out = [Type::T_STRING, '', ['url(', $out, ')']]; + $out = [Type::T_STRING, '', ['url(', $inner, ')']]; return true; } @@ -4040,7 +4079,7 @@ class Parser /** * Strip assignment flag from the list * - * @param array $value + * @param array|Number $value * * @return string[] */ diff --git a/vendor/scssphp/scssphp/src/Type.php b/vendor/scssphp/scssphp/src/Type.php index d4308878..2f8ab650 100644 --- a/vendor/scssphp/scssphp/src/Type.php +++ b/vendor/scssphp/scssphp/src/Type.php @@ -95,6 +95,9 @@ class Type * @internal */ const T_FOR = 'for'; + /** + * @internal + */ const T_FUNCTION = 'function'; /** * @internal diff --git a/vendor/scssphp/scssphp/src/Version.php b/vendor/scssphp/scssphp/src/Version.php index d604a505..45fc9835 100644 --- a/vendor/scssphp/scssphp/src/Version.php +++ b/vendor/scssphp/scssphp/src/Version.php @@ -19,5 +19,5 @@ namespace ScssPhp\ScssPhp; */ class Version { - const VERSION = '1.11.0'; + const VERSION = '1.13.0'; }