diff --git a/.env b/.env index 6fdd3fa..0eb51ec 100644 --- a/.env +++ b/.env @@ -20,15 +20,19 @@ APP_SECRET=947e1df5a425c9dc0aee2e509af2db47 APP_DEBUG=1 -###> symfony/mailer ### -# MAILER_DSN=smtp://localhost -###< symfony/mailer ### +STRIPE_KEY='pk_test_51JkzOcLD2VW4wYkT6BEOwEk3x88YMimWDxd5TR66aYHPTRMc5wmyvpWKxKThtwMkB3vxUxQ3NFeLghkwAaamYAQY0008WRANkG' +STRIPE_SECRET='sk_test_51JkzOcLD2VW4wYkTsdQND4UgEpd5tWEpZUMhMofpCbf0xiwX1eyQRTlp4jy1M4fRjVPzepD0hPNOBGykAWEHm2yw00jlQPrHp1' + +###> symfony/google-mailer ### +MAILER_DSN=gmail+smtp://bmaconsultingnet:ssdvezqjqmrcdwin@default +###< symfony/google-mailer ### ###> doctrine/doctrine-bundle ### # Format described at https://www.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/configuration.html#connecting-using-a-url # IMPORTANT: You MUST configure your server version, either here or in config/packages/doctrine.yaml # # DATABASE_URL="sqlite:///%kernel.project_dir%/var/data.db" -DATABASE_URL="mysql://root:root@127.0.0.1:3306/ecommerce?serverVersion=8.0" +DATABASE_URL="mysql://root:Root@123@localhost:3306/ecommerce?serverVersion=8.0" # DATABASE_URL="postgresql://db_user:db_password@127.0.0.1:5432/db_name?serverVersion=13&charset=utf8" ###< doctrine/doctrine-bundle ### + diff --git a/.gitignore b/.gitignore index de0aaef..2df6b44 100644 --- a/.gitignore +++ b/.gitignore @@ -17,3 +17,10 @@ /phpunit.xml .phpunit.result.cache ###< phpunit/phpunit ### + +###> todo steps ### +/todo.txt + +###> env file ### +.env + diff --git a/composer.json b/composer.json index 129a86e..276e61c 100644 --- a/composer.json +++ b/composer.json @@ -12,43 +12,49 @@ "doctrine/doctrine-bundle": "^2.4", "doctrine/doctrine-migrations-bundle": "^3.1", "doctrine/orm": "^2.9", + "easycorp/easyadmin-bundle": "^4.9", + "knplabs/knp-paginator-bundle": "^5.8", "phpdocumentor/reflection-docblock": "^5.2", "sensio/framework-extra-bundle": "^6.1", - "symfony/asset": "5.3.*", - "symfony/console": "5.3.*", - "symfony/dotenv": "5.3.*", - "symfony/expression-language": "5.3.*", + "stripe/stripe-php": "^10.12", + "symfony/asset": "5.4.*", + "symfony/console": "5.4.*", + "symfony/dotenv": "5.4.*", + "symfony/expression-language": "5.4.*", "symfony/flex": "^1.3.1", - "symfony/form": "5.3.*", - "symfony/framework-bundle": "5.3.*", - "symfony/http-client": "5.3.*", - "symfony/intl": "5.3.*", - "symfony/mailer": "5.3.*", - "symfony/mime": "5.3.*", + "symfony/form": "5.4.*", + "symfony/framework-bundle": "5.4.*", + "symfony/google-mailer": "5.4.*", + "symfony/http-client": "5.4.*", + "symfony/intl": "5.4.*", + "symfony/mailer": "5.4.*", + "symfony/mime": "5.4.*", "symfony/monolog-bundle": "^3.1", - "symfony/notifier": "5.3.*", - "symfony/process": "5.3.*", - "symfony/property-access": "5.3.*", - "symfony/property-info": "5.3.*", - "symfony/proxy-manager-bridge": "5.3.*", - "symfony/runtime": "5.3.*", - "symfony/security-bundle": "5.3.*", - "symfony/serializer": "5.3.*", - "symfony/string": "5.3.*", - "symfony/translation": "5.3.*", + "symfony/notifier": "5.4.*", + "symfony/process": "5.4.*", + "symfony/property-access": "5.4.*", + "symfony/property-info": "5.4.*", + "symfony/proxy-manager-bridge": "5.4.*", + "symfony/runtime": "5.4.*", + "symfony/security-bundle": "5.4.*", + "symfony/serializer": "5.4.*", + "symfony/string": "5.4.*", + "symfony/translation": "5.4.*", + "symfony/twig-bridge": "5.4.*", "symfony/twig-bundle": "^5.3", - "symfony/validator": "5.3.*", - "symfony/web-link": "5.3.*", - "symfony/yaml": "5.3.*", + "symfony/validator": "5.4.*", + "symfony/web-link": "5.4.*", + "symfony/yaml": "5.4.*", "twig/extra-bundle": "^2.12|^3.0", "twig/twig": "^2.12|^3.0" }, "require-dev": { + "doctrine/doctrine-fixtures-bundle": "^3.4", "phpunit/phpunit": "^9.5", "symfony/browser-kit": "^5.3", "symfony/css-selector": "^5.3", "symfony/debug-bundle": "^5.3", - "symfony/maker-bundle": "^1.0", + "symfony/maker-bundle": "1.43", "symfony/phpunit-bridge": "^5.3", "symfony/stopwatch": "^5.3", "symfony/var-dumper": "^5.3", @@ -59,7 +65,11 @@ "preferred-install": { "*": "dist" }, - "sort-packages": true + "sort-packages": true, + "allow-plugins": { + "symfony/flex": true, + "symfony/runtime": true + } }, "autoload": { "psr-4": { @@ -94,7 +104,7 @@ "extra": { "symfony": { "allow-contrib": false, - "require": "5.3.*" + "require": "5.4.*" } } } diff --git a/composer.lock b/composer.lock index 9620aa8..7cea9e1 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": "05166d01e6bf577938523c038634225a", + "content-hash": "27def83471c89346cd95ee2e4a3101af", "packages": [ { "name": "composer/package-versions-deprecated", @@ -81,30 +81,34 @@ }, { "name": "doctrine/annotations", - "version": "1.13.2", + "version": "1.14.4", "source": { "type": "git", "url": "https://github.com/doctrine/annotations.git", - "reference": "5b668aef16090008790395c02c893b1ba13f7e08" + "reference": "253dca476f70808a5aeed3a47cc2cc88c5cab915" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/annotations/zipball/5b668aef16090008790395c02c893b1ba13f7e08", - "reference": "5b668aef16090008790395c02c893b1ba13f7e08", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/253dca476f70808a5aeed3a47cc2cc88c5cab915", + "reference": "253dca476f70808a5aeed3a47cc2cc88c5cab915", "shasum": "" }, "require": { - "doctrine/lexer": "1.*", + "doctrine/lexer": "^1 || ^2", "ext-tokenizer": "*", "php": "^7.1 || ^8.0", "psr/cache": "^1 || ^2 || ^3" }, "require-dev": { "doctrine/cache": "^1.11 || ^2.0", - "doctrine/coding-standard": "^6.0 || ^8.1", - "phpstan/phpstan": "^0.12.20", - "phpunit/phpunit": "^7.5 || ^8.0 || ^9.1.5", - "symfony/cache": "^4.4 || ^5.2" + "doctrine/coding-standard": "^9 || ^12", + "phpstan/phpstan": "~1.4.10 || ^1.10.28", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "symfony/cache": "^4.4 || ^5.4 || ^6.4 || ^7", + "vimeo/psalm": "^4.30 || ^5.14" + }, + "suggest": { + "php": "PHP 8.0 or higher comes with attributes, a native replacement for annotations" }, "type": "library", "autoload": { @@ -147,22 +151,22 @@ ], "support": { "issues": "https://github.com/doctrine/annotations/issues", - "source": "https://github.com/doctrine/annotations/tree/1.13.2" + "source": "https://github.com/doctrine/annotations/tree/1.14.4" }, - "time": "2021-08-05T19:00:23+00:00" + "time": "2024-09-05T10:15:52+00:00" }, { "name": "doctrine/cache", - "version": "1.12.1", + "version": "2.2.0", "source": { "type": "git", "url": "https://github.com/doctrine/cache.git", - "reference": "4cf401d14df219fa6f38b671f5493449151c9ad8" + "reference": "1ca8f21980e770095a31456042471a57bc4c68fb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/cache/zipball/4cf401d14df219fa6f38b671f5493449151c9ad8", - "reference": "4cf401d14df219fa6f38b671f5493449151c9ad8", + "url": "https://api.github.com/repos/doctrine/cache/zipball/1ca8f21980e770095a31456042471a57bc4c68fb", + "reference": "1ca8f21980e770095a31456042471a57bc4c68fb", "shasum": "" }, "require": { @@ -172,18 +176,12 @@ "doctrine/common": ">2.2,<2.4" }, "require-dev": { - "alcaeus/mongo-php-adapter": "^1.1", "cache/integration-tests": "dev-master", - "doctrine/coding-standard": "^8.0", - "mongodb/mongodb": "^1.1", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", - "predis/predis": "~1.0", + "doctrine/coding-standard": "^9", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", "psr/cache": "^1.0 || ^2.0 || ^3.0", - "symfony/cache": "^4.4 || ^5.2 || ^6.0@dev", - "symfony/var-exporter": "^4.4 || ^5.2 || ^6.0@dev" - }, - "suggest": { - "alcaeus/mongo-php-adapter": "Required to use legacy MongoDB driver" + "symfony/cache": "^4.4 || ^5.4 || ^6", + "symfony/var-exporter": "^4.4 || ^5.4 || ^6" }, "type": "library", "autoload": { @@ -232,7 +230,7 @@ ], "support": { "issues": "https://github.com/doctrine/cache/issues", - "source": "https://github.com/doctrine/cache/tree/1.12.1" + "source": "https://github.com/doctrine/cache/tree/2.2.0" }, "funding": [ { @@ -248,35 +246,38 @@ "type": "tidelift" } ], - "time": "2021-07-17T14:39:21+00:00" + "time": "2022-05-20T20:07:39+00:00" }, { "name": "doctrine/collections", - "version": "1.6.8", + "version": "2.2.2", "source": { "type": "git", "url": "https://github.com/doctrine/collections.git", - "reference": "1958a744696c6bb3bb0d28db2611dc11610e78af" + "reference": "d8af7f248c74f195f7347424600fd9e17b57af59" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/collections/zipball/1958a744696c6bb3bb0d28db2611dc11610e78af", - "reference": "1958a744696c6bb3bb0d28db2611dc11610e78af", + "url": "https://api.github.com/repos/doctrine/collections/zipball/d8af7f248c74f195f7347424600fd9e17b57af59", + "reference": "d8af7f248c74f195f7347424600fd9e17b57af59", "shasum": "" }, "require": { - "php": "^7.1.3 || ^8.0" + "doctrine/deprecations": "^1", + "php": "^8.1" }, "require-dev": { - "doctrine/coding-standard": "^9.0", - "phpstan/phpstan": "^0.12", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.1.5", - "vimeo/psalm": "^4.2.1" + "doctrine/coding-standard": "^12", + "ext-json": "*", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-phpunit": "^1.0", + "phpunit/phpunit": "^10.5", + "vimeo/psalm": "^5.11" }, "type": "library", "autoload": { "psr-4": { - "Doctrine\\Common\\Collections\\": "lib/Doctrine/Common/Collections" + "Doctrine\\Common\\Collections\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -315,41 +316,56 @@ ], "support": { "issues": "https://github.com/doctrine/collections/issues", - "source": "https://github.com/doctrine/collections/tree/1.6.8" + "source": "https://github.com/doctrine/collections/tree/2.2.2" }, - "time": "2021-08-10T18:51:53+00:00" + "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%2Fcollections", + "type": "tidelift" + } + ], + "time": "2024-04-18T06:56:21+00:00" }, { "name": "doctrine/common", - "version": "3.1.2", + "version": "3.4.5", "source": { "type": "git", "url": "https://github.com/doctrine/common.git", - "reference": "a036d90c303f3163b5be8b8fde9b6755b2be4a3a" + "reference": "6c8fef961f67b8bc802ce3e32e3ebd1022907286" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/common/zipball/a036d90c303f3163b5be8b8fde9b6755b2be4a3a", - "reference": "a036d90c303f3163b5be8b8fde9b6755b2be4a3a", + "url": "https://api.github.com/repos/doctrine/common/zipball/6c8fef961f67b8bc802ce3e32e3ebd1022907286", + "reference": "6c8fef961f67b8bc802ce3e32e3ebd1022907286", "shasum": "" }, "require": { - "doctrine/persistence": "^2.0", + "doctrine/persistence": "^2.0 || ^3.0", "php": "^7.1 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^6.0 || ^8.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", + "doctrine/coding-standard": "^9.0 || ^10.0", + "doctrine/collections": "^1", + "phpstan/phpstan": "^1.4.1", + "phpstan/phpstan-phpunit": "^1", "phpunit/phpunit": "^7.5.20 || ^8.5 || ^9.0", "squizlabs/php_codesniffer": "^3.0", - "symfony/phpunit-bridge": "^4.0.5", + "symfony/phpunit-bridge": "^6.1", "vimeo/psalm": "^4.4" }, "type": "library", "autoload": { "psr-4": { - "Doctrine\\Common\\": "lib/Doctrine/Common" + "Doctrine\\Common\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -391,7 +407,7 @@ ], "support": { "issues": "https://github.com/doctrine/common/issues", - "source": "https://github.com/doctrine/common/tree/3.1.2" + "source": "https://github.com/doctrine/common/tree/3.4.5" }, "funding": [ { @@ -407,38 +423,44 @@ "type": "tidelift" } ], - "time": "2021-02-10T20:18:51+00:00" + "time": "2024-10-08T15:53:43+00:00" }, { "name": "doctrine/dbal", - "version": "2.13.2", + "version": "3.9.1", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "8dd39d2ead4409ce652fd4f02621060f009ea5e4" + "reference": "d7dc08f98cba352b2bab5d32c5e58f7e745c11a7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/8dd39d2ead4409ce652fd4f02621060f009ea5e4", - "reference": "8dd39d2ead4409ce652fd4f02621060f009ea5e4", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/d7dc08f98cba352b2bab5d32c5e58f7e745c11a7", + "reference": "d7dc08f98cba352b2bab5d32c5e58f7e745c11a7", "shasum": "" }, "require": { - "doctrine/cache": "^1.0|^2.0", - "doctrine/deprecations": "^0.5.3", - "doctrine/event-manager": "^1.0", - "ext-pdo": "*", - "php": "^7.1 || ^8" + "composer-runtime-api": "^2", + "doctrine/cache": "^1.11|^2.0", + "doctrine/deprecations": "^0.5.3|^1", + "doctrine/event-manager": "^1|^2", + "php": "^7.4 || ^8.0", + "psr/cache": "^1|^2|^3", + "psr/log": "^1|^2|^3" }, "require-dev": { - "doctrine/coding-standard": "9.0.0", - "jetbrains/phpstorm-stubs": "2020.2", - "phpstan/phpstan": "0.12.81", - "phpunit/phpunit": "^7.5.20|^8.5|9.5.5", - "squizlabs/php_codesniffer": "3.6.0", - "symfony/cache": "^4.4", - "symfony/console": "^2.0.5|^3.0|^4.0|^5.0", - "vimeo/psalm": "4.6.4" + "doctrine/coding-standard": "12.0.0", + "fig/log-test": "^1", + "jetbrains/phpstorm-stubs": "2023.1", + "phpstan/phpstan": "1.12.0", + "phpstan/phpstan-strict-rules": "^1.6", + "phpunit/phpunit": "9.6.20", + "psalm/plugin-phpunit": "0.18.4", + "slevomat/coding-standard": "8.13.1", + "squizlabs/php_codesniffer": "3.10.2", + "symfony/cache": "^5.4|^6.0|^7.0", + "symfony/console": "^4.4|^5.4|^6.0|^7.0", + "vimeo/psalm": "4.30.0" }, "suggest": { "symfony/console": "For helpful console commands such as SQL execution and import of files." @@ -449,7 +471,7 @@ "type": "library", "autoload": { "psr-4": { - "Doctrine\\DBAL\\": "lib/Doctrine/DBAL" + "Doctrine\\DBAL\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -492,14 +514,13 @@ "queryobject", "sasql", "sql", - "sqlanywhere", "sqlite", "sqlserver", "sqlsrv" ], "support": { "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/2.13.2" + "source": "https://github.com/doctrine/dbal/tree/3.9.1" }, "funding": [ { @@ -515,29 +536,33 @@ "type": "tidelift" } ], - "time": "2021-06-18T21:48:39+00:00" + "time": "2024-09-01T13:49:23+00:00" }, { "name": "doctrine/deprecations", - "version": "v0.5.3", + "version": "1.1.3", "source": { "type": "git", "url": "https://github.com/doctrine/deprecations.git", - "reference": "9504165960a1f83cc1480e2be1dd0a0478561314" + "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/deprecations/zipball/9504165960a1f83cc1480e2be1dd0a0478561314", - "reference": "9504165960a1f83cc1480e2be1dd0a0478561314", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab", + "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab", "shasum": "" }, "require": { - "php": "^7.1|^8.0" + "php": "^7.1 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^6.0|^7.0|^8.0", - "phpunit/phpunit": "^7.0|^8.0|^9.0", - "psr/log": "^1.0" + "doctrine/coding-standard": "^9", + "phpstan/phpstan": "1.4.10 || 1.10.15", + "phpstan/phpstan-phpunit": "^1.0", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "psalm/plugin-phpunit": "0.18.4", + "psr/log": "^1 || ^2 || ^3", + "vimeo/psalm": "4.30.0 || 5.12.0" }, "suggest": { "psr/log": "Allows logging deprecations via PSR-3 logger implementation" @@ -556,60 +581,68 @@ "homepage": "https://www.doctrine-project.org/", "support": { "issues": "https://github.com/doctrine/deprecations/issues", - "source": "https://github.com/doctrine/deprecations/tree/v0.5.3" + "source": "https://github.com/doctrine/deprecations/tree/1.1.3" }, - "time": "2021-03-21T12:59:47+00:00" + "time": "2024-01-30T19:34:25+00:00" }, { "name": "doctrine/doctrine-bundle", - "version": "2.4.2", + "version": "2.13.0", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineBundle.git", - "reference": "4202ce675d29e70a8b9ee763bec021b6f44caccb" + "reference": "ca59d84b8e63143ce1aed90cdb333ba329d71563" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/4202ce675d29e70a8b9ee763bec021b6f44caccb", - "reference": "4202ce675d29e70a8b9ee763bec021b6f44caccb", + "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/ca59d84b8e63143ce1aed90cdb333ba329d71563", + "reference": "ca59d84b8e63143ce1aed90cdb333ba329d71563", "shasum": "" }, "require": { "doctrine/cache": "^1.11 || ^2.0", - "doctrine/dbal": "^2.9.0|^3.0", - "doctrine/persistence": "^1.3.3|^2.0", + "doctrine/dbal": "^3.7.0 || ^4.0", + "doctrine/persistence": "^2.2 || ^3", "doctrine/sql-formatter": "^1.0.1", - "php": "^7.1 || ^8.0", - "symfony/cache": "^4.3.3|^5.0|^6.0", - "symfony/config": "^4.4.3|^5.0|^6.0", - "symfony/console": "^3.4.30|^4.3.3|^5.0|^6.0", - "symfony/dependency-injection": "^4.3.3|^5.0|^6.0", - "symfony/deprecation-contracts": "^2.1", - "symfony/doctrine-bridge": "^4.4.22|^5.2.7|^6.0", - "symfony/framework-bundle": "^3.4.30|^4.3.3|^5.0|^6.0", - "symfony/service-contracts": "^1.1.1|^2.0" + "php": "^7.4 || ^8.0", + "symfony/cache": "^5.4 || ^6.0 || ^7.0", + "symfony/config": "^5.4 || ^6.0 || ^7.0", + "symfony/console": "^5.4 || ^6.0 || ^7.0", + "symfony/dependency-injection": "^5.4 || ^6.0 || ^7.0", + "symfony/deprecation-contracts": "^2.1 || ^3", + "symfony/doctrine-bridge": "^5.4.19 || ^6.0.7 || ^7.0", + "symfony/framework-bundle": "^5.4 || ^6.0 || ^7.0", + "symfony/polyfill-php80": "^1.15", + "symfony/service-contracts": "^1.1.1 || ^2.0 || ^3" }, "conflict": { - "doctrine/orm": "<2.9", - "twig/twig": "<1.34|>=2.0,<2.4" + "doctrine/annotations": ">=3.0", + "doctrine/orm": "<2.17 || >=4.0", + "twig/twig": "<1.34 || >=2.0 <2.4" }, "require-dev": { - "doctrine/coding-standard": "^9.0", - "doctrine/orm": "^2.9", + "doctrine/annotations": "^1 || ^2", + "doctrine/coding-standard": "^12", + "doctrine/deprecations": "^1.0", + "doctrine/orm": "^2.17 || ^3.0", "friendsofphp/proxy-manager-lts": "^1.0", - "phpunit/phpunit": "^7.5 || ^8.0 || ^9.3", - "psalm/plugin-phpunit": "^0.15.1", - "psalm/plugin-symfony": "^2.3.0", - "symfony/phpunit-bridge": "^5.2|^6.0", - "symfony/property-info": "^4.3.3|^5.0|^6.0", - "symfony/proxy-manager-bridge": "^3.4|^4.3.3|^5.0|^6.0", - "symfony/security-bundle": "^4.4|^5.0|^6.0", - "symfony/twig-bridge": "^3.4.30|^4.3.3|^5.0|^6.0", - "symfony/validator": "^3.4.30|^4.3.3|^5.0|^6.0", - "symfony/web-profiler-bundle": "^3.4.30|^4.3.3|^5.0|^6.0", - "symfony/yaml": "^3.4.30|^4.3.3|^5.0|^6.0", - "twig/twig": "^1.34|^2.12|^3.0", - "vimeo/psalm": "^4.7" + "phpunit/phpunit": "^9.5.26", + "psalm/plugin-phpunit": "^0.18.4", + "psalm/plugin-symfony": "^5", + "psr/log": "^1.1.4 || ^2.0 || ^3.0", + "symfony/phpunit-bridge": "^6.1 || ^7.0", + "symfony/property-info": "^5.4 || ^6.0 || ^7.0", + "symfony/proxy-manager-bridge": "^5.4 || ^6.0 || ^7.0", + "symfony/security-bundle": "^5.4 || ^6.0 || ^7.0", + "symfony/stopwatch": "^5.4 || ^6.0 || ^7.0", + "symfony/string": "^5.4 || ^6.0 || ^7.0", + "symfony/twig-bridge": "^5.4 || ^6.0 || ^7.0", + "symfony/validator": "^5.4 || ^6.0 || ^7.0", + "symfony/var-exporter": "^5.4 || ^6.2 || ^7.0", + "symfony/web-profiler-bundle": "^5.4 || ^6.0 || ^7.0", + "symfony/yaml": "^5.4 || ^6.0 || ^7.0", + "twig/twig": "^1.34 || ^2.12 || ^3.0", + "vimeo/psalm": "^5.15" }, "suggest": { "doctrine/orm": "The Doctrine ORM integration is optional in the bundle.", @@ -619,7 +652,7 @@ "type": "symfony-bundle", "autoload": { "psr-4": { - "Doctrine\\Bundle\\DoctrineBundle\\": "" + "Doctrine\\Bundle\\DoctrineBundle\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -637,15 +670,15 @@ }, { "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" + "homepage": "https://symfony.com/contributors" }, { "name": "Doctrine Project", - "homepage": "http://www.doctrine-project.org/" + "homepage": "https://www.doctrine-project.org/" } ], "description": "Symfony DoctrineBundle", - "homepage": "http://www.doctrine-project.org", + "homepage": "https://www.doctrine-project.org", "keywords": [ "database", "dbal", @@ -654,7 +687,7 @@ ], "support": { "issues": "https://github.com/doctrine/DoctrineBundle/issues", - "source": "https://github.com/doctrine/DoctrineBundle/tree/2.4.2" + "source": "https://github.com/doctrine/DoctrineBundle/tree/2.13.0" }, "funding": [ { @@ -670,37 +703,45 @@ "type": "tidelift" } ], - "time": "2021-06-05T13:40:39+00:00" + "time": "2024-09-01T09:46:40+00:00" }, { "name": "doctrine/doctrine-migrations-bundle", - "version": "3.1.1", + "version": "3.3.1", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineMigrationsBundle.git", - "reference": "91f0a5e2356029575f3038432cc188b12f9d5da5" + "reference": "715b62c31a5894afcb2b2cdbbc6607d7dd0580c0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineMigrationsBundle/zipball/91f0a5e2356029575f3038432cc188b12f9d5da5", - "reference": "91f0a5e2356029575f3038432cc188b12f9d5da5", + "url": "https://api.github.com/repos/doctrine/DoctrineMigrationsBundle/zipball/715b62c31a5894afcb2b2cdbbc6607d7dd0580c0", + "reference": "715b62c31a5894afcb2b2cdbbc6607d7dd0580c0", "shasum": "" }, "require": { - "doctrine/doctrine-bundle": "~1.0|~2.0", - "doctrine/migrations": "^3.1", + "doctrine/doctrine-bundle": "^2.4", + "doctrine/migrations": "^3.2", "php": "^7.2|^8.0", - "symfony/framework-bundle": "~3.4|~4.0|~5.0" + "symfony/deprecation-contracts": "^2.1 || ^3", + "symfony/framework-bundle": "^5.4 || ^6.0 || ^7.0" }, "require-dev": { - "doctrine/coding-standard": "^8.0", - "doctrine/orm": "^2.6", - "doctrine/persistence": "^1.3||^2.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-deprecation-rules": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpunit/phpunit": "^7.0|^8.0|^9.0" + "composer/semver": "^3.0", + "doctrine/coding-standard": "^12", + "doctrine/orm": "^2.6 || ^3", + "doctrine/persistence": "^2.0 || ^3 ", + "phpstan/phpstan": "^1.4", + "phpstan/phpstan-deprecation-rules": "^1", + "phpstan/phpstan-phpunit": "^1", + "phpstan/phpstan-strict-rules": "^1.1", + "phpstan/phpstan-symfony": "^1.3", + "phpunit/phpunit": "^8.5|^9.5", + "psalm/plugin-phpunit": "^0.18.4", + "psalm/plugin-symfony": "^3 || ^5", + "symfony/phpunit-bridge": "^6.3 || ^7", + "symfony/var-exporter": "^5.4 || ^6 || ^7", + "vimeo/psalm": "^4.30 || ^5.15" }, "type": "symfony-bundle", "autoload": { @@ -722,11 +763,11 @@ }, { "name": "Doctrine Project", - "homepage": "http://www.doctrine-project.org" + "homepage": "https://www.doctrine-project.org" }, { "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" + "homepage": "https://symfony.com/contributors" } ], "description": "Symfony DoctrineMigrationsBundle", @@ -738,7 +779,7 @@ ], "support": { "issues": "https://github.com/doctrine/DoctrineMigrationsBundle/issues", - "source": "https://github.com/doctrine/DoctrineMigrationsBundle/tree/3.1.1" + "source": "https://github.com/doctrine/DoctrineMigrationsBundle/tree/3.3.1" }, "funding": [ { @@ -754,41 +795,39 @@ "type": "tidelift" } ], - "time": "2021-04-10T16:48:53+00:00" + "time": "2024-05-14T20:32:18+00:00" }, { "name": "doctrine/event-manager", - "version": "1.1.1", + "version": "1.2.0", "source": { "type": "git", "url": "https://github.com/doctrine/event-manager.git", - "reference": "41370af6a30faa9dc0368c4a6814d596e81aba7f" + "reference": "95aa4cb529f1e96576f3fda9f5705ada4056a520" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/event-manager/zipball/41370af6a30faa9dc0368c4a6814d596e81aba7f", - "reference": "41370af6a30faa9dc0368c4a6814d596e81aba7f", + "url": "https://api.github.com/repos/doctrine/event-manager/zipball/95aa4cb529f1e96576f3fda9f5705ada4056a520", + "reference": "95aa4cb529f1e96576f3fda9f5705ada4056a520", "shasum": "" }, "require": { + "doctrine/deprecations": "^0.5.3 || ^1", "php": "^7.1 || ^8.0" }, "conflict": { - "doctrine/common": "<2.9@dev" + "doctrine/common": "<2.9" }, "require-dev": { - "doctrine/coding-standard": "^6.0", - "phpunit/phpunit": "^7.0" + "doctrine/coding-standard": "^9 || ^10", + "phpstan/phpstan": "~1.4.10 || ^1.8.8", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "vimeo/psalm": "^4.24" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, "autoload": { "psr-4": { - "Doctrine\\Common\\": "lib/Doctrine/Common" + "Doctrine\\Common\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -832,7 +871,7 @@ ], "support": { "issues": "https://github.com/doctrine/event-manager/issues", - "source": "https://github.com/doctrine/event-manager/tree/1.1.x" + "source": "https://github.com/doctrine/event-manager/tree/1.2.0" }, "funding": [ { @@ -848,38 +887,34 @@ "type": "tidelift" } ], - "time": "2020-05-29T18:28:51+00:00" + "time": "2022-10-12T20:51:15+00:00" }, { "name": "doctrine/inflector", - "version": "2.0.3", + "version": "2.0.10", "source": { "type": "git", "url": "https://github.com/doctrine/inflector.git", - "reference": "9cf661f4eb38f7c881cac67c75ea9b00bf97b210" + "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/9cf661f4eb38f7c881cac67c75ea9b00bf97b210", - "reference": "9cf661f4eb38f7c881cac67c75ea9b00bf97b210", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/5817d0659c5b50c9b950feb9af7b9668e2c436bc", + "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc", "shasum": "" }, "require": { "php": "^7.2 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^7.0", - "phpstan/phpstan": "^0.11", - "phpstan/phpstan-phpunit": "^0.11", - "phpstan/phpstan-strict-rules": "^0.11", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" + "doctrine/coding-standard": "^11.0", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-phpunit": "^1.1", + "phpstan/phpstan-strict-rules": "^1.3", + "phpunit/phpunit": "^8.5 || ^9.5", + "vimeo/psalm": "^4.25 || ^5.4" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, "autoload": { "psr-4": { "Doctrine\\Inflector\\": "lib/Doctrine/Inflector" @@ -927,7 +962,7 @@ ], "support": { "issues": "https://github.com/doctrine/inflector/issues", - "source": "https://github.com/doctrine/inflector/tree/2.0.x" + "source": "https://github.com/doctrine/inflector/tree/2.0.10" }, "funding": [ { @@ -943,33 +978,34 @@ "type": "tidelift" } ], - "time": "2020-05-29T15:13:26+00:00" + "time": "2024-02-18T20:23:39+00:00" }, { "name": "doctrine/instantiator", - "version": "1.4.0", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" + "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/c6222283fa3f4ac679f8b9ced9a4e23f163e80d0", + "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0" + "php": "^8.1" }, "require-dev": { - "doctrine/coding-standard": "^8.0", + "doctrine/coding-standard": "^11", "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" + "phpbench/phpbench": "^1.2", + "phpstan/phpstan": "^1.9.4", + "phpstan/phpstan-phpunit": "^1.3", + "phpunit/phpunit": "^9.5.27", + "vimeo/psalm": "^5.4" }, "type": "library", "autoload": { @@ -996,7 +1032,7 @@ ], "support": { "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.0" + "source": "https://github.com/doctrine/instantiator/tree/2.0.0" }, "funding": [ { @@ -1012,39 +1048,37 @@ "type": "tidelift" } ], - "time": "2020-11-10T18:47:58+00:00" + "time": "2022-12-30T00:23:10+00:00" }, { "name": "doctrine/lexer", - "version": "1.2.1", + "version": "2.1.1", "source": { "type": "git", "url": "https://github.com/doctrine/lexer.git", - "reference": "e864bbf5904cb8f5bb334f99209b48018522f042" + "reference": "861c870e8b75f7c8f69c146c7f89cc1c0f1b49b6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/e864bbf5904cb8f5bb334f99209b48018522f042", - "reference": "e864bbf5904cb8f5bb334f99209b48018522f042", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/861c870e8b75f7c8f69c146c7f89cc1c0f1b49b6", + "reference": "861c870e8b75f7c8f69c146c7f89cc1c0f1b49b6", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0" + "doctrine/deprecations": "^1.0", + "php": "^7.1 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^6.0", - "phpstan/phpstan": "^0.11.8", - "phpunit/phpunit": "^8.2" + "doctrine/coding-standard": "^9 || ^12", + "phpstan/phpstan": "^1.3", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6", + "psalm/plugin-phpunit": "^0.18.3", + "vimeo/psalm": "^4.11 || ^5.21" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2.x-dev" - } - }, "autoload": { "psr-4": { - "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" + "Doctrine\\Common\\Lexer\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -1076,7 +1110,7 @@ ], "support": { "issues": "https://github.com/doctrine/lexer/issues", - "source": "https://github.com/doctrine/lexer/tree/1.2.1" + "source": "https://github.com/doctrine/lexer/tree/2.1.1" }, "funding": [ { @@ -1092,49 +1126,52 @@ "type": "tidelift" } ], - "time": "2020-05-25T17:44:05+00:00" + "time": "2024-02-05T11:35:39+00:00" }, { "name": "doctrine/migrations", - "version": "3.2.1", + "version": "3.8.1", "source": { "type": "git", "url": "https://github.com/doctrine/migrations.git", - "reference": "818e31703b4fb353c0c23caa714273fc64efa675" + "reference": "7760fbd0b7cb58bfb50415505a7bab821adf0877" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/migrations/zipball/818e31703b4fb353c0c23caa714273fc64efa675", - "reference": "818e31703b4fb353c0c23caa714273fc64efa675", + "url": "https://api.github.com/repos/doctrine/migrations/zipball/7760fbd0b7cb58bfb50415505a7bab821adf0877", + "reference": "7760fbd0b7cb58bfb50415505a7bab821adf0877", "shasum": "" }, "require": { - "composer/package-versions-deprecated": "^1.8", - "doctrine/dbal": "^2.11", - "doctrine/deprecations": "^0.5.3", - "doctrine/event-manager": "^1.0", - "friendsofphp/proxy-manager-lts": "^1.0", - "php": "^7.2 || ^8.0", + "composer-runtime-api": "^2", + "doctrine/dbal": "^3.6 || ^4", + "doctrine/deprecations": "^0.5.3 || ^1", + "doctrine/event-manager": "^1.2 || ^2.0", + "php": "^8.1", "psr/log": "^1.1.3 || ^2 || ^3", - "symfony/console": "^3.4 || ^4.4.16 || ^5.0", - "symfony/stopwatch": "^3.4 || ^4.0 || ^5.0" + "symfony/console": "^5.4 || ^6.0 || ^7.0", + "symfony/stopwatch": "^5.4 || ^6.0 || ^7.0", + "symfony/var-exporter": "^6.2 || ^7.0" + }, + "conflict": { + "doctrine/orm": "<2.12 || >=4" }, "require-dev": { - "doctrine/coding-standard": "^8.0", - "doctrine/orm": "^2.6", - "doctrine/persistence": "^1.3 || ^2.0", + "doctrine/coding-standard": "^12", + "doctrine/orm": "^2.13 || ^3", + "doctrine/persistence": "^2 || ^3", "doctrine/sql-formatter": "^1.0", - "ergebnis/composer-normalize": "^2.9", "ext-pdo_sqlite": "*", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-deprecation-rules": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpstan/phpstan-symfony": "^0.12", - "phpunit/phpunit": "^8.5 || ^9.4", - "symfony/cache": "^3.4 || ^4.0 || ^5.0", - "symfony/process": "^3.4 || ^4.0 || ^5.0", - "symfony/yaml": "^3.4 || ^4.0 || ^5.0" + "fig/log-test": "^1", + "phpstan/phpstan": "^1.10", + "phpstan/phpstan-deprecation-rules": "^1.1", + "phpstan/phpstan-phpunit": "^1.3", + "phpstan/phpstan-strict-rules": "^1.4", + "phpstan/phpstan-symfony": "^1.3", + "phpunit/phpunit": "^10.3", + "symfony/cache": "^5.4 || ^6.0 || ^7.0", + "symfony/process": "^5.4 || ^6.0 || ^7.0", + "symfony/yaml": "^5.4 || ^6.0 || ^7.0" }, "suggest": { "doctrine/sql-formatter": "Allows to generate formatted SQL with the diff command.", @@ -1144,15 +1181,9 @@ "bin/doctrine-migrations" ], "type": "library", - "extra": { - "composer-normalize": { - "indent-size": 4, - "indent-style": "space" - } - }, "autoload": { "psr-4": { - "Doctrine\\Migrations\\": "lib/Doctrine/Migrations" + "Doctrine\\Migrations\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -1182,7 +1213,7 @@ ], "support": { "issues": "https://github.com/doctrine/migrations/issues", - "source": "https://github.com/doctrine/migrations/tree/3.2.1" + "source": "https://github.com/doctrine/migrations/tree/3.8.1" }, "funding": [ { @@ -1198,52 +1229,59 @@ "type": "tidelift" } ], - "time": "2021-08-03T11:49:27+00:00" + "time": "2024-08-28T13:17:28+00:00" }, { "name": "doctrine/orm", - "version": "2.9.4", + "version": "2.19.8", "source": { "type": "git", "url": "https://github.com/doctrine/orm.git", - "reference": "b19a13f4edfaa5806109cd899f5912a7df1547b5" + "reference": "c2c500077b1ec9d0a829fdf7c8d18e448b501605" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/orm/zipball/b19a13f4edfaa5806109cd899f5912a7df1547b5", - "reference": "b19a13f4edfaa5806109cd899f5912a7df1547b5", + "url": "https://api.github.com/repos/doctrine/orm/zipball/c2c500077b1ec9d0a829fdf7c8d18e448b501605", + "reference": "c2c500077b1ec9d0a829fdf7c8d18e448b501605", "shasum": "" }, "require": { - "composer/package-versions-deprecated": "^1.8", - "doctrine/annotations": "^1.13", + "composer-runtime-api": "^2", "doctrine/cache": "^1.12.1 || ^2.1.1", - "doctrine/collections": "^1.5", + "doctrine/collections": "^1.5 || ^2.1", "doctrine/common": "^3.0.3", - "doctrine/dbal": "^2.13.0", - "doctrine/deprecations": "^0.5.3", - "doctrine/event-manager": "^1.1", + "doctrine/dbal": "^2.13.1 || ^3.2", + "doctrine/deprecations": "^0.5.3 || ^1", + "doctrine/event-manager": "^1.2 || ^2", "doctrine/inflector": "^1.4 || ^2.0", - "doctrine/instantiator": "^1.3", - "doctrine/lexer": "^1.0", - "doctrine/persistence": "^2.2", + "doctrine/instantiator": "^1.3 || ^2", + "doctrine/lexer": "^2 || ^3", + "doctrine/persistence": "^2.4 || ^3", "ext-ctype": "*", - "ext-pdo": "*", - "php": "^7.1 ||^8.0", + "php": "^7.1 || ^8.0", "psr/cache": "^1 || ^2 || ^3", - "symfony/console": "^3.0 || ^4.0 || ^5.0 || ^6.0" + "symfony/console": "^4.2 || ^5.0 || ^6.0 || ^7.0", + "symfony/polyfill-php72": "^1.23", + "symfony/polyfill-php80": "^1.16" + }, + "conflict": { + "doctrine/annotations": "<1.13 || >= 3.0" }, "require-dev": { - "doctrine/coding-standard": "^9.0", + "doctrine/annotations": "^1.13 || ^2", + "doctrine/coding-standard": "^9.0.2 || ^12.0", "phpbench/phpbench": "^0.16.10 || ^1.0", - "phpstan/phpstan": "0.12.94", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.4", - "squizlabs/php_codesniffer": "3.6.0", - "symfony/cache": "^4.4 || ^5.2", - "symfony/yaml": "^3.4 || ^4.0 || ^5.0 || ^6.0", - "vimeo/psalm": "4.7.0" + "phpstan/phpstan": "~1.4.10 || 1.12.6", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6", + "psr/log": "^1 || ^2 || ^3", + "squizlabs/php_codesniffer": "3.7.2", + "symfony/cache": "^4.4 || ^5.4 || ^6.4 || ^7.0", + "symfony/var-exporter": "^4.4 || ^5.4 || ^6.2 || ^7.0", + "symfony/yaml": "^3.4 || ^4.0 || ^5.0 || ^6.0 || ^7.0", + "vimeo/psalm": "4.30.0 || 5.24.0" }, "suggest": { + "ext-dom": "Provides support for XSD validation for XML mapping files", "symfony/cache": "Provides cache support for Setup Tool with doctrine/cache 2.0", "symfony/yaml": "If you want to use YAML Metadata Mapping Driver" }, @@ -1253,7 +1291,7 @@ "type": "library", "autoload": { "psr-4": { - "Doctrine\\ORM\\": "lib/Doctrine/ORM" + "Doctrine\\ORM\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -1290,50 +1328,46 @@ ], "support": { "issues": "https://github.com/doctrine/orm/issues", - "source": "https://github.com/doctrine/orm/tree/2.9.4" + "source": "https://github.com/doctrine/orm/tree/2.19.8" }, - "time": "2021-08-11T20:53:03+00:00" + "time": "2024-10-10T09:46:49+00:00" }, { "name": "doctrine/persistence", - "version": "2.2.2", + "version": "3.3.3", "source": { "type": "git", "url": "https://github.com/doctrine/persistence.git", - "reference": "4ce4712e6dc84a156176a0fbbb11954a25c93103" + "reference": "b337726451f5d530df338fc7f68dee8781b49779" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/persistence/zipball/4ce4712e6dc84a156176a0fbbb11954a25c93103", - "reference": "4ce4712e6dc84a156176a0fbbb11954a25c93103", + "url": "https://api.github.com/repos/doctrine/persistence/zipball/b337726451f5d530df338fc7f68dee8781b49779", + "reference": "b337726451f5d530df338fc7f68dee8781b49779", "shasum": "" }, "require": { - "doctrine/annotations": "^1.0", - "doctrine/cache": "^1.11 || ^2.0", - "doctrine/collections": "^1.0", - "doctrine/deprecations": "^0.5.3", - "doctrine/event-manager": "^1.0", - "php": "^7.1 || ^8.0", - "psr/cache": "^1.0|^2.0|^3.0" + "doctrine/event-manager": "^1 || ^2", + "php": "^7.2 || ^8.0", + "psr/cache": "^1.0 || ^2.0 || ^3.0" }, "conflict": { - "doctrine/common": "<2.10@dev" + "doctrine/common": "<2.10" }, "require-dev": { - "composer/package-versions-deprecated": "^1.11", - "doctrine/coding-standard": "^6.0 || ^9.0", + "doctrine/coding-standard": "^12", "doctrine/common": "^3.0", - "phpstan/phpstan": "0.12.84", - "phpunit/phpunit": "^7.5.20 || ^8.0 || ^9.0", - "symfony/cache": "^4.4|^5.0", - "vimeo/psalm": "4.7.0" + "phpstan/phpstan": "1.11.1", + "phpstan/phpstan-phpunit": "^1", + "phpstan/phpstan-strict-rules": "^1.1", + "phpunit/phpunit": "^8.5 || ^9.5", + "symfony/cache": "^4.4 || ^5.4 || ^6.0", + "vimeo/psalm": "4.30.0 || 5.24.0" }, "type": "library", "autoload": { "psr-4": { - "Doctrine\\Common\\": "lib/Doctrine/Common", - "Doctrine\\Persistence\\": "lib/Doctrine/Persistence" + "Doctrine\\Persistence\\": "src/Persistence" } }, "notification-url": "https://packagist.org/downloads/", @@ -1367,7 +1401,7 @@ } ], "description": "The Doctrine Persistence project is a set of shared interfaces and functionality that the different Doctrine object mappers share.", - "homepage": "https://doctrine-project.org/projects/persistence.html", + "homepage": "https://www.doctrine-project.org/projects/persistence.html", "keywords": [ "mapper", "object", @@ -1377,39 +1411,52 @@ ], "support": { "issues": "https://github.com/doctrine/persistence/issues", - "source": "https://github.com/doctrine/persistence/tree/2.2.2" + "source": "https://github.com/doctrine/persistence/tree/3.3.3" }, - "time": "2021-08-10T19:01:29+00:00" + "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%2Fpersistence", + "type": "tidelift" + } + ], + "time": "2024-06-20T10:14:30+00:00" }, { "name": "doctrine/sql-formatter", - "version": "1.1.1", + "version": "1.5.0", "source": { "type": "git", "url": "https://github.com/doctrine/sql-formatter.git", - "reference": "56070bebac6e77230ed7d306ad13528e60732871" + "reference": "16ca9e39877369d664f06dacde468548298bdc40" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/sql-formatter/zipball/56070bebac6e77230ed7d306ad13528e60732871", - "reference": "56070bebac6e77230ed7d306ad13528e60732871", + "url": "https://api.github.com/repos/doctrine/sql-formatter/zipball/16ca9e39877369d664f06dacde468548298bdc40", + "reference": "16ca9e39877369d664f06dacde468548298bdc40", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0" + "php": "^8.1" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.4" + "doctrine/coding-standard": "^12", + "ergebnis/phpunit-slow-test-detector": "^2.14", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^10.5", + "vimeo/psalm": "^5.24" }, "bin": [ "bin/sql-formatter" ], "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, "autoload": { "psr-4": { "Doctrine\\SqlFormatter\\": "src" @@ -1423,7 +1470,7 @@ { "name": "Jeremy Dorn", "email": "jeremy@jeremydorn.com", - "homepage": "http://jeremydorn.com/" + "homepage": "https://jeremydorn.com/" } ], "description": "a PHP SQL highlighting library", @@ -1434,33 +1481,127 @@ ], "support": { "issues": "https://github.com/doctrine/sql-formatter/issues", - "source": "https://github.com/doctrine/sql-formatter/tree/1.1.x" + "source": "https://github.com/doctrine/sql-formatter/tree/1.5.0" + }, + "time": "2024-09-11T07:29:40+00:00" + }, + { + "name": "easycorp/easyadmin-bundle", + "version": "v4.12.0", + "source": { + "type": "git", + "url": "https://github.com/EasyCorp/EasyAdminBundle.git", + "reference": "d21c3222a660f6aa9748623e53db8be5d8d98e78" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/EasyCorp/EasyAdminBundle/zipball/d21c3222a660f6aa9748623e53db8be5d8d98e78", + "reference": "d21c3222a660f6aa9748623e53db8be5d8d98e78", + "shasum": "" + }, + "require": { + "doctrine/doctrine-bundle": "^2.5", + "doctrine/orm": "^2.10|^3.0", + "ext-json": "*", + "php": ">=8.0.2", + "symfony/asset": "^5.4|^6.0|^7.0", + "symfony/cache": "^5.4|^6.0|^7.0", + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/deprecation-contracts": "^3.0", + "symfony/doctrine-bridge": "^5.4|^6.0|^7.0", + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/filesystem": "^5.4|^6.0|^7.0", + "symfony/form": "^5.4|^6.0|^7.0", + "symfony/framework-bundle": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^5.4|^6.0|^7.0", + "symfony/http-kernel": "^5.4|^6.0|^7.0", + "symfony/intl": "^5.4|^6.0|^7.0", + "symfony/property-access": "^5.4|^6.0|^7.0", + "symfony/security-bundle": "^5.4|^6.0|^7.0", + "symfony/string": "^5.4|^6.0|^7.0", + "symfony/translation": "^5.4|^6.0|^7.0", + "symfony/twig-bundle": "^5.4|^6.0|^7.0", + "symfony/uid": "^5.4|^6.0|^7.0", + "symfony/validator": "^5.4|^6.0|^7.0" + }, + "require-dev": { + "doctrine/doctrine-fixtures-bundle": "^3.4|3.5.x-dev", + "phpstan/extension-installer": "^1.2", + "phpstan/phpstan": "^1.9", + "phpstan/phpstan-phpunit": "^1.2", + "phpstan/phpstan-strict-rules": "^1.4", + "phpstan/phpstan-symfony": "^1.2", + "psr/log": "^1.0", + "symfony/browser-kit": "^5.4|^6.0|^7.0", + "symfony/css-selector": "^5.4|^6.0|^7.0", + "symfony/debug-bundle": "^5.4|^6.0|^7.0", + "symfony/dom-crawler": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/phpunit-bridge": "^5.4|^6.0|^7.0" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "4.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "EasyCorp\\Bundle\\EasyAdminBundle\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Project Contributors", + "homepage": "https://github.com/EasyCorp/EasyAdminBundle/graphs/contributors" + } + ], + "description": "Admin generator for Symfony applications", + "homepage": "https://github.com/EasyCorp/EasyAdminBundle", + "keywords": [ + "admin", + "backend", + "generator" + ], + "support": { + "issues": "https://github.com/EasyCorp/EasyAdminBundle/issues", + "source": "https://github.com/EasyCorp/EasyAdminBundle/tree/v4.12.0" }, - "time": "2020-07-30T16:57:33+00:00" + "funding": [ + { + "url": "https://github.com/javiereguiluz", + "type": "github" + } + ], + "time": "2024-09-02T17:48:17+00:00" }, { "name": "egulias/email-validator", - "version": "3.1.1", + "version": "4.0.2", "source": { "type": "git", "url": "https://github.com/egulias/EmailValidator.git", - "reference": "c81f18a3efb941d8c4d2e025f6183b5c6d697307" + "reference": "ebaaf5be6c0286928352e054f2d5125608e5405e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/c81f18a3efb941d8c4d2e025f6183b5c6d697307", - "reference": "c81f18a3efb941d8c4d2e025f6183b5c6d697307", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ebaaf5be6c0286928352e054f2d5125608e5405e", + "reference": "ebaaf5be6c0286928352e054f2d5125608e5405e", "shasum": "" }, "require": { - "doctrine/lexer": "^1.2", - "php": ">=7.2", - "symfony/polyfill-intl-idn": "^1.15" + "doctrine/lexer": "^2.0 || ^3.0", + "php": ">=8.1", + "symfony/polyfill-intl-idn": "^1.26" }, "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^8.5.8|^9.3.3", - "vimeo/psalm": "^4" + "phpunit/phpunit": "^10.2", + "vimeo/psalm": "^5.12" }, "suggest": { "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" @@ -1468,7 +1609,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0.x-dev" + "dev-master": "4.0.x-dev" } }, "autoload": { @@ -1496,7 +1637,7 @@ ], "support": { "issues": "https://github.com/egulias/EmailValidator/issues", - "source": "https://github.com/egulias/EmailValidator/tree/3.1.1" + "source": "https://github.com/egulias/EmailValidator/tree/4.0.2" }, "funding": [ { @@ -1504,26 +1645,26 @@ "type": "github" } ], - "time": "2021-04-01T18:37:14+00:00" + "time": "2023-10-06T06:47:41+00:00" }, { "name": "friendsofphp/proxy-manager-lts", - "version": "v1.0.5", + "version": "v1.0.18", "source": { "type": "git", "url": "https://github.com/FriendsOfPHP/proxy-manager-lts.git", - "reference": "006aa5d32f887a4db4353b13b5b5095613e0611f" + "reference": "2c8a6cffc3220e99352ad958fe7cf06bf6f7690f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FriendsOfPHP/proxy-manager-lts/zipball/006aa5d32f887a4db4353b13b5b5095613e0611f", - "reference": "006aa5d32f887a4db4353b13b5b5095613e0611f", + "url": "https://api.github.com/repos/FriendsOfPHP/proxy-manager-lts/zipball/2c8a6cffc3220e99352ad958fe7cf06bf6f7690f", + "reference": "2c8a6cffc3220e99352ad958fe7cf06bf6f7690f", "shasum": "" }, "require": { "laminas/laminas-code": "~3.4.1|^4.0", "php": ">=7.1", - "symfony/filesystem": "^4.4.17|^5.0|^6.0" + "symfony/filesystem": "^4.4.17|^5.0|^6.0|^7.0" }, "conflict": { "laminas/laminas-stdlib": "<3.2.1", @@ -1534,7 +1675,7 @@ }, "require-dev": { "ext-phar": "*", - "symfony/phpunit-bridge": "^5.2|^6.0" + "symfony/phpunit-bridge": "^5.4|^6.0|^7.0" }, "type": "library", "extra": { @@ -1556,7 +1697,7 @@ { "name": "Marco Pivetta", "email": "ocramius@gmail.com", - "homepage": "http://ocramius.github.io/" + "homepage": "https://ocramius.github.io/" }, { "name": "Nicolas Grekas", @@ -1574,7 +1715,7 @@ ], "support": { "issues": "https://github.com/FriendsOfPHP/proxy-manager-lts/issues", - "source": "https://github.com/FriendsOfPHP/proxy-manager-lts/tree/v1.0.5" + "source": "https://github.com/FriendsOfPHP/proxy-manager-lts/tree/v1.0.18" }, "funding": [ { @@ -1586,41 +1727,196 @@ "type": "tidelift" } ], - "time": "2021-05-22T16:11:15+00:00" + "time": "2024-03-20T12:50:41+00:00" }, { - "name": "laminas/laminas-code", - "version": "4.4.2", + "name": "knplabs/knp-components", + "version": "v3.6.0", "source": { "type": "git", - "url": "https://github.com/laminas/laminas-code.git", - "reference": "54251ab2b16c41c6980387839496b235f5f6e10b" + "url": "https://github.com/KnpLabs/knp-components.git", + "reference": "145d74f3fbb24619a60a6f7e54aa4bd10862b07a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-code/zipball/54251ab2b16c41c6980387839496b235f5f6e10b", - "reference": "54251ab2b16c41c6980387839496b235f5f6e10b", + "url": "https://api.github.com/repos/KnpLabs/knp-components/zipball/145d74f3fbb24619a60a6f7e54aa4bd10862b07a", + "reference": "145d74f3fbb24619a60a6f7e54aa4bd10862b07a", "shasum": "" }, "require": { - "php": "^7.4 || ~8.0.0" + "php": "^7.4 || ^8.0", + "symfony/event-dispatcher-contracts": "^2.0 || ^3.0", + "symfony/http-foundation": "^4.4 || ^5.4 || ^6.0" }, "conflict": { - "phpspec/prophecy": "<1.9.0" + "doctrine/dbal": "<2.10" + }, + "require-dev": { + "doctrine/mongodb-odm": "^2.0", + "doctrine/orm": "^2.7", + "doctrine/phpcr-odm": "^1.2", + "ext-pdo_sqlite": "*", + "jackalope/jackalope-doctrine-dbal": "^1.2", + "phpunit/phpunit": "^9.5", + "propel/propel1": "^1.7", + "ruflin/elastica": "^7.0", + "solarium/solarium": "^6.0", + "symfony/http-kernel": "^4.4 || ^5.4 || ^6.0", + "symfony/property-access": "^4.4 || ^5.4 || ^6.0" + }, + "suggest": { + "doctrine/common": "to allow usage pagination with Doctrine ArrayCollection", + "doctrine/mongodb-odm": "to allow usage pagination with Doctrine ODM MongoDB", + "doctrine/orm": "to allow usage pagination with Doctrine ORM", + "doctrine/phpcr-odm": "to allow usage pagination with Doctrine ODM PHPCR", + "propel/propel1": "to allow usage pagination with Propel ORM", + "ruflin/elastica": "to allow usage pagination with ElasticSearch Client", + "solarium/solarium": "to allow usage pagination with Solarium Client", + "symfony/property-access": "To allow sorting arrays" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Knp\\Component\\": "src/Knp/Component" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "KnpLabs Team", + "homepage": "https://knplabs.com" + }, + { + "name": "Symfony Community", + "homepage": "https://github.com/KnpLabs/knp-components/contributors" + } + ], + "description": "Knplabs component library", + "homepage": "http://github.com/KnpLabs/knp-components", + "keywords": [ + "components", + "knp", + "knplabs", + "pager", + "paginator" + ], + "support": { + "issues": "https://github.com/KnpLabs/knp-components/issues", + "source": "https://github.com/KnpLabs/knp-components/tree/v3.6.0" + }, + "time": "2022-08-18T06:36:14+00:00" + }, + { + "name": "knplabs/knp-paginator-bundle", + "version": "v5.9.0", + "source": { + "type": "git", + "url": "https://github.com/KnpLabs/KnpPaginatorBundle.git", + "reference": "7879916a8af4f4d4668535cb0b71f55cc416da66" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/KnpLabs/KnpPaginatorBundle/zipball/7879916a8af4f4d4668535cb0b71f55cc416da66", + "reference": "7879916a8af4f4d4668535cb0b71f55cc416da66", + "shasum": "" + }, + "require": { + "knplabs/knp-components": "^2.4 || ^3.0", + "php": "^7.3 || ^8.0", + "symfony/config": "^4.4 || ^5.4 || ^6.0", + "symfony/dependency-injection": "^4.4 || ^5.4 || ^6.0", + "symfony/event-dispatcher": "^4.4 || ^5.4 || ^6.0", + "symfony/http-foundation": "^4.4 || ^5.4 || ^6.0", + "symfony/http-kernel": "^4.4 || ^5.4 || ^6.0", + "symfony/routing": "^4.4 || ^5.4 || ^6.0", + "symfony/translation": "^4.4 || ^5.4 || ^6.0", + "twig/twig": "^2.0 || ^3.0" }, "require-dev": { - "doctrine/annotations": "^1.10.4", + "phpstan/phpstan": "^1.2", + "phpunit/phpunit": "^8.5 || ^9.5", + "symfony/expression-language": "^4.4 || ^5.4 || ^6.0", + "symfony/templating": "^4.4 || ^5.4 || ^6.0" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "5.x-dev" + } + }, + "autoload": { + "psr-4": { + "Knp\\Bundle\\PaginatorBundle\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "KnpLabs Team", + "homepage": "http://knplabs.com" + }, + { + "name": "Symfony Community", + "homepage": "http://github.com/KnpLabs/KnpPaginatorBundle/contributors" + } + ], + "description": "Paginator bundle for Symfony to automate pagination and simplify sorting and other features", + "homepage": "http://github.com/KnpLabs/KnpPaginatorBundle", + "keywords": [ + "bundle", + "knp", + "knplabs", + "pager", + "pagination", + "paginator", + "symfony" + ], + "support": { + "issues": "https://github.com/KnpLabs/KnpPaginatorBundle/issues", + "source": "https://github.com/KnpLabs/KnpPaginatorBundle/tree/v5.9.0" + }, + "time": "2022-08-28T14:42:14+00:00" + }, + { + "name": "laminas/laminas-code", + "version": "4.14.0", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-code.git", + "reference": "562e02b7d85cb9142b5116cc76c4c7c162a11a1c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laminas/laminas-code/zipball/562e02b7d85cb9142b5116cc76c4c7c162a11a1c", + "reference": "562e02b7d85cb9142b5116cc76c4c7c162a11a1c", + "shasum": "" + }, + "require": { + "php": "~8.1.0 || ~8.2.0 || ~8.3.0" + }, + "require-dev": { + "doctrine/annotations": "^2.0.1", "ext-phar": "*", - "laminas/laminas-coding-standard": "^2.1.4", - "laminas/laminas-stdlib": "^3.3.0", - "phpunit/phpunit": "^9.4.2", - "psalm/plugin-phpunit": "^0.14.0", - "vimeo/psalm": "^4.3.1" + "laminas/laminas-coding-standard": "^2.5.0", + "laminas/laminas-stdlib": "^3.17.0", + "phpunit/phpunit": "^10.3.3", + "psalm/plugin-phpunit": "^0.19.0", + "vimeo/psalm": "^5.15.0" }, "suggest": { "doctrine/annotations": "Doctrine\\Common\\Annotations >=1.0 for annotation features", - "laminas/laminas-stdlib": "Laminas\\Stdlib component", - "laminas/laminas-zendframework-bridge": "A bridge with Zend Framework" + "laminas/laminas-stdlib": "Laminas\\Stdlib component" }, "type": "library", "autoload": { @@ -1653,56 +1949,62 @@ "type": "community_bridge" } ], - "time": "2021-07-09T11:58:40+00:00" + "time": "2024-06-17T08:50:25+00:00" }, { "name": "monolog/monolog", - "version": "2.3.2", + "version": "2.9.3", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "71312564759a7db5b789296369c1a264efc43aad" + "reference": "a30bfe2e142720dfa990d0a7e573997f5d884215" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/71312564759a7db5b789296369c1a264efc43aad", - "reference": "71312564759a7db5b789296369c1a264efc43aad", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/a30bfe2e142720dfa990d0a7e573997f5d884215", + "reference": "a30bfe2e142720dfa990d0a7e573997f5d884215", "shasum": "" }, "require": { "php": ">=7.2", - "psr/log": "^1.0.1" + "psr/log": "^1.0.1 || ^2.0 || ^3.0" }, "provide": { - "psr/log-implementation": "1.0.0" + "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0" }, "require-dev": { "aws/aws-sdk-php": "^2.4.9 || ^3.0", "doctrine/couchdb": "~1.0@dev", - "elasticsearch/elasticsearch": "^7", - "graylog2/gelf-php": "^1.4.2", + "elasticsearch/elasticsearch": "^7 || ^8", + "ext-json": "*", + "graylog2/gelf-php": "^1.4.2 || ^2@dev", + "guzzlehttp/guzzle": "^7.4", + "guzzlehttp/psr7": "^2.2", "mongodb/mongodb": "^1.8", - "php-amqplib/php-amqplib": "~2.4", - "php-console/php-console": "^3.1.3", - "phpspec/prophecy": "^1.6.1", - "phpstan/phpstan": "^0.12.91", - "phpunit/phpunit": "^8.5", - "predis/predis": "^1.1", - "rollbar/rollbar": "^1.3", - "ruflin/elastica": ">=0.90 <7.0.1", - "swiftmailer/swiftmailer": "^5.3|^6.0" + "php-amqplib/php-amqplib": "~2.4 || ^3", + "phpspec/prophecy": "^1.15", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^8.5.38 || ^9.6.19", + "predis/predis": "^1.1 || ^2.0", + "rollbar/rollbar": "^1.3 || ^2 || ^3", + "ruflin/elastica": "^7", + "swiftmailer/swiftmailer": "^5.3|^6.0", + "symfony/mailer": "^5.4 || ^6", + "symfony/mime": "^5.4 || ^6" }, "suggest": { "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", "doctrine/couchdb": "Allow sending log messages to a CouchDB server", "elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client", "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", + "ext-curl": "Required to send log messages using the IFTTTHandler, the LogglyHandler, the SendGridHandler, the SlackWebhookHandler or the TelegramBotHandler", "ext-mbstring": "Allow to work properly with unicode symbols", "ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)", + "ext-openssl": "Required to send log messages using SSL", + "ext-sockets": "Allow sending log messages to a Syslog server (via UDP driver)", "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)", "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", - "php-console/php-console": "Allow sending log messages to Google Chrome", "rollbar/rollbar": "Allow sending log messages to Rollbar", "ruflin/elastica": "Allow sending log messages to an Elastic Search server" }, @@ -1737,7 +2039,7 @@ ], "support": { "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/2.3.2" + "source": "https://github.com/Seldaek/monolog/tree/2.9.3" }, "funding": [ { @@ -1749,7 +2051,7 @@ "type": "tidelift" } ], - "time": "2021-07-23T07:42:52+00:00" + "time": "2024-04-12T20:52:51+00:00" }, { "name": "phpdocumentor/reflection-common", @@ -1806,27 +2108,35 @@ }, { "name": "phpdocumentor/reflection-docblock", - "version": "5.2.2", + "version": "5.4.1", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556" + "reference": "9d07b3f7fdcf5efec5d1609cba3c19c5ea2bdc9c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/069a785b2141f5bcf49f3e353548dc1cce6df556", - "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/9d07b3f7fdcf5efec5d1609cba3c19c5ea2bdc9c", + "reference": "9d07b3f7fdcf5efec5d1609cba3c19c5ea2bdc9c", "shasum": "" }, "require": { + "doctrine/deprecations": "^1.1", "ext-filter": "*", - "php": "^7.2 || ^8.0", + "php": "^7.4 || ^8.0", "phpdocumentor/reflection-common": "^2.2", - "phpdocumentor/type-resolver": "^1.3", + "phpdocumentor/type-resolver": "^1.7", + "phpstan/phpdoc-parser": "^1.7", "webmozart/assert": "^1.9.1" }, "require-dev": { - "mockery/mockery": "~1.3.2" + "mockery/mockery": "~1.3.5", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-mockery": "^1.1", + "phpstan/phpstan-webmozart-assert": "^1.2", + "phpunit/phpunit": "^9.5", + "vimeo/psalm": "^5.13" }, "type": "library", "extra": { @@ -1850,36 +2160,45 @@ }, { "name": "Jaap van Otterdijk", - "email": "account@ijaap.nl" + "email": "opensource@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" + "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.4.1" }, - "time": "2020-09-03T19:13:55+00:00" + "time": "2024-05-21T05:55:05+00:00" }, { "name": "phpdocumentor/type-resolver", - "version": "1.4.0", + "version": "1.8.2", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0" + "reference": "153ae662783729388a584b4361f2545e4d841e3c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0", - "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/153ae662783729388a584b4361f2545e4d841e3c", + "reference": "153ae662783729388a584b4361f2545e4d841e3c", "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.13" }, "require-dev": { - "ext-tokenizer": "*" + "ext-tokenizer": "*", + "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": { @@ -1905,26 +2224,73 @@ "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" + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.8.2" + }, + "time": "2024-02-23T11:10:43+00:00" + }, + { + "name": "phpstan/phpdoc-parser", + "version": "1.32.0", + "source": { + "type": "git", + "url": "https://github.com/phpstan/phpdoc-parser.git", + "reference": "6ca22b154efdd9e3c68c56f5d94670920a1c19a4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/6ca22b154efdd9e3c68c56f5d94670920a1c19a4", + "reference": "6ca22b154efdd9e3c68c56f5d94670920a1c19a4", + "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/" + ] + } }, - "time": "2020-09-17T18:55:26+00:00" + "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.32.0" + }, + "time": "2024-09-26T07:23:32+00:00" }, { "name": "psr/cache", - "version": "1.0.1", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/php-fig/cache.git", - "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8" + "reference": "213f9dbc5b9bfbc4f8db86d2838dc968752ce13b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8", - "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8", + "url": "https://api.github.com/repos/php-fig/cache/zipball/213f9dbc5b9bfbc4f8db86d2838dc968752ce13b", + "reference": "213f9dbc5b9bfbc4f8db86d2838dc968752ce13b", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=8.0.0" }, "type": "library", "extra": { @@ -1944,7 +2310,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common interface for caching libraries", @@ -1954,26 +2320,26 @@ "psr-6" ], "support": { - "source": "https://github.com/php-fig/cache/tree/master" + "source": "https://github.com/php-fig/cache/tree/2.0.0" }, - "time": "2016-08-06T20:24:11+00:00" + "time": "2021-02-03T23:23:37+00:00" }, { "name": "psr/container", - "version": "1.1.1", + "version": "1.1.2", "source": { "type": "git", "url": "https://github.com/php-fig/container.git", - "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf" + "reference": "513e0666f7216c7459170d56df27dfcefe1689ea" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/8622567409010282b7aeebe4bb841fe98b58dcaf", - "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf", + "url": "https://api.github.com/repos/php-fig/container/zipball/513e0666f7216c7459170d56df27dfcefe1689ea", + "reference": "513e0666f7216c7459170d56df27dfcefe1689ea", "shasum": "" }, "require": { - "php": ">=7.2.0" + "php": ">=7.4.0" }, "type": "library", "autoload": { @@ -2002,9 +2368,9 @@ ], "support": { "issues": "https://github.com/php-fig/container/issues", - "source": "https://github.com/php-fig/container/tree/1.1.1" + "source": "https://github.com/php-fig/container/tree/1.1.2" }, - "time": "2021-03-05T17:36:06+00:00" + "time": "2021-11-05T16:50:12+00:00" }, { "name": "psr/event-dispatcher", @@ -2058,20 +2424,20 @@ }, { "name": "psr/link", - "version": "1.0.0", + "version": "1.1.1", "source": { "type": "git", "url": "https://github.com/php-fig/link.git", - "reference": "eea8e8662d5cd3ae4517c9b864493f59fca95562" + "reference": "846c25f58a1f02b93a00f2404e3626b6bf9b7807" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/link/zipball/eea8e8662d5cd3ae4517c9b864493f59fca95562", - "reference": "eea8e8662d5cd3ae4517c9b864493f59fca95562", + "url": "https://api.github.com/repos/php-fig/link/zipball/846c25f58a1f02b93a00f2404e3626b6bf9b7807", + "reference": "846c25f58a1f02b93a00f2404e3626b6bf9b7807", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=8.0.0" }, "type": "library", "extra": { @@ -2095,6 +2461,7 @@ } ], "description": "Common interfaces for HTTP links", + "homepage": "https://github.com/php-fig/link", "keywords": [ "http", "http-link", @@ -2104,36 +2471,36 @@ "rest" ], "support": { - "source": "https://github.com/php-fig/link/tree/master" + "source": "https://github.com/php-fig/link/tree/1.1.1" }, - "time": "2016-10-28T16:06:13+00:00" + "time": "2021-03-11T22:59:13+00:00" }, { "name": "psr/log", - "version": "1.1.4", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/php-fig/log.git", - "reference": "d49695b909c3b7628b6289db5479a1c204601f11" + "reference": "ef29f6d262798707a9edd554e2b82517ef3a9376" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11", - "reference": "d49695b909c3b7628b6289db5479a1c204601f11", + "url": "https://api.github.com/repos/php-fig/log/zipball/ef29f6d262798707a9edd554e2b82517ef3a9376", + "reference": "ef29f6d262798707a9edd554e2b82517ef3a9376", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=8.0.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { "psr-4": { - "Psr\\Log\\": "Psr/Log/" + "Psr\\Log\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -2154,31 +2521,31 @@ "psr-3" ], "support": { - "source": "https://github.com/php-fig/log/tree/1.1.4" + "source": "https://github.com/php-fig/log/tree/2.0.0" }, - "time": "2021-05-03T11:20:27+00:00" + "time": "2021-07-14T16:41:46+00:00" }, { "name": "sensio/framework-extra-bundle", - "version": "v6.1.5", + "version": "v6.2.10", "source": { "type": "git", "url": "https://github.com/sensiolabs/SensioFrameworkExtraBundle.git", - "reference": "62c5909f49cf74dccdf50a294511cc24be2f969c" + "reference": "2f886f4b31f23c76496901acaedfedb6936ba61f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sensiolabs/SensioFrameworkExtraBundle/zipball/62c5909f49cf74dccdf50a294511cc24be2f969c", - "reference": "62c5909f49cf74dccdf50a294511cc24be2f969c", + "url": "https://api.github.com/repos/sensiolabs/SensioFrameworkExtraBundle/zipball/2f886f4b31f23c76496901acaedfedb6936ba61f", + "reference": "2f886f4b31f23c76496901acaedfedb6936ba61f", "shasum": "" }, "require": { - "doctrine/annotations": "^1.0", + "doctrine/annotations": "^1.0|^2.0", "php": ">=7.2.5", - "symfony/config": "^4.4|^5.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/framework-bundle": "^4.4|^5.0", - "symfony/http-kernel": "^4.4|^5.0" + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/framework-bundle": "^4.4|^5.0|^6.0", + "symfony/http-kernel": "^4.4|^5.0|^6.0" }, "conflict": { "doctrine/doctrine-cache-bundle": "<1.3.1", @@ -2188,17 +2555,17 @@ "doctrine/dbal": "^2.10|^3.0", "doctrine/doctrine-bundle": "^1.11|^2.0", "doctrine/orm": "^2.5", - "symfony/browser-kit": "^4.4|^5.0", - "symfony/doctrine-bridge": "^4.4|^5.0", - "symfony/dom-crawler": "^4.4|^5.0", - "symfony/expression-language": "^4.4|^5.0", - "symfony/finder": "^4.4|^5.0", - "symfony/monolog-bridge": "^4.0|^5.0", + "symfony/browser-kit": "^4.4|^5.0|^6.0", + "symfony/doctrine-bridge": "^4.4|^5.0|^6.0", + "symfony/dom-crawler": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/finder": "^4.4|^5.0|^6.0", + "symfony/monolog-bridge": "^4.0|^5.0|^6.0", "symfony/monolog-bundle": "^3.2", - "symfony/phpunit-bridge": "^4.4.9|^5.0.9", - "symfony/security-bundle": "^4.4|^5.0", - "symfony/twig-bundle": "^4.4|^5.0", - "symfony/yaml": "^4.4|^5.0", + "symfony/phpunit-bridge": "^4.4.9|^5.0.9|^6.0", + "symfony/security-bundle": "^4.4|^5.0|^6.0", + "symfony/twig-bundle": "^4.4|^5.0|^6.0", + "symfony/yaml": "^4.4|^5.0|^6.0", "twig/twig": "^1.34|^2.4|^3.0" }, "type": "symfony-bundle", @@ -2231,37 +2598,98 @@ "controllers" ], "support": { - "issues": "https://github.com/sensiolabs/SensioFrameworkExtraBundle/issues", - "source": "https://github.com/sensiolabs/SensioFrameworkExtraBundle/tree/v6.1.5" + "source": "https://github.com/sensiolabs/SensioFrameworkExtraBundle/tree/v6.2.10" }, - "time": "2021-05-31T10:40:46+00:00" + "abandoned": "Symfony", + "time": "2023-02-24T14:57:12+00:00" + }, + { + "name": "stripe/stripe-php", + "version": "v10.21.0", + "source": { + "type": "git", + "url": "https://github.com/stripe/stripe-php.git", + "reference": "b4ab319731958077227fad1874a3671458c5d593" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/stripe/stripe-php/zipball/b4ab319731958077227fad1874a3671458c5d593", + "reference": "b4ab319731958077227fad1874a3671458c5d593", + "shasum": "" + }, + "require": { + "ext-curl": "*", + "ext-json": "*", + "ext-mbstring": "*", + "php": ">=5.6.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "3.5.0", + "php-coveralls/php-coveralls": "^2.5", + "phpstan/phpstan": "^1.2", + "phpunit/phpunit": "^5.7 || ^9.0", + "squizlabs/php_codesniffer": "^3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "psr-4": { + "Stripe\\": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Stripe and contributors", + "homepage": "https://github.com/stripe/stripe-php/contributors" + } + ], + "description": "Stripe PHP Library", + "homepage": "https://stripe.com/", + "keywords": [ + "api", + "payment processing", + "stripe" + ], + "support": { + "issues": "https://github.com/stripe/stripe-php/issues", + "source": "https://github.com/stripe/stripe-php/tree/v10.21.0" + }, + "time": "2023-08-11T00:23:24+00:00" }, { "name": "symfony/asset", - "version": "v5.3.4", + "version": "v5.4.40", "source": { "type": "git", "url": "https://github.com/symfony/asset.git", - "reference": "9bd222a8fdd13ecca91384e403247103198f80a1" + "reference": "e5aa241b4914257164b39c3c2678b2c41b7671e3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/asset/zipball/9bd222a8fdd13ecca91384e403247103198f80a1", - "reference": "9bd222a8fdd13ecca91384e403247103198f80a1", + "url": "https://api.github.com/repos/symfony/asset/zipball/e5aa241b4914257164b39c3c2678b2c41b7671e3", + "reference": "e5aa241b4914257164b39c3c2678b2c41b7671e3", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-php80": "^1.16" }, "conflict": { "symfony/http-foundation": "<5.3" }, "require-dev": { - "symfony/http-client": "^4.4|^5.0", - "symfony/http-foundation": "^5.3", - "symfony/http-kernel": "^4.4|^5.0" + "symfony/http-client": "^4.4|^5.0|^6.0", + "symfony/http-foundation": "^5.3|^6.0", + "symfony/http-kernel": "^4.4|^5.0|^6.0" }, "suggest": { "symfony/http-foundation": "" @@ -2292,7 +2720,7 @@ "description": "Manages URL generation and versioning of web assets such as CSS stylesheets, JavaScript files and image files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/asset/tree/v5.3.4" + "source": "https://github.com/symfony/asset/tree/v5.4.40" }, "funding": [ { @@ -2308,20 +2736,20 @@ "type": "tidelift" } ], - "time": "2021-07-21T12:40:44+00:00" + "time": "2024-05-31T14:33:22+00:00" }, { "name": "symfony/cache", - "version": "v5.3.4", + "version": "v5.4.44", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "944db6004fc374fbe032d18e07cce51cc4e1e661" + "reference": "4b3e7bf157b8b5a010865701d9106b5f0a9c99a8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/944db6004fc374fbe032d18e07cce51cc4e1e661", - "reference": "944db6004fc374fbe032d18e07cce51cc4e1e661", + "url": "https://api.github.com/repos/symfony/cache/zipball/4b3e7bf157b8b5a010865701d9106b5f0a9c99a8", + "reference": "4b3e7bf157b8b5a010865701d9106b5f0a9c99a8", "shasum": "" }, "require": { @@ -2329,34 +2757,35 @@ "psr/cache": "^1.0|^2.0", "psr/log": "^1.1|^2|^3", "symfony/cache-contracts": "^1.1.7|^2", - "symfony/deprecation-contracts": "^2.1", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-php73": "^1.9", "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1|^2", - "symfony/var-exporter": "^4.4|^5.0" + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/var-exporter": "^4.4|^5.0|^6.0" }, "conflict": { - "doctrine/dbal": "<2.10", + "doctrine/dbal": "<2.13.1", "symfony/dependency-injection": "<4.4", "symfony/http-kernel": "<4.4", "symfony/var-dumper": "<4.4" }, "provide": { "psr/cache-implementation": "1.0|2.0", - "psr/simple-cache-implementation": "1.0", + "psr/simple-cache-implementation": "1.0|2.0", "symfony/cache-implementation": "1.0|2.0" }, "require-dev": { "cache/integration-tests": "dev-master", "doctrine/cache": "^1.6|^2.0", - "doctrine/dbal": "^2.10|^3.0", - "predis/predis": "^1.1", - "psr/simple-cache": "^1.0", - "symfony/config": "^4.4|^5.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/filesystem": "^4.4|^5.0", - "symfony/http-kernel": "^4.4|^5.0", - "symfony/messenger": "^4.4|^5.0", - "symfony/var-dumper": "^4.4|^5.0" + "doctrine/dbal": "^2.13.1|^3|^4", + "predis/predis": "^1.1|^2.0", + "psr/simple-cache": "^1.0|^2.0", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/filesystem": "^4.4|^5.0|^6.0", + "symfony/http-kernel": "^4.4|^5.0|^6.0", + "symfony/messenger": "^4.4|^5.0|^6.0", + "symfony/var-dumper": "^4.4|^5.0|^6.0" }, "type": "library", "autoload": { @@ -2381,14 +2810,14 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Provides an extended PSR-6, PSR-16 (and tags) implementation", + "description": "Provides extended PSR-6, PSR-16 (and tags) implementations", "homepage": "https://symfony.com", "keywords": [ "caching", "psr6" ], "support": { - "source": "https://github.com/symfony/cache/tree/v5.3.4" + "source": "https://github.com/symfony/cache/tree/v5.4.44" }, "funding": [ { @@ -2404,20 +2833,20 @@ "type": "tidelift" } ], - "time": "2021-07-23T15:55:36+00:00" + "time": "2024-09-13T16:57:39+00:00" }, { "name": "symfony/cache-contracts", - "version": "v2.4.0", + "version": "v2.5.3", "source": { "type": "git", "url": "https://github.com/symfony/cache-contracts.git", - "reference": "c0446463729b89dd4fa62e9aeecc80287323615d" + "reference": "fee6db04d913094e2fb55ff8e7db5685a8134463" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/c0446463729b89dd4fa62e9aeecc80287323615d", - "reference": "c0446463729b89dd4fa62e9aeecc80287323615d", + "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/fee6db04d913094e2fb55ff8e7db5685a8134463", + "reference": "fee6db04d913094e2fb55ff8e7db5685a8134463", "shasum": "" }, "require": { @@ -2430,7 +2859,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "2.4-dev" + "dev-main": "2.5-dev" }, "thanks": { "name": "symfony/contracts", @@ -2467,7 +2896,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/cache-contracts/tree/v2.4.0" + "source": "https://github.com/symfony/cache-contracts/tree/v2.5.3" }, "funding": [ { @@ -2483,26 +2912,26 @@ "type": "tidelift" } ], - "time": "2021-03-23T23:28:01+00:00" + "time": "2024-01-23T13:51:25+00:00" }, { "name": "symfony/config", - "version": "v5.3.4", + "version": "v5.4.40", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "4268f3059c904c61636275182707f81645517a37" + "reference": "d4e1db78421163b98dd9971d247fd0df4a57ee5e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/4268f3059c904c61636275182707f81645517a37", - "reference": "4268f3059c904c61636275182707f81645517a37", + "url": "https://api.github.com/repos/symfony/config/zipball/d4e1db78421163b98dd9971d247fd0df4a57ee5e", + "reference": "d4e1db78421163b98dd9971d247fd0df4a57ee5e", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", - "symfony/filesystem": "^4.4|^5.0", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/filesystem": "^4.4|^5.0|^6.0", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-php80": "^1.16", "symfony/polyfill-php81": "^1.22" @@ -2511,11 +2940,11 @@ "symfony/finder": "<4.4" }, "require-dev": { - "symfony/event-dispatcher": "^4.4|^5.0", - "symfony/finder": "^4.4|^5.0", - "symfony/messenger": "^4.4|^5.0", - "symfony/service-contracts": "^1.1|^2", - "symfony/yaml": "^4.4|^5.0" + "symfony/event-dispatcher": "^4.4|^5.0|^6.0", + "symfony/finder": "^4.4|^5.0|^6.0", + "symfony/messenger": "^4.4|^5.0|^6.0", + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/yaml": "^4.4|^5.0|^6.0" }, "suggest": { "symfony/yaml": "To use the yaml reference dumper" @@ -2546,7 +2975,7 @@ "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/config/tree/v5.3.4" + "source": "https://github.com/symfony/config/tree/v5.4.40" }, "funding": [ { @@ -2562,30 +2991,30 @@ "type": "tidelift" } ], - "time": "2021-07-21T12:40:44+00:00" + "time": "2024-05-31T14:33:22+00:00" }, { "name": "symfony/console", - "version": "v5.3.6", + "version": "v5.4.44", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "51b71afd6d2dc8f5063199357b9880cea8d8bfe2" + "reference": "5b5a0aa66e3296e303e22490f90f521551835a83" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/51b71afd6d2dc8f5063199357b9880cea8d8bfe2", - "reference": "51b71afd6d2dc8f5063199357b9880cea8d8bfe2", + "url": "https://api.github.com/repos/symfony/console/zipball/5b5a0aa66e3296e303e22490f90f521551835a83", + "reference": "5b5a0aa66e3296e303e22490f90f521551835a83", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php73": "^1.8", + "symfony/polyfill-php73": "^1.9", "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1|^2", - "symfony/string": "^5.1" + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/string": "^5.1|^6.0" }, "conflict": { "psr/log": ">=3", @@ -2600,12 +3029,12 @@ }, "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" + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/event-dispatcher": "^4.4|^5.0|^6.0", + "symfony/lock": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/var-dumper": "^4.4|^5.0|^6.0" }, "suggest": { "psr/log": "For using the console logger", @@ -2640,12 +3069,12 @@ "homepage": "https://symfony.com", "keywords": [ "cli", - "command line", + "command-line", "console", "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v5.3.6" + "source": "https://github.com/symfony/console/tree/v5.4.44" }, "funding": [ { @@ -2661,27 +3090,28 @@ "type": "tidelift" } ], - "time": "2021-07-27T19:10:22+00:00" + "time": "2024-09-20T07:56:40+00:00" }, { "name": "symfony/dependency-injection", - "version": "v5.3.4", + "version": "v5.4.44", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "5a825e4b386066167a8b55487091cb62beec74c2" + "reference": "23eb9f3803a931aef16a65f362a9aeb0640a1374" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/5a825e4b386066167a8b55487091cb62beec74c2", - "reference": "5a825e4b386066167a8b55487091cb62beec74c2", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/23eb9f3803a931aef16a65f362a9aeb0640a1374", + "reference": "23eb9f3803a931aef16a65f362a9aeb0640a1374", "shasum": "" }, "require": { "php": ">=7.2.5", "psr/container": "^1.1.1", - "symfony/deprecation-contracts": "^2.1", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-php80": "^1.16", + "symfony/polyfill-php81": "^1.22", "symfony/service-contracts": "^1.1.6|^2" }, "conflict": { @@ -2689,16 +3119,16 @@ "symfony/config": "<5.3", "symfony/finder": "<4.4", "symfony/proxy-manager-bridge": "<4.4", - "symfony/yaml": "<4.4" + "symfony/yaml": "<4.4.26" }, "provide": { "psr/container-implementation": "1.0", "symfony/service-implementation": "1.0|2.0" }, "require-dev": { - "symfony/config": "^5.3", - "symfony/expression-language": "^4.4|^5.0", - "symfony/yaml": "^4.4|^5.0" + "symfony/config": "^5.3|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/yaml": "^4.4.26|^5.0|^6.0" }, "suggest": { "symfony/config": "", @@ -2733,7 +3163,7 @@ "description": "Allows you to standardize and centralize the way objects are constructed in your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dependency-injection/tree/v5.3.4" + "source": "https://github.com/symfony/dependency-injection/tree/v5.4.44" }, "funding": [ { @@ -2749,29 +3179,29 @@ "type": "tidelift" } ], - "time": "2021-07-23T15:55:36+00:00" + "time": "2024-09-12T20:01:35+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v2.4.0", + "version": "v3.5.0", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "5f38c8804a9e97d23e0c8d63341088cd8a22d627" + "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/5f38c8804a9e97d23e0c8d63341088cd8a22d627", - "reference": "5f38c8804a9e97d23e0c8d63341088cd8a22d627", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1", + "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=8.1" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "2.4-dev" + "dev-main": "3.5-dev" }, "thanks": { "name": "symfony/contracts", @@ -2800,7 +3230,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.4.0" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.0" }, "funding": [ { @@ -2816,68 +3246,71 @@ "type": "tidelift" } ], - "time": "2021-03-23T23:28:01+00:00" + "time": "2024-04-18T09:32:20+00:00" }, { "name": "symfony/doctrine-bridge", - "version": "v5.3.4", + "version": "v5.4.44", "source": { "type": "git", "url": "https://github.com/symfony/doctrine-bridge.git", - "reference": "70bffec510b08e4830d851ad485a996b130fcd7c" + "reference": "259e525841c55193dfd9278f856c79c8f20155eb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/70bffec510b08e4830d851ad485a996b130fcd7c", - "reference": "70bffec510b08e4830d851ad485a996b130fcd7c", + "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/259e525841c55193dfd9278f856c79c8f20155eb", + "reference": "259e525841c55193dfd9278f856c79c8f20155eb", "shasum": "" }, "require": { "doctrine/event-manager": "~1.0", - "doctrine/persistence": "^2", + "doctrine/persistence": "^2|^3", "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.0", "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1|^2" + "symfony/service-contracts": "^1.1|^2|^3" }, "conflict": { - "doctrine/dbal": "<2.10", - "phpunit/phpunit": "<5.4.3", + "doctrine/dbal": "<2.13.1", + "doctrine/lexer": "<1.1", + "doctrine/orm": "<2.7.4", + "symfony/cache": "<5.4", "symfony/dependency-injection": "<4.4", - "symfony/form": "<5.1", + "symfony/form": "<5.4.38|>=6,<6.4.6", "symfony/http-kernel": "<5", "symfony/messenger": "<4.4", "symfony/property-info": "<5", + "symfony/proxy-manager-bridge": "<4.4.19", "symfony/security-bundle": "<5", "symfony/security-core": "<5.3", - "symfony/validator": "<5.2" + "symfony/validator": "<5.4.25|>=6,<6.2.12|>=6.3,<6.3.1" }, "require-dev": { - "composer/package-versions-deprecated": "^1.8", - "doctrine/annotations": "^1.10.4", - "doctrine/collections": "~1.0", + "doctrine/annotations": "^1.10.4|^2", + "doctrine/collections": "^1.0|^2.0", "doctrine/data-fixtures": "^1.1", - "doctrine/dbal": "^2.10|^3.0", - "doctrine/orm": "^2.7.3", - "symfony/cache": "^5.1", - "symfony/config": "^4.4|^5.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/doctrine-messenger": "^5.1", - "symfony/expression-language": "^4.4|^5.0", - "symfony/form": "^5.1.3", - "symfony/http-kernel": "^5.0", - "symfony/messenger": "^4.4|^5.0", - "symfony/property-access": "^4.4|^5.0", - "symfony/property-info": "^5.0", - "symfony/proxy-manager-bridge": "^4.4|^5.0", - "symfony/security-core": "^5.3", - "symfony/stopwatch": "^4.4|^5.0", - "symfony/translation": "^4.4|^5.0", - "symfony/uid": "^5.1", - "symfony/validator": "^5.2", - "symfony/var-dumper": "^4.4|^5.0" + "doctrine/dbal": "^2.13.1|^3|^4", + "doctrine/orm": "^2.7.4|^3", + "psr/log": "^1|^2|^3", + "symfony/cache": "^5.4|^6.0", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/doctrine-messenger": "^5.1|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/form": "^5.4.38|^6.4.6", + "symfony/http-kernel": "^5.0|^6.0", + "symfony/messenger": "^4.4|^5.0|^6.0", + "symfony/property-access": "^4.4|^5.0|^6.0", + "symfony/property-info": "^5.0|^6.0", + "symfony/proxy-manager-bridge": "^4.4|^5.0|^6.0", + "symfony/security-core": "^5.3|^6.0", + "symfony/stopwatch": "^4.4|^5.0|^6.0", + "symfony/translation": "^4.4|^5.0|^6.0", + "symfony/uid": "^5.1|^6.0", + "symfony/validator": "^5.4.25|~6.2.12|^6.3.1", + "symfony/var-dumper": "^4.4|^5.0|^6.0" }, "suggest": { "doctrine/data-fixtures": "", @@ -2913,7 +3346,7 @@ "description": "Provides integration for Doctrine with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/doctrine-bridge/tree/v5.3.4" + "source": "https://github.com/symfony/doctrine-bridge/tree/v5.4.44" }, "funding": [ { @@ -2929,28 +3362,29 @@ "type": "tidelift" } ], - "time": "2021-07-21T13:18:10+00:00" + "time": "2024-09-08T09:19:02+00:00" }, { "name": "symfony/dotenv", - "version": "v5.3.6", + "version": "v5.4.44", "source": { "type": "git", "url": "https://github.com/symfony/dotenv.git", - "reference": "b6d44663cff8c9880ee64d232870293a11e14cd6" + "reference": "bb4fef2bf035a50170fd95e5b146152834126008" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dotenv/zipball/b6d44663cff8c9880ee64d232870293a11e14cd6", - "reference": "b6d44663cff8c9880ee64d232870293a11e14cd6", + "url": "https://api.github.com/repos/symfony/dotenv/zipball/bb4fef2bf035a50170fd95e5b146152834126008", + "reference": "bb4fef2bf035a50170fd95e5b146152834126008", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1" + "symfony/deprecation-contracts": "^2.1|^3" }, "require-dev": { - "symfony/process": "^4.4|^5.0" + "symfony/console": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0" }, "type": "library", "autoload": { @@ -2983,7 +3417,7 @@ "environment" ], "support": { - "source": "https://github.com/symfony/dotenv/tree/v5.3.6" + "source": "https://github.com/symfony/dotenv/tree/v5.4.44" }, "funding": [ { @@ -2999,32 +3433,35 @@ "type": "tidelift" } ], - "time": "2021-07-29T06:20:01+00:00" + "time": "2024-09-16T09:39:25+00:00" }, { "name": "symfony/error-handler", - "version": "v5.3.4", + "version": "v5.4.42", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "281f6c4660bcf5844bb0346fe3a4664722fe4c73" + "reference": "db15ba0fd50890156ed40087ccedc7851a1f5b76" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/281f6c4660bcf5844bb0346fe3a4664722fe4c73", - "reference": "281f6c4660bcf5844bb0346fe3a4664722fe4c73", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/db15ba0fd50890156ed40087ccedc7851a1f5b76", + "reference": "db15ba0fd50890156ed40087ccedc7851a1f5b76", "shasum": "" }, "require": { "php": ">=7.2.5", "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^4.4|^5.0" + "symfony/var-dumper": "^4.4|^5.0|^6.0" }, "require-dev": { - "symfony/deprecation-contracts": "^2.1", - "symfony/http-kernel": "^4.4|^5.0", - "symfony/serializer": "^4.4|^5.0" + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/http-kernel": "^4.4|^5.0|^6.0", + "symfony/serializer": "^4.4|^5.0|^6.0" }, + "bin": [ + "Resources/bin/patch-type-declarations" + ], "type": "library", "autoload": { "psr-4": { @@ -3051,7 +3488,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v5.3.4" + "source": "https://github.com/symfony/error-handler/tree/v5.4.42" }, "funding": [ { @@ -3067,26 +3504,26 @@ "type": "tidelift" } ], - "time": "2021-07-23T15:55:36+00:00" + "time": "2024-07-23T12:34:05+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v5.3.4", + "version": "v5.4.40", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "f2fd2208157553874560f3645d4594303058c4bd" + "reference": "a54e2a8a114065f31020d6a89ede83e34c3b27a4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/f2fd2208157553874560f3645d4594303058c4bd", - "reference": "f2fd2208157553874560f3645d4594303058c4bd", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/a54e2a8a114065f31020d6a89ede83e34c3b27a4", + "reference": "a54e2a8a114065f31020d6a89ede83e34c3b27a4", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", - "symfony/event-dispatcher-contracts": "^2", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/event-dispatcher-contracts": "^2|^3", "symfony/polyfill-php80": "^1.16" }, "conflict": { @@ -3098,13 +3535,13 @@ }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^4.4|^5.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/error-handler": "^4.4|^5.0", - "symfony/expression-language": "^4.4|^5.0", - "symfony/http-foundation": "^4.4|^5.0", - "symfony/service-contracts": "^1.1|^2", - "symfony/stopwatch": "^4.4|^5.0" + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/http-foundation": "^4.4|^5.0|^6.0", + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/stopwatch": "^4.4|^5.0|^6.0" }, "suggest": { "symfony/dependency-injection": "", @@ -3136,7 +3573,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v5.3.4" + "source": "https://github.com/symfony/event-dispatcher/tree/v5.4.40" }, "funding": [ { @@ -3152,33 +3589,30 @@ "type": "tidelift" } ], - "time": "2021-07-23T15:55:36+00:00" + "time": "2024-05-31T14:33:22+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v2.4.0", + "version": "v3.5.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "69fee1ad2332a7cbab3aca13591953da9cdb7a11" + "reference": "8f93aec25d41b72493c6ddff14e916177c9efc50" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/69fee1ad2332a7cbab3aca13591953da9cdb7a11", - "reference": "69fee1ad2332a7cbab3aca13591953da9cdb7a11", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/8f93aec25d41b72493c6ddff14e916177c9efc50", + "reference": "8f93aec25d41b72493c6ddff14e916177c9efc50", "shasum": "" }, "require": { - "php": ">=7.2.5", + "php": ">=8.1", "psr/event-dispatcher": "^1" }, - "suggest": { - "symfony/event-dispatcher-implementation": "" - }, "type": "library", "extra": { "branch-alias": { - "dev-main": "2.4-dev" + "dev-main": "3.5-dev" }, "thanks": { "name": "symfony/contracts", @@ -3215,7 +3649,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v2.4.0" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.5.0" }, "funding": [ { @@ -3231,27 +3665,26 @@ "type": "tidelift" } ], - "time": "2021-03-23T23:28:01+00:00" + "time": "2024-04-18T09:32:20+00:00" }, { "name": "symfony/expression-language", - "version": "v5.3.4", + "version": "v5.4.43", "source": { "type": "git", "url": "https://github.com/symfony/expression-language.git", - "reference": "d4367d36217dd395b10f61649a6bf2c1367140d8" + "reference": "9d23f7bfd1d602fddc6d6520decedc99739497dd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/expression-language/zipball/d4367d36217dd395b10f61649a6bf2c1367140d8", - "reference": "d4367d36217dd395b10f61649a6bf2c1367140d8", + "url": "https://api.github.com/repos/symfony/expression-language/zipball/9d23f7bfd1d602fddc6d6520decedc99739497dd", + "reference": "9d23f7bfd1d602fddc6d6520decedc99739497dd", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/cache": "^4.4|^5.0", - "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1|^2" + "symfony/cache": "^4.4|^5.0|^6.0", + "symfony/service-contracts": "^1.1|^2|^3" }, "type": "library", "autoload": { @@ -3279,7 +3712,7 @@ "description": "Provides an engine that can compile and evaluate expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/expression-language/tree/v5.3.4" + "source": "https://github.com/symfony/expression-language/tree/v5.4.43" }, "funding": [ { @@ -3295,27 +3728,31 @@ "type": "tidelift" } ], - "time": "2021-07-21T12:38:00+00:00" + "time": "2024-08-09T07:10:35+00:00" }, { "name": "symfony/filesystem", - "version": "v5.3.4", + "version": "v5.4.44", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "343f4fe324383ca46792cae728a3b6e2f708fb32" + "reference": "76c3818964e9d32be3862c9318ae3ba9aa280ddc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/343f4fe324383ca46792cae728a3b6e2f708fb32", - "reference": "343f4fe324383ca46792cae728a3b6e2f708fb32", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/76c3818964e9d32be3862c9318ae3ba9aa280ddc", + "reference": "76c3818964e9d32be3862c9318ae3ba9aa280ddc", "shasum": "" }, "require": { "php": ">=7.2.5", "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.8", "symfony/polyfill-php80": "^1.16" }, + "require-dev": { + "symfony/process": "^5.4|^6.4" + }, "type": "library", "autoload": { "psr-4": { @@ -3342,7 +3779,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v5.3.4" + "source": "https://github.com/symfony/filesystem/tree/v5.4.44" }, "funding": [ { @@ -3358,24 +3795,25 @@ "type": "tidelift" } ], - "time": "2021-07-21T12:40:44+00:00" + "time": "2024-09-16T14:52:48+00:00" }, { "name": "symfony/finder", - "version": "v5.3.4", + "version": "v5.4.43", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "17f50e06018baec41551a71a15731287dbaab186" + "reference": "ae25a9145a900764158d439653d5630191155ca0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/17f50e06018baec41551a71a15731287dbaab186", - "reference": "17f50e06018baec41551a71a15731287dbaab186", + "url": "https://api.github.com/repos/symfony/finder/zipball/ae25a9145a900764158d439653d5630191155ca0", + "reference": "ae25a9145a900764158d439653d5630191155ca0", "shasum": "" }, "require": { "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-php80": "^1.16" }, "type": "library", @@ -3404,7 +3842,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v5.3.4" + "source": "https://github.com/symfony/finder/tree/v5.4.43" }, "funding": [ { @@ -3420,38 +3858,38 @@ "type": "tidelift" } ], - "time": "2021-07-23T15:54:19+00:00" + "time": "2024-08-13T14:03:51+00:00" }, { "name": "symfony/flex", - "version": "v1.13.4", + "version": "v1.21.8", "source": { "type": "git", "url": "https://github.com/symfony/flex.git", - "reference": "d81196c3f3b544e32997b67e955fb8291fdfe770" + "reference": "bda5f869ac51c8e985a6fe9f964c4cb78228a369" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/flex/zipball/d81196c3f3b544e32997b67e955fb8291fdfe770", - "reference": "d81196c3f3b544e32997b67e955fb8291fdfe770", + "url": "https://api.github.com/repos/symfony/flex/zipball/bda5f869ac51c8e985a6fe9f964c4cb78228a369", + "reference": "bda5f869ac51c8e985a6fe9f964c4cb78228a369", "shasum": "" }, "require": { "composer-plugin-api": "^1.0|^2.0", "php": ">=7.1" }, + "conflict": { + "composer/semver": "<1.7.2" + }, "require-dev": { "composer/composer": "^1.0.2|^2.0", - "symfony/dotenv": "^4.4|^5.0", - "symfony/filesystem": "^4.4|^5.0", - "symfony/phpunit-bridge": "^4.4|^5.0", - "symfony/process": "^3.4|^4.4|^5.0" + "symfony/dotenv": "^4.4|^5.0|^6.0", + "symfony/filesystem": "^4.4|^5.0|^6.0", + "symfony/phpunit-bridge": "^4.4.12|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0" }, "type": "composer-plugin", "extra": { - "branch-alias": { - "dev-main": "1.13-dev" - }, "class": "Symfony\\Flex\\Flex" }, "autoload": { @@ -3472,7 +3910,7 @@ "description": "Composer plugin for Symfony", "support": { "issues": "https://github.com/symfony/flex/issues", - "source": "https://github.com/symfony/flex/tree/v1.13.4" + "source": "https://github.com/symfony/flex/tree/v1.21.8" }, "funding": [ { @@ -3488,60 +3926,60 @@ "type": "tidelift" } ], - "time": "2021-08-03T08:14:48+00:00" + "time": "2024-10-07T08:51:39+00:00" }, { "name": "symfony/form", - "version": "v5.3.4", + "version": "v5.4.44", "source": { "type": "git", "url": "https://github.com/symfony/form.git", - "reference": "7d3ece4f98a1d4f7fea4331982ff210dd08bb2f9" + "reference": "4f3d91f8a7626e3cab9e3d2952321df10013a6eb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/form/zipball/7d3ece4f98a1d4f7fea4331982ff210dd08bb2f9", - "reference": "7d3ece4f98a1d4f7fea4331982ff210dd08bb2f9", + "url": "https://api.github.com/repos/symfony/form/zipball/4f3d91f8a7626e3cab9e3d2952321df10013a6eb", + "reference": "4f3d91f8a7626e3cab9e3d2952321df10013a6eb", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", - "symfony/event-dispatcher": "^4.4|^5.0", - "symfony/options-resolver": "^5.1", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/event-dispatcher": "^4.4|^5.0|^6.0", + "symfony/options-resolver": "^5.1|^6.0", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-intl-icu": "^1.21", "symfony/polyfill-mbstring": "~1.0", "symfony/polyfill-php80": "^1.16", - "symfony/property-access": "^5.0.8", - "symfony/service-contracts": "^1.1|^2" + "symfony/polyfill-php81": "^1.23", + "symfony/property-access": "^5.0.8|^6.0", + "symfony/service-contracts": "^1.1|^2|^3" }, "conflict": { - "phpunit/phpunit": "<5.4.3", "symfony/console": "<4.4", "symfony/dependency-injection": "<4.4", - "symfony/doctrine-bridge": "<4.4", + "symfony/doctrine-bridge": "<5.4.21|>=6,<6.2.7", "symfony/error-handler": "<4.4.5", "symfony/framework-bundle": "<4.4", "symfony/http-kernel": "<4.4", - "symfony/translation": "<4.4", + "symfony/translation": "<5.4.35|>=6.0,<6.3.12|>=6.4,<6.4.3", "symfony/translation-contracts": "<1.1.7", - "symfony/twig-bridge": "<4.4" + "symfony/twig-bridge": "<5.4.21|>=6,<6.2.7" }, "require-dev": { - "doctrine/collections": "~1.0", - "symfony/config": "^4.4|^5.0", - "symfony/console": "^4.4|^5.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/expression-language": "^4.4|^5.0", - "symfony/http-foundation": "^4.4|^5.0", - "symfony/http-kernel": "^4.4|^5.0", - "symfony/intl": "^4.4|^5.0", - "symfony/security-csrf": "^4.4|^5.0", - "symfony/translation": "^4.4|^5.0", - "symfony/uid": "^5.1", - "symfony/validator": "^4.4.17|^5.1.9", - "symfony/var-dumper": "^4.4|^5.0" + "doctrine/collections": "^1.0|^2.0", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/console": "^5.4|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/http-foundation": "^4.4|^5.0|^6.0", + "symfony/http-kernel": "^4.4|^5.0|^6.0", + "symfony/intl": "^4.4|^5.0|^6.0", + "symfony/security-csrf": "^4.4|^5.0|^6.0", + "symfony/translation": "^5.4.35|~6.3.12|^6.4.3", + "symfony/uid": "^5.1|^6.0", + "symfony/validator": "^4.4.17|^5.1.9|^6.0", + "symfony/var-dumper": "^4.4|^5.0|^6.0" }, "suggest": { "symfony/security-csrf": "For protecting forms against CSRF attacks.", @@ -3574,7 +4012,7 @@ "description": "Allows to easily create, process and reuse HTML forms", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/form/tree/v5.3.4" + "source": "https://github.com/symfony/form/tree/v5.4.44" }, "funding": [ { @@ -3590,119 +4028,184 @@ "type": "tidelift" } ], - "time": "2021-07-23T15:55:36+00:00" + "time": "2024-09-20T07:56:40+00:00" }, { "name": "symfony/framework-bundle", - "version": "v5.3.4", + "version": "v5.4.44", "source": { "type": "git", "url": "https://github.com/symfony/framework-bundle.git", - "reference": "2c5ed14a5992a2d04dfdb238a5f9589bab0a68d8" + "reference": "9ae1957fb817c0fec6d171931f675895a434d988" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/2c5ed14a5992a2d04dfdb238a5f9589bab0a68d8", - "reference": "2c5ed14a5992a2d04dfdb238a5f9589bab0a68d8", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/9ae1957fb817c0fec6d171931f675895a434d988", + "reference": "9ae1957fb817c0fec6d171931f675895a434d988", "shasum": "" }, "require": { "ext-xml": "*", "php": ">=7.2.5", - "symfony/cache": "^5.2", - "symfony/config": "^5.3", - "symfony/dependency-injection": "^5.3", - "symfony/deprecation-contracts": "^2.1", - "symfony/error-handler": "^4.4.1|^5.0.1", - "symfony/event-dispatcher": "^5.1", - "symfony/filesystem": "^4.4|^5.0", - "symfony/finder": "^4.4|^5.0", - "symfony/http-foundation": "^5.3", - "symfony/http-kernel": "^5.3", + "symfony/cache": "^5.2|^6.0", + "symfony/config": "^5.3|^6.0", + "symfony/dependency-injection": "^5.4.44|^6.0.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/error-handler": "^4.4.1|^5.0.1|^6.0", + "symfony/event-dispatcher": "^5.1|^6.0", + "symfony/filesystem": "^4.4|^5.0|^6.0", + "symfony/finder": "^4.4|^5.0|^6.0", + "symfony/http-foundation": "^5.4.24|^6.2.11", + "symfony/http-kernel": "^5.4|^6.0", "symfony/polyfill-mbstring": "~1.0", "symfony/polyfill-php80": "^1.16", - "symfony/routing": "^5.3" + "symfony/polyfill-php81": "^1.22", + "symfony/routing": "^5.3|^6.0" }, "conflict": { + "doctrine/annotations": "<1.13.1", + "doctrine/cache": "<1.11", "doctrine/persistence": "<1.3", "phpdocumentor/reflection-docblock": "<3.2.2", "phpdocumentor/type-resolver": "<1.4.0", - "phpunit/phpunit": "<5.4.3", "symfony/asset": "<5.3", - "symfony/browser-kit": "<4.4", - "symfony/console": "<5.2.5", + "symfony/console": "<5.2.5|>=7.0", "symfony/dom-crawler": "<4.4", "symfony/dotenv": "<5.1", "symfony/form": "<5.2", "symfony/http-client": "<4.4", "symfony/lock": "<4.4", "symfony/mailer": "<5.2", - "symfony/messenger": "<4.4", + "symfony/messenger": "<5.4", "symfony/mime": "<4.4", "symfony/property-access": "<5.3", "symfony/property-info": "<4.4", - "symfony/security-core": "<5.3", "symfony/security-csrf": "<5.3", "symfony/serializer": "<5.2", + "symfony/service-contracts": ">=3.0", "symfony/stopwatch": "<4.4", "symfony/translation": "<5.3", "symfony/twig-bridge": "<4.4", "symfony/twig-bundle": "<4.4", - "symfony/validator": "<5.2", + "symfony/validator": "<5.3.11", "symfony/web-profiler-bundle": "<4.4", "symfony/workflow": "<5.2" }, - "require-dev": { - "doctrine/annotations": "^1.10.4", - "doctrine/cache": "^1.0|^2.0", - "doctrine/persistence": "^1.3|^2.0", - "paragonie/sodium_compat": "^1.8", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/asset": "^5.3", - "symfony/browser-kit": "^4.4|^5.0", - "symfony/console": "^5.2", - "symfony/css-selector": "^4.4|^5.0", - "symfony/dom-crawler": "^4.4|^5.0", - "symfony/dotenv": "^5.1", - "symfony/expression-language": "^4.4|^5.0", - "symfony/form": "^5.2", - "symfony/http-client": "^4.4|^5.0", - "symfony/lock": "^4.4|^5.0", - "symfony/mailer": "^5.2", - "symfony/messenger": "^5.2", - "symfony/mime": "^4.4|^5.0", - "symfony/notifier": "^5.3", - "symfony/phpunit-bridge": "^5.3", - "symfony/polyfill-intl-icu": "~1.0", - "symfony/process": "^4.4|^5.0", - "symfony/property-info": "^4.4|^5.0", - "symfony/rate-limiter": "^5.2", - "symfony/security-bundle": "^5.3", - "symfony/serializer": "^5.2", - "symfony/stopwatch": "^4.4|^5.0", - "symfony/string": "^5.0", - "symfony/translation": "^5.3", - "symfony/twig-bundle": "^4.4|^5.0", - "symfony/validator": "^5.2", - "symfony/web-link": "^4.4|^5.0", - "symfony/workflow": "^5.2", - "symfony/yaml": "^4.4|^5.0", - "twig/twig": "^2.10|^3.0" + "require-dev": { + "doctrine/annotations": "^1.13.1|^2", + "doctrine/cache": "^1.11|^2.0", + "doctrine/persistence": "^1.3|^2|^3", + "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", + "symfony/asset": "^5.3|^6.0", + "symfony/browser-kit": "^5.4|^6.0", + "symfony/console": "^5.4.9|^6.0.9", + "symfony/css-selector": "^4.4|^5.0|^6.0", + "symfony/dom-crawler": "^4.4.30|^5.3.7|^6.0", + "symfony/dotenv": "^5.1|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/form": "^5.2|^6.0", + "symfony/http-client": "^4.4|^5.0|^6.0", + "symfony/lock": "^4.4|^5.0|^6.0", + "symfony/mailer": "^5.2|^6.0", + "symfony/messenger": "^5.4|^6.0", + "symfony/mime": "^4.4|^5.0|^6.0", + "symfony/notifier": "^5.4|^6.0", + "symfony/polyfill-intl-icu": "~1.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/property-info": "^4.4|^5.0|^6.0", + "symfony/rate-limiter": "^5.2|^6.0", + "symfony/security-bundle": "^5.4|^6.0", + "symfony/serializer": "^5.4|^6.0", + "symfony/stopwatch": "^4.4|^5.0|^6.0", + "symfony/string": "^5.0|^6.0", + "symfony/translation": "^5.3|^6.0", + "symfony/twig-bundle": "^4.4|^5.0|^6.0", + "symfony/validator": "^5.3.11|^6.0", + "symfony/web-link": "^4.4|^5.0|^6.0", + "symfony/workflow": "^5.2|^6.0", + "symfony/yaml": "^4.4|^5.0|^6.0", + "twig/twig": "^2.10|^3.0.4" + }, + "suggest": { + "ext-apcu": "For best performance of the system caches", + "symfony/console": "For using the console commands", + "symfony/form": "For using forms", + "symfony/property-info": "For using the property_info service", + "symfony/serializer": "For using the serializer service", + "symfony/validator": "For using validation", + "symfony/web-link": "For using web links, features such as preloading, prefetching or prerendering", + "symfony/yaml": "For using the debug:config and lint:yaml commands" + }, + "type": "symfony-bundle", + "autoload": { + "psr-4": { + "Symfony\\Bundle\\FrameworkBundle\\": "" + }, + "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": "Provides a tight integration between Symfony components and the Symfony full-stack framework", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/framework-bundle/tree/v5.4.44" + }, + "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": "2024-09-20T08:11:35+00:00" + }, + { + "name": "symfony/google-mailer", + "version": "v5.4.40", + "source": { + "type": "git", + "url": "https://github.com/symfony/google-mailer.git", + "reference": "beca9c52ec192b32accf5ec0bcddb8cd29c81a9e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/google-mailer/zipball/beca9c52ec192b32accf5ec0bcddb8cd29c81a9e", + "reference": "beca9c52ec192b32accf5ec0bcddb8cd29c81a9e", + "shasum": "" }, - "suggest": { - "ext-apcu": "For best performance of the system caches", - "symfony/console": "For using the console commands", - "symfony/form": "For using forms", - "symfony/property-info": "For using the property_info service", - "symfony/serializer": "For using the serializer service", - "symfony/validator": "For using validation", - "symfony/web-link": "For using web links, features such as preloading, prefetching or prerendering", - "symfony/yaml": "For using the debug:config and lint:yaml commands" + "require": { + "php": ">=7.2.5", + "psr/event-dispatcher": "^1", + "symfony/mailer": "^5.4.21|^6.2.7" }, - "type": "symfony-bundle", + "require-dev": { + "symfony/http-client": "^4.4|^5.0|^6.0" + }, + "type": "symfony-mailer-bridge", "autoload": { "psr-4": { - "Symfony\\Bundle\\FrameworkBundle\\": "" + "Symfony\\Component\\Mailer\\Bridge\\Google\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -3722,10 +4225,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Provides a tight integration between Symfony components and the Symfony full-stack framework", + "description": "Symfony Google Mailer Bridge", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/framework-bundle/tree/v5.3.4" + "source": "https://github.com/symfony/google-mailer/tree/v5.4.40" }, "funding": [ { @@ -3741,30 +4244,30 @@ "type": "tidelift" } ], - "time": "2021-07-25T09:39:16+00:00" + "time": "2024-05-31T14:33:22+00:00" }, { "name": "symfony/http-client", - "version": "v5.3.4", + "version": "v5.4.44", "source": { "type": "git", "url": "https://github.com/symfony/http-client.git", - "reference": "67c177d4df8601d9a71f9d615c52171c98d22d74" + "reference": "58d3dc6bfa5fb37137e32d52ddc202ba4d1cea04" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/67c177d4df8601d9a71f9d615c52171c98d22d74", - "reference": "67c177d4df8601d9a71f9d615c52171c98d22d74", + "url": "https://api.github.com/repos/symfony/http-client/zipball/58d3dc6bfa5fb37137e32d52ddc202ba4d1cea04", + "reference": "58d3dc6bfa5fb37137e32d52ddc202ba4d1cea04", "shasum": "" }, "require": { "php": ">=7.2.5", "psr/log": "^1|^2|^3", - "symfony/deprecation-contracts": "^2.1", - "symfony/http-client-contracts": "^2.4", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/http-client-contracts": "^2.5.3", "symfony/polyfill-php73": "^1.11", "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.0|^2" + "symfony/service-contracts": "^1.0|^2|^3" }, "provide": { "php-http/async-client-implementation": "*", @@ -3777,14 +4280,15 @@ "amphp/http-client": "^4.2.1", "amphp/http-tunnel": "^1.0", "amphp/socket": "^1.1", - "guzzlehttp/promises": "^1.4", + "guzzlehttp/promises": "^1.4|^2.0", "nyholm/psr7": "^1.0", "php-http/httplug": "^1.0|^2.0", + "php-http/message-factory": "^1.0", "psr/http-client": "^1.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/http-kernel": "^4.4.13|^5.1.5", - "symfony/process": "^4.4|^5.0", - "symfony/stopwatch": "^4.4|^5.0" + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/http-kernel": "^4.4.13|^5.1.5|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/stopwatch": "^4.4|^5.0|^6.0" }, "type": "library", "autoload": { @@ -3811,8 +4315,11 @@ ], "description": "Provides powerful methods to fetch HTTP resources synchronously or asynchronously", "homepage": "https://symfony.com", + "keywords": [ + "http" + ], "support": { - "source": "https://github.com/symfony/http-client/tree/v5.3.4" + "source": "https://github.com/symfony/http-client/tree/v5.4.44" }, "funding": [ { @@ -3828,20 +4335,20 @@ "type": "tidelift" } ], - "time": "2021-07-23T15:55:36+00:00" + "time": "2024-09-16T14:04:28+00:00" }, { "name": "symfony/http-client-contracts", - "version": "v2.4.0", + "version": "v2.5.3", "source": { "type": "git", "url": "https://github.com/symfony/http-client-contracts.git", - "reference": "7e82f6084d7cae521a75ef2cb5c9457bbda785f4" + "reference": "e5cc97c2b4a4db0ba26bebc154f1426e3fd1d2f1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/7e82f6084d7cae521a75ef2cb5c9457bbda785f4", - "reference": "7e82f6084d7cae521a75ef2cb5c9457bbda785f4", + "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/e5cc97c2b4a4db0ba26bebc154f1426e3fd1d2f1", + "reference": "e5cc97c2b4a4db0ba26bebc154f1426e3fd1d2f1", "shasum": "" }, "require": { @@ -3853,7 +4360,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "2.4-dev" + "dev-main": "2.5-dev" }, "thanks": { "name": "symfony/contracts", @@ -3890,7 +4397,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/http-client-contracts/tree/v2.4.0" + "source": "https://github.com/symfony/http-client-contracts/tree/v2.5.3" }, "funding": [ { @@ -3906,33 +4413,36 @@ "type": "tidelift" } ], - "time": "2021-04-11T23:07:08+00:00" + "time": "2024-03-26T19:42:53+00:00" }, { "name": "symfony/http-foundation", - "version": "v5.3.6", + "version": "v5.4.44", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "a8388f7b7054a7401997008ce9cd8c6b0ab7ac75" + "reference": "ae0d217e5932aa0b70ddb4cf7822cc76d48aee53" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/a8388f7b7054a7401997008ce9cd8c6b0ab7ac75", - "reference": "a8388f7b7054a7401997008ce9cd8c6b0ab7ac75", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ae0d217e5932aa0b70ddb4cf7822cc76d48aee53", + "reference": "ae0d217e5932aa0b70ddb4cf7822cc76d48aee53", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-mbstring": "~1.1", "symfony/polyfill-php80": "^1.16" }, "require-dev": { - "predis/predis": "~1.0", - "symfony/cache": "^4.4|^5.0", - "symfony/expression-language": "^4.4|^5.0", - "symfony/mime": "^4.4|^5.0" + "predis/predis": "^1.0|^2.0", + "symfony/cache": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4", + "symfony/mime": "^4.4|^5.0|^6.0", + "symfony/rate-limiter": "^5.2|^6.0" }, "suggest": { "symfony/mime": "To use the file extension guesser" @@ -3963,7 +4473,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v5.3.6" + "source": "https://github.com/symfony/http-foundation/tree/v5.4.44" }, "funding": [ { @@ -3979,36 +4489,35 @@ "type": "tidelift" } ], - "time": "2021-07-27T17:08:17+00:00" + "time": "2024-09-15T07:55:06+00:00" }, { "name": "symfony/http-kernel", - "version": "v5.3.6", + "version": "v5.4.44", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "60030f209018356b3b553b9dbd84ad2071c1b7e0" + "reference": "788dcf72d9af7432a886aa3b0c5904d68087ba13" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/60030f209018356b3b553b9dbd84ad2071c1b7e0", - "reference": "60030f209018356b3b553b9dbd84ad2071c1b7e0", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/788dcf72d9af7432a886aa3b0c5904d68087ba13", + "reference": "788dcf72d9af7432a886aa3b0c5904d68087ba13", "shasum": "" }, "require": { "php": ">=7.2.5", "psr/log": "^1|^2", - "symfony/deprecation-contracts": "^2.1", - "symfony/error-handler": "^4.4|^5.0", - "symfony/event-dispatcher": "^5.0", - "symfony/http-client-contracts": "^1.1|^2", - "symfony/http-foundation": "^5.3", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/event-dispatcher": "^5.0|^6.0", + "symfony/http-foundation": "^5.4.21|^6.2.7", "symfony/polyfill-ctype": "^1.8", "symfony/polyfill-php73": "^1.9", "symfony/polyfill-php80": "^1.16" }, "conflict": { - "symfony/browser-kit": "<4.4", + "symfony/browser-kit": "<5.4", "symfony/cache": "<5.0", "symfony/config": "<5.0", "symfony/console": "<4.4", @@ -4028,19 +4537,21 @@ }, "require-dev": { "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^4.4|^5.0", - "symfony/config": "^5.0", - "symfony/console": "^4.4|^5.0", - "symfony/css-selector": "^4.4|^5.0", - "symfony/dependency-injection": "^5.3", - "symfony/dom-crawler": "^4.4|^5.0", - "symfony/expression-language": "^4.4|^5.0", - "symfony/finder": "^4.4|^5.0", - "symfony/process": "^4.4|^5.0", - "symfony/routing": "^4.4|^5.0", - "symfony/stopwatch": "^4.4|^5.0", - "symfony/translation": "^4.4|^5.0", - "symfony/translation-contracts": "^1.1|^2", + "symfony/browser-kit": "^5.4|^6.0", + "symfony/config": "^5.0|^6.0", + "symfony/console": "^4.4|^5.0|^6.0", + "symfony/css-selector": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^5.3|^6.0", + "symfony/dom-crawler": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/finder": "^4.4|^5.0|^6.0", + "symfony/http-client-contracts": "^1.1|^2|^3", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/routing": "^4.4|^5.0|^6.0", + "symfony/stopwatch": "^4.4|^5.0|^6.0", + "symfony/translation": "^4.4|^5.0|^6.0", + "symfony/translation-contracts": "^1.1|^2|^3", + "symfony/var-dumper": "^4.4.31|^5.4", "twig/twig": "^2.13|^3.0.4" }, "suggest": { @@ -4075,7 +4586,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v5.3.6" + "source": "https://github.com/symfony/http-kernel/tree/v5.4.44" }, "funding": [ { @@ -4091,43 +4602,45 @@ "type": "tidelift" } ], - "time": "2021-07-29T07:06:27+00:00" + "time": "2024-09-21T05:47:58+00:00" }, { "name": "symfony/intl", - "version": "v5.3.4", + "version": "v5.4.44", "source": { "type": "git", "url": "https://github.com/symfony/intl.git", - "reference": "f1d1420771b3a94fcf2fda06728c61eba5de4b90" + "reference": "e4171a01aaa3789f351b5d58f9567b0fb81a0918" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/intl/zipball/f1d1420771b3a94fcf2fda06728c61eba5de4b90", - "reference": "f1d1420771b3a94fcf2fda06728c61eba5de4b90", + "url": "https://api.github.com/repos/symfony/intl/zipball/e4171a01aaa3789f351b5d58f9567b0fb81a0918", + "reference": "e4171a01aaa3789f351b5d58f9567b0fb81a0918", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-php80": "^1.16" }, "require-dev": { - "symfony/filesystem": "^4.4|^5.0" + "symfony/filesystem": "^4.4|^5.0|^6.0", + "symfony/var-exporter": "^5.4|^6.0" }, "type": "library", "autoload": { + "files": [ + "Resources/functions.php" + ], "psr-4": { "Symfony\\Component\\Intl\\": "" }, "classmap": [ "Resources/stubs" ], - "files": [ - "Resources/functions.php" - ], "exclude-from-classmap": [ - "/Tests/" + "/Tests/", + "/Resources/data/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -4163,7 +4676,7 @@ "localization" ], "support": { - "source": "https://github.com/symfony/intl/tree/v5.3.4" + "source": "https://github.com/symfony/intl/tree/v5.4.44" }, "funding": [ { @@ -4179,38 +4692,39 @@ "type": "tidelift" } ], - "time": "2021-07-23T15:55:36+00:00" + "time": "2024-09-20T07:56:40+00:00" }, { "name": "symfony/mailer", - "version": "v5.3.4", + "version": "v5.4.44", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "c1f83da2296741110be35dd779f2a9e412cec466" + "reference": "2a5e44d984872cb161b24fc4dedba7fd7632185f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/c1f83da2296741110be35dd779f2a9e412cec466", - "reference": "c1f83da2296741110be35dd779f2a9e412cec466", + "url": "https://api.github.com/repos/symfony/mailer/zipball/2a5e44d984872cb161b24fc4dedba7fd7632185f", + "reference": "2a5e44d984872cb161b24fc4dedba7fd7632185f", "shasum": "" }, "require": { - "egulias/email-validator": "^2.1.10|^3", + "egulias/email-validator": "^2.1.10|^3|^4", "php": ">=7.2.5", + "psr/event-dispatcher": "^1", "psr/log": "^1|^2|^3", - "symfony/deprecation-contracts": "^2.1", - "symfony/event-dispatcher": "^4.4|^5.0", - "symfony/mime": "^5.2.6", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/event-dispatcher": "^4.4|^5.0|^6.0", + "symfony/mime": "^5.2.6|^6.0", "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1|^2" + "symfony/service-contracts": "^1.1|^2|^3" }, "conflict": { "symfony/http-kernel": "<4.4" }, "require-dev": { - "symfony/http-client-contracts": "^1.1|^2", - "symfony/messenger": "^4.4|^5.0" + "symfony/http-client": "^4.4|^5.0|^6.0", + "symfony/messenger": "^4.4|^5.0|^6.0" }, "type": "library", "autoload": { @@ -4238,7 +4752,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v5.3.4" + "source": "https://github.com/symfony/mailer/tree/v5.4.44" }, "funding": [ { @@ -4254,25 +4768,25 @@ "type": "tidelift" } ], - "time": "2021-07-23T15:55:36+00:00" + "time": "2024-09-08T09:19:02+00:00" }, { "name": "symfony/mime", - "version": "v5.3.4", + "version": "v5.4.43", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "633e4e8afe9e529e5599d71238849a4218dd497b" + "reference": "a02711d6ce461edada8c0f8641aa536709b99b47" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/633e4e8afe9e529e5599d71238849a4218dd497b", - "reference": "633e4e8afe9e529e5599d71238849a4218dd497b", + "url": "https://api.github.com/repos/symfony/mime/zipball/a02711d6ce461edada8c0f8641aa536709b99b47", + "reference": "a02711d6ce461edada8c0f8641aa536709b99b47", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-intl-idn": "^1.10", "symfony/polyfill-mbstring": "^1.0", "symfony/polyfill-php80": "^1.16" @@ -4281,15 +4795,17 @@ "egulias/email-validator": "~3.0.0", "phpdocumentor/reflection-docblock": "<3.2.2", "phpdocumentor/type-resolver": "<1.4.0", - "symfony/mailer": "<4.4" + "symfony/mailer": "<4.4", + "symfony/serializer": "<5.4.35|>=6,<6.3.12|>=6.4,<6.4.3" }, "require-dev": { - "egulias/email-validator": "^2.1.10|^3.1", + "egulias/email-validator": "^2.1.10|^3.1|^4", "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/property-access": "^4.4|^5.1", - "symfony/property-info": "^4.4|^5.1", - "symfony/serializer": "^5.2" + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/process": "^5.4|^6.4", + "symfony/property-access": "^4.4|^5.1|^6.0", + "symfony/property-info": "^4.4|^5.1|^6.0", + "symfony/serializer": "^5.4.35|~6.3.12|^6.4.3" }, "type": "library", "autoload": { @@ -4321,7 +4837,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v5.3.4" + "source": "https://github.com/symfony/mime/tree/v5.4.43" }, "funding": [ { @@ -4337,42 +4853,42 @@ "type": "tidelift" } ], - "time": "2021-07-21T12:40:44+00:00" + "time": "2024-08-13T10:38:38+00:00" }, { "name": "symfony/monolog-bridge", - "version": "v5.3.4", + "version": "v5.4.40", "source": { "type": "git", "url": "https://github.com/symfony/monolog-bridge.git", - "reference": "a0d881165b902a04f41e873426aa52a068064ac4" + "reference": "ac6e0bf2a275e017c1dedd54dd0f1fbf252a9351" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/a0d881165b902a04f41e873426aa52a068064ac4", - "reference": "a0d881165b902a04f41e873426aa52a068064ac4", + "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/ac6e0bf2a275e017c1dedd54dd0f1fbf252a9351", + "reference": "ac6e0bf2a275e017c1dedd54dd0f1fbf252a9351", "shasum": "" }, "require": { "monolog/monolog": "^1.25.1|^2", "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", - "symfony/http-kernel": "^5.3", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/http-kernel": "^5.3|^6.0", "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1|^2" + "symfony/service-contracts": "^1.1|^2|^3" }, "conflict": { "symfony/console": "<4.4", "symfony/http-foundation": "<5.3" }, "require-dev": { - "symfony/console": "^4.4|^5.0", - "symfony/http-client": "^4.4|^5.0", - "symfony/mailer": "^4.4|^5.0", - "symfony/messenger": "^4.4|^5.0", - "symfony/mime": "^4.4|^5.0", - "symfony/security-core": "^4.4|^5.0", - "symfony/var-dumper": "^4.4|^5.0" + "symfony/console": "^4.4|^5.0|^6.0", + "symfony/http-client": "^4.4|^5.0|^6.0", + "symfony/mailer": "^4.4|^5.0|^6.0", + "symfony/messenger": "^4.4|^5.0|^6.0", + "symfony/mime": "^4.4|^5.0|^6.0", + "symfony/security-core": "^4.4|^5.0|^6.0", + "symfony/var-dumper": "^4.4|^5.0|^6.0" }, "suggest": { "symfony/console": "For the possibility to show log messages in console commands depending on verbosity settings.", @@ -4405,7 +4921,7 @@ "description": "Provides integration for Monolog with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/monolog-bridge/tree/v5.3.4" + "source": "https://github.com/symfony/monolog-bridge/tree/v5.4.40" }, "funding": [ { @@ -4421,34 +4937,34 @@ "type": "tidelift" } ], - "time": "2021-07-23T15:55:36+00:00" + "time": "2024-05-31T14:33:22+00:00" }, { "name": "symfony/monolog-bundle", - "version": "v3.7.0", + "version": "v3.10.0", "source": { "type": "git", "url": "https://github.com/symfony/monolog-bundle.git", - "reference": "4054b2e940a25195ae15f0a49ab0c51718922eb4" + "reference": "414f951743f4aa1fd0f5bf6a0e9c16af3fe7f181" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/4054b2e940a25195ae15f0a49ab0c51718922eb4", - "reference": "4054b2e940a25195ae15f0a49ab0c51718922eb4", + "url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/414f951743f4aa1fd0f5bf6a0e9c16af3fe7f181", + "reference": "414f951743f4aa1fd0f5bf6a0e9c16af3fe7f181", "shasum": "" }, "require": { - "monolog/monolog": "~1.22 || ~2.0", - "php": ">=7.1.3", - "symfony/config": "~4.4 || ^5.0", - "symfony/dependency-injection": "^4.4 || ^5.0", - "symfony/http-kernel": "~4.4 || ^5.0", - "symfony/monolog-bridge": "~4.4 || ^5.0" + "monolog/monolog": "^1.25.1 || ^2.0 || ^3.0", + "php": ">=7.2.5", + "symfony/config": "^5.4 || ^6.0 || ^7.0", + "symfony/dependency-injection": "^5.4 || ^6.0 || ^7.0", + "symfony/http-kernel": "^5.4 || ^6.0 || ^7.0", + "symfony/monolog-bridge": "^5.4 || ^6.0 || ^7.0" }, "require-dev": { - "symfony/console": "~4.4 || ^5.0", - "symfony/phpunit-bridge": "^5.1", - "symfony/yaml": "~4.4 || ^5.0" + "symfony/console": "^5.4 || ^6.0 || ^7.0", + "symfony/phpunit-bridge": "^6.3 || ^7.0", + "symfony/yaml": "^5.4 || ^6.0 || ^7.0" }, "type": "symfony-bundle", "extra": { @@ -4486,7 +5002,7 @@ ], "support": { "issues": "https://github.com/symfony/monolog-bundle/issues", - "source": "https://github.com/symfony/monolog-bundle/tree/v3.7.0" + "source": "https://github.com/symfony/monolog-bundle/tree/v3.10.0" }, "funding": [ { @@ -4502,20 +5018,20 @@ "type": "tidelift" } ], - "time": "2021-03-31T07:20:47+00:00" + "time": "2023-11-06T17:08:13+00:00" }, { "name": "symfony/notifier", - "version": "v5.3.4", + "version": "v5.4.44", "source": { "type": "git", "url": "https://github.com/symfony/notifier.git", - "reference": "71d3d7f35a7d5706a200a6b9516c7c2922ee4dd7" + "reference": "1507e437c76a72211c341d9b1838c771964e1981" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/notifier/zipball/71d3d7f35a7d5706a200a6b9516c7c2922ee4dd7", - "reference": "71d3d7f35a7d5706a200a6b9516c7c2922ee4dd7", + "url": "https://api.github.com/repos/symfony/notifier/zipball/1507e437c76a72211c341d9b1838c771964e1981", + "reference": "1507e437c76a72211c341d9b1838c771964e1981", "shasum": "" }, "require": { @@ -4540,15 +5056,16 @@ "symfony/sendinblue-notifier": "<5.3", "symfony/sinch-notifier": "<5.3", "symfony/slack-notifier": "<5.3", + "symfony/sms77-notifier": "<5.3", "symfony/smsapi-notifier": "<5.3", "symfony/telegram-notifier": "<5.3", "symfony/twilio-notifier": "<5.3", "symfony/zulip-notifier": "<5.3" }, "require-dev": { - "symfony/event-dispatcher-contracts": "^2", - "symfony/http-client-contracts": "^2", - "symfony/messenger": "^4.4 || ^5.0" + "symfony/event-dispatcher-contracts": "^2|^3", + "symfony/http-client-contracts": "^2|^3", + "symfony/messenger": "^4.4|^5.0|^6.0" }, "type": "library", "autoload": { @@ -4580,7 +5097,7 @@ "notifier" ], "support": { - "source": "https://github.com/symfony/notifier/tree/v5.3.4" + "source": "https://github.com/symfony/notifier/tree/v5.4.44" }, "funding": [ { @@ -4596,25 +5113,25 @@ "type": "tidelift" } ], - "time": "2021-07-19T06:02:01+00:00" + "time": "2024-09-08T09:19:02+00:00" }, { "name": "symfony/options-resolver", - "version": "v5.3.4", + "version": "v5.4.40", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "a603e5701bd6e305cfc777a8b50bf081ef73105e" + "reference": "bd1afbde6613a8d6b956115e0e14b196191fd0c4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/a603e5701bd6e305cfc777a8b50bf081ef73105e", - "reference": "a603e5701bd6e305cfc777a8b50bf081ef73105e", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/bd1afbde6613a8d6b956115e0e14b196191fd0c4", + "reference": "bd1afbde6613a8d6b956115e0e14b196191fd0c4", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-php73": "~1.0", "symfony/polyfill-php80": "^1.16" }, @@ -4649,7 +5166,7 @@ "options" ], "support": { - "source": "https://github.com/symfony/options-resolver/tree/v5.3.4" + "source": "https://github.com/symfony/options-resolver/tree/v5.4.40" }, "funding": [ { @@ -4665,32 +5182,33 @@ "type": "tidelift" } ], - "time": "2021-07-23T15:55:36+00:00" + "time": "2024-05-31T14:33:22+00:00" }, { "name": "symfony/password-hasher", - "version": "v5.3.4", + "version": "v5.4.40", "source": { "type": "git", "url": "https://github.com/symfony/password-hasher.git", - "reference": "61dd1e90fa0ebf6f4982787b1e033a9606357d7e" + "reference": "21b98178ab2024e6c7d8ab72cca9ba16015c6093" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/password-hasher/zipball/61dd1e90fa0ebf6f4982787b1e033a9606357d7e", - "reference": "61dd1e90fa0ebf6f4982787b1e033a9606357d7e", + "url": "https://api.github.com/repos/symfony/password-hasher/zipball/21b98178ab2024e6c7d8ab72cca9ba16015c6093", + "reference": "21b98178ab2024e6c7d8ab72cca9ba16015c6093", "shasum": "" }, "require": { "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-php80": "^1.15" }, "conflict": { "symfony/security-core": "<5.3" }, "require-dev": { - "symfony/console": "^5", - "symfony/security-core": "^5.3" + "symfony/console": "^5.3|^6.0", + "symfony/security-core": "^5.3|^6.0" }, "type": "library", "autoload": { @@ -4722,7 +5240,7 @@ "password" ], "support": { - "source": "https://github.com/symfony/password-hasher/tree/v5.3.4" + "source": "https://github.com/symfony/password-hasher/tree/v5.4.40" }, "funding": [ { @@ -4738,45 +5256,42 @@ "type": "tidelift" } ], - "time": "2021-06-30T13:49:12+00:00" + "time": "2024-05-31T14:33:22+00:00" }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.23.1", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "16880ba9c5ebe3642d1995ab866db29270b36535" + "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/16880ba9c5ebe3642d1995ab866db29270b36535", - "reference": "16880ba9c5ebe3642d1995ab866db29270b36535", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe", + "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "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" - ] + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -4803,7 +5318,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.23.1" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.31.0" }, "funding": [ { @@ -4819,33 +5334,30 @@ "type": "tidelift" } ], - "time": "2021-05-27T12:26:48+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-intl-icu", - "version": "v1.23.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-icu.git", - "reference": "4a80a521d6176870b6445cfb469c130f9cae1dda" + "reference": "d80a05e9904d2c2b9b95929f3e4b5d3a8f418d78" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/4a80a521d6176870b6445cfb469c130f9cae1dda", - "reference": "4a80a521d6176870b6445cfb469c130f9cae1dda", + "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/d80a05e9904d2c2b9b95929f3e4b5d3a8f418d78", + "reference": "d80a05e9904d2c2b9b95929f3e4b5d3a8f418d78", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "suggest": { "ext-intl": "For best performance and support of other locales than \"en\"" }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -4890,7 +5402,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-icu/tree/v1.23.0" + "source": "https://github.com/symfony/polyfill-intl-icu/tree/v1.31.0" }, "funding": [ { @@ -4906,47 +5418,43 @@ "type": "tidelift" } ], - "time": "2021-05-24T10:04:56+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-intl-idn", - "version": "v1.23.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "65bd267525e82759e7d8c4e8ceea44f398838e65" + "reference": "c36586dcf89a12315939e00ec9b4474adcb1d773" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/65bd267525e82759e7d8c4e8ceea44f398838e65", - "reference": "65bd267525e82759e7d8c4e8ceea44f398838e65", + "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.23-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Intl\\Idn\\": "" - }, "files": [ "bootstrap.php" - ] + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Idn\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -4977,7 +5485,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.23.0" + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.31.0" }, "funding": [ { @@ -4993,45 +5501,42 @@ "type": "tidelift" } ], - "time": "2021-05-27T09:27:20+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.23.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" + "reference": "3833d7255cc303546435cb650316bff708a1c75c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", + "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.23-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Intl\\Normalizer\\": "" - }, "files": [ "bootstrap.php" ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, "classmap": [ "Resources/stubs" ] @@ -5061,7 +5566,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.23.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.31.0" }, "funding": [ { @@ -5077,45 +5582,45 @@ "type": "tidelift" } ], - "time": "2021-02-19T12:13:01+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.23.1", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6" + "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9174a3d80210dca8daa7f31fec659150bbeabfc6", - "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/85181ba99b2345b0ef10ce42ecac37612d9fd341", + "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" + }, + "provide": { + "ext-mbstring": "*" }, "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" - ] + ], + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -5141,7 +5646,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.23.1" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.31.0" }, "funding": [ { @@ -5157,42 +5662,39 @@ "type": "tidelift" } ], - "time": "2021-05-27T12:26:48+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-php73", - "version": "v1.23.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "fba8933c384d6476ab14fb7b8526e5287ca7e010" + "reference": "0f68c03565dcaaf25a890667542e8bd75fe7e5bb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/fba8933c384d6476ab14fb7b8526e5287ca7e010", - "reference": "fba8933c384d6476ab14fb7b8526e5287ca7e010", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/0f68c03565dcaaf25a890667542e8bd75fe7e5bb", + "reference": "0f68c03565dcaaf25a890667542e8bd75fe7e5bb", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "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" ], + "psr-4": { + "Symfony\\Polyfill\\Php73\\": "" + }, "classmap": [ "Resources/stubs" ] @@ -5220,7 +5722,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php73/tree/v1.23.0" + "source": "https://github.com/symfony/polyfill-php73/tree/v1.31.0" }, "funding": [ { @@ -5236,42 +5738,39 @@ "type": "tidelift" } ], - "time": "2021-02-19T12:13:01+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-php80", - "version": "v1.23.1", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "1100343ed1a92e3a38f9ae122fc0eb21602547be" + "reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/1100343ed1a92e3a38f9ae122fc0eb21602547be", - "reference": "1100343ed1a92e3a38f9ae122fc0eb21602547be", + "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.23-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php80\\": "" - }, "files": [ "bootstrap.php" ], + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, "classmap": [ "Resources/stubs" ] @@ -5303,7 +5802,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.23.1" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.31.0" }, "funding": [ { @@ -5319,42 +5818,39 @@ "type": "tidelift" } ], - "time": "2021-07-28T13:41:28+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-php81", - "version": "v1.23.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "e66119f3de95efc359483f810c4c3e6436279436" + "reference": "4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/e66119f3de95efc359483f810c4c3e6436279436", - "reference": "e66119f3de95efc359483f810c4c3e6436279436", + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c", + "reference": "4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "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\\Php81\\": "" - }, "files": [ "bootstrap.php" ], + "psr-4": { + "Symfony\\Polyfill\\Php81\\": "" + }, "classmap": [ "Resources/stubs" ] @@ -5382,7 +5878,86 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php81/tree/v1.23.0" + "source": "https://github.com/symfony/polyfill-php81/tree/v1.31.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": "2024-09-09T11:45:10+00:00" + }, + { + "name": "symfony/polyfill-uuid", + "version": "v1.31.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-uuid.git", + "reference": "21533be36c24be3f4b1669c4725c7d1d2bab4ae2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/21533be36c24be3f4b1669c4725c7d1d2bab4ae2", + "reference": "21533be36c24be3f4b1669c4725c7d1d2bab4ae2", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "provide": { + "ext-uuid": "*" + }, + "suggest": { + "ext-uuid": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Uuid\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Grégoire Pineau", + "email": "lyrixx@lyrixx.info" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for uuid functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "uuid" + ], + "support": { + "source": "https://github.com/symfony/polyfill-uuid/tree/v1.31.0" }, "funding": [ { @@ -5398,20 +5973,20 @@ "type": "tidelift" } ], - "time": "2021-05-21T13:25:03+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/process", - "version": "v5.3.4", + "version": "v5.4.44", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "d16634ee55b895bd85ec714dadc58e4428ecf030" + "reference": "1b9fa82b5c62cd49da8c9e3952dd8531ada65096" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/d16634ee55b895bd85ec714dadc58e4428ecf030", - "reference": "d16634ee55b895bd85ec714dadc58e4428ecf030", + "url": "https://api.github.com/repos/symfony/process/zipball/1b9fa82b5c62cd49da8c9e3952dd8531ada65096", + "reference": "1b9fa82b5c62cd49da8c9e3952dd8531ada65096", "shasum": "" }, "require": { @@ -5444,7 +6019,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v5.3.4" + "source": "https://github.com/symfony/process/tree/v5.4.44" }, "funding": [ { @@ -5460,30 +6035,30 @@ "type": "tidelift" } ], - "time": "2021-07-23T15:54:19+00:00" + "time": "2024-09-17T12:46:43+00:00" }, { "name": "symfony/property-access", - "version": "v5.3.4", + "version": "v5.4.43", "source": { "type": "git", "url": "https://github.com/symfony/property-access.git", - "reference": "098681253076af7070df7d9debe5f75733eea189" + "reference": "2d751866b976a02e22743359733edc55cd20e9fd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-access/zipball/098681253076af7070df7d9debe5f75733eea189", - "reference": "098681253076af7070df7d9debe5f75733eea189", + "url": "https://api.github.com/repos/symfony/property-access/zipball/2d751866b976a02e22743359733edc55cd20e9fd", + "reference": "2d751866b976a02e22743359733edc55cd20e9fd", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-php80": "^1.16", - "symfony/property-info": "^5.2" + "symfony/property-info": "^5.2|^6.0" }, "require-dev": { - "symfony/cache": "^4.4|^5.0" + "symfony/cache": "^4.4|^5.0|^6.0" }, "suggest": { "psr/cache-implementation": "To cache access methods." @@ -5521,11 +6096,11 @@ "injection", "object", "property", - "property path", + "property-path", "reflection" ], "support": { - "source": "https://github.com/symfony/property-access/tree/v5.3.4" + "source": "https://github.com/symfony/property-access/tree/v5.4.43" }, "funding": [ { @@ -5541,27 +6116,27 @@ "type": "tidelift" } ], - "time": "2021-07-21T12:40:44+00:00" + "time": "2024-08-29T08:50:14+00:00" }, { "name": "symfony/property-info", - "version": "v5.3.4", + "version": "v5.4.42", "source": { "type": "git", "url": "https://github.com/symfony/property-info.git", - "reference": "0f42009150679a7a256eb6ee106401af5d974ed2" + "reference": "825aa937f6e8cd63dcc118d0af84d7d4979cddf4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-info/zipball/0f42009150679a7a256eb6ee106401af5d974ed2", - "reference": "0f42009150679a7a256eb6ee106401af5d974ed2", + "url": "https://api.github.com/repos/symfony/property-info/zipball/825aa937f6e8cd63dcc118d0af84d7d4979cddf4", + "reference": "825aa937f6e8cd63dcc118d0af84d7d4979cddf4", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-php80": "^1.16", - "symfony/string": "^5.1" + "symfony/string": "^5.1|^6.0" }, "conflict": { "phpdocumentor/reflection-docblock": "<3.2.2", @@ -5569,11 +6144,12 @@ "symfony/dependency-injection": "<4.4" }, "require-dev": { - "doctrine/annotations": "^1.10.4", + "doctrine/annotations": "^1.10.4|^2", "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/cache": "^4.4|^5.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/serializer": "^4.4|^5.0" + "phpstan/phpdoc-parser": "^1.0", + "symfony/cache": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/serializer": "^4.4|^5.0|^6.0" }, "suggest": { "phpdocumentor/reflection-docblock": "To use the PHPDoc", @@ -5615,7 +6191,7 @@ "validator" ], "support": { - "source": "https://github.com/symfony/property-info/tree/v5.3.4" + "source": "https://github.com/symfony/property-info/tree/v5.4.42" }, "funding": [ { @@ -5631,31 +6207,30 @@ "type": "tidelift" } ], - "time": "2021-07-21T12:40:44+00:00" + "time": "2024-07-22T18:03:36+00:00" }, { "name": "symfony/proxy-manager-bridge", - "version": "v5.3.4", + "version": "v5.4.40", "source": { "type": "git", "url": "https://github.com/symfony/proxy-manager-bridge.git", - "reference": "76e61f33f6a34a340bf6e02211214f466e8e1dba" + "reference": "2ebc25e0174a6a244f7edada5a498f9728dc0d29" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/proxy-manager-bridge/zipball/76e61f33f6a34a340bf6e02211214f466e8e1dba", - "reference": "76e61f33f6a34a340bf6e02211214f466e8e1dba", + "url": "https://api.github.com/repos/symfony/proxy-manager-bridge/zipball/2ebc25e0174a6a244f7edada5a498f9728dc0d29", + "reference": "2ebc25e0174a6a244f7edada5a498f9728dc0d29", "shasum": "" }, "require": { - "composer/package-versions-deprecated": "^1.8", "friendsofphp/proxy-manager-lts": "^1.0.2", "php": ">=7.2.5", - "symfony/dependency-injection": "^5.0", + "symfony/dependency-injection": "^5.0|^6.0", "symfony/polyfill-php80": "^1.16" }, "require-dev": { - "symfony/config": "^4.4|^5.0" + "symfony/config": "^4.4|^5.0|^6.0" }, "type": "symfony-bridge", "autoload": { @@ -5683,7 +6258,7 @@ "description": "Provides integration for ProxyManager with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/proxy-manager-bridge/tree/v5.3.4" + "source": "https://github.com/symfony/proxy-manager-bridge/tree/v5.4.40" }, "funding": [ { @@ -5699,25 +6274,25 @@ "type": "tidelift" } ], - "time": "2021-07-21T12:38:00+00:00" + "time": "2024-05-31T14:33:22+00:00" }, { "name": "symfony/routing", - "version": "v5.3.4", + "version": "v5.4.43", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "0a35d2f57d73c46ab6d042ced783b81d09a624c4" + "reference": "b6f71780bbdd5e93e1c5638671cf0ba42aa8c6d8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/0a35d2f57d73c46ab6d042ced783b81d09a624c4", - "reference": "0a35d2f57d73c46ab6d042ced783b81d09a624c4", + "url": "https://api.github.com/repos/symfony/routing/zipball/b6f71780bbdd5e93e1c5638671cf0ba42aa8c6d8", + "reference": "b6f71780bbdd5e93e1c5638671cf0ba42aa8c6d8", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-php80": "^1.16" }, "conflict": { @@ -5727,13 +6302,13 @@ "symfony/yaml": "<4.4" }, "require-dev": { - "doctrine/annotations": "^1.12", + "doctrine/annotations": "^1.12|^2", "psr/log": "^1|^2|^3", - "symfony/config": "^5.3", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/expression-language": "^4.4|^5.0", - "symfony/http-foundation": "^4.4|^5.0", - "symfony/yaml": "^4.4|^5.0" + "symfony/config": "^5.3|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/http-foundation": "^4.4|^5.0|^6.0", + "symfony/yaml": "^4.4|^5.0|^6.0" }, "suggest": { "symfony/config": "For using the all-in-one router or any loader", @@ -5773,7 +6348,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v5.3.4" + "source": "https://github.com/symfony/routing/tree/v5.4.43" }, "funding": [ { @@ -5789,20 +6364,20 @@ "type": "tidelift" } ], - "time": "2021-07-23T15:55:36+00:00" + "time": "2024-08-27T06:36:52+00:00" }, { "name": "symfony/runtime", - "version": "v5.3.4", + "version": "v5.4.40", "source": { "type": "git", "url": "https://github.com/symfony/runtime.git", - "reference": "685a4a5491e25c7f2dd251d8fcca583b427ff290" + "reference": "50096d4ebebb4f9c41b87695868a6e34bdbf7cde" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/runtime/zipball/685a4a5491e25c7f2dd251d8fcca583b427ff290", - "reference": "685a4a5491e25c7f2dd251d8fcca583b427ff290", + "url": "https://api.github.com/repos/symfony/runtime/zipball/50096d4ebebb4f9c41b87695868a6e34bdbf7cde", + "reference": "50096d4ebebb4f9c41b87695868a6e34bdbf7cde", "shasum": "" }, "require": { @@ -5815,10 +6390,10 @@ }, "require-dev": { "composer/composer": "^1.0.2|^2.0", - "symfony/console": "^4.4|^5", - "symfony/dotenv": "^5.1", - "symfony/http-foundation": "^4.4|^5", - "symfony/http-kernel": "^4.4|^5" + "symfony/console": "^4.4.30|^5.4.9|^6.0.9", + "symfony/dotenv": "^5.1|^6.0", + "symfony/http-foundation": "^4.4.30|^5.3.7|^6.0", + "symfony/http-kernel": "^4.4.30|^5.3.7|^6.0" }, "type": "composer-plugin", "extra": { @@ -5849,8 +6424,11 @@ ], "description": "Enables decoupling PHP applications from global state", "homepage": "https://symfony.com", + "keywords": [ + "runtime" + ], "support": { - "source": "https://github.com/symfony/runtime/tree/v5.3.4" + "source": "https://github.com/symfony/runtime/tree/v5.4.40" }, "funding": [ { @@ -5866,37 +6444,38 @@ "type": "tidelift" } ], - "time": "2021-06-30T13:49:12+00:00" + "time": "2024-05-31T14:33:22+00:00" }, { "name": "symfony/security-bundle", - "version": "v5.3.4", + "version": "v5.4.43", "source": { "type": "git", "url": "https://github.com/symfony/security-bundle.git", - "reference": "7db2c7d6a1f15bdccbcb6d6807d60d0bd4a9d7ae" + "reference": "f14a15c6c7bb37879d59c129d96c4c07c7d5db32" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-bundle/zipball/7db2c7d6a1f15bdccbcb6d6807d60d0bd4a9d7ae", - "reference": "7db2c7d6a1f15bdccbcb6d6807d60d0bd4a9d7ae", + "url": "https://api.github.com/repos/symfony/security-bundle/zipball/f14a15c6c7bb37879d59c129d96c4c07c7d5db32", + "reference": "f14a15c6c7bb37879d59c129d96c4c07c7d5db32", "shasum": "" }, "require": { "ext-xml": "*", "php": ">=7.2.5", - "symfony/config": "^4.4|^5.0", - "symfony/dependency-injection": "^5.3", - "symfony/deprecation-contracts": "^2.1", - "symfony/event-dispatcher": "^5.1", - "symfony/http-foundation": "^5.3", - "symfony/http-kernel": "^5.3", - "symfony/password-hasher": "^5.3", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^5.4.43|^6.4.11", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/event-dispatcher": "^5.1|^6.0", + "symfony/http-foundation": "^5.3|^6.0", + "symfony/http-kernel": "^5.3|^6.0", + "symfony/password-hasher": "^5.3|^6.0", "symfony/polyfill-php80": "^1.16", - "symfony/security-core": "^5.3", - "symfony/security-csrf": "^4.4|^5.0", + "symfony/security-core": "^5.4|^6.0", + "symfony/security-csrf": "^4.4|^5.0|^6.0", "symfony/security-guard": "^5.3", - "symfony/security-http": "^5.3.2" + "symfony/security-http": "^5.4.30|^6.3.6", + "symfony/service-contracts": "^1.10|^2|^3" }, "conflict": { "symfony/browser-kit": "<4.4", @@ -5906,24 +6485,24 @@ "symfony/twig-bundle": "<4.4" }, "require-dev": { - "doctrine/annotations": "^1.10.4", - "symfony/asset": "^4.4|^5.0", - "symfony/browser-kit": "^4.4|^5.0", - "symfony/console": "^4.4|^5.0", - "symfony/css-selector": "^4.4|^5.0", - "symfony/dom-crawler": "^4.4|^5.0", - "symfony/expression-language": "^4.4|^5.0", - "symfony/form": "^4.4|^5.0", - "symfony/framework-bundle": "^5.3", - "symfony/ldap": "^5.3", - "symfony/process": "^4.4|^5.0", - "symfony/rate-limiter": "^5.2", - "symfony/serializer": "^4.4|^5.0", - "symfony/translation": "^4.4|^5.0", - "symfony/twig-bridge": "^4.4|^5.0", - "symfony/twig-bundle": "^4.4|^5.0", - "symfony/validator": "^4.4|^5.0", - "symfony/yaml": "^4.4|^5.0", + "doctrine/annotations": "^1.10.4|^2", + "symfony/asset": "^4.4|^5.0|^6.0", + "symfony/browser-kit": "^4.4|^5.0|^6.0", + "symfony/console": "^4.4|^5.0|^6.0", + "symfony/css-selector": "^4.4|^5.0|^6.0", + "symfony/dom-crawler": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/form": "^4.4|^5.0|^6.0", + "symfony/framework-bundle": "^5.3|^6.0", + "symfony/ldap": "^5.3|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/rate-limiter": "^5.2|^6.0", + "symfony/serializer": "^4.4|^5.0|^6.0", + "symfony/translation": "^4.4|^5.0|^6.0", + "symfony/twig-bridge": "^4.4|^5.0|^6.0", + "symfony/twig-bundle": "^4.4|^5.0|^6.0", + "symfony/validator": "^4.4|^5.0|^6.0", + "symfony/yaml": "^4.4|^5.0|^6.0", "twig/twig": "^2.13|^3.0.4" }, "type": "symfony-bundle", @@ -5952,7 +6531,7 @@ "description": "Provides a tight integration of the Security component into the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-bundle/tree/v5.3.4" + "source": "https://github.com/symfony/security-bundle/tree/v5.4.43" }, "funding": [ { @@ -5968,48 +6547,49 @@ "type": "tidelift" } ], - "time": "2021-07-26T16:33:26+00:00" + "time": "2024-08-19T09:13:19+00:00" }, { "name": "symfony/security-core", - "version": "v5.3.6", + "version": "v5.4.44", "source": { "type": "git", "url": "https://github.com/symfony/security-core.git", - "reference": "69b9a6a62d8914f10010646619bcd4485a71f119" + "reference": "8089509e8c92e884fa27af56596576320c3b310d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-core/zipball/69b9a6a62d8914f10010646619bcd4485a71f119", - "reference": "69b9a6a62d8914f10010646619bcd4485a71f119", + "url": "https://api.github.com/repos/symfony/security-core/zipball/8089509e8c92e884fa27af56596576320c3b310d", + "reference": "8089509e8c92e884fa27af56596576320c3b310d", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", - "symfony/event-dispatcher-contracts": "^1.1|^2", - "symfony/password-hasher": "^5.3", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/event-dispatcher-contracts": "^1.1|^2|^3", + "symfony/password-hasher": "^5.3|^6.0", "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1.6|^2" + "symfony/service-contracts": "^1.1.6|^2|^3" }, "conflict": { "symfony/event-dispatcher": "<4.4", "symfony/http-foundation": "<5.3", "symfony/ldap": "<4.4", "symfony/security-guard": "<4.4", + "symfony/translation": "<5.4.35|>=6.0,<6.3.12|>=6.4,<6.4.3", "symfony/validator": "<5.2" }, "require-dev": { "psr/cache": "^1.0|^2.0|^3.0", "psr/container": "^1.0|^2.0", "psr/log": "^1|^2|^3", - "symfony/cache": "^4.4|^5.0", - "symfony/event-dispatcher": "^4.4|^5.0", - "symfony/expression-language": "^4.4|^5.0", - "symfony/http-foundation": "^5.3", - "symfony/ldap": "^4.4|^5.0", - "symfony/translation": "^4.4|^5.0", - "symfony/validator": "^5.2" + "symfony/cache": "^4.4|^5.0|^6.0", + "symfony/event-dispatcher": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/http-foundation": "^5.3|^6.0", + "symfony/ldap": "^4.4|^5.0|^6.0", + "symfony/translation": "^5.4.35|~6.3.12|^6.4.3", + "symfony/validator": "^5.2|^6.0" }, "suggest": { "psr/container-implementation": "To instantiate the Security class", @@ -6045,7 +6625,7 @@ "description": "Symfony Security Component - Core Library", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-core/tree/v5.3.6" + "source": "https://github.com/symfony/security-core/tree/v5.4.44" }, "funding": [ { @@ -6061,32 +6641,33 @@ "type": "tidelift" } ], - "time": "2021-07-29T06:36:31+00:00" + "time": "2024-09-01T10:41:54+00:00" }, { "name": "symfony/security-csrf", - "version": "v5.3.4", + "version": "v5.4.40", "source": { "type": "git", "url": "https://github.com/symfony/security-csrf.git", - "reference": "94b533195cf7fb21f3fae8ce349861c6401d969e" + "reference": "9058d522c1c33d7ba13f4b3c79555cc2c4c16028" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-csrf/zipball/94b533195cf7fb21f3fae8ce349861c6401d969e", - "reference": "94b533195cf7fb21f3fae8ce349861c6401d969e", + "url": "https://api.github.com/repos/symfony/security-csrf/zipball/9058d522c1c33d7ba13f4b3c79555cc2c4c16028", + "reference": "9058d522c1c33d7ba13f4b3c79555cc2c4c16028", "shasum": "" }, "require": { "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-php80": "^1.16", - "symfony/security-core": "^4.4|^5.0" + "symfony/security-core": "^4.4|^5.0|^6.0" }, "conflict": { "symfony/http-foundation": "<5.3" }, "require-dev": { - "symfony/http-foundation": "^5.3" + "symfony/http-foundation": "^5.3|^6.0" }, "suggest": { "symfony/http-foundation": "For using the class SessionTokenStorage." @@ -6117,7 +6698,7 @@ "description": "Symfony Security Component - CSRF Library", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-csrf/tree/v5.3.4" + "source": "https://github.com/symfony/security-csrf/tree/v5.4.40" }, "funding": [ { @@ -6133,24 +6714,25 @@ "type": "tidelift" } ], - "time": "2021-07-21T12:40:44+00:00" + "time": "2024-05-31T14:33:22+00:00" }, { "name": "symfony/security-guard", - "version": "v5.3.4", + "version": "v5.4.40", "source": { "type": "git", "url": "https://github.com/symfony/security-guard.git", - "reference": "4e43b41c3809fdaea72ade100dae8c07045a2fa9" + "reference": "d930fd327c290f451c9d8dd7889169195d4484e9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-guard/zipball/4e43b41c3809fdaea72ade100dae8c07045a2fa9", - "reference": "4e43b41c3809fdaea72ade100dae8c07045a2fa9", + "url": "https://api.github.com/repos/symfony/security-guard/zipball/d930fd327c290f451c9d8dd7889169195d4484e9", + "reference": "d930fd327c290f451c9d8dd7889169195d4484e9", "shasum": "" }, "require": { "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-php80": "^1.15", "symfony/security-core": "^5.0", "symfony/security-http": "^5.3" @@ -6184,7 +6766,7 @@ "description": "Symfony Security Component - Guard", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-guard/tree/v5.3.4" + "source": "https://github.com/symfony/security-guard/tree/v5.4.40" }, "funding": [ { @@ -6200,31 +6782,32 @@ "type": "tidelift" } ], - "time": "2021-07-18T15:32:38+00:00" + "time": "2024-05-31T14:33:22+00:00" }, { "name": "symfony/security-http", - "version": "v5.3.6", + "version": "v5.4.44", "source": { "type": "git", "url": "https://github.com/symfony/security-http.git", - "reference": "ed6647291bd0afdbc3d41997c3dc7aa2eed8ca5b" + "reference": "c0f81598425c170807f19b9a5413ad05323f317b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-http/zipball/ed6647291bd0afdbc3d41997c3dc7aa2eed8ca5b", - "reference": "ed6647291bd0afdbc3d41997c3dc7aa2eed8ca5b", + "url": "https://api.github.com/repos/symfony/security-http/zipball/c0f81598425c170807f19b9a5413ad05323f317b", + "reference": "c0f81598425c170807f19b9a5413ad05323f317b", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", - "symfony/http-foundation": "^5.3", - "symfony/http-kernel": "^5.3", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/http-foundation": "^5.3|^6.0", + "symfony/http-kernel": "^5.3|^6.0", "symfony/polyfill-mbstring": "~1.0", "symfony/polyfill-php80": "^1.16", - "symfony/property-access": "^4.4|^5.0", - "symfony/security-core": "^5.3" + "symfony/property-access": "^4.4|^5.0|^6.0", + "symfony/security-core": "^5.4.19|~6.0.19|~6.1.11|^6.2.5", + "symfony/service-contracts": "^1.10|^2|^3" }, "conflict": { "symfony/event-dispatcher": "<4.3", @@ -6233,11 +6816,11 @@ }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/cache": "^4.4|^5.0", - "symfony/rate-limiter": "^5.2", - "symfony/routing": "^4.4|^5.0", - "symfony/security-csrf": "^4.4|^5.0", - "symfony/translation": "^4.4|^5.0" + "symfony/cache": "^4.4|^5.0|^6.0", + "symfony/rate-limiter": "^5.2|^6.0", + "symfony/routing": "^4.4|^5.0|^6.0", + "symfony/security-csrf": "^4.4|^5.0|^6.0", + "symfony/translation": "^4.4|^5.0|^6.0" }, "suggest": { "symfony/routing": "For using the HttpUtils class to create sub-requests, redirect the user, and match URLs", @@ -6269,7 +6852,7 @@ "description": "Symfony Security Component - HTTP Integration", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-http/tree/v5.3.6" + "source": "https://github.com/symfony/security-http/tree/v5.4.44" }, "funding": [ { @@ -6285,25 +6868,25 @@ "type": "tidelift" } ], - "time": "2021-07-27T00:57:57+00:00" + "time": "2024-09-11T06:50:28+00:00" }, { "name": "symfony/serializer", - "version": "v5.3.4", + "version": "v5.4.44", "source": { "type": "git", "url": "https://github.com/symfony/serializer.git", - "reference": "f04e368e3cb35948550c7e95cc8918cb7e761c0c" + "reference": "0f100dfa5b3bc8b052d15940d1168e5fa1e1a59a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/serializer/zipball/f04e368e3cb35948550c7e95cc8918cb7e761c0c", - "reference": "f04e368e3cb35948550c7e95cc8918cb7e761c0c", + "url": "https://api.github.com/repos/symfony/serializer/zipball/0f100dfa5b3bc8b052d15940d1168e5fa1e1a59a", + "reference": "0f100dfa5b3bc8b052d15940d1168e5fa1e1a59a", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-php80": "^1.16" }, @@ -6312,29 +6895,30 @@ "phpdocumentor/reflection-docblock": "<3.2.2", "phpdocumentor/type-resolver": "<1.4.0", "symfony/dependency-injection": "<4.4", - "symfony/property-access": "<4.4", - "symfony/property-info": "<5.3", + "symfony/property-access": "<5.4", + "symfony/property-info": "<5.4.24|>=6,<6.2.11", + "symfony/uid": "<5.3", "symfony/yaml": "<4.4" }, "require-dev": { - "doctrine/annotations": "^1.12", + "doctrine/annotations": "^1.12|^2", "phpdocumentor/reflection-docblock": "^3.2|^4.0|^5.0", - "symfony/cache": "^4.4|^5.0", - "symfony/config": "^4.4|^5.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/error-handler": "^4.4|^5.0", - "symfony/filesystem": "^4.4|^5.0", - "symfony/form": "^4.4|^5.0", - "symfony/http-foundation": "^4.4|^5.0", - "symfony/http-kernel": "^4.4|^5.0", - "symfony/mime": "^4.4|^5.0", - "symfony/property-access": "^4.4.9|^5.0.9", - "symfony/property-info": "^5.3", - "symfony/uid": "^5.1", - "symfony/validator": "^4.4|^5.0", - "symfony/var-dumper": "^4.4|^5.0", - "symfony/var-exporter": "^4.4|^5.0", - "symfony/yaml": "^4.4|^5.0" + "symfony/cache": "^4.4|^5.0|^6.0", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/filesystem": "^4.4|^5.0|^6.0", + "symfony/form": "^4.4|^5.0|^6.0", + "symfony/http-foundation": "^4.4|^5.0|^6.0", + "symfony/http-kernel": "^4.4|^5.0|^6.0", + "symfony/mime": "^4.4|^5.0|^6.0", + "symfony/property-access": "^5.4.26|^6.3", + "symfony/property-info": "^5.4.24|^6.2.11", + "symfony/uid": "^5.3|^6.0", + "symfony/validator": "^4.4|^5.0|^6.0", + "symfony/var-dumper": "^4.4|^5.0|^6.0", + "symfony/var-exporter": "^4.4|^5.0|^6.0", + "symfony/yaml": "^4.4|^5.0|^6.0" }, "suggest": { "psr/cache-implementation": "For using the metadata cache.", @@ -6371,7 +6955,7 @@ "description": "Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON.", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/serializer/tree/v5.3.4" + "source": "https://github.com/symfony/serializer/tree/v5.4.44" }, "funding": [ { @@ -6387,25 +6971,29 @@ "type": "tidelift" } ], - "time": "2021-07-21T13:18:10+00:00" + "time": "2024-09-20T07:56:40+00:00" }, { "name": "symfony/service-contracts", - "version": "v2.4.0", + "version": "v2.5.3", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb" + "reference": "a2329596ddc8fd568900e3fc76cba42489ecc7f3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb", - "reference": "f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/a2329596ddc8fd568900e3fc76cba42489ecc7f3", + "reference": "a2329596ddc8fd568900e3fc76cba42489ecc7f3", "shasum": "" }, "require": { "php": ">=7.2.5", - "psr/container": "^1.1" + "psr/container": "^1.1", + "symfony/deprecation-contracts": "^2.1|^3" + }, + "conflict": { + "ext-psr": "<1.1|>=2" }, "suggest": { "symfony/service-implementation": "" @@ -6413,7 +7001,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "2.4-dev" + "dev-main": "2.5-dev" }, "thanks": { "name": "symfony/contracts", @@ -6450,7 +7038,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v2.4.0" + "source": "https://github.com/symfony/service-contracts/tree/v2.5.3" }, "funding": [ { @@ -6466,25 +7054,25 @@ "type": "tidelift" } ], - "time": "2021-04-01T10:43:52+00:00" + "time": "2023-04-21T15:04:16+00:00" }, { "name": "symfony/stopwatch", - "version": "v5.3.4", + "version": "v5.4.40", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", - "reference": "b24c6a92c6db316fee69e38c80591e080e41536c" + "reference": "0e9daf3b7c805c747638b2cc48f1649e594f9625" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/b24c6a92c6db316fee69e38c80591e080e41536c", - "reference": "b24c6a92c6db316fee69e38c80591e080e41536c", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/0e9daf3b7c805c747638b2cc48f1649e594f9625", + "reference": "0e9daf3b7c805c747638b2cc48f1649e594f9625", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/service-contracts": "^1.0|^2" + "symfony/service-contracts": "^1|^2|^3" }, "type": "library", "autoload": { @@ -6512,7 +7100,7 @@ "description": "Provides a way to profile code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/stopwatch/tree/v5.3.4" + "source": "https://github.com/symfony/stopwatch/tree/v5.4.40" }, "funding": [ { @@ -6528,20 +7116,20 @@ "type": "tidelift" } ], - "time": "2021-07-10T08:58:57+00:00" + "time": "2024-05-31T14:33:22+00:00" }, { "name": "symfony/string", - "version": "v5.3.3", + "version": "v5.4.44", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "bd53358e3eccec6a670b5f33ab680d8dbe1d4ae1" + "reference": "832caa16b6d9aac6bf11747315225f5aba384c24" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/bd53358e3eccec6a670b5f33ab680d8dbe1d4ae1", - "reference": "bd53358e3eccec6a670b5f33ab680d8dbe1d4ae1", + "url": "https://api.github.com/repos/symfony/string/zipball/832caa16b6d9aac6bf11747315225f5aba384c24", + "reference": "832caa16b6d9aac6bf11747315225f5aba384c24", "shasum": "" }, "require": { @@ -6552,20 +7140,23 @@ "symfony/polyfill-mbstring": "~1.0", "symfony/polyfill-php80": "~1.15" }, + "conflict": { + "symfony/translation-contracts": ">=3.0" + }, "require-dev": { - "symfony/error-handler": "^4.4|^5.0", - "symfony/http-client": "^4.4|^5.0", + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/http-client": "^4.4|^5.0|^6.0", "symfony/translation-contracts": "^1.1|^2", - "symfony/var-exporter": "^4.4|^5.0" + "symfony/var-exporter": "^4.4|^5.0|^6.0" }, "type": "library", "autoload": { - "psr-4": { - "Symfony\\Component\\String\\": "" - }, "files": [ "Resources/functions.php" ], + "psr-4": { + "Symfony\\Component\\String\\": "" + }, "exclude-from-classmap": [ "/Tests/" ] @@ -6595,7 +7186,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v5.3.3" + "source": "https://github.com/symfony/string/tree/v5.4.44" }, "funding": [ { @@ -6611,31 +7202,32 @@ "type": "tidelift" } ], - "time": "2021-06-27T11:44:38+00:00" + "time": "2024-09-20T07:56:40+00:00" }, { "name": "symfony/translation", - "version": "v5.3.4", + "version": "v5.4.44", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "d89ad7292932c2699cbe4af98d72c5c6bbc504c1" + "reference": "6fed3a20b5b87ee9cdd9dacf545922b8fd475921" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/d89ad7292932c2699cbe4af98d72c5c6bbc504c1", - "reference": "d89ad7292932c2699cbe4af98d72c5c6bbc504c1", + "url": "https://api.github.com/repos/symfony/translation/zipball/6fed3a20b5b87ee9cdd9dacf545922b8fd475921", + "reference": "6fed3a20b5b87ee9cdd9dacf545922b8fd475921", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-mbstring": "~1.0", "symfony/polyfill-php80": "^1.16", "symfony/translation-contracts": "^2.3" }, "conflict": { "symfony/config": "<4.4", + "symfony/console": "<5.3", "symfony/dependency-injection": "<5.0", "symfony/http-kernel": "<5.0", "symfony/twig-bundle": "<5.0", @@ -6646,15 +7238,16 @@ }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^4.4|^5.0", - "symfony/console": "^4.4|^5.0", - "symfony/dependency-injection": "^5.0", - "symfony/finder": "^4.4|^5.0", - "symfony/http-kernel": "^5.0", - "symfony/intl": "^4.4|^5.0", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/console": "^5.4|^6.0", + "symfony/dependency-injection": "^5.0|^6.0", + "symfony/finder": "^4.4|^5.0|^6.0", + "symfony/http-client-contracts": "^1.1|^2.0|^3.0", + "symfony/http-kernel": "^5.0|^6.0", + "symfony/intl": "^4.4|^5.0|^6.0", "symfony/polyfill-intl-icu": "^1.21", - "symfony/service-contracts": "^1.1.2|^2", - "symfony/yaml": "^4.4|^5.0" + "symfony/service-contracts": "^1.1.2|^2|^3", + "symfony/yaml": "^4.4|^5.0|^6.0" }, "suggest": { "psr/log-implementation": "To use logging capability in translator", @@ -6690,7 +7283,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v5.3.4" + "source": "https://github.com/symfony/translation/tree/v5.4.44" }, "funding": [ { @@ -6706,20 +7299,20 @@ "type": "tidelift" } ], - "time": "2021-07-25T09:39:16+00:00" + "time": "2024-09-15T08:12:35+00:00" }, { "name": "symfony/translation-contracts", - "version": "v2.4.0", + "version": "v2.5.3", "source": { "type": "git", "url": "https://github.com/symfony/translation-contracts.git", - "reference": "95c812666f3e91db75385749fe219c5e494c7f95" + "reference": "b0073a77ac0b7ea55131020e87b1e3af540f4664" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/95c812666f3e91db75385749fe219c5e494c7f95", - "reference": "95c812666f3e91db75385749fe219c5e494c7f95", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/b0073a77ac0b7ea55131020e87b1e3af540f4664", + "reference": "b0073a77ac0b7ea55131020e87b1e3af540f4664", "shasum": "" }, "require": { @@ -6731,7 +7324,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "2.4-dev" + "dev-main": "2.5-dev" }, "thanks": { "name": "symfony/contracts", @@ -6768,7 +7361,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v2.4.0" + "source": "https://github.com/symfony/translation-contracts/tree/v2.5.3" }, "funding": [ { @@ -6784,65 +7377,65 @@ "type": "tidelift" } ], - "time": "2021-03-23T23:28:01+00:00" + "time": "2024-01-23T13:51:25+00:00" }, { "name": "symfony/twig-bridge", - "version": "v5.3.4", + "version": "v5.4.44", "source": { "type": "git", "url": "https://github.com/symfony/twig-bridge.git", - "reference": "587c45ef49256279502b4a29146b9e87ad23426f" + "reference": "d049fbe0e5ba0ad758f647fa8f99e840bca43f6f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/587c45ef49256279502b4a29146b9e87ad23426f", - "reference": "587c45ef49256279502b4a29146b9e87ad23426f", + "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/d049fbe0e5ba0ad758f647fa8f99e840bca43f6f", + "reference": "d049fbe0e5ba0ad758f647fa8f99e840bca43f6f", "shasum": "" }, "require": { "php": ">=7.2.5", "symfony/polyfill-php80": "^1.16", - "symfony/translation-contracts": "^1.1|^2", + "symfony/translation-contracts": "^1.1|^2|^3", "twig/twig": "^2.13|^3.0.4" }, "conflict": { "phpdocumentor/reflection-docblock": "<3.2.2", "phpdocumentor/type-resolver": "<1.4.0", - "symfony/console": "<4.4", - "symfony/form": "<5.3", + "symfony/console": "<5.3", + "symfony/form": "<5.4.21|>=6,<6.2.7", "symfony/http-foundation": "<5.3", "symfony/http-kernel": "<4.4", "symfony/translation": "<5.2", "symfony/workflow": "<5.2" }, "require-dev": { - "doctrine/annotations": "^1.12", - "egulias/email-validator": "^2.1.10|^3", + "doctrine/annotations": "^1.12|^2", + "egulias/email-validator": "^2.1.10|^3|^4", "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/asset": "^4.4|^5.0", - "symfony/console": "^4.4|^5.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/expression-language": "^4.4|^5.0", - "symfony/finder": "^4.4|^5.0", - "symfony/form": "^5.3", - "symfony/http-foundation": "^5.3", - "symfony/http-kernel": "^4.4|^5.0", - "symfony/intl": "^4.4|^5.0", - "symfony/mime": "^5.2", + "symfony/asset": "^4.4|^5.0|^6.0", + "symfony/console": "^5.3|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/finder": "^4.4|^5.0|^6.0", + "symfony/form": "^5.4.21|^6.2.7", + "symfony/http-foundation": "^5.3|^6.0", + "symfony/http-kernel": "^4.4|^5.0|^6.0", + "symfony/intl": "^4.4|^5.0|^6.0", + "symfony/mime": "^5.2|^6.0", "symfony/polyfill-intl-icu": "~1.0", - "symfony/property-info": "^4.4|^5.1", - "symfony/routing": "^4.4|^5.0", + "symfony/property-info": "^4.4|^5.1|^6.0", + "symfony/routing": "^4.4|^5.0|^6.0", "symfony/security-acl": "^2.8|^3.0", - "symfony/security-core": "^4.4|^5.0", - "symfony/security-csrf": "^4.4|^5.0", - "symfony/security-http": "^4.4|^5.0", - "symfony/serializer": "^5.2", - "symfony/stopwatch": "^4.4|^5.0", - "symfony/translation": "^5.2", - "symfony/web-link": "^4.4|^5.0", - "symfony/workflow": "^5.2", - "symfony/yaml": "^4.4|^5.0", + "symfony/security-core": "^4.4|^5.0|^6.0", + "symfony/security-csrf": "^4.4|^5.0|^6.0", + "symfony/security-http": "^4.4|^5.0|^6.0", + "symfony/serializer": "^5.4.35|~6.3.12|^6.4.3", + "symfony/stopwatch": "^4.4|^5.0|^6.0", + "symfony/translation": "^5.2|^6.0", + "symfony/web-link": "^4.4|^5.0|^6.0", + "symfony/workflow": "^5.2|^6.0", + "symfony/yaml": "^4.4|^5.0|^6.0", "twig/cssinliner-extra": "^2.12|^3", "twig/inky-extra": "^2.12|^3", "twig/markdown-extra": "^2.12|^3" @@ -6863,10 +7456,100 @@ "symfony/web-link": "For using the WebLinkExtension", "symfony/yaml": "For using the YamlExtension" }, - "type": "symfony-bridge", + "type": "symfony-bridge", + "autoload": { + "psr-4": { + "Symfony\\Bridge\\Twig\\": "" + }, + "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": "Provides integration for Twig with various Symfony components", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/twig-bridge/tree/v5.4.44" + }, + "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": "2024-09-11T13:27:43+00:00" + }, + { + "name": "symfony/twig-bundle", + "version": "v5.4.44", + "source": { + "type": "git", + "url": "https://github.com/symfony/twig-bundle.git", + "reference": "b94414b3b9e0c523677c0bf31e8975231b55f18a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/b94414b3b9e0c523677c0bf31e8975231b55f18a", + "reference": "b94414b3b9e0c523677c0bf31e8975231b55f18a", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/http-foundation": "^4.4|^5.0|^6.0", + "symfony/http-kernel": "^5.0|^6.0", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-php80": "^1.16", + "symfony/twig-bridge": "^5.3|^6.0", + "twig/twig": "^2.13|^3.0.4" + }, + "conflict": { + "symfony/dependency-injection": "<5.3", + "symfony/framework-bundle": "<5.0", + "symfony/service-contracts": ">=3.0", + "symfony/translation": "<5.0" + }, + "require-dev": { + "doctrine/annotations": "^1.10.4|^2", + "doctrine/cache": "^1.0|^2.0", + "symfony/asset": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^5.3|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/finder": "^4.4|^5.0|^6.0", + "symfony/form": "^4.4|^5.0|^6.0", + "symfony/framework-bundle": "^5.0|^6.0", + "symfony/routing": "^4.4|^5.0|^6.0", + "symfony/stopwatch": "^4.4|^5.0|^6.0", + "symfony/translation": "^5.0|^6.0", + "symfony/web-link": "^4.4|^5.0|^6.0", + "symfony/yaml": "^4.4|^5.0|^6.0" + }, + "type": "symfony-bundle", "autoload": { "psr-4": { - "Symfony\\Bridge\\Twig\\": "" + "Symfony\\Bundle\\TwigBundle\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -6886,10 +7569,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Provides integration for Twig with various Symfony components", + "description": "Provides a tight integration of Twig into the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/twig-bridge/tree/v5.3.4" + "source": "https://github.com/symfony/twig-bundle/tree/v5.4.44" }, "funding": [ { @@ -6905,56 +7588,33 @@ "type": "tidelift" } ], - "time": "2021-07-26T16:33:26+00:00" + "time": "2024-09-07T13:25:07+00:00" }, { - "name": "symfony/twig-bundle", - "version": "v5.3.4", + "name": "symfony/uid", + "version": "v5.4.44", "source": { "type": "git", - "url": "https://github.com/symfony/twig-bundle.git", - "reference": "345965b40c1847ebdbb2ab0eb98c71a98a5e167b" + "url": "https://github.com/symfony/uid.git", + "reference": "b36c8947ee835916eac8c341e124c3de19ff43ca" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/345965b40c1847ebdbb2ab0eb98c71a98a5e167b", - "reference": "345965b40c1847ebdbb2ab0eb98c71a98a5e167b", + "url": "https://api.github.com/repos/symfony/uid/zipball/b36c8947ee835916eac8c341e124c3de19ff43ca", + "reference": "b36c8947ee835916eac8c341e124c3de19ff43ca", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/config": "^4.4|^5.0", - "symfony/http-foundation": "^4.4|^5.0", - "symfony/http-kernel": "^5.0", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-php80": "^1.16", - "symfony/twig-bridge": "^5.3", - "twig/twig": "^2.13|^3.0.4" - }, - "conflict": { - "symfony/dependency-injection": "<5.3", - "symfony/framework-bundle": "<5.0", - "symfony/translation": "<5.0" + "symfony/polyfill-uuid": "^1.15" }, "require-dev": { - "doctrine/annotations": "^1.10.4", - "doctrine/cache": "^1.0|^2.0", - "symfony/asset": "^4.4|^5.0", - "symfony/dependency-injection": "^5.3", - "symfony/expression-language": "^4.4|^5.0", - "symfony/finder": "^4.4|^5.0", - "symfony/form": "^4.4|^5.0", - "symfony/framework-bundle": "^5.0", - "symfony/routing": "^4.4|^5.0", - "symfony/stopwatch": "^4.4|^5.0", - "symfony/translation": "^5.0", - "symfony/web-link": "^4.4|^5.0", - "symfony/yaml": "^4.4|^5.0" + "symfony/console": "^4.4|^5.0|^6.0" }, - "type": "symfony-bundle", + "type": "library", "autoload": { "psr-4": { - "Symfony\\Bundle\\TwigBundle\\": "" + "Symfony\\Component\\Uid\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -6966,18 +7626,27 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Grégoire Pineau", + "email": "lyrixx@lyrixx.info" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Provides a tight integration of Twig into the Symfony full-stack framework", + "description": "Provides an object-oriented API to generate and represent UIDs", "homepage": "https://symfony.com", + "keywords": [ + "UID", + "ulid", + "uuid" + ], "support": { - "source": "https://github.com/symfony/twig-bundle/tree/v5.3.4" + "source": "https://github.com/symfony/uid/tree/v5.4.44" }, "funding": [ { @@ -6993,61 +7662,63 @@ "type": "tidelift" } ], - "time": "2021-07-21T12:40:44+00:00" + "time": "2024-09-11T16:39:40+00:00" }, { "name": "symfony/validator", - "version": "v5.3.6", + "version": "v5.4.44", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", - "reference": "4a87a29d0ebca780a90b7aaba02bc04f5678eb36" + "reference": "5b061420daf15b58e1599cd2191b0780ddcd2157" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/4a87a29d0ebca780a90b7aaba02bc04f5678eb36", - "reference": "4a87a29d0ebca780a90b7aaba02bc04f5678eb36", + "url": "https://api.github.com/repos/symfony/validator/zipball/5b061420daf15b58e1599cd2191b0780ddcd2157", + "reference": "5b061420daf15b58e1599cd2191b0780ddcd2157", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.0", "symfony/polyfill-php73": "~1.0", "symfony/polyfill-php80": "^1.16", - "symfony/translation-contracts": "^1.1|^2" + "symfony/polyfill-php81": "^1.22", + "symfony/translation-contracts": "^1.1|^2|^3" }, "conflict": { - "doctrine/lexer": "<1.0.2", - "phpunit/phpunit": "<5.4.3", + "doctrine/annotations": "<1.13", + "doctrine/cache": "<1.11", + "doctrine/lexer": "<1.1", "symfony/dependency-injection": "<4.4", "symfony/expression-language": "<5.1", "symfony/http-kernel": "<4.4", "symfony/intl": "<4.4", "symfony/property-info": "<5.3", - "symfony/translation": "<4.4", + "symfony/translation": "<5.4.35|>=6.0,<6.3.12|>=6.4,<6.4.3", "symfony/yaml": "<4.4" }, "require-dev": { - "doctrine/annotations": "^1.10.4", - "doctrine/cache": "^1.0|^2.0", - "egulias/email-validator": "^2.1.10|^3", - "symfony/cache": "^4.4|^5.0", - "symfony/config": "^4.4|^5.0", - "symfony/console": "^4.4|^5.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/expression-language": "^5.1", - "symfony/finder": "^4.4|^5.0", - "symfony/http-client": "^4.4|^5.0", - "symfony/http-foundation": "^4.4|^5.0", - "symfony/http-kernel": "^4.4|^5.0", - "symfony/intl": "^4.4|^5.0", - "symfony/mime": "^4.4|^5.0", - "symfony/property-access": "^4.4|^5.0", - "symfony/property-info": "^5.3", - "symfony/translation": "^4.4|^5.0", - "symfony/yaml": "^4.4|^5.0" + "doctrine/annotations": "^1.13|^2", + "doctrine/cache": "^1.11|^2.0", + "egulias/email-validator": "^2.1.10|^3|^4", + "symfony/cache": "^4.4|^5.0|^6.0", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/console": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^5.1|^6.0", + "symfony/finder": "^4.4|^5.0|^6.0", + "symfony/http-client": "^4.4|^5.0|^6.0", + "symfony/http-foundation": "^4.4|^5.0|^6.0", + "symfony/http-kernel": "^4.4|^5.0|^6.0", + "symfony/intl": "^4.4|^5.0|^6.0", + "symfony/mime": "^4.4|^5.0|^6.0", + "symfony/property-access": "^5.4|^6.0", + "symfony/property-info": "^5.3|^6.0", + "symfony/translation": "^5.4.35|~6.3.12|^6.4.3", + "symfony/yaml": "^4.4|^5.0|^6.0" }, "suggest": { "egulias/email-validator": "Strict (RFC compliant) email validation", @@ -7067,7 +7738,8 @@ "Symfony\\Component\\Validator\\": "" }, "exclude-from-classmap": [ - "/Tests/" + "/Tests/", + "/Resources/bin/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -7087,7 +7759,7 @@ "description": "Provides tools to validate values", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/validator/tree/v5.3.6" + "source": "https://github.com/symfony/validator/tree/v5.4.44" }, "funding": [ { @@ -7103,20 +7775,20 @@ "type": "tidelift" } ], - "time": "2021-07-29T06:36:31+00:00" + "time": "2024-09-19T08:27:53+00:00" }, { "name": "symfony/var-dumper", - "version": "v5.3.6", + "version": "v5.4.43", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "3dd8ddd1e260e58ecc61bb78da3b6584b3bfcba0" + "reference": "6be6a6a8af4818564e3726fc65cf936f34743cef" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/3dd8ddd1e260e58ecc61bb78da3b6584b3bfcba0", - "reference": "3dd8ddd1e260e58ecc61bb78da3b6584b3bfcba0", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/6be6a6a8af4818564e3726fc65cf936f34743cef", + "reference": "6be6a6a8af4818564e3726fc65cf936f34743cef", "shasum": "" }, "require": { @@ -7125,13 +7797,14 @@ "symfony/polyfill-php80": "^1.16" }, "conflict": { - "phpunit/phpunit": "<5.4.3", "symfony/console": "<4.4" }, "require-dev": { "ext-iconv": "*", - "symfony/console": "^4.4|^5.0", - "symfony/process": "^4.4|^5.0", + "symfony/console": "^4.4|^5.0|^6.0", + "symfony/http-kernel": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/uid": "^5.1|^6.0", "twig/twig": "^2.13|^3.0.4" }, "suggest": { @@ -7175,7 +7848,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v5.3.6" + "source": "https://github.com/symfony/var-dumper/tree/v5.4.43" }, "funding": [ { @@ -7191,28 +7864,30 @@ "type": "tidelift" } ], - "time": "2021-07-27T01:56:02+00:00" + "time": "2024-08-30T16:01:46+00:00" }, { "name": "symfony/var-exporter", - "version": "v5.3.4", + "version": "v6.4.9", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "b7898a65fc91e7c41de7a88c7db9aee9c0d432f0" + "reference": "f9a060622e0d93777b7f8687ec4860191e16802e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/b7898a65fc91e7c41de7a88c7db9aee9c0d432f0", - "reference": "b7898a65fc91e7c41de7a88c7db9aee9c0d432f0", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/f9a060622e0d93777b7f8687ec4860191e16802e", + "reference": "f9a060622e0d93777b7f8687ec4860191e16802e", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3" }, "require-dev": { - "symfony/var-dumper": "^4.4.9|^5.0.9" + "symfony/property-access": "^6.4|^7.0", + "symfony/serializer": "^6.4|^7.0", + "symfony/var-dumper": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -7245,10 +7920,12 @@ "export", "hydrate", "instantiate", + "lazy-loading", + "proxy", "serialize" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v5.3.4" + "source": "https://github.com/symfony/var-exporter/tree/v6.4.9" }, "funding": [ { @@ -7264,20 +7941,20 @@ "type": "tidelift" } ], - "time": "2021-07-21T12:38:00+00:00" + "time": "2024-06-24T15:53:56+00:00" }, { "name": "symfony/web-link", - "version": "v5.3.4", + "version": "v5.4.40", "source": { "type": "git", "url": "https://github.com/symfony/web-link.git", - "reference": "0075c9949c30a61d9b9e7483686d72d261480ef1" + "reference": "2615fe9ec22e210f06826d8ef4c32249ff9bfc01" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/web-link/zipball/0075c9949c30a61d9b9e7483686d72d261480ef1", - "reference": "0075c9949c30a61d9b9e7483686d72d261480ef1", + "url": "https://api.github.com/repos/symfony/web-link/zipball/2615fe9ec22e210f06826d8ef4c32249ff9bfc01", + "reference": "2615fe9ec22e210f06826d8ef4c32249ff9bfc01", "shasum": "" }, "require": { @@ -7292,7 +7969,7 @@ "psr/link-implementation": "1.0" }, "require-dev": { - "symfony/http-kernel": "^5.3" + "symfony/http-kernel": "^5.3|^6.0" }, "suggest": { "symfony/http-kernel": "" @@ -7335,7 +8012,7 @@ "push" ], "support": { - "source": "https://github.com/symfony/web-link/tree/v5.3.4" + "source": "https://github.com/symfony/web-link/tree/v5.4.40" }, "funding": [ { @@ -7351,32 +8028,32 @@ "type": "tidelift" } ], - "time": "2021-07-21T12:40:44+00:00" + "time": "2024-05-31T14:33:22+00:00" }, { "name": "symfony/yaml", - "version": "v5.3.6", + "version": "v5.4.44", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "4500fe63dc9c6ffc32d3b1cb0448c329f9c814b7" + "reference": "7025b964f123bbf1896d7563db6ec7f1f63e918a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/4500fe63dc9c6ffc32d3b1cb0448c329f9c814b7", - "reference": "4500fe63dc9c6ffc32d3b1cb0448c329f9c814b7", + "url": "https://api.github.com/repos/symfony/yaml/zipball/7025b964f123bbf1896d7563db6ec7f1f63e918a", + "reference": "7025b964f123bbf1896d7563db6ec7f1f63e918a", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", - "symfony/polyfill-ctype": "~1.8" + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-ctype": "^1.8" }, "conflict": { - "symfony/console": "<4.4" + "symfony/console": "<5.3" }, "require-dev": { - "symfony/console": "^4.4|^5.0" + "symfony/console": "^5.3|^6.0" }, "suggest": { "symfony/console": "For validating YAML files using the lint command" @@ -7410,7 +8087,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v5.3.6" + "source": "https://github.com/symfony/yaml/tree/v5.4.44" }, "funding": [ { @@ -7426,44 +8103,40 @@ "type": "tidelift" } ], - "time": "2021-07-29T06:20:01+00:00" + "time": "2024-09-16T14:36:56+00:00" }, { "name": "twig/extra-bundle", - "version": "v3.3.1", + "version": "v3.13.0", "source": { "type": "git", "url": "https://github.com/twigphp/twig-extra-bundle.git", - "reference": "e12a8ee63387abb83fb7e4c897663bfb94ac22b6" + "reference": "21a9a7aa9f79d4493bb6fed4eb2794339f9551f5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/twig-extra-bundle/zipball/e12a8ee63387abb83fb7e4c897663bfb94ac22b6", - "reference": "e12a8ee63387abb83fb7e4c897663bfb94ac22b6", + "url": "https://api.github.com/repos/twigphp/twig-extra-bundle/zipball/21a9a7aa9f79d4493bb6fed4eb2794339f9551f5", + "reference": "21a9a7aa9f79d4493bb6fed4eb2794339f9551f5", "shasum": "" }, "require": { - "php": "^7.1.3|^8.0", - "symfony/framework-bundle": "^4.3|^5.0", - "symfony/twig-bundle": "^4.3|^5.0", - "twig/twig": "^2.4|^3.0" + "php": ">=8.0.2", + "symfony/framework-bundle": "^5.4|^6.4|^7.0", + "symfony/twig-bundle": "^5.4|^6.4|^7.0", + "twig/twig": "^3.0|^4.0" }, "require-dev": { - "symfony/phpunit-bridge": "^4.4.9|^5.0.9", + "league/commonmark": "^1.0|^2.0", + "symfony/phpunit-bridge": "^6.4|^7.0", "twig/cache-extra": "^3.0", - "twig/cssinliner-extra": "^2.12|^3.0", - "twig/html-extra": "^2.12|^3.0", - "twig/inky-extra": "^2.12|^3.0", - "twig/intl-extra": "^2.12|^3.0", - "twig/markdown-extra": "^2.12|^3.0", - "twig/string-extra": "^2.12|^3.0" + "twig/cssinliner-extra": "^3.0", + "twig/html-extra": "^3.0", + "twig/inky-extra": "^3.0", + "twig/intl-extra": "^3.0", + "twig/markdown-extra": "^3.0", + "twig/string-extra": "^3.0" }, "type": "symfony-bundle", - "extra": { - "branch-alias": { - "dev-master": "3.2-dev" - } - }, "autoload": { "psr-4": { "Twig\\Extra\\TwigExtraBundle\\": "" @@ -7492,7 +8165,7 @@ "twig" ], "support": { - "source": "https://github.com/twigphp/twig-extra-bundle/tree/v3.3.1" + "source": "https://github.com/twigphp/twig-extra-bundle/tree/v3.13.0" }, "funding": [ { @@ -7504,38 +8177,41 @@ "type": "tidelift" } ], - "time": "2021-05-12T07:47:40+00:00" + "time": "2024-09-01T20:39:12+00:00" }, { "name": "twig/twig", - "version": "v3.3.2", + "version": "v3.14.0", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "21578f00e83d4a82ecfa3d50752b609f13de6790" + "reference": "126b2c97818dbff0cdf3fbfc881aedb3d40aae72" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/21578f00e83d4a82ecfa3d50752b609f13de6790", - "reference": "21578f00e83d4a82ecfa3d50752b609f13de6790", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/126b2c97818dbff0cdf3fbfc881aedb3d40aae72", + "reference": "126b2c97818dbff0cdf3fbfc881aedb3d40aae72", "shasum": "" }, "require": { - "php": ">=7.2.5", + "php": ">=8.0.2", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-mbstring": "^1.3" + "symfony/polyfill-mbstring": "^1.3", + "symfony/polyfill-php81": "^1.29" }, "require-dev": { - "psr/container": "^1.0", - "symfony/phpunit-bridge": "^4.4.9|^5.0.9" + "psr/container": "^1.0|^2.0", + "symfony/phpunit-bridge": "^5.4.9|^6.4|^7.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.3-dev" - } - }, "autoload": { + "files": [ + "src/Resources/core.php", + "src/Resources/debug.php", + "src/Resources/escaper.php", + "src/Resources/string_loader.php" + ], "psr-4": { "Twig\\": "src/" } @@ -7568,7 +8244,7 @@ ], "support": { "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/v3.3.2" + "source": "https://github.com/twigphp/Twig/tree/v3.14.0" }, "funding": [ { @@ -7580,25 +8256,25 @@ "type": "tidelift" } ], - "time": "2021-05-16T12:14:13+00:00" + "time": "2024-09-09T17:55:12+00:00" }, { "name": "webmozart/assert", - "version": "1.10.0", + "version": "1.11.0", "source": { "type": "git", "url": "https://github.com/webmozarts/assert.git", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991", + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0", - "symfony/polyfill-ctype": "^1.8" + "ext-ctype": "*", + "php": "^7.2 || ^8.0" }, "conflict": { "phpstan/phpstan": "<0.12.20", @@ -7636,45 +8312,218 @@ ], "support": { "issues": "https://github.com/webmozarts/assert/issues", - "source": "https://github.com/webmozarts/assert/tree/1.10.0" + "source": "https://github.com/webmozarts/assert/tree/1.11.0" }, - "time": "2021-03-09T10:59:23+00:00" + "time": "2022-06-03T18:03:27+00:00" } ], "packages-dev": [ + { + "name": "doctrine/data-fixtures", + "version": "1.7.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/data-fixtures.git", + "reference": "bbcb74f2ac6dbe81a14b3c3687d7623490a0448f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/data-fixtures/zipball/bbcb74f2ac6dbe81a14b3c3687d7623490a0448f", + "reference": "bbcb74f2ac6dbe81a14b3c3687d7623490a0448f", + "shasum": "" + }, + "require": { + "doctrine/deprecations": "^0.5.3 || ^1.0", + "doctrine/persistence": "^2.0|^3.0", + "php": "^7.4 || ^8.0" + }, + "conflict": { + "doctrine/dbal": "<3.5 || >=5", + "doctrine/orm": "<2.14 || >=4", + "doctrine/phpcr-odm": "<1.3.0" + }, + "require-dev": { + "doctrine/annotations": "^1.12 || ^2", + "doctrine/coding-standard": "^12", + "doctrine/dbal": "^3.5 || ^4", + "doctrine/mongodb-odm": "^1.3.0 || ^2.0.0", + "doctrine/orm": "^2.14 || ^3", + "ext-sqlite3": "*", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^9.6.13 || ^10.4.2", + "symfony/cache": "^5.4 || ^6.3 || ^7", + "symfony/var-exporter": "^5.4 || ^6.3 || ^7", + "vimeo/psalm": "^5.9" + }, + "suggest": { + "alcaeus/mongo-php-adapter": "For using MongoDB ODM 1.3 with PHP 7 (deprecated)", + "doctrine/mongodb-odm": "For loading MongoDB ODM fixtures", + "doctrine/orm": "For loading ORM fixtures", + "doctrine/phpcr-odm": "For loading PHPCR ODM fixtures" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Common\\DataFixtures\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + } + ], + "description": "Data Fixtures for all Doctrine Object Managers", + "homepage": "https://www.doctrine-project.org", + "keywords": [ + "database" + ], + "support": { + "issues": "https://github.com/doctrine/data-fixtures/issues", + "source": "https://github.com/doctrine/data-fixtures/tree/1.7.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%2Fdata-fixtures", + "type": "tidelift" + } + ], + "time": "2023-11-24T11:18:31+00:00" + }, + { + "name": "doctrine/doctrine-fixtures-bundle", + "version": "3.6.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/DoctrineFixturesBundle.git", + "reference": "d13a08ebf244f74c8adb8ff15aa55d01c404e534" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/DoctrineFixturesBundle/zipball/d13a08ebf244f74c8adb8ff15aa55d01c404e534", + "reference": "d13a08ebf244f74c8adb8ff15aa55d01c404e534", + "shasum": "" + }, + "require": { + "doctrine/data-fixtures": "^1.3", + "doctrine/doctrine-bundle": "^2.2", + "doctrine/orm": "^2.14.0 || ^3.0", + "doctrine/persistence": "^2.4|^3.0", + "php": "^7.4 || ^8.0", + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/doctrine-bridge": "^5.4|^6.0|^7.0", + "symfony/http-kernel": "^5.4|^6.0|^7.0" + }, + "conflict": { + "doctrine/dbal": "< 3" + }, + "require-dev": { + "doctrine/coding-standard": "^12", + "phpstan/phpstan": "^1.10.39", + "phpunit/phpunit": "^9.6.13", + "symfony/phpunit-bridge": "^6.3.6", + "vimeo/psalm": "^5.15" + }, + "type": "symfony-bundle", + "autoload": { + "psr-4": { + "Doctrine\\Bundle\\FixturesBundle\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Doctrine Project", + "homepage": "https://www.doctrine-project.org" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony DoctrineFixturesBundle", + "homepage": "https://www.doctrine-project.org", + "keywords": [ + "Fixture", + "persistence" + ], + "support": { + "issues": "https://github.com/doctrine/DoctrineFixturesBundle/issues", + "source": "https://github.com/doctrine/DoctrineFixturesBundle/tree/3.6.1" + }, + "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%2Fdoctrine-fixtures-bundle", + "type": "tidelift" + } + ], + "time": "2024-05-07T07:16:35+00:00" + }, { "name": "myclabs/deep-copy", - "version": "1.10.2", + "version": "1.12.0", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" + "reference": "3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c", + "reference": "3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c", "shasum": "" }, "require": { "php": "^7.1 || ^8.0" }, - "replace": { - "myclabs/deep-copy": "self.version" + "conflict": { + "doctrine/collections": "<1.6.8", + "doctrine/common": "<2.13.3 || >=3 <3.2.2" }, "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" + "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", "autoload": { - "psr-4": { - "DeepCopy\\": "src/DeepCopy/" - }, "files": [ "src/DeepCopy/deep_copy.php" - ] + ], + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -7690,7 +8539,7 @@ ], "support": { "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.10.2" + "source": "https://github.com/myclabs/DeepCopy/tree/1.12.0" }, "funding": [ { @@ -7698,29 +8547,29 @@ "type": "tidelift" } ], - "time": "2020-11-13T09:40:50+00:00" + "time": "2024-06-12T14:39:25+00:00" }, { "name": "nikic/php-parser", - "version": "v4.12.0", + "version": "v4.19.4", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "6608f01670c3cc5079e18c1dab1104e002579143" + "reference": "715f4d25e225bc47b293a8b997fe6ce99bf987d2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/6608f01670c3cc5079e18c1dab1104e002579143", - "reference": "6608f01670c3cc5079e18c1dab1104e002579143", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/715f4d25e225bc47b293a8b997fe6ce99bf987d2", + "reference": "715f4d25e225bc47b293a8b997fe6ce99bf987d2", "shasum": "" }, "require": { "ext-tokenizer": "*", - "php": ">=7.0" + "php": ">=7.1" }, "require-dev": { "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" }, "bin": [ "bin/php-parse" @@ -7752,26 +8601,27 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.12.0" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.19.4" }, - "time": "2021-07-21T10:44:31+00:00" + "time": "2024-09-29T15:01:53+00:00" }, { "name": "phar-io/manifest", - "version": "2.0.3", + "version": "2.0.4", "source": { "type": "git", "url": "https://github.com/phar-io/manifest.git", - "reference": "97803eca37d319dfa7826cc2437fc020857acb53" + "reference": "54750ef60c58e43759730615a392c31c80e23176" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53", - "reference": "97803eca37d319dfa7826cc2437fc020857acb53", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/54750ef60c58e43759730615a392c31c80e23176", + "reference": "54750ef60c58e43759730615a392c31c80e23176", "shasum": "" }, "require": { "ext-dom": "*", + "ext-libxml": "*", "ext-phar": "*", "ext-xmlwriter": "*", "phar-io/version": "^3.0.1", @@ -7812,22 +8662,28 @@ "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" + "source": "https://github.com/phar-io/manifest/tree/2.0.4" }, - "time": "2021-07-20T11:28:43+00:00" + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2024-03-03T12:33:53+00:00" }, { "name": "phar-io/version", - "version": "3.1.0", + "version": "3.2.1", "source": { "type": "git", "url": "https://github.com/phar-io/version.git", - "reference": "bae7c545bef187884426f042434e561ab1ddb182" + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/bae7c545bef187884426f042434e561ab1ddb182", - "reference": "bae7c545bef187884426f042434e561ab1ddb182", + "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", "shasum": "" }, "require": { @@ -7863,117 +8719,50 @@ "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": "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" + "source": "https://github.com/phar-io/version/tree/3.2.1" }, - "time": "2021-03-17T13:42:18+00:00" + "time": "2022-02-21T01:04:05+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "9.2.6", + "version": "9.2.32", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "f6293e1b30a2354e8428e004689671b83871edde" + "reference": "85402a822d1ecf1db1096959413d35e1c37cf1a5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/f6293e1b30a2354e8428e004689671b83871edde", - "reference": "f6293e1b30a2354e8428e004689671b83871edde", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/85402a822d1ecf1db1096959413d35e1c37cf1a5", + "reference": "85402a822d1ecf1db1096959413d35e1c37cf1a5", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "ext-xmlwriter": "*", - "nikic/php-parser": "^4.10.2", + "nikic/php-parser": "^4.19.1 || ^5.1.0", "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" + "phpunit/php-file-iterator": "^3.0.6", + "phpunit/php-text-template": "^2.0.4", + "sebastian/code-unit-reverse-lookup": "^2.0.3", + "sebastian/complexity": "^2.0.3", + "sebastian/environment": "^5.1.5", + "sebastian/lines-of-code": "^1.0.4", + "sebastian/version": "^3.0.2", + "theseer/tokenizer": "^1.2.3" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^9.6" }, "suggest": { - "ext-pcov": "*", - "ext-xdebug": "*" + "ext-pcov": "PHP extension that provides line coverage", + "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "9.2-dev" + "dev-main": "9.2.x-dev" } }, "autoload": { @@ -8001,7 +8790,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.6" + "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.32" }, "funding": [ { @@ -8009,20 +8799,20 @@ "type": "github" } ], - "time": "2021-03-28T07:26:59+00:00" + "time": "2024-08-22T04:23:01+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "3.0.5", + "version": "3.0.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8" + "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/aa4be8575f26070b100fccb67faabb28f21f66f8", - "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", + "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", "shasum": "" }, "require": { @@ -8061,7 +8851,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.5" + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" }, "funding": [ { @@ -8069,7 +8859,7 @@ "type": "github" } ], - "time": "2020-09-28T05:57:25+00:00" + "time": "2021-12-02T12:48:52+00:00" }, { "name": "phpunit/php-invoker", @@ -8254,55 +9044,50 @@ }, { "name": "phpunit/phpunit", - "version": "9.5.8", + "version": "9.6.21", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "191768ccd5c85513b4068bdbe99bb6390c7d54fb" + "reference": "de6abf3b6f8dd955fac3caad3af7a9504e8c2ffa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/191768ccd5c85513b4068bdbe99bb6390c7d54fb", - "reference": "191768ccd5c85513b4068bdbe99bb6390c7d54fb", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/de6abf3b6f8dd955fac3caad3af7a9504e8c2ffa", + "reference": "de6abf3b6f8dd955fac3caad3af7a9504e8c2ffa", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.3.1", + "doctrine/instantiator": "^1.5.0 || ^2", "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", + "myclabs/deep-copy": "^1.12.0", + "phar-io/manifest": "^2.0.4", + "phar-io/version": "^3.2.1", "php": ">=7.3", - "phpspec/prophecy": "^1.12.1", - "phpunit/php-code-coverage": "^9.2.3", - "phpunit/php-file-iterator": "^3.0.5", + "phpunit/php-code-coverage": "^9.2.32", + "phpunit/php-file-iterator": "^3.0.6", "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", + "phpunit/php-text-template": "^2.0.4", + "phpunit/php-timer": "^5.0.3", + "sebastian/cli-parser": "^1.0.2", + "sebastian/code-unit": "^1.0.8", + "sebastian/comparator": "^4.0.8", + "sebastian/diff": "^4.0.6", + "sebastian/environment": "^5.1.5", + "sebastian/exporter": "^4.0.6", + "sebastian/global-state": "^5.0.7", + "sebastian/object-enumerator": "^4.0.4", + "sebastian/resource-operations": "^3.0.4", + "sebastian/type": "^3.2.1", "sebastian/version": "^3.0.2" }, - "require-dev": { - "ext-pdo": "*", - "phpspec/prophecy-phpunit": "^2.0.1" - }, "suggest": { - "ext-soap": "*", - "ext-xdebug": "*" + "ext-soap": "To be able to generate mocks based on WSDL files", + "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" }, "bin": [ "phpunit" @@ -8310,15 +9095,15 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "9.5-dev" + "dev-master": "9.6-dev" } }, "autoload": { - "classmap": [ - "src/" - ], "files": [ "src/Framework/Assert/Functions.php" + ], + "classmap": [ + "src/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -8341,32 +9126,37 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.8" + "security": "https://github.com/sebastianbergmann/phpunit/security/policy", + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.21" }, "funding": [ { - "url": "https://phpunit.de/donate.html", + "url": "https://phpunit.de/sponsors.html", "type": "custom" }, { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", + "type": "tidelift" } ], - "time": "2021-07-31T15:17:34+00:00" + "time": "2024-09-19T10:50:18+00:00" }, { "name": "sebastian/cli-parser", - "version": "1.0.1", + "version": "1.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" + "reference": "2b56bea83a09de3ac06bb18b92f068e60cc6f50b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/2b56bea83a09de3ac06bb18b92f068e60cc6f50b", + "reference": "2b56bea83a09de3ac06bb18b92f068e60cc6f50b", "shasum": "" }, "require": { @@ -8401,7 +9191,7 @@ "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" + "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.2" }, "funding": [ { @@ -8409,7 +9199,7 @@ "type": "github" } ], - "time": "2020-09-28T06:08:49+00:00" + "time": "2024-03-02T06:27:43+00:00" }, { "name": "sebastian/code-unit", @@ -8524,16 +9314,16 @@ }, { "name": "sebastian/comparator", - "version": "4.0.6", + "version": "4.0.8", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382" + "reference": "fa0f136dd2334583309d32b62544682ee972b51a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/fa0f136dd2334583309d32b62544682ee972b51a", + "reference": "fa0f136dd2334583309d32b62544682ee972b51a", "shasum": "" }, "require": { @@ -8586,7 +9376,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" + "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.8" }, "funding": [ { @@ -8594,24 +9384,24 @@ "type": "github" } ], - "time": "2020-10-26T15:49:45+00:00" + "time": "2022-09-14T12:41:17+00:00" }, { "name": "sebastian/complexity", - "version": "2.0.2", + "version": "2.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" + "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/25f207c40d62b8b7aa32f5ab026c53561964053a", + "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a", "shasum": "" }, "require": { - "nikic/php-parser": "^4.7", + "nikic/php-parser": "^4.18 || ^5.0", "php": ">=7.3" }, "require-dev": { @@ -8643,7 +9433,7 @@ "homepage": "https://github.com/sebastianbergmann/complexity", "support": { "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" + "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.3" }, "funding": [ { @@ -8651,20 +9441,20 @@ "type": "github" } ], - "time": "2020-10-26T15:52:27+00:00" + "time": "2023-12-22T06:19:30+00:00" }, { "name": "sebastian/diff", - "version": "4.0.4", + "version": "4.0.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" + "reference": "ba01945089c3a293b01ba9badc29ad55b106b0bc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/ba01945089c3a293b01ba9badc29ad55b106b0bc", + "reference": "ba01945089c3a293b01ba9badc29ad55b106b0bc", "shasum": "" }, "require": { @@ -8709,7 +9499,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" + "source": "https://github.com/sebastianbergmann/diff/tree/4.0.6" }, "funding": [ { @@ -8717,20 +9507,20 @@ "type": "github" } ], - "time": "2020-10-26T13:10:38+00:00" + "time": "2024-03-02T06:30:58+00:00" }, { "name": "sebastian/environment", - "version": "5.1.3", + "version": "5.1.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac" + "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", + "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", "shasum": "" }, "require": { @@ -8772,7 +9562,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" + "source": "https://github.com/sebastianbergmann/environment/tree/5.1.5" }, "funding": [ { @@ -8780,20 +9570,20 @@ "type": "github" } ], - "time": "2020-09-28T05:52:38+00:00" + "time": "2023-02-03T06:03:51+00:00" }, { "name": "sebastian/exporter", - "version": "4.0.3", + "version": "4.0.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65" + "reference": "78c00df8f170e02473b682df15bfcdacc3d32d72" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/d89cc98761b8cb5a1a235a6b703ae50d34080e65", - "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/78c00df8f170e02473b682df15bfcdacc3d32d72", + "reference": "78c00df8f170e02473b682df15bfcdacc3d32d72", "shasum": "" }, "require": { @@ -8842,14 +9632,14 @@ } ], "description": "Provides the functionality to export PHP variables for visualization", - "homepage": "http://www.github.com/sebastianbergmann/exporter", + "homepage": "https://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" + "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.6" }, "funding": [ { @@ -8857,20 +9647,20 @@ "type": "github" } ], - "time": "2020-09-28T05:24:23+00:00" + "time": "2024-03-02T06:33:00+00:00" }, { "name": "sebastian/global-state", - "version": "5.0.3", + "version": "5.0.7", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49" + "reference": "bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9", + "reference": "bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9", "shasum": "" }, "require": { @@ -8913,7 +9703,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3" + "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.7" }, "funding": [ { @@ -8921,24 +9711,24 @@ "type": "github" } ], - "time": "2021-06-11T13:31:12+00:00" + "time": "2024-03-02T06:35:11+00:00" }, { "name": "sebastian/lines-of-code", - "version": "1.0.3", + "version": "1.0.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" + "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/e1e4a170560925c26d424b6a03aed157e7dcc5c5", + "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5", "shasum": "" }, "require": { - "nikic/php-parser": "^4.6", + "nikic/php-parser": "^4.18 || ^5.0", "php": ">=7.3" }, "require-dev": { @@ -8970,7 +9760,7 @@ "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" + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.4" }, "funding": [ { @@ -8978,7 +9768,7 @@ "type": "github" } ], - "time": "2020-11-28T06:42:11+00:00" + "time": "2023-12-22T06:20:34+00:00" }, { "name": "sebastian/object-enumerator", @@ -9094,16 +9884,16 @@ }, { "name": "sebastian/recursion-context", - "version": "4.0.4", + "version": "4.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" + "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", + "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", "shasum": "" }, "require": { @@ -9142,10 +9932,10 @@ } ], "description": "Provides functionality to recursively process PHP variables", - "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "homepage": "https://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" + "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.5" }, "funding": [ { @@ -9153,20 +9943,20 @@ "type": "github" } ], - "time": "2020-10-26T13:17:30+00:00" + "time": "2023-02-03T06:07:39+00:00" }, { "name": "sebastian/resource-operations", - "version": "3.0.3", + "version": "3.0.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" + "reference": "05d5692a7993ecccd56a03e40cd7e5b09b1d404e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/05d5692a7993ecccd56a03e40cd7e5b09b1d404e", + "reference": "05d5692a7993ecccd56a03e40cd7e5b09b1d404e", "shasum": "" }, "require": { @@ -9178,7 +9968,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-main": "3.0-dev" } }, "autoload": { @@ -9199,8 +9989,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/3.0.3" + "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.4" }, "funding": [ { @@ -9208,32 +9997,32 @@ "type": "github" } ], - "time": "2020-09-28T06:45:17+00:00" + "time": "2024-03-14T16:00:52+00:00" }, { "name": "sebastian/type", - "version": "2.3.4", + "version": "3.2.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/type.git", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914" + "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", + "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", "shasum": "" }, "require": { "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^9.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.3-dev" + "dev-master": "3.2-dev" } }, "autoload": { @@ -9256,7 +10045,7 @@ "homepage": "https://github.com/sebastianbergmann/type", "support": { "issues": "https://github.com/sebastianbergmann/type/issues", - "source": "https://github.com/sebastianbergmann/type/tree/2.3.4" + "source": "https://github.com/sebastianbergmann/type/tree/3.2.1" }, "funding": [ { @@ -9264,7 +10053,7 @@ "type": "github" } ], - "time": "2021-06-15T12:49:02+00:00" + "time": "2023-02-03T06:13:03+00:00" }, { "name": "sebastian/version", @@ -9321,28 +10110,28 @@ }, { "name": "symfony/browser-kit", - "version": "v5.3.4", + "version": "v5.4.40", "source": { "type": "git", "url": "https://github.com/symfony/browser-kit.git", - "reference": "c1e3f64fcc631c96e2c5843b666db66679ced11c" + "reference": "92c8ba1e5ee12d07120744c90898516132b4e58b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/browser-kit/zipball/c1e3f64fcc631c96e2c5843b666db66679ced11c", - "reference": "c1e3f64fcc631c96e2c5843b666db66679ced11c", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/92c8ba1e5ee12d07120744c90898516132b4e58b", + "reference": "92c8ba1e5ee12d07120744c90898516132b4e58b", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/dom-crawler": "^4.4|^5.0", + "symfony/dom-crawler": "^4.4|^5.0|^6.0", "symfony/polyfill-php80": "^1.16" }, "require-dev": { - "symfony/css-selector": "^4.4|^5.0", - "symfony/http-client": "^4.4|^5.0", - "symfony/mime": "^4.4|^5.0", - "symfony/process": "^4.4|^5.0" + "symfony/css-selector": "^4.4|^5.0|^6.0", + "symfony/http-client": "^4.4|^5.0|^6.0", + "symfony/mime": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0" }, "suggest": { "symfony/process": "" @@ -9373,7 +10162,7 @@ "description": "Simulates the behavior of a web browser, allowing you to make requests, click on links and submit forms programmatically", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/browser-kit/tree/v5.3.4" + "source": "https://github.com/symfony/browser-kit/tree/v5.4.40" }, "funding": [ { @@ -9389,20 +10178,20 @@ "type": "tidelift" } ], - "time": "2021-07-21T12:40:44+00:00" + "time": "2024-05-31T14:33:22+00:00" }, { "name": "symfony/css-selector", - "version": "v5.3.4", + "version": "v5.4.40", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "7fb120adc7f600a59027775b224c13a33530dd90" + "reference": "ea43887e9afd2029509662d4f95e8b5ef6fc9bbb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/7fb120adc7f600a59027775b224c13a33530dd90", - "reference": "7fb120adc7f600a59027775b224c13a33530dd90", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/ea43887e9afd2029509662d4f95e8b5ef6fc9bbb", + "reference": "ea43887e9afd2029509662d4f95e8b5ef6fc9bbb", "shasum": "" }, "require": { @@ -9439,7 +10228,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v5.3.4" + "source": "https://github.com/symfony/css-selector/tree/v5.4.40" }, "funding": [ { @@ -9455,38 +10244,38 @@ "type": "tidelift" } ], - "time": "2021-07-21T12:38:00+00:00" + "time": "2024-05-31T14:33:22+00:00" }, { "name": "symfony/debug-bundle", - "version": "v5.3.4", + "version": "v5.4.40", "source": { "type": "git", "url": "https://github.com/symfony/debug-bundle.git", - "reference": "356c7d2acb6bc93b1c091255068ccfb9ad55a3e0" + "reference": "177f79296705823eee0d7dd79773f3a9df884fe0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug-bundle/zipball/356c7d2acb6bc93b1c091255068ccfb9ad55a3e0", - "reference": "356c7d2acb6bc93b1c091255068ccfb9ad55a3e0", + "url": "https://api.github.com/repos/symfony/debug-bundle/zipball/177f79296705823eee0d7dd79773f3a9df884fe0", + "reference": "177f79296705823eee0d7dd79773f3a9df884fe0", "shasum": "" }, "require": { "ext-xml": "*", "php": ">=7.2.5", - "symfony/http-kernel": "^4.4|^5.0", + "symfony/http-kernel": "^4.4|^5.0|^6.0", "symfony/polyfill-php80": "^1.16", - "symfony/twig-bridge": "^4.4|^5.0", - "symfony/var-dumper": "^4.4|^5.0" + "symfony/twig-bridge": "^4.4|^5.0|^6.0", + "symfony/var-dumper": "^4.4|^5.0|^6.0" }, "conflict": { "symfony/config": "<4.4", "symfony/dependency-injection": "<5.2" }, "require-dev": { - "symfony/config": "^4.4|^5.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/web-profiler-bundle": "^4.4|^5.0" + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/web-profiler-bundle": "^4.4|^5.0|^6.0" }, "suggest": { "symfony/config": "For service container configuration", @@ -9515,10 +10304,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Provides a tight integration of the Symfony Debug component into the Symfony full-stack framework", + "description": "Provides a tight integration of the Symfony VarDumper component and the ServerLogCommand from MonologBridge into the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/debug-bundle/tree/v5.3.4" + "source": "https://github.com/symfony/debug-bundle/tree/v5.4.40" }, "funding": [ { @@ -9534,25 +10323,25 @@ "type": "tidelift" } ], - "time": "2021-07-21T12:40:44+00:00" + "time": "2024-05-31T14:33:22+00:00" }, { "name": "symfony/dom-crawler", - "version": "v5.3.4", + "version": "v5.4.44", "source": { "type": "git", "url": "https://github.com/symfony/dom-crawler.git", - "reference": "2dd8890bd01be59a5221999c05ccf0fcafcb354f" + "reference": "4c76e4176a5472c5afe504194d7bbef5cfdd1703" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/2dd8890bd01be59a5221999c05ccf0fcafcb354f", - "reference": "2dd8890bd01be59a5221999c05ccf0fcafcb354f", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/4c76e4176a5472c5afe504194d7bbef5cfdd1703", + "reference": "4c76e4176a5472c5afe504194d7bbef5cfdd1703", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.0", "symfony/polyfill-php80": "^1.16" @@ -9562,7 +10351,7 @@ }, "require-dev": { "masterminds/html5": "^2.6", - "symfony/css-selector": "^4.4|^5.0" + "symfony/css-selector": "^4.4|^5.0|^6.0" }, "suggest": { "symfony/css-selector": "" @@ -9593,7 +10382,7 @@ "description": "Eases DOM navigation for HTML and XML documents", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dom-crawler/tree/v5.3.4" + "source": "https://github.com/symfony/dom-crawler/tree/v5.4.44" }, "funding": [ { @@ -9609,46 +10398,49 @@ "type": "tidelift" } ], - "time": "2021-07-23T15:55:36+00:00" + "time": "2024-09-11T06:50:28+00:00" }, { "name": "symfony/maker-bundle", - "version": "v1.33.0", + "version": "v1.43.0", "source": { "type": "git", "url": "https://github.com/symfony/maker-bundle.git", - "reference": "f093d906c667cba7e3f74487d9e5e55aaf25a031" + "reference": "e3f9a1d9e0f4968f68454403e820dffc7db38a59" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/maker-bundle/zipball/f093d906c667cba7e3f74487d9e5e55aaf25a031", - "reference": "f093d906c667cba7e3f74487d9e5e55aaf25a031", + "url": "https://api.github.com/repos/symfony/maker-bundle/zipball/e3f9a1d9e0f4968f68454403e820dffc7db38a59", + "reference": "e3f9a1d9e0f4968f68454403e820dffc7db38a59", "shasum": "" }, "require": { - "doctrine/inflector": "^1.2|^2.0", - "nikic/php-parser": "^4.0", - "php": ">=7.1.3", - "symfony/config": "^4.0|^5.0", - "symfony/console": "^4.0|^5.0", - "symfony/dependency-injection": "^4.0|^5.0", - "symfony/deprecation-contracts": "^2.2", - "symfony/filesystem": "^4.0|^5.0", - "symfony/finder": "^4.0|^5.0", - "symfony/framework-bundle": "^4.0|^5.0", - "symfony/http-kernel": "^4.0|^5.0" + "doctrine/inflector": "^2.0", + "nikic/php-parser": "^4.11", + "php": ">=7.2.5", + "symfony/config": "^5.4.7|^6.0", + "symfony/console": "^5.4.7|^6.0", + "symfony/dependency-injection": "^5.4.7|^6.0", + "symfony/deprecation-contracts": "^2.2|^3", + "symfony/filesystem": "^5.4.7|^6.0", + "symfony/finder": "^5.4.3|^6.0", + "symfony/framework-bundle": "^5.4.7|^6.0", + "symfony/http-kernel": "^5.4.7|^6.0" + }, + "conflict": { + "doctrine/orm": "<2.10" }, "require-dev": { - "composer/semver": "^3.0@dev", - "doctrine/doctrine-bundle": "^1.8|^2.0", - "doctrine/orm": "^2.3", - "friendsofphp/php-cs-fixer": "^3.0", - "friendsoftwig/twigcs": "^4.1.0|^5.0.0", - "symfony/http-client": "^4.3|^5.0", - "symfony/phpunit-bridge": "^4.3|^5.0", - "symfony/process": "^4.0|^5.0", - "symfony/security-core": "^4.0|^5.0", - "symfony/yaml": "^4.0|^5.0" + "composer/semver": "^3.0", + "doctrine/doctrine-bundle": "^2.4", + "doctrine/orm": "^2.10.0", + "symfony/http-client": "^5.4.7|^6.0", + "symfony/phpunit-bridge": "^5.4.7|^6.0", + "symfony/polyfill-php80": "^1.16.0", + "symfony/process": "^5.4.7|^6.0", + "symfony/security-core": "^5.4.7|^6.0", + "symfony/yaml": "^5.4.3|^6.0", + "twig/twig": "^2.0|^3.0" }, "type": "symfony-bundle", "extra": { @@ -9681,7 +10473,7 @@ ], "support": { "issues": "https://github.com/symfony/maker-bundle/issues", - "source": "https://github.com/symfony/maker-bundle/tree/v1.33.0" + "source": "https://github.com/symfony/maker-bundle/tree/v1.43.0" }, "funding": [ { @@ -9697,31 +10489,31 @@ "type": "tidelift" } ], - "time": "2021-07-01T00:28:30+00:00" + "time": "2022-05-17T15:46:50+00:00" }, { "name": "symfony/phpunit-bridge", - "version": "v5.3.4", + "version": "v5.4.43", "source": { "type": "git", "url": "https://github.com/symfony/phpunit-bridge.git", - "reference": "bc368b765a651424b19f5759953ce2873e7d448b" + "reference": "047a8afc81d0cfee9799734ed5e2d32ea6079ddb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/bc368b765a651424b19f5759953ce2873e7d448b", - "reference": "bc368b765a651424b19f5759953ce2873e7d448b", + "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/047a8afc81d0cfee9799734ed5e2d32ea6079ddb", + "reference": "047a8afc81d0cfee9799734ed5e2d32ea6079ddb", "shasum": "" }, "require": { "php": ">=7.1.3", - "symfony/deprecation-contracts": "^2.1" + "symfony/deprecation-contracts": "^2.1|^3" }, "conflict": { "phpunit/phpunit": "<7.5|9.1.2" }, "require-dev": { - "symfony/error-handler": "^4.4|^5.0" + "symfony/error-handler": "^4.4|^5.0|^6.0" }, "suggest": { "symfony/error-handler": "For tracking deprecated interfaces usages at runtime with DebugClassLoader" @@ -9744,7 +10536,8 @@ "Symfony\\Bridge\\PhpUnit\\": "" }, "exclude-from-classmap": [ - "/Tests/" + "/Tests/", + "/bin/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -9764,7 +10557,7 @@ "description": "Provides utilities for PHPUnit, especially user deprecation notices management", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/phpunit-bridge/tree/v5.3.4" + "source": "https://github.com/symfony/phpunit-bridge/tree/v5.4.43" }, "funding": [ { @@ -9780,42 +10573,43 @@ "type": "tidelift" } ], - "time": "2021-07-15T21:37:44+00:00" + "time": "2024-08-13T13:55:12+00:00" }, { "name": "symfony/web-profiler-bundle", - "version": "v5.3.5", + "version": "v5.4.43", "source": { "type": "git", "url": "https://github.com/symfony/web-profiler-bundle.git", - "reference": "95fb24b09551688a09cffac95a2ddbb907833f07" + "reference": "8f1628f1361e4623a6c2b373c3594845d6aacb79" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/95fb24b09551688a09cffac95a2ddbb907833f07", - "reference": "95fb24b09551688a09cffac95a2ddbb907833f07", + "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/8f1628f1361e4623a6c2b373c3594845d6aacb79", + "reference": "8f1628f1361e4623a6c2b373c3594845d6aacb79", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/config": "^4.4|^5.0", - "symfony/framework-bundle": "^5.3", - "symfony/http-kernel": "^5.3", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/framework-bundle": "^5.3|^6.0,<6.4", + "symfony/http-kernel": "^5.3|^6.0", "symfony/polyfill-php80": "^1.16", - "symfony/routing": "^4.4|^5.0", - "symfony/twig-bundle": "^4.4|^5.0", + "symfony/routing": "^4.4|^5.0|^6.0", + "symfony/twig-bundle": "^4.4|^5.0|^6.0", "twig/twig": "^2.13|^3.0.4" }, "conflict": { "symfony/dependency-injection": "<5.2", "symfony/form": "<4.4", + "symfony/mailer": "<5.4", "symfony/messenger": "<4.4" }, "require-dev": { - "symfony/browser-kit": "^4.4|^5.0", - "symfony/console": "^4.4|^5.0", - "symfony/css-selector": "^4.4|^5.0", - "symfony/stopwatch": "^4.4|^5.0" + "symfony/browser-kit": "^4.4|^5.0|^6.0", + "symfony/console": "^4.4|^5.0|^6.0", + "symfony/css-selector": "^4.4|^5.0|^6.0", + "symfony/stopwatch": "^4.4|^5.0|^6.0" }, "type": "symfony-bundle", "autoload": { @@ -9843,7 +10637,7 @@ "description": "Provides a development tool that gives detailed information about the execution of any request", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/web-profiler-bundle/tree/v5.3.5" + "source": "https://github.com/symfony/web-profiler-bundle/tree/v5.4.43" }, "funding": [ { @@ -9859,20 +10653,20 @@ "type": "tidelift" } ], - "time": "2021-07-27T04:28:53+00:00" + "time": "2024-08-08T09:11:47+00:00" }, { "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": { @@ -9901,7 +10695,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": [ { @@ -9909,7 +10703,7 @@ "type": "github" } ], - "time": "2021-07-28T10:34:58+00:00" + "time": "2024-03-03T12:36:25+00:00" } ], "aliases": [], @@ -9923,5 +10717,5 @@ "ext-iconv": "*" }, "platform-dev": [], - "plugin-api-version": "2.0.0" + "plugin-api-version": "2.6.0" } diff --git a/config/bundles.php b/config/bundles.php index d758933..1669fc0 100644 --- a/config/bundles.php +++ b/config/bundles.php @@ -12,4 +12,7 @@ Symfony\Bundle\SecurityBundle\SecurityBundle::class => ['all' => true], Twig\Extra\TwigExtraBundle\TwigExtraBundle::class => ['all' => true], Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle::class => ['all' => true], + Doctrine\Bundle\FixturesBundle\DoctrineFixturesBundle::class => ['dev' => true, 'test' => true], + Knp\Bundle\PaginatorBundle\KnpPaginatorBundle::class => ['all' => true], + EasyCorp\Bundle\EasyAdminBundle\EasyAdminBundle::class => ['all' => true], ]; diff --git a/config/packages/security.yaml b/config/packages/security.yaml index 030c4de..ac0ab71 100644 --- a/config/packages/security.yaml +++ b/config/packages/security.yaml @@ -1,25 +1,42 @@ security: - # https://symfony.com/doc/current/security/experimental_authenticators.html - enable_authenticator_manager: true - # https://symfony.com/doc/current/security.html#where-do-users-come-from-user-providers - providers: - users_in_memory: { memory: null } - firewalls: - dev: - pattern: ^/(_(profiler|wdt)|css|images|js)/ - security: false - main: - lazy: true - provider: users_in_memory + # https://symfony.com/doc/current/security/experimental_authenticators.html + enable_authenticator_manager: true + password_hashers: + App\Entity\User: + algorithm: auto - # activate different ways to authenticate - # https://symfony.com/doc/current/security.html#firewalls-authentication + # https://symfony.com/doc/current/security.html#where-do-users-come-from-user-providers + providers: + # used to reload user from session & other features (e.g. switch_user) + app_user_provider: + entity: + class: App\Entity\User + property: email + firewalls: + dev: + pattern: ^/(_(profiler|wdt)|css|images|js)/ + security: false + main: + lazy: true + provider: app_user_provider + custom_authenticator: App\Security\AppUserAuthenticator + remember_me: + secret: "%kernel.secret%" + lifetime: 555555 # in seconds + path: / + logout: + path: app_logout + # where to redirect after logout + target: home - # https://symfony.com/doc/current/security/impersonating_user.html - # switch_user: true + # activate different ways to authenticate + # https://symfony.com/doc/current/security.html#firewalls-authentication - # Easy way to control access for large sections of your site - # Note: Only the *first* access control that matches will be used - access_control: - # - { path: ^/admin, roles: ROLE_ADMIN } - # - { path: ^/profile, roles: ROLE_USER } + # https://symfony.com/doc/current/security/impersonating_user.html + # switch_user: true + + # Easy way to control access for large sections of your site + # Note: Only the *first* access control that matches will be used + access_control: + #- { path: ^/admin, roles: ROLE_ADMIN } + - { path: ^/profile, roles: ROLE_USER } diff --git a/config/services.yaml b/config/services.yaml index ef07b76..e356652 100644 --- a/config/services.yaml +++ b/config/services.yaml @@ -23,3 +23,4 @@ services: # add more service definitions when explicit configuration is needed # please note that last definitions always *replace* previous ones + App\Service\CartService: \ No newline at end of file diff --git a/migrations/Version20241119030838.php b/migrations/Version20241119030838.php new file mode 100644 index 0000000..cf276d4 --- /dev/null +++ b/migrations/Version20241119030838.php @@ -0,0 +1,35 @@ +addSql('ALTER TABLE profile DROP FOREIGN KEY FK_8157AA0FA76ED395'); + $this->addSql('DROP TABLE profile'); + $this->addSql('ALTER TABLE user ADD first_name VARCHAR(255) NOT NULL, ADD last_name VARCHAR(255) NOT NULL, ADD phone VARCHAR(45) NOT NULL, ADD photo VARCHAR(255) NOT NULL'); + } + + public function down(Schema $schema): void + { + // this down() migration is auto-generated, please modify it to your needs + $this->addSql('CREATE TABLE profile (id INT AUTO_INCREMENT NOT NULL, user_id INT NOT NULL, photo VARCHAR(255) CHARACTER SET utf8mb4 NOT NULL COLLATE `utf8mb4_unicode_ci`, first_name VARCHAR(255) CHARACTER SET utf8mb4 NOT NULL COLLATE `utf8mb4_unicode_ci`, last_name VARCHAR(255) CHARACTER SET utf8mb4 NOT NULL COLLATE `utf8mb4_unicode_ci`, email VARCHAR(255) CHARACTER SET utf8mb4 NOT NULL COLLATE `utf8mb4_unicode_ci`, phone_number VARCHAR(45) CHARACTER SET utf8mb4 NOT NULL COLLATE `utf8mb4_unicode_ci`, UNIQUE INDEX UNIQ_8157AA0FA76ED395 (user_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB COMMENT = \'\' '); + $this->addSql('ALTER TABLE profile ADD CONSTRAINT FK_8157AA0FA76ED395 FOREIGN KEY (user_id) REFERENCES user (id) ON UPDATE NO ACTION ON DELETE NO ACTION'); + $this->addSql('ALTER TABLE user DROP first_name, DROP last_name, DROP phone, DROP photo'); + } +} diff --git a/public/layout/404.html b/public/layout/404.html deleted file mode 100644 index e4f87be..0000000 --- a/public/layout/404.html +++ /dev/null @@ -1,737 +0,0 @@ - - - - - - - - 404 Error || limupa - Digital Products Store eCommerce Bootstrap 4 Template - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
-
-
- -
-
- -
-
- - -
-
- -
-
- -
-
-
- - -
-
-
- -
- -
- - -
- - - - -
- -
- -
- -
-
-
- - - - - -
-
-
-
-
-
-
-
- -
- - - - - -
-
-
-
-
-
-

404

-

Opps! PAGE NOT BE FOUND

-

Sorry but the page you are looking for does not exist, have been removed,
name changed or is temporarity unavailable.

-
-
-
- - -
-
- -
-
-
-
-
- - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/layout/about-us.html b/public/layout/about-us.html deleted file mode 100644 index a7cb02e..0000000 --- a/public/layout/about-us.html +++ /dev/null @@ -1,901 +0,0 @@ - - - - - - - - About Us || limupa - Digital Products Store eCommerce Bootstrap 4 Template - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
-
-
- -
-
- -
-
- - -
-
- -
-
- -
-
-
- - -
-
-
- -
- -
- - -
- - - - -
- -
- -
- -
-
-
- - - - - -
-
-
-
-
-
-
-
- -
- - - - - -
-
-
- -
-
-

Provide BestProduct For You

-

We provide the best Beard oile all over the world. We are the worldd best store in indi for Beard Oil. You can buy our product without any hegitation because they truste us and buy our product without any hagitation because they belive and always happy buy our product.

-

Some of our customer say’s that they trust us and buy our product without any hagitation because they belive us and always happy to buy our product.

-

We provide the beshat they trusted us and buy our product without any hagitation because they belive us and always happy to buy.

-
-
- - -
-
- About Us -
-
- -
-
-
- - -
-
-
-
- -
-
-
- -
-
-
-

2169

-
-
- HAPPY CUSTOMERS -
-
-
-
- -
-
- -
-
- -
-
-
-

869

-
-
- AWARDS WINNED -
-
-
- -
-
- -
-
- -
-
-
-

689

-
-
- HOURS WORKED -
-
-
- -
-
- -
-
- -
-
-
-

2169

-
-
- COMPLETE PROJECTS -
-
-
- -
-
-
-
- - -
-
-
-
-
-

our team

-
-
-
-
-
-
-
- Our Team Member -
-
-

Jonathan Scott

-

IT Expert

- info@example.com - -
-
-
-
-
-
- Our Team Member -
-
-

Oliver Bastin

-

Web Designer

- info@example.com - -
-
-
-
-
-
- Our Team Member -
-
-

Erik Jonson

-

Web Developer

- info@example.com - -
-
-
-
-
-
- Our Team Member -
-
-

Maria Mandy

-

Marketing officer

- info@example.com - -
-
-
-
-
-
- - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/layout/blog-2-column.html b/public/layout/blog-2-column.html deleted file mode 100644 index e90e936..0000000 --- a/public/layout/blog-2-column.html +++ /dev/null @@ -1,864 +0,0 @@ - - - - - - - - Blog 2 Column || limupa - Digital Products Store eCommerce Bootstrap 4 Template - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
-
-
- -
-
- -
-
- - -
-
- -
-
- -
-
-
- - -
-
-
- -
- -
- - -
- - - - -
- -
- -
- -
-
-
- - - - - -
-
-
-
-
-
-
-
- -
- - - - - -
-
-
- -
-
-
-
-
- -
-
-
-

blog image post

- -

Donec vitae hendrerit arcu, sit amet faucibus nisl. Cras pretium arcu ex. Aenean posuere libero eu augue condimentum rhoncus. Cras pretium arcu ex.

- Read More... -
-
-
-
-
-
- -
-
-

blog gallery post

- -

Donec vitae hendrerit arcu, sit amet faucibus nisl. Cras pretium arcu ex. Aenean posuere libero eu augue condimentum rhoncus. Cras pretium arcu ex.

- Read More... -
-
-
-
-
-
-
- -
-
-
-

blog audio post

- -

Donec vitae hendrerit arcu, sit amet faucibus nisl. Cras pretium arcu ex. Aenean posuere libero eu augue condimentum rhoncus. Cras pretium arcu ex.

- Read More... -
-
-
-
-
-
-
- -
-
-
-

blog video post

- -

Donec vitae hendrerit arcu, sit amet faucibus nisl. Cras pretium arcu ex. Aenean posuere libero eu augue condimentum rhoncus. Cras pretium arcu ex.

- Read More... -
-
-
-
-
-
-
- -
-
-
-

blog fifth post

- -

Donec vitae hendrerit arcu, sit amet faucibus nisl. Cras pretium arcu ex. Aenean posuere libero eu augue condimentum rhoncus. Cras pretium arcu ex.

- Read More... -
-
-
-
-
-
-
- -
-
-
-

blog second post

- -

Donec vitae hendrerit arcu, sit amet faucibus nisl. Cras pretium arcu ex. Aenean posuere libero eu augue condimentum rhoncus. Cras pretium arcu ex.

- Read More... -
-
-
-
- -
-
-
-
- -
-
-
-
- -
-
- -
-
-
- - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/layout/blog-3-column.html b/public/layout/blog-3-column.html deleted file mode 100644 index e86e580..0000000 --- a/public/layout/blog-3-column.html +++ /dev/null @@ -1,864 +0,0 @@ - - - - - - - - Blog 3 Column || limupa - Digital Products Store eCommerce Bootstrap 4 Template - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
-
-
- -
-
- -
-
- - -
-
- -
-
- -
-
-
- - -
-
-
- -
- -
- - -
- - - - -
- -
- -
- -
-
-
- - - - - -
-
-
-
-
-
-
-
- -
- - - - - -
-
-
- -
-
-
-
-
- -
-
-
-

blog image post

- -

Donec vitae hendrerit arcu, sit amet faucibus nisl. Cras pretium arcu ex. Aenean posuere libero eu augue condimentum rhoncus. Cras pretium arcu ex.

- Read More... -
-
-
-
-
-
- -
-
-

blog gallery post

- -

Donec vitae hendrerit arcu, sit amet faucibus nisl. Cras pretium arcu ex. Aenean posuere libero eu augue condimentum rhoncus. Cras pretium arcu ex.

- Read More... -
-
-
-
-
-
-
- -
-
-
-

blog audio post

- -

Donec vitae hendrerit arcu, sit amet faucibus nisl. Cras pretium arcu ex. Aenean posuere libero eu augue condimentum rhoncus. Cras pretium arcu ex.

- Read More... -
-
-
-
-
-
-
- -
-
-
-

blog video post

- -

Donec vitae hendrerit arcu, sit amet faucibus nisl. Cras pretium arcu ex. Aenean posuere libero eu augue condimentum rhoncus. Cras pretium arcu ex.

- Read More... -
-
-
-
-
-
-
- -
-
-
-

blog fifth post

- -

Donec vitae hendrerit arcu, sit amet faucibus nisl. Cras pretium arcu ex. Aenean posuere libero eu augue condimentum rhoncus. Cras pretium arcu ex.

- Read More... -
-
-
-
-
-
-
- -
-
-
-

blog second post

- -

Donec vitae hendrerit arcu, sit amet faucibus nisl. Cras pretium arcu ex. Aenean posuere libero eu augue condimentum rhoncus. Cras pretium arcu ex.

- Read More... -
-
-
-
- -
-
-
-
- -
-
-
-
- -
-
- -
-
-
- - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/layout/blog-audio-format.html b/public/layout/blog-audio-format.html deleted file mode 100644 index a4e7814..0000000 --- a/public/layout/blog-audio-format.html +++ /dev/null @@ -1,926 +0,0 @@ - - - - - - - - Blog Audio Format || limupa - Digital Products Store eCommerce Bootstrap 4 Template - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
-
-
- -
-
- -
-
- - -
-
- -
-
- -
-
-
- - -
-
-
- -
- -
- - -
- - - - -
- -
- -
- -
-
-
- - - - - -
-
-
-
-
-
-
-
- -
- - - - - -
-
-
- -
-
-
-
-
- - -
-
-
- - -
-

Recent Post

-
-
- - Li's Product Image - -
-
- First Blog Post - -
-
-
-
- - Li's Product Image - -
-
- First Blog Post - -
-
-
-
- - Li's Product Image - -
-
- First Blog Post - -
-
-
- -
-
- - -
-
-
-
-
- -
-
-
-

The Biggest Collection For Digital Product

- -

Donec vitae hendrerit arcu, sit amet faucibus nisl. Cras pretium arcu ex. Aenean posuere libero eu augue condimentum rhoncus. Cras pretium arcu ex.

- -
-
-

Quisque semper nunc vitae erat pellentesque, ac placerat arcu consectetur. In venenatis elit ac ultrices convallis. Duis est nisi, tincidunt ac urna sed, cursus blandit lectus. In ullamcorper sit amet ligula ut eleifend. Proin dictum tempor ligula, ac feugiat metus. Sed finibus tortor eu scelerisque scelerisque.

-
-
- -

Donec vitae hendrerit arcu, sit amet faucibus nisl. Cras pretium arcu ex. Aenean posuere libero eu augue condimentum rhoncus. Cras pretium arcu ex. Lorem ipsum dolor sit amet consectetur adipisicing elit. Dolorum laborum in labore Donec vitae hendrerit arcu, sit amet faucibus nisl. Cras pretium arcu ex. Aenean posuere libero eu augue condimentum rhoncus. Cras pretium arcu ex. Lorem ipsum dolor sit amet consectetur adipisicing elit. Dolorum laborum in labore rerum Donec vitae hendrerit arcu, sit amet faucibus nisl. Cras pretium arcu ex. Aenean posuere libero eu augue condimentum rhoncus. Cras pretium arcu ex. Lorem ipsum dolor sit amet consectetur adipisicing elit. Dolorum laborum in labore rerum

- -
-

share this post:

- - - - -
-
-
-
- -
-

03 comment

-
    -
  • -
    - User -
    -
    - reply -
    admin
    - -

    Lorem ipsum dolor sit amet consectetur adipisicing elit. Enim maiores adipisci optio ex, laboriosam facilis non pariatur itaque illo sunt?

    -
    -
  • -
  • -
    - Admin -
    -
    - reply -
    admin
    - -

    Lorem ipsum dolor sit amet consectetur adipisicing elit. Enim maiores adipisci optio ex, laboriosam facilis non pariatur itaque illo sunt?

    -
    -
  • -
  • -
    - Admin -
    -
    - reply -
    admin
    - -

    Lorem ipsum dolor sit amet consectetur adipisicing elit. Enim maiores adipisci optio ex, laboriosam facilis non pariatur itaque illo sunt?

    -
    -
  • -
-
- - -
-

leave a reply

-

Your email address will not be published. Required fields are marked *

-
-
-
-
- - -
-
- - -
-
- - -
-
- - -
-
-
- -
-
-
-
-
-
- -
-
-
- -
-
-
- - - - > -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/layout/blog-details-left-sidebar.html b/public/layout/blog-details-left-sidebar.html deleted file mode 100644 index 498f76c..0000000 --- a/public/layout/blog-details-left-sidebar.html +++ /dev/null @@ -1,926 +0,0 @@ - - - - - - - - Blog Details Left Sidebar || limupa - Digital Products Store eCommerce Bootstrap 4 Template - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
-
-
- -
-
- -
-
- - -
-
- -
-
- -
-
-
- - -
-
-
- -
- -
- - -
- - - - -
- -
- -
- -
-
-
- - - - - -
-
-
-
-
-
-
-
- -
- - - - - -
-
-
- -
-
-
-
-
- - -
-
-
- - -
-

Recent Post

-
-
- - Li's Product Image - -
-
- First Blog Post - -
-
-
-
- - Li's Product Image - -
-
- First Blog Post - -
-
-
-
- - Li's Product Image - -
-
- First Blog Post - -
-
-
- -
-
- - -
-
-
-
-
- -
-
-
-

The Biggest Collection For Digital Product

- -

Donec vitae hendrerit arcu, sit amet faucibus nisl. Cras pretium arcu ex. Aenean posuere libero eu augue condimentum rhoncus. Cras pretium arcu ex.

- -
-
-

Quisque semper nunc vitae erat pellentesque, ac placerat arcu consectetur. In venenatis elit ac ultrices convallis. Duis est nisi, tincidunt ac urna sed, cursus blandit lectus. In ullamcorper sit amet ligula ut eleifend. Proin dictum tempor ligula, ac feugiat metus. Sed finibus tortor eu scelerisque scelerisque.

-
-
- -

Donec vitae hendrerit arcu, sit amet faucibus nisl. Cras pretium arcu ex. Aenean posuere libero eu augue condimentum rhoncus. Cras pretium arcu ex. Lorem ipsum dolor sit amet consectetur adipisicing elit. Dolorum laborum in labore Donec vitae hendrerit arcu, sit amet faucibus nisl. Cras pretium arcu ex. Aenean posuere libero eu augue condimentum rhoncus. Cras pretium arcu ex. Lorem ipsum dolor sit amet consectetur adipisicing elit. Dolorum laborum in labore rerum Donec vitae hendrerit arcu, sit amet faucibus nisl. Cras pretium arcu ex. Aenean posuere libero eu augue condimentum rhoncus. Cras pretium arcu ex. Lorem ipsum dolor sit amet consectetur adipisicing elit. Dolorum laborum in labore rerum

- -
-

share this post:

- - - - -
-
-
-
- -
-

03 comment

-
    -
  • -
    - User -
    -
    - reply -
    admin
    - -

    Lorem ipsum dolor sit amet consectetur adipisicing elit. Enim maiores adipisci optio ex, laboriosam facilis non pariatur itaque illo sunt?

    -
    -
  • -
  • -
    - Admin -
    -
    - reply -
    admin
    - -

    Lorem ipsum dolor sit amet consectetur adipisicing elit. Enim maiores adipisci optio ex, laboriosam facilis non pariatur itaque illo sunt?

    -
    -
  • -
  • -
    - Admin -
    -
    - reply -
    admin
    - -

    Lorem ipsum dolor sit amet consectetur adipisicing elit. Enim maiores adipisci optio ex, laboriosam facilis non pariatur itaque illo sunt?

    -
    -
  • -
-
- - -
-

leave a reply

-

Your email address will not be published. Required fields are marked *

-
-
-
-
- - -
-
- - -
-
- - -
-
- - -
-
-
- -
-
-
-
-
-
- -
-
-
- -
-
-
- - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/layout/blog-details-right-sidebar.html b/public/layout/blog-details-right-sidebar.html deleted file mode 100644 index 12a09b3..0000000 --- a/public/layout/blog-details-right-sidebar.html +++ /dev/null @@ -1,926 +0,0 @@ - - - - - - - - Blog Details Right Sidebar || limupa - Digital Products Store eCommerce Bootstrap 4 Template - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
-
-
- -
-
- -
-
- - -
-
- -
-
- -
-
-
- - -
-
-
- -
- -
- - -
- - - - -
- -
- -
- -
-
-
- - - - - -
-
-
-
-
-
-
-
- -
- - - - - -
-
-
- -
-
-
-
-
- - -
-
-
- - -
-

Recent Post

-
-
- - Li's Product Image - -
-
- First Blog Post - -
-
-
-
- - Li's Product Image - -
-
- First Blog Post - -
-
-
-
- - Li's Product Image - -
-
- First Blog Post - -
-
-
- -
-
- - -
-
-
-
-
- -
-
-
-

The Biggest Collection For Digital Product

- -

Donec vitae hendrerit arcu, sit amet faucibus nisl. Cras pretium arcu ex. Aenean posuere libero eu augue condimentum rhoncus. Cras pretium arcu ex.

- -
-
-

Quisque semper nunc vitae erat pellentesque, ac placerat arcu consectetur. In venenatis elit ac ultrices convallis. Duis est nisi, tincidunt ac urna sed, cursus blandit lectus. In ullamcorper sit amet ligula ut eleifend. Proin dictum tempor ligula, ac feugiat metus. Sed finibus tortor eu scelerisque scelerisque.

-
-
- -

Donec vitae hendrerit arcu, sit amet faucibus nisl. Cras pretium arcu ex. Aenean posuere libero eu augue condimentum rhoncus. Cras pretium arcu ex. Lorem ipsum dolor sit amet consectetur adipisicing elit. Dolorum laborum in labore Donec vitae hendrerit arcu, sit amet faucibus nisl. Cras pretium arcu ex. Aenean posuere libero eu augue condimentum rhoncus. Cras pretium arcu ex. Lorem ipsum dolor sit amet consectetur adipisicing elit. Dolorum laborum in labore rerum Donec vitae hendrerit arcu, sit amet faucibus nisl. Cras pretium arcu ex. Aenean posuere libero eu augue condimentum rhoncus. Cras pretium arcu ex. Lorem ipsum dolor sit amet consectetur adipisicing elit. Dolorum laborum in labore rerum

- -
-

share this post:

- - - - -
-
-
-
- -
-

03 comment

-
    -
  • -
    - User -
    -
    - reply -
    admin
    - -

    Lorem ipsum dolor sit amet consectetur adipisicing elit. Enim maiores adipisci optio ex, laboriosam facilis non pariatur itaque illo sunt?

    -
    -
  • -
  • -
    - Admin -
    -
    - reply -
    admin
    - -

    Lorem ipsum dolor sit amet consectetur adipisicing elit. Enim maiores adipisci optio ex, laboriosam facilis non pariatur itaque illo sunt?

    -
    -
  • -
  • -
    - Admin -
    -
    - reply -
    admin
    - -

    Lorem ipsum dolor sit amet consectetur adipisicing elit. Enim maiores adipisci optio ex, laboriosam facilis non pariatur itaque illo sunt?

    -
    -
  • -
-
- - -
-

leave a reply

-

Your email address will not be published. Required fields are marked *

-
-
-
-
- - -
-
- - -
-
- - -
-
- - -
-
-
- -
-
-
-
-
-
- -
-
-
- -
-
-
- - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/layout/blog-details.html b/public/layout/blog-details.html deleted file mode 100644 index e69de29..0000000 diff --git a/public/layout/blog-gallery-format.html b/public/layout/blog-gallery-format.html deleted file mode 100644 index 1ccfb36..0000000 --- a/public/layout/blog-gallery-format.html +++ /dev/null @@ -1,934 +0,0 @@ - - - - - - - - Blog Gallery Format || limupa - Digital Products Store eCommerce Bootstrap 4 Template - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
-
-
- -
-
- -
-
- - -
-
- -
-
- -
-
-
- - -
-
-
- -
- -
- - -
- - - - -
- -
- -
- -
-
-
- - - - - -
-
-
-
-
-
-
-
- -
- - - - - -
-
-
- -
-
-
-
-
- - -
-
-
- - -
-

Recent Post

-
-
- - Li's Product Image - -
-
- First Blog Post - -
-
-
-
- - Li's Product Image - -
-
- First Blog Post - -
-
-
-
- - Li's Product Image - -
-
- First Blog Post - -
-
-
- -
-
- - -
-
-
-
- -
-
-

The Biggest Collection For Digital Product

- -

Donec vitae hendrerit arcu, sit amet faucibus nisl. Cras pretium arcu ex. Aenean posuere libero eu augue condimentum rhoncus. Cras pretium arcu ex.

- -
-
-

Quisque semper nunc vitae erat pellentesque, ac placerat arcu consectetur. In venenatis elit ac ultrices convallis. Duis est nisi, tincidunt ac urna sed, cursus blandit lectus. In ullamcorper sit amet ligula ut eleifend. Proin dictum tempor ligula, ac feugiat metus. Sed finibus tortor eu scelerisque scelerisque.

-
-
- -

Donec vitae hendrerit arcu, sit amet faucibus nisl. Cras pretium arcu ex. Aenean posuere libero eu augue condimentum rhoncus. Cras pretium arcu ex. Lorem ipsum dolor sit amet consectetur adipisicing elit. Dolorum laborum in labore Donec vitae hendrerit arcu, sit amet faucibus nisl. Cras pretium arcu ex. Aenean posuere libero eu augue condimentum rhoncus. Cras pretium arcu ex. Lorem ipsum dolor sit amet consectetur adipisicing elit. Dolorum laborum in labore rerum Donec vitae hendrerit arcu, sit amet faucibus nisl. Cras pretium arcu ex. Aenean posuere libero eu augue condimentum rhoncus. Cras pretium arcu ex. Lorem ipsum dolor sit amet consectetur adipisicing elit. Dolorum laborum in labore rerum

- -
-

share this post:

- - - - -
-
-
-
- -
-

03 comment

-
    -
  • -
    - User -
    -
    - reply -
    admin
    - -

    Lorem ipsum dolor sit amet consectetur adipisicing elit. Enim maiores adipisci optio ex, laboriosam facilis non pariatur itaque illo sunt?

    -
    -
  • -
  • -
    - Admin -
    -
    - reply -
    admin
    - -

    Lorem ipsum dolor sit amet consectetur adipisicing elit. Enim maiores adipisci optio ex, laboriosam facilis non pariatur itaque illo sunt?

    -
    -
  • -
  • -
    - Admin -
    -
    - reply -
    admin
    - -

    Lorem ipsum dolor sit amet consectetur adipisicing elit. Enim maiores adipisci optio ex, laboriosam facilis non pariatur itaque illo sunt?

    -
    -
  • -
-
- - -
-

leave a reply

-

Your email address will not be published. Required fields are marked *

-
-
-
-
- - -
-
- - -
-
- - -
-
- - -
-
-
- -
-
-
-
-
-
- -
-
-
- -
-
-
- - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/layout/blog-left-sidebar.html b/public/layout/blog-left-sidebar.html deleted file mode 100644 index d72648d..0000000 --- a/public/layout/blog-left-sidebar.html +++ /dev/null @@ -1,947 +0,0 @@ - - - - - - - - Blog Left Sidebar || limupa - Digital Products Store eCommerce Bootstrap 4 Template - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
-
-
- -
-
- -
-
- - -
-
- -
-
- -
-
-
- - -
-
-
- -
- -
- - -
- - - - -
- -
- -
- -
-
-
- - - - - -
-
-
-
-
-
-
-
- -
- - - - - -
-
-
- -
-
-
-
-
- - -
-
-
- - -
-

Recent Post

-
-
- - Li's Product Image - -
-
- First Blog Post - -
-
-
-
- - Li's Product Image - -
-
- First Blog Post - -
-
-
-
- - Li's Product Image - -
-
- First Blog Post - -
-
-
- -
-
- - -
-
-
-
-
- -
-
-
-

blog image post

- -

Donec vitae hendrerit arcu, sit amet faucibus nisl. Cras pretium arcu ex. Aenean posuere libero eu augue condimentum rhoncus. Cras pretium arcu ex.

- Read More... -
-
-
-
-
-
- -
-
-

blog gallery post

- -

Donec vitae hendrerit arcu, sit amet faucibus nisl. Cras pretium arcu ex. Aenean posuere libero eu augue condimentum rhoncus. Cras pretium arcu ex.

- Read More... -
-
-
-
-
-
-
- -
-
-
-

blog audio post

- -

Donec vitae hendrerit arcu, sit amet faucibus nisl. Cras pretium arcu ex. Aenean posuere libero eu augue condimentum rhoncus. Cras pretium arcu ex.

- Read More... -
-
-
-
-
-
-
- -
-
-
-

blog video post

- -

Donec vitae hendrerit arcu, sit amet faucibus nisl. Cras pretium arcu ex. Aenean posuere libero eu augue condimentum rhoncus. Cras pretium arcu ex.

- Read More... -
-
-
-
-
-
-
- -
-
-
-

blog fifth post

- -

Donec vitae hendrerit arcu, sit amet faucibus nisl. Cras pretium arcu ex. Aenean posuere libero eu augue condimentum rhoncus. Cras pretium arcu ex.

- Read More... -
-
-
-
-
-
-
- -
-
-
-

blog second post

- -

Donec vitae hendrerit arcu, sit amet faucibus nisl. Cras pretium arcu ex. Aenean posuere libero eu augue condimentum rhoncus. Cras pretium arcu ex.

- Read More... -
-
-
-
- -
-
-
-
- -
-
-
-
- -
-
- -
-
-
- - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/layout/blog-list-left-sidebar.html b/public/layout/blog-list-left-sidebar.html deleted file mode 100644 index b052d11..0000000 --- a/public/layout/blog-list-left-sidebar.html +++ /dev/null @@ -1,983 +0,0 @@ - - - - - - - - Blog List Left Sidebar || limupa - Digital Products Store eCommerce Bootstrap 4 Template - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
-
-
- -
-
- -
-
- - -
-
- -
-
- -
-
-
- - -
-
-
- -
- -
- - -
- - - - -
- -
- -
- -
-
-
- - - - - -
-
-
-
-
-
-
-
- -
- - - - - -
-
-
- -
-
-
-
-
- - -
-
-
- - -
-

Recent Post

-
-
- - Li's Product Image - -
-
- First Blog Post - -
-
-
-
- - Li's Product Image - -
-
- First Blog Post - -
-
-
-
- - Li's Product Image - -
-
- First Blog Post - -
-
-
- -
-
- - -
-
-
-
-
-
-
- -
-
-
-
-
-

blog image post

- -

Donec vitae hendrerit arcu, sit amet faucibus nisl. Cras pretium arcu ex. Aenean posuere libero eu augue condimentum rhoncus. Cras pretium arcu ex.

- Read More... -
-
-
-
-
-
-
-
-
-
- -
-
-
-
-

blog gallery post

- -

Donec vitae hendrerit arcu, sit amet faucibus nisl. Cras pretium arcu ex. Aenean posuere libero eu augue condimentum rhoncus. Cras pretium arcu ex.

- Read More... -
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-

blog audio post

- -

Donec vitae hendrerit arcu, sit amet faucibus nisl. Cras pretium arcu ex. Aenean posuere libero eu augue condimentum rhoncus. Cras pretium arcu ex.

- Read More... -
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-

blog video post

- -

Donec vitae hendrerit arcu, sit amet faucibus nisl. Cras pretium arcu ex. Aenean posuere libero eu augue condimentum rhoncus. Cras pretium arcu ex.

- Read More... -
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-

blog fifth post

- -

Donec vitae hendrerit arcu, sit amet faucibus nisl. Cras pretium arcu ex. Aenean posuere libero eu augue condimentum rhoncus. Cras pretium arcu ex.

- Read More... -
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-

blog second post

- -

Donec vitae hendrerit arcu, sit amet faucibus nisl. Cras pretium arcu ex. Aenean posuere libero eu augue condimentum rhoncus. Cras pretium arcu ex.

- Read More... -
-
-
-
-
-
- -
-
-
-
- -
-
-
-
- -
-
- -
-
-
- - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/layout/blog-list-right-sidebar.html b/public/layout/blog-list-right-sidebar.html deleted file mode 100644 index c37b828..0000000 --- a/public/layout/blog-list-right-sidebar.html +++ /dev/null @@ -1,983 +0,0 @@ - - - - - - - - Blog List Right Sidebar || limupa - Digital Products Store eCommerce Bootstrap 4 Template - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
-
-
- -
-
- -
-
- - -
-
- -
-
- -
-
-
- - -
-
-
- -
- -
- - -
- - - - -
- -
- -
- -
-
-
- - - - - -
-
-
-
-
-
-
-
- -
- - - - - -
-
-
- -
-
-
-
-
-
-
- -
-
-
-
-
-

blog image post

- -

Donec vitae hendrerit arcu, sit amet faucibus nisl. Cras pretium arcu ex. Aenean posuere libero eu augue condimentum rhoncus. Cras pretium arcu ex.

- Read More... -
-
-
-
-
-
-
-
-
-
- -
-
-
-
-

blog gallery post

- -

Donec vitae hendrerit arcu, sit amet faucibus nisl. Cras pretium arcu ex. Aenean posuere libero eu augue condimentum rhoncus. Cras pretium arcu ex.

- Read More... -
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-

blog audio post

- -

Donec vitae hendrerit arcu, sit amet faucibus nisl. Cras pretium arcu ex. Aenean posuere libero eu augue condimentum rhoncus. Cras pretium arcu ex.

- Read More... -
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-

blog video post

- -

Donec vitae hendrerit arcu, sit amet faucibus nisl. Cras pretium arcu ex. Aenean posuere libero eu augue condimentum rhoncus. Cras pretium arcu ex.

- Read More... -
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-

blog fifth post

- -

Donec vitae hendrerit arcu, sit amet faucibus nisl. Cras pretium arcu ex. Aenean posuere libero eu augue condimentum rhoncus. Cras pretium arcu ex.

- Read More... -
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-

blog second post

- -

Donec vitae hendrerit arcu, sit amet faucibus nisl. Cras pretium arcu ex. Aenean posuere libero eu augue condimentum rhoncus. Cras pretium arcu ex.

- Read More... -
-
-
-
-
-
- -
-
-
-
- -
-
-
-
- -
-
- - -
-
-
-
-
- - -
-
-
- - -
-

Recent Post

-
-
- - Li's Product Image - -
-
- First Blog Post - -
-
-
-
- - Li's Product Image - -
-
- First Blog Post - -
-
-
-
- - Li's Product Image - -
-
- First Blog Post - -
-
-
- -
-
- -
-
-
- - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/layout/blog-list.html b/public/layout/blog-list.html deleted file mode 100644 index 563fd27..0000000 --- a/public/layout/blog-list.html +++ /dev/null @@ -1,900 +0,0 @@ - - - - - - - - Blog List || limupa - Digital Products Store eCommerce Bootstrap 4 Template - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
-
-
- -
-
- -
-
- - -
-
- -
-
- -
-
-
- - -
-
-
- -
- -
- - -
- - - - -
- -
- -
- -
-
-
- - - - - -
-
-
-
-
-
-
-
- -
- - - - - -
-
-
- -
-
-
-
-
-
-
- -
-
-
-
-
-

blog image post

- -

Donec vitae hendrerit arcu, sit amet faucibus nisl. Cras pretium arcu ex. Aenean posuere libero eu augue condimentum rhoncus. Cras pretium arcu ex.

- Read More... -
-
-
-
-
-
-
-
-
-
- -
-
-
-
-

blog gallery post

- -

Donec vitae hendrerit arcu, sit amet faucibus nisl. Cras pretium arcu ex. Aenean posuere libero eu augue condimentum rhoncus. Cras pretium arcu ex.

- Read More... -
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-

blog audio post

- -

Donec vitae hendrerit arcu, sit amet faucibus nisl. Cras pretium arcu ex. Aenean posuere libero eu augue condimentum rhoncus. Cras pretium arcu ex.

- Read More... -
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-

blog video post

- -

Donec vitae hendrerit arcu, sit amet faucibus nisl. Cras pretium arcu ex. Aenean posuere libero eu augue condimentum rhoncus. Cras pretium arcu ex.

- Read More... -
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-

blog fifth post

- -

Donec vitae hendrerit arcu, sit amet faucibus nisl. Cras pretium arcu ex. Aenean posuere libero eu augue condimentum rhoncus. Cras pretium arcu ex.

- Read More... -
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-

blog second post

- -

Donec vitae hendrerit arcu, sit amet faucibus nisl. Cras pretium arcu ex. Aenean posuere libero eu augue condimentum rhoncus. Cras pretium arcu ex.

- Read More... -
-
-
-
-
-
- -
-
-
-
- -
-
-
-
- -
-
- -
-
-
- - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/layout/blog-right-sidebar.html b/public/layout/blog-right-sidebar.html deleted file mode 100644 index 913532a..0000000 --- a/public/layout/blog-right-sidebar.html +++ /dev/null @@ -1,947 +0,0 @@ - - - - - - - - Blog Right Sidebar || limupa - Digital Products Store eCommerce Bootstrap 4 Template - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
-
-
- -
-
- -
-
- - -
-
- -
-
- -
-
-
- - -
-
-
- -
- -
- - -
- - - - -
- -
- -
- -
-
-
- - - - - -
-
-
-
-
-
-
-
- -
- - - - - -
-
-
- -
-
-
-
-
- -
-
-
-

blog image post

- -

Donec vitae hendrerit arcu, sit amet faucibus nisl. Cras pretium arcu ex. Aenean posuere libero eu augue condimentum rhoncus. Cras pretium arcu ex.

- Read More... -
-
-
-
-
-
- -
-
-

blog gallery post

- -

Donec vitae hendrerit arcu, sit amet faucibus nisl. Cras pretium arcu ex. Aenean posuere libero eu augue condimentum rhoncus. Cras pretium arcu ex.

- Read More... -
-
-
-
-
-
-
- -
-
-
-

blog audio post

- -

Donec vitae hendrerit arcu, sit amet faucibus nisl. Cras pretium arcu ex. Aenean posuere libero eu augue condimentum rhoncus. Cras pretium arcu ex.

- Read More... -
-
-
-
-
-
-
- -
-
-
-

blog video post

- -

Donec vitae hendrerit arcu, sit amet faucibus nisl. Cras pretium arcu ex. Aenean posuere libero eu augue condimentum rhoncus. Cras pretium arcu ex.

- Read More... -
-
-
-
-
-
-
- -
-
-
-

blog fifth post

- -

Donec vitae hendrerit arcu, sit amet faucibus nisl. Cras pretium arcu ex. Aenean posuere libero eu augue condimentum rhoncus. Cras pretium arcu ex.

- Read More... -
-
-
-
-
-
-
- -
-
-
-

blog second post

- -

Donec vitae hendrerit arcu, sit amet faucibus nisl. Cras pretium arcu ex. Aenean posuere libero eu augue condimentum rhoncus. Cras pretium arcu ex.

- Read More... -
-
-
-
- -
-
-
-
- -
-
-
-
- -
-
- - -
-
-
-
-
- - -
-
-
- - -
-

Recent Post

-
-
- - Li's Product Image - -
-
- First Blog Post - -
-
-
-
- - Li's Product Image - -
-
- First Blog Post - -
-
-
-
- - Li's Product Image - -
-
- First Blog Post - -
-
-
- -
-
- -
-
-
- - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/layout/blog-video-format.html b/public/layout/blog-video-format.html deleted file mode 100644 index 0bb00dc..0000000 --- a/public/layout/blog-video-format.html +++ /dev/null @@ -1,926 +0,0 @@ - - - - - - - - Blog Video Format || limupa - Digital Products Store eCommerce Bootstrap 4 Template - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
-
-
- -
-
- -
-
- - -
-
- -
-
- -
-
-
- - -
-
-
- -
- -
- - -
- - - - -
- -
- -
- -
-
-
- - - - - -
-
-
-
-
-
-
-
- -
- - - - - -
-
-
- -
-
-
-
-
- - -
-
-
- - -
-

Recent Post

-
-
- - Li's Product Image - -
-
- First Blog Post - -
-
-
-
- - Li's Product Image - -
-
- First Blog Post - -
-
-
-
- - Li's Product Image - -
-
- First Blog Post - -
-
-
- -
-
- - -
-
-
-
-
- -
-
-
-

The Biggest Collection For Digital Product

- -

Donec vitae hendrerit arcu, sit amet faucibus nisl. Cras pretium arcu ex. Aenean posuere libero eu augue condimentum rhoncus. Cras pretium arcu ex.

- -
-
-

Quisque semper nunc vitae erat pellentesque, ac placerat arcu consectetur. In venenatis elit ac ultrices convallis. Duis est nisi, tincidunt ac urna sed, cursus blandit lectus. In ullamcorper sit amet ligula ut eleifend. Proin dictum tempor ligula, ac feugiat metus. Sed finibus tortor eu scelerisque scelerisque.

-
-
- -

Donec vitae hendrerit arcu, sit amet faucibus nisl. Cras pretium arcu ex. Aenean posuere libero eu augue condimentum rhoncus. Cras pretium arcu ex. Lorem ipsum dolor sit amet consectetur adipisicing elit. Dolorum laborum in labore Donec vitae hendrerit arcu, sit amet faucibus nisl. Cras pretium arcu ex. Aenean posuere libero eu augue condimentum rhoncus. Cras pretium arcu ex. Lorem ipsum dolor sit amet consectetur adipisicing elit. Dolorum laborum in labore rerum Donec vitae hendrerit arcu, sit amet faucibus nisl. Cras pretium arcu ex. Aenean posuere libero eu augue condimentum rhoncus. Cras pretium arcu ex. Lorem ipsum dolor sit amet consectetur adipisicing elit. Dolorum laborum in labore rerum

- -
-

share this post:

- - - - -
-
-
-
- -
-

03 comment

-
    -
  • -
    - User -
    -
    - reply -
    admin
    - -

    Lorem ipsum dolor sit amet consectetur adipisicing elit. Enim maiores adipisci optio ex, laboriosam facilis non pariatur itaque illo sunt?

    -
    -
  • -
  • -
    - Admin -
    -
    - reply -
    admin
    - -

    Lorem ipsum dolor sit amet consectetur adipisicing elit. Enim maiores adipisci optio ex, laboriosam facilis non pariatur itaque illo sunt?

    -
    -
  • -
  • -
    - Admin -
    -
    - reply -
    admin
    - -

    Lorem ipsum dolor sit amet consectetur adipisicing elit. Enim maiores adipisci optio ex, laboriosam facilis non pariatur itaque illo sunt?

    -
    -
  • -
-
- - -
-

leave a reply

-

Your email address will not be published. Required fields are marked *

-
-
-
-
- - -
-
- - -
-
- - -
-
- - -
-
-
- -
-
-
-
-
-
- -
-
-
- -
-
-
- - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/layout/cart.html b/public/layout/cart.html deleted file mode 100644 index e69de29..0000000 diff --git a/public/layout/checkout.html b/public/layout/checkout.html deleted file mode 100644 index 1b92518..0000000 --- a/public/layout/checkout.html +++ /dev/null @@ -1,1030 +0,0 @@ - - - - - - - - Checkout || limupa - Digital Products Store eCommerce Bootstrap 4 Template - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
-
-
- -
-
- -
-
- - -
-
- -
-
- -
-
-
- - -
-
-
- -
- -
- - -
- - - - -
- -
- -
- -
-
-
- - - - - -
-
-
-
-
-
-
-
- -
- - - - - -
-
-
-
-
- -

Returning customer? Click here to login

-
-
-

Quisque gravida turpis sit amet nulla posuere lacinia. Cras sed est sit amet ipsum luctus.

-
-

- - -

-

- - -

-

- - -

-

Lost your password?

-
-
-
- - -

Have a coupon? Click here to enter your code

-
-
-
-

- - -

-
-
-
- -
-
-
-
-
-
-
-

Billing Details

-
-
-
- - -
-
-
-
- - -
-
-
-
- - -
-
-
-
- - -
-
-
-
- - -
-
-
-
- -
-
-
-
- - -
-
-
-
- - -
-
-
-
- - -
-
-
-
- - -
-
-
-
- - -
-
-
-
- - -
- -
-
-
-
-

- - -

-
-
-
-
- - -
-
-
-
- - -
-
-
-
- - -
-
-
-
- - -
-
-
-
- - -
-
-
-
- -
-
-
-
- - -
-
-
-
- - -
-
-
-
- - -
-
-
-
- - -
-
-
-
- - -
-
-
-
-
- - -
-
-
-
-
-
-
-
-

Your order

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - -
ProductTotal
Vestibulum suscipit × 1£165.00
Vestibulum suscipit × 1£165.00
Cart Subtotal£215.00
Order Total£215.00
-
-
-
-
-
- -
-
-

Make your payment directly into our bank account. Please use your Order ID as the payment reference. Your order won’t be shipped until the funds have cleared in our account.

-
-
-
-
- -
-
-

Make your payment directly into our bank account. Please use your Order ID as the payment reference. Your order won’t be shipped until the funds have cleared in our account.

-
-
-
-
-
-
- -
-
-
-
-

Make your payment directly into our bank account. Please use your Order ID as the payment reference. Your order won’t be shipped until the funds have cleared in our account.

-
-
-
-
-
- -
-
-
-
-
-
-
-
- - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/layout/compare.html b/public/layout/compare.html deleted file mode 100644 index 1723c6f..0000000 --- a/public/layout/compare.html +++ /dev/null @@ -1,803 +0,0 @@ - - - - - - - - Compare || limupa - Digital Products Store eCommerce Bootstrap 4 Template - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
-
-
- -
-
- -
-
- - -
-
- -
-
- -
-
-
- - -
-
-
- -
- -
- - -
- - - - -
- -
- -
- -
-
-
- - - - - -
-
-
-
-
-
-
-
- -
- - - - - -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Image - - - -
Product Name -
HP Pavilion
-
-
HP Probook
-
DescriptionImpressively thin and light, the HP Pavilion G6 empowers users to create, - connect, and collaborate, using enterprise-class performanceImpressively thin and light, the HP ProBook 450 G4 empowers users to create, - connect, and collaborate, using enterprise-class performance
Price$800$1020
ColorBlackRed
SizeMediumLarge
StockIn StockStock Out
Rating -
- - - - - -
-
-
- - - - - -
-
-
-
-
- - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/layout/contact.html b/public/layout/contact.html deleted file mode 100644 index 92d5548..0000000 --- a/public/layout/contact.html +++ /dev/null @@ -1,966 +0,0 @@ - - - - - - - - Contact || limupa - Digital Products Store eCommerce Bootstrap 4 Template - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
-
-
- -
-
- -
-
- - -
-
- -
-
- -
-
-
- - -
-
-
- -
- -
- - -
- - - - -
- -
- -
- -
-
-
- - - - - -
-
-
-
-
-
-
-
- -
- - - - - -
-
-
-
-
-
-
-
-

Contact Us

-

Claritas est etiam processus dynamicus, qui sequitur mutationem consuetudium lectorum. Mirum est notare quam littera gothica, quam nunc putamus parum claram anteposuerit litterarum formas human.

-
-

Address

-

123 Main Street, Anytown, CA 12345 – USA

-
-
-

Phone

-

Mobile: (08) 123 456 789

-

Hotline: 1009 678 456

-
-
-

Email

-

yourmail@domain.com

-

support@hastech.company

-
-
-
-
-
-

Tell Us Your Message

-
-
-
- - -
-
- - -
-
- - -
-
- - -
-
- -
-
-
-

-
-
-
-
-
- - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/layout/css/bootstrap.min.css b/public/layout/css/bootstrap.min.css index 6561b6f..fcf87cb 100644 --- a/public/layout/css/bootstrap.min.css +++ b/public/layout/css/bootstrap.min.css @@ -4,4 +4,3 @@ * Copyright 2011-2018 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) */:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#007bff;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:transparent}@-ms-viewport{width:device-width}article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus{outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent;-webkit-text-decoration-skip:objects}a:hover{color:#0056b3;text-decoration:underline}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus,a:not([href]):not([tabindex]):hover{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg:not(:root){overflow:hidden}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-family:inherit;font-weight:500;line-height:1.2;color:inherit}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:80%;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8e3}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:80%;color:#6c757d}.blockquote-footer::before{content:"\2014 \00A0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#6c757d}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}code{font-size:87.5%;color:#e83e8c;word-break:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#212529}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:576px){.container{max-width:540px}}@media (min-width:768px){.container{max-width:720px}}@media (min-width:992px){.container{max-width:960px}}@media (min-width:1200px){.container{max-width:1140px}}.container-fluid{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-auto,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-auto,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{position:relative;width:100%;min-height:1px;padding-right:15px;padding-left:15px}.col{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-1{-webkit-box-flex:0;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-2{-webkit-box-flex:0;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-4{-webkit-box-flex:0;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-5{-webkit-box-flex:0;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-7{-webkit-box-flex:0;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-8{-webkit-box-flex:0;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-10{-webkit-box-flex:0;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-11{-webkit-box-flex:0;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-1{margin-left:8.333333%}.offset-2{margin-left:16.666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.333333%}.offset-5{margin-left:41.666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.333333%}.offset-8{margin-left:66.666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.333333%}.offset-11{margin-left:91.666667%}@media (min-width:576px){.col-sm{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-sm-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-sm-1{-webkit-box-flex:0;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-sm-2{-webkit-box-flex:0;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-sm-4{-webkit-box-flex:0;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-sm-5{-webkit-box-flex:0;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-sm-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-sm-7{-webkit-box-flex:0;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-sm-8{-webkit-box-flex:0;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-sm-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-sm-10{-webkit-box-flex:0;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-sm-11{-webkit-box-flex:0;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-sm-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-sm-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-sm-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-sm-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-sm-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-sm-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-sm-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-sm-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-sm-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-sm-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-sm-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-sm-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-sm-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-sm-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-sm-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-sm-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.333333%}.offset-sm-2{margin-left:16.666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.333333%}.offset-sm-5{margin-left:41.666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.333333%}.offset-sm-8{margin-left:66.666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.333333%}.offset-sm-11{margin-left:91.666667%}}@media (min-width:768px){.col-md{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-md-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-md-1{-webkit-box-flex:0;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-md-2{-webkit-box-flex:0;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-md-4{-webkit-box-flex:0;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-md-5{-webkit-box-flex:0;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-md-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-md-7{-webkit-box-flex:0;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-md-8{-webkit-box-flex:0;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-md-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-md-10{-webkit-box-flex:0;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-md-11{-webkit-box-flex:0;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-md-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-md-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-md-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-md-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-md-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-md-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-md-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-md-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-md-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-md-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-md-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-md-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-md-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-md-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-md-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-md-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.333333%}.offset-md-2{margin-left:16.666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.333333%}.offset-md-5{margin-left:41.666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.333333%}.offset-md-8{margin-left:66.666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.333333%}.offset-md-11{margin-left:91.666667%}}@media (min-width:992px){.col-lg{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-lg-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-lg-1{-webkit-box-flex:0;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-lg-2{-webkit-box-flex:0;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-lg-4{-webkit-box-flex:0;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-lg-5{-webkit-box-flex:0;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-lg-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-lg-7{-webkit-box-flex:0;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-lg-8{-webkit-box-flex:0;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-lg-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-lg-10{-webkit-box-flex:0;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-lg-11{-webkit-box-flex:0;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-lg-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-lg-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-lg-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-lg-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-lg-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-lg-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-lg-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-lg-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-lg-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-lg-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-lg-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-lg-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-lg-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-lg-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-lg-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-lg-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.333333%}.offset-lg-2{margin-left:16.666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.333333%}.offset-lg-5{margin-left:41.666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.333333%}.offset-lg-8{margin-left:66.666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.333333%}.offset-lg-11{margin-left:91.666667%}}@media (min-width:1200px){.col-xl{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-xl-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-xl-1{-webkit-box-flex:0;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-xl-2{-webkit-box-flex:0;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-xl-4{-webkit-box-flex:0;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-xl-5{-webkit-box-flex:0;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-xl-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-xl-7{-webkit-box-flex:0;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-xl-8{-webkit-box-flex:0;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-xl-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-xl-10{-webkit-box-flex:0;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-xl-11{-webkit-box-flex:0;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-xl-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-xl-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-xl-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-xl-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-xl-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-xl-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-xl-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-xl-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-xl-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-xl-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-xl-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-xl-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-xl-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-xl-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-xl-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-xl-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.333333%}.offset-xl-2{margin-left:16.666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.333333%}.offset-xl-5{margin-left:41.666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.333333%}.offset-xl-8{margin-left:66.666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.333333%}.offset-xl-11{margin-left:91.666667%}}.table{width:100%;max-width:100%;margin-bottom:1rem;background-color:transparent}.table td,.table th{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table .table{background-color:#fff}.table-sm td,.table-sm th{padding:.3rem}.table-bordered{border:1px solid #dee2e6}.table-bordered td,.table-bordered th{border:1px solid #dee2e6}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.table-hover tbody tr:hover{background-color:rgba(0,0,0,.075)}.table-primary,.table-primary>td,.table-primary>th{background-color:#b8daff}.table-hover .table-primary:hover{background-color:#9fcdff}.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#9fcdff}.table-secondary,.table-secondary>td,.table-secondary>th{background-color:#d6d8db}.table-hover .table-secondary:hover{background-color:#c8cbcf}.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#c8cbcf}.table-success,.table-success>td,.table-success>th{background-color:#c3e6cb}.table-hover .table-success:hover{background-color:#b1dfbb}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1dfbb}.table-info,.table-info>td,.table-info>th{background-color:#bee5eb}.table-hover .table-info:hover{background-color:#abdde5}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>td,.table-warning>th{background-color:#ffeeba}.table-hover .table-warning:hover{background-color:#ffe8a1}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe8a1}.table-danger,.table-danger>td,.table-danger>th{background-color:#f5c6cb}.table-hover .table-danger:hover{background-color:#f1b0b7}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f1b0b7}.table-light,.table-light>td,.table-light>th{background-color:#fdfdfe}.table-hover .table-light:hover{background-color:#ececf6}.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>td,.table-dark>th{background-color:#c6c8ca}.table-hover .table-dark:hover{background-color:#b9bbbe}.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b9bbbe}.table-active,.table-active>td,.table-active>th{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,.075)}.table .thead-dark th{color:#fff;background-color:#212529;border-color:#32383e}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.table-dark{color:#fff;background-color:#212529}.table-dark td,.table-dark th,.table-dark thead th{border-color:#32383e}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,.05)}.table-dark.table-hover tbody tr:hover{background-color:rgba(255,255,255,.075)}@media (max-width:575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-sm>.table-bordered{border:0}}@media (max-width:767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-md>.table-bordered{border:0}}@media (max-width:991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-lg>.table-bordered{border:0}}@media (max-width:1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.form-control::-webkit-input-placeholder{color:#6c757d;opacity:1}.form-control::-moz-placeholder{color:#6c757d;opacity:1}.form-control:-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}select.form-control:not([size]):not([multiple]){height:calc(2.25rem + 2px)}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding-top:.375rem;padding-bottom:.375rem;margin-bottom:0;line-height:1.5;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm,.input-group-lg>.form-control-plaintext.form-control,.input-group-lg>.input-group-append>.form-control-plaintext.btn,.input-group-lg>.input-group-append>.form-control-plaintext.input-group-text,.input-group-lg>.input-group-prepend>.form-control-plaintext.btn,.input-group-lg>.input-group-prepend>.form-control-plaintext.input-group-text,.input-group-sm>.form-control-plaintext.form-control,.input-group-sm>.input-group-append>.form-control-plaintext.btn,.input-group-sm>.input-group-append>.form-control-plaintext.input-group-text,.input-group-sm>.input-group-prepend>.form-control-plaintext.btn,.input-group-sm>.input-group-prepend>.form-control-plaintext.input-group-text{padding-right:0;padding-left:0}.form-control-sm,.input-group-sm>.form-control,.input-group-sm>.input-group-append>.btn,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-prepend>.input-group-text{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.input-group-sm>.input-group-append>select.btn:not([size]):not([multiple]),.input-group-sm>.input-group-append>select.input-group-text:not([size]):not([multiple]),.input-group-sm>.input-group-prepend>select.btn:not([size]):not([multiple]),.input-group-sm>.input-group-prepend>select.input-group-text:not([size]):not([multiple]),.input-group-sm>select.form-control:not([size]):not([multiple]),select.form-control-sm:not([size]):not([multiple]){height:calc(1.8125rem + 2px)}.form-control-lg,.input-group-lg>.form-control,.input-group-lg>.input-group-append>.btn,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-prepend>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.input-group-lg>.input-group-append>select.btn:not([size]):not([multiple]),.input-group-lg>.input-group-append>select.input-group-text:not([size]):not([multiple]),.input-group-lg>.input-group-prepend>select.btn:not([size]):not([multiple]),.input-group-lg>.input-group-prepend>select.input-group-text:not([size]):not([multiple]),.input-group-lg>select.form-control:not([size]):not([multiple]),select.form-control-lg:not([size]):not([multiple]){height:calc(2.875rem + 2px)}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*=col-]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input:disabled~.form-check-label{color:#6c757d}.form-check-label{margin-bottom:0}.form-check-inline{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#28a745}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.5rem;margin-top:.1rem;font-size:.875rem;line-height:1;color:#fff;background-color:rgba(40,167,69,.8);border-radius:.2rem}.custom-select.is-valid,.form-control.is-valid,.was-validated .custom-select:valid,.was-validated .form-control:valid{border-color:#28a745}.custom-select.is-valid:focus,.form-control.is-valid:focus,.was-validated .custom-select:valid:focus,.was-validated .form-control:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-select.is-valid~.valid-feedback,.custom-select.is-valid~.valid-tooltip,.form-control.is-valid~.valid-feedback,.form-control.is-valid~.valid-tooltip,.was-validated .custom-select:valid~.valid-feedback,.was-validated .custom-select:valid~.valid-tooltip,.was-validated .form-control:valid~.valid-feedback,.was-validated .form-control:valid~.valid-tooltip{display:block}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#28a745}.form-check-input.is-valid~.valid-feedback,.form-check-input.is-valid~.valid-tooltip,.was-validated .form-check-input:valid~.valid-feedback,.was-validated .form-check-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid~.custom-control-label,.was-validated .custom-control-input:valid~.custom-control-label{color:#28a745}.custom-control-input.is-valid~.custom-control-label::before,.was-validated .custom-control-input:valid~.custom-control-label::before{background-color:#71dd8a}.custom-control-input.is-valid~.valid-feedback,.custom-control-input.is-valid~.valid-tooltip,.was-validated .custom-control-input:valid~.valid-feedback,.was-validated .custom-control-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid:checked~.custom-control-label::before,.was-validated .custom-control-input:valid:checked~.custom-control-label::before{background-color:#34ce57}.custom-control-input.is-valid:focus~.custom-control-label::before,.was-validated .custom-control-input:valid:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(40,167,69,.25)}.custom-file-input.is-valid~.custom-file-label,.was-validated .custom-file-input:valid~.custom-file-label{border-color:#28a745}.custom-file-input.is-valid~.custom-file-label::before,.was-validated .custom-file-input:valid~.custom-file-label::before{border-color:inherit}.custom-file-input.is-valid~.valid-feedback,.custom-file-input.is-valid~.valid-tooltip,.was-validated .custom-file-input:valid~.valid-feedback,.was-validated .custom-file-input:valid~.valid-tooltip{display:block}.custom-file-input.is-valid:focus~.custom-file-label,.was-validated .custom-file-input:valid:focus~.custom-file-label{box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.5rem;margin-top:.1rem;font-size:.875rem;line-height:1;color:#fff;background-color:rgba(220,53,69,.8);border-radius:.2rem}.custom-select.is-invalid,.form-control.is-invalid,.was-validated .custom-select:invalid,.was-validated .form-control:invalid{border-color:#dc3545}.custom-select.is-invalid:focus,.form-control.is-invalid:focus,.was-validated .custom-select:invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.custom-select.is-invalid~.invalid-feedback,.custom-select.is-invalid~.invalid-tooltip,.form-control.is-invalid~.invalid-feedback,.form-control.is-invalid~.invalid-tooltip,.was-validated .custom-select:invalid~.invalid-feedback,.was-validated .custom-select:invalid~.invalid-tooltip,.was-validated .form-control:invalid~.invalid-feedback,.was-validated .form-control:invalid~.invalid-tooltip{display:block}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.form-check-input.is-invalid~.invalid-feedback,.form-check-input.is-invalid~.invalid-tooltip,.was-validated .form-check-input:invalid~.invalid-feedback,.was-validated .form-check-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid~.custom-control-label,.was-validated .custom-control-input:invalid~.custom-control-label{color:#dc3545}.custom-control-input.is-invalid~.custom-control-label::before,.was-validated .custom-control-input:invalid~.custom-control-label::before{background-color:#efa2a9}.custom-control-input.is-invalid~.invalid-feedback,.custom-control-input.is-invalid~.invalid-tooltip,.was-validated .custom-control-input:invalid~.invalid-feedback,.was-validated .custom-control-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid:checked~.custom-control-label::before,.was-validated .custom-control-input:invalid:checked~.custom-control-label::before{background-color:#e4606d}.custom-control-input.is-invalid:focus~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(220,53,69,.25)}.custom-file-input.is-invalid~.custom-file-label,.was-validated .custom-file-input:invalid~.custom-file-label{border-color:#dc3545}.custom-file-input.is-invalid~.custom-file-label::before,.was-validated .custom-file-input:invalid~.custom-file-label::before{border-color:inherit}.custom-file-input.is-invalid~.invalid-feedback,.custom-file-input.is-invalid~.invalid-tooltip,.was-validated .custom-file-input:invalid~.invalid-feedback,.was-validated .custom-file-input:invalid~.invalid-tooltip{display:block}.custom-file-input.is-invalid:focus~.custom-file-label,.was-validated .custom-file-input:invalid:focus~.custom-file-label{box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-inline{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.form-inline .form-check{width:100%}@media (min-width:576px){.form-inline label{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .input-group{width:auto}.form-inline .form-check{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;text-align:center;white-space:nowrap;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}.btn:focus,.btn:hover{text-decoration:none}.btn.focus,.btn:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.btn.disabled,.btn:disabled{opacity:.65}.btn:not(:disabled):not(.disabled){cursor:pointer}.btn:not(:disabled):not(.disabled).active,.btn:not(:disabled):not(.disabled):active{background-image:none}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:hover{color:#fff;background-color:#0069d9;border-color:#0062cc}.btn-primary.focus,.btn-primary:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:not(:disabled):not(.disabled).active,.btn-primary:not(:disabled):not(.disabled):active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0062cc;border-color:#005cbf}.btn-primary:not(:disabled):not(.disabled).active:focus,.btn-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.btn-secondary.focus,.btn-secondary:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:not(:disabled):not(.disabled).active,.btn-secondary:not(:disabled):not(.disabled):active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.btn-secondary:not(:disabled):not(.disabled).active:focus,.btn-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success.focus,.btn-success:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:not(:disabled):not(.disabled).active,.btn-success:not(:disabled):not(.disabled):active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.btn-success:not(:disabled):not(.disabled).active:focus,.btn-success:not(:disabled):not(.disabled):active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info.focus,.btn-info:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:not(:disabled):not(.disabled).active,.btn-info:not(:disabled):not(.disabled):active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.btn-info:not(:disabled):not(.disabled).active:focus,.btn-info:not(:disabled):not(.disabled):active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.btn-warning.focus,.btn-warning:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:not(:disabled):not(.disabled).active,.btn-warning:not(:disabled):not(.disabled):active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}.btn-warning:not(:disabled):not(.disabled).active:focus,.btn-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.btn-danger.focus,.btn-danger:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:not(:disabled):not(.disabled).active,.btn-danger:not(:disabled):not(.disabled):active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d}.btn-danger:not(:disabled):not(.disabled).active:focus,.btn-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.btn-light.focus,.btn-light:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled).active,.btn-light:not(:disabled):not(.disabled):active,.show>.btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.btn-light:not(:disabled):not(.disabled).active:focus,.btn-light:not(:disabled):not(.disabled):active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}.btn-dark.focus,.btn-dark:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:not(:disabled):not(.disabled).active,.btn-dark:not(:disabled):not(.disabled):active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1d2124;border-color:#171a1d}.btn-dark:not(:disabled):not(.disabled).active:focus,.btn-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-outline-primary{color:#007bff;background-color:transparent;background-image:none;border-color:#007bff}.btn-outline-primary:hover{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary.focus,.btn-outline-primary:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#007bff;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled).active,.btn-outline-primary:not(:disabled):not(.disabled):active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-secondary{color:#6c757d;background-color:transparent;background-image:none;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary.focus,.btn-outline-secondary:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled).active,.btn-outline-secondary:not(:disabled):not(.disabled):active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-success{color:#28a745;background-color:transparent;background-image:none;border-color:#28a745}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success.focus,.btn-outline-success:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled).active,.btn-outline-success:not(:disabled):not(.disabled):active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:not(:disabled):not(.disabled).active:focus,.btn-outline-success:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-info{color:#17a2b8;background-color:transparent;background-image:none;border-color:#17a2b8}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info.focus,.btn-outline-info:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled).active,.btn-outline-info:not(:disabled):not(.disabled):active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:not(:disabled):not(.disabled).active:focus,.btn-outline-info:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-warning{color:#ffc107;background-color:transparent;background-image:none;border-color:#ffc107}.btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning.focus,.btn-outline-warning:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled).active,.btn-outline-warning:not(:disabled):not(.disabled):active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-danger{color:#dc3545;background-color:transparent;background-image:none;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger.focus,.btn-outline-danger:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled).active,.btn-outline-danger:not(:disabled):not(.disabled):active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-light{color:#f8f9fa;background-color:transparent;background-image:none;border-color:#f8f9fa}.btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light.focus,.btn-outline-light:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled).active,.btn-outline-light:not(:disabled):not(.disabled):active,.show>.btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled).active:focus,.btn-outline-light:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-dark{color:#343a40;background-color:transparent;background-image:none;border-color:#343a40}.btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark.focus,.btn-outline-dark:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#343a40;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled).active,.btn-outline-dark:not(:disabled):not(.disabled):active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-link{font-weight:400;color:#007bff;background-color:transparent}.btn-link:hover{color:#0056b3;text-decoration:underline;background-color:transparent;border-color:transparent}.btn-link.focus,.btn-link:focus{text-decoration:underline;border-color:transparent;box-shadow:none}.btn-link.disabled,.btn-link:disabled{color:#6c757d}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;transition:opacity .15s linear}.fade.show{opacity:1}.collapse{display:none}.collapse.show{display:block}tr.collapse.show{display:table-row}tbody.collapse.show{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;transition:height .35s ease}.dropdown,.dropup{position:relative}.dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropup .dropdown-menu{margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-menu{margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-toggle::after{vertical-align:0}.dropleft .dropdown-menu{margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:""}.dropleft .dropdown-toggle::after{display:none}.dropleft .dropdown-toggle::before{display:inline-block;width:0;height:0;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty::after{margin-left:0}.dropleft .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#16181b;text-decoration:none;background-color:#f8f9fa}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#007bff}.dropdown-item.disabled,.dropdown-item:disabled{color:#6c757d;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.btn-group,.btn-group-vertical{position:relative;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto}.btn-group-vertical>.btn:hover,.btn-group>.btn:hover{z-index:1}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus{z-index:1}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group,.btn-group-vertical .btn+.btn,.btn-group-vertical .btn+.btn-group,.btn-group-vertical .btn-group+.btn,.btn-group-vertical .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after{margin-left:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.btn-group-vertical .btn,.btn-group-vertical .btn-group{width:100%}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn input[type=checkbox],.btn-group-toggle>.btn input[type=radio],.btn-group-toggle>.btn-group>.btn input[type=checkbox],.btn-group-toggle>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;width:100%}.input-group>.custom-file,.input-group>.custom-select,.input-group>.form-control{position:relative;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;width:1%;margin-bottom:0}.input-group>.custom-file:focus,.input-group>.custom-select:focus,.input-group>.form-control:focus{z-index:3}.input-group>.custom-file+.custom-file,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.form-control,.input-group>.custom-select+.custom-file,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.form-control,.input-group>.form-control+.custom-file,.input-group>.form-control+.custom-select,.input-group>.form-control+.form-control{margin-left:-1px}.input-group>.custom-select:not(:last-child),.input-group>.form-control:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-select:not(:first-child),.input-group>.form-control:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label::before{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label,.input-group>.custom-file:not(:first-child) .custom-file-label::before{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-append,.input-group-prepend{display:-webkit-box;display:-ms-flexbox;display:flex}.input-group-append .btn,.input-group-prepend .btn{position:relative;z-index:2}.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.btn,.input-group-append .input-group-text+.input-group-text,.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-prepend .input-group-text+.input-group-text{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-text input[type=checkbox],.input-group-text input[type=radio]{margin-top:0}.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child),.input-group>.input-group-append:not(:last-child)>.btn,.input-group>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child),.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text{border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;display:block;min-height:1.5rem;padding-left:1.5rem}.custom-control-inline{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;z-index:-1;opacity:0}.custom-control-input:checked~.custom-control-label::before{color:#fff;background-color:#007bff}.custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-control-input:active~.custom-control-label::before{color:#fff;background-color:#b3d7ff}.custom-control-input:disabled~.custom-control-label{color:#6c757d}.custom-control-input:disabled~.custom-control-label::before{background-color:#e9ecef}.custom-control-label{margin-bottom:0}.custom-control-label::before{position:absolute;top:.25rem;left:0;display:block;width:1rem;height:1rem;pointer-events:none;content:"";-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:#dee2e6}.custom-control-label::after{position:absolute;top:.25rem;left:0;display:block;width:1rem;height:1rem;content:"";background-repeat:no-repeat;background-position:center center;background-size:50% 50%}.custom-checkbox .custom-control-label::before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked~.custom-control-label::before{background-color:#007bff}.custom-checkbox .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before{background-color:#007bff}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::after{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='%23fff' d='M0 2h4'/%3E%3C/svg%3E")}.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-radio .custom-control-label::before{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-label::before{background-color:#007bff}.custom-radio .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E")}.custom-radio .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-select{display:inline-block;width:100%;height:calc(2.25rem + 2px);padding:.375rem 1.75rem .375rem .75rem;line-height:1.5;color:#495057;vertical-align:middle;background:#fff url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right .75rem center;background-size:8px 10px;border:1px solid #ced4da;border-radius:.25rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-select:focus{border-color:#80bdff;outline:0;box-shadow:inset 0 1px 2px rgba(0,0,0,.075),0 0 5px rgba(128,189,255,.5)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#6c757d;background-color:#e9ecef}.custom-select::-ms-expand{opacity:0}.custom-select-sm{height:calc(1.8125rem + 2px);padding-top:.375rem;padding-bottom:.375rem;font-size:75%}.custom-select-lg{height:calc(2.875rem + 2px);padding-top:.375rem;padding-bottom:.375rem;font-size:125%}.custom-file{position:relative;display:inline-block;width:100%;height:calc(2.25rem + 2px);margin-bottom:0}.custom-file-input{position:relative;z-index:2;width:100%;height:calc(2.25rem + 2px);margin:0;opacity:0}.custom-file-input:focus~.custom-file-control{border-color:#80bdff;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-file-input:focus~.custom-file-control::before{border-color:#80bdff}.custom-file-input:lang(en)~.custom-file-label::after{content:"Browse"}.custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(2.25rem + 2px);padding:.375rem .75rem;line-height:1.5;color:#495057;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:calc(calc(2.25rem + 2px) - 1px * 2);padding:.375rem .75rem;line-height:1.5;color:#495057;content:"Browse";background-color:#e9ecef;border-left:1px solid #ced4da;border-radius:0 .25rem .25rem 0}.nav{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#6c757d}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#007bff}.nav-fill .nav-item{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;text-align:center}.nav-justified .nav-item{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:.5rem 1rem}.navbar>.container,.navbar>.container-fluid{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-nav{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{-ms-flex-preferred-size:100%;flex-basis:100%;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}.navbar-toggler:not(:disabled):not(.disabled){cursor:pointer}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:no-repeat center center;background-size:100% 100%}@media (max-width:575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:576px){.navbar-expand-sm{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-sm .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-sm .navbar-collapse{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width:767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:768px){.navbar-expand-md{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-md .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-md .navbar-collapse{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width:991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:992px){.navbar-expand-lg{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-lg .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-lg .navbar-collapse{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width:1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:1200px){.navbar-expand-xl{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-xl .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-xl .navbar-collapse{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .dropup .dropdown-menu{top:auto;bottom:100%}}.navbar-expand{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand .navbar-collapse{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .dropup .dropdown-menu{top:auto;bottom:100%}.navbar-light .navbar-brand{color:rgba(0,0,0,.9)}.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.5)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.5);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-light .navbar-text{color:rgba(0,0,0,.5)}.navbar-light .navbar-text a{color:rgba(0,0,0,.9)}.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,.5)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:rgba(255,255,255,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,.25)}.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,.5);border-color:rgba(255,255,255,.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-dark .navbar-text{color:rgba(255,255,255,.5)}.navbar-dark .navbar-text a{color:#fff}.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group:first-child .list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card>.list-group:last-child .list-group-item:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-body{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-header+.list-group .list-group-item:first-child{border-top:0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.625rem;margin-bottom:-.75rem;margin-left:-.625rem;border-bottom:0}.card-header-pills{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img{width:100%;border-radius:calc(.25rem - 1px)}.card-img-top{width:100%;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img-bottom{width:100%;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-deck{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.card-deck .card{margin-bottom:15px}@media (min-width:576px){.card-deck{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1 0 0%;flex:1 0 0%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.card-group>.card{margin-bottom:15px}@media (min-width:576px){.card-group{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap}.card-group>.card{-webkit-box-flex:1;-ms-flex:1 0 0%;flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:first-child .card-header,.card-group>.card:first-child .card-img-top{border-top-right-radius:0}.card-group>.card:first-child .card-footer,.card-group>.card:first-child .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:last-child .card-header,.card-group>.card:last-child .card-img-top{border-top-left-radius:0}.card-group>.card:last-child .card-footer,.card-group>.card:last-child .card-img-bottom{border-bottom-left-radius:0}.card-group>.card:only-child{border-radius:.25rem}.card-group>.card:only-child .card-header,.card-group>.card:only-child .card-img-top{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card-group>.card:only-child .card-footer,.card-group>.card:only-child .card-img-bottom{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-group>.card:not(:first-child):not(:last-child):not(:only-child){border-radius:0}.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-footer,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-header,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-img-bottom,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-img-top{border-radius:0}}.card-columns .card{margin-bottom:.75rem}@media (min-width:576px){.card-columns{-webkit-column-count:3;-moz-column-count:3;column-count:3;-webkit-column-gap:1.25rem;-moz-column-gap:1.25rem;column-gap:1.25rem}.card-columns .card{display:inline-block;width:100%}}.breadcrumb{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb-item+.breadcrumb-item::before{display:inline-block;padding-right:.5rem;padding-left:.5rem;color:#6c757d;content:"/"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#6c757d}.pagination{display:-webkit-box;display:-ms-flexbox;display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#007bff;background-color:#fff;border:1px solid #dee2e6}.page-link:hover{color:#0056b3;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:2;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.page-link:not(:disabled):not(.disabled){cursor:pointer}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link{z-index:1;color:#fff;background-color:#007bff;border-color:#007bff}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#007bff}.badge-primary[href]:focus,.badge-primary[href]:hover{color:#fff;text-decoration:none;background-color:#0062cc}.badge-secondary{color:#fff;background-color:#6c757d}.badge-secondary[href]:focus,.badge-secondary[href]:hover{color:#fff;text-decoration:none;background-color:#545b62}.badge-success{color:#fff;background-color:#28a745}.badge-success[href]:focus,.badge-success[href]:hover{color:#fff;text-decoration:none;background-color:#1e7e34}.badge-info{color:#fff;background-color:#17a2b8}.badge-info[href]:focus,.badge-info[href]:hover{color:#fff;text-decoration:none;background-color:#117a8b}.badge-warning{color:#212529;background-color:#ffc107}.badge-warning[href]:focus,.badge-warning[href]:hover{color:#212529;text-decoration:none;background-color:#d39e00}.badge-danger{color:#fff;background-color:#dc3545}.badge-danger[href]:focus,.badge-danger[href]:hover{color:#fff;text-decoration:none;background-color:#bd2130}.badge-light{color:#212529;background-color:#f8f9fa}.badge-light[href]:focus,.badge-light[href]:hover{color:#212529;text-decoration:none;background-color:#dae0e5}.badge-dark{color:#fff;background-color:#343a40}.badge-dark[href]:focus,.badge-dark[href]:hover{color:#fff;text-decoration:none;background-color:#1d2124}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width:576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#004085;background-color:#cce5ff;border-color:#b8daff}.alert-primary hr{border-top-color:#9fcdff}.alert-primary .alert-link{color:#002752}.alert-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}.alert-secondary hr{border-top-color:#c8cbcf}.alert-secondary .alert-link{color:#202326}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-success hr{border-top-color:#b1dfbb}.alert-success .alert-link{color:#0b2e13}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-danger hr{border-top-color:#f1b0b7}.alert-danger .alert-link{color:#491217}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.alert-dark hr{border-top-color:#b9bbbe}.alert-dark .alert-link{color:#040505}@-webkit-keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:-webkit-box;display:-ms-flexbox;display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;color:#fff;text-align:center;background-color:#007bff;transition:width .6s ease}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.progress-bar-animated{-webkit-animation:progress-bar-stripes 1s linear infinite;animation:progress-bar-stripes 1s linear infinite}.media{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.media-body{-webkit-box-flex:1;-ms-flex:1;flex:1}.list-group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;margin-bottom:-1px;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.list-group-item:focus,.list-group-item:hover{z-index:1;text-decoration:none}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#007bff;border-color:#007bff}.list-group-flush .list-group-item{border-right:0;border-left:0;border-radius:0}.list-group-flush:first-child .list-group-item:first-child{border-top:0}.list-group-flush:last-child .list-group-item:last-child{border-bottom:0}.list-group-item-primary{color:#004085;background-color:#b8daff}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#004085;background-color:#9fcdff}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#004085;border-color:#004085}.list-group-item-secondary{color:#383d41;background-color:#d6d8db}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#383d41;background-color:#c8cbcf}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#383d41;border-color:#383d41}.list-group-item-success{color:#155724;background-color:#c3e6cb}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#155724;background-color:#b1dfbb}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}.list-group-item-info{color:#0c5460;background-color:#bee5eb}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#0c5460;background-color:#abdde5}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.list-group-item-warning{color:#856404;background-color:#ffeeba}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#856404;background-color:#ffe8a1}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}.list-group-item-danger{color:#721c24;background-color:#f5c6cb}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#721c24;background-color:#f1b0b7}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#721c24;border-color:#721c24}.list-group-item-light{color:#818182;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#818182;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#1b1e21;background-color:#b9bbbe}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:focus,.close:hover{color:#000;text-decoration:none;opacity:.75}.close:not(:disabled):not(.disabled){cursor:pointer}button.close{padding:0;background-color:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;outline:0}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out;-webkit-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.show .modal-dialog{-webkit-transform:translate(0,0);transform:translate(0,0)}.modal-dialog-centered{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;min-height:calc(100% - (.5rem * 2))}.modal-content{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:1rem;border-bottom:1px solid #e9ecef;border-top-left-radius:.3rem;border-top-right-radius:.3rem}.modal-header .close{padding:1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem}.modal-footer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;padding:1rem;border-top:1px solid #e9ecef}.modal-footer>:not(:first-child){margin-left:.25rem}.modal-footer>:not(:last-child){margin-right:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-centered{min-height:calc(100% - (1.75rem * 2))}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg{max-width:800px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[x-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[x-placement^=top] .arrow,.bs-tooltip-top .arrow{bottom:0}.bs-tooltip-auto[x-placement^=top] .arrow::before,.bs-tooltip-top .arrow::before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[x-placement^=right],.bs-tooltip-right{padding:0 .4rem}.bs-tooltip-auto[x-placement^=right] .arrow,.bs-tooltip-right .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=right] .arrow::before,.bs-tooltip-right .arrow::before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[x-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[x-placement^=bottom] .arrow,.bs-tooltip-bottom .arrow{top:0}.bs-tooltip-auto[x-placement^=bottom] .arrow::before,.bs-tooltip-bottom .arrow::before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[x-placement^=left],.bs-tooltip-left{padding:0 .4rem}.bs-tooltip-auto[x-placement^=left] .arrow,.bs-tooltip-left .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=left] .arrow::before,.bs-tooltip-left .arrow::before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover .arrow{position:absolute;display:block;width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow::after,.popover .arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top] .arrow,.bs-popover-top .arrow{bottom:calc((.5rem + 1px) * -1)}.bs-popover-auto[x-placement^=top] .arrow::after,.bs-popover-auto[x-placement^=top] .arrow::before,.bs-popover-top .arrow::after,.bs-popover-top .arrow::before{border-width:.5rem .5rem 0}.bs-popover-auto[x-placement^=top] .arrow::before,.bs-popover-top .arrow::before{bottom:0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=top] .arrow::after,.bs-popover-top .arrow::after{bottom:1px;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right] .arrow,.bs-popover-right .arrow{left:calc((.5rem + 1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=right] .arrow::after,.bs-popover-auto[x-placement^=right] .arrow::before,.bs-popover-right .arrow::after,.bs-popover-right .arrow::before{border-width:.5rem .5rem .5rem 0}.bs-popover-auto[x-placement^=right] .arrow::before,.bs-popover-right .arrow::before{left:0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=right] .arrow::after,.bs-popover-right .arrow::after{left:1px;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom] .arrow,.bs-popover-bottom .arrow{top:calc((.5rem + 1px) * -1)}.bs-popover-auto[x-placement^=bottom] .arrow::after,.bs-popover-auto[x-placement^=bottom] .arrow::before,.bs-popover-bottom .arrow::after,.bs-popover-bottom .arrow::before{border-width:0 .5rem .5rem .5rem}.bs-popover-auto[x-placement^=bottom] .arrow::before,.bs-popover-bottom .arrow::before{top:0;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=bottom] .arrow::after,.bs-popover-bottom .arrow::after{top:1px;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left] .arrow,.bs-popover-left .arrow{right:calc((.5rem + 1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=left] .arrow::after,.bs-popover-auto[x-placement^=left] .arrow::before,.bs-popover-left .arrow::after,.bs-popover-left .arrow::before{border-width:.5rem 0 .5rem .5rem}.bs-popover-auto[x-placement^=left] .arrow::before,.bs-popover-left .arrow::before{right:0;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=left] .arrow::after,.bs-popover-left .arrow::after{right:1px;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;color:inherit;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-item{position:relative;display:none;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%;transition:-webkit-transform .6s ease;transition:transform .6s ease;transition:transform .6s ease,-webkit-transform .6s ease;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.carousel-item-next,.carousel-item-prev{position:absolute;top:0}.carousel-item-next.carousel-item-left,.carousel-item-prev.carousel-item-right{-webkit-transform:translateX(0);transform:translateX(0)}@supports ((-webkit-transform-style:preserve-3d) or (transform-style:preserve-3d)){.carousel-item-next.carousel-item-left,.carousel-item-prev.carousel-item-right{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.active.carousel-item-right,.carousel-item-next{-webkit-transform:translateX(100%);transform:translateX(100%)}@supports ((-webkit-transform-style:preserve-3d) or (transform-style:preserve-3d)){.active.carousel-item-right,.carousel-item-next{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}.active.carousel-item-left,.carousel-item-prev{-webkit-transform:translateX(-100%);transform:translateX(-100%)}@supports ((-webkit-transform-style:preserve-3d) or (transform-style:preserve-3d)){.active.carousel-item-left,.carousel-item-prev{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:.5}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:20px;height:20px;background:transparent no-repeat center center;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E")}.carousel-control-next-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E")}.carousel-indicators{position:absolute;right:0;bottom:10px;left:0;z-index:15;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{position:relative;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;background-color:rgba(255,255,255,.5)}.carousel-indicators li::before{position:absolute;top:-10px;left:0;display:inline-block;width:100%;height:10px;content:""}.carousel-indicators li::after{position:absolute;bottom:-10px;left:0;display:inline-block;width:100%;height:10px;content:""}.carousel-indicators .active{background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.bg-primary{background-color:#007bff!important}a.bg-primary:focus,a.bg-primary:hover,button.bg-primary:focus,button.bg-primary:hover{background-color:#0062cc!important}.bg-secondary{background-color:#6c757d!important}a.bg-secondary:focus,a.bg-secondary:hover,button.bg-secondary:focus,button.bg-secondary:hover{background-color:#545b62!important}.bg-success{background-color:#28a745!important}a.bg-success:focus,a.bg-success:hover,button.bg-success:focus,button.bg-success:hover{background-color:#1e7e34!important}.bg-info{background-color:#17a2b8!important}a.bg-info:focus,a.bg-info:hover,button.bg-info:focus,button.bg-info:hover{background-color:#117a8b!important}.bg-warning{background-color:#ffc107!important}a.bg-warning:focus,a.bg-warning:hover,button.bg-warning:focus,button.bg-warning:hover{background-color:#d39e00!important}.bg-danger{background-color:#dc3545!important}a.bg-danger:focus,a.bg-danger:hover,button.bg-danger:focus,button.bg-danger:hover{background-color:#bd2130!important}.bg-light{background-color:#f8f9fa!important}a.bg-light:focus,a.bg-light:hover,button.bg-light:focus,button.bg-light:hover{background-color:#dae0e5!important}.bg-dark{background-color:#343a40!important}a.bg-dark:focus,a.bg-dark:hover,button.bg-dark:focus,button.bg-dark:hover{background-color:#1d2124!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.border{border:1px solid #dee2e6!important}.border-top{border-top:1px solid #dee2e6!important}.border-right{border-right:1px solid #dee2e6!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-left{border-left:1px solid #dee2e6!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.border-primary{border-color:#007bff!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#28a745!important}.border-info{border-color:#17a2b8!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#343a40!important}.border-white{border-color:#fff!important}.rounded{border-radius:.25rem!important}.rounded-top{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important}.rounded-right{border-top-right-radius:.25rem!important;border-bottom-right-radius:.25rem!important}.rounded-bottom{border-bottom-right-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-left{border-top-left-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-circle{border-radius:50%!important}.rounded-0{border-radius:0!important}.clearfix::after{display:block;clear:both;content:""}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}@media (min-width:576px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-sm-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:768px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-md-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:992px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-lg-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-xl-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-print-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9::before{padding-top:42.857143%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-4by3::before{padding-top:75%}.embed-responsive-1by1::before{padding-top:100%}.flex-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}@media (min-width:576px){.flex-sm-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-sm-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-sm-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-sm-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-sm-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-sm-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-sm-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-sm-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-sm-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-sm-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-sm-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-sm-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-sm-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-sm-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-sm-center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-sm-baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-sm-stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-sm-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-sm-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-sm-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-sm-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-sm-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-sm-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-sm-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-sm-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-sm-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-sm-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-sm-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-sm-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:768px){.flex-md-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-md-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-md-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-md-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-md-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-md-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-md-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-md-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-md-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-md-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-md-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-md-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-md-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-md-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-md-center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-md-baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-md-stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-md-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-md-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-md-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-md-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-md-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-md-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-md-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-md-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-md-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-md-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-md-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-md-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:992px){.flex-lg-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-lg-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-lg-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-lg-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-lg-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-lg-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-lg-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-lg-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-lg-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-lg-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-lg-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-lg-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-lg-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-lg-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-lg-center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-lg-baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-lg-stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-lg-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-lg-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-lg-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-lg-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-lg-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-lg-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-lg-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-lg-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-lg-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-lg-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-lg-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-lg-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:1200px){.flex-xl-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-xl-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-xl-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-xl-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-xl-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-xl-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-xl-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-xl-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-xl-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-xl-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-xl-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-xl-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-xl-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-xl-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-xl-center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-xl-baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-xl-stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-xl-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-xl-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-xl-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-xl-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-xl-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-xl-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-xl-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-xl-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-xl-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-xl-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-xl-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-xl-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media (min-width:576px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media (min-width:768px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width:992px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width:1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports ((position:-webkit-sticky) or (position:sticky)){.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;-webkit-clip-path:inset(50%);clip-path:inset(50%);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal;-webkit-clip-path:none;clip-path:none}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.m-0{margin:0!important}.mt-0,.my-0{margin-top:0!important}.mr-0,.mx-0{margin-right:0!important}.mb-0,.my-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.m-1{margin:.25rem!important}.mt-1,.my-1{margin-top:.25rem!important}.mr-1,.mx-1{margin-right:.25rem!important}.mb-1,.my-1{margin-bottom:.25rem!important}.ml-1,.mx-1{margin-left:.25rem!important}.m-2{margin:.5rem!important}.mt-2,.my-2{margin-top:.5rem!important}.mr-2,.mx-2{margin-right:.5rem!important}.mb-2,.my-2{margin-bottom:.5rem!important}.ml-2,.mx-2{margin-left:.5rem!important}.m-3{margin:1rem!important}.mt-3,.my-3{margin-top:1rem!important}.mr-3,.mx-3{margin-right:1rem!important}.mb-3,.my-3{margin-bottom:1rem!important}.ml-3,.mx-3{margin-left:1rem!important}.m-4{margin:1.5rem!important}.mt-4,.my-4{margin-top:1.5rem!important}.mr-4,.mx-4{margin-right:1.5rem!important}.mb-4,.my-4{margin-bottom:1.5rem!important}.ml-4,.mx-4{margin-left:1.5rem!important}.m-5{margin:3rem!important}.mt-5,.my-5{margin-top:3rem!important}.mr-5,.mx-5{margin-right:3rem!important}.mb-5,.my-5{margin-bottom:3rem!important}.ml-5,.mx-5{margin-left:3rem!important}.p-0{padding:0!important}.pt-0,.py-0{padding-top:0!important}.pr-0,.px-0{padding-right:0!important}.pb-0,.py-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.p-1{padding:.25rem!important}.pt-1,.py-1{padding-top:.25rem!important}.pr-1,.px-1{padding-right:.25rem!important}.pb-1,.py-1{padding-bottom:.25rem!important}.pl-1,.px-1{padding-left:.25rem!important}.p-2{padding:.5rem!important}.pt-2,.py-2{padding-top:.5rem!important}.pr-2,.px-2{padding-right:.5rem!important}.pb-2,.py-2{padding-bottom:.5rem!important}.pl-2,.px-2{padding-left:.5rem!important}.p-3{padding:1rem!important}.pt-3,.py-3{padding-top:1rem!important}.pr-3,.px-3{padding-right:1rem!important}.pb-3,.py-3{padding-bottom:1rem!important}.pl-3,.px-3{padding-left:1rem!important}.p-4{padding:1.5rem!important}.pt-4,.py-4{padding-top:1.5rem!important}.pr-4,.px-4{padding-right:1.5rem!important}.pb-4,.py-4{padding-bottom:1.5rem!important}.pl-4,.px-4{padding-left:1.5rem!important}.p-5{padding:3rem!important}.pt-5,.py-5{padding-top:3rem!important}.pr-5,.px-5{padding-right:3rem!important}.pb-5,.py-5{padding-bottom:3rem!important}.pl-5,.px-5{padding-left:3rem!important}.m-auto{margin:auto!important}.mt-auto,.my-auto{margin-top:auto!important}.mr-auto,.mx-auto{margin-right:auto!important}.mb-auto,.my-auto{margin-bottom:auto!important}.ml-auto,.mx-auto{margin-left:auto!important}@media (min-width:576px){.m-sm-0{margin:0!important}.mt-sm-0,.my-sm-0{margin-top:0!important}.mr-sm-0,.mx-sm-0{margin-right:0!important}.mb-sm-0,.my-sm-0{margin-bottom:0!important}.ml-sm-0,.mx-sm-0{margin-left:0!important}.m-sm-1{margin:.25rem!important}.mt-sm-1,.my-sm-1{margin-top:.25rem!important}.mr-sm-1,.mx-sm-1{margin-right:.25rem!important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem!important}.ml-sm-1,.mx-sm-1{margin-left:.25rem!important}.m-sm-2{margin:.5rem!important}.mt-sm-2,.my-sm-2{margin-top:.5rem!important}.mr-sm-2,.mx-sm-2{margin-right:.5rem!important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem!important}.ml-sm-2,.mx-sm-2{margin-left:.5rem!important}.m-sm-3{margin:1rem!important}.mt-sm-3,.my-sm-3{margin-top:1rem!important}.mr-sm-3,.mx-sm-3{margin-right:1rem!important}.mb-sm-3,.my-sm-3{margin-bottom:1rem!important}.ml-sm-3,.mx-sm-3{margin-left:1rem!important}.m-sm-4{margin:1.5rem!important}.mt-sm-4,.my-sm-4{margin-top:1.5rem!important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem!important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem!important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem!important}.m-sm-5{margin:3rem!important}.mt-sm-5,.my-sm-5{margin-top:3rem!important}.mr-sm-5,.mx-sm-5{margin-right:3rem!important}.mb-sm-5,.my-sm-5{margin-bottom:3rem!important}.ml-sm-5,.mx-sm-5{margin-left:3rem!important}.p-sm-0{padding:0!important}.pt-sm-0,.py-sm-0{padding-top:0!important}.pr-sm-0,.px-sm-0{padding-right:0!important}.pb-sm-0,.py-sm-0{padding-bottom:0!important}.pl-sm-0,.px-sm-0{padding-left:0!important}.p-sm-1{padding:.25rem!important}.pt-sm-1,.py-sm-1{padding-top:.25rem!important}.pr-sm-1,.px-sm-1{padding-right:.25rem!important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem!important}.pl-sm-1,.px-sm-1{padding-left:.25rem!important}.p-sm-2{padding:.5rem!important}.pt-sm-2,.py-sm-2{padding-top:.5rem!important}.pr-sm-2,.px-sm-2{padding-right:.5rem!important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem!important}.pl-sm-2,.px-sm-2{padding-left:.5rem!important}.p-sm-3{padding:1rem!important}.pt-sm-3,.py-sm-3{padding-top:1rem!important}.pr-sm-3,.px-sm-3{padding-right:1rem!important}.pb-sm-3,.py-sm-3{padding-bottom:1rem!important}.pl-sm-3,.px-sm-3{padding-left:1rem!important}.p-sm-4{padding:1.5rem!important}.pt-sm-4,.py-sm-4{padding-top:1.5rem!important}.pr-sm-4,.px-sm-4{padding-right:1.5rem!important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem!important}.pl-sm-4,.px-sm-4{padding-left:1.5rem!important}.p-sm-5{padding:3rem!important}.pt-sm-5,.py-sm-5{padding-top:3rem!important}.pr-sm-5,.px-sm-5{padding-right:3rem!important}.pb-sm-5,.py-sm-5{padding-bottom:3rem!important}.pl-sm-5,.px-sm-5{padding-left:3rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto,.my-sm-auto{margin-top:auto!important}.mr-sm-auto,.mx-sm-auto{margin-right:auto!important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto!important}.ml-sm-auto,.mx-sm-auto{margin-left:auto!important}}@media (min-width:768px){.m-md-0{margin:0!important}.mt-md-0,.my-md-0{margin-top:0!important}.mr-md-0,.mx-md-0{margin-right:0!important}.mb-md-0,.my-md-0{margin-bottom:0!important}.ml-md-0,.mx-md-0{margin-left:0!important}.m-md-1{margin:.25rem!important}.mt-md-1,.my-md-1{margin-top:.25rem!important}.mr-md-1,.mx-md-1{margin-right:.25rem!important}.mb-md-1,.my-md-1{margin-bottom:.25rem!important}.ml-md-1,.mx-md-1{margin-left:.25rem!important}.m-md-2{margin:.5rem!important}.mt-md-2,.my-md-2{margin-top:.5rem!important}.mr-md-2,.mx-md-2{margin-right:.5rem!important}.mb-md-2,.my-md-2{margin-bottom:.5rem!important}.ml-md-2,.mx-md-2{margin-left:.5rem!important}.m-md-3{margin:1rem!important}.mt-md-3,.my-md-3{margin-top:1rem!important}.mr-md-3,.mx-md-3{margin-right:1rem!important}.mb-md-3,.my-md-3{margin-bottom:1rem!important}.ml-md-3,.mx-md-3{margin-left:1rem!important}.m-md-4{margin:1.5rem!important}.mt-md-4,.my-md-4{margin-top:1.5rem!important}.mr-md-4,.mx-md-4{margin-right:1.5rem!important}.mb-md-4,.my-md-4{margin-bottom:1.5rem!important}.ml-md-4,.mx-md-4{margin-left:1.5rem!important}.m-md-5{margin:3rem!important}.mt-md-5,.my-md-5{margin-top:3rem!important}.mr-md-5,.mx-md-5{margin-right:3rem!important}.mb-md-5,.my-md-5{margin-bottom:3rem!important}.ml-md-5,.mx-md-5{margin-left:3rem!important}.p-md-0{padding:0!important}.pt-md-0,.py-md-0{padding-top:0!important}.pr-md-0,.px-md-0{padding-right:0!important}.pb-md-0,.py-md-0{padding-bottom:0!important}.pl-md-0,.px-md-0{padding-left:0!important}.p-md-1{padding:.25rem!important}.pt-md-1,.py-md-1{padding-top:.25rem!important}.pr-md-1,.px-md-1{padding-right:.25rem!important}.pb-md-1,.py-md-1{padding-bottom:.25rem!important}.pl-md-1,.px-md-1{padding-left:.25rem!important}.p-md-2{padding:.5rem!important}.pt-md-2,.py-md-2{padding-top:.5rem!important}.pr-md-2,.px-md-2{padding-right:.5rem!important}.pb-md-2,.py-md-2{padding-bottom:.5rem!important}.pl-md-2,.px-md-2{padding-left:.5rem!important}.p-md-3{padding:1rem!important}.pt-md-3,.py-md-3{padding-top:1rem!important}.pr-md-3,.px-md-3{padding-right:1rem!important}.pb-md-3,.py-md-3{padding-bottom:1rem!important}.pl-md-3,.px-md-3{padding-left:1rem!important}.p-md-4{padding:1.5rem!important}.pt-md-4,.py-md-4{padding-top:1.5rem!important}.pr-md-4,.px-md-4{padding-right:1.5rem!important}.pb-md-4,.py-md-4{padding-bottom:1.5rem!important}.pl-md-4,.px-md-4{padding-left:1.5rem!important}.p-md-5{padding:3rem!important}.pt-md-5,.py-md-5{padding-top:3rem!important}.pr-md-5,.px-md-5{padding-right:3rem!important}.pb-md-5,.py-md-5{padding-bottom:3rem!important}.pl-md-5,.px-md-5{padding-left:3rem!important}.m-md-auto{margin:auto!important}.mt-md-auto,.my-md-auto{margin-top:auto!important}.mr-md-auto,.mx-md-auto{margin-right:auto!important}.mb-md-auto,.my-md-auto{margin-bottom:auto!important}.ml-md-auto,.mx-md-auto{margin-left:auto!important}}@media (min-width:992px){.m-lg-0{margin:0!important}.mt-lg-0,.my-lg-0{margin-top:0!important}.mr-lg-0,.mx-lg-0{margin-right:0!important}.mb-lg-0,.my-lg-0{margin-bottom:0!important}.ml-lg-0,.mx-lg-0{margin-left:0!important}.m-lg-1{margin:.25rem!important}.mt-lg-1,.my-lg-1{margin-top:.25rem!important}.mr-lg-1,.mx-lg-1{margin-right:.25rem!important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem!important}.ml-lg-1,.mx-lg-1{margin-left:.25rem!important}.m-lg-2{margin:.5rem!important}.mt-lg-2,.my-lg-2{margin-top:.5rem!important}.mr-lg-2,.mx-lg-2{margin-right:.5rem!important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem!important}.ml-lg-2,.mx-lg-2{margin-left:.5rem!important}.m-lg-3{margin:1rem!important}.mt-lg-3,.my-lg-3{margin-top:1rem!important}.mr-lg-3,.mx-lg-3{margin-right:1rem!important}.mb-lg-3,.my-lg-3{margin-bottom:1rem!important}.ml-lg-3,.mx-lg-3{margin-left:1rem!important}.m-lg-4{margin:1.5rem!important}.mt-lg-4,.my-lg-4{margin-top:1.5rem!important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem!important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem!important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem!important}.m-lg-5{margin:3rem!important}.mt-lg-5,.my-lg-5{margin-top:3rem!important}.mr-lg-5,.mx-lg-5{margin-right:3rem!important}.mb-lg-5,.my-lg-5{margin-bottom:3rem!important}.ml-lg-5,.mx-lg-5{margin-left:3rem!important}.p-lg-0{padding:0!important}.pt-lg-0,.py-lg-0{padding-top:0!important}.pr-lg-0,.px-lg-0{padding-right:0!important}.pb-lg-0,.py-lg-0{padding-bottom:0!important}.pl-lg-0,.px-lg-0{padding-left:0!important}.p-lg-1{padding:.25rem!important}.pt-lg-1,.py-lg-1{padding-top:.25rem!important}.pr-lg-1,.px-lg-1{padding-right:.25rem!important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem!important}.pl-lg-1,.px-lg-1{padding-left:.25rem!important}.p-lg-2{padding:.5rem!important}.pt-lg-2,.py-lg-2{padding-top:.5rem!important}.pr-lg-2,.px-lg-2{padding-right:.5rem!important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem!important}.pl-lg-2,.px-lg-2{padding-left:.5rem!important}.p-lg-3{padding:1rem!important}.pt-lg-3,.py-lg-3{padding-top:1rem!important}.pr-lg-3,.px-lg-3{padding-right:1rem!important}.pb-lg-3,.py-lg-3{padding-bottom:1rem!important}.pl-lg-3,.px-lg-3{padding-left:1rem!important}.p-lg-4{padding:1.5rem!important}.pt-lg-4,.py-lg-4{padding-top:1.5rem!important}.pr-lg-4,.px-lg-4{padding-right:1.5rem!important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem!important}.pl-lg-4,.px-lg-4{padding-left:1.5rem!important}.p-lg-5{padding:3rem!important}.pt-lg-5,.py-lg-5{padding-top:3rem!important}.pr-lg-5,.px-lg-5{padding-right:3rem!important}.pb-lg-5,.py-lg-5{padding-bottom:3rem!important}.pl-lg-5,.px-lg-5{padding-left:3rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto,.my-lg-auto{margin-top:auto!important}.mr-lg-auto,.mx-lg-auto{margin-right:auto!important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto!important}.ml-lg-auto,.mx-lg-auto{margin-left:auto!important}}@media (min-width:1200px){.m-xl-0{margin:0!important}.mt-xl-0,.my-xl-0{margin-top:0!important}.mr-xl-0,.mx-xl-0{margin-right:0!important}.mb-xl-0,.my-xl-0{margin-bottom:0!important}.ml-xl-0,.mx-xl-0{margin-left:0!important}.m-xl-1{margin:.25rem!important}.mt-xl-1,.my-xl-1{margin-top:.25rem!important}.mr-xl-1,.mx-xl-1{margin-right:.25rem!important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem!important}.ml-xl-1,.mx-xl-1{margin-left:.25rem!important}.m-xl-2{margin:.5rem!important}.mt-xl-2,.my-xl-2{margin-top:.5rem!important}.mr-xl-2,.mx-xl-2{margin-right:.5rem!important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem!important}.ml-xl-2,.mx-xl-2{margin-left:.5rem!important}.m-xl-3{margin:1rem!important}.mt-xl-3,.my-xl-3{margin-top:1rem!important}.mr-xl-3,.mx-xl-3{margin-right:1rem!important}.mb-xl-3,.my-xl-3{margin-bottom:1rem!important}.ml-xl-3,.mx-xl-3{margin-left:1rem!important}.m-xl-4{margin:1.5rem!important}.mt-xl-4,.my-xl-4{margin-top:1.5rem!important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem!important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem!important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem!important}.m-xl-5{margin:3rem!important}.mt-xl-5,.my-xl-5{margin-top:3rem!important}.mr-xl-5,.mx-xl-5{margin-right:3rem!important}.mb-xl-5,.my-xl-5{margin-bottom:3rem!important}.ml-xl-5,.mx-xl-5{margin-left:3rem!important}.p-xl-0{padding:0!important}.pt-xl-0,.py-xl-0{padding-top:0!important}.pr-xl-0,.px-xl-0{padding-right:0!important}.pb-xl-0,.py-xl-0{padding-bottom:0!important}.pl-xl-0,.px-xl-0{padding-left:0!important}.p-xl-1{padding:.25rem!important}.pt-xl-1,.py-xl-1{padding-top:.25rem!important}.pr-xl-1,.px-xl-1{padding-right:.25rem!important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem!important}.pl-xl-1,.px-xl-1{padding-left:.25rem!important}.p-xl-2{padding:.5rem!important}.pt-xl-2,.py-xl-2{padding-top:.5rem!important}.pr-xl-2,.px-xl-2{padding-right:.5rem!important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem!important}.pl-xl-2,.px-xl-2{padding-left:.5rem!important}.p-xl-3{padding:1rem!important}.pt-xl-3,.py-xl-3{padding-top:1rem!important}.pr-xl-3,.px-xl-3{padding-right:1rem!important}.pb-xl-3,.py-xl-3{padding-bottom:1rem!important}.pl-xl-3,.px-xl-3{padding-left:1rem!important}.p-xl-4{padding:1.5rem!important}.pt-xl-4,.py-xl-4{padding-top:1.5rem!important}.pr-xl-4,.px-xl-4{padding-right:1.5rem!important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem!important}.pl-xl-4,.px-xl-4{padding-left:1.5rem!important}.p-xl-5{padding:3rem!important}.pt-xl-5,.py-xl-5{padding-top:3rem!important}.pr-xl-5,.px-xl-5{padding-right:3rem!important}.pb-xl-5,.py-xl-5{padding-bottom:3rem!important}.pl-xl-5,.px-xl-5{padding-left:3rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto,.my-xl-auto{margin-top:auto!important}.mr-xl-auto,.mx-xl-auto{margin-right:auto!important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto!important}.ml-xl-auto,.mx-xl-auto{margin-left:auto!important}}.text-justify{text-align:justify!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media (min-width:576px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-light{font-weight:300!important}.font-weight-normal{font-weight:400!important}.font-weight-bold{font-weight:700!important}.font-italic{font-style:italic!important}.text-white{color:#fff!important}.text-primary{color:#007bff!important}a.text-primary:focus,a.text-primary:hover{color:#0062cc!important}.text-secondary{color:#6c757d!important}a.text-secondary:focus,a.text-secondary:hover{color:#545b62!important}.text-success{color:#28a745!important}a.text-success:focus,a.text-success:hover{color:#1e7e34!important}.text-info{color:#17a2b8!important}a.text-info:focus,a.text-info:hover{color:#117a8b!important}.text-warning{color:#ffc107!important}a.text-warning:focus,a.text-warning:hover{color:#d39e00!important}.text-danger{color:#dc3545!important}a.text-danger:focus,a.text-danger:hover{color:#bd2130!important}.text-light{color:#f8f9fa!important}a.text-light:focus,a.text-light:hover{color:#dae0e5!important}.text-dark{color:#343a40!important}a.text-dark:focus,a.text-dark:hover{color:#1d2124!important}.text-muted{color:#6c757d!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media print{*,::after,::before{text-shadow:none!important;box-shadow:none!important}a:not(.btn){text-decoration:underline}abbr[title]::after{content:" (" attr(title) ")"}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}body{min-width:992px!important}.container{min-width:992px!important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}} -/*# sourceMappingURL=bootstrap.min.css.map */ \ No newline at end of file diff --git a/public/layout/css/responsive.css b/public/layout/css/responsive.css index 2e2b517..9f0e8ec 100644 --- a/public/layout/css/responsive.css +++ b/public/layout/css/responsive.css @@ -416,8 +416,9 @@ Note: responsive.css, All Responsive CSS Style For This Theme Included In This F text-align: center; } .hm-searchbox { - min-width: 268px; - float: unset; + display: flex; + min-width: 300px; + float: left; } .header-middle-right { display: flex; @@ -641,8 +642,9 @@ Note: responsive.css, All Responsive CSS Style For This Theme Included In This F text-align: center; } .hm-searchbox { - min-width: 268px; - float: unset; + display:flex; + min-width: 250px; + float:left; } .hm-searchbox .nice-select.select-search-category { display: none; diff --git a/public/layout/faq.html b/public/layout/faq.html deleted file mode 100644 index ea5b8c1..0000000 --- a/public/layout/faq.html +++ /dev/null @@ -1,845 +0,0 @@ - - - - - - - - FAQ || limupa - Digital Products Store eCommerce Bootstrap 4 Template - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
-
-
- -
-
- -
-
- - -
-
- -
-
- -
-
-
- - -
-
-
- -
- -
- - -
- - - - -
- -
- -
- -
-
-
- - - - - -
-
-
-
-
-
-
-
- -
- - - - - -
-
-
-
-
-
-

Below are frequently asked questions, you may find the answer for yourself

-

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec id erat sagittis, faucibus metus malesuada, eleifend turpis. Mauris semper augue id nisl aliquet, a porta lectus mattis. Nulla at tortor augue. In eget enim diam. Donec gravida tortor sem, ac fermentum nibh rutrum sit amet. Nulla convallis mauris vitae congue consequat. Donec interdum nunc purus, vitae vulputate arcu fringilla quis. Vivamus iaculis euismod dui.

-
-
- -
-
-
- -
-
- Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS. -
-
-
-
- -
-
- Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS. -
-
-
-
- -
-
- Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS. -
-
-
-
- -
-
- Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS. -
-
-
-
- -
-
- Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS. -
-
-
-
- -
-
- Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS. -
-
-
-
- -
-
- Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS. -
-
-
-
- -
-
- Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS. -
-
-
-
-
- -
-
-
-
- - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/layout/images/empty-cart.png b/public/layout/images/empty-cart.png new file mode 100644 index 0000000..71c559d Binary files /dev/null and b/public/layout/images/empty-cart.png differ diff --git a/public/layout/images/product/large-size/1.jpg b/public/layout/images/product/large-size/1.jpg index 18f2824..169ba48 100644 Binary files a/public/layout/images/product/large-size/1.jpg and b/public/layout/images/product/large-size/1.jpg differ diff --git a/public/layout/images/product/large-size/10.jpg b/public/layout/images/product/large-size/10.jpg index ee87707..be19dd2 100644 Binary files a/public/layout/images/product/large-size/10.jpg and b/public/layout/images/product/large-size/10.jpg differ diff --git a/public/layout/images/product/large-size/11.jpg b/public/layout/images/product/large-size/11.jpg index a56fc6f..8f55e5c 100644 Binary files a/public/layout/images/product/large-size/11.jpg and b/public/layout/images/product/large-size/11.jpg differ diff --git a/public/layout/images/product/large-size/12.jpg b/public/layout/images/product/large-size/12.jpg index b6bda05..30793b0 100644 Binary files a/public/layout/images/product/large-size/12.jpg and b/public/layout/images/product/large-size/12.jpg differ diff --git a/public/layout/images/product/large-size/13.jpg b/public/layout/images/product/large-size/13.jpg index a1f4687..a56fc6f 100644 Binary files a/public/layout/images/product/large-size/13.jpg and b/public/layout/images/product/large-size/13.jpg differ diff --git a/public/layout/images/product/large-size/3.jpg b/public/layout/images/product/large-size/3.jpg index 4e83cbb..5f689a5 100644 Binary files a/public/layout/images/product/large-size/3.jpg and b/public/layout/images/product/large-size/3.jpg differ diff --git a/public/layout/images/product/large-size/4.jpg b/public/layout/images/product/large-size/4.jpg index 169ba48..5f689a5 100644 Binary files a/public/layout/images/product/large-size/4.jpg and b/public/layout/images/product/large-size/4.jpg differ diff --git a/public/layout/images/product/large-size/5.jpg b/public/layout/images/product/large-size/5.jpg index 8f55e5c..4e83cbb 100644 Binary files a/public/layout/images/product/large-size/5.jpg and b/public/layout/images/product/large-size/5.jpg differ diff --git a/public/layout/images/product/large-size/6.jpg b/public/layout/images/product/large-size/6.jpg index 5f689a5..ee87707 100644 Binary files a/public/layout/images/product/large-size/6.jpg and b/public/layout/images/product/large-size/6.jpg differ diff --git a/public/layout/images/product/large-size/7.jpg b/public/layout/images/product/large-size/7.jpg index be19dd2..b6bda05 100644 Binary files a/public/layout/images/product/large-size/7.jpg and b/public/layout/images/product/large-size/7.jpg differ diff --git a/public/layout/images/product/large-size/8.jpg b/public/layout/images/product/large-size/8.jpg index 30793b0..ec6faff 100644 Binary files a/public/layout/images/product/large-size/8.jpg and b/public/layout/images/product/large-size/8.jpg differ diff --git a/public/layout/images/product/large-size/9.jpg b/public/layout/images/product/large-size/9.jpg index ec6faff..18f2824 100644 Binary files a/public/layout/images/product/large-size/9.jpg and b/public/layout/images/product/large-size/9.jpg differ diff --git a/public/layout/images/product/small-size/4.jpg b/public/layout/images/product/small-size/bluescreen.jpg similarity index 100% rename from public/layout/images/product/small-size/4.jpg rename to public/layout/images/product/small-size/bluescreen.jpg diff --git a/public/layout/images/product/small-size/2.jpg b/public/layout/images/product/small-size/cam.jpg similarity index 100% rename from public/layout/images/product/small-size/2.jpg rename to public/layout/images/product/small-size/cam.jpg diff --git a/public/layout/images/product/small-size/6.jpg b/public/layout/images/product/small-size/headset.jpg similarity index 100% rename from public/layout/images/product/small-size/6.jpg rename to public/layout/images/product/small-size/headset.jpg diff --git a/public/layout/images/product/small-size/3.jpg b/public/layout/images/product/small-size/joystick.jpg similarity index 100% rename from public/layout/images/product/small-size/3.jpg rename to public/layout/images/product/small-size/joystick.jpg diff --git a/public/layout/images/product/small-size/1.jpg b/public/layout/images/product/small-size/screen.jpg similarity index 100% rename from public/layout/images/product/small-size/1.jpg rename to public/layout/images/product/small-size/screen.jpg diff --git a/public/layout/images/product/small-size/5.jpg b/public/layout/images/product/small-size/speaker.jpg similarity index 100% rename from public/layout/images/product/small-size/5.jpg rename to public/layout/images/product/small-size/speaker.jpg diff --git a/public/layout/index-2.html b/public/layout/index-2.html deleted file mode 100644 index a113767..0000000 --- a/public/layout/index-2.html +++ /dev/null @@ -1,3053 +0,0 @@ - - - - - - - - Home Version Two || limupa - Digital Products Store ECommerce Bootstrap 4 Template - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
-
-
- -
-
- -
-
- - -
-
- -
-
- -
-
-
- - -
-
-
- -
- -
- - -
- - - - -
- -
- -
- -
-
-
- - - - - -
-
-
-
-
-
-
-
- -
- - -
-
-
- - - - -
-
- -
-
- -
-
-
- - -
-
-
- -
-
- - Li's Static Banner - -
-
- - -
-
- - Li's Static Banner - -
-
- - -
-
- - Li's Static Banner - -
-
- -
-
-
- - -
-
-
- -
-
-

- Hot Deals Products -

-
-
- -
-
- -
-
-
- - -
-
-
- -
-
-

- Laptops -

- -
-
-
- -
-
- - Li's Static Banner - -
-
- - -
-
- - Li's Static Banner - -
-
- -
-
-
- -
-
- -
-
-
- - -
-
-
- -
-
-

- TV & Audio -

- -
-
-
- -
-
- - Li's Static Banner - -
-
- - -
-
- - Li's Static Banner - -
-
- -
-
-
- -
-
- -
-
-
- - -
-
-
- -
-
-

- Smartphone -

- -
-
-
- -
-
- - Li's Static Banner - -
-
- - -
-
- - Li's Static Banner - -
-
- -
-
-
- -
-
- -
-
-
- - -
-
-
-
- -
- - -
-

Sale Offer-20% OffThis Week

-

Featured Product

-

Meito Accessories 2018

-

- Starting at - $1209.00 -

- -
- -
-
-
-
- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/layout/index-3.html b/public/layout/index-3.html deleted file mode 100644 index 92eeaf3..0000000 --- a/public/layout/index-3.html +++ /dev/null @@ -1,2827 +0,0 @@ - - - - - - - - Home Version Three || limupa - Digital Products Store ECommerce Bootstrap 4 Template - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
-
-
- -
-
- -
-
- - -
-
- -
-
- -
-
-
- - -
-
-
- -
- -
- - -
- - - - -
- -
- -
- -
-
-
- - - - - -
-
-
-
-
-
-
-
- -
- - -
-
-
- - - - -
-
- -
-
- - -
-
- - - -
-
- - - -
-
- -
-
-
- - -
-
-
- -
-
- - Li's Static Banner - -
-
- - -
-
- - Li's Static Banner - -
-
- - -
-
- - Li's Static Banner - -
-
- -
-
-
- - -
-
-
- -
-
-

- Hot Deals Products -

-
-
- -
-
- -
-
-
- - - - - -
-
-
- -
-
-

- Laptop -

- -
-
- -
-
- -
-
-
- - -
-
-
- -
-
-

- TV & Audio -

- -
-
- -
-
- -
-
-
- - -
-
-
- -
-
- - Li's Static Banner - -
-
- - -
-
- - Li's Static Banner - -
-
- -
-
-
- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/layout/index-4.html b/public/layout/index-4.html deleted file mode 100644 index 6e2a7ea..0000000 --- a/public/layout/index-4.html +++ /dev/null @@ -1,2803 +0,0 @@ - - - - - - - - - Home Version Four || limupa - Digital Products Store ECommerce Bootstrap 4 Template - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
-
-
- -
-
- -
-
- - -
-
- -
-
- -
-
-
- - -
-
-
- -
- -
- - -
- - - - -
- -
- -
- -
-
-
- - - - - -
-
-
-
-
-
-
-
- -
- - -
-
-
- -
-
- -
-
- - -
-
- - - -
-
- - - -
-
- -
-
-
- - -
-
-
-
-
- Gift Special: Gift every single day on Weekends - New Coupon code " - LimupaSaleoff -
-
-
-
-
- - -
-
-
- -
-
-
-
- -
-
-
-
- -
-
- -
-
-
- - -
-
-
- -
-
- - Li's Static Banner - -
-
- - -
-
- - Li's Static Banner - -
-
- -
-
-
- - -
-
-
- -
-
-

- Laptop -

- -
-
- -
-
- -
-
-
- - -
-
-
- -
-
-

- TV & Audio -

- -
-
- -
-
- -
-
-
- - -
-
-
-
- -
- - -
-

Sale Offer-20% OffThis Week

-

Featured Product

-

Sanai Accessories 2018

-

- Starting at - $1209.00 -

- -
- -
-
-
-
- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/public/layout/index.html b/public/layout/index.html deleted file mode 100644 index 606c237..0000000 --- a/public/layout/index.html +++ /dev/null @@ -1,3365 +0,0 @@ - - - - - - - - Home Version One || limupa - Digital Products Store eCommerce Bootstrap 4 Template - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
-
-
- -
-
- -
-
- - -
-
- -
-
- -
-
-
- - -
-
-
- -
- -
- - -
- - - - -
- -
- -
- -
-
-
- - - - - -
-
-
-
-
-
-
-
- -
- - -
-
-
- -
-
- -
-
- - -
-
- - - -
-
- - - -
-
- -
-
-
- - -
-
-
- -
-
-
-
- -
-
-
-
- -
-
- -
-
-
- - -
-
-
- -
-
- - Li's Static Banner - -
-
- - -
-
- - Li's Static Banner - -
-
- - -
-
- - Li's Static Banner - -
-
- -
-
-
- - -
-
-
- -
-
-

- Laptop -

- -
-
- -
-
- -
-
-
- - -
-
-
- -
-
-

- TV & Audio -

- -
-
- -
-
- -
-
-
- - -
-
-
-
- -
- - -
-

Sale Offer-20% OffThis Week

-

Featured Product

-

Meito Accessories 2018

-

- Starting at - $1209.00 -

- -
- -
-
-
-
- - - - - -
-
-
- -
-
-

- Bestsellers -

-
-
- -
-
- -
-
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/public/layout/login-register.html b/public/layout/login-register.html deleted file mode 100644 index 41fd0a9..0000000 --- a/public/layout/login-register.html +++ /dev/null @@ -1,781 +0,0 @@ - - - - - - - - Login Register || limupa - Digital Products Store eCommerce Bootstrap 4 Template - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
-
-
- -
-
- -
-
- - -
-
- -
-
- -
-
-
- - -
-
-
- -
- -
- - -
- - - - -
- -
- -
- -
-
-
- - - - - -
-
-
-
-
-
-
-
- -
- - - - - -
-
-
-
- -
- -
-
-
-
- -
-
-
-
-
- - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/layout/product-details.html b/public/layout/product-details.html deleted file mode 100644 index e69de29..0000000 diff --git a/public/layout/shop-3-column.html b/public/layout/shop-3-column.html deleted file mode 100644 index 4f647f5..0000000 --- a/public/layout/shop-3-column.html +++ /dev/null @@ -1,1930 +0,0 @@ - - - - - - - - Shop Three Column || limupa - Digital Products Store eCommerce Bootstrap 4 Template - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
-
-
- -
-
- -
-
- - -
-
- -
-
- -
-
-
- - -
-
-
- -
- -
- - -
- - - - -
- -
- -
- -
-
-
- - - - - -
-
-
-
-
-
-
-
- -
- - - - - -
-
-
-
- -
- - Li's Static Banner - -
- - -
-
-
- - - -
-
- Showing 1 to 9 of 15 -
-
- -
-
-

Sort By:

- -
-
- -
- - -
-
-
-
-
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
-
-
-
-
-
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
-
-
-
-

Showing 1-12 of 13 item(s)

-
-
- -
-
-
-
-
- -
-
-
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/layout/shop-4-column.html b/public/layout/shop-4-column.html deleted file mode 100644 index 8ccd6e3..0000000 --- a/public/layout/shop-4-column.html +++ /dev/null @@ -1,1930 +0,0 @@ - - - - - - - - Shop Four Column || limupa - Digital Products Store eCommerce Bootstrap 4 Template - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
-
-
- -
-
- -
-
- - -
-
- -
-
- -
-
-
- - -
-
-
- -
- -
- - -
- - - - -
- -
- -
- -
-
-
- - - - - -
-
-
-
-
-
-
-
- -
- - - - - -
-
-
-
- -
- - Li's Static Banner - -
- - -
-
-
- - - -
-
- Showing 1 to 9 of 15 -
-
- -
-
-

Sort By:

- -
-
- -
- - -
-
-
-
-
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
-
-
-
-
-
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
-
-
-
-

Showing 1-12 of 13 item(s)

-
-
- -
-
-
-
-
- -
-
-
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/layout/shop-left-sidebar.html b/public/layout/shop-left-sidebar.html deleted file mode 100644 index 5650cd5..0000000 --- a/public/layout/shop-left-sidebar.html +++ /dev/null @@ -1,2074 +0,0 @@ - - - - - - - - Shop Left Sidebar || limupa - Digital Products Store eCommerce Bootstrap 4 Template - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
-
-
- -
-
- -
-
- - -
-
- -
-
- -
-
-
- - -
-
-
- -
- -
- - -
- - - - -
- -
- -
- -
-
-
- - - - - -
-
-
-
-
-
-
-
- -
- - - - - -
-
-
-
- -
- - Li's Static Banner - -
- - -
-
-
- - - -
-
- Showing 1 to 9 of 15 -
-
- -
-
-

Sort By:

- -
-
- -
- - -
-
-
-
-
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
-
-
-
-
-
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
-
-
-
-

Showing 1-12 of 13 item(s)

-
-
- -
-
-
-
-
- -
-
- - - - - - - - -
-
-
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/layout/shop-list-left-sidebar.html b/public/layout/shop-list-left-sidebar.html deleted file mode 100644 index 56ee550..0000000 --- a/public/layout/shop-list-left-sidebar.html +++ /dev/null @@ -1,2074 +0,0 @@ - - - - - - - - Shop List Left Sidebar || limupa - Digital Products Store eCommerce Bootstrap 4 Template - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
-
-
- -
-
- -
-
- - -
-
- -
-
- -
-
-
- - -
-
-
- -
- -
- - -
- - - - -
- -
- -
- -
-
-
- - - - - -
-
-
-
-
-
-
-
- -
- - - - - -
-
-
-
- -
- - Li's Static Banner - -
- - -
-
-
- - - -
-
- Showing 1 to 9 of 15 -
-
- -
-
-

Sort By:

- -
-
- -
- - -
-
-
-
-
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
-
-
-
-
-
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
-
-
-
-

Showing 1-12 of 13 item(s)

-
-
- -
-
-
-
-
- -
-
- - - - - - - - -
-
-
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/layout/shop-list-right-sidebar.html b/public/layout/shop-list-right-sidebar.html deleted file mode 100644 index 0a48068..0000000 --- a/public/layout/shop-list-right-sidebar.html +++ /dev/null @@ -1,2074 +0,0 @@ - - - - - - - - Shop List Right Sidebar || limupa - Digital Products Store eCommerce Bootstrap 4 Template - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
-
-
- -
-
- -
-
- - -
-
- -
-
- -
-
-
- - -
-
-
- -
- -
- - -
- - - - -
- -
- -
- -
-
-
- - - - - -
-
-
-
-
-
-
-
- -
- - - - - -
-
-
-
- -
- - Li's Static Banner - -
- - -
-
-
- - - -
-
- Showing 1 to 9 of 15 -
-
- -
-
-

Sort By:

- -
-
- -
- - -
-
-
-
-
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
-
-
-
-
-
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
-
-
-
-

Showing 1-12 of 13 item(s)

-
-
- -
-
-
-
-
- -
-
- - - - - - - - -
-
-
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/layout/shop-list.html b/public/layout/shop-list.html deleted file mode 100644 index d44b791..0000000 --- a/public/layout/shop-list.html +++ /dev/null @@ -1,2074 +0,0 @@ - - - - - - - - Shop List || limupa - Digital Products Store eCommerce Bootstrap 4 Template - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
-
-
- -
-
- -
-
- - -
-
- -
-
- -
-
-
- - -
-
-
- -
- -
- - -
- - - - -
- -
- -
- -
-
-
- - - - - -
-
-
-
-
-
-
-
- -
- - - - - -
-
-
-
- -
- - Li's Static Banner - -
- - -
-
-
- - - -
-
- Showing 1 to 9 of 15 -
-
- -
-
-

Sort By:

- -
-
- -
- - -
-
-
-
-
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
-
-
-
-
-
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
-
-
-
-

Showing 1-12 of 13 item(s)

-
-
- -
-
-
-
-
- -
-
- - - - - - - - -
-
-
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/layout/shop-right-sidebar.html b/public/layout/shop-right-sidebar.html deleted file mode 100644 index aee49f1..0000000 --- a/public/layout/shop-right-sidebar.html +++ /dev/null @@ -1,2074 +0,0 @@ - - - - - - - - Shop Right Sidebar || limupa - Digital Products Store eCommerce Bootstrap 4 Template - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
-
-
- -
-
- -
-
- - -
-
- -
-
- -
-
-
- - -
-
-
- -
- -
- - -
- - - - -
- -
- -
- -
-
-
- - - - - -
-
-
-
-
-
-
-
- -
- - - - - -
-
-
-
- -
- - Li's Static Banner - -
- - -
-
-
- - - -
-
- Showing 1 to 9 of 15 -
-
- -
-
-

Sort By:

- -
-
- -
- - -
-
-
-
-
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
- -
-
- - Li's Product Image - - New -
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Accusantium dolorem1

-
- $46.80 -
-
-
- -
-
-
- -
-
-
-
-
-
-
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
- - Li's Product Image - - New -
-
-
-
-
-
-
- Graphic Corner -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
-

Hummingbird printed t-shirt

-
- $46.80 -
-

Beach Camera Exclusive Bundle - Includes Two Samsung Radiant 360 R3 Wi-Fi Bluetooth Speakers. Fill The Entire Room With Exquisite Sound via Ring Radiator Technology. Stream And Control R3 Speakers Wirelessly With Your Smartphone. Sophisticated, Modern Desig

-
-
-
- -
-
-
-
-
-
-
-

Showing 1-12 of 13 item(s)

-
-
- -
-
-
-
-
- -
-
- - - - - - - - -
-
-
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/layout/shopping-cart.html b/public/layout/shopping-cart.html deleted file mode 100644 index 42f4240..0000000 --- a/public/layout/shopping-cart.html +++ /dev/null @@ -1,794 +0,0 @@ - - - - - - - - Shopping Cart || limupa - Digital Products Store eCommerce Bootstrap 4 Template - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
-
-
- -
-
- -
-
- - -
-
- -
-
- -
-
-
- - -
-
-
- -
- -
- - -
- - - - -
- -
- -
- -
-
-
- - - - - -
-
-
-
-
-
-
-
- -
- - - - - -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
removeimagesProductUnit PriceQuantityTotal
Li's Product ImageAccusantium dolorem1$46.80 - -
- -
-
-
-
$70.00
Li's Product ImageMug Today is a good day$71.80 - -
- -
-
-
-
$60.50
-
-
-
-
-
- - -
-
- -
-
-
-
-
-
-
-

Cart totals

-
    -
  • Subtotal $130.00
  • -
  • Total $130.00
  • -
- Proceed to checkout -
-
-
-
-
-
-
-
- - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/layout/single-product-affiliate.html b/public/layout/single-product-affiliate.html deleted file mode 100644 index 6d9c0bc..0000000 --- a/public/layout/single-product-affiliate.html +++ /dev/null @@ -1,1303 +0,0 @@ - - - - - - - - Single Product affiliate || limupa - Digital Products Store eCommerce Bootstrap 4 Template - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
-
-
- -
-
- -
-
- - -
-
- -
-
- -
-
-
- - -
-
-
- -
- -
- - -
- - - - -
- -
- -
- -
-
-
- - - - - -
-
-
-
-
-
-
-
- -
- - - - - -
-
-
-
- -
-
-
- product image -
-
- product image -
-
- product image -
-
- product image -
-
- product image -
-
- product image -
-
-
-
product image thumb
-
product image thumb
-
product image thumb
-
product image thumb
-
product image thumb
-
product image thumb
-
-
- -
- -
-
-
-

Today is a good day Framed poster

- Reference: demo_15 -
- -
-
- $57.98 -
-
-

- 100% cotton double printed dress. Black and white striped top and orange high waisted skater skirt bottom. Lorem ipsum dolor sit amet, consectetur adipisicing elit. quibusdam corporis, earum facilis et nostrum dolorum accusamus similique eveniet quia pariatur. - -

-
-
-
- -
-
-
-
-
-
-
-
- - -
-
-
-
- - -
-
-
-
-
- The best is yet to come! Give your walls a voice with a framed poster. This aesthethic, optimistic poster will look great in your desk or in an open-space office. Painted wooden frame with passe-partout for more depth. -
-
-
-
- - Product Manufacturer Image - -

Reference demo_7

-

Reference demo_7

-
-
-
-
-
-
- Grade -
    -
  • -
  • -
  • -
  • -
  • -
-
-
- HTML 5 - 01-12-18 -
-
-

Demo

-

Plaza

-
- - - - -
-
-
-
-
-
- - -
-
-
- -
-
-

- 15 other products in the same category: -

-
-
- -
-
- -
-
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/layout/single-product-carousel.html b/public/layout/single-product-carousel.html deleted file mode 100644 index 3dba9ef..0000000 --- a/public/layout/single-product-carousel.html +++ /dev/null @@ -1,1336 +0,0 @@ - - - - - - - - Single Product Carousel || limupa - Digital Products Store eCommerce Bootstrap 4 Template - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
-
-
- -
-
- -
-
- - -
-
- -
-
- -
-
-
- - -
-
-
- -
- -
- - -
- - - - -
- -
- -
- -
-
-
- - - - - -
-
-
-
-
-
-
-
- -
- - - - - - - - -
-
-
-
- - -
-
-
-
-
- The best is yet to come! Give your walls a voice with a framed poster. This aesthethic, optimistic poster will look great in your desk or in an open-space office. Painted wooden frame with passe-partout for more depth. -
-
-
-
- - Product Manufacturer Image - -

Reference demo_7

-

Reference demo_7

-
-
-
-
-
-
- Grade -
    -
  • -
  • -
  • -
  • -
  • -
-
-
- HTML 5 - 01-12-18 -
-
-

Demo

-

Plaza

-
- - - - -
-
-
-
-
-
- - -
-
-
- -
-
-

- 15 other products in the same category: -

-
-
- -
-
- -
-
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/layout/single-product-gallery-left.html b/public/layout/single-product-gallery-left.html deleted file mode 100644 index 8075077..0000000 --- a/public/layout/single-product-gallery-left.html +++ /dev/null @@ -1,1356 +0,0 @@ - - - - - - - - Single Product Gallery Left || limupa - Digital Products Store eCommerce Bootstrap 4 Template - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
-
-
- -
-
- -
-
- - -
-
- -
-
- -
-
-
- - -
-
-
- -
- -
- - -
- - - - -
- -
- -
- -
-
-
- - - - - -
-
-
-
-
-
-
-
- -
- - - - - -
-
-
-
- - - -
- -
-
-
-

Today is a good day Framed poster

- Reference: demo_15 -
- -
-
- $57.98 -
-
-

- 100% cotton double printed dress. Black and white striped top and orange high waisted skater skirt bottom. Lorem ipsum dolor sit amet, consectetur adipisicing elit. quibusdam corporis, earum facilis et nostrum dolorum accusamus similique eveniet quia pariatur. - -

-
-
-
- - -
-
-
-
-
- -
- -
-
-
-
- -
-
- -
-
    -
  • -
    -
    - -
    -

    Security policy (edit with Customer reassurance module)

    -
    -
  • -
  • -
    -
    - -
    -

    Delivery policy (edit with Customer reassurance module)

    -
    -
  • -
  • -
    -
    - -
    -

    Return policy (edit with Customer reassurance module)

    -
    -
  • -
-
-
-
-
-
-
-
- - -
-
-
-
- - -
-
-
-
-
- The best is yet to come! Give your walls a voice with a framed poster. This aesthethic, optimistic poster will look great in your desk or in an open-space office. Painted wooden frame with passe-partout for more depth. -
-
-
-
- - Product Manufacturer Image - -

Reference demo_7

-

Reference demo_7

-
-
-
-
-
-
- Grade -
    -
  • -
  • -
  • -
  • -
  • -
-
-
- HTML 5 - 01-12-18 -
-
-

Demo

-

Plaza

-
- - - - -
-
-
-
-
-
- - -
-
-
- -
-
-

- 15 other products in the same category: -

-
-
- -
-
- -
-
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/layout/single-product-gallery-right.html b/public/layout/single-product-gallery-right.html deleted file mode 100644 index 0dd4846..0000000 --- a/public/layout/single-product-gallery-right.html +++ /dev/null @@ -1,1355 +0,0 @@ - - - - - - - - Single Product Gallery Right || limupa - Digital Products Store eCommerce Bootstrap 4 Template - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
-
-
- -
-
- -
-
- - -
-
- -
-
- -
-
-
- - -
-
-
- -
- -
- - -
- - - - -
- -
- -
- -
-
-
- - - - - -
-
-
-
-
-
-
-
- -
- - - - - -
-
-
-
-
-
-

Today is a good day Framed poster

- Reference: demo_15 -
- -
-
- $57.98 -
-
-

- 100% cotton double printed dress. Black and white striped top and orange high waisted skater skirt bottom. Lorem ipsum dolor sit amet, consectetur adipisicing elit. quibusdam corporis, earum facilis et nostrum dolorum accusamus similique eveniet quia pariatur. - -

-
-
-
- - -
-
-
-
-
- -
- -
-
-
-
- -
-
- -
-
    -
  • -
    -
    - -
    -

    Security policy (edit with Customer reassurance module)

    -
    -
  • -
  • -
    -
    - -
    -

    Delivery policy (edit with Customer reassurance module)

    -
    -
  • -
  • -
    -
    - -
    -

    Return policy (edit with Customer reassurance module)

    -
    -
  • -
-
-
-
-
-
- - - -
-
-
-
- - -
-
-
-
- - -
-
-
-
-
- The best is yet to come! Give your walls a voice with a framed poster. This aesthethic, optimistic poster will look great in your desk or in an open-space office. Painted wooden frame with passe-partout for more depth. -
-
-
-
- - Product Manufacturer Image - -

Reference demo_7

-

Reference demo_7

-
-
-
-
-
-
- Grade -
    -
  • -
  • -
  • -
  • -
  • -
-
-
- HTML 5 - 01-12-18 -
-
-

Demo

-

Plaza

-
- - - - -
-
-
-
-
-
- - -
-
-
- -
-
-

- 15 other products in the same category: -

-
-
- -
-
- -
-
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/layout/single-product-group.html b/public/layout/single-product-group.html deleted file mode 100644 index a572f69..0000000 --- a/public/layout/single-product-group.html +++ /dev/null @@ -1,1385 +0,0 @@ - - - - - - - - Single Product Group || limupa - Digital Products Store eCommerce Bootstrap 4 Template - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
-
-
- -
-
- -
-
- - -
-
- -
-
- -
-
-
- - -
-
-
- -
- -
- - -
- - - - -
- -
- -
- -
-
-
- - - - - -
-
-
-
-
-
-
-
- -
- - - - - -
-
-
-
- -
-
-
- product image -
-
- product image -
-
- product image -
-
- product image -
-
- product image -
-
- product image -
-
-
-
product image thumb
-
product image thumb
-
product image thumb
-
product image thumb
-
product image thumb
-
product image thumb
-
-
- -
- -
-
-
-

Today is a good day Framed poster

- Reference: demo_15 -
- -
-
- $57.98 -
-
-

- 100% cotton double printed dress. Black and white striped top and orange high waisted skater skirt bottom. Lorem ipsum dolor sit amet, consectetur adipisicing elit. quibusdam corporis, earum facilis et nostrum dolorum accusamus similique eveniet quia pariatur. - -

-
-
-
- - - - - - - - - - - -
-
- -
- -
-
-
-
-
- CROWN SUMMIT BACKPACK - $295.00
-
- -
- -
-
-
-
-
- Vestibulum suscipit - $125.00
-
-
-
-
- - -
-
- -
-
    -
  • -
    -
    - -
    -

    Security policy (edit with Customer reassurance module)

    -
    -
  • -
  • -
    -
    - -
    -

    Delivery policy (edit with Customer reassurance module)

    -
    -
  • -
  • -
    -
    - -
    -

    Return policy (edit with Customer reassurance module)

    -
    -
  • -
-
-
-
-
-
-
-
- - -
-
-
-
- - -
-
-
-
-
- The best is yet to come! Give your walls a voice with a framed poster. This aesthethic, optimistic poster will look great in your desk or in an open-space office. Painted wooden frame with passe-partout for more depth. -
-
-
-
- - Product Manufacturer Image - -

Reference demo_7

-

Reference demo_7

-
-
-
-
-
-
- Grade -
    -
  • -
  • -
  • -
  • -
  • -
-
-
- HTML 5 - 01-12-18 -
-
-

Demo

-

Plaza

-
- - - - -
-
-
-
-
-
- - -
-
-
- -
-
-

- 15 other products in the same category: -

-
-
- -
-
- -
-
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/layout/single-product-normal.html b/public/layout/single-product-normal.html deleted file mode 100644 index 66be97d..0000000 --- a/public/layout/single-product-normal.html +++ /dev/null @@ -1,1321 +0,0 @@ - - - - - - - - Single Product Normal || limupa - Digital Products Store eCommerce Bootstrap 4 Template - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
-
-
- -
-
- -
-
- - -
-
- -
-
- -
-
-
- - -
-
-
- -
- -
- - -
- - - - -
- -
- -
- -
-
-
- - - - - -
-
-
-
-
-
-
-
- -
- - - - - -
-
-
-
- -
-
-
- product image -
-
- product image -
-
- product image -
-
- product image -
-
- product image -
-
- product image -
-
-
-
product image thumb
-
product image thumb
-
product image thumb
-
product image thumb
-
product image thumb
-
product image thumb
-
-
- -
- -
-
-
-

Today is a good day Framed poster

- Reference: demo_15 -
- -
-
- $57.98 -
-
-

- 100% cotton double printed dress. Black and white striped top and orange high waisted skater skirt bottom. Lorem ipsum dolor sit amet, consectetur adipisicing elit. quibusdam corporis, earum facilis et nostrum dolorum accusamus similique eveniet quia pariatur. - -

-
-
-
-
- -
- -
-
-
-
- -
-
-
- -
-
-
-
-
-
-
- - -
-
-
-
- - -
-
-
-
-
- The best is yet to come! Give your walls a voice with a framed poster. This aesthethic, optimistic poster will look great in your desk or in an open-space office. Painted wooden frame with passe-partout for more depth. -
-
-
-
- - Product Manufacturer Image - -

Reference demo_7

-

Reference demo_7

-
-
-
-
-
-
- Grade -
    -
  • -
  • -
  • -
  • -
  • -
-
-
- HTML 5 - 01-12-18 -
-
-

Demo

-

Plaza

-
- - - - -
-
-
-
-
-
- - -
-
-
- -
-
-

- 15 other products in the same category: -

-
-
- -
-
- -
-
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/layout/single-product-sale.html b/public/layout/single-product-sale.html deleted file mode 100644 index 94854d7..0000000 --- a/public/layout/single-product-sale.html +++ /dev/null @@ -1,1363 +0,0 @@ - - - - - - - - Single Product Sale || limupa - Digital Products Store eCommerce Bootstrap 4 Template - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
-
-
- -
-
- -
-
- - -
-
- -
-
- -
-
-
- - -
-
-
- -
- -
- - -
- - - - -
- -
- -
- -
-
-
- - - - - -
-
-
-
-
-
-
-
- -
- - - - - -
-
-
-
- -
-
-
- product image -
-
- product image -
-
- product image -
-
- product image -
-
- product image -
-
- product image -
-
-
-
product image thumb
-
product image thumb
-
product image thumb
-
product image thumb
-
product image thumb
-
product image thumb
-
-
- -
- -
-
-
-

Today is a good day Framed poster

- Reference: demo_15 -
- -
-
- $57.98 -
-
-
-
-
-

- 100% cotton double printed dress. Black and white striped top and orange high waisted skater skirt bottom. Lorem ipsum dolor sit amet, consectetur adipisicing elit. quibusdam corporis, earum facilis et nostrum dolorum accusamus similique eveniet quia pariatur. - -

-
-
-
- - -
-
-
-
-
- -
- -
-
-
-
- -
-
- -
-
    -
  • -
    -
    - -
    -

    Security policy (edit with Customer reassurance module)

    -
    -
  • -
  • -
    -
    - -
    -

    Delivery policy (edit with Customer reassurance module)

    -
    -
  • -
  • -
    -
    - -
    -

    Return policy (edit with Customer reassurance module)

    -
    -
  • -
-
-
-
-
-
-
-
- - -
-
-
-
- - -
-
-
-
-
- The best is yet to come! Give your walls a voice with a framed poster. This aesthethic, optimistic poster will look great in your desk or in an open-space office. Painted wooden frame with passe-partout for more depth. -
-
-
-
- - Product Manufacturer Image - -

Reference demo_7

-

Reference demo_7

-
-
-
-
-
-
- Grade -
    -
  • -
  • -
  • -
  • -
  • -
-
-
- HTML 5 - 01-12-18 -
-
-

Demo

-

Plaza

-
- - - - -
-
-
-
-
-
- - -
-
-
- -
-
-

- 15 other products in the same category: -

-
-
- -
-
- -
-
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/layout/single-product-tab-style-left.html b/public/layout/single-product-tab-style-left.html deleted file mode 100644 index 5799d8e..0000000 --- a/public/layout/single-product-tab-style-left.html +++ /dev/null @@ -1,1372 +0,0 @@ - - - - - - - - Single Product Tab Left || limupa - Digital Products Store eCommerce Bootstrap 4 Template - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
-
-
- -
-
- -
-
- - -
-
- -
-
- -
-
-
- - -
-
-
- -
- -
- - -
- - - - -
- -
- -
- -
-
-
- - - - - -
-
-
-
-
-
-
-
- -
- - - - - -
-
-
-
- -
-
-
- - product image - -
-
- - product image - -
-
- - product image - -
-
- - product image - -
-
- - product image - -
-
- - product image - -
-
-
-
product image thumb
-
product image thumb
-
product image thumb
-
product image thumb
-
product image thumb
-
product image thumb
-
-
- -
- -
-
-
-

Today is a good day Framed poster

- Reference: demo_15 -
- -
-
- $57.98 -
-
-

- 100% cotton double printed dress. Black and white striped top and orange high waisted skater skirt bottom. Lorem ipsum dolor sit amet, consectetur adipisicing elit. quibusdam corporis, earum facilis et nostrum dolorum accusamus similique eveniet quia pariatur. - -

-
-
-
- - -
-
-
-
-
- -
- -
-
-
-
- -
-
- -
-
    -
  • -
    -
    - -
    -

    Security policy (edit with Customer reassurance module)

    -
    -
  • -
  • -
    -
    - -
    -

    Delivery policy (edit with Customer reassurance module)

    -
    -
  • -
  • -
    -
    - -
    -

    Return policy (edit with Customer reassurance module)

    -
    -
  • -
-
-
-
-
-
-
-
- - -
-
-
-
- - -
-
-
-
-
- The best is yet to come! Give your walls a voice with a framed poster. This aesthethic, optimistic poster will look great in your desk or in an open-space office. Painted wooden frame with passe-partout for more depth. -
-
-
-
- - Product Manufacturer Image - -

Reference demo_7

-

Reference demo_7

-
-
-
-
-
-
- Grade -
    -
  • -
  • -
  • -
  • -
  • -
-
-
- HTML 5 - 01-12-18 -
-
-

Demo

-

Plaza

-
- - - - -
-
-
-
-
-
- - -
-
-
- -
-
-

- 15 other products in the same category: -

-
-
- -
-
- -
-
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/layout/single-product-tab-style-right.html b/public/layout/single-product-tab-style-right.html deleted file mode 100644 index b9581b6..0000000 --- a/public/layout/single-product-tab-style-right.html +++ /dev/null @@ -1,1371 +0,0 @@ - - - - - - - - Single Product Tab Right || limupa - Digital Products Store eCommerce Bootstrap 4 Template - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
-
-
- -
-
- -
-
- - -
-
- -
-
- -
-
-
- - -
-
-
- -
- -
- - -
- - - - -
- -
- -
- -
-
-
- - - - - -
-
-
-
-
-
-
-
- -
- - - - - -
-
-
-
-
-
-

Today is a good day Framed poster

- Reference: demo_15 -
- -
-
- $57.98 -
-
-

- 100% cotton double printed dress. Black and white striped top and orange high waisted skater skirt bottom. Lorem ipsum dolor sit amet, consectetur adipisicing elit. quibusdam corporis, earum facilis et nostrum dolorum accusamus similique eveniet quia pariatur. - -

-
-
-
- - -
-
-
-
-
- -
- -
-
-
-
- -
-
- -
-
    -
  • -
    -
    - -
    -

    Security policy (edit with Customer reassurance module)

    -
    -
  • -
  • -
    -
    - -
    -

    Delivery policy (edit with Customer reassurance module)

    -
    -
  • -
  • -
    -
    - -
    -

    Return policy (edit with Customer reassurance module)

    -
    -
  • -
-
-
-
-
-
- -
-
-
- - product image - -
-
- - product image - -
-
- - product image - -
-
- - product image - -
-
- - product image - -
-
- - product image - -
-
-
-
product image thumb
-
product image thumb
-
product image thumb
-
product image thumb
-
product image thumb
-
product image thumb
-
-
- -
-
-
-
- - -
-
-
-
- - -
-
-
-
-
- The best is yet to come! Give your walls a voice with a framed poster. This aesthethic, optimistic poster will look great in your desk or in an open-space office. Painted wooden frame with passe-partout for more depth. -
-
-
-
- - Product Manufacturer Image - -

Reference demo_7

-

Reference demo_7

-
-
-
-
-
-
- Grade -
    -
  • -
  • -
  • -
  • -
  • -
-
-
- HTML 5 - 01-12-18 -
-
-

Demo

-

Plaza

-
- - - - -
-
-
-
-
-
- - -
-
-
- -
-
-

- 15 other products in the same category: -

-
-
- -
-
- -
-
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/layout/single-product-tab-style-top.html b/public/layout/single-product-tab-style-top.html deleted file mode 100644 index 525f0e3..0000000 --- a/public/layout/single-product-tab-style-top.html +++ /dev/null @@ -1,1366 +0,0 @@ - - - - - - - - Single Product Tab Style Top || limupa - Digital Products Store eCommerce Bootstrap 4 Template - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
-
-
- -
-
- -
-
- - -
-
- -
-
- -
-
-
- - -
-
-
- -
- -
- - -
- - - - -
- -
- -
- -
-
-
- - - - - -
-
-
-
-
-
-
-
- -
- - - - - -
-
-
-
- -
-
-
product image thumb
-
product image thumb
-
product image thumb
-
product image thumb
-
product image thumb
-
product image thumb
-
-
-
- - product image - -
-
- - product image - -
-
- - product image - -
-
- product image -
-
- product image -
-
- product image -
-
-
- -
- -
-
-
-

Today is a good day Framed poster

- Reference: demo_15 -
- -
-
- $57.98 -
-
-

- 100% cotton double printed dress. Black and white striped top and orange high waisted skater skirt bottom. Lorem ipsum dolor sit amet, consectetur adipisicing elit. quibusdam corporis, earum facilis et nostrum dolorum accusamus similique eveniet quia pariatur. - -

-
-
-
- - -
-
-
-
-
- -
- -
-
-
-
- -
-
- -
-
    -
  • -
    -
    - -
    -

    Security policy (edit with Customer reassurance module)

    -
    -
  • -
  • -
    -
    - -
    -

    Delivery policy (edit with Customer reassurance module)

    -
    -
  • -
  • -
    -
    - -
    -

    Return policy (edit with Customer reassurance module)

    -
    -
  • -
-
-
-
-
-
-
-
- - -
-
-
-
- - -
-
-
-
-
- The best is yet to come! Give your walls a voice with a framed poster. This aesthethic, optimistic poster will look great in your desk or in an open-space office. Painted wooden frame with passe-partout for more depth. -
-
-
-
- - Product Manufacturer Image - -

Reference demo_7

-

Reference demo_7

-
-
-
-
-
-
- Grade -
    -
  • -
  • -
  • -
  • -
  • -
-
-
- HTML 5 - 01-12-18 -
-
-

Demo

-

Plaza

-
- - - - -
-
-
-
-
-
- - -
-
-
- -
-
-

- 15 other products in the same category: -

-
-
- -
-
- -
-
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/layout/single-product.html b/public/layout/single-product.html deleted file mode 100644 index b713e17..0000000 --- a/public/layout/single-product.html +++ /dev/null @@ -1,1372 +0,0 @@ - - - - - - - - Single Product || limupa - Digital Products Store eCommerce Bootstrap 4 Template - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
-
-
- -
-
- -
-
- - -
-
- -
-
- -
-
-
- - -
-
-
- -
- -
- - -
- - - - -
- -
- -
- -
-
-
- - - - - -
-
-
-
-
-
-
-
- -
- - - - - -
-
-
-
- -
-
-
- - product image - -
-
- - product image - -
-
- - product image - -
-
- - product image - -
-
- - product image - -
-
- - product image - -
-
-
-
product image thumb
-
product image thumb
-
product image thumb
-
product image thumb
-
product image thumb
-
product image thumb
-
-
- -
- -
-
-
-

Today is a good day Framed poster

- Reference: demo_15 -
- -
-
- $57.98 -
-
-

- 100% cotton double printed dress. Black and white striped top and orange high waisted skater skirt bottom. Lorem ipsum dolor sit amet, consectetur adipisicing elit. quibusdam corporis, earum facilis et nostrum dolorum accusamus similique eveniet quia pariatur. - -

-
-
-
- - -
-
-
-
-
- -
- -
-
-
-
- -
-
- -
-
    -
  • -
    -
    - -
    -

    Security policy (edit with Customer reassurance module)

    -
    -
  • -
  • -
    -
    - -
    -

    Delivery policy (edit with Customer reassurance module)

    -
    -
  • -
  • -
    -
    - -
    -

    Return policy (edit with Customer reassurance module)

    -
    -
  • -
-
-
-
-
-
-
-
- - -
-
-
-
- - -
-
-
-
-
- The best is yet to come! Give your walls a voice with a framed poster. This aesthethic, optimistic poster will look great in your desk or in an open-space office. Painted wooden frame with passe-partout for more depth. -
-
-
-
- - Product Manufacturer Image - -

Reference demo_7

-

Reference demo_7

-
-
-
-
-
-
- Grade -
    -
  • -
  • -
  • -
  • -
  • -
-
-
- HTML 5 - 01-12-18 -
-
-

Demo

-

Plaza

-
- - - - -
-
-
-
-
-
- - -
-
-
- -
-
-

- 15 other products in the same category: -

-
-
- -
-
- -
-
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/layout/style.css b/public/layout/style.css index 402a63b..b525d20 100644 --- a/public/layout/style.css +++ b/public/layout/style.css @@ -921,6 +921,9 @@ textarea:focus { } } @media only screen and (max-width: 479px) { + .sidebar-categores-box{ + display: none; + } .mobile-menu .mean-bar .mean-nav > ul { max-height: 220px; overflow-y: auto; @@ -4751,6 +4754,7 @@ span.required { /* 6.11 Li's Shop Page /*----------------------------------------*/ .sidebar-categores-box { + display: flex; background: #f4f4f4; border: 1px solid #e1e1e1; border-radius: 3px; @@ -4794,6 +4798,29 @@ span.required { background: #242424 none repeat scroll 0 0; color: #fff; } +.btn-search { + background: #cccccc none repeat scroll 0 0; + border-color: rgba(0, 0, 0, 0); + box-shadow: 0.0625rem 0.0625rem 0.0625rem 0 rgba(0, 0, 0, 0.1); + color: #333333; + cursor: pointer; + font-size: 14px; + font-size: 0.875rem; + line-height: 15px; + padding: 5px; + -webkit-transition: all 0.3s ease-in-out 0s; + transition: all 0.3s ease-in-out 0s; + margin-top: 30px; +} +.btn-search::before { + content: "\f00d"; + font-family: "fontawesome"; + margin-right: 15px; +} +.btn-search:hover { + background: #242424 none repeat scroll 0 0; + color: #fff; +} .category-sub-menu ul li ul { display: none; margin-top: 10px; diff --git a/public/layout/wishlist.html b/public/layout/wishlist.html deleted file mode 100644 index 8e0a944..0000000 --- a/public/layout/wishlist.html +++ /dev/null @@ -1,868 +0,0 @@ - - - - - - - - Wishlist || limupa - Digital Products Store eCommerce Bootstrap 4 Template - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
-
-
- -
-
- -
-
- - -
-
- -
-
- -
-
-
- - -
-
-
- -
- -
- - -
- - - - -
- -
- -
- -
-
-
- - - - - -
-
-
-
-
-
-
-
- -
- - - - - -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
removeimagesProductUnit PriceStock Statusadd to cart
Giro Civilia$23.39in stockadd to cart
Pro Bike Shoes$30.50in stockadd to cart
Nero Urban Shoes$40.19out stockadd to cart
-
-
-
-
-
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/Controller/AccountController.php b/src/Controller/AccountController.php new file mode 100644 index 0000000..0dad654 --- /dev/null +++ b/src/Controller/AccountController.php @@ -0,0 +1,157 @@ +getUser()) { + return $this->redirectToRoute('home'); + } + + return $this->render('account/index.html.twig'); + } + + #[Route('/login', name: 'user_login')] + public function login(AuthenticationUtils $authenticationUtils): Response + { + if ($this->getUser()) + { + + return $this->redirectToRoute("home"); + } + + // get the login error if there is one + $error = $authenticationUtils->getLastAuthenticationError(); + // last username entered by the user + $lastUsername = $authenticationUtils->getLastUsername(); + + return $this->render('account/login.html.twig', ['last_username' => $lastUsername, 'error' => $error]); + } + + #[Route('/register', name: 'user_register')] + public function register(ManagerRegistry $em, Request $request, UserPasswordHasherInterface $hasher, MailerService $ms): Response + { + + if ($request->request->get('email') != null && + $request->request->get('password') != null && + $request->request->get('password') === $request->request->get('confirm')) + { + $user = new User(); + $user->setEmail($request->request->get('email')); + $user->setPassword($hasher->hashPassword($user, $request->request->get('password'))); + $em->getManager()->persist($user); + $em->getManager()->flush(); + + try { + + // create the profile + $profile = new Profile(); + $profile->setUser($user); + $profile->setFirstName($request->request->get('first_name')); + $profile->setLastName($request->request->get('last_name')); + $profile->setEmail($request->request->get('email')); + $profile->setPhoneNumber('XXXXXXXXXX'); + $profile->setPhoto('image.png'); + $em->getManager()->persist($profile); + $em->getManager()->flush(); + + // send confirmation mail after user registration with items list + $ms->twigEmailSend(1,$user->getEmail(), $user->getEmail(), []); + return $this->render('account/validation.html.twig', ['valid'=>true]); + } catch (\Throwable $th) + { + return $this->render('account/validation.html.twig', ['valid'=>false]); + } + } + return $this->render('account/register.html.twig'); + } + + #[Route('/profile', name: 'user_profile')] + public function profile(ManagerRegistry $em, Request $request, UserPasswordHasherInterface $hasher, MailerService $ms): Response + { + $user = $this->getUser(); + $profile = $em->getManager()->getRepository(Profile::class)->findOneBy(['User' => $user]); + + $firstname = $request->request->get('first_name') ; + $lastname = $request->request->get('last_name'); + $email = $request->request->get('email'); + $photo = $request->request->get('photo'); + $phone = $request->request->get('phone'); + + if($lastname && $firstname && $email && $phone && $photo) + { + try { + dd($profile); + + $profile->setFirstName($firstname) ; + $profile->setLastName($lastname); + $profile->setEmail($email); + $profile->setPhoneNumber($phone); + $profile->setPhoto($photo); + + //$user->setPassword($hasher->hashPassword($user, $request->request->get('password'))); + $em->getManager()->persist($profile); + + $em->getManager()->flush(); + // send confirmation mail after profile update + //$ms->twigEmailSend(1,$user->getEmail(), $user->getEmail(), []); + return $this->render('account/validation.html.twig', ['valid'=>true]); + } catch (\Throwable $th) + { + return $this->render('account/validation.html.twig', ['valid'=>false]); + } + } + + + return $this->render('account/profile.html.twig', ['profile' => $profile]); + } + + #[Route('/history', name: 'user_history')] + public function history(ManagerRegistry $em, Request $request, UserPasswordHasherInterface $hasher, MailerService $ms): Response + { + + if ($request->request->get('email') != null && + $request->request->get('password') != null && + $request->request->get('password') === $request->request->get('confirm')) + { + $user = new User(); + # $user->firstname = $request->request->get('first_name'); + # $user->lastname = $request->request->get('last_name'); + $user->setEmail($request->request->get('email')); + $user->setPassword($hasher->hashPassword($user, $request->request->get('password'))); + $em->getManager()->persist($user); + try { + $em->getManager()->flush(); + // send confirmation mail after user registration with items list + $ms->twigEmailSend(1,$user->getEmail(), $user->getEmail(), []); + return $this->render('account/validation.html.twig', ['valid'=>true]); + } catch (\Throwable $th) + { + return $this->render('account/validation.html.twig', ['valid'=>false]); + } + } + return $this->render('account/register.html.twig'); + } + + #[Route('/logout', name: 'app_logout')] + public function logout() + { + throw new \LogicException('This method can be blank - it will be intercepted by the logout key on your firewall.'); + } +} diff --git a/src/Controller/Admin/BrandCrudController.php b/src/Controller/Admin/BrandCrudController.php new file mode 100644 index 0000000..b18a749 --- /dev/null +++ b/src/Controller/Admin/BrandCrudController.php @@ -0,0 +1,28 @@ +container->get(AdminUrlGenerator::class); + return $this->redirect($adminUrlGenerator->setController(ProductCrudController::class)->generateUrl()); + + // Option 2. You can make your dashboard redirect to different pages depending on the user + // + // if ('jane' === $this->getUser()->getUsername()) { + // return $this->redirect('...'); + // } + + // Option 3. You can render some custom template to display a proper dashboard with widgets, etc. + // (tip: it's easier if your template extends from @EasyAdmin/page/content.html.twig) + // + // return $this->render('some/path/my-dashboard.html.twig'); + } + + public function configureDashboard(): Dashboard + { + return Dashboard::new() + ->setTitle('MyShop Admin'); + } + + public function configureMenuItems(): iterable + { + yield MenuItem::linkToDashboard('Dashboard', 'fa fa-home'); + yield MenuItem::linkToCrud('Products', 'fas fa-list', Product::class); + yield MenuItem::linkToCrud('Categories', 'fa fa-list', Category::class); + yield MenuItem::linkToCrud('Roles', 'fas fa-list', Role::class); + yield MenuItem::linkToCrud('Taxes', 'fas fa-list', Tax::class); + yield MenuItem::linkToCrud('Brands', 'fa fa-list', Brand::class); + yield MenuItem::linkToCrud('Users', 'fas fa-list', User::class); + } +} diff --git a/src/Controller/Admin/DiscountCrudController.php b/src/Controller/Admin/DiscountCrudController.php new file mode 100644 index 0000000..c932456 --- /dev/null +++ b/src/Controller/Admin/DiscountCrudController.php @@ -0,0 +1,28 @@ +get('cart', []); + // call the service functions + return $this->render('cart/index.html.twig', [ + 'cart' => $cart, + 'productsCart'=> $cs->List($session, $repo), + 'total' => $cs->Total($session, $repo) + ]); + } + + #[Route('/add/{id}', name: 'cart_add')] + public function add(int $id, SessionInterface $session, CartService $cs) + { + // call the service add function + $cs->Add($id,$session); + //redirect to list + return $this->redirectToRoute('shopping_cart'); + } + + #[Route('/remove/{id}', name: 'cart_remove')] + public function remove(int $id, SessionInterface $session, CartService $cs) + { + // call the service remove function + $cs->Remove($id, $session); + //redirect to list + return $this->redirectToRoute('shopping_cart'); + } +} diff --git a/src/Controller/CheckoutController.php b/src/Controller/CheckoutController.php new file mode 100644 index 0000000..d667855 --- /dev/null +++ b/src/Controller/CheckoutController.php @@ -0,0 +1,150 @@ +get('cart', []); + + // call the service functions + return $this->render('/checkout/checkout.html.twig', [ + 'stripe_key' => $_ENV["STRIPE_KEY"], + 'cart' => $cart, + 'products' => $cs->List($session, $repo), + 'total' => $cs->Total($session, $repo) + ]); + } + + // This Route allow to implement a Stripe Custom Checkout + #[Route('/checkout/create-charge', name: 'stripe_charge')] + // public function createCharge(SessionInterface $session, ProductRepository $repo, CartService $cs, Request $request) + // { + // Stripe\Stripe::setApiKey($_ENV["STRIPE_SECRET"]); + // $token = $request->request->get('stripeToken'); + + // Stripe\Charge::create( + // [ + // 'amount' => $cs->Total($session, $repo) * 100, + // 'currency' => 'usd', + // 'source' => $token, + // 'description' => 'My First Test Charge (created for API docs)', ] + // ); + // // empty cart if payment success + // $cs->Empty($session); + // $this->addFlash( + // 'success', + // 'Payment Successful!' + // ); + // return $this->redirectToRoute('shopping_checkout', [], Response::HTTP_SEE_OTHER); + // } + + // This Route allow to implement a Stripe hosted Checkout + #[Route('/checkout/stripe', name: 'stripe-checkout')] + public function createCheckout(SessionInterface $session, ProductRepository $repo, + CartService $cs, CheckoutService $checkout): Response + { + // cart line items + $items = $cs->List($session, $repo); + + // find the customer info + $user = $this->getUser(); + + if ($user == null) + return $this->redirectToRoute("user_login"); + ///////// add a flag to come back to checkout after login + + // create the order by calling the service + $order = $checkout->orderAdd($user, $items); + + // create the payment by calling the service + $payment = $checkout->paymentAdd($order, 'card', $cs->Total($session, $repo)); + + Stripe\Stripe::setApiKey($_ENV["STRIPE_SECRET"]); + $checkout_session = \Stripe\Checkout\Session::create([ + 'line_items' => [array_map(fn (array $product) => + [ + 'price_data' => [ + 'currency' => 'usd', + 'unit_amount' => $product['product']->getPrice() * 100, + 'product_data' => [ + 'name' => $product['product']->getName(), + 'description' => $product['product']->getDescription(), + ], + ], + 'quantity' => $product['quantity'], + ], $items)], + + 'mode' => 'payment', + 'billing_address_collection' => "required", + 'shipping_address_collection' => [ + 'allowed_countries' => ['CA', 'US'] + ], + // get dynamic url from $_SERVER ot HTTP ewquest + 'success_url' => 'http://localhost:8000/checkout/success?session_id={CHECKOUT_SESSION_ID}&order_id='.$order->getId(), + + 'cancel_url' => 'http://localhost:8000/checkout/cancel', + ]); + + // redirect to stripe hosted checkout page + return $this->redirect($checkout_session->url, 303); + } + + #[Route('/checkout/success', name: 'success')] + public function success(SessionInterface $session, CartService $cs, ProductRepository $repo, + CheckoutService $checkout, MailerService $ms): Response + { + Stripe\Stripe::setApiKey($_ENV["STRIPE_SECRET"]); + + // update the order status + $checkout->orderUpdate($_GET['order_id'], 'paid'); + + // update the payment status + $order = $checkout->getManager()->getRepository(Order::class)->find($_GET['order_id']); + $checkout->paymentUpdate($order->getId(), 'success'); + + $stripe_session = Stripe\Checkout\Session::retrieve($_GET['session_id']); + $customer = Stripe\Customer::retrieve($stripe_session->customer); + + // get products list items + $items = $cs->List($session, $repo); + + // send confirmation mail to customer with items list + $ms->twigEmailSend(2,$customer->email, $customer->name,$items); + + // empty cart after checkout success + $cs->Empty($session); + + return $this->render('checkout/success.html.twig', [ + 'customer_email' => $customer->email, + 'order_id' => $_GET['order_id'] + ]); + } + + + #[Route('/checkout/cancel', name: 'cancel')] + public function cancel(): Response + { + return $this->render('checkout/cancel.html.twig', [ + 'controller_name' => 'CheckoutController', + ]); + } + +} \ No newline at end of file diff --git a/src/Controller/ContactController.php b/src/Controller/ContactController.php new file mode 100644 index 0000000..b1d1005 --- /dev/null +++ b/src/Controller/ContactController.php @@ -0,0 +1,62 @@ +render('contact/index.html.twig'); + } + + #[Route('/contact/feedback', name: 'feedback')] + public function feedback(ManagerRegistry $manager, HttpFoundationRequest $request, MailerService $ms): Response + { + $customerName = $request->request->get("customerName"); + $customerEmail = $request->request->get("customerEmail"); + $contactSubject = $request->request->get("contactSubject"); + $contactMessage = $request->request->get("contactMessage"); + + // validate the form inputs + if (($customerName != null) && ($customerEmail != null) && + ($contactSubject != null) && ($contactMessage != null)) + { + // save the fields data + $feed = new Feedback(); + $feed->setName($customerName); + $feed->setEmail($customerEmail); + $feed->setSubject($contactSubject); + $feed->setMessage($contactMessage); + + $manager->getManager()->persist($feed); + try { + $manager->getManager()->flush(); + // send confirmation mail after message registration + $ms->twigEmailSend(3,$feed->getEmail(), $feed->getEmail(), []); + return $this->render('contact/feedback.html.twig', ['valid'=>true]); + } catch (\Throwable $th) + { + return $this->render('contact/feedback.html.twig', ['valid'=>false]); + } + } + + return $this->render('contact/index.html.twig'); + } + + #[Route('/contact/result', name: 'result')] + public function result(): Response + { + return $this->render('contact/feedback.html.twig', [ + 'flash' => 1, + ]); + } +} diff --git a/src/Controller/HomeController.php b/src/Controller/HomeController.php index 1879550..5ec0510 100644 --- a/src/Controller/HomeController.php +++ b/src/Controller/HomeController.php @@ -2,66 +2,113 @@ namespace App\Controller; +use App\Entity\Category; +use App\Entity\Brand; +use App\Entity\Subscriber; +use App\Entity\Photo; +use App\Entity\Product; +use App\Service\MailerService; +use Doctrine\Persistence\ManagerRegistry; +use Knp\Component\Pager\PaginatorInterface; +use PhpParser\Node\Stmt\Catch_; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; +use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Routing\Annotation\Route; use Symfony\Component\HttpFoundation\Response; +use function PHPUnit\Framework\returnSelf; + class HomeController extends AbstractController { - /** - * @Route("/", name="home") - */ - public function index(): Response - { + #[Route('/', name: 'home')] + public function index(ManagerRegistry $manager): Response + { + // extract 10 last items from new arrivals if count > 10 + $newarrivals = $manager->getRepository(Product::class)->findBy(['Specification' => 'New Arrival']); + $nbitems = count($newarrivals); + $newarrivals = ($nbitems < 10 ? $newarrivals : array_slice($newarrivals, $nbitems-10, $nbitems-1)); + // extract 10 last items from new arrivals if count > 10 + $bestsellers = $manager->getRepository(Product::class)->findBy(['Specification' => 'Best Seller']); + $nbitems = count($bestsellers); + $bestsellers = ($nbitems < 10 ? $bestsellers : array_slice($bestsellers, $nbitems-10, $nbitems-1)); + // extract 10 last items from new arrivals if count > 10 + $hotdeals = $manager->getRepository(Product::class)->findBy(['Specification' => 'Hot Deal']); + $nbitems = count($hotdeals); + $hotdeals = ($nbitems < 10 ? $hotdeals : array_slice($hotdeals, $nbitems-10, $nbitems-1)); + // extract 10 last items from new arrivals if count > 10 + $featured = $manager->getRepository(Product::class)->findBy(['Specification' => 'Featured']); + $nbitems = count($featured); + $featured = ($nbitems < 10 ? $featured : array_slice($featured,$nbitems-10, $nbitems-1)); + // extract 10 last items from new arrivals if count > 10 + $topdeals = $manager->getRepository(Product::class)->findBy(['Specification' => 'Top Deal']); + $nbitems = count($topdeals); + $topdeals = ($nbitems < 10 ? $topdeals : array_slice($topdeals, $nbitems-10, $nbitems-1)); + // extract 10 last items from new arrivals if count > 10 + $discount = $manager->getRepository(Product::class)->findBy(['Specification' => 'Discount']); + $nbitems = count($bestsellers); + $discount = ($nbitems < 10 ? $discount : array_slice($discount, $nbitems-10, $nbitems-1)); return $this->render('home/index.html.twig', [ - 'controller_name' => 'HomeController', + 'newarrival' => $newarrivals, + 'bestseller' => $bestsellers, + 'hotdeal' => $hotdeals, + 'featured' => $featured, + 'topdeal' => $topdeals, + 'discount' => $discount, + 'prod_photos' => $manager->getRepository(Photo::class)->findAll() ]); } - /** - * @Route("/about", name="about") - */ + + #[Route('/about', name: 'about')] public function about(): Response { return $this->render('home/about.html.twig', [ 'controller_name' => 'HomeController', ]); } - /** - * @Route("/shop", name="shop") - */ - public function shop(): Response - { - return $this->render('home/shop.html.twig', [ - 'controller_name' => 'HomeController', - ]); - } - /** - * @Route("/contact", name="contact") - */ - public function contact(): Response - { - return $this->render('home/contact.html.twig', [ - 'controller_name' => 'HomeController', - ]); - } - /** - * @Route("/cart", name="cart") - */ - public function cart(): Response + + #[Route('/search', name: 'search')] + public function search(ManagerRegistry $manager, Request $request): Response { - return new Response(" I am a cart page"); - // return $this->render('home/index.html.twig', [ - // 'controller_name' => 'HomeController', - // ]); + $criteria = $request->request->get("search"); + // search the desired category + $mycategory = $manager->getRepository(Category::class)->findOneBy(['Name' => $criteria]); + $mybrand = $manager->getRepository(Brand::class)->findOneBy(['name' => $criteria]); + // if found category + if ($mycategory){ + return $this->redirectToRoute('single_category',['category'=> $criteria]); + } else if ($mybrand){ // category not found we check for brand + return $this->redirectToRoute('single_brand', ['brand' => $criteria]); + } + else { + return $this->redirectToRoute('home'); + } + } - /** - * @Route("/account", name="account") - */ - public function account(): Response + + #[Route('/subscribe', name: 'newsletter')] + public function feedback(ManagerRegistry $manager, Request $request, MailerService $ms): Response { - return new Response(" I am a account page"); - // return $this->render('home/index.html.twig', [ - // 'controller_name' => 'HomeController', - // ]); + $customerEmail = $request->request->get("subscribeEmail"); + + // validate the form inputs + if ($customerEmail != null) + { + // save the fields data + $subscriber = new Subscriber(); + $subscriber->setEmail($customerEmail); + + $manager->getManager()->persist($subscriber); + try { + $manager->getManager()->flush(); + // send confirmation mail after message registration + $ms->twigEmailSend(4,$subscriber->getEmail(), $subscriber->getEmail(), []); + return $this->render('home/newsletter.html.twig', ['valid'=>true]); + } catch (\Throwable $th) + { + return $this->render('home/newsletter.html.twig', ['valid'=>false]); + } + } + + return $this->redirectToRoute('home'); } } diff --git a/src/Controller/ShopController.php b/src/Controller/ShopController.php new file mode 100644 index 0000000..9544d6f --- /dev/null +++ b/src/Controller/ShopController.php @@ -0,0 +1,255 @@ +getRepository(Category::class)->findAll(); + $brands = $manager->getRepository(Brand::class)->findAll(); + $products = $manager->getRepository(Product::class)->findAll(); + + $pagination = $paginator->paginate( + $products, /* query NOT result */ + $request->query->getInt('page', 1), /*page number*/ + 15 /*limit per page*/ + ); + return $this->render('shop/shop-grid.html.twig', [ + 'categories' => $categories, + 'brands' => $brands, + 'products' => $products, + 'pagination' => $pagination, + 'breadcrumb' => 'Shop-grid' + ]); + + } + + #[Route('/shop/product/{id}', name: 'single_product')] + public function single_product(ManagerRegistry $manager, int $id): Response + { + $product = $manager->getRepository(Product::class)->find($id); + // Consider only 15 products of the same category + $same = $manager->getRepository(Product::class)->findBy(['Category' => $product->getCategory()]); + $nbitems = count($same); + $same = ($nbitems < 15 ? $same : array_slice($same, $nbitems - 15, $nbitems - 1)); + // extract all the product photos + $single = $manager->getRepository(Photo::class)->findBy(['Product' => $id]); + + if ($product) { + return $this->render('shop/single_product.html.twig', [ + 'single' => $single, + 'product' => $product, + 'same' => $same + ]); + } else return $this->render('home/error.html.twig'); + } + + #[Route('/shop/detail/{id}', name: 'detail_product')] + public function detail_product(ManagerRegistry $manager, int $id): Response + { + $product = $manager->getRepository(Product::class)->find($id); + // Consider only 15 products of the same category + $same = $manager->getRepository(Product::class)->findBy(['Category' => $product->getCategory()]); + $nbitems = count($same); + $same = ($nbitems < 15 ? $same : array_slice($same, $nbitems - 15, $nbitems - 1)); + + if ($product) { + return $this->render('shop/detail-product.html.twig', [ + 'product' => $product, + 'same' => $same + ]); + } else return $this->render('home/error.html.twig'); + } + + #[Route('/shop/category/{category}', name: 'single_category')] + public function single_category(ManagerRegistry $manager, string $category, PaginatorInterface $paginator, Request $request): Response + { + $categories = $manager->getRepository(Category::class)->findAll(); + $mycategory = $manager->getRepository(Category::class)->findOneBy(['Name' => $category]); + $brands = $manager->getRepository(Brand::class)->findAll(); + $products = $manager->getRepository(Product::class)->findBy(['Category' => $mycategory->getId()]); + + $pagination = $paginator->paginate( + $products, /* query NOT result */ + $request->query->getInt('page', 1), /*page number*/ + 15 /*limit per page*/ + ); + return $this->render('shop/shop-grid.html.twig', [ + 'categories' => $categories, + 'brands' => $brands, + 'products' => $products, + 'pagination' => $pagination, + 'breadcrumb' => $category + ]); + + } + + #[Route('/shop/brand/{brand}', name: 'single_brand')] + public function single_brand(ManagerRegistry $manager, string $brand, PaginatorInterface $paginator, Request $request): Response + { + $categories = $manager->getRepository(Category::class)->findAll(); + $mybrand = $manager->getRepository(Brand::class)->findOneBy(['name' => $brand]); + $brands = $manager->getRepository(Brand::class)->findAll(); + //$products = $manager->getRepository(Product::class)->findBy(['brand' => $mybrand->getName()]); + $products = $mybrand->getProducts(); + + $pagination = $paginator->paginate( + $products, /* query NOT result */ + $request->query->getInt('page', 1), /*page number*/ + 15 /*limit per page*/ + ); + + return $this->render('shop/shop-grid.html.twig', [ + 'categories' => $categories, + 'brands' => $brands, + 'products' => $products, + 'pagination' => $pagination, + 'breadcrumb' => $brand + ]); + } + + #[Route('/shop/discount', name: 'discount')] + public function discounts(ManagerRegistry $manager, PaginatorInterface $paginator, Request $request): Response + { + $categories = $manager->getRepository(Category::class)->findAll(); + $brands = $manager->getRepository(Brand::class)->findAll(); + $discounts = $manager->getRepository(Product::class)->findBy(['Specification' => 'Discount']); + + $pagination = $paginator->paginate( + $discounts, /* query NOT result */ + $request->query->getInt('page', 1), /*page number*/ + 15 /*limit per page*/ + ); + return $this->render('shop/shop-grid.html.twig', [ + 'categories' => $categories, + 'brands' => $brands, + 'products' => $discounts, + 'pagination' => $pagination, + 'breadcrumb' => 'Discount' + ]); + } + + #[Route('/shop/newarrival', name: 'newarrival')] + public function newarrivals(ManagerRegistry $manager, PaginatorInterface $paginator, Request $request): Response + { + $categories = $manager->getRepository(Category::class)->findAll(); + $brands = $manager->getRepository(Brand::class)->findAll(); + $newarrivals = $manager->getRepository(Product::class)->findBy(['Specification' => 'New Arrival']); + + $pagination = $paginator->paginate( + $newarrivals, /* query NOT result */ + $request->query->getInt('page', 1), /*page number*/ + 15 /*limit per page*/ + ); + + return $this->render('shop/shop-grid.html.twig', [ + 'categories' => $categories, + 'brands' => $brands, + 'products' => $newarrivals, + 'pagination' => $pagination, + 'breadcrumb' => 'New Arrival' + ]); + } + + #[Route('/shop/bestseller', name: 'bestseller')] + public function bestseller(ManagerRegistry $manager, PaginatorInterface $paginator, Request $request): Response + { + $categories = $manager->getRepository(Category::class)->findAll(); + $brands = $manager->getRepository(Brand::class)->findAll(); + $bestsellers = $manager->getRepository(Product::class)->findBy(['Specification' => 'Best Seller']); + + $pagination = $paginator->paginate( + $bestsellers, /* query NOT result */ + $request->query->getInt('page', 1), /*page number*/ + 15 /*limit per page*/ + ); + + return $this->render('shop/shop-grid.html.twig', [ + 'categories' => $categories, + 'brands' => $brands, + 'products' => $bestsellers, + 'pagination' => $pagination, + 'breadcrumb' => 'Best Seller' + ]); + } + + #[Route('/shop/topdeal', name: 'topdeal')] + public function topdeal(ManagerRegistry $manager, PaginatorInterface $paginator, Request $request): Response + { + $categories = $manager->getRepository(Category::class)->findAll(); + $brands = $manager->getRepository(Brand::class)->findAll(); + $bestsellers = $manager->getRepository(Product::class)->findBy(['Specification' => 'Top Deal']); + + $pagination = $paginator->paginate( + $bestsellers, /* query NOT result */ + $request->query->getInt('page', 1), /*page number*/ + 15 /*limit per page*/ + ); + + return $this->render('shop/shop-grid.html.twig', [ + 'categories' => $categories, + 'brands' => $brands, + 'products' => $bestsellers, + 'pagination' => $pagination, + 'breadcrumb' => 'Top Deal' + ]); + } + + #[Route('/shop/hotdeal', name: 'hotdeal')] + public function hotdeal(ManagerRegistry $manager, PaginatorInterface $paginator, Request $request): Response + { + $categories = $manager->getRepository(Category::class)->findAll(); + $brands = $manager->getRepository(Brand::class)->findAll(); + $bestsellers = $manager->getRepository(Product::class)->findBy(['Specification' => 'Hot Deal']); + + $pagination = $paginator->paginate( + $bestsellers, /* query NOT result */ + $request->query->getInt('page', 1), /*page number*/ + 15 /*limit per page*/ + ); + + return $this->render('shop/shop-grid.html.twig', [ + 'categories' => $categories, + 'brands' => $brands, + 'products' => $bestsellers, + 'pagination' => $pagination, + 'breadcrumb' => 'Hot Deal' + ]); + } + + #[Route('/shop/featured', name: 'featured')] + public function featured(ManagerRegistry $manager, PaginatorInterface $paginator, Request $request): Response + { + $categories = $manager->getRepository(Category::class)->findAll(); + $brands = $manager->getRepository(Brand::class)->findAll(); + $bestsellers = $manager->getRepository(Product::class)->findBy(['Specification' => 'Featured']); + + $pagination = $paginator->paginate( + $bestsellers, /* query NOT result */ + $request->query->getInt('page', 1), /*page number*/ + 15 /*limit per page*/ + ); + + return $this->render('shop/shop-grid.html.twig', [ + 'categories' => $categories, + 'brands' => $brands, + 'products' => $bestsellers, + 'pagination' => $pagination, + 'breadcrumb' => 'Featured' + ]); + } +} diff --git a/src/DataFixtures/Category_Product_Fixtures.php b/src/DataFixtures/Category_Product_Fixtures.php new file mode 100644 index 0000000..eee5f03 --- /dev/null +++ b/src/DataFixtures/Category_Product_Fixtures.php @@ -0,0 +1,96 @@ +getRepository(Brand::class)->findAll(); + + $specifications = ["New Arrival","Best Seller", "Hot Deal", "Featured", "Discount", "Top Deal"]; + + // for each category we create a few products + for ($j = 0; $j < count($categories); $j++) { + $cat = new Category(); + $cat->setName($categories[$j]); + $cat->setExcerpt($categories[$j] . ' description... '); + $cat->setParentId(0); // all main categories + $cat->setIcon(""); + $manager->persist($cat); + // create products + for ($i = 0; $i < mt_rand(100, 300); $i++) { + $product = new Product(); + $product->setName('product ' . $i . ' of ' . $cat->getName()); + $product->setExcerpt('product ' . $i . ' of ' . $cat->getName()); + $product->setUser($this->getReference(User_Brand_Fixtures::USER_REFERENCE)); + $product->setCategory($cat); + // set the other fields + $product->setPrice(mt_rand(9.99, 99.99)); + $product->setQuantity(mt_rand(3, 25)); + $product->setDescription("Lorem ipsum vetgt ulu vetsic Lorem ipsum vetgt ulu vetsic"); + $product->setEditedAt(new \DateTime()); + $product->setBrand($brands[mt_rand(0, count($brands)-1)]); + // give a random thumb photo + $path = 'layout/images/product/large-size/' . mt_rand(1, 13) . '.jpg'; + $product->setThumb($path); + // give a random specification + $product->setSpecification($specifications[mt_rand(0, count($specifications) - 1)]); + // sets a random brand + $product->setBrand($brands[mt_rand(0, count($brands) - 1)]); + // add 5 photos to each product + $this->addPhotos($manager, $product); + $manager->persist($product); + // add the product to the brand + + } + } + $manager->flush(); + } + // for each product add 5 photo + public function addPhotos(ObjectManager $om, Product $p) + { + for ($i = 0; $i < 5; $i++) { + $photo = new Photo(); + $photo->setProduct($p); + $photo->setTitle($p->getName()); + $photo->setCaption($p->getName()); + $path = 'layout/images/product/large-size/' . mt_rand(1, 13) . '.jpg'; + $photo->setUrl($path); + $p->addPhoto($photo); + $om->persist($photo); + } + } + + // implnent getGroup + public static function getGroups(): array + { + return ['group2']; + } + + // implements dependencies + public function getDependencies() + { + return array( + User_Brand_Fixtures::class, + ); + } + +} diff --git a/src/DataFixtures/User_Brand_Fixtures.php b/src/DataFixtures/User_Brand_Fixtures.php new file mode 100644 index 0000000..34fc3f5 --- /dev/null +++ b/src/DataFixtures/User_Brand_Fixtures.php @@ -0,0 +1,49 @@ + ['algorithm' => 'auto']]); + // use a password hasher + $hasher = $factory->getPasswordHasher('auto'); + + // create admin user + $admin_user = new User(); + $admin_user->setEmail("admin@myshop.com"); + $admin_user->setPassword($hasher->hash("admin")); + $this->addReference(self::USER_REFERENCE, $admin_user); + $manager->persist($admin_user); + + // Create brands + $brands = ["Asus", "Dell", "HP", "Canon", "Brother", "Samsung", "Microsoft", "Google", "Epson", "Lenovo"]; + for ($i = 0; $i < count($brands); $i++) { + $brand = new Brand(); + $brand->setName($brands[$i]); + $brand->setDescription("brand description..." . $i); + $manager->persist($brand); + } + + $manager->flush(); + } + + // implnent getGroup + public static function getGroups(): array + { + return ['group1']; + } + +} \ No newline at end of file diff --git a/src/Entity/BillingAddress.php b/src/Entity/BillingAddress.php new file mode 100644 index 0000000..9b7df2e --- /dev/null +++ b/src/Entity/BillingAddress.php @@ -0,0 +1,127 @@ +id; + } + + public function getUser(): ?User + { + return $this->User; + } + + public function setUser(User $User): self + { + $this->User = $User; + + return $this; + } + + public function getCivic(): ?string + { + return $this->Civic; + } + + public function setCivic(string $Civic): self + { + $this->Civic = $Civic; + + return $this; + } + + public function getCity(): ?string + { + return $this->City; + } + + public function setCity(string $City): self + { + $this->City = $City; + + return $this; + } + + public function getState(): ?string + { + return $this->State; + } + + public function setState(string $State): self + { + $this->State = $State; + + return $this; + } + + public function getCountry(): ?string + { + return $this->Country; + } + + public function setCountry(string $Country): self + { + $this->Country = $Country; + + return $this; + } + + public function getPostalCode(): ?string + { + return $this->PostalCode; + } + + public function setPostalCode(string $PostalCode): self + { + $this->PostalCode = $PostalCode; + + return $this; + } +} diff --git a/src/Entity/Brand.php b/src/Entity/Brand.php new file mode 100644 index 0000000..009a8dd --- /dev/null +++ b/src/Entity/Brand.php @@ -0,0 +1,100 @@ +Products = new ArrayCollection(); + } + + public function getId(): ?int + { + return $this->id; + } + + public function getName(): ?string + { + return $this->name; + } + + public function setName(string $name): self + { + $this->name = $name; + + return $this; + } + + public function getDescription(): ?string + { + return $this->description; + } + + public function setDescription(?string $description): self + { + $this->description = $description; + + return $this; + } + + /** + * @return Collection|Product[] + */ + public function getProducts(): Collection + { + return $this->Products; + } + + public function addProduct(Product $product): self + { + if (!$this->Products->contains($product)) { + $this->Products[] = $product; + $product->setBrand($this); + } + + return $this; + } + + public function removeProduct(Product $product): self + { + if ($this->Products->removeElement($product)) { + // set the owning side to null (unless already changed) + if ($product->getBrand() === $this) { + $product->setBrand(null); + } + } + + return $this; + } +} diff --git a/src/Entity/Category.php b/src/Entity/Category.php new file mode 100644 index 0000000..6166b0f --- /dev/null +++ b/src/Entity/Category.php @@ -0,0 +1,135 @@ +Products = new ArrayCollection(); + } + + public function getId(): ?int + { + return $this->id; + } + + public function getName(): ?string + { + return $this->Name; + } + + public function setName(string $Name): self + { + $this->Name = $Name; + + return $this; + } + + public function getExcerpt(): ?string + { + return $this->Excerpt; + } + + public function setExcerpt(string $Excerpt): self + { + $this->Excerpt = $Excerpt; + + return $this; + } + + public function getIcon(): ?string + { + return $this->Icon; + } + + public function setIcon(string $Icon): self + { + $this->Icon = $Icon; + + return $this; + } + + public function getParentId(): ?int + { + return $this->ParentId; + } + + public function setParentId(int $ParentId): self + { + $this->ParentId = $ParentId; + + return $this; + } + + + /** + * @return Collection|Product[] + */ + public function getProducts(): Collection + { + return $this->Products; + } + + public function addProduct(Product $product): self + { + if (!$this->Products->contains($product)) { + $this->Products[] = $product; + $product->setCategory($this); + } + + return $this; + } + + public function removeProduct(Product $product): self + { + if ($this->Products->removeElement($product)) { + // set the owning side to null (unless already changed) + if ($product->getCategory() === $this) { + $product->setCategory(null); + } + } + + return $this; + } +} diff --git a/src/Entity/Discount.php b/src/Entity/Discount.php new file mode 100644 index 0000000..84870a3 --- /dev/null +++ b/src/Entity/Discount.php @@ -0,0 +1,93 @@ +id; + } + + public function getProduct(): ?Product + { + return $this->Product; + } + + public function setProduct(Product $Product): self + { + $this->Product = $Product; + + return $this; + } + + public function getRate(): ?float + { + return $this->Rate; + } + + public function setRate(float $Rate): self + { + $this->Rate = $Rate; + + return $this; + } + + public function getStart(): ?\DateTimeInterface + { + return $this->Start; + } + + public function setStart(\DateTimeInterface $Start): self + { + $this->Start = $Start; + + return $this; + } + + public function getEnd(): ?\DateTimeInterface + { + return $this->End; + } + + public function setEnd(\DateTimeInterface $End): self + { + $this->End = $End; + + return $this; + } +} diff --git a/src/Entity/Feedback.php b/src/Entity/Feedback.php new file mode 100644 index 0000000..e65a34a --- /dev/null +++ b/src/Entity/Feedback.php @@ -0,0 +1,96 @@ +id; + } + + public function getEmail(): ?string + { + return $this->email; + } + + public function setEmail(string $email): self + { + $this->email = $email; + + return $this; + } + + public function getMessage(): ?string + { + return $this->Message; + } + + public function setMessage(string $Message): self + { + $this->Message = $Message; + + return $this; + } + + public function getName(): ?string + { + return $this->Name; + } + + public function setName(string $Name): self + { + $this->Name = $Name; + + return $this; + } + + public function getSubject(): ?string + { + return $this->Subject; + } + + public function setSubject(string $Subject): self + { + $this->Subject = $Subject; + + return $this; + } +} diff --git a/src/Entity/Fund.php b/src/Entity/Fund.php new file mode 100644 index 0000000..803c457 --- /dev/null +++ b/src/Entity/Fund.php @@ -0,0 +1,127 @@ +id; + } + + public function getUser(): ?User + { + return $this->User; + } + + public function setUser(User $User): self + { + $this->User = $User; + + return $this; + } + + public function getType(): ?string + { + return $this->Type; + } + + public function setType(string $Type): self + { + $this->Type = $Type; + + return $this; + } + + public function getAccount(): ?string + { + return $this->Account; + } + + public function setAccount(string $Account): self + { + $this->Account = $Account; + + return $this; + } + + public function getName(): ?string + { + return $this->Name; + } + + public function setName(string $Name): self + { + $this->Name = $Name; + + return $this; + } + + public function getExpiration(): ?\DateTimeInterface + { + return $this->Expiration; + } + + public function setExpiration(\DateTimeInterface $Expiration): self + { + $this->Expiration = $Expiration; + + return $this; + } + + public function getCode(): ?string + { + return $this->Code; + } + + public function setCode(string $Code): self + { + $this->Code = $Code; + + return $this; + } +} diff --git a/src/Entity/Order.php b/src/Entity/Order.php new file mode 100644 index 0000000..c101ad6 --- /dev/null +++ b/src/Entity/Order.php @@ -0,0 +1,120 @@ +orderedProducts = new ArrayCollection(); + } + + public function getId(): ?int + { + return $this->id; + } + + public function getUser(): ?User + { + return $this->User; + } + + public function setUser(?User $User): self + { + $this->User = $User; + + return $this; + } + + public function getStatus(): ?string + { + return $this->Status; + } + + public function setStatus(string $Status): self + { + $this->Status = $Status; + + return $this; + } + + public function getEditedAt(): ?\DateTimeInterface + { + return $this->EditedAt; + } + + public function setEditedAt(\DateTimeInterface $EditedAt): self + { + $this->EditedAt = $EditedAt; + + return $this; + } + + /** + * @return Collection|OrderedProduct[] + */ + public function getOrderedProducts(): Collection + { + return $this->orderedProducts; + } + + public function addOrderedProduct(OrderedProduct $orderedProduct): self + { + if (!$this->orderedProducts->contains($orderedProduct)) { + $this->orderedProducts[] = $orderedProduct; + $orderedProduct->setOrder($this); + } + + return $this; + } + + public function removeOrderedProduct(OrderedProduct $orderedProduct): self + { + if ($this->orderedProducts->removeElement($orderedProduct)) { + // set the owning side to null (unless already changed) + if ($orderedProduct->getOrder() === $this) { + $orderedProduct->setOrder(null); + } + } + + return $this; + } +} diff --git a/src/Entity/OrderedProduct.php b/src/Entity/OrderedProduct.php new file mode 100644 index 0000000..f247f63 --- /dev/null +++ b/src/Entity/OrderedProduct.php @@ -0,0 +1,77 @@ +id; + } + + public function getOrder(): ?Order + { + return $this->Order; + } + + public function setOrder(?Order $Order): self + { + $this->Order = $Order; + + return $this; + } + + public function getProduct(): ?Product + { + return $this->Product; + } + + public function setProduct(?Product $Product): self + { + $this->Product = $Product; + + return $this; + } + + public function getQuantity(): ?int + { + return $this->Quantity; + } + + public function setQuantity(int $Quantity): self + { + $this->Quantity = $Quantity; + + return $this; + } +} diff --git a/src/Entity/Payment.php b/src/Entity/Payment.php new file mode 100644 index 0000000..ea52887 --- /dev/null +++ b/src/Entity/Payment.php @@ -0,0 +1,110 @@ +id; + } + + public function getOrder(): ?Order + { + return $this->Order; + } + + public function setOrder(Order $Order): self + { + $this->Order = $Order; + + return $this; + } + + public function getType(): ?string + { + return $this->Type; + } + + public function setType(string $Type): self + { + $this->Type = $Type; + + return $this; + } + + public function getAmount(): ?float + { + return $this->Amount; + } + + public function setAmount(float $Amount): self + { + $this->Amount = $Amount; + + return $this; + } + + public function getStatus(): ?string + { + return $this->Status; + } + + public function setStatus(string $Status): self + { + $this->Status = $Status; + + return $this; + } + + public function getDate(): ?\DateTimeInterface + { + return $this->Date; + } + + public function setDate(\DateTimeInterface $Date): self + { + $this->Date = $Date; + + return $this; + } +} diff --git a/src/Entity/Photo.php b/src/Entity/Photo.php new file mode 100644 index 0000000..bdf3f7c --- /dev/null +++ b/src/Entity/Photo.php @@ -0,0 +1,93 @@ +id; + } + + public function getProduct(): ?Product + { + return $this->Product; + } + + public function setProduct(?Product $Product): self + { + $this->Product = $Product; + + return $this; + } + + public function getTitle(): ?string + { + return $this->Title; + } + + public function setTitle(string $Title): self + { + $this->Title = $Title; + + return $this; + } + + public function getCaption(): ?string + { + return $this->Caption; + } + + public function setCaption(string $Caption): self + { + $this->Caption = $Caption; + + return $this; + } + + public function getUrl(): ?string + { + return $this->Url; + } + + public function setUrl(string $Url): self + { + $this->Url = $Url; + + return $this; + } +} diff --git a/src/Entity/Product.php b/src/Entity/Product.php new file mode 100644 index 0000000..d298f52 --- /dev/null +++ b/src/Entity/Product.php @@ -0,0 +1,330 @@ +photos = new ArrayCollection(); + $this->taxes = new ArrayCollection(); + $this->shippings = new ArrayCollection(); + } + + public function getId(): ?int + { + return $this->id; + } + + public function getCategory(): ?Category + { + return $this->Category; + } + + public function setCategory(?Category $Category): self + { + $this->Category = $Category; + + return $this; + } + + public function getUser(): ?User + { + return $this->User; + } + + public function setUser(?User $User): self + { + $this->User = $User; + + return $this; + } + + public function getName(): ?string + { + return $this->Name; + } + + public function setName(string $Name): self + { + $this->Name = $Name; + + return $this; + } + + public function getExcerpt(): ?string + { + return $this->Excerpt; + } + + public function setExcerpt(string $Excerpt): self + { + $this->Excerpt = $Excerpt; + + return $this; + } + + public function getDescription(): ?string + { + return $this->Description; + } + + public function setDescription(string $Description): self + { + $this->Description = $Description; + + return $this; + } + + public function getQuantity(): ?int + { + return $this->Quantity; + } + + public function setQuantity(int $Quantity): self + { + $this->Quantity = $Quantity; + + return $this; + } + + public function getPrice(): ?float + { + return $this->Price; + } + + public function setPrice(float $Price): self + { + $this->Price = $Price; + + return $this; + } + + public function getEditedAt(): ?\DateTimeInterface + { + return $this->EditedAt; + } + + public function setEditedAt(\DateTimeInterface $EditedAt): self + { + $this->EditedAt = $EditedAt; + + return $this; + } + + /** + * @return Collection|Photo[] + */ + public function getPhotos(): Collection + { + return $this->photos; + } + + public function addPhoto(Photo $photo): self + { + if (!$this->photos->contains($photo)) { + $this->photos[] = $photo; + $photo->setProduct($this); + } + + return $this; + } + + public function removePhoto(Photo $photo): self + { + if ($this->photos->removeElement($photo)) { + // set the owning side to null (unless already changed) + if ($photo->getProduct() === $this) { + $photo->setProduct(null); + } + } + + return $this; + } + + /** + * @return Collection|Tax[] + */ + public function getTaxes(): Collection + { + return $this->taxes; + } + + public function addTax(Tax $tax): self + { + if (!$this->taxes->contains($tax)) { + $this->taxes[] = $tax; + $tax->setProduct($this); + } + + return $this; + } + + public function removeTax(Tax $tax): self + { + if ($this->taxes->removeElement($tax)) { + // set the owning side to null (unless already changed) + if ($tax->getProduct() === $this) { + $tax->setProduct(null); + } + } + + return $this; + } + + /** + * @return Collection|Shipping[] + */ + public function getShippings(): Collection + { + return $this->shippings; + } + + public function addShipping(Shipping $shipping): self + { + if (!$this->shippings->contains($shipping)) { + $this->shippings[] = $shipping; + $shipping->setProduct($this); + } + + return $this; + } + + public function removeShipping(Shipping $shipping): self + { + if ($this->shippings->removeElement($shipping)) { + // set the owning side to null (unless already changed) + if ($shipping->getProduct() === $this) { + $shipping->setProduct(null); + } + } + + return $this; + } + + public function getBrand(): ?Brand + { + return $this->brand; + } + + public function setBrand(?Brand $brand): self + { + $this->brand = $brand; + + return $this; + } + + public function getThumb(): ?string + { + return $this->Thumb; + } + + public function setThumb(string $Thumb): self + { + + $this->Thumb = $Thumb; + + return $this; + } + + public function getSpecification(): ?string + { + return $this->Specification; + } + + public function setSpecification(?string $Specification): self + { + $this->Specification = $Specification; + + return $this; + } +} diff --git a/src/Entity/Role.php b/src/Entity/Role.php new file mode 100644 index 0000000..a603260 --- /dev/null +++ b/src/Entity/Role.php @@ -0,0 +1,55 @@ +userRoles = new ArrayCollection(); + } + + public function getId(): ?int + { + return $this->id; + } + + public function setId(int $Id): self + { + $this->Id = $Id; + + return $this; + } + + public function getName(): ?string + { + return $this->Name; + } + + public function setName(string $Name): self + { + $this->Name = $Name; + + return $this; + } +} diff --git a/src/Entity/Shipment.php b/src/Entity/Shipment.php new file mode 100644 index 0000000..2ccf1fe --- /dev/null +++ b/src/Entity/Shipment.php @@ -0,0 +1,127 @@ +id; + } + + public function getOrder(): ?Order + { + return $this->Order; + } + + public function setOrder(Order $Order): self + { + $this->Order = $Order; + + return $this; + } + + public function getService(): ?string + { + return $this->Service; + } + + public function setService(string $Service): self + { + $this->Service = $Service; + + return $this; + } + + public function getRecipient(): ?string + { + return $this->Recipient; + } + + public function setRecipient(string $Recipient): self + { + $this->Recipient = $Recipient; + + return $this; + } + + public function getAddress(): ?string + { + return $this->Address; + } + + public function setAddress(string $Address): self + { + $this->Address = $Address; + + return $this; + } + + public function getStatus(): ?string + { + return $this->Status; + } + + public function setStatus(string $Status): self + { + $this->Status = $Status; + + return $this; + } + + public function getDeliveryTime(): ?\DateTimeInterface + { + return $this->DeliveryTime; + } + + public function setDeliveryTime(\DateTimeInterface $DeliveryTime): self + { + $this->DeliveryTime = $DeliveryTime; + + return $this; + } +} diff --git a/src/Entity/Shipping.php b/src/Entity/Shipping.php new file mode 100644 index 0000000..bb0edbb --- /dev/null +++ b/src/Entity/Shipping.php @@ -0,0 +1,110 @@ +id; + } + + public function getProduct(): ?Product + { + return $this->Product; + } + + public function setProduct(?Product $Product): self + { + $this->Product = $Product; + + return $this; + } + + public function getService(): ?string + { + return $this->Service; + } + + public function setService(string $Service): self + { + $this->Service = $Service; + + return $this; + } + + public function getRegion(): ?string + { + return $this->Region; + } + + public function setRegion(string $Region): self + { + $this->Region = $Region; + + return $this; + } + + public function getCost(): ?float + { + return $this->Cost; + } + + public function setCost(float $Cost): self + { + $this->Cost = $Cost; + + return $this; + } + + public function getDeliveryDate(): ?\DateTimeInterface + { + return $this->DeliveryDate; + } + + public function setDeliveryDate(\DateTimeInterface $DeliveryDate): self + { + $this->DeliveryDate = $DeliveryDate; + + return $this; + } +} diff --git a/src/Entity/Subscriber.php b/src/Entity/Subscriber.php new file mode 100644 index 0000000..7bbb7b1 --- /dev/null +++ b/src/Entity/Subscriber.php @@ -0,0 +1,47 @@ +id; + } + + public function getEmail(): ?string + { + return $this->email; + } + + public function setEmail(string $email): self + { + $this->email = $email; + + return $this; + } +} diff --git a/src/Entity/Tax.php b/src/Entity/Tax.php new file mode 100644 index 0000000..5695cc7 --- /dev/null +++ b/src/Entity/Tax.php @@ -0,0 +1,76 @@ +id; + } + + public function getProduct(): ?Product + { + return $this->Product; + } + + public function setProduct(?Product $Product): self + { + $this->Product = $Product; + + return $this; + } + + public function getName(): ?string + { + return $this->Name; + } + + public function setName(string $Name): self + { + $this->Name = $Name; + + return $this; + } + + public function getRate(): ?float + { + return $this->Rate; + } + + public function setRate(float $Rate): self + { + $this->Rate = $Rate; + + return $this; + } +} diff --git a/src/Entity/User.php b/src/Entity/User.php new file mode 100644 index 0000000..99eb633 --- /dev/null +++ b/src/Entity/User.php @@ -0,0 +1,284 @@ +userRoles = new ArrayCollection(); + $this->products = new ArrayCollection(); + $this->orders = new ArrayCollection(); + } + + public function getId(): ?int + { + return $this->id; + } + + public function getPhoto(): ?string + { + return $this->Photo; + } + + public function setPhoto(string $Photo): self + { + $this->Photo = $Photo; + + return $this; + } + + public function getFirstName(): ?string + { + return $this->FirstName; + } + + public function setFirstName(string $FirstName): self + { + $this->FirstName = $FirstName; + + return $this; + } + + public function getLastName(): ?string + { + return $this->LastName; + } + + public function setLastName(string $LastName): self + { + $this->LastName = $LastName; + + return $this; + } + + public function getEmail(): ?string + { + return $this->email; + } + + public function setEmail(string $Email): self + { + $this->email = $Email; + + return $this; + } + + public function getPhone(): ?string + { + return $this->Phone; + } + + public function setPhone(string $PhoneNumber): self + { + $this->Phone = $PhoneNumber; + + return $this; + } + + /** + * A visual identifier that represents this user. + * + * @see UserInterface + */ + public function getUserIdentifier(): string + { + return (string) $this->email; + } + + /** + * @deprecated since Symfony 5.3, use getUserIdentifier instead + */ + public function getUsername(): string + { + return (string) $this->email; + } + + /** + * @see UserInterface + */ + public function getRoles(): array + { + $roles = $this->roles; + // guarantee every user at least has ROLE_USER + $roles[] = 'ROLE_USER'; + + return array_unique($roles); + } + + public function setRoles(array $roles): self + { + $this->roles = $roles; + + return $this; + } + + /** + * @see PasswordAuthenticatedUserInterface + */ + public function getPassword(): string + { + return $this->password; + } + + public function setPassword(string $password): self + { + $this->password = $password; + + return $this; + } + + /** + * Returning a salt is only needed, if you are not using a modern + * hashing algorithm (e.g. bcrypt or sodium) in your security.yaml. + * + * @see UserInterface + */ + public function getSalt(): ?string + { + return null; + } + + /** + * @see UserInterface + */ + public function eraseCredentials() + { + // If you store any temporary, sensitive data on the user, clear it here + // $this->plainPassword = null; + } + + /** + * @return Collection|UserRole[] + */ + public function getUserRoles(): Collection + { + return $this->userRoles; + } + + public function addUserRole(UserRole $userRole): self + { + if (!$this->userRoles->contains($userRole)) { + $this->userRoles[] = $userRole; + $userRole->setUser($this); + } + + return $this; + } + + public function removeUserRole(UserRole $userRole): self + { + if ($this->userRoles->removeElement($userRole)) { + // set the owning side to null (unless already changed) + if ($userRole->getUser() === $this) { + $userRole->setUser(null); + } + } + + return $this; + } + + /** + * @return Collection|Product[] + */ + public function getProducts(): Collection + { + return $this->products; + } + + public function addProduct(Product $product): self + { + if (!$this->products->contains($product)) { + $this->products[] = $product; + $product->setUser($this); + } + + return $this; + } + + public function removeProduct(Product $product): self + { + if ($this->products->removeElement($product)) { + // set the owning side to null (unless already changed) + if ($product->getUser() === $this) { + $product->setUser(null); + } + } + + return $this; + } +} diff --git a/src/Entity/UserRole.php b/src/Entity/UserRole.php new file mode 100644 index 0000000..ef256b8 --- /dev/null +++ b/src/Entity/UserRole.php @@ -0,0 +1,60 @@ +id; + } + + public function getUser(): ?User + { + return $this->User; + } + + public function setUser(?User $User): self + { + $this->User = $User; + + return $this; + } + + public function getRole(): ?Role + { + return $this->RoleId; + } + + public function setRole(?Role $Role): self + { + $this->Role = $Role; + + return $this; + } +} diff --git a/src/Repository/BillingAddressRepository.php b/src/Repository/BillingAddressRepository.php new file mode 100644 index 0000000..fa7e569 --- /dev/null +++ b/src/Repository/BillingAddressRepository.php @@ -0,0 +1,50 @@ +createQueryBuilder('b') + ->andWhere('b.exampleField = :val') + ->setParameter('val', $value) + ->orderBy('b.id', 'ASC') + ->setMaxResults(10) + ->getQuery() + ->getResult() + ; + } + */ + + /* + public function findOneBySomeField($value): ?BillingAddress + { + return $this->createQueryBuilder('b') + ->andWhere('b.exampleField = :val') + ->setParameter('val', $value) + ->getQuery() + ->getOneOrNullResult() + ; + } + */ +} diff --git a/src/Repository/BrandRepository.php b/src/Repository/BrandRepository.php new file mode 100644 index 0000000..7d821ac --- /dev/null +++ b/src/Repository/BrandRepository.php @@ -0,0 +1,50 @@ +createQueryBuilder('b') + ->andWhere('b.exampleField = :val') + ->setParameter('val', $value) + ->orderBy('b.id', 'ASC') + ->setMaxResults(10) + ->getQuery() + ->getResult() + ; + } + */ + + /* + public function findOneBySomeField($value): ?Brand + { + return $this->createQueryBuilder('b') + ->andWhere('b.exampleField = :val') + ->setParameter('val', $value) + ->getQuery() + ->getOneOrNullResult() + ; + } + */ +} diff --git a/src/Repository/CategoryRepository.php b/src/Repository/CategoryRepository.php new file mode 100644 index 0000000..a12b228 --- /dev/null +++ b/src/Repository/CategoryRepository.php @@ -0,0 +1,50 @@ +createQueryBuilder('c') + ->andWhere('c.exampleField = :val') + ->setParameter('val', $value) + ->orderBy('c.id', 'ASC') + ->setMaxResults(10) + ->getQuery() + ->getResult() + ; + } + */ + + /* + public function findOneBySomeField($value): ?Category + { + return $this->createQueryBuilder('c') + ->andWhere('c.exampleField = :val') + ->setParameter('val', $value) + ->getQuery() + ->getOneOrNullResult() + ; + } + */ +} diff --git a/src/Repository/DiscountRepository.php b/src/Repository/DiscountRepository.php new file mode 100644 index 0000000..69a85cb --- /dev/null +++ b/src/Repository/DiscountRepository.php @@ -0,0 +1,50 @@ +createQueryBuilder('d') + ->andWhere('d.exampleField = :val') + ->setParameter('val', $value) + ->orderBy('d.id', 'ASC') + ->setMaxResults(10) + ->getQuery() + ->getResult() + ; + } + */ + + /* + public function findOneBySomeField($value): ?Discount + { + return $this->createQueryBuilder('d') + ->andWhere('d.exampleField = :val') + ->setParameter('val', $value) + ->getQuery() + ->getOneOrNullResult() + ; + } + */ +} diff --git a/src/Repository/FeedbackRepository.php b/src/Repository/FeedbackRepository.php new file mode 100644 index 0000000..524e268 --- /dev/null +++ b/src/Repository/FeedbackRepository.php @@ -0,0 +1,66 @@ + + * + * @method Feedback|null find($id, $lockMode = null, $lockVersion = null) + * @method Feedback|null findOneBy(array $criteria, array $orderBy = null) + * @method Feedback[] findAll() + * @method Feedback[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null) + */ +class FeedbackRepository extends ServiceEntityRepository +{ + public function __construct(ManagerRegistry $registry) + { + parent::__construct($registry, Feedback::class); + } + + public function add(Feedback $entity, bool $flush = false): void + { + $this->getEntityManager()->persist($entity); + + if ($flush) { + $this->getEntityManager()->flush(); + } + } + + public function remove(Feedback $entity, bool $flush = false): void + { + $this->getEntityManager()->remove($entity); + + if ($flush) { + $this->getEntityManager()->flush(); + } + } + +// /** +// * @return Feedback[] Returns an array of Feedback objects +// */ +// public function findByExampleField($value): array +// { +// return $this->createQueryBuilder('f') +// ->andWhere('f.exampleField = :val') +// ->setParameter('val', $value) +// ->orderBy('f.id', 'ASC') +// ->setMaxResults(10) +// ->getQuery() +// ->getResult() +// ; +// } + +// public function findOneBySomeField($value): ?Feedback +// { +// return $this->createQueryBuilder('f') +// ->andWhere('f.exampleField = :val') +// ->setParameter('val', $value) +// ->getQuery() +// ->getOneOrNullResult() +// ; +// } +} diff --git a/src/Repository/FundRepository.php b/src/Repository/FundRepository.php new file mode 100644 index 0000000..8e4be32 --- /dev/null +++ b/src/Repository/FundRepository.php @@ -0,0 +1,50 @@ +createQueryBuilder('f') + ->andWhere('f.exampleField = :val') + ->setParameter('val', $value) + ->orderBy('f.id', 'ASC') + ->setMaxResults(10) + ->getQuery() + ->getResult() + ; + } + */ + + /* + public function findOneBySomeField($value): ?Fund + { + return $this->createQueryBuilder('f') + ->andWhere('f.exampleField = :val') + ->setParameter('val', $value) + ->getQuery() + ->getOneOrNullResult() + ; + } + */ +} diff --git a/src/Repository/OrderRepository.php b/src/Repository/OrderRepository.php new file mode 100644 index 0000000..beb69bf --- /dev/null +++ b/src/Repository/OrderRepository.php @@ -0,0 +1,50 @@ +createQueryBuilder('o') + ->andWhere('o.exampleField = :val') + ->setParameter('val', $value) + ->orderBy('o.id', 'ASC') + ->setMaxResults(10) + ->getQuery() + ->getResult() + ; + } + */ + + /* + public function findOneBySomeField($value): ?Order + { + return $this->createQueryBuilder('o') + ->andWhere('o.exampleField = :val') + ->setParameter('val', $value) + ->getQuery() + ->getOneOrNullResult() + ; + } + */ +} diff --git a/src/Repository/OrderedProductRepository.php b/src/Repository/OrderedProductRepository.php new file mode 100644 index 0000000..b0c0912 --- /dev/null +++ b/src/Repository/OrderedProductRepository.php @@ -0,0 +1,50 @@ +createQueryBuilder('o') + ->andWhere('o.exampleField = :val') + ->setParameter('val', $value) + ->orderBy('o.id', 'ASC') + ->setMaxResults(10) + ->getQuery() + ->getResult() + ; + } + */ + + /* + public function findOneBySomeField($value): ?OrderedProduct + { + return $this->createQueryBuilder('o') + ->andWhere('o.exampleField = :val') + ->setParameter('val', $value) + ->getQuery() + ->getOneOrNullResult() + ; + } + */ +} diff --git a/src/Repository/PaymentRepository.php b/src/Repository/PaymentRepository.php new file mode 100644 index 0000000..6876a81 --- /dev/null +++ b/src/Repository/PaymentRepository.php @@ -0,0 +1,50 @@ +createQueryBuilder('p') + ->andWhere('p.exampleField = :val') + ->setParameter('val', $value) + ->orderBy('p.id', 'ASC') + ->setMaxResults(10) + ->getQuery() + ->getResult() + ; + } + */ + + /* + public function findOneBySomeField($value): ?Payment + { + return $this->createQueryBuilder('p') + ->andWhere('p.exampleField = :val') + ->setParameter('val', $value) + ->getQuery() + ->getOneOrNullResult() + ; + } + */ +} diff --git a/src/Repository/PhotoRepository.php b/src/Repository/PhotoRepository.php new file mode 100644 index 0000000..5049df2 --- /dev/null +++ b/src/Repository/PhotoRepository.php @@ -0,0 +1,61 @@ +createQueryBuilder('p') + ->andWhere('p.exampleField = :val') + ->setParameter('val', $value) + ->orderBy('p.id', 'ASC') + ->setMaxResults(10) + ->getQuery() + ->getResult() + ; + } + */ + /** + * @return Photo[] Returns an array of Photo objects + */ + public function findByProductId($value) + { + return $this->createQueryBuilder('p') + ->andWhere('p.Product = :val') + ->setParameter('val', $value) + ->getQuery() + ->getResult(); + } + + /* + public function findOneBySomeField($value): ?Photo + { + return $this->createQueryBuilder('p') + ->andWhere('p.exampleField = :val') + ->setParameter('val', $value) + ->getQuery() + ->getOneOrNullResult() + ; + } + */ +} diff --git a/src/Repository/ProductRepository.php b/src/Repository/ProductRepository.php new file mode 100644 index 0000000..c34bb70 --- /dev/null +++ b/src/Repository/ProductRepository.php @@ -0,0 +1,50 @@ +createQueryBuilder('p') + ->andWhere('p.exampleField = :val') + ->setParameter('val', $value) + ->orderBy('p.id', 'ASC') + ->setMaxResults(10) + ->getQuery() + ->getResult() + ; + } + */ + + /* + public function findOneBySomeField($value): ?Product + { + return $this->createQueryBuilder('p') + ->andWhere('p.exampleField = :val') + ->setParameter('val', $value) + ->getQuery() + ->getOneOrNullResult() + ; + } + */ +} diff --git a/src/Repository/RoleRepository.php b/src/Repository/RoleRepository.php new file mode 100644 index 0000000..ab32e60 --- /dev/null +++ b/src/Repository/RoleRepository.php @@ -0,0 +1,50 @@ +createQueryBuilder('r') + ->andWhere('r.exampleField = :val') + ->setParameter('val', $value) + ->orderBy('r.id', 'ASC') + ->setMaxResults(10) + ->getQuery() + ->getResult() + ; + } + */ + + /* + public function findOneBySomeField($value): ?Role + { + return $this->createQueryBuilder('r') + ->andWhere('r.exampleField = :val') + ->setParameter('val', $value) + ->getQuery() + ->getOneOrNullResult() + ; + } + */ +} diff --git a/src/Repository/ShipmentRepository.php b/src/Repository/ShipmentRepository.php new file mode 100644 index 0000000..ccf29de --- /dev/null +++ b/src/Repository/ShipmentRepository.php @@ -0,0 +1,50 @@ +createQueryBuilder('s') + ->andWhere('s.exampleField = :val') + ->setParameter('val', $value) + ->orderBy('s.id', 'ASC') + ->setMaxResults(10) + ->getQuery() + ->getResult() + ; + } + */ + + /* + public function findOneBySomeField($value): ?Shipment + { + return $this->createQueryBuilder('s') + ->andWhere('s.exampleField = :val') + ->setParameter('val', $value) + ->getQuery() + ->getOneOrNullResult() + ; + } + */ +} diff --git a/src/Repository/ShippingRepository.php b/src/Repository/ShippingRepository.php new file mode 100644 index 0000000..cc480a2 --- /dev/null +++ b/src/Repository/ShippingRepository.php @@ -0,0 +1,50 @@ +createQueryBuilder('s') + ->andWhere('s.exampleField = :val') + ->setParameter('val', $value) + ->orderBy('s.id', 'ASC') + ->setMaxResults(10) + ->getQuery() + ->getResult() + ; + } + */ + + /* + public function findOneBySomeField($value): ?Shipping + { + return $this->createQueryBuilder('s') + ->andWhere('s.exampleField = :val') + ->setParameter('val', $value) + ->getQuery() + ->getOneOrNullResult() + ; + } + */ +} diff --git a/src/Repository/SubscriberRepository.php b/src/Repository/SubscriberRepository.php new file mode 100644 index 0000000..59ebfd8 --- /dev/null +++ b/src/Repository/SubscriberRepository.php @@ -0,0 +1,66 @@ + + * + * @method Subscriber|null find($id, $lockMode = null, $lockVersion = null) + * @method Subscriber|null findOneBy(array $criteria, array $orderBy = null) + * @method Subscriber[] findAll() + * @method Subscriber[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null) + */ +class SubscriberRepository extends ServiceEntityRepository +{ + public function __construct(ManagerRegistry $registry) + { + parent::__construct($registry, Subscriber::class); + } + + public function add(Subscriber $entity, bool $flush = false): void + { + $this->getEntityManager()->persist($entity); + + if ($flush) { + $this->getEntityManager()->flush(); + } + } + + public function remove(Subscriber $entity, bool $flush = false): void + { + $this->getEntityManager()->remove($entity); + + if ($flush) { + $this->getEntityManager()->flush(); + } + } + +// /** +// * @return Subscriber[] Returns an array of Subscriber objects +// */ +// public function findByExampleField($value): array +// { +// return $this->createQueryBuilder('s') +// ->andWhere('s.exampleField = :val') +// ->setParameter('val', $value) +// ->orderBy('s.id', 'ASC') +// ->setMaxResults(10) +// ->getQuery() +// ->getResult() +// ; +// } + +// public function findOneBySomeField($value): ?Subscriber +// { +// return $this->createQueryBuilder('s') +// ->andWhere('s.exampleField = :val') +// ->setParameter('val', $value) +// ->getQuery() +// ->getOneOrNullResult() +// ; +// } +} diff --git a/src/Repository/TaxRepository.php b/src/Repository/TaxRepository.php new file mode 100644 index 0000000..af08836 --- /dev/null +++ b/src/Repository/TaxRepository.php @@ -0,0 +1,50 @@ +createQueryBuilder('t') + ->andWhere('t.exampleField = :val') + ->setParameter('val', $value) + ->orderBy('t.id', 'ASC') + ->setMaxResults(10) + ->getQuery() + ->getResult() + ; + } + */ + + /* + public function findOneBySomeField($value): ?Tax + { + return $this->createQueryBuilder('t') + ->andWhere('t.exampleField = :val') + ->setParameter('val', $value) + ->getQuery() + ->getOneOrNullResult() + ; + } + */ +} diff --git a/src/Repository/UserRepository.php b/src/Repository/UserRepository.php new file mode 100644 index 0000000..5eaa8c5 --- /dev/null +++ b/src/Repository/UserRepository.php @@ -0,0 +1,67 @@ +setPassword($newHashedPassword); + $this->_em->persist($user); + $this->_em->flush(); + } + + // /** + // * @return User[] Returns an array of User objects + // */ + /* + public function findByExampleField($value) + { + return $this->createQueryBuilder('u') + ->andWhere('u.exampleField = :val') + ->setParameter('val', $value) + ->orderBy('u.id', 'ASC') + ->setMaxResults(10) + ->getQuery() + ->getResult() + ; + } + */ + + /* + public function findOneBySomeField($value): ?User + { + return $this->createQueryBuilder('u') + ->andWhere('u.exampleField = :val') + ->setParameter('val', $value) + ->getQuery() + ->getOneOrNullResult() + ; + } + */ +} diff --git a/src/Repository/UserRoleRepository.php b/src/Repository/UserRoleRepository.php new file mode 100644 index 0000000..3ade481 --- /dev/null +++ b/src/Repository/UserRoleRepository.php @@ -0,0 +1,50 @@ +createQueryBuilder('u') + ->andWhere('u.exampleField = :val') + ->setParameter('val', $value) + ->orderBy('u.id', 'ASC') + ->setMaxResults(10) + ->getQuery() + ->getResult() + ; + } + */ + + /* + public function findOneBySomeField($value): ?UserRole + { + return $this->createQueryBuilder('u') + ->andWhere('u.exampleField = :val') + ->setParameter('val', $value) + ->getQuery() + ->getOneOrNullResult() + ; + } + */ +} diff --git a/src/Security/AppUserAuthenticator.php b/src/Security/AppUserAuthenticator.php new file mode 100644 index 0000000..d03f4af --- /dev/null +++ b/src/Security/AppUserAuthenticator.php @@ -0,0 +1,62 @@ +urlGenerator = $urlGenerator; + } + + public function authenticate(Request $request): PassportInterface + { + $email = $request->request->get('email', ''); + + $request->getSession()->set(Security::LAST_USERNAME, $email); + + return new Passport( + new UserBadge($email), + new PasswordCredentials($request->request->get('password', '')), + [ + new CsrfTokenBadge('authenticate', $request->get('_csrf_token')), + ] + ); + } + + public function onAuthenticationSuccess(Request $request, TokenInterface $token, string $firewallName): ?Response + { + if ($targetPath = $this->getTargetPath($request->getSession(), $firewallName)) { + return new RedirectResponse('home'); + } + + // Redirect To home page + return new RedirectResponse($this->urlGenerator->generate('home')); + //throw new \Exception('TODO: provide a valid redirect inside '.__FILE__); + } + + protected function getLoginUrl(Request $request): string + { + return $this->urlGenerator->generate(self::LOGIN_ROUTE); + } +} diff --git a/src/Service/CartService.php b/src/Service/CartService.php new file mode 100644 index 0000000..4843398 --- /dev/null +++ b/src/Service/CartService.php @@ -0,0 +1,69 @@ +get('cart', []); + // Add products to the Cart + $productsCart = []; + // if not empty + if($cart){ + foreach ($cart as $id => $quantity) { + $productsCart[] = [ + 'product' => $productRepo->find($id), + 'quantity' => $quantity, + ]; + } + } + return $productsCart; + } + +public function Add(int $id, SessionInterface $session) +{ + $cart = $session->get('cart', []); + // find the product to add + if (!empty($cart[$id])) { + $cart[$id]++; + } else { + $cart[$id] = 1; + } + $session->Set('cart', $cart); + return $cart; +} +public function Remove(int $id, SessionInterface $session) +{ + $cart = $session->get('cart', []); + // remoce the product if exist + if (!empty($cart[$id])) { + unset($cart[$id]); + } + $session->Set('cart', $cart); +} +public function Empty(SessionInterface $session) +{ + $cart = $session->get('cart', []); + + unset($cart); + $session->Set('cart', null); +} +public function Total(SessionInterface $session, ProductRepository $productRepo) +{ + $cart = $session->get('cart', []); + // Add products to the Cart + $total = 0; + // if not empty + if ($cart){ + foreach ($cart as $id => $quantity) { + $subtotal = $productRepo->find($id)->getPrice() * $quantity; + $total = (float)($total + $subtotal); + } + } + return $total; +} +} \ No newline at end of file diff --git a/src/Service/CheckoutService.php b/src/Service/CheckoutService.php new file mode 100644 index 0000000..006d083 --- /dev/null +++ b/src/Service/CheckoutService.php @@ -0,0 +1,111 @@ +manager = $mr; + } + // This service allow us to : + // 1- Create an order + // 2- Update an order --> paid + // 3- Add record in payments + // 4- Update product inventory + // 5- List all orders, payments + + public function getManager() { + return $this->manager; + } + + public function orderList(OrderRepository $orderRepo): array + { + return $orderRepo->findAll(); + } + + public function orderAdd(User $user, $products) + { + // create order for each product in line items + $order = new Order(); + // add ordered products + foreach ($products as $item) { + $orderedProduct = new OrderedProduct(); + $orderedProduct->setProduct($item['product']); + $orderedProduct->setQuantity($item['quantity']); + $orderedProduct->setOrder($order); + $order->addOrderedProduct($orderedProduct); + } + // set order proprieties + $order->setUser($user); + $order->setStatus("Pending"); // 3 possible status : pending, paid or canceled + $order->setEditedAt(new DateTime()); + // save to db + $this->manager->getManager()->persist($order); + $this->manager->getManager()->flush(); + // dd($order); + return($order); + } + public function orderRemove(int $id) + { + $order = $this->manager->getRepository(Order::class)->find($id); + $this->manager->getManager()->remove($order); + $this->manager->getManager()->flush(); + } + public function orderUpdate(int $id, string $status) + { + $order = $this->manager->getRepository(Order::class)->find($id); + $order->setStatus($status); + $this->manager->getManager()->persist($order); + $this->manager->getManager()->flush(); + } + public function paymentList(PaymentRepository $paymentRepo) + { + return $paymentRepo->findAll(); + } + public function paymentAdd(Order $order, string $type, float $amount) + { + // create a payment according to call parameters + $payment = new Payment(); + + $payment->setOrder($order); + $payment->setType($type); + $payment->setAmount($amount); + $payment->setStatus("Pending"); // 3 possible status : pending, paid or canceled + $payment->setDate(new DateTime()); + // save to db + $this->manager->getManager()->persist($payment); + $this->manager->getManager()->flush(); + // dd($order); + return ($payment); + + } + + public function paymentRemove(int $id) + { + $payment = $this->manager->getRepository(Payment::class)->find($id); + $this->manager->getManager()->remove($payment); + $this->manager->getManager()->flush(); + } + public function paymentUpdate(int $orderid, string $status) + { + // find the record to update + $payment = $this->manager->getRepository(Payment::class)->findBy(['Order' => $orderid]); + // only one record should be retrieved + $payment[0]->setStatus($status); + $this->manager->getManager()->persist($payment[0]); + $this->manager->getManager()->flush(); + + } +} diff --git a/src/Service/MailerService.php b/src/Service/MailerService.php new file mode 100644 index 0000000..e8d4a2f --- /dev/null +++ b/src/Service/MailerService.php @@ -0,0 +1,86 @@ +mailer = $sender; + } + + function getMailer() { + return $this->mailer; + } + + // sending email with text and html + public function emailSend(string $email) + { + $mail = (new Email()) + ->from('bmaconsultingnet@gmail.com') + ->to($email) + //->cc('cc@example.com') + //->bcc('bcc@example.com') + //->replyTo('fabien@example.com') + //->priority(Email::PRIORITY_HIGH) + ->subject('Order Confirmation') + ->text('Sending emails is fun again!') + ->html('

See Twig integration for better HTML integration!

'); + + $this->mailer->send($mail); + } + + // sending mail with twig templating + public function twigEmailSend(int $type, string $email, string $fullname, array $items) + { + switch ($type) { + case 1 : // after registration + $subject = "Thanks for your registration!"; + $template = "emails/registration.html.twig"; + break; + case 2: // after payment + $subject = "Thanks for buying our products!"; + $template = "emails/confirmation.html.twig"; + break; + case 3: // contact page + $subject = "Thanks for your feedback"; + $template = "emails/contact.html.twig"; + break; + case 4: // contact page + $subject = "Thanks for your newsletter subsription"; + $template = "emails/newsletter.html.twig"; + break; + default: + break; + } + $mail = (new TemplatedEmail()) + ->from('bmaconsultingnet@gmail.com') + ->to($email) + ->subject($subject) + + // path of the Twig template to render + ->htmlTemplate($template) + + // pass variables (name => value) to the template + ->context([ + // 'expiration_date' => new \DateTime('+7 days'), + 'name' => $fullname, + 'items' => $items + ]); + + $this->getMailer()->send($mail); + } +} diff --git a/symfony.lock b/symfony.lock index be44ef5..567937d 100644 --- a/symfony.lock +++ b/symfony.lock @@ -23,6 +23,9 @@ "doctrine/common": { "version": "3.1.2" }, + "doctrine/data-fixtures": { + "version": "1.5.0" + }, "doctrine/dbal": { "version": "2.13.2" }, @@ -45,6 +48,18 @@ "src/Repository/.gitignore" ] }, + "doctrine/doctrine-fixtures-bundle": { + "version": "3.0", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "3.0", + "ref": "e5b542d4ef47d8a003c91beb35650c76907f7e53" + }, + "files": [ + "src/DataFixtures/AppFixtures.php" + ] + }, "doctrine/doctrine-migrations-bundle": { "version": "3.1", "recipe": { @@ -82,12 +97,27 @@ "doctrine/sql-formatter": { "version": "1.1.1" }, + "easycorp/easyadmin-bundle": { + "version": "4.9", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "3.0", + "ref": "b131e6cbfe1b898a508987851963fff485986285" + } + }, "egulias/email-validator": { "version": "3.1.1" }, "friendsofphp/proxy-manager-lts": { "version": "v1.0.5" }, + "knplabs/knp-components": { + "version": "v3.3.0" + }, + "knplabs/knp-paginator-bundle": { + "version": "v5.8.0" + }, "laminas/laminas-code": { "version": "4.4.2" }, @@ -334,6 +364,15 @@ "src/Kernel.php" ] }, + "symfony/google-mailer": { + "version": "5.4", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "4.4", + "ref": "f8fd4ddb9b477510f8f4bce2b9c054ab428c0120" + } + }, "symfony/http-client": { "version": "v5.3.4" }, @@ -442,15 +481,9 @@ "symfony/polyfill-mbstring": { "version": "v1.23.1" }, - "symfony/polyfill-php73": { - "version": "v1.23.0" - }, "symfony/polyfill-php80": { "version": "v1.23.1" }, - "symfony/polyfill-php81": { - "version": "v1.23.0" - }, "symfony/process": { "version": "v5.3.4" }, @@ -500,9 +533,6 @@ "symfony/security-csrf": { "version": "v5.3.4" }, - "symfony/security-guard": { - "version": "v5.3.4" - }, "symfony/security-http": { "version": "v5.3.6" }, diff --git a/templates/account/login.html.twig b/templates/account/login.html.twig new file mode 100644 index 0000000..208574f --- /dev/null +++ b/templates/account/login.html.twig @@ -0,0 +1,72 @@ +{% extends './base.html.twig' %} + +{% block main %} + +
+
+
+ +
+
+ + + +
+
+ + + +
+
+ +
+ +
+ {% if app.user %} +
+ You are logged in as + {{ app.user.email }}, + Logout +
+ {% endif %} + {% if error %} +
{{ error.messageKey|trans(error.messageData, 'security') }}
+ {% endif %} + +
+
+
+
+
+ +{% endblock %} diff --git a/templates/account/profile.html.twig b/templates/account/profile.html.twig new file mode 100644 index 0000000..164140d --- /dev/null +++ b/templates/account/profile.html.twig @@ -0,0 +1,52 @@ +{% extends './base.html.twig' %} + +{% block main %} + +
+
+
+
+
+ +
+
+
+
+
+ +{% endblock %} diff --git a/templates/account/register.html.twig b/templates/account/register.html.twig new file mode 100644 index 0000000..f4b8979 --- /dev/null +++ b/templates/account/register.html.twig @@ -0,0 +1,59 @@ +{% extends './base.html.twig' %} + +{% block main %} + +
+
+
+ +
+
+ + + +
+
+ + + +
+
+ +
+
+ +
+
+
+
+
+ +{% endblock %} diff --git a/templates/account/validation.html.twig b/templates/account/validation.html.twig new file mode 100644 index 0000000..1c7f871 --- /dev/null +++ b/templates/account/validation.html.twig @@ -0,0 +1,24 @@ +{% extends 'base.html.twig' %} +{% block main %} +
+ {% if valid %} +
+

Good news

+

Thanks for signing up. You can login now and start buying... + + Login Now + +

+
+ {% else %} +
+

Oops

+

The data is not validated. Something went wrong with the form fields. Enter a valid email and retype the same password... + + Register again + +

+
+ {% endif %} +
+{% endblock %} \ No newline at end of file diff --git a/templates/base.html.twig b/templates/base.html.twig index 3756a9f..f54d922 100644 --- a/templates/base.html.twig +++ b/templates/base.html.twig @@ -46,7 +46,6 @@ - @@ -57,95 +56,10 @@ rel="stylesheet" href="{{asset('layout/css/responsive.css')}}"> + {% block header %} - -
-
-
- -
-
- -
-
- - -
-
- -
-
- -
-
-
-
@@ -166,155 +80,14 @@
- - -
- -
-
@@ -332,74 +105,71 @@
@@ -407,448 +177,246 @@ - - - -
-
-
-
+
+ + +
+
+
+
+ +{% endblock %} +{% block main %} +{% endblock %} +{% block footer %} + +