diff --git a/.editorconfig b/.editorconfig
index 12bcb27e4ee7bbca7f74423a87d205926d2ad1d2..686c443ceca7e4aaccd384ba6b36afe43337104f 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -13,5 +13,5 @@ charset = utf-8
 trim_trailing_whitespace = true
 insert_final_newline = true
 
-[{composer.json,composer.lock}]
+[composer.{json,lock}]
 indent_size = 4
diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000000000000000000000000000000000000..a37894e8e43bf14c2e77e71c713fa0c4f714be38
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,61 @@
+# Drupal git normalization
+# @see https://www.kernel.org/pub/software/scm/git/docs/gitattributes.html
+# @see https://www.drupal.org/node/1542048
+
+# Normally these settings would be done with macro attributes for improved
+# readability and easier maintenance. However macros can only be defined at the
+# repository root directory. Drupal avoids making any assumptions about where it
+# is installed.
+
+# Define text file attributes.
+# - Treat them as text.
+# - Ensure no CRLF line-endings, neither on checkout nor on checkin.
+# - Detect whitespace errors.
+#   - Exposed by default in `git diff --color` on the CLI.
+#   - Validate with `git diff --check`.
+#   - Deny applying with `git apply --whitespace=error-all`.
+#   - Fix automatically with `git apply --whitespace=fix`.
+
+*.config  text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
+*.css     text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
+*.dist    text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
+*.engine  text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php
+*.html    text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=html
+*.inc     text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php
+*.install text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php
+*.js      text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
+*.json    text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
+*.lock    text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
+*.map     text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
+*.md      text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
+*.module  text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php
+*.php     text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php
+*.po      text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
+*.profile text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php
+*.script  text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
+*.sh      text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php
+*.sql     text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
+*.svg     text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
+*.theme   text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php
+*.twig    text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
+*.txt     text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
+*.xml     text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
+*.yml     text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
+
+# Define binary file attributes.
+# - Do not treat them as text.
+# - Include binary diff in patches instead of "binary files differ."
+*.eot     -text diff
+*.exe     -text diff
+*.gif     -text diff
+*.gz      -text diff
+*.ico     -text diff
+*.jpeg    -text diff
+*.jpg     -text diff
+*.otf     -text diff
+*.phar    -text diff
+*.png     -text diff
+*.svgz    -text diff
+*.ttf     -text diff
+*.woff    -text diff
+*.woff2   -text diff
diff --git a/composer.json b/composer.json
index 1360db06d272c622192a2e216a9ad172fe5a1d0f..2348c7adb57e7b77fc6737d9f7b91a2a48600f63 100644
--- a/composer.json
+++ b/composer.json
@@ -86,7 +86,6 @@
         "desandro/imagesloaded": "4.1.4",
         "desandro/masonry": "4.2",
         "dimsemenov/magnific-popup": "1.1",
-        "drupal-composer/drupal-scaffold": "2.5.4",
         "drupal/address": "1.1",
         "drupal/addtocalendar": "3.2",
         "drupal/admin_toolbar": "2.4",
@@ -106,6 +105,7 @@
         "drupal/config_update": "1.5",
         "drupal/console": "1.9.7",
         "drupal/content_access": "1.0-alpha1",
+        "drupal/core-composer-scaffold": "^9.0",
         "drupal/core-recommended": "8.9.10",
         "drupal/crop": "2.1",
         "drupal/ctools": "3.4",
@@ -192,7 +192,6 @@
         "gdsmith/jquery.easing": "1.4.1",
         "oomphinc/composer-installers-extender": "2.0",
         "pantheon-systems/quicksilver-pushback": "1.0.1",
-        "rvtraveller/qs-composer-installer": "1.1",
         "zaporylie/composer-drupal-optimizations": "1.1"
     },
     "require-dev": {},
@@ -255,18 +254,19 @@
         },
         "drupal-scaffold": {
             "source": "https://raw.githubusercontent.com/pantheon-systems/drops-8-scaffolding/{version}/{path}",
-            "includes": [
-                "sites/default/default.services.pantheon.preproduction.yml",
-                "sites/default/settings.pantheon.php"
-            ],
-            "excludes": [
-                ".csslintrc",
-                ".editorconfig",
-                ".eslintignore",
-                ".eslintrc.json",
-                ".htaccess",
-                "web.config"
-            ]
+            "locations": {
+              "web-root": "web/"
+            },
+            "file-mapping": {
+              "[web-root]/INSTALL.txt": false,
+              "[web-root]/README.txt": false,
+              "[web-root]/example.gitignore": false,
+              "[web-root]/modules/README.txt": false,
+              "[web-root]/profiles/README.txt": false,
+              "[web-root]/sites/README.txt": false,
+              "[web-root]/themes/README.txt": false,
+              "[web-root]/web.config": false
+            }
         },
         "patches": {
             "drupal/core": {
diff --git a/composer.lock b/composer.lock
index 63649e18a420f79f987d62e8f8c438fd22125c3c..49f64243a65fc66304d8f6760c5e08a60698d75e 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": "d70eba8d9113b670ca935392605877f5",
+    "content-hash": "df313a5863c9258df18719ef6cfe21e0",
     "packages": [
         {
             "name": "alchemy/zippy",
@@ -1970,51 +1970,6 @@
             ],
             "time": "2019-06-08T11:03:04+00:00"
         },
-        {
-            "name": "drupal-composer/drupal-scaffold",
-            "version": "2.5.4",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/drupal-composer/drupal-scaffold.git",
-                "reference": "fc6bf4ceecb5d47327f54d48d4d4f67b17da956d"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/drupal-composer/drupal-scaffold/zipball/fc6bf4ceecb5d47327f54d48d4d4f67b17da956d",
-                "reference": "fc6bf4ceecb5d47327f54d48d4d4f67b17da956d",
-                "shasum": ""
-            },
-            "require": {
-                "composer-plugin-api": "^1.0.0",
-                "composer/semver": "^1.4",
-                "php": ">=5.4.5"
-            },
-            "require-dev": {
-                "composer/composer": "dev-master",
-                "g1a/composer-test-scenarios": "^2.1.0",
-                "phpunit/phpunit": "^6",
-                "squizlabs/php_codesniffer": "^2.8"
-            },
-            "type": "composer-plugin",
-            "extra": {
-                "class": "DrupalComposer\\DrupalScaffold\\Plugin",
-                "branch-alias": {
-                    "dev-master": "2.0.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "DrupalComposer\\DrupalScaffold\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "GPL-2.0-or-later"
-            ],
-            "description": "Composer Plugin for updating the Drupal scaffold files when using drupal/core",
-            "abandoned": "drupal/core-composer-scaffold",
-            "time": "2018-07-27T10:07:07+00:00"
-        },
         {
             "name": "drupal/address",
             "version": "1.1.0",
@@ -3643,6 +3598,53 @@
             "description": "Drupal is an open source content management platform powering millions of websites and applications.",
             "time": "2020-11-26T01:49:15+00:00"
         },
+        {
+            "name": "drupal/core-composer-scaffold",
+            "version": "9.0.9",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/drupal/core-composer-scaffold.git",
+                "reference": "c017751a6bb9b2ffe56f0fab607ba67c21604bfd"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/drupal/core-composer-scaffold/zipball/c017751a6bb9b2ffe56f0fab607ba67c21604bfd",
+                "reference": "c017751a6bb9b2ffe56f0fab607ba67c21604bfd",
+                "shasum": ""
+            },
+            "require": {
+                "composer-plugin-api": "^1 || ^2",
+                "php": ">=7.3.0"
+            },
+            "conflict": {
+                "drupal-composer/drupal-scaffold": "*"
+            },
+            "require-dev": {
+                "composer/composer": "^1.8@stable"
+            },
+            "type": "composer-plugin",
+            "extra": {
+                "class": "Drupal\\Composer\\Plugin\\Scaffold\\Plugin",
+                "branch-alias": {
+                    "dev-master": "1.0.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Drupal\\Composer\\Plugin\\Scaffold\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "GPL-2.0-or-later"
+            ],
+            "description": "A flexible Composer project scaffold builder.",
+            "homepage": "https://www.drupal.org/project/drupal",
+            "keywords": [
+                "drupal"
+            ],
+            "time": "2020-08-07T22:30:24+00:00"
+        },
         {
             "name": "drupal/core-recommended",
             "version": "8.9.10",
@@ -10982,44 +10984,6 @@
             ],
             "time": "2020-04-22T17:19:51+00:00"
         },
-        {
-            "name": "rvtraveller/qs-composer-installer",
-            "version": "1.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/rvtraveller/qs-composer-installer.git",
-                "reference": "20d6f4397e4b77599646767ad030092a60f5f92a"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/rvtraveller/qs-composer-installer/zipball/20d6f4397e4b77599646767ad030092a60f5f92a",
-                "reference": "20d6f4397e4b77599646767ad030092a60f5f92a",
-                "shasum": ""
-            },
-            "require": {
-                "composer-plugin-api": "~1.0",
-                "composer/installers": "~1.0"
-            },
-            "require-dev": {
-                "composer/composer": "~1.0@dev"
-            },
-            "type": "composer-plugin",
-            "extra": {
-                "class": "rvtraveller\\QuicksilverComposerInstaller\\QuicksilverComposerInstallerPlugin"
-            },
-            "autoload": {
-                "psr-4": {
-                    "rvtraveller\\QuicksilverComposerInstaller\\": "src"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "description": "Install Quicksilver modules for Pantheon into custom locations.",
-            "homepage": "https://github.com/rvtraveller/qs-composer-installer",
-            "time": "2017-01-27T20:40:31+00:00"
-        },
         {
             "name": "simplesamlphp/saml2",
             "version": "v3.4.5",
diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php
index 20c8bdc6fa8204e7eac6fd9763bc1305147f8eee..fde1ea61316fecf20e0bfbcb4e726783c3f5fda0 100644
--- a/vendor/composer/autoload_classmap.php
+++ b/vendor/composer/autoload_classmap.php
@@ -747,12 +747,6 @@
     'DrupalCodeGenerator\\Twig\\TwigSortSetNode' => $vendorDir . '/chi-teck/drupal-code-generator/src/Twig/TwigSortSetNode.php',
     'DrupalCodeGenerator\\Twig\\TwigSortTokenParser' => $vendorDir . '/chi-teck/drupal-code-generator/src/Twig/TwigSortTokenParser.php',
     'DrupalCodeGenerator\\Utils' => $vendorDir . '/chi-teck/drupal-code-generator/src/Utils.php',
-    'DrupalComposer\\DrupalScaffold\\CommandProvider' => $vendorDir . '/drupal-composer/drupal-scaffold/src/CommandProvider.php',
-    'DrupalComposer\\DrupalScaffold\\DrupalScaffoldCommand' => $vendorDir . '/drupal-composer/drupal-scaffold/src/DrupalScaffoldCommand.php',
-    'DrupalComposer\\DrupalScaffold\\FileFetcher' => $vendorDir . '/drupal-composer/drupal-scaffold/src/FileFetcher.php',
-    'DrupalComposer\\DrupalScaffold\\Handler' => $vendorDir . '/drupal-composer/drupal-scaffold/src/Handler.php',
-    'DrupalComposer\\DrupalScaffold\\Plugin' => $vendorDir . '/drupal-composer/drupal-scaffold/src/Plugin.php',
-    'DrupalComposer\\DrupalScaffold\\PrestissimoFileFetcher' => $vendorDir . '/drupal-composer/drupal-scaffold/src/PrestissimoFileFetcher.php',
     'DrupalFinder\\DrupalFinder' => $vendorDir . '/webflo/drupal-finder/src/DrupalFinder.php',
     'DrupalProject\\composer\\ScriptHandler' => $baseDir . '/scripts/composer/ScriptHandler.php',
     'Drupal\\Component\\Annotation\\AnnotationBase' => $baseDir . '/web/core/lib/Drupal/Component/Annotation/AnnotationBase.php',
@@ -911,6 +905,29 @@
     'Drupal\\Component\\Uuid\\Uuid' => $baseDir . '/web/core/lib/Drupal/Component/Uuid/Uuid.php',
     'Drupal\\Component\\Uuid\\UuidInterface' => $baseDir . '/web/core/lib/Drupal/Component/Uuid/UuidInterface.php',
     'Drupal\\Component\\Version\\Constraint' => $baseDir . '/web/core/lib/Drupal/Component/Version/Constraint.php',
+    'Drupal\\Composer\\Plugin\\Scaffold\\AllowedPackages' => $vendorDir . '/drupal/core-composer-scaffold/AllowedPackages.php',
+    'Drupal\\Composer\\Plugin\\Scaffold\\CommandProvider' => $vendorDir . '/drupal/core-composer-scaffold/CommandProvider.php',
+    'Drupal\\Composer\\Plugin\\Scaffold\\ComposerScaffoldCommand' => $vendorDir . '/drupal/core-composer-scaffold/ComposerScaffoldCommand.php',
+    'Drupal\\Composer\\Plugin\\Scaffold\\GenerateAutoloadReferenceFile' => $vendorDir . '/drupal/core-composer-scaffold/GenerateAutoloadReferenceFile.php',
+    'Drupal\\Composer\\Plugin\\Scaffold\\Git' => $vendorDir . '/drupal/core-composer-scaffold/Git.php',
+    'Drupal\\Composer\\Plugin\\Scaffold\\Handler' => $vendorDir . '/drupal/core-composer-scaffold/Handler.php',
+    'Drupal\\Composer\\Plugin\\Scaffold\\Interpolator' => $vendorDir . '/drupal/core-composer-scaffold/Interpolator.php',
+    'Drupal\\Composer\\Plugin\\Scaffold\\ManageGitIgnore' => $vendorDir . '/drupal/core-composer-scaffold/ManageGitIgnore.php',
+    'Drupal\\Composer\\Plugin\\Scaffold\\ManageOptions' => $vendorDir . '/drupal/core-composer-scaffold/ManageOptions.php',
+    'Drupal\\Composer\\Plugin\\Scaffold\\Operations\\AbstractOperation' => $vendorDir . '/drupal/core-composer-scaffold/Operations/AbstractOperation.php',
+    'Drupal\\Composer\\Plugin\\Scaffold\\Operations\\AppendOp' => $vendorDir . '/drupal/core-composer-scaffold/Operations/AppendOp.php',
+    'Drupal\\Composer\\Plugin\\Scaffold\\Operations\\OperationData' => $vendorDir . '/drupal/core-composer-scaffold/Operations/OperationData.php',
+    'Drupal\\Composer\\Plugin\\Scaffold\\Operations\\OperationFactory' => $vendorDir . '/drupal/core-composer-scaffold/Operations/OperationFactory.php',
+    'Drupal\\Composer\\Plugin\\Scaffold\\Operations\\OperationInterface' => $vendorDir . '/drupal/core-composer-scaffold/Operations/OperationInterface.php',
+    'Drupal\\Composer\\Plugin\\Scaffold\\Operations\\ReplaceOp' => $vendorDir . '/drupal/core-composer-scaffold/Operations/ReplaceOp.php',
+    'Drupal\\Composer\\Plugin\\Scaffold\\Operations\\ScaffoldFileCollection' => $vendorDir . '/drupal/core-composer-scaffold/Operations/ScaffoldFileCollection.php',
+    'Drupal\\Composer\\Plugin\\Scaffold\\Operations\\ScaffoldResult' => $vendorDir . '/drupal/core-composer-scaffold/Operations/ScaffoldResult.php',
+    'Drupal\\Composer\\Plugin\\Scaffold\\Operations\\SkipOp' => $vendorDir . '/drupal/core-composer-scaffold/Operations/SkipOp.php',
+    'Drupal\\Composer\\Plugin\\Scaffold\\Plugin' => $vendorDir . '/drupal/core-composer-scaffold/Plugin.php',
+    'Drupal\\Composer\\Plugin\\Scaffold\\PostPackageEventListenerInterface' => $vendorDir . '/drupal/core-composer-scaffold/PostPackageEventListenerInterface.php',
+    'Drupal\\Composer\\Plugin\\Scaffold\\ScaffoldFileInfo' => $vendorDir . '/drupal/core-composer-scaffold/ScaffoldFileInfo.php',
+    'Drupal\\Composer\\Plugin\\Scaffold\\ScaffoldFilePath' => $vendorDir . '/drupal/core-composer-scaffold/ScaffoldFilePath.php',
+    'Drupal\\Composer\\Plugin\\Scaffold\\ScaffoldOptions' => $vendorDir . '/drupal/core-composer-scaffold/ScaffoldOptions.php',
     'Drupal\\Console\\Annotations\\DrupalCommand' => $vendorDir . '/drupal/console/src/Annotations/DrupalCommand.php',
     'Drupal\\Console\\Annotations\\DrupalCommandAnnotationReader' => $vendorDir . '/drupal/console/src/Annotations/DrupalCommandAnnotationReader.php',
     'Drupal\\Console\\Application' => $vendorDir . '/drupal/console/src/Application.php',
@@ -6010,8 +6027,6 @@
     'enshrined\\svgSanitize\\data\\AttributeInterface' => $vendorDir . '/enshrined/svg-sanitize/src/data/AttributeInterface.php',
     'enshrined\\svgSanitize\\data\\TagInterface' => $vendorDir . '/enshrined/svg-sanitize/src/data/TagInterface.php',
     'enshrined\\svgSanitize\\data\\XPath' => $vendorDir . '/enshrined/svg-sanitize/src/data/XPath.php',
-    'rvtraveller\\QuicksilverComposerInstaller\\QuicksilverComposerInstaller' => $vendorDir . '/rvtraveller/qs-composer-installer/src/QuicksilverComposerInstaller.php',
-    'rvtraveller\\QuicksilverComposerInstaller\\QuicksilverComposerInstallerPlugin' => $vendorDir . '/rvtraveller/qs-composer-installer/src/QuicksilverComposerInstallerPlugin.php',
     'zaporylie\\ComposerDrupalOptimizations\\Cache' => $vendorDir . '/zaporylie/composer-drupal-optimizations/src/Cache.php',
     'zaporylie\\ComposerDrupalOptimizations\\Plugin' => $vendorDir . '/zaporylie/composer-drupal-optimizations/src/Plugin.php',
     'zaporylie\\ComposerDrupalOptimizations\\TruncatedComposerRepository' => $vendorDir . '/zaporylie/composer-drupal-optimizations/src/TruncatedComposerRepository.php',
diff --git a/vendor/composer/autoload_psr4.php b/vendor/composer/autoload_psr4.php
index 4ad8fd14996b2690b614f9ed017e21ffc584475c..f6474efec07bfc548f08283a8fb5aa3c12ccca55 100644
--- a/vendor/composer/autoload_psr4.php
+++ b/vendor/composer/autoload_psr4.php
@@ -7,7 +7,6 @@
 
 return array(
     'zaporylie\\ComposerDrupalOptimizations\\' => array($vendorDir . '/zaporylie/composer-drupal-optimizations/src'),
-    'rvtraveller\\QuicksilverComposerInstaller\\' => array($vendorDir . '/rvtraveller/qs-composer-installer/src'),
     'enshrined\\svgSanitize\\' => array($vendorDir . '/enshrined/svg-sanitize/src'),
     'cweagans\\Composer\\' => array($vendorDir . '/cweagans/composer-patches/src'),
     'XdgBaseDir\\' => array($vendorDir . '/dnoegel/php-xdg-base-dir/src'),
@@ -85,8 +84,8 @@
     'Drupal\\Console\\Core\\' => array($vendorDir . '/drupal/console-core/src'),
     'Drupal\\Console\\Composer\\Plugin\\' => array($vendorDir . '/drupal/console-extend-plugin/src'),
     'Drupal\\Console\\' => array($vendorDir . '/drupal/console/src'),
+    'Drupal\\Composer\\Plugin\\Scaffold\\' => array($vendorDir . '/drupal/core-composer-scaffold'),
     'Drupal\\Component\\' => array($baseDir . '/web/core/lib/Drupal/Component'),
-    'DrupalComposer\\DrupalScaffold\\' => array($vendorDir . '/drupal-composer/drupal-scaffold/src'),
     'DrupalCodeGenerator\\' => array($vendorDir . '/chi-teck/drupal-code-generator/src'),
     'Doctrine\\Common\\Lexer\\' => array($vendorDir . '/doctrine/lexer/lib/Doctrine/Common/Lexer'),
     'Doctrine\\Common\\Inflector\\' => array($vendorDir . '/doctrine/inflector/lib/Doctrine/Common/Inflector'),
diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php
index cbad37edc34ac158e37a8a9342656bd39dc55577..1509b8596240786f76cd46ce352476951ae13dd0 100644
--- a/vendor/composer/autoload_static.php
+++ b/vendor/composer/autoload_static.php
@@ -48,10 +48,6 @@ class ComposerStaticInit5c689ffcd54b9e495ed983fdce09b530
         array (
             'zaporylie\\ComposerDrupalOptimizations\\' => 38,
         ),
-        'r' => 
-        array (
-            'rvtraveller\\QuicksilverComposerInstaller\\' => 41,
-        ),
         'e' => 
         array (
             'enshrined\\svgSanitize\\' => 22,
@@ -176,8 +172,8 @@ class ComposerStaticInit5c689ffcd54b9e495ed983fdce09b530
             'Drupal\\Console\\Core\\' => 20,
             'Drupal\\Console\\Composer\\Plugin\\' => 31,
             'Drupal\\Console\\' => 15,
+            'Drupal\\Composer\\Plugin\\Scaffold\\' => 32,
             'Drupal\\Component\\' => 17,
-            'DrupalComposer\\DrupalScaffold\\' => 30,
             'DrupalCodeGenerator\\' => 20,
             'Doctrine\\Common\\Lexer\\' => 22,
             'Doctrine\\Common\\Inflector\\' => 26,
@@ -211,10 +207,6 @@ class ComposerStaticInit5c689ffcd54b9e495ed983fdce09b530
         array (
             0 => __DIR__ . '/..' . '/zaporylie/composer-drupal-optimizations/src',
         ),
-        'rvtraveller\\QuicksilverComposerInstaller\\' => 
-        array (
-            0 => __DIR__ . '/..' . '/rvtraveller/qs-composer-installer/src',
-        ),
         'enshrined\\svgSanitize\\' => 
         array (
             0 => __DIR__ . '/..' . '/enshrined/svg-sanitize/src',
@@ -523,13 +515,13 @@ class ComposerStaticInit5c689ffcd54b9e495ed983fdce09b530
         array (
             0 => __DIR__ . '/..' . '/drupal/console/src',
         ),
-        'Drupal\\Component\\' => 
+        'Drupal\\Composer\\Plugin\\Scaffold\\' => 
         array (
-            0 => __DIR__ . '/../..' . '/web/core/lib/Drupal/Component',
+            0 => __DIR__ . '/..' . '/drupal/core-composer-scaffold',
         ),
-        'DrupalComposer\\DrupalScaffold\\' => 
+        'Drupal\\Component\\' => 
         array (
-            0 => __DIR__ . '/..' . '/drupal-composer/drupal-scaffold/src',
+            0 => __DIR__ . '/../..' . '/web/core/lib/Drupal/Component',
         ),
         'DrupalCodeGenerator\\' => 
         array (
@@ -1424,12 +1416,6 @@ class ComposerStaticInit5c689ffcd54b9e495ed983fdce09b530
         'DrupalCodeGenerator\\Twig\\TwigSortSetNode' => __DIR__ . '/..' . '/chi-teck/drupal-code-generator/src/Twig/TwigSortSetNode.php',
         'DrupalCodeGenerator\\Twig\\TwigSortTokenParser' => __DIR__ . '/..' . '/chi-teck/drupal-code-generator/src/Twig/TwigSortTokenParser.php',
         'DrupalCodeGenerator\\Utils' => __DIR__ . '/..' . '/chi-teck/drupal-code-generator/src/Utils.php',
-        'DrupalComposer\\DrupalScaffold\\CommandProvider' => __DIR__ . '/..' . '/drupal-composer/drupal-scaffold/src/CommandProvider.php',
-        'DrupalComposer\\DrupalScaffold\\DrupalScaffoldCommand' => __DIR__ . '/..' . '/drupal-composer/drupal-scaffold/src/DrupalScaffoldCommand.php',
-        'DrupalComposer\\DrupalScaffold\\FileFetcher' => __DIR__ . '/..' . '/drupal-composer/drupal-scaffold/src/FileFetcher.php',
-        'DrupalComposer\\DrupalScaffold\\Handler' => __DIR__ . '/..' . '/drupal-composer/drupal-scaffold/src/Handler.php',
-        'DrupalComposer\\DrupalScaffold\\Plugin' => __DIR__ . '/..' . '/drupal-composer/drupal-scaffold/src/Plugin.php',
-        'DrupalComposer\\DrupalScaffold\\PrestissimoFileFetcher' => __DIR__ . '/..' . '/drupal-composer/drupal-scaffold/src/PrestissimoFileFetcher.php',
         'DrupalFinder\\DrupalFinder' => __DIR__ . '/..' . '/webflo/drupal-finder/src/DrupalFinder.php',
         'DrupalProject\\composer\\ScriptHandler' => __DIR__ . '/../..' . '/scripts/composer/ScriptHandler.php',
         'Drupal\\Component\\Annotation\\AnnotationBase' => __DIR__ . '/../..' . '/web/core/lib/Drupal/Component/Annotation/AnnotationBase.php',
@@ -1588,6 +1574,29 @@ class ComposerStaticInit5c689ffcd54b9e495ed983fdce09b530
         'Drupal\\Component\\Uuid\\Uuid' => __DIR__ . '/../..' . '/web/core/lib/Drupal/Component/Uuid/Uuid.php',
         'Drupal\\Component\\Uuid\\UuidInterface' => __DIR__ . '/../..' . '/web/core/lib/Drupal/Component/Uuid/UuidInterface.php',
         'Drupal\\Component\\Version\\Constraint' => __DIR__ . '/../..' . '/web/core/lib/Drupal/Component/Version/Constraint.php',
+        'Drupal\\Composer\\Plugin\\Scaffold\\AllowedPackages' => __DIR__ . '/..' . '/drupal/core-composer-scaffold/AllowedPackages.php',
+        'Drupal\\Composer\\Plugin\\Scaffold\\CommandProvider' => __DIR__ . '/..' . '/drupal/core-composer-scaffold/CommandProvider.php',
+        'Drupal\\Composer\\Plugin\\Scaffold\\ComposerScaffoldCommand' => __DIR__ . '/..' . '/drupal/core-composer-scaffold/ComposerScaffoldCommand.php',
+        'Drupal\\Composer\\Plugin\\Scaffold\\GenerateAutoloadReferenceFile' => __DIR__ . '/..' . '/drupal/core-composer-scaffold/GenerateAutoloadReferenceFile.php',
+        'Drupal\\Composer\\Plugin\\Scaffold\\Git' => __DIR__ . '/..' . '/drupal/core-composer-scaffold/Git.php',
+        'Drupal\\Composer\\Plugin\\Scaffold\\Handler' => __DIR__ . '/..' . '/drupal/core-composer-scaffold/Handler.php',
+        'Drupal\\Composer\\Plugin\\Scaffold\\Interpolator' => __DIR__ . '/..' . '/drupal/core-composer-scaffold/Interpolator.php',
+        'Drupal\\Composer\\Plugin\\Scaffold\\ManageGitIgnore' => __DIR__ . '/..' . '/drupal/core-composer-scaffold/ManageGitIgnore.php',
+        'Drupal\\Composer\\Plugin\\Scaffold\\ManageOptions' => __DIR__ . '/..' . '/drupal/core-composer-scaffold/ManageOptions.php',
+        'Drupal\\Composer\\Plugin\\Scaffold\\Operations\\AbstractOperation' => __DIR__ . '/..' . '/drupal/core-composer-scaffold/Operations/AbstractOperation.php',
+        'Drupal\\Composer\\Plugin\\Scaffold\\Operations\\AppendOp' => __DIR__ . '/..' . '/drupal/core-composer-scaffold/Operations/AppendOp.php',
+        'Drupal\\Composer\\Plugin\\Scaffold\\Operations\\OperationData' => __DIR__ . '/..' . '/drupal/core-composer-scaffold/Operations/OperationData.php',
+        'Drupal\\Composer\\Plugin\\Scaffold\\Operations\\OperationFactory' => __DIR__ . '/..' . '/drupal/core-composer-scaffold/Operations/OperationFactory.php',
+        'Drupal\\Composer\\Plugin\\Scaffold\\Operations\\OperationInterface' => __DIR__ . '/..' . '/drupal/core-composer-scaffold/Operations/OperationInterface.php',
+        'Drupal\\Composer\\Plugin\\Scaffold\\Operations\\ReplaceOp' => __DIR__ . '/..' . '/drupal/core-composer-scaffold/Operations/ReplaceOp.php',
+        'Drupal\\Composer\\Plugin\\Scaffold\\Operations\\ScaffoldFileCollection' => __DIR__ . '/..' . '/drupal/core-composer-scaffold/Operations/ScaffoldFileCollection.php',
+        'Drupal\\Composer\\Plugin\\Scaffold\\Operations\\ScaffoldResult' => __DIR__ . '/..' . '/drupal/core-composer-scaffold/Operations/ScaffoldResult.php',
+        'Drupal\\Composer\\Plugin\\Scaffold\\Operations\\SkipOp' => __DIR__ . '/..' . '/drupal/core-composer-scaffold/Operations/SkipOp.php',
+        'Drupal\\Composer\\Plugin\\Scaffold\\Plugin' => __DIR__ . '/..' . '/drupal/core-composer-scaffold/Plugin.php',
+        'Drupal\\Composer\\Plugin\\Scaffold\\PostPackageEventListenerInterface' => __DIR__ . '/..' . '/drupal/core-composer-scaffold/PostPackageEventListenerInterface.php',
+        'Drupal\\Composer\\Plugin\\Scaffold\\ScaffoldFileInfo' => __DIR__ . '/..' . '/drupal/core-composer-scaffold/ScaffoldFileInfo.php',
+        'Drupal\\Composer\\Plugin\\Scaffold\\ScaffoldFilePath' => __DIR__ . '/..' . '/drupal/core-composer-scaffold/ScaffoldFilePath.php',
+        'Drupal\\Composer\\Plugin\\Scaffold\\ScaffoldOptions' => __DIR__ . '/..' . '/drupal/core-composer-scaffold/ScaffoldOptions.php',
         'Drupal\\Console\\Annotations\\DrupalCommand' => __DIR__ . '/..' . '/drupal/console/src/Annotations/DrupalCommand.php',
         'Drupal\\Console\\Annotations\\DrupalCommandAnnotationReader' => __DIR__ . '/..' . '/drupal/console/src/Annotations/DrupalCommandAnnotationReader.php',
         'Drupal\\Console\\Application' => __DIR__ . '/..' . '/drupal/console/src/Application.php',
@@ -6687,8 +6696,6 @@ class ComposerStaticInit5c689ffcd54b9e495ed983fdce09b530
         'enshrined\\svgSanitize\\data\\AttributeInterface' => __DIR__ . '/..' . '/enshrined/svg-sanitize/src/data/AttributeInterface.php',
         'enshrined\\svgSanitize\\data\\TagInterface' => __DIR__ . '/..' . '/enshrined/svg-sanitize/src/data/TagInterface.php',
         'enshrined\\svgSanitize\\data\\XPath' => __DIR__ . '/..' . '/enshrined/svg-sanitize/src/data/XPath.php',
-        'rvtraveller\\QuicksilverComposerInstaller\\QuicksilverComposerInstaller' => __DIR__ . '/..' . '/rvtraveller/qs-composer-installer/src/QuicksilverComposerInstaller.php',
-        'rvtraveller\\QuicksilverComposerInstaller\\QuicksilverComposerInstallerPlugin' => __DIR__ . '/..' . '/rvtraveller/qs-composer-installer/src/QuicksilverComposerInstallerPlugin.php',
         'zaporylie\\ComposerDrupalOptimizations\\Cache' => __DIR__ . '/..' . '/zaporylie/composer-drupal-optimizations/src/Cache.php',
         'zaporylie\\ComposerDrupalOptimizations\\Plugin' => __DIR__ . '/..' . '/zaporylie/composer-drupal-optimizations/src/Plugin.php',
         'zaporylie\\ComposerDrupalOptimizations\\TruncatedComposerRepository' => __DIR__ . '/..' . '/zaporylie/composer-drupal-optimizations/src/TruncatedComposerRepository.php',
diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json
index dcaaf3e86c2ad6efee47da9b1f279d8130939ad0..18ddc716df43dc927ff15e2a38502e6b19945b38 100644
--- a/vendor/composer/installed.json
+++ b/vendor/composer/installed.json
@@ -2029,53 +2029,6 @@
             "php"
         ]
     },
-    {
-        "name": "drupal-composer/drupal-scaffold",
-        "version": "2.5.4",
-        "version_normalized": "2.5.4.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/drupal-composer/drupal-scaffold.git",
-            "reference": "fc6bf4ceecb5d47327f54d48d4d4f67b17da956d"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/drupal-composer/drupal-scaffold/zipball/fc6bf4ceecb5d47327f54d48d4d4f67b17da956d",
-            "reference": "fc6bf4ceecb5d47327f54d48d4d4f67b17da956d",
-            "shasum": ""
-        },
-        "require": {
-            "composer-plugin-api": "^1.0.0",
-            "composer/semver": "^1.4",
-            "php": ">=5.4.5"
-        },
-        "require-dev": {
-            "composer/composer": "dev-master",
-            "g1a/composer-test-scenarios": "^2.1.0",
-            "phpunit/phpunit": "^6",
-            "squizlabs/php_codesniffer": "^2.8"
-        },
-        "time": "2018-07-27T10:07:07+00:00",
-        "type": "composer-plugin",
-        "extra": {
-            "class": "DrupalComposer\\DrupalScaffold\\Plugin",
-            "branch-alias": {
-                "dev-master": "2.0.x-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-4": {
-                "DrupalComposer\\DrupalScaffold\\": "src/"
-            }
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "GPL-2.0-or-later"
-        ],
-        "description": "Composer Plugin for updating the Drupal scaffold files when using drupal/core",
-        "abandoned": "drupal/core-composer-scaffold"
-    },
     {
         "name": "drupal/address",
         "version": "1.1.0",
@@ -3754,6 +3707,55 @@
         ],
         "description": "Drupal is an open source content management platform powering millions of websites and applications."
     },
+    {
+        "name": "drupal/core-composer-scaffold",
+        "version": "9.0.9",
+        "version_normalized": "9.0.9.0",
+        "source": {
+            "type": "git",
+            "url": "https://github.com/drupal/core-composer-scaffold.git",
+            "reference": "c017751a6bb9b2ffe56f0fab607ba67c21604bfd"
+        },
+        "dist": {
+            "type": "zip",
+            "url": "https://api.github.com/repos/drupal/core-composer-scaffold/zipball/c017751a6bb9b2ffe56f0fab607ba67c21604bfd",
+            "reference": "c017751a6bb9b2ffe56f0fab607ba67c21604bfd",
+            "shasum": ""
+        },
+        "require": {
+            "composer-plugin-api": "^1 || ^2",
+            "php": ">=7.3.0"
+        },
+        "conflict": {
+            "drupal-composer/drupal-scaffold": "*"
+        },
+        "require-dev": {
+            "composer/composer": "^1.8@stable"
+        },
+        "time": "2020-08-07T22:30:24+00:00",
+        "type": "composer-plugin",
+        "extra": {
+            "class": "Drupal\\Composer\\Plugin\\Scaffold\\Plugin",
+            "branch-alias": {
+                "dev-master": "1.0.x-dev"
+            }
+        },
+        "installation-source": "dist",
+        "autoload": {
+            "psr-4": {
+                "Drupal\\Composer\\Plugin\\Scaffold\\": ""
+            }
+        },
+        "notification-url": "https://packagist.org/downloads/",
+        "license": [
+            "GPL-2.0-or-later"
+        ],
+        "description": "A flexible Composer project scaffold builder.",
+        "homepage": "https://www.drupal.org/project/drupal",
+        "keywords": [
+            "drupal"
+        ]
+    },
     {
         "name": "drupal/core-recommended",
         "version": "8.9.10",
@@ -11337,46 +11339,6 @@
             "xmldsig"
         ]
     },
-    {
-        "name": "rvtraveller/qs-composer-installer",
-        "version": "1.1",
-        "version_normalized": "1.1.0.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/rvtraveller/qs-composer-installer.git",
-            "reference": "20d6f4397e4b77599646767ad030092a60f5f92a"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/rvtraveller/qs-composer-installer/zipball/20d6f4397e4b77599646767ad030092a60f5f92a",
-            "reference": "20d6f4397e4b77599646767ad030092a60f5f92a",
-            "shasum": ""
-        },
-        "require": {
-            "composer-plugin-api": "~1.0",
-            "composer/installers": "~1.0"
-        },
-        "require-dev": {
-            "composer/composer": "~1.0@dev"
-        },
-        "time": "2017-01-27T20:40:31+00:00",
-        "type": "composer-plugin",
-        "extra": {
-            "class": "rvtraveller\\QuicksilverComposerInstaller\\QuicksilverComposerInstallerPlugin"
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-4": {
-                "rvtraveller\\QuicksilverComposerInstaller\\": "src"
-            }
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "MIT"
-        ],
-        "description": "Install Quicksilver modules for Pantheon into custom locations.",
-        "homepage": "https://github.com/rvtraveller/qs-composer-installer"
-    },
     {
         "name": "simplesamlphp/saml2",
         "version": "v3.4.5",
diff --git a/vendor/drupal-composer/drupal-scaffold/.editorconfig b/vendor/drupal-composer/drupal-scaffold/.editorconfig
deleted file mode 100644
index 12bcb27e4ee7bbca7f74423a87d205926d2ad1d2..0000000000000000000000000000000000000000
--- a/vendor/drupal-composer/drupal-scaffold/.editorconfig
+++ /dev/null
@@ -1,17 +0,0 @@
-# Drupal editor configuration normalization
-# @see http://editorconfig.org/
-
-# This is the top-most .editorconfig file; do not search in parent directories.
-root = true
-
-# All files.
-[*]
-end_of_line = LF
-indent_style = space
-indent_size = 2
-charset = utf-8
-trim_trailing_whitespace = true
-insert_final_newline = true
-
-[{composer.json,composer.lock}]
-indent_size = 4
diff --git a/vendor/drupal-composer/drupal-scaffold/.gitignore b/vendor/drupal-composer/drupal-scaffold/.gitignore
deleted file mode 100644
index 22d0d82f8095e9c0ed572776afb47f9ca293ce00..0000000000000000000000000000000000000000
--- a/vendor/drupal-composer/drupal-scaffold/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-vendor
diff --git a/vendor/drupal-composer/drupal-scaffold/.scenarios.lock/install b/vendor/drupal-composer/drupal-scaffold/.scenarios.lock/install
deleted file mode 100755
index 8e691b0c156324bb73b7050e60222bab8fcce703..0000000000000000000000000000000000000000
--- a/vendor/drupal-composer/drupal-scaffold/.scenarios.lock/install
+++ /dev/null
@@ -1,52 +0,0 @@
-#!/bin/bash
-
-SCENARIO=$1
-DEPENDENCIES=${2-install}
-
-# Convert the aliases 'highest', 'lowest' and 'lock' to
-# the corresponding composer command to run.
-case $DEPENDENCIES in
-  highest)
-    DEPENDENCIES=update
-    ;;
-  lowest)
-    DEPENDENCIES='update --prefer-lowest'
-    ;;
-  lock|default|"")
-    DEPENDENCIES=install
-    ;;
-esac
-
-original_name=scenarios
-recommended_name=".scenarios.lock"
-
-base="$original_name"
-if [ -d "$recommended_name" ] ; then
-  base="$recommended_name"
-fi
-
-# If scenario is not specified, install the lockfile at
-# the root of the project.
-dir="$base/${SCENARIO}"
-if [ -z "$SCENARIO" ] || [ "$SCENARIO" == "default" ] ; then
-  SCENARIO=default
-  dir=.
-fi
-
-# Test to make sure that the selected scenario exists.
-if [ ! -d "$dir" ] ; then
-  echo "Requested scenario '${SCENARIO}' does not exist."
-  exit 1
-fi
-
-echo
-echo "::"
-echo ":: Switch to ${SCENARIO} scenario"
-echo "::"
-echo
-
-set -ex
-
-composer -n validate --working-dir=$dir --no-check-all --ansi
-composer -n --working-dir=$dir ${DEPENDENCIES} --prefer-dist --no-scripts
-composer -n --working-dir=$dir info
diff --git a/vendor/drupal-composer/drupal-scaffold/.scenarios.lock/phpunit4/.gitignore b/vendor/drupal-composer/drupal-scaffold/.scenarios.lock/phpunit4/.gitignore
deleted file mode 100644
index 22d0d82f8095e9c0ed572776afb47f9ca293ce00..0000000000000000000000000000000000000000
--- a/vendor/drupal-composer/drupal-scaffold/.scenarios.lock/phpunit4/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-vendor
diff --git a/vendor/drupal-composer/drupal-scaffold/.scenarios.lock/phpunit4/composer.json b/vendor/drupal-composer/drupal-scaffold/.scenarios.lock/phpunit4/composer.json
deleted file mode 100644
index 52d5a59b1364bb31dd5668ff7074768e87239b95..0000000000000000000000000000000000000000
--- a/vendor/drupal-composer/drupal-scaffold/.scenarios.lock/phpunit4/composer.json
+++ /dev/null
@@ -1,53 +0,0 @@
-{
-    "name": "drupal-composer/drupal-scaffold",
-    "description": "Composer Plugin for updating the Drupal scaffold files when using drupal/core",
-    "type": "composer-plugin",
-    "license": "GPL-2.0-or-later",
-    "require": {
-        "php": ">=5.4.5",
-        "composer-plugin-api": "^1.0.0",
-        "composer/semver": "^1.4"
-    },
-    "autoload": {
-        "psr-4": {
-            "DrupalComposer\\DrupalScaffold\\": "src/"
-        }
-    },
-    "extra": {
-        "class": "DrupalComposer\\DrupalScaffold\\Plugin",
-        "branch-alias": {
-            "dev-master": "2.0.x-dev"
-        }
-    },
-    "scripts": {
-        "cs": "phpcs --standard=PSR2 -n src",
-        "cbf": "phpcbf --standard=PSR2 -n src",
-        "unit": "phpunit --colors=always",
-        "lint": [
-            "find src -name '*.php' -print0 | xargs -0 -n1 php -l"
-        ],
-        "test": [
-            "@lint",
-            "@unit"
-        ],
-        "scenario": ".scenarios.lock/install",
-        "post-update-cmd": [
-            "create-scenario phpunit4 'phpunit/phpunit:^4.8.36' --platform-php '5.5.27'"
-        ]
-    },
-    "config": {
-        "optimize-autoloader": true,
-        "sort-packages": true,
-        "platform": {
-            "php": "5.5.27"
-        },
-        "vendor-dir": "../../vendor"
-    },
-    "require-dev": {
-        "composer/composer": "dev-master",
-        "g1a/composer-test-scenarios": "^2.1.0",
-        "phpunit/phpunit": "^4.8.36",
-        "squizlabs/php_codesniffer": "^2.8"
-    },
-    "minimum-stability": "stable"
-}
diff --git a/vendor/drupal-composer/drupal-scaffold/.scenarios.lock/phpunit4/composer.lock b/vendor/drupal-composer/drupal-scaffold/.scenarios.lock/phpunit4/composer.lock
deleted file mode 100644
index 084a62b1e544d4725b2c8fa9c671ccc45b5fc85b..0000000000000000000000000000000000000000
--- a/vendor/drupal-composer/drupal-scaffold/.scenarios.lock/phpunit4/composer.lock
+++ /dev/null
@@ -1,2153 +0,0 @@
-{
-    "_readme": [
-        "This file locks the dependencies of your project to a known state",
-        "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
-        "This file is @generated automatically"
-    ],
-    "content-hash": "445ab29fa63d93c2f4ff7da62f90de16",
-    "packages": [
-        {
-            "name": "composer/semver",
-            "version": "1.4.2",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/composer/semver.git",
-                "reference": "c7cb9a2095a074d131b65a8a0cd294479d785573"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/composer/semver/zipball/c7cb9a2095a074d131b65a8a0cd294479d785573",
-                "reference": "c7cb9a2095a074d131b65a8a0cd294479d785573",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^5.3.2 || ^7.0"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^4.5 || ^5.0.5",
-                "phpunit/phpunit-mock-objects": "2.3.0 || ^3.0"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Composer\\Semver\\": "src"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Nils Adermann",
-                    "email": "naderman@naderman.de",
-                    "homepage": "http://www.naderman.de"
-                },
-                {
-                    "name": "Jordi Boggiano",
-                    "email": "j.boggiano@seld.be",
-                    "homepage": "http://seld.be"
-                },
-                {
-                    "name": "Rob Bast",
-                    "email": "rob.bast@gmail.com",
-                    "homepage": "http://robbast.nl"
-                }
-            ],
-            "description": "Semver library that offers utilities, version constraint parsing and validation.",
-            "keywords": [
-                "semantic",
-                "semver",
-                "validation",
-                "versioning"
-            ],
-            "time": "2016-08-30T16:08:34+00:00"
-        }
-    ],
-    "packages-dev": [
-        {
-            "name": "composer/ca-bundle",
-            "version": "1.1.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/composer/ca-bundle.git",
-                "reference": "d2c0a83b7533d6912e8d516756ebd34f893e9169"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/composer/ca-bundle/zipball/d2c0a83b7533d6912e8d516756ebd34f893e9169",
-                "reference": "d2c0a83b7533d6912e8d516756ebd34f893e9169",
-                "shasum": ""
-            },
-            "require": {
-                "ext-openssl": "*",
-                "ext-pcre": "*",
-                "php": "^5.3.2 || ^7.0"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5",
-                "psr/log": "^1.0",
-                "symfony/process": "^2.5 || ^3.0 || ^4.0"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Composer\\CaBundle\\": "src"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Jordi Boggiano",
-                    "email": "j.boggiano@seld.be",
-                    "homepage": "http://seld.be"
-                }
-            ],
-            "description": "Lets you find a path to the system CA bundle, and includes a fallback to the Mozilla CA bundle.",
-            "keywords": [
-                "cabundle",
-                "cacert",
-                "certificate",
-                "ssl",
-                "tls"
-            ],
-            "time": "2018-03-29T19:57:20+00:00"
-        },
-        {
-            "name": "composer/composer",
-            "version": "dev-master",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/composer/composer.git",
-                "reference": "837ad7c14e8ce364296e0d0600d04c415b6e359d"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/composer/composer/zipball/837ad7c14e8ce364296e0d0600d04c415b6e359d",
-                "reference": "837ad7c14e8ce364296e0d0600d04c415b6e359d",
-                "shasum": ""
-            },
-            "require": {
-                "composer/ca-bundle": "^1.0",
-                "composer/semver": "^1.0",
-                "composer/spdx-licenses": "^1.2",
-                "composer/xdebug-handler": "^1.1",
-                "justinrainbow/json-schema": "^3.0 || ^4.0 || ^5.0",
-                "php": "^5.3.2 || ^7.0",
-                "psr/log": "^1.0",
-                "seld/jsonlint": "^1.4",
-                "seld/phar-utils": "^1.0",
-                "symfony/console": "^2.7 || ^3.0 || ^4.0",
-                "symfony/filesystem": "^2.7 || ^3.0 || ^4.0",
-                "symfony/finder": "^2.7 || ^3.0 || ^4.0",
-                "symfony/process": "^2.7 || ^3.0 || ^4.0"
-            },
-            "conflict": {
-                "symfony/console": "2.8.38"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^4.8.35 || ^5.7",
-                "phpunit/phpunit-mock-objects": "^2.3 || ^3.0"
-            },
-            "suggest": {
-                "ext-openssl": "Enabling the openssl extension allows you to access https URLs for repositories and packages",
-                "ext-zip": "Enabling the zip extension allows you to unzip archives",
-                "ext-zlib": "Allow gzip compression of HTTP requests"
-            },
-            "bin": [
-                "bin/composer"
-            ],
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.7-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Composer\\": "src/Composer"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Nils Adermann",
-                    "email": "naderman@naderman.de",
-                    "homepage": "http://www.naderman.de"
-                },
-                {
-                    "name": "Jordi Boggiano",
-                    "email": "j.boggiano@seld.be",
-                    "homepage": "http://seld.be"
-                }
-            ],
-            "description": "Composer helps you declare, manage and install dependencies of PHP projects, ensuring you have the right stack everywhere.",
-            "homepage": "https://getcomposer.org/",
-            "keywords": [
-                "autoload",
-                "dependency",
-                "package"
-            ],
-            "time": "2018-06-07T09:15:18+00:00"
-        },
-        {
-            "name": "composer/spdx-licenses",
-            "version": "1.4.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/composer/spdx-licenses.git",
-                "reference": "cb17687e9f936acd7e7245ad3890f953770dec1b"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/cb17687e9f936acd7e7245ad3890f953770dec1b",
-                "reference": "cb17687e9f936acd7e7245ad3890f953770dec1b",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^5.3.2 || ^7.0"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5",
-                "phpunit/phpunit-mock-objects": "2.3.0 || ^3.0"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Composer\\Spdx\\": "src"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Nils Adermann",
-                    "email": "naderman@naderman.de",
-                    "homepage": "http://www.naderman.de"
-                },
-                {
-                    "name": "Jordi Boggiano",
-                    "email": "j.boggiano@seld.be",
-                    "homepage": "http://seld.be"
-                },
-                {
-                    "name": "Rob Bast",
-                    "email": "rob.bast@gmail.com",
-                    "homepage": "http://robbast.nl"
-                }
-            ],
-            "description": "SPDX licenses list and validation library.",
-            "keywords": [
-                "license",
-                "spdx",
-                "validator"
-            ],
-            "time": "2018-04-30T10:33:04+00:00"
-        },
-        {
-            "name": "composer/xdebug-handler",
-            "version": "1.1.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/composer/xdebug-handler.git",
-                "reference": "c919dc6c62e221fc6406f861ea13433c0aa24f08"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/c919dc6c62e221fc6406f861ea13433c0aa24f08",
-                "reference": "c919dc6c62e221fc6406f861ea13433c0aa24f08",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^5.3.2 || ^7.0",
-                "psr/log": "^1.0"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5"
-            },
-            "type": "library",
-            "autoload": {
-                "psr-4": {
-                    "Composer\\XdebugHandler\\": "src"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "John Stevenson",
-                    "email": "john-stevenson@blueyonder.co.uk"
-                }
-            ],
-            "description": "Restarts a process without xdebug.",
-            "keywords": [
-                "Xdebug",
-                "performance"
-            ],
-            "time": "2018-04-11T15:42:36+00:00"
-        },
-        {
-            "name": "doctrine/instantiator",
-            "version": "1.0.5",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/doctrine/instantiator.git",
-                "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d",
-                "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3,<8.0-DEV"
-            },
-            "require-dev": {
-                "athletic/athletic": "~0.1.8",
-                "ext-pdo": "*",
-                "ext-phar": "*",
-                "phpunit/phpunit": "~4.0",
-                "squizlabs/php_codesniffer": "~2.0"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.0.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Marco Pivetta",
-                    "email": "ocramius@gmail.com",
-                    "homepage": "http://ocramius.github.com/"
-                }
-            ],
-            "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
-            "homepage": "https://github.com/doctrine/instantiator",
-            "keywords": [
-                "constructor",
-                "instantiate"
-            ],
-            "time": "2015-06-14T21:17:01+00:00"
-        },
-        {
-            "name": "g1a/composer-test-scenarios",
-            "version": "2.1.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/g1a/composer-test-scenarios.git",
-                "reference": "4c2b990712dbcb87a0ab618e46f908c731c3a0bb"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/g1a/composer-test-scenarios/zipball/4c2b990712dbcb87a0ab618e46f908c731c3a0bb",
-                "reference": "4c2b990712dbcb87a0ab618e46f908c731c3a0bb",
-                "shasum": ""
-            },
-            "bin": [
-                "scripts/create-scenario",
-                "scripts/dependency-licenses",
-                "scripts/install-scenario"
-            ],
-            "type": "library",
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Greg Anderson",
-                    "email": "greg.1.anderson@greenknowe.org"
-                }
-            ],
-            "description": "Useful scripts for testing multiple sets of Composer dependencies.",
-            "time": "2018-06-10T21:56:28+00:00"
-        },
-        {
-            "name": "justinrainbow/json-schema",
-            "version": "5.2.7",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/justinrainbow/json-schema.git",
-                "reference": "8560d4314577199ba51bf2032f02cd1315587c23"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/8560d4314577199ba51bf2032f02cd1315587c23",
-                "reference": "8560d4314577199ba51bf2032f02cd1315587c23",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.3"
-            },
-            "require-dev": {
-                "friendsofphp/php-cs-fixer": "^2.1",
-                "json-schema/json-schema-test-suite": "1.2.0",
-                "phpunit/phpunit": "^4.8.35"
-            },
-            "bin": [
-                "bin/validate-json"
-            ],
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "5.0.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "JsonSchema\\": "src/JsonSchema/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Bruno Prieto Reis",
-                    "email": "bruno.p.reis@gmail.com"
-                },
-                {
-                    "name": "Justin Rainbow",
-                    "email": "justin.rainbow@gmail.com"
-                },
-                {
-                    "name": "Igor Wiedler",
-                    "email": "igor@wiedler.ch"
-                },
-                {
-                    "name": "Robert Schönthal",
-                    "email": "seroscho@googlemail.com"
-                }
-            ],
-            "description": "A library to validate a json schema.",
-            "homepage": "https://github.com/justinrainbow/json-schema",
-            "keywords": [
-                "json",
-                "schema"
-            ],
-            "time": "2018-02-14T22:26:30+00:00"
-        },
-        {
-            "name": "phpdocumentor/reflection-common",
-            "version": "1.0.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
-                "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
-                "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.5"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^4.6"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.0.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "phpDocumentor\\Reflection\\": [
-                        "src"
-                    ]
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Jaap van Otterdijk",
-                    "email": "opensource@ijaap.nl"
-                }
-            ],
-            "description": "Common reflection classes used by phpdocumentor to reflect the code structure",
-            "homepage": "http://www.phpdoc.org",
-            "keywords": [
-                "FQSEN",
-                "phpDocumentor",
-                "phpdoc",
-                "reflection",
-                "static analysis"
-            ],
-            "time": "2017-09-11T18:02:19+00:00"
-        },
-        {
-            "name": "phpdocumentor/reflection-docblock",
-            "version": "3.2.2",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
-                "reference": "4aada1f93c72c35e22fb1383b47fee43b8f1d157"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/4aada1f93c72c35e22fb1383b47fee43b8f1d157",
-                "reference": "4aada1f93c72c35e22fb1383b47fee43b8f1d157",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.5",
-                "phpdocumentor/reflection-common": "^1.0@dev",
-                "phpdocumentor/type-resolver": "^0.3.0",
-                "webmozart/assert": "^1.0"
-            },
-            "require-dev": {
-                "mockery/mockery": "^0.9.4",
-                "phpunit/phpunit": "^4.4"
-            },
-            "type": "library",
-            "autoload": {
-                "psr-4": {
-                    "phpDocumentor\\Reflection\\": [
-                        "src/"
-                    ]
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Mike van Riel",
-                    "email": "me@mikevanriel.com"
-                }
-            ],
-            "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
-            "time": "2017-08-08T06:39:58+00:00"
-        },
-        {
-            "name": "phpdocumentor/type-resolver",
-            "version": "0.3.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/phpDocumentor/TypeResolver.git",
-                "reference": "fb3933512008d8162b3cdf9e18dba9309b7c3773"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/fb3933512008d8162b3cdf9e18dba9309b7c3773",
-                "reference": "fb3933512008d8162b3cdf9e18dba9309b7c3773",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^5.5 || ^7.0",
-                "phpdocumentor/reflection-common": "^1.0"
-            },
-            "require-dev": {
-                "mockery/mockery": "^0.9.4",
-                "phpunit/phpunit": "^5.2||^4.8.24"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.0.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "phpDocumentor\\Reflection\\": [
-                        "src/"
-                    ]
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Mike van Riel",
-                    "email": "me@mikevanriel.com"
-                }
-            ],
-            "time": "2017-06-03T08:32:36+00:00"
-        },
-        {
-            "name": "phpspec/prophecy",
-            "version": "1.7.6",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/phpspec/prophecy.git",
-                "reference": "33a7e3c4fda54e912ff6338c48823bd5c0f0b712"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/phpspec/prophecy/zipball/33a7e3c4fda54e912ff6338c48823bd5c0f0b712",
-                "reference": "33a7e3c4fda54e912ff6338c48823bd5c0f0b712",
-                "shasum": ""
-            },
-            "require": {
-                "doctrine/instantiator": "^1.0.2",
-                "php": "^5.3|^7.0",
-                "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0",
-                "sebastian/comparator": "^1.1|^2.0|^3.0",
-                "sebastian/recursion-context": "^1.0|^2.0|^3.0"
-            },
-            "require-dev": {
-                "phpspec/phpspec": "^2.5|^3.2",
-                "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.7.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-0": {
-                    "Prophecy\\": "src/"
-                }
-            },
-            "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"
-            ],
-            "time": "2018-04-18T13:57:24+00:00"
-        },
-        {
-            "name": "phpunit/php-code-coverage",
-            "version": "2.2.4",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
-                "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/eabf68b476ac7d0f73793aada060f1c1a9bf8979",
-                "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.3",
-                "phpunit/php-file-iterator": "~1.3",
-                "phpunit/php-text-template": "~1.2",
-                "phpunit/php-token-stream": "~1.3",
-                "sebastian/environment": "^1.3.2",
-                "sebastian/version": "~1.0"
-            },
-            "require-dev": {
-                "ext-xdebug": ">=2.1.4",
-                "phpunit/phpunit": "~4"
-            },
-            "suggest": {
-                "ext-dom": "*",
-                "ext-xdebug": ">=2.2.1",
-                "ext-xmlwriter": "*"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "2.2.x-dev"
-                }
-            },
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sb@sebastian-bergmann.de",
-                    "role": "lead"
-                }
-            ],
-            "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
-            "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
-            "keywords": [
-                "coverage",
-                "testing",
-                "xunit"
-            ],
-            "time": "2015-10-06T15:47:00+00:00"
-        },
-        {
-            "name": "phpunit/php-file-iterator",
-            "version": "1.4.5",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
-                "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4",
-                "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.3"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.4.x-dev"
-                }
-            },
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sb@sebastian-bergmann.de",
-                    "role": "lead"
-                }
-            ],
-            "description": "FilterIterator implementation that filters files based on a list of suffixes.",
-            "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
-            "keywords": [
-                "filesystem",
-                "iterator"
-            ],
-            "time": "2017-11-27T13:52:08+00:00"
-        },
-        {
-            "name": "phpunit/php-text-template",
-            "version": "1.2.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/php-text-template.git",
-                "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
-                "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.3"
-            },
-            "type": "library",
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de",
-                    "role": "lead"
-                }
-            ],
-            "description": "Simple template engine.",
-            "homepage": "https://github.com/sebastianbergmann/php-text-template/",
-            "keywords": [
-                "template"
-            ],
-            "time": "2015-06-21T13:50:34+00:00"
-        },
-        {
-            "name": "phpunit/php-timer",
-            "version": "1.0.9",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/php-timer.git",
-                "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f",
-                "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^5.3.3 || ^7.0"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.0-dev"
-                }
-            },
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sb@sebastian-bergmann.de",
-                    "role": "lead"
-                }
-            ],
-            "description": "Utility class for timing",
-            "homepage": "https://github.com/sebastianbergmann/php-timer/",
-            "keywords": [
-                "timer"
-            ],
-            "time": "2017-02-26T11:10:40+00:00"
-        },
-        {
-            "name": "phpunit/php-token-stream",
-            "version": "1.4.12",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/php-token-stream.git",
-                "reference": "1ce90ba27c42e4e44e6d8458241466380b51fa16"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/1ce90ba27c42e4e44e6d8458241466380b51fa16",
-                "reference": "1ce90ba27c42e4e44e6d8458241466380b51fa16",
-                "shasum": ""
-            },
-            "require": {
-                "ext-tokenizer": "*",
-                "php": ">=5.3.3"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "~4.2"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.4-dev"
-                }
-            },
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de"
-                }
-            ],
-            "description": "Wrapper around PHP's tokenizer extension.",
-            "homepage": "https://github.com/sebastianbergmann/php-token-stream/",
-            "keywords": [
-                "tokenizer"
-            ],
-            "time": "2017-12-04T08:55:13+00:00"
-        },
-        {
-            "name": "phpunit/phpunit",
-            "version": "4.8.36",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/phpunit.git",
-                "reference": "46023de9a91eec7dfb06cc56cb4e260017298517"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/46023de9a91eec7dfb06cc56cb4e260017298517",
-                "reference": "46023de9a91eec7dfb06cc56cb4e260017298517",
-                "shasum": ""
-            },
-            "require": {
-                "ext-dom": "*",
-                "ext-json": "*",
-                "ext-pcre": "*",
-                "ext-reflection": "*",
-                "ext-spl": "*",
-                "php": ">=5.3.3",
-                "phpspec/prophecy": "^1.3.1",
-                "phpunit/php-code-coverage": "~2.1",
-                "phpunit/php-file-iterator": "~1.4",
-                "phpunit/php-text-template": "~1.2",
-                "phpunit/php-timer": "^1.0.6",
-                "phpunit/phpunit-mock-objects": "~2.3",
-                "sebastian/comparator": "~1.2.2",
-                "sebastian/diff": "~1.2",
-                "sebastian/environment": "~1.3",
-                "sebastian/exporter": "~1.2",
-                "sebastian/global-state": "~1.0",
-                "sebastian/version": "~1.0",
-                "symfony/yaml": "~2.1|~3.0"
-            },
-            "suggest": {
-                "phpunit/php-invoker": "~1.1"
-            },
-            "bin": [
-                "phpunit"
-            ],
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "4.8.x-dev"
-                }
-            },
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de",
-                    "role": "lead"
-                }
-            ],
-            "description": "The PHP Unit Testing framework.",
-            "homepage": "https://phpunit.de/",
-            "keywords": [
-                "phpunit",
-                "testing",
-                "xunit"
-            ],
-            "time": "2017-06-21T08:07:12+00:00"
-        },
-        {
-            "name": "phpunit/phpunit-mock-objects",
-            "version": "2.3.8",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
-                "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/ac8e7a3db35738d56ee9a76e78a4e03d97628983",
-                "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983",
-                "shasum": ""
-            },
-            "require": {
-                "doctrine/instantiator": "^1.0.2",
-                "php": ">=5.3.3",
-                "phpunit/php-text-template": "~1.2",
-                "sebastian/exporter": "~1.2"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "~4.4"
-            },
-            "suggest": {
-                "ext-soap": "*"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "2.3.x-dev"
-                }
-            },
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sb@sebastian-bergmann.de",
-                    "role": "lead"
-                }
-            ],
-            "description": "Mock Object library for PHPUnit",
-            "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/",
-            "keywords": [
-                "mock",
-                "xunit"
-            ],
-            "time": "2015-10-02T06:51:40+00:00"
-        },
-        {
-            "name": "psr/log",
-            "version": "1.0.2",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/php-fig/log.git",
-                "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
-                "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.0"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.0.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Psr\\Log\\": "Psr/Log/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "PHP-FIG",
-                    "homepage": "http://www.php-fig.org/"
-                }
-            ],
-            "description": "Common interface for logging libraries",
-            "homepage": "https://github.com/php-fig/log",
-            "keywords": [
-                "log",
-                "psr",
-                "psr-3"
-            ],
-            "time": "2016-10-10T12:19:37+00:00"
-        },
-        {
-            "name": "sebastian/comparator",
-            "version": "1.2.4",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/comparator.git",
-                "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2b7424b55f5047b47ac6e5ccb20b2aea4011d9be",
-                "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.3",
-                "sebastian/diff": "~1.2",
-                "sebastian/exporter": "~1.2 || ~2.0"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "~4.4"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.2.x-dev"
-                }
-            },
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Jeff Welch",
-                    "email": "whatthejeff@gmail.com"
-                },
-                {
-                    "name": "Volker Dusch",
-                    "email": "github@wallbash.com"
-                },
-                {
-                    "name": "Bernhard Schussek",
-                    "email": "bschussek@2bepublished.at"
-                },
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de"
-                }
-            ],
-            "description": "Provides the functionality to compare PHP values for equality",
-            "homepage": "http://www.github.com/sebastianbergmann/comparator",
-            "keywords": [
-                "comparator",
-                "compare",
-                "equality"
-            ],
-            "time": "2017-01-29T09:50:25+00:00"
-        },
-        {
-            "name": "sebastian/diff",
-            "version": "1.4.3",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/diff.git",
-                "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/7f066a26a962dbe58ddea9f72a4e82874a3975a4",
-                "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^5.3.3 || ^7.0"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.4-dev"
-                }
-            },
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Kore Nordmann",
-                    "email": "mail@kore-nordmann.de"
-                },
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de"
-                }
-            ],
-            "description": "Diff implementation",
-            "homepage": "https://github.com/sebastianbergmann/diff",
-            "keywords": [
-                "diff"
-            ],
-            "time": "2017-05-22T07:24:03+00:00"
-        },
-        {
-            "name": "sebastian/environment",
-            "version": "1.3.8",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/environment.git",
-                "reference": "be2c607e43ce4c89ecd60e75c6a85c126e754aea"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/be2c607e43ce4c89ecd60e75c6a85c126e754aea",
-                "reference": "be2c607e43ce4c89ecd60e75c6a85c126e754aea",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^5.3.3 || ^7.0"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^4.8 || ^5.0"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.3.x-dev"
-                }
-            },
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de"
-                }
-            ],
-            "description": "Provides functionality to handle HHVM/PHP environments",
-            "homepage": "http://www.github.com/sebastianbergmann/environment",
-            "keywords": [
-                "Xdebug",
-                "environment",
-                "hhvm"
-            ],
-            "time": "2016-08-18T05:49:44+00:00"
-        },
-        {
-            "name": "sebastian/exporter",
-            "version": "1.2.2",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/exporter.git",
-                "reference": "42c4c2eec485ee3e159ec9884f95b431287edde4"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/42c4c2eec485ee3e159ec9884f95b431287edde4",
-                "reference": "42c4c2eec485ee3e159ec9884f95b431287edde4",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.3",
-                "sebastian/recursion-context": "~1.0"
-            },
-            "require-dev": {
-                "ext-mbstring": "*",
-                "phpunit/phpunit": "~4.4"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.3.x-dev"
-                }
-            },
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Jeff Welch",
-                    "email": "whatthejeff@gmail.com"
-                },
-                {
-                    "name": "Volker Dusch",
-                    "email": "github@wallbash.com"
-                },
-                {
-                    "name": "Bernhard Schussek",
-                    "email": "bschussek@2bepublished.at"
-                },
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de"
-                },
-                {
-                    "name": "Adam Harvey",
-                    "email": "aharvey@php.net"
-                }
-            ],
-            "description": "Provides the functionality to export PHP variables for visualization",
-            "homepage": "http://www.github.com/sebastianbergmann/exporter",
-            "keywords": [
-                "export",
-                "exporter"
-            ],
-            "time": "2016-06-17T09:04:28+00:00"
-        },
-        {
-            "name": "sebastian/global-state",
-            "version": "1.1.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/global-state.git",
-                "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4",
-                "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.3"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "~4.2"
-            },
-            "suggest": {
-                "ext-uopz": "*"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.0-dev"
-                }
-            },
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de"
-                }
-            ],
-            "description": "Snapshotting of global state",
-            "homepage": "http://www.github.com/sebastianbergmann/global-state",
-            "keywords": [
-                "global state"
-            ],
-            "time": "2015-10-12T03:26:01+00:00"
-        },
-        {
-            "name": "sebastian/recursion-context",
-            "version": "1.0.5",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/recursion-context.git",
-                "reference": "b19cc3298482a335a95f3016d2f8a6950f0fbcd7"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/b19cc3298482a335a95f3016d2f8a6950f0fbcd7",
-                "reference": "b19cc3298482a335a95f3016d2f8a6950f0fbcd7",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.3"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "~4.4"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.0.x-dev"
-                }
-            },
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Jeff Welch",
-                    "email": "whatthejeff@gmail.com"
-                },
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de"
-                },
-                {
-                    "name": "Adam Harvey",
-                    "email": "aharvey@php.net"
-                }
-            ],
-            "description": "Provides functionality to recursively process PHP variables",
-            "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
-            "time": "2016-10-03T07:41:43+00:00"
-        },
-        {
-            "name": "sebastian/version",
-            "version": "1.0.6",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/version.git",
-                "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/58b3a85e7999757d6ad81c787a1fbf5ff6c628c6",
-                "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6",
-                "shasum": ""
-            },
-            "type": "library",
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de",
-                    "role": "lead"
-                }
-            ],
-            "description": "Library that helps with managing the version number of Git-hosted PHP projects",
-            "homepage": "https://github.com/sebastianbergmann/version",
-            "time": "2015-06-21T13:59:46+00:00"
-        },
-        {
-            "name": "seld/jsonlint",
-            "version": "1.7.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/Seldaek/jsonlint.git",
-                "reference": "d15f59a67ff805a44c50ea0516d2341740f81a38"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/d15f59a67ff805a44c50ea0516d2341740f81a38",
-                "reference": "d15f59a67ff805a44c50ea0516d2341740f81a38",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^5.3 || ^7.0"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
-            },
-            "bin": [
-                "bin/jsonlint"
-            ],
-            "type": "library",
-            "autoload": {
-                "psr-4": {
-                    "Seld\\JsonLint\\": "src/Seld/JsonLint/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Jordi Boggiano",
-                    "email": "j.boggiano@seld.be",
-                    "homepage": "http://seld.be"
-                }
-            ],
-            "description": "JSON Linter",
-            "keywords": [
-                "json",
-                "linter",
-                "parser",
-                "validator"
-            ],
-            "time": "2018-01-24T12:46:19+00:00"
-        },
-        {
-            "name": "seld/phar-utils",
-            "version": "1.0.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/Seldaek/phar-utils.git",
-                "reference": "7009b5139491975ef6486545a39f3e6dad5ac30a"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/Seldaek/phar-utils/zipball/7009b5139491975ef6486545a39f3e6dad5ac30a",
-                "reference": "7009b5139491975ef6486545a39f3e6dad5ac30a",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Seld\\PharUtils\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Jordi Boggiano",
-                    "email": "j.boggiano@seld.be"
-                }
-            ],
-            "description": "PHAR file format utilities, for when PHP phars you up",
-            "keywords": [
-                "phra"
-            ],
-            "time": "2015-10-13T18:44:15+00:00"
-        },
-        {
-            "name": "squizlabs/php_codesniffer",
-            "version": "2.9.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/squizlabs/PHP_CodeSniffer.git",
-                "reference": "dcbed1074f8244661eecddfc2a675430d8d33f62"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/dcbed1074f8244661eecddfc2a675430d8d33f62",
-                "reference": "dcbed1074f8244661eecddfc2a675430d8d33f62",
-                "shasum": ""
-            },
-            "require": {
-                "ext-simplexml": "*",
-                "ext-tokenizer": "*",
-                "ext-xmlwriter": "*",
-                "php": ">=5.1.2"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "~4.0"
-            },
-            "bin": [
-                "scripts/phpcs",
-                "scripts/phpcbf"
-            ],
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "2.x-dev"
-                }
-            },
-            "autoload": {
-                "classmap": [
-                    "CodeSniffer.php",
-                    "CodeSniffer/CLI.php",
-                    "CodeSniffer/Exception.php",
-                    "CodeSniffer/File.php",
-                    "CodeSniffer/Fixer.php",
-                    "CodeSniffer/Report.php",
-                    "CodeSniffer/Reporting.php",
-                    "CodeSniffer/Sniff.php",
-                    "CodeSniffer/Tokens.php",
-                    "CodeSniffer/Reports/",
-                    "CodeSniffer/Tokenizers/",
-                    "CodeSniffer/DocGenerators/",
-                    "CodeSniffer/Standards/AbstractPatternSniff.php",
-                    "CodeSniffer/Standards/AbstractScopeSniff.php",
-                    "CodeSniffer/Standards/AbstractVariableSniff.php",
-                    "CodeSniffer/Standards/IncorrectPatternException.php",
-                    "CodeSniffer/Standards/Generic/Sniffs/",
-                    "CodeSniffer/Standards/MySource/Sniffs/",
-                    "CodeSniffer/Standards/PEAR/Sniffs/",
-                    "CodeSniffer/Standards/PSR1/Sniffs/",
-                    "CodeSniffer/Standards/PSR2/Sniffs/",
-                    "CodeSniffer/Standards/Squiz/Sniffs/",
-                    "CodeSniffer/Standards/Zend/Sniffs/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Greg Sherwood",
-                    "role": "lead"
-                }
-            ],
-            "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.",
-            "homepage": "http://www.squizlabs.com/php-codesniffer",
-            "keywords": [
-                "phpcs",
-                "standards"
-            ],
-            "time": "2017-05-22T02:43:20+00:00"
-        },
-        {
-            "name": "symfony/console",
-            "version": "v3.4.11",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/console.git",
-                "reference": "36f83f642443c46f3cf751d4d2ee5d047d757a27"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/console/zipball/36f83f642443c46f3cf751d4d2ee5d047d757a27",
-                "reference": "36f83f642443c46f3cf751d4d2ee5d047d757a27",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^5.5.9|>=7.0.8",
-                "symfony/debug": "~2.8|~3.0|~4.0",
-                "symfony/polyfill-mbstring": "~1.0"
-            },
-            "conflict": {
-                "symfony/dependency-injection": "<3.4",
-                "symfony/process": "<3.3"
-            },
-            "require-dev": {
-                "psr/log": "~1.0",
-                "symfony/config": "~3.3|~4.0",
-                "symfony/dependency-injection": "~3.4|~4.0",
-                "symfony/event-dispatcher": "~2.8|~3.0|~4.0",
-                "symfony/lock": "~3.4|~4.0",
-                "symfony/process": "~3.3|~4.0"
-            },
-            "suggest": {
-                "psr/log-implementation": "For using the console logger",
-                "symfony/event-dispatcher": "",
-                "symfony/lock": "",
-                "symfony/process": ""
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.4-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Symfony\\Component\\Console\\": ""
-                },
-                "exclude-from-classmap": [
-                    "/Tests/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Fabien Potencier",
-                    "email": "fabien@symfony.com"
-                },
-                {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
-                }
-            ],
-            "description": "Symfony Console Component",
-            "homepage": "https://symfony.com",
-            "time": "2018-05-16T08:49:21+00:00"
-        },
-        {
-            "name": "symfony/debug",
-            "version": "v3.4.11",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/debug.git",
-                "reference": "b28fd73fefbac341f673f5efd707d539d6a19f68"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/debug/zipball/b28fd73fefbac341f673f5efd707d539d6a19f68",
-                "reference": "b28fd73fefbac341f673f5efd707d539d6a19f68",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^5.5.9|>=7.0.8",
-                "psr/log": "~1.0"
-            },
-            "conflict": {
-                "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2"
-            },
-            "require-dev": {
-                "symfony/http-kernel": "~2.8|~3.0|~4.0"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.4-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Symfony\\Component\\Debug\\": ""
-                },
-                "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": "Symfony Debug Component",
-            "homepage": "https://symfony.com",
-            "time": "2018-05-16T14:03:39+00:00"
-        },
-        {
-            "name": "symfony/filesystem",
-            "version": "v3.4.11",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/filesystem.git",
-                "reference": "8e03ca3fa52a0f56b87506f38cf7bd3f9442b3a0"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/filesystem/zipball/8e03ca3fa52a0f56b87506f38cf7bd3f9442b3a0",
-                "reference": "8e03ca3fa52a0f56b87506f38cf7bd3f9442b3a0",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^5.5.9|>=7.0.8",
-                "symfony/polyfill-ctype": "~1.8"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.4-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Symfony\\Component\\Filesystem\\": ""
-                },
-                "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": "Symfony Filesystem Component",
-            "homepage": "https://symfony.com",
-            "time": "2018-05-16T08:49:21+00:00"
-        },
-        {
-            "name": "symfony/finder",
-            "version": "v3.4.11",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/finder.git",
-                "reference": "472a92f3df8b247b49ae364275fb32943b9656c6"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/finder/zipball/472a92f3df8b247b49ae364275fb32943b9656c6",
-                "reference": "472a92f3df8b247b49ae364275fb32943b9656c6",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^5.5.9|>=7.0.8"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.4-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Symfony\\Component\\Finder\\": ""
-                },
-                "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": "Symfony Finder Component",
-            "homepage": "https://symfony.com",
-            "time": "2018-05-16T08:49:21+00:00"
-        },
-        {
-            "name": "symfony/polyfill-ctype",
-            "version": "v1.8.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/polyfill-ctype.git",
-                "reference": "7cc359f1b7b80fc25ed7796be7d96adc9b354bae"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/7cc359f1b7b80fc25ed7796be7d96adc9b354bae",
-                "reference": "7cc359f1b7b80fc25ed7796be7d96adc9b354bae",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.3"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.8-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Symfony\\Polyfill\\Ctype\\": ""
-                },
-                "files": [
-                    "bootstrap.php"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
-                },
-                {
-                    "name": "Gert de Pagter",
-                    "email": "BackEndTea@gmail.com"
-                }
-            ],
-            "description": "Symfony polyfill for ctype functions",
-            "homepage": "https://symfony.com",
-            "keywords": [
-                "compatibility",
-                "ctype",
-                "polyfill",
-                "portable"
-            ],
-            "time": "2018-04-30T19:57:29+00:00"
-        },
-        {
-            "name": "symfony/polyfill-mbstring",
-            "version": "v1.8.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/polyfill-mbstring.git",
-                "reference": "3296adf6a6454a050679cde90f95350ad604b171"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/3296adf6a6454a050679cde90f95350ad604b171",
-                "reference": "3296adf6a6454a050679cde90f95350ad604b171",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.3"
-            },
-            "suggest": {
-                "ext-mbstring": "For best performance"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.8-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Symfony\\Polyfill\\Mbstring\\": ""
-                },
-                "files": [
-                    "bootstrap.php"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Nicolas Grekas",
-                    "email": "p@tchwork.com"
-                },
-                {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
-                }
-            ],
-            "description": "Symfony polyfill for the Mbstring extension",
-            "homepage": "https://symfony.com",
-            "keywords": [
-                "compatibility",
-                "mbstring",
-                "polyfill",
-                "portable",
-                "shim"
-            ],
-            "time": "2018-04-26T10:06:28+00:00"
-        },
-        {
-            "name": "symfony/process",
-            "version": "v3.4.11",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/process.git",
-                "reference": "4cbf2db9abcb01486a21b7a059e03a62fae63187"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/process/zipball/4cbf2db9abcb01486a21b7a059e03a62fae63187",
-                "reference": "4cbf2db9abcb01486a21b7a059e03a62fae63187",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^5.5.9|>=7.0.8"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.4-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Symfony\\Component\\Process\\": ""
-                },
-                "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": "Symfony Process Component",
-            "homepage": "https://symfony.com",
-            "time": "2018-05-16T08:49:21+00:00"
-        },
-        {
-            "name": "symfony/yaml",
-            "version": "v3.4.11",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/yaml.git",
-                "reference": "c5010cc1692ce1fa328b1fb666961eb3d4a85bb0"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/yaml/zipball/c5010cc1692ce1fa328b1fb666961eb3d4a85bb0",
-                "reference": "c5010cc1692ce1fa328b1fb666961eb3d4a85bb0",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^5.5.9|>=7.0.8",
-                "symfony/polyfill-ctype": "~1.8"
-            },
-            "conflict": {
-                "symfony/console": "<3.4"
-            },
-            "require-dev": {
-                "symfony/console": "~3.4|~4.0"
-            },
-            "suggest": {
-                "symfony/console": "For validating YAML files using the lint command"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.4-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Symfony\\Component\\Yaml\\": ""
-                },
-                "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": "Symfony Yaml Component",
-            "homepage": "https://symfony.com",
-            "time": "2018-05-03T23:18:14+00:00"
-        },
-        {
-            "name": "webmozart/assert",
-            "version": "1.3.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/webmozart/assert.git",
-                "reference": "0df1908962e7a3071564e857d86874dad1ef204a"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/webmozart/assert/zipball/0df1908962e7a3071564e857d86874dad1ef204a",
-                "reference": "0df1908962e7a3071564e857d86874dad1ef204a",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^5.3.3 || ^7.0"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^4.6",
-                "sebastian/version": "^1.0.1"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.3-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Webmozart\\Assert\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Bernhard Schussek",
-                    "email": "bschussek@gmail.com"
-                }
-            ],
-            "description": "Assertions to validate method input/output with nice error messages.",
-            "keywords": [
-                "assert",
-                "check",
-                "validate"
-            ],
-            "time": "2018-01-29T19:49:41+00:00"
-        }
-    ],
-    "aliases": [],
-    "minimum-stability": "stable",
-    "stability-flags": {
-        "composer/composer": 20
-    },
-    "prefer-stable": false,
-    "prefer-lowest": false,
-    "platform": {
-        "php": ">=5.4.5"
-    },
-    "platform-dev": [],
-    "platform-overrides": {
-        "php": "5.5.27"
-    }
-}
diff --git a/vendor/drupal-composer/drupal-scaffold/.scenarios.lock/phpunit4/src b/vendor/drupal-composer/drupal-scaffold/.scenarios.lock/phpunit4/src
deleted file mode 120000
index 929cb3dc9ba04d657e86ebde2d29661b78bdd85c..0000000000000000000000000000000000000000
--- a/vendor/drupal-composer/drupal-scaffold/.scenarios.lock/phpunit4/src
+++ /dev/null
@@ -1 +0,0 @@
-../../src
\ No newline at end of file
diff --git a/vendor/drupal-composer/drupal-scaffold/.scenarios.lock/phpunit4/tests b/vendor/drupal-composer/drupal-scaffold/.scenarios.lock/phpunit4/tests
deleted file mode 120000
index c2ebfe530b4e16023832427b3134004e19542bd6..0000000000000000000000000000000000000000
--- a/vendor/drupal-composer/drupal-scaffold/.scenarios.lock/phpunit4/tests
+++ /dev/null
@@ -1 +0,0 @@
-../../tests
\ No newline at end of file
diff --git a/vendor/drupal-composer/drupal-scaffold/.travis.yml b/vendor/drupal-composer/drupal-scaffold/.travis.yml
deleted file mode 100644
index ba2f61edd18ad75859e73a7b2e3f272b8d68e6cb..0000000000000000000000000000000000000000
--- a/vendor/drupal-composer/drupal-scaffold/.travis.yml
+++ /dev/null
@@ -1,42 +0,0 @@
-language: php
-
-branches:
-  # Only test the master branch and SemVer tags.
-  only:
-    - master
-    - /^[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+.*$/
-
-matrix:
-  fast_finish: true
-  include:
-    - php: 7.2
-      env: 'DEPENCENCIES=highest'
-    - php: 7.2
-    - php: 7.1
-    - php: 7.0.11
-    - php: 5.6
-      env: 'SCENARIO=phpunit4'
-    - php: 5.5
-      env: 'SCENARIO=phpunit4'
-    - php: 5.5
-      env: 'SCENARIO=phpunit4 DEPENDENCIES=lowest'
-
-sudo: false
-
-git:
- depth: 10000
-
-before_install:
-  - phpenv config-rm xdebug.ini
-  - composer --verbose self-update
-  - composer --version
-
-install:
-  - 'composer scenario "${SCENARIO}" "${DEPENDENCIES}"'
-
-before_script:
-  - git config --global user.email "travisci@example.com"
-  - git config --global user.name "Travis CI Test"
-
-script:
-  - composer test
diff --git a/vendor/drupal-composer/drupal-scaffold/README.md b/vendor/drupal-composer/drupal-scaffold/README.md
deleted file mode 100644
index 03e14933ccabdf9d37bad30245f92768ef3e6d95..0000000000000000000000000000000000000000
--- a/vendor/drupal-composer/drupal-scaffold/README.md
+++ /dev/null
@@ -1,121 +0,0 @@
-# drupal-scaffold
-
-[![Build Status](https://travis-ci.org/drupal-composer/drupal-scaffold.svg?branch=master)](https://travis-ci.org/drupal-composer/drupal-scaffold)
-
-Composer plugin for automatically downloading Drupal scaffold files (like
-`index.php`, `update.php`, …) when using `drupal/core` via Composer.
-
-It is recommended that the vendor directory be placed in its standard location
-at the project root, outside of the Drupal root; however, the location of the
-vendor directory and the name of the Drupal root may be placed in whatever
-location suits the project.  Drupal-scaffold will generate the autoload.php
-file at the Drupal root to require the Composer-generated autoload file in the
-vendor directory.
-
-## Usage
-
-Run `composer require drupal-composer/drupal-scaffold:dev-master` in your composer
-project before installing or updating `drupal/core`.
-
-Once drupal-scaffold is required by your project, it will automatically update
-your scaffold files whenever `composer update` changes the version of
-`drupal/core` installed.
-
-## Configuration
-
-You can configure the plugin with providing some settings in the `extra` section
-of your root `composer.json`.
-
-```json
-{
-  "extra": {
-    "drupal-scaffold": {
-      "source": "https://cgit.drupalcode.org/drupal/plain/{path}?h={version}",
-      "excludes": [
-        "google123.html",
-        "robots.txt"
-      ],
-      "includes": [
-        "sites/default/example.settings.my.php"
-      ],
-      "initial": {
-        "sites/default/default.services.yml": "sites/default/services.yml",
-        "sites/default/default.settings.php": "sites/default/settings.php"
-      },
-      "omit-defaults": false
-    }
-  }
-}
-```
-The `source` option may be used to specify the URL to download the
-scaffold files from; the default source is drupal.org. The literal string
-`{version}` in the `source` option is replaced with the current version of
-Drupal core being updated prior to download.
-
-With the `drupal-scaffold` option `excludes`, you can provide additional paths
-that should not be copied or overwritten. The plugin provides no excludes by
-default.
-
-Default includes are provided by the plugin:
-```
-.csslintrc
-.editorconfig
-.eslintignore
-.eslintrc (Drupal <= 8.2.x)
-.eslintrc.json (Drupal >= 8.3.x)
-.gitattributes
-.ht.router.php (Drupal >= 8.5.x)
-.htaccess
-index.php
-robots.txt
-sites/default/default.settings.php
-sites/default/default.services.yml
-sites/development.services.yml
-sites/example.settings.local.php
-sites/example.sites.php
-update.php
-web.config
-```
-
-When setting `omit-defaults` to `true`, neither the default excludes nor the
-default includes will be provided; in this instance, only those files explicitly
-listed in the `excludes` and `includes` options will be considered. If
-`omit-defaults` is `false` (the default), then any items listed in `excludes`
-or `includes` will be in addition to the usual defaults.
-
-The `initial` hash lists files that should be copied over only if they do not
-exist in the destination. The key specifies the path to the source file, and
-the value indicates the path to the destination file.
-
-## Limitation
-
-When using Composer to install or update the Drupal development branch, the
-scaffold files are always taken from the HEAD of the branch (or, more
-specifically, from the most recent development .tar.gz archive). This might
-not be what you want when using an old development version (e.g. when the
-version is fixed via composer.lock). To avoid problems, always commit your
-scaffold files to the repository any time that composer.lock is committed.
-Note that the correct scaffold files are retrieved when using a tagged release
-of `drupal/core` (recommended).
-
-## Custom command
-
-The plugin by default is only downloading the scaffold files when installing or
-updating `drupal/core`. If you want to call it manually, you have to add the
-command callback to the `scripts`-section of your root `composer.json`, like this:
-
-```json
-{
-  "scripts": {
-    "drupal-scaffold": "DrupalComposer\\DrupalScaffold\\Plugin::scaffold"
-  }
-}
-```
-
-After that you can manually download the scaffold files according to your
-configuration by using `composer drupal-scaffold`.
-
-It is assumed that the scaffold files will be committed to the repository, to
-ensure that the correct files are used on the CI server (see **Limitation**,
-above). After running `composer install` for the first time commit the scaffold
-files to your repository.
diff --git a/vendor/drupal-composer/drupal-scaffold/composer.json b/vendor/drupal-composer/drupal-scaffold/composer.json
deleted file mode 100644
index b08ff80fc86813034c4d7596018cda5bced5e1c6..0000000000000000000000000000000000000000
--- a/vendor/drupal-composer/drupal-scaffold/composer.json
+++ /dev/null
@@ -1,51 +0,0 @@
-{
-    "name": "drupal-composer/drupal-scaffold",
-    "description": "Composer Plugin for updating the Drupal scaffold files when using drupal/core",
-    "type": "composer-plugin",
-    "license": "GPL-2.0-or-later",
-    "require": {
-        "php": ">=5.4.5",
-        "composer-plugin-api": "^1.0.0",
-        "composer/semver": "^1.4"
-    },
-    "autoload": {
-        "psr-4": {
-            "DrupalComposer\\DrupalScaffold\\": "src/"
-        }
-    },
-    "extra": {
-        "class": "DrupalComposer\\DrupalScaffold\\Plugin",
-        "branch-alias": {
-            "dev-master": "2.0.x-dev"
-        }
-    },
-    "scripts": {
-        "cs": "phpcs --standard=PSR2 -n src",
-        "cbf": "phpcbf --standard=PSR2 -n src",
-        "unit": "phpunit --colors=always",
-        "lint": [
-            "find src -name '*.php' -print0 | xargs -0 -n1 php -l"
-        ],
-        "test": [
-            "@lint",
-            "@unit"
-        ],
-        "scenario": ".scenarios.lock/install",
-        "post-update-cmd": [
-            "create-scenario phpunit4 'phpunit/phpunit:^4.8.36' --platform-php '5.5.27'"
-        ]
-    },
-    "config": {
-        "optimize-autoloader": true,
-        "sort-packages": true,
-        "platform": {
-            "php": "7.0.8"
-        }
-    },
-    "require-dev": {
-        "composer/composer": "dev-master",
-        "g1a/composer-test-scenarios": "^2.1.0",
-        "phpunit/phpunit": "^6",
-        "squizlabs/php_codesniffer": "^2.8"
-    }
-}
diff --git a/vendor/drupal-composer/drupal-scaffold/composer.lock b/vendor/drupal-composer/drupal-scaffold/composer.lock
deleted file mode 100644
index 707e504608cbb8332526ce0644bba70202f746a6..0000000000000000000000000000000000000000
--- a/vendor/drupal-composer/drupal-scaffold/composer.lock
+++ /dev/null
@@ -1,2490 +0,0 @@
-{
-    "_readme": [
-        "This file locks the dependencies of your project to a known state",
-        "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
-        "This file is @generated automatically"
-    ],
-    "content-hash": "cc2cd84cd41c52965cd00f2e515bb6d3",
-    "packages": [
-        {
-            "name": "composer/semver",
-            "version": "1.4.2",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/composer/semver.git",
-                "reference": "c7cb9a2095a074d131b65a8a0cd294479d785573"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/composer/semver/zipball/c7cb9a2095a074d131b65a8a0cd294479d785573",
-                "reference": "c7cb9a2095a074d131b65a8a0cd294479d785573",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^5.3.2 || ^7.0"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^4.5 || ^5.0.5",
-                "phpunit/phpunit-mock-objects": "2.3.0 || ^3.0"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Composer\\Semver\\": "src"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Nils Adermann",
-                    "email": "naderman@naderman.de",
-                    "homepage": "http://www.naderman.de"
-                },
-                {
-                    "name": "Jordi Boggiano",
-                    "email": "j.boggiano@seld.be",
-                    "homepage": "http://seld.be"
-                },
-                {
-                    "name": "Rob Bast",
-                    "email": "rob.bast@gmail.com",
-                    "homepage": "http://robbast.nl"
-                }
-            ],
-            "description": "Semver library that offers utilities, version constraint parsing and validation.",
-            "keywords": [
-                "semantic",
-                "semver",
-                "validation",
-                "versioning"
-            ],
-            "time": "2016-08-30T16:08:34+00:00"
-        }
-    ],
-    "packages-dev": [
-        {
-            "name": "composer/ca-bundle",
-            "version": "1.1.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/composer/ca-bundle.git",
-                "reference": "d2c0a83b7533d6912e8d516756ebd34f893e9169"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/composer/ca-bundle/zipball/d2c0a83b7533d6912e8d516756ebd34f893e9169",
-                "reference": "d2c0a83b7533d6912e8d516756ebd34f893e9169",
-                "shasum": ""
-            },
-            "require": {
-                "ext-openssl": "*",
-                "ext-pcre": "*",
-                "php": "^5.3.2 || ^7.0"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5",
-                "psr/log": "^1.0",
-                "symfony/process": "^2.5 || ^3.0 || ^4.0"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Composer\\CaBundle\\": "src"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Jordi Boggiano",
-                    "email": "j.boggiano@seld.be",
-                    "homepage": "http://seld.be"
-                }
-            ],
-            "description": "Lets you find a path to the system CA bundle, and includes a fallback to the Mozilla CA bundle.",
-            "keywords": [
-                "cabundle",
-                "cacert",
-                "certificate",
-                "ssl",
-                "tls"
-            ],
-            "time": "2018-03-29T19:57:20+00:00"
-        },
-        {
-            "name": "composer/composer",
-            "version": "dev-master",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/composer/composer.git",
-                "reference": "837ad7c14e8ce364296e0d0600d04c415b6e359d"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/composer/composer/zipball/837ad7c14e8ce364296e0d0600d04c415b6e359d",
-                "reference": "837ad7c14e8ce364296e0d0600d04c415b6e359d",
-                "shasum": ""
-            },
-            "require": {
-                "composer/ca-bundle": "^1.0",
-                "composer/semver": "^1.0",
-                "composer/spdx-licenses": "^1.2",
-                "composer/xdebug-handler": "^1.1",
-                "justinrainbow/json-schema": "^3.0 || ^4.0 || ^5.0",
-                "php": "^5.3.2 || ^7.0",
-                "psr/log": "^1.0",
-                "seld/jsonlint": "^1.4",
-                "seld/phar-utils": "^1.0",
-                "symfony/console": "^2.7 || ^3.0 || ^4.0",
-                "symfony/filesystem": "^2.7 || ^3.0 || ^4.0",
-                "symfony/finder": "^2.7 || ^3.0 || ^4.0",
-                "symfony/process": "^2.7 || ^3.0 || ^4.0"
-            },
-            "conflict": {
-                "symfony/console": "2.8.38"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^4.8.35 || ^5.7",
-                "phpunit/phpunit-mock-objects": "^2.3 || ^3.0"
-            },
-            "suggest": {
-                "ext-openssl": "Enabling the openssl extension allows you to access https URLs for repositories and packages",
-                "ext-zip": "Enabling the zip extension allows you to unzip archives",
-                "ext-zlib": "Allow gzip compression of HTTP requests"
-            },
-            "bin": [
-                "bin/composer"
-            ],
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.7-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Composer\\": "src/Composer"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Nils Adermann",
-                    "email": "naderman@naderman.de",
-                    "homepage": "http://www.naderman.de"
-                },
-                {
-                    "name": "Jordi Boggiano",
-                    "email": "j.boggiano@seld.be",
-                    "homepage": "http://seld.be"
-                }
-            ],
-            "description": "Composer helps you declare, manage and install dependencies of PHP projects, ensuring you have the right stack everywhere.",
-            "homepage": "https://getcomposer.org/",
-            "keywords": [
-                "autoload",
-                "dependency",
-                "package"
-            ],
-            "time": "2018-06-07T09:15:18+00:00"
-        },
-        {
-            "name": "composer/spdx-licenses",
-            "version": "1.4.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/composer/spdx-licenses.git",
-                "reference": "cb17687e9f936acd7e7245ad3890f953770dec1b"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/cb17687e9f936acd7e7245ad3890f953770dec1b",
-                "reference": "cb17687e9f936acd7e7245ad3890f953770dec1b",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^5.3.2 || ^7.0"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5",
-                "phpunit/phpunit-mock-objects": "2.3.0 || ^3.0"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Composer\\Spdx\\": "src"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Nils Adermann",
-                    "email": "naderman@naderman.de",
-                    "homepage": "http://www.naderman.de"
-                },
-                {
-                    "name": "Jordi Boggiano",
-                    "email": "j.boggiano@seld.be",
-                    "homepage": "http://seld.be"
-                },
-                {
-                    "name": "Rob Bast",
-                    "email": "rob.bast@gmail.com",
-                    "homepage": "http://robbast.nl"
-                }
-            ],
-            "description": "SPDX licenses list and validation library.",
-            "keywords": [
-                "license",
-                "spdx",
-                "validator"
-            ],
-            "time": "2018-04-30T10:33:04+00:00"
-        },
-        {
-            "name": "composer/xdebug-handler",
-            "version": "1.1.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/composer/xdebug-handler.git",
-                "reference": "c919dc6c62e221fc6406f861ea13433c0aa24f08"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/c919dc6c62e221fc6406f861ea13433c0aa24f08",
-                "reference": "c919dc6c62e221fc6406f861ea13433c0aa24f08",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^5.3.2 || ^7.0",
-                "psr/log": "^1.0"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5"
-            },
-            "type": "library",
-            "autoload": {
-                "psr-4": {
-                    "Composer\\XdebugHandler\\": "src"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "John Stevenson",
-                    "email": "john-stevenson@blueyonder.co.uk"
-                }
-            ],
-            "description": "Restarts a process without xdebug.",
-            "keywords": [
-                "Xdebug",
-                "performance"
-            ],
-            "time": "2018-04-11T15:42:36+00:00"
-        },
-        {
-            "name": "doctrine/instantiator",
-            "version": "1.0.5",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/doctrine/instantiator.git",
-                "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d",
-                "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3,<8.0-DEV"
-            },
-            "require-dev": {
-                "athletic/athletic": "~0.1.8",
-                "ext-pdo": "*",
-                "ext-phar": "*",
-                "phpunit/phpunit": "~4.0",
-                "squizlabs/php_codesniffer": "~2.0"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.0.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Marco Pivetta",
-                    "email": "ocramius@gmail.com",
-                    "homepage": "http://ocramius.github.com/"
-                }
-            ],
-            "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
-            "homepage": "https://github.com/doctrine/instantiator",
-            "keywords": [
-                "constructor",
-                "instantiate"
-            ],
-            "time": "2015-06-14T21:17:01+00:00"
-        },
-        {
-            "name": "g1a/composer-test-scenarios",
-            "version": "2.1.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/g1a/composer-test-scenarios.git",
-                "reference": "4c2b990712dbcb87a0ab618e46f908c731c3a0bb"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/g1a/composer-test-scenarios/zipball/4c2b990712dbcb87a0ab618e46f908c731c3a0bb",
-                "reference": "4c2b990712dbcb87a0ab618e46f908c731c3a0bb",
-                "shasum": ""
-            },
-            "bin": [
-                "scripts/create-scenario",
-                "scripts/dependency-licenses",
-                "scripts/install-scenario"
-            ],
-            "type": "library",
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Greg Anderson",
-                    "email": "greg.1.anderson@greenknowe.org"
-                }
-            ],
-            "description": "Useful scripts for testing multiple sets of Composer dependencies.",
-            "time": "2018-06-10T21:56:28+00:00"
-        },
-        {
-            "name": "justinrainbow/json-schema",
-            "version": "5.2.7",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/justinrainbow/json-schema.git",
-                "reference": "8560d4314577199ba51bf2032f02cd1315587c23"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/8560d4314577199ba51bf2032f02cd1315587c23",
-                "reference": "8560d4314577199ba51bf2032f02cd1315587c23",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.3"
-            },
-            "require-dev": {
-                "friendsofphp/php-cs-fixer": "^2.1",
-                "json-schema/json-schema-test-suite": "1.2.0",
-                "phpunit/phpunit": "^4.8.35"
-            },
-            "bin": [
-                "bin/validate-json"
-            ],
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "5.0.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "JsonSchema\\": "src/JsonSchema/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Bruno Prieto Reis",
-                    "email": "bruno.p.reis@gmail.com"
-                },
-                {
-                    "name": "Justin Rainbow",
-                    "email": "justin.rainbow@gmail.com"
-                },
-                {
-                    "name": "Igor Wiedler",
-                    "email": "igor@wiedler.ch"
-                },
-                {
-                    "name": "Robert Schönthal",
-                    "email": "seroscho@googlemail.com"
-                }
-            ],
-            "description": "A library to validate a json schema.",
-            "homepage": "https://github.com/justinrainbow/json-schema",
-            "keywords": [
-                "json",
-                "schema"
-            ],
-            "time": "2018-02-14T22:26:30+00:00"
-        },
-        {
-            "name": "myclabs/deep-copy",
-            "version": "1.7.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/myclabs/DeepCopy.git",
-                "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e",
-                "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^5.6 || ^7.0"
-            },
-            "require-dev": {
-                "doctrine/collections": "^1.0",
-                "doctrine/common": "^2.6",
-                "phpunit/phpunit": "^4.1"
-            },
-            "type": "library",
-            "autoload": {
-                "psr-4": {
-                    "DeepCopy\\": "src/DeepCopy/"
-                },
-                "files": [
-                    "src/DeepCopy/deep_copy.php"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "description": "Create deep copies (clones) of your objects",
-            "keywords": [
-                "clone",
-                "copy",
-                "duplicate",
-                "object",
-                "object graph"
-            ],
-            "time": "2017-10-19T19:58:43+00:00"
-        },
-        {
-            "name": "phar-io/manifest",
-            "version": "1.0.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/phar-io/manifest.git",
-                "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/phar-io/manifest/zipball/2df402786ab5368a0169091f61a7c1e0eb6852d0",
-                "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0",
-                "shasum": ""
-            },
-            "require": {
-                "ext-dom": "*",
-                "ext-phar": "*",
-                "phar-io/version": "^1.0.1",
-                "php": "^5.6 || ^7.0"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.0.x-dev"
-                }
-            },
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Arne Blankerts",
-                    "email": "arne@blankerts.de",
-                    "role": "Developer"
-                },
-                {
-                    "name": "Sebastian Heuer",
-                    "email": "sebastian@phpeople.de",
-                    "role": "Developer"
-                },
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de",
-                    "role": "Developer"
-                }
-            ],
-            "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)",
-            "time": "2017-03-05T18:14:27+00:00"
-        },
-        {
-            "name": "phar-io/version",
-            "version": "1.0.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/phar-io/version.git",
-                "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/phar-io/version/zipball/a70c0ced4be299a63d32fa96d9281d03e94041df",
-                "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^5.6 || ^7.0"
-            },
-            "type": "library",
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Arne Blankerts",
-                    "email": "arne@blankerts.de",
-                    "role": "Developer"
-                },
-                {
-                    "name": "Sebastian Heuer",
-                    "email": "sebastian@phpeople.de",
-                    "role": "Developer"
-                },
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de",
-                    "role": "Developer"
-                }
-            ],
-            "description": "Library for handling version information and constraints",
-            "time": "2017-03-05T17:38:23+00:00"
-        },
-        {
-            "name": "phpdocumentor/reflection-common",
-            "version": "1.0.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
-                "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
-                "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.5"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^4.6"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.0.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "phpDocumentor\\Reflection\\": [
-                        "src"
-                    ]
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Jaap van Otterdijk",
-                    "email": "opensource@ijaap.nl"
-                }
-            ],
-            "description": "Common reflection classes used by phpdocumentor to reflect the code structure",
-            "homepage": "http://www.phpdoc.org",
-            "keywords": [
-                "FQSEN",
-                "phpDocumentor",
-                "phpdoc",
-                "reflection",
-                "static analysis"
-            ],
-            "time": "2017-09-11T18:02:19+00:00"
-        },
-        {
-            "name": "phpdocumentor/reflection-docblock",
-            "version": "4.3.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
-                "reference": "94fd0001232e47129dd3504189fa1c7225010d08"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/94fd0001232e47129dd3504189fa1c7225010d08",
-                "reference": "94fd0001232e47129dd3504189fa1c7225010d08",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^7.0",
-                "phpdocumentor/reflection-common": "^1.0.0",
-                "phpdocumentor/type-resolver": "^0.4.0",
-                "webmozart/assert": "^1.0"
-            },
-            "require-dev": {
-                "doctrine/instantiator": "~1.0.5",
-                "mockery/mockery": "^1.0",
-                "phpunit/phpunit": "^6.4"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "4.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "phpDocumentor\\Reflection\\": [
-                        "src/"
-                    ]
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Mike van Riel",
-                    "email": "me@mikevanriel.com"
-                }
-            ],
-            "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
-            "time": "2017-11-30T07:14:17+00:00"
-        },
-        {
-            "name": "phpdocumentor/type-resolver",
-            "version": "0.4.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/phpDocumentor/TypeResolver.git",
-                "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7",
-                "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^5.5 || ^7.0",
-                "phpdocumentor/reflection-common": "^1.0"
-            },
-            "require-dev": {
-                "mockery/mockery": "^0.9.4",
-                "phpunit/phpunit": "^5.2||^4.8.24"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.0.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "phpDocumentor\\Reflection\\": [
-                        "src/"
-                    ]
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Mike van Riel",
-                    "email": "me@mikevanriel.com"
-                }
-            ],
-            "time": "2017-07-14T14:27:02+00:00"
-        },
-        {
-            "name": "phpspec/prophecy",
-            "version": "1.7.6",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/phpspec/prophecy.git",
-                "reference": "33a7e3c4fda54e912ff6338c48823bd5c0f0b712"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/phpspec/prophecy/zipball/33a7e3c4fda54e912ff6338c48823bd5c0f0b712",
-                "reference": "33a7e3c4fda54e912ff6338c48823bd5c0f0b712",
-                "shasum": ""
-            },
-            "require": {
-                "doctrine/instantiator": "^1.0.2",
-                "php": "^5.3|^7.0",
-                "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0",
-                "sebastian/comparator": "^1.1|^2.0|^3.0",
-                "sebastian/recursion-context": "^1.0|^2.0|^3.0"
-            },
-            "require-dev": {
-                "phpspec/phpspec": "^2.5|^3.2",
-                "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.7.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-0": {
-                    "Prophecy\\": "src/"
-                }
-            },
-            "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"
-            ],
-            "time": "2018-04-18T13:57:24+00:00"
-        },
-        {
-            "name": "phpunit/php-code-coverage",
-            "version": "5.3.2",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
-                "reference": "c89677919c5dd6d3b3852f230a663118762218ac"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/c89677919c5dd6d3b3852f230a663118762218ac",
-                "reference": "c89677919c5dd6d3b3852f230a663118762218ac",
-                "shasum": ""
-            },
-            "require": {
-                "ext-dom": "*",
-                "ext-xmlwriter": "*",
-                "php": "^7.0",
-                "phpunit/php-file-iterator": "^1.4.2",
-                "phpunit/php-text-template": "^1.2.1",
-                "phpunit/php-token-stream": "^2.0.1",
-                "sebastian/code-unit-reverse-lookup": "^1.0.1",
-                "sebastian/environment": "^3.0",
-                "sebastian/version": "^2.0.1",
-                "theseer/tokenizer": "^1.1"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^6.0"
-            },
-            "suggest": {
-                "ext-xdebug": "^2.5.5"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "5.3.x-dev"
-                }
-            },
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de",
-                    "role": "lead"
-                }
-            ],
-            "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
-            "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
-            "keywords": [
-                "coverage",
-                "testing",
-                "xunit"
-            ],
-            "time": "2018-04-06T15:36:58+00:00"
-        },
-        {
-            "name": "phpunit/php-file-iterator",
-            "version": "1.4.5",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
-                "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4",
-                "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.3"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.4.x-dev"
-                }
-            },
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sb@sebastian-bergmann.de",
-                    "role": "lead"
-                }
-            ],
-            "description": "FilterIterator implementation that filters files based on a list of suffixes.",
-            "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
-            "keywords": [
-                "filesystem",
-                "iterator"
-            ],
-            "time": "2017-11-27T13:52:08+00:00"
-        },
-        {
-            "name": "phpunit/php-text-template",
-            "version": "1.2.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/php-text-template.git",
-                "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
-                "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.3"
-            },
-            "type": "library",
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de",
-                    "role": "lead"
-                }
-            ],
-            "description": "Simple template engine.",
-            "homepage": "https://github.com/sebastianbergmann/php-text-template/",
-            "keywords": [
-                "template"
-            ],
-            "time": "2015-06-21T13:50:34+00:00"
-        },
-        {
-            "name": "phpunit/php-timer",
-            "version": "1.0.9",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/php-timer.git",
-                "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f",
-                "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^5.3.3 || ^7.0"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.0-dev"
-                }
-            },
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sb@sebastian-bergmann.de",
-                    "role": "lead"
-                }
-            ],
-            "description": "Utility class for timing",
-            "homepage": "https://github.com/sebastianbergmann/php-timer/",
-            "keywords": [
-                "timer"
-            ],
-            "time": "2017-02-26T11:10:40+00:00"
-        },
-        {
-            "name": "phpunit/php-token-stream",
-            "version": "2.0.2",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/php-token-stream.git",
-                "reference": "791198a2c6254db10131eecfe8c06670700904db"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/791198a2c6254db10131eecfe8c06670700904db",
-                "reference": "791198a2c6254db10131eecfe8c06670700904db",
-                "shasum": ""
-            },
-            "require": {
-                "ext-tokenizer": "*",
-                "php": "^7.0"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^6.2.4"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "2.0-dev"
-                }
-            },
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de"
-                }
-            ],
-            "description": "Wrapper around PHP's tokenizer extension.",
-            "homepage": "https://github.com/sebastianbergmann/php-token-stream/",
-            "keywords": [
-                "tokenizer"
-            ],
-            "time": "2017-11-27T05:48:46+00:00"
-        },
-        {
-            "name": "phpunit/phpunit",
-            "version": "6.5.8",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/phpunit.git",
-                "reference": "4f21a3c6b97c42952fd5c2837bb354ec0199b97b"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/4f21a3c6b97c42952fd5c2837bb354ec0199b97b",
-                "reference": "4f21a3c6b97c42952fd5c2837bb354ec0199b97b",
-                "shasum": ""
-            },
-            "require": {
-                "ext-dom": "*",
-                "ext-json": "*",
-                "ext-libxml": "*",
-                "ext-mbstring": "*",
-                "ext-xml": "*",
-                "myclabs/deep-copy": "^1.6.1",
-                "phar-io/manifest": "^1.0.1",
-                "phar-io/version": "^1.0",
-                "php": "^7.0",
-                "phpspec/prophecy": "^1.7",
-                "phpunit/php-code-coverage": "^5.3",
-                "phpunit/php-file-iterator": "^1.4.3",
-                "phpunit/php-text-template": "^1.2.1",
-                "phpunit/php-timer": "^1.0.9",
-                "phpunit/phpunit-mock-objects": "^5.0.5",
-                "sebastian/comparator": "^2.1",
-                "sebastian/diff": "^2.0",
-                "sebastian/environment": "^3.1",
-                "sebastian/exporter": "^3.1",
-                "sebastian/global-state": "^2.0",
-                "sebastian/object-enumerator": "^3.0.3",
-                "sebastian/resource-operations": "^1.0",
-                "sebastian/version": "^2.0.1"
-            },
-            "conflict": {
-                "phpdocumentor/reflection-docblock": "3.0.2",
-                "phpunit/dbunit": "<3.0"
-            },
-            "require-dev": {
-                "ext-pdo": "*"
-            },
-            "suggest": {
-                "ext-xdebug": "*",
-                "phpunit/php-invoker": "^1.1"
-            },
-            "bin": [
-                "phpunit"
-            ],
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "6.5.x-dev"
-                }
-            },
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de",
-                    "role": "lead"
-                }
-            ],
-            "description": "The PHP Unit Testing framework.",
-            "homepage": "https://phpunit.de/",
-            "keywords": [
-                "phpunit",
-                "testing",
-                "xunit"
-            ],
-            "time": "2018-04-10T11:38:34+00:00"
-        },
-        {
-            "name": "phpunit/phpunit-mock-objects",
-            "version": "5.0.7",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
-                "reference": "3eaf040f20154d27d6da59ca2c6e28ac8fd56dce"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/3eaf040f20154d27d6da59ca2c6e28ac8fd56dce",
-                "reference": "3eaf040f20154d27d6da59ca2c6e28ac8fd56dce",
-                "shasum": ""
-            },
-            "require": {
-                "doctrine/instantiator": "^1.0.5",
-                "php": "^7.0",
-                "phpunit/php-text-template": "^1.2.1",
-                "sebastian/exporter": "^3.1"
-            },
-            "conflict": {
-                "phpunit/phpunit": "<6.0"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^6.5"
-            },
-            "suggest": {
-                "ext-soap": "*"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "5.0.x-dev"
-                }
-            },
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de",
-                    "role": "lead"
-                }
-            ],
-            "description": "Mock Object library for PHPUnit",
-            "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/",
-            "keywords": [
-                "mock",
-                "xunit"
-            ],
-            "time": "2018-05-29T13:50:43+00:00"
-        },
-        {
-            "name": "psr/log",
-            "version": "1.0.2",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/php-fig/log.git",
-                "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
-                "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.0"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.0.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Psr\\Log\\": "Psr/Log/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "PHP-FIG",
-                    "homepage": "http://www.php-fig.org/"
-                }
-            ],
-            "description": "Common interface for logging libraries",
-            "homepage": "https://github.com/php-fig/log",
-            "keywords": [
-                "log",
-                "psr",
-                "psr-3"
-            ],
-            "time": "2016-10-10T12:19:37+00:00"
-        },
-        {
-            "name": "sebastian/code-unit-reverse-lookup",
-            "version": "1.0.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git",
-                "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18",
-                "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^5.6 || ^7.0"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^5.7 || ^6.0"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.0.x-dev"
-                }
-            },
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de"
-                }
-            ],
-            "description": "Looks up which function or method a line of code belongs to",
-            "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/",
-            "time": "2017-03-04T06:30:41+00:00"
-        },
-        {
-            "name": "sebastian/comparator",
-            "version": "2.1.3",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/comparator.git",
-                "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/34369daee48eafb2651bea869b4b15d75ccc35f9",
-                "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^7.0",
-                "sebastian/diff": "^2.0 || ^3.0",
-                "sebastian/exporter": "^3.1"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^6.4"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "2.1.x-dev"
-                }
-            },
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Jeff Welch",
-                    "email": "whatthejeff@gmail.com"
-                },
-                {
-                    "name": "Volker Dusch",
-                    "email": "github@wallbash.com"
-                },
-                {
-                    "name": "Bernhard Schussek",
-                    "email": "bschussek@2bepublished.at"
-                },
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de"
-                }
-            ],
-            "description": "Provides the functionality to compare PHP values for equality",
-            "homepage": "https://github.com/sebastianbergmann/comparator",
-            "keywords": [
-                "comparator",
-                "compare",
-                "equality"
-            ],
-            "time": "2018-02-01T13:46:46+00:00"
-        },
-        {
-            "name": "sebastian/diff",
-            "version": "2.0.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/diff.git",
-                "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/347c1d8b49c5c3ee30c7040ea6fc446790e6bddd",
-                "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^7.0"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^6.2"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "2.0-dev"
-                }
-            },
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Kore Nordmann",
-                    "email": "mail@kore-nordmann.de"
-                },
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de"
-                }
-            ],
-            "description": "Diff implementation",
-            "homepage": "https://github.com/sebastianbergmann/diff",
-            "keywords": [
-                "diff"
-            ],
-            "time": "2017-08-03T08:09:46+00:00"
-        },
-        {
-            "name": "sebastian/environment",
-            "version": "3.1.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/environment.git",
-                "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/cd0871b3975fb7fc44d11314fd1ee20925fce4f5",
-                "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^7.0"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^6.1"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.1.x-dev"
-                }
-            },
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de"
-                }
-            ],
-            "description": "Provides functionality to handle HHVM/PHP environments",
-            "homepage": "http://www.github.com/sebastianbergmann/environment",
-            "keywords": [
-                "Xdebug",
-                "environment",
-                "hhvm"
-            ],
-            "time": "2017-07-01T08:51:00+00:00"
-        },
-        {
-            "name": "sebastian/exporter",
-            "version": "3.1.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/exporter.git",
-                "reference": "234199f4528de6d12aaa58b612e98f7d36adb937"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/234199f4528de6d12aaa58b612e98f7d36adb937",
-                "reference": "234199f4528de6d12aaa58b612e98f7d36adb937",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^7.0",
-                "sebastian/recursion-context": "^3.0"
-            },
-            "require-dev": {
-                "ext-mbstring": "*",
-                "phpunit/phpunit": "^6.0"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.1.x-dev"
-                }
-            },
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Jeff Welch",
-                    "email": "whatthejeff@gmail.com"
-                },
-                {
-                    "name": "Volker Dusch",
-                    "email": "github@wallbash.com"
-                },
-                {
-                    "name": "Bernhard Schussek",
-                    "email": "bschussek@2bepublished.at"
-                },
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de"
-                },
-                {
-                    "name": "Adam Harvey",
-                    "email": "aharvey@php.net"
-                }
-            ],
-            "description": "Provides the functionality to export PHP variables for visualization",
-            "homepage": "http://www.github.com/sebastianbergmann/exporter",
-            "keywords": [
-                "export",
-                "exporter"
-            ],
-            "time": "2017-04-03T13:19:02+00:00"
-        },
-        {
-            "name": "sebastian/global-state",
-            "version": "2.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/global-state.git",
-                "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4",
-                "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^7.0"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^6.0"
-            },
-            "suggest": {
-                "ext-uopz": "*"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "2.0-dev"
-                }
-            },
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de"
-                }
-            ],
-            "description": "Snapshotting of global state",
-            "homepage": "http://www.github.com/sebastianbergmann/global-state",
-            "keywords": [
-                "global state"
-            ],
-            "time": "2017-04-27T15:39:26+00:00"
-        },
-        {
-            "name": "sebastian/object-enumerator",
-            "version": "3.0.3",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/object-enumerator.git",
-                "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/7cfd9e65d11ffb5af41198476395774d4c8a84c5",
-                "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^7.0",
-                "sebastian/object-reflector": "^1.1.1",
-                "sebastian/recursion-context": "^3.0"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^6.0"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.0.x-dev"
-                }
-            },
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de"
-                }
-            ],
-            "description": "Traverses array structures and object graphs to enumerate all referenced objects",
-            "homepage": "https://github.com/sebastianbergmann/object-enumerator/",
-            "time": "2017-08-03T12:35:26+00:00"
-        },
-        {
-            "name": "sebastian/object-reflector",
-            "version": "1.1.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/object-reflector.git",
-                "reference": "773f97c67f28de00d397be301821b06708fca0be"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/773f97c67f28de00d397be301821b06708fca0be",
-                "reference": "773f97c67f28de00d397be301821b06708fca0be",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^7.0"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^6.0"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.1-dev"
-                }
-            },
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de"
-                }
-            ],
-            "description": "Allows reflection of object attributes, including inherited and non-public ones",
-            "homepage": "https://github.com/sebastianbergmann/object-reflector/",
-            "time": "2017-03-29T09:07:27+00:00"
-        },
-        {
-            "name": "sebastian/recursion-context",
-            "version": "3.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/recursion-context.git",
-                "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8",
-                "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^7.0"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^6.0"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.0.x-dev"
-                }
-            },
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Jeff Welch",
-                    "email": "whatthejeff@gmail.com"
-                },
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de"
-                },
-                {
-                    "name": "Adam Harvey",
-                    "email": "aharvey@php.net"
-                }
-            ],
-            "description": "Provides functionality to recursively process PHP variables",
-            "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
-            "time": "2017-03-03T06:23:57+00:00"
-        },
-        {
-            "name": "sebastian/resource-operations",
-            "version": "1.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/resource-operations.git",
-                "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52",
-                "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.6.0"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.0.x-dev"
-                }
-            },
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de"
-                }
-            ],
-            "description": "Provides a list of PHP built-in functions that operate on resources",
-            "homepage": "https://www.github.com/sebastianbergmann/resource-operations",
-            "time": "2015-07-28T20:34:47+00:00"
-        },
-        {
-            "name": "sebastian/version",
-            "version": "2.0.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/version.git",
-                "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019",
-                "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.6"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "2.0.x-dev"
-                }
-            },
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de",
-                    "role": "lead"
-                }
-            ],
-            "description": "Library that helps with managing the version number of Git-hosted PHP projects",
-            "homepage": "https://github.com/sebastianbergmann/version",
-            "time": "2016-10-03T07:35:21+00:00"
-        },
-        {
-            "name": "seld/jsonlint",
-            "version": "1.7.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/Seldaek/jsonlint.git",
-                "reference": "d15f59a67ff805a44c50ea0516d2341740f81a38"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/d15f59a67ff805a44c50ea0516d2341740f81a38",
-                "reference": "d15f59a67ff805a44c50ea0516d2341740f81a38",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^5.3 || ^7.0"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
-            },
-            "bin": [
-                "bin/jsonlint"
-            ],
-            "type": "library",
-            "autoload": {
-                "psr-4": {
-                    "Seld\\JsonLint\\": "src/Seld/JsonLint/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Jordi Boggiano",
-                    "email": "j.boggiano@seld.be",
-                    "homepage": "http://seld.be"
-                }
-            ],
-            "description": "JSON Linter",
-            "keywords": [
-                "json",
-                "linter",
-                "parser",
-                "validator"
-            ],
-            "time": "2018-01-24T12:46:19+00:00"
-        },
-        {
-            "name": "seld/phar-utils",
-            "version": "1.0.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/Seldaek/phar-utils.git",
-                "reference": "7009b5139491975ef6486545a39f3e6dad5ac30a"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/Seldaek/phar-utils/zipball/7009b5139491975ef6486545a39f3e6dad5ac30a",
-                "reference": "7009b5139491975ef6486545a39f3e6dad5ac30a",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Seld\\PharUtils\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Jordi Boggiano",
-                    "email": "j.boggiano@seld.be"
-                }
-            ],
-            "description": "PHAR file format utilities, for when PHP phars you up",
-            "keywords": [
-                "phra"
-            ],
-            "time": "2015-10-13T18:44:15+00:00"
-        },
-        {
-            "name": "squizlabs/php_codesniffer",
-            "version": "2.9.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/squizlabs/PHP_CodeSniffer.git",
-                "reference": "dcbed1074f8244661eecddfc2a675430d8d33f62"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/dcbed1074f8244661eecddfc2a675430d8d33f62",
-                "reference": "dcbed1074f8244661eecddfc2a675430d8d33f62",
-                "shasum": ""
-            },
-            "require": {
-                "ext-simplexml": "*",
-                "ext-tokenizer": "*",
-                "ext-xmlwriter": "*",
-                "php": ">=5.1.2"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "~4.0"
-            },
-            "bin": [
-                "scripts/phpcs",
-                "scripts/phpcbf"
-            ],
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "2.x-dev"
-                }
-            },
-            "autoload": {
-                "classmap": [
-                    "CodeSniffer.php",
-                    "CodeSniffer/CLI.php",
-                    "CodeSniffer/Exception.php",
-                    "CodeSniffer/File.php",
-                    "CodeSniffer/Fixer.php",
-                    "CodeSniffer/Report.php",
-                    "CodeSniffer/Reporting.php",
-                    "CodeSniffer/Sniff.php",
-                    "CodeSniffer/Tokens.php",
-                    "CodeSniffer/Reports/",
-                    "CodeSniffer/Tokenizers/",
-                    "CodeSniffer/DocGenerators/",
-                    "CodeSniffer/Standards/AbstractPatternSniff.php",
-                    "CodeSniffer/Standards/AbstractScopeSniff.php",
-                    "CodeSniffer/Standards/AbstractVariableSniff.php",
-                    "CodeSniffer/Standards/IncorrectPatternException.php",
-                    "CodeSniffer/Standards/Generic/Sniffs/",
-                    "CodeSniffer/Standards/MySource/Sniffs/",
-                    "CodeSniffer/Standards/PEAR/Sniffs/",
-                    "CodeSniffer/Standards/PSR1/Sniffs/",
-                    "CodeSniffer/Standards/PSR2/Sniffs/",
-                    "CodeSniffer/Standards/Squiz/Sniffs/",
-                    "CodeSniffer/Standards/Zend/Sniffs/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Greg Sherwood",
-                    "role": "lead"
-                }
-            ],
-            "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.",
-            "homepage": "http://www.squizlabs.com/php-codesniffer",
-            "keywords": [
-                "phpcs",
-                "standards"
-            ],
-            "time": "2017-05-22T02:43:20+00:00"
-        },
-        {
-            "name": "symfony/console",
-            "version": "v3.4.11",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/console.git",
-                "reference": "36f83f642443c46f3cf751d4d2ee5d047d757a27"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/console/zipball/36f83f642443c46f3cf751d4d2ee5d047d757a27",
-                "reference": "36f83f642443c46f3cf751d4d2ee5d047d757a27",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^5.5.9|>=7.0.8",
-                "symfony/debug": "~2.8|~3.0|~4.0",
-                "symfony/polyfill-mbstring": "~1.0"
-            },
-            "conflict": {
-                "symfony/dependency-injection": "<3.4",
-                "symfony/process": "<3.3"
-            },
-            "require-dev": {
-                "psr/log": "~1.0",
-                "symfony/config": "~3.3|~4.0",
-                "symfony/dependency-injection": "~3.4|~4.0",
-                "symfony/event-dispatcher": "~2.8|~3.0|~4.0",
-                "symfony/lock": "~3.4|~4.0",
-                "symfony/process": "~3.3|~4.0"
-            },
-            "suggest": {
-                "psr/log-implementation": "For using the console logger",
-                "symfony/event-dispatcher": "",
-                "symfony/lock": "",
-                "symfony/process": ""
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.4-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Symfony\\Component\\Console\\": ""
-                },
-                "exclude-from-classmap": [
-                    "/Tests/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Fabien Potencier",
-                    "email": "fabien@symfony.com"
-                },
-                {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
-                }
-            ],
-            "description": "Symfony Console Component",
-            "homepage": "https://symfony.com",
-            "time": "2018-05-16T08:49:21+00:00"
-        },
-        {
-            "name": "symfony/debug",
-            "version": "v3.4.11",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/debug.git",
-                "reference": "b28fd73fefbac341f673f5efd707d539d6a19f68"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/debug/zipball/b28fd73fefbac341f673f5efd707d539d6a19f68",
-                "reference": "b28fd73fefbac341f673f5efd707d539d6a19f68",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^5.5.9|>=7.0.8",
-                "psr/log": "~1.0"
-            },
-            "conflict": {
-                "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2"
-            },
-            "require-dev": {
-                "symfony/http-kernel": "~2.8|~3.0|~4.0"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.4-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Symfony\\Component\\Debug\\": ""
-                },
-                "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": "Symfony Debug Component",
-            "homepage": "https://symfony.com",
-            "time": "2018-05-16T14:03:39+00:00"
-        },
-        {
-            "name": "symfony/filesystem",
-            "version": "v3.4.11",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/filesystem.git",
-                "reference": "8e03ca3fa52a0f56b87506f38cf7bd3f9442b3a0"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/filesystem/zipball/8e03ca3fa52a0f56b87506f38cf7bd3f9442b3a0",
-                "reference": "8e03ca3fa52a0f56b87506f38cf7bd3f9442b3a0",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^5.5.9|>=7.0.8",
-                "symfony/polyfill-ctype": "~1.8"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.4-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Symfony\\Component\\Filesystem\\": ""
-                },
-                "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": "Symfony Filesystem Component",
-            "homepage": "https://symfony.com",
-            "time": "2018-05-16T08:49:21+00:00"
-        },
-        {
-            "name": "symfony/finder",
-            "version": "v3.4.11",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/finder.git",
-                "reference": "472a92f3df8b247b49ae364275fb32943b9656c6"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/finder/zipball/472a92f3df8b247b49ae364275fb32943b9656c6",
-                "reference": "472a92f3df8b247b49ae364275fb32943b9656c6",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^5.5.9|>=7.0.8"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.4-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Symfony\\Component\\Finder\\": ""
-                },
-                "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": "Symfony Finder Component",
-            "homepage": "https://symfony.com",
-            "time": "2018-05-16T08:49:21+00:00"
-        },
-        {
-            "name": "symfony/polyfill-ctype",
-            "version": "v1.8.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/polyfill-ctype.git",
-                "reference": "7cc359f1b7b80fc25ed7796be7d96adc9b354bae"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/7cc359f1b7b80fc25ed7796be7d96adc9b354bae",
-                "reference": "7cc359f1b7b80fc25ed7796be7d96adc9b354bae",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.3"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.8-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Symfony\\Polyfill\\Ctype\\": ""
-                },
-                "files": [
-                    "bootstrap.php"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
-                },
-                {
-                    "name": "Gert de Pagter",
-                    "email": "BackEndTea@gmail.com"
-                }
-            ],
-            "description": "Symfony polyfill for ctype functions",
-            "homepage": "https://symfony.com",
-            "keywords": [
-                "compatibility",
-                "ctype",
-                "polyfill",
-                "portable"
-            ],
-            "time": "2018-04-30T19:57:29+00:00"
-        },
-        {
-            "name": "symfony/polyfill-mbstring",
-            "version": "v1.8.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/polyfill-mbstring.git",
-                "reference": "3296adf6a6454a050679cde90f95350ad604b171"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/3296adf6a6454a050679cde90f95350ad604b171",
-                "reference": "3296adf6a6454a050679cde90f95350ad604b171",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.3"
-            },
-            "suggest": {
-                "ext-mbstring": "For best performance"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.8-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Symfony\\Polyfill\\Mbstring\\": ""
-                },
-                "files": [
-                    "bootstrap.php"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Nicolas Grekas",
-                    "email": "p@tchwork.com"
-                },
-                {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
-                }
-            ],
-            "description": "Symfony polyfill for the Mbstring extension",
-            "homepage": "https://symfony.com",
-            "keywords": [
-                "compatibility",
-                "mbstring",
-                "polyfill",
-                "portable",
-                "shim"
-            ],
-            "time": "2018-04-26T10:06:28+00:00"
-        },
-        {
-            "name": "symfony/process",
-            "version": "v3.4.11",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/process.git",
-                "reference": "4cbf2db9abcb01486a21b7a059e03a62fae63187"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/process/zipball/4cbf2db9abcb01486a21b7a059e03a62fae63187",
-                "reference": "4cbf2db9abcb01486a21b7a059e03a62fae63187",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^5.5.9|>=7.0.8"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.4-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Symfony\\Component\\Process\\": ""
-                },
-                "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": "Symfony Process Component",
-            "homepage": "https://symfony.com",
-            "time": "2018-05-16T08:49:21+00:00"
-        },
-        {
-            "name": "theseer/tokenizer",
-            "version": "1.1.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/theseer/tokenizer.git",
-                "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/theseer/tokenizer/zipball/cb2f008f3f05af2893a87208fe6a6c4985483f8b",
-                "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b",
-                "shasum": ""
-            },
-            "require": {
-                "ext-dom": "*",
-                "ext-tokenizer": "*",
-                "ext-xmlwriter": "*",
-                "php": "^7.0"
-            },
-            "type": "library",
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Arne Blankerts",
-                    "email": "arne@blankerts.de",
-                    "role": "Developer"
-                }
-            ],
-            "description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
-            "time": "2017-04-07T12:08:54+00:00"
-        },
-        {
-            "name": "webmozart/assert",
-            "version": "1.3.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/webmozart/assert.git",
-                "reference": "0df1908962e7a3071564e857d86874dad1ef204a"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/webmozart/assert/zipball/0df1908962e7a3071564e857d86874dad1ef204a",
-                "reference": "0df1908962e7a3071564e857d86874dad1ef204a",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^5.3.3 || ^7.0"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^4.6",
-                "sebastian/version": "^1.0.1"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.3-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Webmozart\\Assert\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Bernhard Schussek",
-                    "email": "bschussek@gmail.com"
-                }
-            ],
-            "description": "Assertions to validate method input/output with nice error messages.",
-            "keywords": [
-                "assert",
-                "check",
-                "validate"
-            ],
-            "time": "2018-01-29T19:49:41+00:00"
-        }
-    ],
-    "aliases": [],
-    "minimum-stability": "stable",
-    "stability-flags": {
-        "composer/composer": 20
-    },
-    "prefer-stable": false,
-    "prefer-lowest": false,
-    "platform": {
-        "php": ">=5.4.5"
-    },
-    "platform-dev": [],
-    "platform-overrides": {
-        "php": "7.0.8"
-    }
-}
diff --git a/vendor/drupal-composer/drupal-scaffold/phpunit.xml.dist b/vendor/drupal-composer/drupal-scaffold/phpunit.xml.dist
deleted file mode 100644
index ac16a3eafb32e04f8ff0e1895b3aeec355948492..0000000000000000000000000000000000000000
--- a/vendor/drupal-composer/drupal-scaffold/phpunit.xml.dist
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/4.1/phpunit.xsd"
-    backupGlobals="false"
-    colors="true"
-    bootstrap="vendor/autoload.php"
-    verbose="true"
->
-    <testsuites>
-        <testsuite name="drupal-scaffold">
-            <directory>./tests/</directory>
-        </testsuite>
-    </testsuites>
-</phpunit>
diff --git a/vendor/drupal-composer/drupal-scaffold/src/DrupalScaffoldCommand.php b/vendor/drupal-composer/drupal-scaffold/src/DrupalScaffoldCommand.php
deleted file mode 100644
index 485a2f531a99d575b44cea79068392cd9b340900..0000000000000000000000000000000000000000
--- a/vendor/drupal-composer/drupal-scaffold/src/DrupalScaffoldCommand.php
+++ /dev/null
@@ -1,36 +0,0 @@
-<?php
-
-namespace DrupalComposer\DrupalScaffold;
-
-use Composer\Command\BaseCommand;
-use Symfony\Component\Console\Input\InputInterface;
-use Symfony\Component\Console\Output\OutputInterface;
-
-/**
- * The "drupal:scaffold" command class.
- *
- * Downloads scaffold files and generates the autoload.php file.
- */
-class DrupalScaffoldCommand extends BaseCommand {
-
-  /**
-   * {@inheritdoc}
-   */
-  protected function configure() {
-    parent::configure();
-    $this
-      ->setName('drupal:scaffold')
-      ->setDescription('Update the Drupal scaffold files.');
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  protected function execute(InputInterface $input, OutputInterface $output) {
-    $handler = new Handler($this->getComposer(), $this->getIO());
-    $handler->downloadScaffold();
-    // Generate the autoload.php file after generating the scaffold files.
-    $handler->generateAutoload();
-  }
-
-}
diff --git a/vendor/drupal-composer/drupal-scaffold/src/FileFetcher.php b/vendor/drupal-composer/drupal-scaffold/src/FileFetcher.php
deleted file mode 100644
index 653e7f22f1a8bdb58f2d4ea30e8a5e5e8c162a3e..0000000000000000000000000000000000000000
--- a/vendor/drupal-composer/drupal-scaffold/src/FileFetcher.php
+++ /dev/null
@@ -1,87 +0,0 @@
-<?php
-
-namespace DrupalComposer\DrupalScaffold;
-
-use Composer\IO\IOInterface;
-use Composer\Util\Filesystem;
-use Composer\Util\RemoteFilesystem;
-
-/**
- * Downloads all required files and writes it to the file system.
- */
-class FileFetcher {
-
-  /**
-   * @var \Composer\Util\RemoteFilesystem
-   */
-  protected $remoteFilesystem;
-
-  /**
-   * @var \Composer\IO\IOInterface
-   */
-  protected $io;
-
-  /**
-   * @var bool
-   *
-   * A boolean indicating if progress should be displayed.
-   */
-  protected $progress;
-
-  protected $source;
-  protected $filenames;
-  protected $fs;
-
-  /**
-   * Constructs this FileFetcher object.
-   */
-  public function __construct(RemoteFilesystem $remoteFilesystem, $source, IOInterface $io, $progress = TRUE) {
-    $this->remoteFilesystem = $remoteFilesystem;
-    $this->io = $io;
-    $this->source = $source;
-    $this->fs = new Filesystem();
-    $this->progress = $progress;
-  }
-
-  /**
-   * Downloads all required files and writes it to the file system.
-   */
-  public function fetch($version, $destination, $override) {
-    foreach ($this->filenames as $sourceFilename => $filename) {
-      $target = "$destination/$filename";
-      if ($override || !file_exists($target)) {
-        $url = $this->getUri($sourceFilename, $version);
-        $this->fs->ensureDirectoryExists($destination . '/' . dirname($filename));
-        if ($this->progress) {
-          $this->io->writeError("  - <info>$filename</info> (<comment>$url</comment>): ", FALSE);
-          $this->remoteFilesystem->copy($url, $url, $target, $this->progress);
-          // Used to put a new line because the remote file system does not put
-          // one.
-          $this->io->writeError('');
-        }
-        else {
-          $this->remoteFilesystem->copy($url, $url, $target, $this->progress);
-        }
-      }
-    }
-  }
-
-  /**
-   * Set filenames.
-   */
-  public function setFilenames(array $filenames) {
-    $this->filenames = $filenames;
-  }
-
-  /**
-   * Replace filename and version in the source pattern with their values.
-   */
-  protected function getUri($filename, $version) {
-    $map = [
-      '{path}' => $filename,
-      '{version}' => $version,
-    ];
-    return str_replace(array_keys($map), array_values($map), $this->source);
-  }
-
-}
diff --git a/vendor/drupal-composer/drupal-scaffold/src/Handler.php b/vendor/drupal-composer/drupal-scaffold/src/Handler.php
deleted file mode 100644
index 1bdefe0f69135a0aaa134a458c30a65c5fe87cde..0000000000000000000000000000000000000000
--- a/vendor/drupal-composer/drupal-scaffold/src/Handler.php
+++ /dev/null
@@ -1,411 +0,0 @@
-<?php
-
-namespace DrupalComposer\DrupalScaffold;
-
-use Composer\Script\Event;
-use Composer\Installer\PackageEvent;
-use Composer\Plugin\CommandEvent;
-use Composer\Composer;
-use Composer\DependencyResolver\Operation\InstallOperation;
-use Composer\DependencyResolver\Operation\UpdateOperation;
-use Composer\EventDispatcher\EventDispatcher;
-use Composer\IO\IOInterface;
-use Composer\Package\PackageInterface;
-use Composer\Semver\Semver;
-use Composer\Util\Filesystem;
-use Composer\Util\RemoteFilesystem;
-use Symfony\Component\Filesystem\Filesystem as SymfonyFilesystem;
-
-/**
- * Core class of the plugin, contains all logic which files should be fetched.
- */
-class Handler {
-
-  const PRE_DRUPAL_SCAFFOLD_CMD = 'pre-drupal-scaffold-cmd';
-  const POST_DRUPAL_SCAFFOLD_CMD = 'post-drupal-scaffold-cmd';
-
-  /**
-   * @var \Composer\Composer
-   */
-  protected $composer;
-
-  /**
-   * @var \Composer\IO\IOInterface
-   */
-  protected $io;
-
-  /**
-   * @var bool
-   *
-   * A boolean indicating if progress should be displayed.
-   */
-  protected $progress;
-
-  /**
-   * @var \Composer\Package\PackageInterface
-   */
-  protected $drupalCorePackage;
-
-  /**
-   * Handler constructor.
-   *
-   * @param \Composer\Composer $composer
-   * @param \Composer\IO\IOInterface $io
-   */
-  public function __construct(Composer $composer, IOInterface $io) {
-    $this->composer = $composer;
-    $this->io = $io;
-    $this->progress = TRUE;
-
-    // Pre-load all of our sources so that we do not run up
-    // against problems in `composer update` operations.
-    $this->manualLoad();
-  }
-
-  protected function manualLoad() {
-    $src_dir = __DIR__;
-
-    $classes = [
-      'CommandProvider',
-      'DrupalScaffoldCommand',
-      'FileFetcher',
-      'PrestissimoFileFetcher',
-    ];
-
-    foreach ($classes as $src) {
-      if (!class_exists('\\DrupalComposer\\DrupalScaffold\\' . $src)) {
-        include "{$src_dir}/{$src}.php";
-      }
-    }
-  }
-
-  /**
-   * @param $operation
-   * @return mixed
-   */
-  protected function getCorePackage($operation) {
-    if ($operation instanceof InstallOperation) {
-      $package = $operation->getPackage();
-    }
-    elseif ($operation instanceof UpdateOperation) {
-      $package = $operation->getTargetPackage();
-    }
-    if (isset($package) && $package instanceof PackageInterface && $package->getName() == 'drupal/core') {
-      return $package;
-    }
-    return NULL;
-  }
-
-  /**
-   * Get the command options.
-   *
-   * @param \Composer\Plugin\CommandEvent $event
-   */
-  public function onCmdBeginsEvent(CommandEvent $event) {
-    if ($event->getInput()->hasOption('no-progress')) {
-      $this->progress = !($event->getInput()->getOption('no-progress'));
-    }
-    else {
-      $this->progress = TRUE;
-    }
-  }
-
-  /**
-   * Marks scaffolding to be processed after an install or update command.
-   *
-   * @param \Composer\Installer\PackageEvent $event
-   */
-  public function onPostPackageEvent(PackageEvent $event) {
-    $package = $this->getCorePackage($event->getOperation());
-    if ($package) {
-      // By explicitly setting the core package, the onPostCmdEvent() will
-      // process the scaffolding automatically.
-      $this->drupalCorePackage = $package;
-    }
-  }
-
-  /**
-   * Post install command event to execute the scaffolding.
-   *
-   * @param \Composer\Script\Event $event
-   */
-  public function onPostCmdEvent(Event $event) {
-    // Only install the scaffolding if drupal/core was installed,
-    // AND there are no scaffolding files present.
-    if (isset($this->drupalCorePackage)) {
-      $this->downloadScaffold();
-      // Generate the autoload.php file after generating the scaffold files.
-      $this->generateAutoload();
-    }
-  }
-
-  /**
-   * Downloads drupal scaffold files for the current process.
-   */
-  public function downloadScaffold() {
-    $drupalCorePackage = $this->getDrupalCorePackage();
-    $webroot = realpath($this->getWebRoot());
-
-    // Collect options, excludes and settings files.
-    $options = $this->getOptions();
-    $files = array_diff($this->getIncludes(), $this->getExcludes());
-
-    // Call any pre-scaffold scripts that may be defined.
-    $dispatcher = new EventDispatcher($this->composer, $this->io);
-    $dispatcher->dispatch(self::PRE_DRUPAL_SCAFFOLD_CMD);
-
-    $version = $this->getDrupalCoreVersion($drupalCorePackage);
-
-    $remoteFs = new RemoteFilesystem($this->io);
-
-    $fetcher = new PrestissimoFileFetcher($remoteFs, $options['source'], $this->io, $this->progress, $this->composer->getConfig());
-    $fetcher->setFilenames(array_combine($files, $files));
-    $fetcher->fetch($version, $webroot, TRUE);
-
-    $fetcher->setFilenames($this->getInitial());
-    $fetcher->fetch($version, $webroot, FALSE);
-
-    // Call post-scaffold scripts.
-    $dispatcher->dispatch(self::POST_DRUPAL_SCAFFOLD_CMD);
-  }
-
-  /**
-   * Generate the autoload file at the project root.  Include the
-   * autoload file that Composer generated.
-   */
-  public function generateAutoload() {
-    $vendorPath = $this->getVendorPath();
-    $webroot = $this->getWebRoot();
-
-    // Calculate the relative path from the webroot (location of the
-    // project autoload.php) to the vendor directory.
-    $fs = new SymfonyFilesystem();
-    $relativeVendorPath = $fs->makePathRelative($vendorPath, realpath($webroot));
-
-    $fs->dumpFile($webroot . "/autoload.php", $this->autoLoadContents($relativeVendorPath));
-  }
-
-  /**
-   * Build the contents of the autoload file.
-   *
-   * @return string
-   */
-  protected function autoLoadContents($relativeVendorPath) {
-    $relativeVendorPath = rtrim($relativeVendorPath, '/');
-
-    $autoloadContents = <<<EOF
-<?php
-
-/**
- * @file
- * Includes the autoloader created by Composer.
- *
- * This file was generated by drupal-composer/drupal-scaffold.
- * https://github.com/drupal-composer/drupal-scaffold
- *
- * @see composer.json
- * @see index.php
- * @see core/install.php
- * @see core/rebuild.php
- * @see core/modules/statistics/statistics.php
- */
-
-return require __DIR__ . '/$relativeVendorPath/autoload.php';
-
-EOF;
-    return $autoloadContents;
-  }
-
-  /**
-   * Get the path to the 'vendor' directory.
-   *
-   * @return string
-   */
-  public function getVendorPath() {
-    $config = $this->composer->getConfig();
-    $filesystem = new Filesystem();
-    $filesystem->ensureDirectoryExists($config->get('vendor-dir'));
-    $vendorPath = $filesystem->normalizePath(realpath($config->get('vendor-dir')));
-
-    return $vendorPath;
-  }
-
-  /**
-   * Look up the Drupal core package object, or return it from where we cached
-   * it in the $drupalCorePackage field.
-   *
-   * @return \Composer\Package\PackageInterface
-   */
-  public function getDrupalCorePackage() {
-    if (!isset($this->drupalCorePackage)) {
-      $this->drupalCorePackage = $this->getPackage('drupal/core');
-    }
-    return $this->drupalCorePackage;
-  }
-
-  /**
-   * Returns the Drupal core version for the given package.
-   *
-   * @param \Composer\Package\PackageInterface $drupalCorePackage
-   *
-   * @return string
-   */
-  protected function getDrupalCoreVersion(PackageInterface $drupalCorePackage) {
-    $version = $drupalCorePackage->getPrettyVersion();
-    if ($drupalCorePackage->getStability() == 'dev' && substr($version, -4) == '-dev') {
-      $version = substr($version, 0, -4);
-      return $version;
-    }
-    return $version;
-  }
-
-  /**
-   * Retrieve the path to the web root.
-   *
-   * @return string
-   */
-  public function getWebRoot() {
-    $drupalCorePackage = $this->getDrupalCorePackage();
-    $installationManager = $this->composer->getInstallationManager();
-    $corePath = $installationManager->getInstallPath($drupalCorePackage);
-    // Webroot is the parent path of the drupal core installation path.
-    $webroot = dirname($corePath);
-
-    return $webroot;
-  }
-
-  /**
-   * Retrieve a package from the current composer process.
-   *
-   * @param string $name
-   *   Name of the package to get from the current composer installation.
-   *
-   * @return \Composer\Package\PackageInterface
-   */
-  protected function getPackage($name) {
-    return $this->composer->getRepositoryManager()->getLocalRepository()->findPackage($name, '*');
-  }
-
-  /**
-   * Retrieve excludes from optional "extra" configuration.
-   *
-   * @return array
-   */
-  protected function getExcludes() {
-    return $this->getNamedOptionList('excludes', 'getExcludesDefault');
-  }
-
-  /**
-   * Retrieve list of additional settings files from optional "extra" configuration.
-   *
-   * @return array
-   */
-  protected function getIncludes() {
-    return $this->getNamedOptionList('includes', 'getIncludesDefault');
-  }
-
-  /**
-   * Retrieve list of initial files from optional "extra" configuration.
-   *
-   * @return array
-   */
-  protected function getInitial() {
-    return $this->getNamedOptionList('initial', 'getInitialDefault');
-  }
-
-  /**
-   * Retrieve a named list of options from optional "extra" configuration.
-   * Respects 'omit-defaults', and either includes or does not include the
-   * default values, as requested.
-   *
-   * @return array
-   */
-  protected function getNamedOptionList($optionName, $defaultFn) {
-    $options = $this->getOptions($this->composer);
-    $result = array();
-    if (empty($options['omit-defaults'])) {
-      $result = $this->$defaultFn();
-    }
-    $result = array_merge($result, (array) $options[$optionName]);
-
-    return $result;
-  }
-
-  /**
-   * Retrieve excludes from optional "extra" configuration.
-   *
-   * @return array
-   */
-  protected function getOptions() {
-    $extra = $this->composer->getPackage()->getExtra() + ['drupal-scaffold' => []];
-    $options = $extra['drupal-scaffold'] + [
-      'omit-defaults' => FALSE,
-      'excludes' => [],
-      'includes' => [],
-      'initial' => [],
-      'source' => 'https://cgit.drupalcode.org/drupal/plain/{path}?h={version}',
-      // Github: https://raw.githubusercontent.com/drupal/drupal/{version}/{path}
-    ];
-    return $options;
-  }
-
-  /**
-   * Holds default excludes.
-   */
-  protected function getExcludesDefault() {
-    return [];
-  }
-
-  /**
-   * Holds default settings files list.
-   */
-  protected function getIncludesDefault() {
-    $version = $this->getDrupalCoreVersion($this->getDrupalCorePackage());
-    list($major, $minor) = explode('.', $version, 3);
-    $version = "$major.$minor";
-
-    /**
-     * Files from 8.3.x
-     *
-     * @see https://cgit.drupalcode.org/drupal/tree/?h=8.3.x
-     */
-    $common = [
-      '.csslintrc',
-      '.editorconfig',
-      '.eslintignore',
-      '.gitattributes',
-      '.htaccess',
-      'index.php',
-      'robots.txt',
-      'sites/default/default.settings.php',
-      'sites/default/default.services.yml',
-      'sites/development.services.yml',
-      'sites/example.settings.local.php',
-      'sites/example.sites.php',
-      'update.php',
-      'web.config',
-    ];
-
-    // Version specific variations.
-    if (Semver::satisfies($version, '<8.3')) {
-      $common[] = '.eslintrc';
-    }
-    if (Semver::satisfies($version, '>=8.3')) {
-      $common[] = '.eslintrc.json';
-    }
-    if (Semver::satisfies($version, '>=8.5')) {
-      $common[] = '.ht.router.php';
-    }
-
-    sort($common);
-    return $common;
-  }
-
-  /**
-   * Holds default initial files.
-   */
-  protected function getInitialDefault() {
-    return [];
-  }
-
-}
diff --git a/vendor/drupal-composer/drupal-scaffold/src/Plugin.php b/vendor/drupal-composer/drupal-scaffold/src/Plugin.php
deleted file mode 100644
index 7833903f59449ea2c1290f5f3bdf613e63b6296b..0000000000000000000000000000000000000000
--- a/vendor/drupal-composer/drupal-scaffold/src/Plugin.php
+++ /dev/null
@@ -1,103 +0,0 @@
-<?php
-
-namespace DrupalComposer\DrupalScaffold;
-
-use Composer\Script\Event;
-use Composer\Plugin\CommandEvent;
-use Composer\Composer;
-use Composer\EventDispatcher\EventSubscriberInterface;
-use Composer\Installer\PackageEvent;
-use Composer\Installer\PackageEvents;
-use Composer\IO\IOInterface;
-use Composer\Plugin\Capable;
-use Composer\Plugin\PluginEvents;
-use Composer\Plugin\PluginInterface;
-use Composer\Script\ScriptEvents;
-
-/**
- * Composer plugin for handling drupal scaffold.
- */
-class Plugin implements PluginInterface, EventSubscriberInterface, Capable {
-
-  /**
-   * @var \DrupalComposer\DrupalScaffold\Handler
-   */
-  protected $handler;
-
-  /**
-   * {@inheritdoc}
-   */
-  public function activate(Composer $composer, IOInterface $io) {
-    // We use a separate PluginScripts object. This way we separate
-    // functionality and also avoid some debug issues with the plugin being
-    // copied on initialisation.
-    // @see \Composer\Plugin\PluginManager::registerPackage()
-    $this->handler = new Handler($composer, $io);
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function getCapabilities() {
-    return array(
-      'Composer\Plugin\Capability\CommandProvider' => 'DrupalComposer\DrupalScaffold\CommandProvider',
-    );
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public static function getSubscribedEvents() {
-    return array(
-      PackageEvents::POST_PACKAGE_INSTALL => 'postPackage',
-      PackageEvents::POST_PACKAGE_UPDATE => 'postPackage',
-      ScriptEvents::POST_UPDATE_CMD => 'postCmd',
-      PluginEvents::COMMAND => 'cmdBegins',
-    );
-  }
-
-  /**
-   * Command begins event callback.
-   *
-   * @param \Composer\Plugin\CommandEvent $event
-   */
-  public function cmdBegins(CommandEvent $event) {
-    $this->handler->onCmdBeginsEvent($event);
-  }
-
-  /**
-   * Post package event behaviour.
-   *
-   * @param \Composer\Installer\PackageEvent $event
-   */
-  public function postPackage(PackageEvent $event) {
-    $this->handler->onPostPackageEvent($event);
-  }
-
-  /**
-   * Post command event callback.
-   *
-   * @param \Composer\Script\Event $event
-   */
-  public function postCmd(Event $event) {
-    $this->handler->onPostCmdEvent($event);
-  }
-
-  /**
-   * Script callback for putting in composer scripts to download the
-   * scaffold files.
-   *
-   * @param \Composer\Script\Event $event
-   *
-   * @deprecated since version 2.5.0, to be removed in 3.0. Use the command
-   *   "composer drupal:scaffold" instead.
-   */
-  public static function scaffold(Event $event) {
-    @trigger_error('\DrupalComposer\DrupalScaffold\Plugin::scaffold is deprecated since version 2.5.0 and will be removed in 3.0. Use "composer drupal:scaffold" instead.', E_USER_DEPRECATED);
-    $handler = new Handler($event->getComposer(), $event->getIO());
-    $handler->downloadScaffold();
-    // Generate the autoload.php file after generating the scaffold files.
-    $handler->generateAutoload();
-  }
-
-}
diff --git a/vendor/drupal-composer/drupal-scaffold/src/PrestissimoFileFetcher.php b/vendor/drupal-composer/drupal-scaffold/src/PrestissimoFileFetcher.php
deleted file mode 100644
index 30b7c233c4ed5096be244e71208e0085e29a691d..0000000000000000000000000000000000000000
--- a/vendor/drupal-composer/drupal-scaffold/src/PrestissimoFileFetcher.php
+++ /dev/null
@@ -1,87 +0,0 @@
-<?php
-
-namespace DrupalComposer\DrupalScaffold;
-
-use Composer\Util\RemoteFilesystem;
-use Composer\Config;
-use Composer\IO\IOInterface;
-use Hirak\Prestissimo\CopyRequest;
-use Hirak\Prestissimo\CurlMulti;
-
-/**
- * Extends the default FileFetcher and uses hirak/prestissimo for parallel
- * downloads.
- */
-class PrestissimoFileFetcher extends FileFetcher {
-
-  /**
-   * @var \Composer\Config
-   */
-  protected $config;
-
-  /**
-   * Constructs this PrestissimoFileFetcher object.
-   */
-  public function __construct(RemoteFilesystem $remoteFilesystem, $source, IOInterface $io, $progress = TRUE, Config $config) {
-    parent::__construct($remoteFilesystem, $source, $io, $progress);
-    $this->config = $config;
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function fetch($version, $destination, $override) {
-    if (class_exists(CurlMulti::class)) {
-      $this->fetchWithPrestissimo($version, $destination, $override);
-      return;
-    }
-    parent::fetch($version, $destination, $override);
-  }
-
-  /**
-   * Fetch files in parallel.
-   */
-  protected function fetchWithPrestissimo($version, $destination, $override) {
-    $requests = [];
-
-    foreach ($this->filenames as $sourceFilename => $filename) {
-      $target = "$destination/$filename";
-      if ($override || !file_exists($target)) {
-        $url = $this->getUri($sourceFilename, $version);
-        $this->fs->ensureDirectoryExists($destination . '/' . dirname($filename));
-        $requests[] = new CopyRequest($url, $target, FALSE, $this->io, $this->config);
-      }
-    }
-
-    $successCnt = $failureCnt = 0;
-    $errors = [];
-    $totalCnt = count($requests);
-    if ($totalCnt == 0) {
-      return;
-    }
-
-    $multi = new CurlMulti();
-    $multi->setRequests($requests);
-    do {
-      $multi->setupEventLoop();
-      $multi->wait();
-      $result = $multi->getFinishedResults();
-      $successCnt += $result['successCnt'];
-      $failureCnt += $result['failureCnt'];
-      if (isset($result['errors'])) {
-        $errors += $result['errors'];
-      }
-      if ($this->progress) {
-        foreach ($result['urls'] as $url) {
-          $this->io->writeError("  - Downloading <comment>$successCnt</comment>/<comment>$totalCnt</comment>: <info>$url</info>", TRUE);
-        }
-      }
-    } while ($multi->remain());
-
-    $urls = array_keys($errors);
-    if ($urls) {
-      throw new \Exception('Failed to download ' . implode(", ", $urls));
-    }
-  }
-
-}
diff --git a/vendor/drupal-composer/drupal-scaffold/tests/FetcherTest.php b/vendor/drupal-composer/drupal-scaffold/tests/FetcherTest.php
deleted file mode 100644
index ea822f928e7d8e01f209d51f998cbdea9ba3c823..0000000000000000000000000000000000000000
--- a/vendor/drupal-composer/drupal-scaffold/tests/FetcherTest.php
+++ /dev/null
@@ -1,79 +0,0 @@
-<?php
-
-namespace DrupalComposer\DrupalScaffold\Tests;
-
-use Composer\IO\NullIO;
-use Composer\Util\Filesystem;
-use Composer\Util\RemoteFilesystem;
-use DrupalComposer\DrupalScaffold\FileFetcher;
-use PHPUnit\Framework\TestCase;
-
-class FetcherTest extends TestCase {
-
-  /**
-   * @var \Composer\Util\Filesystem
-   */
-  protected $fs;
-
-  /**
-   * @var string
-   */
-  protected $tmpDir;
-
-  /**
-   * @var string
-   */
-  protected $rootDir;
-
-  /**
-   * @var string
-   */
-  protected $tmpReleaseTag;
-
-  /**
-   * SetUp test.
-   */
-  public function setUp() {
-    $this->rootDir = realpath(realpath(__DIR__ . '/..'));
-
-    // Prepare temp directory.
-    $this->fs = new Filesystem();
-    $this->tmpDir = realpath(sys_get_temp_dir()) . DIRECTORY_SEPARATOR . 'drupal-scaffold';
-    $this->ensureDirectoryExistsAndClear($this->tmpDir);
-
-    chdir($this->tmpDir);
-  }
-
-  /**
-   * Makes sure the given directory exists and has no content.
-   *
-   * @param string $directory
-   */
-  protected function ensureDirectoryExistsAndClear($directory) {
-    if (is_dir($directory)) {
-      $this->fs->removeDirectory($directory);
-    }
-    mkdir($directory, 0777, TRUE);
-  }
-
-  public function testFetch() {
-    $fetcher = new FileFetcher(new RemoteFilesystem(new NullIO()), 'https://cgit.drupalcode.org/drupal/plain/{path}?h={version}', new NullIO());
-    $fetcher->setFilenames([
-      '.htaccess' => '.htaccess',
-      'sites/default/default.settings.php' => 'sites/default/default.settings.php',
-    ]);
-    $fetcher->fetch('8.1.1', $this->tmpDir, TRUE);
-    $this->assertFileExists($this->tmpDir . '/.htaccess');
-    $this->assertFileExists($this->tmpDir . '/sites/default/default.settings.php');
-  }
-
-  public function testInitialFetch() {
-    $fetcher = new FileFetcher(new RemoteFilesystem(new NullIO()), 'https://cgit.drupalcode.org/drupal/plain/{path}?h={version}', new NullIO());
-    $fetcher->setFilenames([
-      'sites/default/default.settings.php' => 'sites/default/settings.php',
-    ]);
-    $fetcher->fetch('8.1.1', $this->tmpDir, FALSE);
-    $this->assertFileExists($this->tmpDir . '/sites/default/settings.php');
-  }
-
-}
diff --git a/vendor/drupal-composer/drupal-scaffold/tests/PluginTest.php b/vendor/drupal-composer/drupal-scaffold/tests/PluginTest.php
deleted file mode 100644
index a392e060d9556a8500275877ce878c5d9c095c00..0000000000000000000000000000000000000000
--- a/vendor/drupal-composer/drupal-scaffold/tests/PluginTest.php
+++ /dev/null
@@ -1,195 +0,0 @@
-<?php
-
-namespace DrupalComposer\DrupalScaffold\Tests;
-
-use Composer\Util\Filesystem;
-use PHPUnit\Framework\TestCase;
-
-/**
- * Tests composer plugin functionality.
- */
-class PluginTest extends TestCase {
-
-  /**
-   * @var \Composer\Util\Filesystem
-   */
-  protected $fs;
-
-  /**
-   * @var string
-   */
-  protected $tmpDir;
-
-  /**
-   * @var string
-   */
-  protected $rootDir;
-
-  /**
-   * @var string
-   */
-  protected $tmpReleaseTag;
-
-  /**
-   * SetUp test.
-   */
-  public function setUp() {
-    $this->rootDir = realpath(realpath(__DIR__ . '/..'));
-
-    // Prepare temp directory.
-    $this->fs = new Filesystem();
-    $this->tmpDir = realpath(sys_get_temp_dir()) . DIRECTORY_SEPARATOR . 'drupal-scaffold';
-    $this->ensureDirectoryExistsAndClear($this->tmpDir);
-
-    $this->writeTestReleaseTag();
-    $this->writeComposerJSON();
-
-    chdir($this->tmpDir);
-  }
-
-  /**
-   * TearDown.
-   *
-   * @return void
-   */
-  public function tearDown() {
-    $this->fs->removeDirectory($this->tmpDir);
-    $this->git(sprintf('tag -d "%s"', $this->tmpReleaseTag));
-  }
-
-  /**
-   * Tests a simple composer install without core, but adding core later.
-   */
-  public function testComposerInstallAndUpdate() {
-    $exampleScaffoldFile = $this->tmpDir . DIRECTORY_SEPARATOR . 'index.php';
-    $this->assertFileNotExists($exampleScaffoldFile, 'Scaffold file should not be exist.');
-    $this->composer('install --no-dev --prefer-dist');
-    $this->assertFileExists($this->tmpDir . DIRECTORY_SEPARATOR . 'core', 'Drupal core is installed.');
-    $this->assertFileExists($exampleScaffoldFile, 'Scaffold file should be automatically installed.');
-    $this->fs->remove($exampleScaffoldFile);
-    $this->assertFileNotExists($exampleScaffoldFile, 'Scaffold file should not be exist.');
-    $this->composer('drupal:scaffold');
-    $this->assertFileExists($exampleScaffoldFile, 'Scaffold file should be installed by "drupal:scaffold" command.');
-
-    foreach (['8.0.1', '8.1.x-dev', '8.3.0', '8.5.x-dev'] as $version) {
-      // We touch a scaffold file, so we can check the file was modified after
-      // the scaffold update.
-      touch($exampleScaffoldFile);
-      $mtime_touched = filemtime($exampleScaffoldFile);
-      // Requiring a newer version triggers "composer update".
-      $this->composer('require --update-with-dependencies --prefer-dist --update-no-dev drupal/core:"' . $version . '"');
-      clearstatcache();
-      $mtime_after = filemtime($exampleScaffoldFile);
-      $this->assertNotEquals($mtime_after, $mtime_touched, 'Scaffold file was modified by composer update. (' . $version . ')');
-      switch ($version) {
-        case '8.0.1':
-        case '8.1.x-dev':
-          $this->assertFileExists($this->tmpDir . DIRECTORY_SEPARATOR . '.eslintrc');
-          $this->assertFileNotExists($this->tmpDir . DIRECTORY_SEPARATOR . '.eslintrc.json');
-          $this->assertFileNotExists($this->tmpDir . DIRECTORY_SEPARATOR . '.ht.router.php');
-          break;
-
-        case '8.3.0':
-          // Note we don't clean up .eslintrc file.
-          $this->assertFileExists($this->tmpDir . DIRECTORY_SEPARATOR . '.eslintrc');
-          $this->assertFileExists($this->tmpDir . DIRECTORY_SEPARATOR . '.eslintrc.json');
-          $this->assertFileNotExists($this->tmpDir . DIRECTORY_SEPARATOR . '.ht.router.php');
-          break;
-
-        case '8.5.x-dev':
-          $this->assertFileExists($this->tmpDir . DIRECTORY_SEPARATOR . '.eslintrc');
-          $this->assertFileExists($this->tmpDir . DIRECTORY_SEPARATOR . '.eslintrc.json');
-          $this->assertFileExists($this->tmpDir . DIRECTORY_SEPARATOR . '.ht.router.php');
-          break;
-      }
-    }
-
-    // We touch a scaffold file, so we can check the file was modified by the
-    // custom command.
-    file_put_contents($exampleScaffoldFile, 1);
-    $this->composer('drupal:scaffold');
-    $this->assertNotEquals(file_get_contents($exampleScaffoldFile), 1, 'Scaffold file was modified by custom command.');
-  }
-
-  /**
-   * Writes the default composer json to the temp direcoty.
-   */
-  protected function writeComposerJSON() {
-    $json = json_encode($this->composerJSONDefaults(), JSON_PRETTY_PRINT);
-    // Write composer.json.
-    file_put_contents($this->tmpDir . '/composer.json', $json);
-  }
-
-  /**
-   * Writes a tag for the current commit, so we can reference it directly in the
-   * composer.json.
-   */
-  protected function writeTestReleaseTag() {
-    // Tag the current state.
-    $this->tmpReleaseTag = '999.0.' . time();
-    $this->git(sprintf('tag -a "%s" -m "%s"', $this->tmpReleaseTag, 'Tag for testing this exact commit'));
-  }
-
-  /**
-   * Provides the default composer.json data.
-   *
-   * @return array
-   */
-  protected function composerJSONDefaults() {
-    return array(
-      'repositories' => array(
-        array(
-          'type' => 'vcs',
-          'url' => $this->rootDir,
-        ),
-      ),
-      'require' => array(
-        'drupal-composer/drupal-scaffold' => $this->tmpReleaseTag,
-        'composer/installers' => '^1.0.20',
-        'drupal/core' => '8.0.0',
-      ),
-      'minimum-stability' => 'dev',
-    );
-  }
-
-  /**
-   * Wrapper for the composer command.
-   *
-   * @param string $command
-   *   Composer command name, arguments and/or options.
-   */
-  protected function composer($command) {
-    chdir($this->tmpDir);
-    passthru(escapeshellcmd($this->rootDir . '/vendor/bin/composer ' . $command), $exit_code);
-    if ($exit_code !== 0) {
-      throw new \Exception('Composer returned a non-zero exit code');
-    }
-  }
-
-  /**
-   * Wrapper for git command in the root directory.
-   *
-   * @param $command
-   *   Git command name, arguments and/or options.
-   */
-  protected function git($command) {
-    chdir($this->rootDir);
-    passthru(escapeshellcmd('git ' . $command), $exit_code);
-    if ($exit_code !== 0) {
-      throw new \Exception('Git returned a non-zero exit code');
-    }
-  }
-
-  /**
-   * Makes sure the given directory exists and has no content.
-   *
-   * @param string $directory
-   */
-  protected function ensureDirectoryExistsAndClear($directory) {
-    if (is_dir($directory)) {
-      $this->fs->removeDirectory($directory);
-    }
-    mkdir($directory, 0777, TRUE);
-  }
-
-}
diff --git a/vendor/drupal/core-composer-scaffold/AllowedPackages.php b/vendor/drupal/core-composer-scaffold/AllowedPackages.php
new file mode 100644
index 0000000000000000000000000000000000000000..481492f009ab62871d1844649087879c03068564
--- /dev/null
+++ b/vendor/drupal/core-composer-scaffold/AllowedPackages.php
@@ -0,0 +1,217 @@
+<?php
+
+namespace Drupal\Composer\Plugin\Scaffold;
+
+use Composer\Composer;
+use Composer\DependencyResolver\Operation\OperationInterface;
+use Composer\Installer\PackageEvent;
+use Composer\IO\IOInterface;
+use Composer\Package\PackageInterface;
+
+/**
+ * Determine recursively which packages have been allowed to scaffold files.
+ *
+ * If the root-level composer.json allows drupal/core, and drupal/core allows
+ * drupal/assets, then the later package will also implicitly be allowed.
+ *
+ * @internal
+ */
+class AllowedPackages implements PostPackageEventListenerInterface {
+
+  /**
+   * The Composer service.
+   *
+   * @var \Composer\Composer
+   */
+  protected $composer;
+
+  /**
+   * Composer's I/O service.
+   *
+   * @var \Composer\IO\IOInterface
+   */
+  protected $io;
+
+  /**
+   * Manager of the options in the top-level composer.json's 'extra' section.
+   *
+   * @var \Drupal\Composer\Plugin\Scaffold\ManageOptions
+   */
+  protected $manageOptions;
+
+  /**
+   * The list of new packages added by this Composer command.
+   *
+   * @var array
+   */
+  protected $newPackages = [];
+
+  /**
+   * AllowedPackages constructor.
+   *
+   * @param \Composer\Composer $composer
+   *   The composer object.
+   * @param \Composer\IO\IOInterface $io
+   *   IOInterface to write to.
+   * @param \Drupal\Composer\Plugin\Scaffold\ManageOptions $manage_options
+   *   Manager of the options in the top-level composer.json's 'extra' section.
+   */
+  public function __construct(Composer $composer, IOInterface $io, ManageOptions $manage_options) {
+    $this->composer = $composer;
+    $this->io = $io;
+    $this->manageOptions = $manage_options;
+  }
+
+  /**
+   * Gets a list of all packages that are allowed to copy scaffold files.
+   *
+   * We will implicitly allow the projects 'drupal/legacy-scaffold-assets'
+   * and 'drupal/core' to scaffold files, if they are present. Any other
+   * project must be explicitly whitelisted in the top-level composer.json
+   * file in order to be allowed to override scaffold files.
+   * Configuration for packages specified later will override configuration
+   * specified by packages listed earlier. In other words, the last listed
+   * package has the highest priority. The root package will always be returned
+   * at the end of the list.
+   *
+   * @return \Composer\Package\PackageInterface[]
+   *   An array of allowed Composer packages.
+   */
+  public function getAllowedPackages() {
+    $top_level_packages = $this->getTopLevelAllowedPackages();
+    $allowed_packages = $this->recursiveGetAllowedPackages($top_level_packages);
+    // If the root package defines any file mappings, then implicitly add it
+    // to the list of allowed packages. Add it at the end so that it overrides
+    // all the preceding packages.
+    if ($this->manageOptions->getOptions()->hasFileMapping()) {
+      $root_package = $this->composer->getPackage();
+      unset($allowed_packages[$root_package->getName()]);
+      $allowed_packages[$root_package->getName()] = $root_package;
+    }
+    // Handle any newly-added packages that are not already allowed.
+    return $this->evaluateNewPackages($allowed_packages);
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function event(PackageEvent $event) {
+    $operation = $event->getOperation();
+    // Determine the package. Later, in evaluateNewPackages(), we will report
+    // which of the newly-installed packages have scaffold operations, and
+    // whether or not they are allowed to scaffold by the allowed-packages
+    // option in the root-level composer.json file.
+    $operationType = $this->getOperationType($operation);
+    $package = $operationType === 'update' ? $operation->getTargetPackage() : $operation->getPackage();
+    if (ScaffoldOptions::hasOptions($package->getExtra())) {
+      $this->newPackages[$package->getName()] = $package;
+    }
+  }
+
+  /**
+   * Gets all packages that are allowed in the top-level composer.json.
+   *
+   * We will implicitly allow the projects 'drupal/legacy-scaffold-assets'
+   * and 'drupal/core' to scaffold files, if they are present. Any other
+   * project must be explicitly whitelisted in the top-level composer.json
+   * file in order to be allowed to override scaffold files.
+   *
+   * @return array
+   *   An array of allowed Composer package names.
+   */
+  protected function getTopLevelAllowedPackages() {
+    $implicit_packages = [
+      'drupal/legacy-scaffold-assets',
+      'drupal/core',
+    ];
+    $top_level_packages = $this->manageOptions->getOptions()->allowedPackages();
+    return array_merge($implicit_packages, $top_level_packages);
+  }
+
+  /**
+   * Builds a name-to-package mapping from a list of package names.
+   *
+   * @param string[] $packages_to_allow
+   *   List of package names to allow.
+   * @param array $allowed_packages
+   *   Mapping of package names to PackageInterface of packages already
+   *   accumulated.
+   *
+   * @return \Composer\Package\PackageInterface[]
+   *   Mapping of package names to PackageInterface in priority order.
+   */
+  protected function recursiveGetAllowedPackages(array $packages_to_allow, array $allowed_packages = []) {
+    foreach ($packages_to_allow as $name) {
+      $package = $this->getPackage($name);
+      if ($package instanceof PackageInterface && !isset($allowed_packages[$name])) {
+        $allowed_packages[$name] = $package;
+        $package_options = $this->manageOptions->packageOptions($package);
+        $allowed_packages = $this->recursiveGetAllowedPackages($package_options->allowedPackages(), $allowed_packages);
+      }
+    }
+    return $allowed_packages;
+  }
+
+  /**
+   * Evaluates newly-added packages and see if they are already allowed.
+   *
+   * For now we will only emit warnings if they are not.
+   *
+   * @param array $allowed_packages
+   *   Mapping of package names to PackageInterface of packages already
+   *   accumulated.
+   *
+   * @return \Composer\Package\PackageInterface[]
+   *   Mapping of package names to PackageInterface in priority order.
+   */
+  protected function evaluateNewPackages(array $allowed_packages) {
+    foreach ($this->newPackages as $name => $newPackage) {
+      if (!array_key_exists($name, $allowed_packages)) {
+        $this->io->write("Not scaffolding files for <comment>{$name}</comment>, because it is not listed in the element 'extra.drupal-scaffold.allowed-packages' in the root-level composer.json file.");
+      }
+      else {
+        $this->io->write("Package <comment>{$name}</comment> has scaffold operations, and is already allowed in the root-level composer.json file.");
+      }
+    }
+    // @todo We could prompt the user and ask if they wish to allow a
+    // newly-added package. This might be useful if, for example, the user
+    // might wish to require an installation profile that contains scaffolded
+    // assets. For more information, see:
+    // https://www.drupal.org/project/drupal/issues/3064990
+    return $allowed_packages;
+  }
+
+  /**
+   * Determine the type of the provided operation.
+   *
+   * Adjusts API used for Composer 1 or Composer 2.
+   *
+   * @param \Composer\DependencyResolver\Operation\OperationInterface $operation
+   *   The operation object.
+   *
+   * @return string
+   *   The operation type.
+   */
+  protected function getOperationType(OperationInterface $operation) {
+    // Use Composer 2 method.
+    if (method_exists($operation, 'getOperationType')) {
+      return $operation->getOperationType();
+    }
+    // Fallback to Composer 1 method.
+    return $operation->getJobType();
+  }
+
+  /**
+   * Retrieves a package from the current composer process.
+   *
+   * @param string $name
+   *   Name of the package to get from the current composer installation.
+   *
+   * @return \Composer\Package\PackageInterface|null
+   *   The Composer package.
+   */
+  protected function getPackage($name) {
+    return $this->composer->getRepositoryManager()->getLocalRepository()->findPackage($name, '*');
+  }
+
+}
diff --git a/vendor/drupal-composer/drupal-scaffold/src/CommandProvider.php b/vendor/drupal/core-composer-scaffold/CommandProvider.php
similarity index 72%
rename from vendor/drupal-composer/drupal-scaffold/src/CommandProvider.php
rename to vendor/drupal/core-composer-scaffold/CommandProvider.php
index 327a7f229ea0757c0944b46be22136d15955fb62..6597039399bb93cc80ea908caf692aa4c8ec06a2 100644
--- a/vendor/drupal-composer/drupal-scaffold/src/CommandProvider.php
+++ b/vendor/drupal/core-composer-scaffold/CommandProvider.php
@@ -1,11 +1,13 @@
 <?php
 
-namespace DrupalComposer\DrupalScaffold;
+namespace Drupal\Composer\Plugin\Scaffold;
 
 use Composer\Plugin\Capability\CommandProvider as CommandProviderCapability;
 
 /**
  * List of all commands provided by this package.
+ *
+ * @internal
  */
 class CommandProvider implements CommandProviderCapability {
 
@@ -13,9 +15,7 @@ class CommandProvider implements CommandProviderCapability {
    * {@inheritdoc}
    */
   public function getCommands() {
-    return [
-      new DrupalScaffoldCommand(),
-    ];
+    return [new ComposerScaffoldCommand()];
   }
 
 }
diff --git a/vendor/drupal/core-composer-scaffold/ComposerScaffoldCommand.php b/vendor/drupal/core-composer-scaffold/ComposerScaffoldCommand.php
new file mode 100644
index 0000000000000000000000000000000000000000..6de8aa4bf8fc7743f43368ee28783835b5c75843
--- /dev/null
+++ b/vendor/drupal/core-composer-scaffold/ComposerScaffoldCommand.php
@@ -0,0 +1,56 @@
+<?php
+
+namespace Drupal\Composer\Plugin\Scaffold;
+
+use Composer\Command\BaseCommand;
+use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Output\OutputInterface;
+
+/**
+ * The "drupal:scaffold" command class.
+ *
+ * Manually run the scaffold operation that normally happens after
+ * 'composer install'.
+ *
+ * @internal
+ */
+class ComposerScaffoldCommand extends BaseCommand {
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function configure() {
+    $this
+      ->setName('drupal:scaffold')
+      ->setAliases(['scaffold'])
+      ->setDescription('Update the Drupal scaffold files.')
+      ->setHelp(
+        <<<EOT
+The <info>drupal:scaffold</info> command places the scaffold files in their
+respective locations according to the layout stipulated in the composer.json
+file.
+
+<info>php composer.phar drupal:scaffold</info>
+
+It is usually not necessary to call <info>drupal:scaffold</info> manually,
+because it is called automatically as needed, e.g. after an <info>install</info>
+or <info>update</info> command. Note, though, that only packages explicitly
+allowed to scaffold in the top-level composer.json will be processed by this
+command.
+
+For more information, see https://www.drupal.org/docs/develop/using-composer/using-drupals-composer-scaffold.
+EOT
+            );
+
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function execute(InputInterface $input, OutputInterface $output) {
+    $handler = new Handler($this->getComposer(), $this->getIO());
+    $handler->scaffold();
+    return 0;
+  }
+
+}
diff --git a/vendor/drupal/core-composer-scaffold/GenerateAutoloadReferenceFile.php b/vendor/drupal/core-composer-scaffold/GenerateAutoloadReferenceFile.php
new file mode 100644
index 0000000000000000000000000000000000000000..4a576388262cdd7077c2743855ab6904986c51d9
--- /dev/null
+++ b/vendor/drupal/core-composer-scaffold/GenerateAutoloadReferenceFile.php
@@ -0,0 +1,124 @@
+<?php
+
+namespace Drupal\Composer\Plugin\Scaffold;
+
+use Composer\IO\IOInterface;
+use Composer\Util\Filesystem;
+use Drupal\Composer\Plugin\Scaffold\Operations\ScaffoldResult;
+
+/**
+ * Generates an 'autoload.php' that includes the autoloader created by Composer.
+ *
+ * @internal
+ */
+final class GenerateAutoloadReferenceFile {
+
+  /**
+   * This class provides only static methods.
+   */
+  private function __construct() {
+  }
+
+  /**
+   * Generates the autoload file at the specified location.
+   *
+   * This only writes a bit of PHP that includes the autoload file that
+   * Composer generated. Drupal does this so that it can guarantee that there
+   * will always be an `autoload.php` file in a well-known location.
+   *
+   * @param \Composer\IO\IOInterface $io
+   *   IOInterface to write to.
+   * @param string $package_name
+   *   The name of the package defining the autoload file (the root package).
+   * @param string $web_root
+   *   The path to the web root.
+   * @param string $vendor
+   *   The path to the vendor directory.
+   *
+   * @return \Drupal\Composer\Plugin\Scaffold\Operations\ScaffoldResult
+   *   The result of the autoload file generation.
+   */
+  public static function generateAutoload(IOInterface $io, $package_name, $web_root, $vendor) {
+    $autoload_path = static::autoloadPath($package_name, $web_root);
+    // Calculate the relative path from the webroot (location of the project
+    // autoload.php) to the vendor directory.
+    $fs = new Filesystem();
+    $relative_autoload_path = $fs->findShortestPath($autoload_path->fullPath(), "$vendor/autoload.php");
+    file_put_contents($autoload_path->fullPath(), static::autoLoadContents($relative_autoload_path));
+    return new ScaffoldResult($autoload_path, TRUE);
+  }
+
+  /**
+   * Determines whether or not the autoload file has been committed.
+   *
+   * @param \Composer\IO\IOInterface $io
+   *   IOInterface to write to.
+   * @param string $package_name
+   *   The name of the package defining the autoload file (the root package).
+   * @param string $web_root
+   *   The path to the web root.
+   *
+   * @return bool
+   *   True if autoload.php file exists and has been committed to the repository
+   */
+  public static function autoloadFileCommitted(IOInterface $io, $package_name, $web_root) {
+    $autoload_path = static::autoloadPath($package_name, $web_root);
+    $autoload_file = $autoload_path->fullPath();
+    $location = dirname($autoload_file);
+    if (!file_exists($autoload_file)) {
+      return FALSE;
+    }
+    return Git::checkTracked($io, $autoload_file, $location);
+  }
+
+  /**
+   * Generates a scaffold file path object for the autoload file.
+   *
+   * @param string $package_name
+   *   The name of the package defining the autoload file (the root package).
+   * @param string $web_root
+   *   The path to the web root.
+   *
+   * @return \Drupal\Composer\Plugin\Scaffold\ScaffoldFilePath
+   *   Object wrapping the relative and absolute path to the destination file.
+   */
+  protected static function autoloadPath($package_name, $web_root) {
+    $rel_path = 'autoload.php';
+    $dest_rel_path = '[web-root]/' . $rel_path;
+    $dest_full_path = $web_root . '/' . $rel_path;
+    return new ScaffoldFilePath('autoload', $package_name, $dest_rel_path, $dest_full_path);
+  }
+
+  /**
+   * Builds the contents of the autoload file.
+   *
+   * @param string $relative_autoload_path
+   *   The relative path to the autoloader in vendor.
+   *
+   * @return string
+   *   Return the contents for the autoload.php.
+   */
+  protected static function autoLoadContents($relative_autoload_path) {
+    $relative_autoload_path = preg_replace('#^\./#', '', $relative_autoload_path);
+    return <<<EOF
+<?php
+
+/**
+ * @file
+ * Includes the autoloader created by Composer.
+ *
+ * This file was generated by drupal-scaffold.
+ *
+ * @see composer.json
+ * @see index.php
+ * @see core/install.php
+ * @see core/rebuild.php
+ * @see core/modules/statistics/statistics.php
+ */
+
+return require __DIR__ . '/{$relative_autoload_path}';
+
+EOF;
+  }
+
+}
diff --git a/vendor/drupal/core-composer-scaffold/Git.php b/vendor/drupal/core-composer-scaffold/Git.php
new file mode 100644
index 0000000000000000000000000000000000000000..015e472eb2448393f06fe19c5213d1fc04dfd207
--- /dev/null
+++ b/vendor/drupal/core-composer-scaffold/Git.php
@@ -0,0 +1,72 @@
+<?php
+
+namespace Drupal\Composer\Plugin\Scaffold;
+
+use Composer\IO\IOInterface;
+use Composer\Util\ProcessExecutor;
+
+/**
+ * Provide some Git utility operations
+ *
+ * @internal
+ */
+class Git {
+
+  /**
+   * This class provides only static methods.
+   */
+  private function __construct() {
+  }
+
+  /**
+   * Determines whether the specified scaffold file is already ignored.
+   *
+   * @param string $path
+   *   Path to scaffold file to check.
+   * @param string $dir
+   *   Base directory for git process.
+   *
+   * @return bool
+   *   Whether the specified file is already ignored or not (TRUE if ignored).
+   */
+  public static function checkIgnore(IOInterface $io, $path, $dir = NULL) {
+    $process = new ProcessExecutor($io);
+    $output = '';
+    $exitCode = $process->execute('git check-ignore ' . $process->escape($path), $output, $dir);
+    return $exitCode == 0;
+  }
+
+  /**
+   * Determines whether the specified scaffold file is tracked by git.
+   *
+   * @param string $path
+   *   Path to scaffold file to check.
+   * @param string $dir
+   *   Base directory for git process.
+   *
+   * @return bool
+   *   Whether the specified file is already tracked or not (TRUE if tracked).
+   */
+  public static function checkTracked(IOInterface $io, $path, $dir = NULL) {
+    $process = new ProcessExecutor($io);
+    $output = '';
+    $exitCode = $process->execute('git ls-files --error-unmatch ' . $process->escape($path), $output, $dir);
+    return $exitCode == 0;
+  }
+
+  /**
+   * Checks to see if the project root dir is in a git repository.
+   *
+   * @param string $dir
+   *   Base directory for git process.
+   * @return bool
+   *   True if this is a repository.
+   */
+  public static function isRepository(IOInterface $io, $dir = NULL) {
+    $process = new ProcessExecutor($io);
+    $output = '';
+    $exitCode = $process->execute('git rev-parse --show-toplevel', $output, $dir);
+    return $exitCode == 0;
+  }
+
+}
diff --git a/vendor/drupal/core-composer-scaffold/Handler.php b/vendor/drupal/core-composer-scaffold/Handler.php
new file mode 100644
index 0000000000000000000000000000000000000000..3e51f909a335238ffcf9d4054b511f486e206da5
--- /dev/null
+++ b/vendor/drupal/core-composer-scaffold/Handler.php
@@ -0,0 +1,249 @@
+<?php
+
+namespace Drupal\Composer\Plugin\Scaffold;
+
+use Composer\Composer;
+use Composer\EventDispatcher\EventDispatcher;
+use Composer\Installer\PackageEvent;
+use Composer\IO\IOInterface;
+use Composer\Package\PackageInterface;
+use Composer\Util\Filesystem;
+use Drupal\Composer\Plugin\Scaffold\Operations\OperationData;
+use Drupal\Composer\Plugin\Scaffold\Operations\OperationFactory;
+use Drupal\Composer\Plugin\Scaffold\Operations\ScaffoldFileCollection;
+
+/**
+ * Core class of the plugin.
+ *
+ * Contains the primary logic which determines the files to be fetched and
+ * processed.
+ *
+ * @internal
+ */
+class Handler {
+
+  /**
+   * Composer hook called before scaffolding begins.
+   */
+  const PRE_DRUPAL_SCAFFOLD_CMD = 'pre-drupal-scaffold-cmd';
+
+  /**
+   * Composer hook called after scaffolding completes.
+   */
+  const POST_DRUPAL_SCAFFOLD_CMD = 'post-drupal-scaffold-cmd';
+
+  /**
+   * The Composer service.
+   *
+   * @var \Composer\Composer
+   */
+  protected $composer;
+
+  /**
+   * Composer's I/O service.
+   *
+   * @var \Composer\IO\IOInterface
+   */
+  protected $io;
+
+  /**
+   * The scaffold options in the top-level composer.json's 'extra' section.
+   *
+   * @var \Drupal\Composer\Plugin\Scaffold\ManageOptions
+   */
+  protected $manageOptions;
+
+  /**
+   * The manager that keeps track of which packages are allowed to scaffold.
+   *
+   * @var \Drupal\Composer\Plugin\Scaffold\AllowedPackages
+   */
+  protected $manageAllowedPackages;
+
+  /**
+   * The list of listeners that are notified after a package event.
+   *
+   * @var \Drupal\Composer\Plugin\Scaffold\PostPackageEventListenerInterface[]
+   */
+  protected $postPackageListeners = [];
+
+  /**
+   * Handler constructor.
+   *
+   * @param \Composer\Composer $composer
+   *   The Composer service.
+   * @param \Composer\IO\IOInterface $io
+   *   The Composer I/O service.
+   */
+  public function __construct(Composer $composer, IOInterface $io) {
+    $this->composer = $composer;
+    $this->io = $io;
+    $this->manageOptions = new ManageOptions($composer);
+    $this->manageAllowedPackages = new AllowedPackages($composer, $io, $this->manageOptions);
+  }
+
+  /**
+   * Registers post-package events if the 'require' command was called.
+   */
+  public function requireWasCalled() {
+    // In order to differentiate between post-package events called after
+    // 'composer require' vs. the same events called at other times, we will
+    // only install our handler when a 'require' event is detected.
+    $this->postPackageListeners[] = $this->manageAllowedPackages;
+  }
+
+  /**
+   * Posts package command event.
+   *
+   * We want to detect packages 'require'd that have scaffold files, but are not
+   * yet allowed in the top-level composer.json file.
+   *
+   * @param \Composer\Installer\PackageEvent $event
+   *   Composer package event sent on install/update/remove.
+   */
+  public function onPostPackageEvent(PackageEvent $event) {
+    foreach ($this->postPackageListeners as $listener) {
+      $listener->event($event);
+    }
+  }
+
+  /**
+   * Creates scaffold operation objects for all items in the file mappings.
+   *
+   * @param \Composer\Package\PackageInterface $package
+   *   The package that relative paths will be relative from.
+   * @param array $package_file_mappings
+   *   The package file mappings array keyed by destination path and the values
+   *   are operation metadata arrays.
+   *
+   * @return \Drupal\Composer\Plugin\Scaffold\Operations\OperationInterface[]
+   *   A list of scaffolding operation objects
+   */
+  protected function createScaffoldOperations(PackageInterface $package, array $package_file_mappings) {
+    $scaffold_op_factory = new OperationFactory($this->composer);
+    $scaffold_ops = [];
+    foreach ($package_file_mappings as $dest_rel_path => $data) {
+      $operation_data = new OperationData($dest_rel_path, $data);
+      $scaffold_ops[$dest_rel_path] = $scaffold_op_factory->create($package, $operation_data);
+    }
+    return $scaffold_ops;
+  }
+
+  /**
+   * Copies all scaffold files from source to destination.
+   */
+  public function scaffold() {
+    // Recursively get the list of allowed packages. Only allowed packages
+    // may declare scaffold files. Note that the top-level composer.json file
+    // is implicitly allowed.
+    $allowed_packages = $this->manageAllowedPackages->getAllowedPackages();
+    if (empty($allowed_packages)) {
+      $this->io->write("Nothing scaffolded because no packages are allowed in the top-level composer.json file.");
+      return;
+    }
+
+    // Call any pre-scaffold scripts that may be defined.
+    $dispatcher = new EventDispatcher($this->composer, $this->io);
+    $dispatcher->dispatch(self::PRE_DRUPAL_SCAFFOLD_CMD);
+
+    // Fetch the list of file mappings from each allowed package and normalize
+    // them.
+    $file_mappings = $this->getFileMappingsFromPackages($allowed_packages);
+
+    $location_replacements = $this->manageOptions->getLocationReplacements();
+    $scaffold_options = $this->manageOptions->getOptions();
+
+    // Create a collection of scaffolded files to process. This determines which
+    // take priority and which are combined.
+    $scaffold_files = new ScaffoldFileCollection($file_mappings, $location_replacements);
+
+    // Get the scaffold files whose contents on disk match what we are about to
+    // write. We can remove these from consideration, as rewriting would be a
+    // no-op.
+    $unchanged = $scaffold_files->checkUnchanged();
+    $scaffold_files->filterFiles($unchanged);
+
+    // Process the list of scaffolded files.
+    $scaffold_results = $scaffold_files->processScaffoldFiles($this->io, $scaffold_options);
+
+    // Generate an autoload file in the document root that includes the
+    // autoload.php file in the vendor directory, wherever that is. Drupal
+    // requires this in order to easily locate relocated vendor dirs.
+    $web_root = $this->manageOptions->getOptions()->getLocation('web-root');
+    if (!GenerateAutoloadReferenceFile::autoloadFileCommitted($this->io, $this->rootPackageName(), $web_root)) {
+      $scaffold_results[] = GenerateAutoloadReferenceFile::generateAutoload($this->io, $this->rootPackageName(), $web_root, $this->getVendorPath());
+    }
+
+    // Add the managed scaffold files to .gitignore if applicable.
+    $gitIgnoreManager = new ManageGitIgnore($this->io, getcwd());
+    $gitIgnoreManager->manageIgnored($scaffold_results, $scaffold_options);
+
+    // Call post-scaffold scripts.
+    $dispatcher->dispatch(self::POST_DRUPAL_SCAFFOLD_CMD);
+  }
+
+  /**
+   * Gets the path to the 'vendor' directory.
+   *
+   * @return string
+   *   The file path of the vendor directory.
+   */
+  protected function getVendorPath() {
+    $vendor_dir = $this->composer->getConfig()->get('vendor-dir');
+    $filesystem = new Filesystem();
+    return $filesystem->normalizePath(realpath($vendor_dir));
+  }
+
+  /**
+   * Gets a consolidated list of file mappings from all allowed packages.
+   *
+   * @param \Composer\Package\Package[] $allowed_packages
+   *   A multidimensional array of file mappings, as returned by
+   *   self::getAllowedPackages().
+   *
+   * @return \Drupal\Composer\Plugin\Scaffold\Operations\OperationInterface[][]
+   *   An array of destination paths => scaffold operation objects.
+   */
+  protected function getFileMappingsFromPackages(array $allowed_packages) {
+    $file_mappings = [];
+    foreach ($allowed_packages as $package_name => $package) {
+      $file_mappings[$package_name] = $this->getPackageFileMappings($package);
+    }
+    return $file_mappings;
+  }
+
+  /**
+   * Gets the array of file mappings provided by a given package.
+   *
+   * @param \Composer\Package\PackageInterface $package
+   *   The Composer package from which to get the file mappings.
+   *
+   * @return \Drupal\Composer\Plugin\Scaffold\Operations\OperationInterface[]
+   *   An array of destination paths => scaffold operation objects.
+   */
+  protected function getPackageFileMappings(PackageInterface $package) {
+    $options = $this->manageOptions->packageOptions($package);
+    if ($options->hasFileMapping()) {
+      return $this->createScaffoldOperations($package, $options->fileMapping());
+    }
+    // Warn the user if they allow a package that does not have any scaffold
+    // files. We will ignore drupal/core, though, as it is implicitly allowed,
+    // but might not have scaffold files (version 8.7.x and earlier).
+    if (!$options->hasAllowedPackages() && ($package->getName() != 'drupal/core')) {
+      $this->io->writeError("The allowed package {$package->getName()} does not provide a file mapping for Composer Scaffold.");
+    }
+    return [];
+  }
+
+  /**
+   * Gets the root package name.
+   *
+   * @return string
+   *   The package name of the root project
+   */
+  protected function rootPackageName() {
+    $root_package = $this->composer->getPackage();
+    return $root_package->getName();
+  }
+
+}
diff --git a/vendor/drupal/core-composer-scaffold/Interpolator.php b/vendor/drupal/core-composer-scaffold/Interpolator.php
new file mode 100644
index 0000000000000000000000000000000000000000..c9f6a4fedb571ec1f084dfe2ca9a05132a2ae6a8
--- /dev/null
+++ b/vendor/drupal/core-composer-scaffold/Interpolator.php
@@ -0,0 +1,157 @@
+<?php
+
+namespace Drupal\Composer\Plugin\Scaffold;
+
+/**
+ * Injects config values from an associative array into a string.
+ *
+ * @internal
+ */
+class Interpolator {
+
+  /**
+   * The character sequence that identifies the start of a token.
+   *
+   * @var string
+   */
+  protected $startToken;
+
+  /**
+   * The character sequence that identifies the end of a token.
+   *
+   * @var string
+   */
+  protected $endToken;
+
+  /**
+   * The associative array of replacements.
+   *
+   * @var array
+   */
+  protected $data = [];
+
+  /**
+   * Interpolator constructor.
+   *
+   * @param string $start_token
+   *   The start marker for a token, e.g. '['.
+   * @param string $end_token
+   *   The end marker for a token, e.g. ']'.
+   */
+  public function __construct($start_token = '\\[', $end_token = '\\]') {
+    $this->startToken = $start_token;
+    $this->endToken = $end_token;
+  }
+
+  /**
+   * Sets the data set to use when interpolating.
+   *
+   * @param array $data
+   *   The key:value pairs to use when interpolating.
+   *
+   * @return $this
+   */
+  public function setData(array $data) {
+    $this->data = $data;
+    return $this;
+  }
+
+  /**
+   * Adds to the data set to use when interpolating.
+   *
+   * @param array $data
+   *   The key:value pairs to use when interpolating.
+   *
+   * @return $this
+   */
+  public function addData(array $data) {
+    $this->data = array_merge($this->data, $data);
+    return $this;
+  }
+
+  /**
+   * Replaces tokens in a string with values from an associative array.
+   *
+   * Tokens are surrounded by delimiters, e.g. square brackets "[key]". The
+   * characters that surround the key may be defined when the Interpolator is
+   * constructed.
+   *
+   * Example:
+   * If the message is 'Hello, [user.name]', then the value of the user.name
+   * item is fetched from the array, and the token [user.name] is replaced with
+   * the result.
+   *
+   * @param string $message
+   *   Message containing tokens to be replaced.
+   * @param array $extra
+   *   Data to use for interpolation in addition to whatever was provided to
+   *   self::setData().
+   * @param string|bool $default
+   *   (optional) The value to substitute for tokens that are not found in the
+   *   data. If FALSE, then missing tokens are not replaced. Defaults to an
+   *   empty string.
+   *
+   * @return string
+   *   The message after replacements have been made.
+   */
+  public function interpolate($message, array $extra = [], $default = '') {
+    $data = $extra + $this->data;
+    $replacements = $this->replacements($message, $data, $default);
+    return strtr($message, $replacements);
+  }
+
+  /**
+   * Finds the tokens that exist in a message and builds a replacement array.
+   *
+   * All of the replacements in the data array are looked up given the token
+   * keys from the provided message. Keys that do not exist in the configuration
+   * are replaced with the default value.
+   *
+   * @param string $message
+   *   String with tokens.
+   * @param array $data
+   *   Data to use for interpolation.
+   * @param string $default
+   *   (optional) The value to substitute for tokens that are not found in the
+   *   data. If FALSE, then missing tokens are not replaced. Defaults to an
+   *   empty string.
+   *
+   * @return string[]
+   *   An array of replacements to make. Keyed by tokens and the replacements
+   *   are the values.
+   */
+  protected function replacements($message, array $data, $default = '') {
+    $tokens = $this->findTokens($message);
+    $replacements = [];
+    foreach ($tokens as $sourceText => $key) {
+      $replacement_text = array_key_exists($key, $data) ? $data[$key] : $default;
+      if ($replacement_text !== FALSE) {
+        $replacements[$sourceText] = $replacement_text;
+      }
+    }
+    return $replacements;
+  }
+
+  /**
+   * Finds all of the tokens in the provided message.
+   *
+   * @param string $message
+   *   String with tokens.
+   *
+   * @return string[]
+   *   map of token to key, e.g. {{key}} => key
+   */
+  protected function findTokens($message) {
+    $reg_ex = '#' . $this->startToken . '([a-zA-Z0-9._-]+)' . $this->endToken . '#';
+    if (!preg_match_all($reg_ex, $message, $matches, PREG_SET_ORDER)) {
+      return [];
+    }
+    $tokens = [];
+    foreach ($matches as $matchSet) {
+      list($sourceText, $key) = $matchSet;
+      $tokens[$sourceText] = $key;
+    }
+    return $tokens;
+  }
+
+}
diff --git a/vendor/drupal/core-composer-scaffold/LICENSE.txt b/vendor/drupal/core-composer-scaffold/LICENSE.txt
new file mode 100644
index 0000000000000000000000000000000000000000..94fb84639c4b6ff359e47a124d8fb4a3aba7a386
--- /dev/null
+++ b/vendor/drupal/core-composer-scaffold/LICENSE.txt
@@ -0,0 +1,339 @@
+        GNU GENERAL PUBLIC LICENSE
+           Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+          Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+        GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+          NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+         END OF TERMS AND CONDITIONS
+
+      How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License along
+    with this program; if not, write to the Free Software Foundation, Inc.,
+    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
diff --git a/vendor/drupal/core-composer-scaffold/ManageGitIgnore.php b/vendor/drupal/core-composer-scaffold/ManageGitIgnore.php
new file mode 100644
index 0000000000000000000000000000000000000000..524cb2ff60537e200c833fe7211ff4635ee645e9
--- /dev/null
+++ b/vendor/drupal/core-composer-scaffold/ManageGitIgnore.php
@@ -0,0 +1,125 @@
+<?php
+
+namespace Drupal\Composer\Plugin\Scaffold;
+
+use Composer\IO\IOInterface;
+
+/**
+ * Manage the .gitignore file.
+ *
+ * @internal
+ */
+class ManageGitIgnore {
+
+  /**
+   * Composer's I/O service.
+   *
+   * @var \Composer\IO\IOInterface
+   */
+  protected $io;
+
+  /**
+   * The directory where the project is located.
+   *
+   * @var string
+   */
+  protected $dir;
+
+  /**
+   * ManageGitIgnore constructor.
+   *
+   * @param string $dir
+   *   The directory where the project is located.
+   */
+  public function __construct(IOInterface $io, $dir) {
+    $this->io = $io;
+    $this->dir = $dir;
+  }
+
+  /**
+   * Manages gitignore files.
+   *
+   * @param \Drupal\Composer\Plugin\Scaffold\Operations\ScaffoldResult[] $files
+   *   A list of scaffold results, each of which holds a path and whether
+   *   or not that file is managed.
+   * @param \Drupal\Composer\Plugin\Scaffold\ScaffoldOptions $options
+   *   Configuration options from the composer.json extras section.
+   */
+  public function manageIgnored(array $files, ScaffoldOptions $options) {
+    if (!$this->managementOfGitIgnoreEnabled($options)) {
+      return;
+    }
+
+    // Accumulate entries to add to .gitignore, sorted into buckets based on the
+    // location of the .gitignore file the entry should be added to.
+    $add_to_git_ignore = [];
+    foreach ($files as $scaffoldResult) {
+      $path = $scaffoldResult->destination()->fullPath();
+      $is_ignored = Git::checkIgnore($this->io, $path, $this->dir);
+      if (!$is_ignored) {
+        $is_tracked = Git::checkTracked($this->io, $path, $this->dir);
+        if (!$is_tracked && $scaffoldResult->isManaged()) {
+          $dir = realpath(dirname($path));
+          $name = basename($path);
+          $add_to_git_ignore[$dir][] = '/' . $name;
+        }
+      }
+    }
+    // Write out the .gitignore files one at a time.
+    foreach ($add_to_git_ignore as $dir => $entries) {
+      $this->addToGitIgnore($dir, $entries);
+    }
+  }
+
+  /**
+   * Determines whether we should manage gitignore files.
+   *
+   * @param \Drupal\Composer\Plugin\Scaffold\ScaffoldOptions $options
+   *   Configuration options from the composer.json extras section.
+   *
+   * @return bool
+   *   Whether or not gitignore files should be managed.
+   */
+  protected function managementOfGitIgnoreEnabled(ScaffoldOptions $options) {
+    // If the composer.json stipulates whether gitignore is managed or not, then
+    // follow its recommendation.
+    if ($options->hasGitIgnore()) {
+      return $options->gitIgnore();
+    }
+
+    // Do not manage .gitignore if there is no repository here.
+    if (!Git::isRepository($this->io, $this->dir)) {
+      return FALSE;
+    }
+
+    // If the composer.json did not specify whether or not .gitignore files
+    // should be managed, then manage them if the vendor directory is ignored.
+    return Git::checkIgnore($this->io, 'vendor', $this->dir);
+  }
+
+  /**
+   * Adds a set of entries to the specified .gitignore file.
+   *
+   * @param string $dir
+   *   Path to directory where gitignore should be written.
+   * @param string[] $entries
+   *   Entries to write to .gitignore file.
+   */
+  protected function addToGitIgnore($dir, array $entries) {
+    sort($entries);
+    $git_ignore_path = $dir . '/.gitignore';
+    $contents = '';
+
+    // Appending to existing .gitignore files.
+    if (file_exists($git_ignore_path)) {
+      $contents = file_get_contents($git_ignore_path);
+      if (!empty($contents) && substr($contents, -1) != "\n") {
+        $contents .= "\n";
+      }
+    }
+
+    $contents .= implode("\n", $entries);
+    file_put_contents($git_ignore_path, $contents);
+  }
+
+}
diff --git a/vendor/drupal/core-composer-scaffold/ManageOptions.php b/vendor/drupal/core-composer-scaffold/ManageOptions.php
new file mode 100644
index 0000000000000000000000000000000000000000..56cb1a0a1a487743e8a0d8d82c88805aa3cfaa71
--- /dev/null
+++ b/vendor/drupal/core-composer-scaffold/ManageOptions.php
@@ -0,0 +1,92 @@
+<?php
+
+namespace Drupal\Composer\Plugin\Scaffold;
+
+use Composer\Composer;
+use Composer\Package\PackageInterface;
+use Composer\Util\Filesystem;
+
+/**
+ * Per-project options from the 'extras' section of the composer.json file.
+ *
+ * Projects that describe scaffold files do so via their scaffold options.
+ * This data is pulled from the 'drupal-scaffold' portion of the extras
+ * section of the project data.
+ *
+ * @internal
+ */
+class ManageOptions {
+
+  /**
+   * The Composer service.
+   *
+   * @var \Composer\Composer
+   */
+  protected $composer;
+
+  /**
+   * ManageOptions constructor.
+   *
+   * @param \Composer\Composer $composer
+   *   The Composer service.
+   */
+  public function __construct(Composer $composer) {
+    $this->composer = $composer;
+  }
+
+  /**
+   * Gets the root-level scaffold options for this project.
+   *
+   * @return \Drupal\Composer\Plugin\Scaffold\ScaffoldOptions
+   *   The scaffold options object.
+   */
+  public function getOptions() {
+    return $this->packageOptions($this->composer->getPackage());
+  }
+
+  /**
+   * Gets the scaffold options for the stipulated project.
+   *
+   * @param \Composer\Package\PackageInterface $package
+   *   The package to fetch the scaffold options from.
+   *
+   * @return \Drupal\Composer\Plugin\Scaffold\ScaffoldOptions
+   *   The scaffold options object.
+   */
+  public function packageOptions(PackageInterface $package) {
+    return ScaffoldOptions::create($package->getExtra());
+  }
+
+  /**
+   * Creates an interpolator for the 'locations' element.
+   *
+   * The interpolator returned will replace a path string with the tokens
+   * defined in the 'locations' element.
+   *
+   * Note that only the root package may define locations.
+   *
+   * @return \Drupal\Composer\Plugin\Scaffold\Interpolator
+   *   Interpolator that will do replacements in a string using tokens in
+   *   'locations' element.
+   */
+  public function getLocationReplacements() {
+    return (new Interpolator())->setData($this->ensureLocations());
+  }
+
+  /**
+   * Ensures that all of the locations defined in the scaffold files exist.
+   *
+   * Create them on the filesystem if they do not.
+   */
+  protected function ensureLocations() {
+    $fs = new Filesystem();
+    $locations = $this->getOptions()->locations() + ['web_root' => './'];
+    $locations = array_map(function ($location) use ($fs) {
+      $fs->ensureDirectoryExists($location);
+      $location = realpath($location);
+      return $location;
+    }, $locations);
+    return $locations;
+  }
+
+}
diff --git a/vendor/drupal/core-composer-scaffold/Operations/AbstractOperation.php b/vendor/drupal/core-composer-scaffold/Operations/AbstractOperation.php
new file mode 100644
index 0000000000000000000000000000000000000000..a2a994532816e9cd38393da28fba4af2b0c8c08b
--- /dev/null
+++ b/vendor/drupal/core-composer-scaffold/Operations/AbstractOperation.php
@@ -0,0 +1,53 @@
+<?php
+
+namespace Drupal\Composer\Plugin\Scaffold\Operations;
+
+use Drupal\Composer\Plugin\Scaffold\ScaffoldFilePath;
+
+/**
+ * Provides default behaviors for operations.
+ *
+ * @internal
+ */
+abstract class AbstractOperation implements OperationInterface {
+
+  /**
+   * Cached contents of scaffold file to be written to disk.
+   *
+   * @var string
+   */
+  protected $contents;
+
+  /**
+   * {@inheritdoc}
+   */
+  final public function contents() {
+    if (!isset($this->contents)) {
+      $this->contents = $this->generateContents();
+    }
+    return $this->contents;
+  }
+
+  /**
+   * Load the scaffold contents or otherwise generate what is needed.
+   *
+   * @return string
+   *   The contents of the scaffold file.
+   */
+  abstract protected function generateContents();
+
+  /**
+   * {@inheritdoc}
+   */
+  public function scaffoldOverExistingTarget(OperationInterface $existing_target) {
+    return $this;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function scaffoldAtNewLocation(ScaffoldFilePath $destination) {
+    return $this;
+  }
+
+}
diff --git a/vendor/drupal/core-composer-scaffold/Operations/AppendOp.php b/vendor/drupal/core-composer-scaffold/Operations/AppendOp.php
new file mode 100644
index 0000000000000000000000000000000000000000..0e5b51023a69745c3b71b7f9ff52ce087bf23154
--- /dev/null
+++ b/vendor/drupal/core-composer-scaffold/Operations/AppendOp.php
@@ -0,0 +1,206 @@
+<?php
+
+namespace Drupal\Composer\Plugin\Scaffold\Operations;
+
+use Composer\IO\IOInterface;
+use Drupal\Composer\Plugin\Scaffold\ScaffoldFilePath;
+use Drupal\Composer\Plugin\Scaffold\ScaffoldOptions;
+
+/**
+ * Scaffold operation to add to the beginning and/or end of a scaffold file.
+ *
+ * @internal
+ */
+class AppendOp extends AbstractOperation {
+
+  /**
+   * Identifies Append operations.
+   */
+  const ID = 'append';
+
+  /**
+   * Path to the source file to prepend, if any.
+   *
+   * @var \Drupal\Composer\Plugin\Scaffold\ScaffoldFilePath
+   */
+  protected $prepend;
+
+  /**
+   * Path to the source file to append, if any.
+   *
+   * @var \Drupal\Composer\Plugin\Scaffold\ScaffoldFilePath
+   */
+  protected $append;
+
+  /**
+   * Path to the default data to use when appending to an empty file.
+   *
+   * @var \Drupal\Composer\Plugin\Scaffold\ScaffoldFilePath
+   */
+  protected $default;
+
+  /**
+   * An indicator of whether the file we are appending to is managed or not.
+   */
+  protected $managed;
+
+  /**
+   * An indicator of whether we are allowed to append to a non-scaffolded file.
+   */
+  protected $forceAppend;
+
+  /**
+   * The contents from the file that we are prepending / appending to.
+   *
+   * @var string
+   */
+  protected $originalContents;
+
+  /**
+   * Constructs an AppendOp.
+   *
+   * @param \Drupal\Composer\Plugin\Scaffold\ScaffoldFilePath $prepend_path
+   *   The relative path to the prepend file.
+   * @param \Drupal\Composer\Plugin\Scaffold\ScaffoldFilePath $append_path
+   *   The relative path to the append file.
+   * @param bool $force_append
+   *   TRUE if is okay to append to a file that was not scaffolded.
+   * @param \Drupal\Composer\Plugin\Scaffold\ScaffoldFilePath $default_path
+   *   The relative path to the default data.
+   */
+  public function __construct(ScaffoldFilePath $prepend_path = NULL, ScaffoldFilePath $append_path = NULL, $force_append = FALSE, ScaffoldFilePath $default_path = NULL) {
+    $this->forceAppend = $force_append;
+    $this->prepend = $prepend_path;
+    $this->append = $append_path;
+    $this->default = $default_path;
+    $this->managed = TRUE;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function generateContents() {
+    // Fetch the prepend contents, if provided.
+    $prepend_contents = '';
+    if (!empty($this->prepend)) {
+      $prepend_contents = file_get_contents($this->prepend->fullPath()) . "\n";
+    }
+    // Fetch the append contents, if provided.
+    $append_contents = '';
+    if (!empty($this->append)) {
+      $append_contents = "\n" . file_get_contents($this->append->fullPath());
+    }
+
+    // Get the original contents, or the default data if the original is empty.
+    $original_contents = $this->originalContents;
+    if (empty($original_contents) && !empty($this->default)) {
+      $original_contents = file_get_contents($this->default->fullPath());
+    }
+
+    // Attach it all together.
+    return $prepend_contents . $original_contents . $append_contents;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function process(ScaffoldFilePath $destination, IOInterface $io, ScaffoldOptions $options) {
+    $destination_path = $destination->fullPath();
+    $interpolator = $destination->getInterpolator();
+
+    // Be extra-noisy of creating a new file or appending to a non-scaffold
+    // file. Note that if the file already has the append contents, then the
+    // OperationFactory will make a SkipOp instead, and we will not get here.
+    if (!$this->managed) {
+      $message = '  - <info>NOTICE</info> Modifying existing file at <info>[dest-rel-path]</info>.';
+      if (!file_exists($destination_path)) {
+        $message = '  - <info>NOTICE</info> Creating a new file at <info>[dest-rel-path]</info>.';
+      }
+      $message .= ' Examine the contents and ensure that it came out correctly.';
+      $io->write($interpolator->interpolate($message));
+    }
+
+    // Notify that we are prepending, if there is prepend data.
+    if (!empty($this->prepend)) {
+      $this->prepend->addInterpolationData($interpolator, 'prepend');
+      $io->write($interpolator->interpolate("  - Prepend to <info>[dest-rel-path]</info> from <info>[prepend-rel-path]</info>"));
+    }
+    // Notify that we are appending, if there is append data.
+    $append_contents = '';
+    if (!empty($this->append)) {
+      $this->append->addInterpolationData($interpolator, 'append');
+      $io->write($interpolator->interpolate("  - Append to <info>[dest-rel-path]</info> from <info>[append-rel-path]</info>"));
+    }
+
+    // Write the resulting data
+    file_put_contents($destination_path, $this->contents());
+
+    // Return a ScaffoldResult with knowledge of whether this file is managed.
+    return new ScaffoldResult($destination, $this->managed);
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function scaffoldOverExistingTarget(OperationInterface $existing_target) {
+    $this->originalContents = $existing_target->contents();
+    return $this;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function scaffoldAtNewLocation(ScaffoldFilePath $destination) {
+    // If there is no existing scaffold file at the target location, then any
+    // append we do will be to an unmanaged file.
+    $this->managed = FALSE;
+
+    // Default: do not allow an append over a file that was not scaffolded.
+    if (!$this->forceAppend) {
+      $message = "  - Skip <info>[dest-rel-path]</info>: cannot append to a path that was not scaffolded unless 'force-append' property is set.";
+      return new SkipOp($message);
+    }
+
+    // If the target file does not exist, then we will allow the append to
+    // happen if we have default data to provide for it.
+    if (!file_exists($destination->fullPath())) {
+      if (!empty($this->default)) {
+        return $this;
+      }
+      $message = "  - Skip <info>[dest-rel-path]</info>: no file exists at the target path, and no default data provided.";
+      return new SkipOp($message);
+    }
+
+    // If the target file DOES exist, and it already contains the append/prepend
+    // data, then we will skip the operation.
+    $existingData = file_get_contents($destination->fullPath());
+    if ($this->existingFileHasData($existingData, $this->append) || $this->existingFileHasData($existingData, $this->prepend)) {
+      $message = "  - Skip <info>[dest-rel-path]</info>: the file already has the append/prepend data.";
+      return new SkipOp($message);
+    }
+
+    // Cache the original data to use during append.
+    $this->originalContents = $existingData;
+
+    return $this;
+  }
+
+  /**
+   * Check to see if the append/prepend data has already been applied.
+   * @param string $contents
+   *   The contents of the target file.
+   * @param \Drupal\Composer\Plugin\Scaffold\ScaffoldFilePath $data_path
+   *   The path to the data to append or prepend
+   * @return bool
+   *   'TRUE' if the append/prepend data already exists in contents.
+   */
+  protected function existingFileHasData($contents, $data_path) {
+    if (empty($data_path)) {
+      return FALSE;
+    }
+    $data = file_get_contents($data_path->fullPath());
+
+    return strpos($contents, $data) !== FALSE;
+  }
+
+}
diff --git a/vendor/drupal/core-composer-scaffold/Operations/OperationData.php b/vendor/drupal/core-composer-scaffold/Operations/OperationData.php
new file mode 100644
index 0000000000000000000000000000000000000000..9aa73611c06874f1928e6b3e8ad41b5979b8eb20
--- /dev/null
+++ b/vendor/drupal/core-composer-scaffold/Operations/OperationData.php
@@ -0,0 +1,227 @@
+<?php
+
+namespace Drupal\Composer\Plugin\Scaffold\Operations;
+
+/**
+ * Holds parameter data for operation objects during operation creation only.
+ *
+ * @internal
+ */
+class OperationData {
+
+  const MODE = 'mode';
+  const PATH = 'path';
+  const OVERWRITE = 'overwrite';
+  const PREPEND = 'prepend';
+  const APPEND = 'append';
+  const DEFAULT = 'default';
+  const FORCE_APPEND = 'force-append';
+
+  /**
+   * The parameter data.
+   *
+   * @var array
+   */
+  protected $data;
+
+  /**
+   * The destination path
+   *
+   * @var string
+   */
+  protected $destination;
+
+  /**
+   * OperationData constructor.
+   *
+   * @param mixed $data
+   *   The raw data array to wrap.
+   */
+  public function __construct($destination, $data) {
+    $this->destination = $destination;
+    $this->data = $this->normalizeScaffoldMetadata($destination, $data);
+  }
+
+  /**
+   * Gets the destination path that this operation data is associated with.
+   *
+   * @return string
+   *   The destination path for the scaffold result.
+   */
+  public function destination() {
+    return $this->destination;
+  }
+
+  /**
+   * Gets operation mode
+   *
+   * @return string
+   *   Operation mode.
+   */
+  public function mode() {
+    return $this->data[self::MODE];
+  }
+
+  /**
+   * Checks if path exists
+   *
+   * @return bool
+   *   Returns true if path exists
+   */
+  public function hasPath() {
+    return isset($this->data[self::PATH]);
+  }
+
+  /**
+   * Gets path
+   *
+   * @return string
+   *   The path.
+   */
+  public function path() {
+    return $this->data[self::PATH];
+  }
+
+  /**
+   * Determines overwrite.
+   *
+   * @return bool
+   *   Returns true if overwrite mode was selected.
+   */
+  public function overwrite() {
+    return !empty($this->data[self::OVERWRITE]);
+  }
+
+  /**
+   * Determines whether 'force-append' has been set.
+   *
+   * @return bool
+   *   Returns true if 'force-append' mode was selected.
+   */
+  public function forceAppend() {
+    if ($this->hasDefault()) {
+      return TRUE;
+    }
+    return !empty($this->data[self::FORCE_APPEND]);
+  }
+
+  /**
+   * Checks if prepend path exists.
+   *
+   * @return bool
+   *   Returns true if prepend exists.
+   */
+  public function hasPrepend() {
+    return isset($this->data[self::PREPEND]);
+  }
+
+  /**
+   * Gets prepend path.
+   *
+   * @return string
+   *   Path to prepend data
+   */
+  public function prepend() {
+    return $this->data[self::PREPEND];
+  }
+
+  /**
+   * Checks if append path exists.
+   *
+   * @return bool
+   *   Returns true if prepend exists.
+   */
+  public function hasAppend() {
+    return isset($this->data[self::APPEND]);
+  }
+
+  /**
+   * Gets append path.
+   *
+   * @return string
+   *   Path to append data
+   */
+  public function append() {
+    return $this->data[self::APPEND];
+  }
+
+  /**
+   * Checks if default path exists.
+   *
+   * @return bool
+   *   Returns true if there is default data available.
+   */
+  public function hasDefault() {
+    return isset($this->data[self::DEFAULT]);
+  }
+
+  /**
+   * Gets default path.
+   *
+   * @return string
+   *   Path to default data
+   */
+  public function default() {
+    return $this->data[self::DEFAULT];
+  }
+
+  /**
+   * Normalizes metadata by converting literal values into arrays.
+   *
+   * Conversions performed include:
+   *   - Boolean 'false' means "skip".
+   *   - A string means "replace", with the string value becoming the path.
+   *
+   * @param string $destination
+   *   The destination path for the scaffold file.
+   * @param mixed $value
+   *   The metadata for this operation object, which varies by operation type.
+   *
+   * @return array
+   *   Normalized scaffold metadata with default values.
+   */
+  protected function normalizeScaffoldMetadata($destination, $value) {
+    $defaultScaffoldMetadata = [
+      self::MODE => ReplaceOp::ID,
+      self::PREPEND => NULL,
+      self::APPEND => NULL,
+      self::DEFAULT => NULL,
+      self::OVERWRITE => TRUE,
+    ];
+
+    return $this->convertScaffoldMetadata($destination, $value) + $defaultScaffoldMetadata;
+  }
+
+  /**
+   * Performs the conversion-to-array step in normalizeScaffoldMetadata.
+   *
+   * @param string $destination
+   *   The destination path for the scaffold file.
+   * @param mixed $value
+   *   The metadata for this operation object, which varies by operation type.
+   *
+   * @return array
+   *   Normalized scaffold metadata.
+   */
+  protected function convertScaffoldMetadata($destination, $value) {
+    if (is_bool($value)) {
+      if (!$value) {
+        return [self::MODE => SkipOp::ID];
+      }
+      throw new \RuntimeException("File mapping {$destination} cannot be given the value 'true'.");
+    }
+    if (empty($value)) {
+      throw new \RuntimeException("File mapping {$destination} cannot be empty.");
+    }
+    if (is_string($value)) {
+      $value = [self::PATH => $value];
+    }
+    // If there is no 'mode', but there is an 'append' or a 'prepend' path,
+    // then the mode is 'append' (append + prepend).
+    if (!isset($value[self::MODE]) && (isset($value[self::APPEND]) || isset($value[self::PREPEND]))) {
+      $value[self::MODE] = AppendOp::ID;
+    }
+    return $value;
+  }
+
+}
diff --git a/vendor/drupal/core-composer-scaffold/Operations/OperationFactory.php b/vendor/drupal/core-composer-scaffold/Operations/OperationFactory.php
new file mode 100644
index 0000000000000000000000000000000000000000..b256e0e15fbaafd5883807181af28827e0b9b805
--- /dev/null
+++ b/vendor/drupal/core-composer-scaffold/Operations/OperationFactory.php
@@ -0,0 +1,161 @@
+<?php
+
+namespace Drupal\Composer\Plugin\Scaffold\Operations;
+
+use Composer\Composer;
+use Composer\Package\PackageInterface;
+use Drupal\Composer\Plugin\Scaffold\ScaffoldFilePath;
+
+/**
+ * Create Scaffold operation objects based on provided metadata.
+ *
+ * @internal
+ */
+class OperationFactory {
+
+  /**
+   * The Composer service.
+   *
+   * @var \Composer\Composer
+   */
+  protected $composer;
+
+  /**
+   * OperationFactory constructor.
+   *
+   * @param \Composer\Composer $composer
+   *   Reference to the 'Composer' object, since the Scaffold Operation Factory
+   *   is also responsible for evaluating relative package paths as it creates
+   *   scaffold operations.
+   */
+  public function __construct(Composer $composer) {
+    $this->composer = $composer;
+  }
+
+  /**
+   * Creates a scaffolding operation object as determined by the metadata.
+   *
+   * @param \Composer\Package\PackageInterface $package
+   *   The package that relative paths will be relative from.
+   * @param OperationData $operation_data
+   *   The parameter data for this operation object; varies by operation type.
+   *
+   * @return \Drupal\Composer\Plugin\Scaffold\Operations\OperationInterface
+   *   The scaffolding operation object (skip, replace, etc.)
+   *
+   * @throws \RuntimeException
+   *   Exception thrown when parameter data does not identify a known scaffol
+   *   operation.
+   */
+  public function create(PackageInterface $package, OperationData $operation_data) {
+    switch ($operation_data->mode()) {
+      case SkipOp::ID:
+        return new SkipOp();
+
+      case ReplaceOp::ID:
+        return $this->createReplaceOp($package, $operation_data);
+
+      case AppendOp::ID:
+        return $this->createAppendOp($package, $operation_data);
+    }
+    throw new \RuntimeException("Unknown scaffold operation mode <comment>{$operation_data->mode()}</comment>.");
+  }
+
+  /**
+   * Creates a 'replace' scaffold op.
+   *
+   * Replace ops may copy or symlink, depending on settings.
+   *
+   * @param \Composer\Package\PackageInterface $package
+   *   The package that relative paths will be relative from.
+   * @param OperationData $operation_data
+   *   The parameter data for this operation object, i.e. the relative 'path'.
+   *
+   * @return \Drupal\Composer\Plugin\Scaffold\Operations\OperationInterface
+   *   A scaffold replace operation object.
+   */
+  protected function createReplaceOp(PackageInterface $package, OperationData $operation_data) {
+    if (!$operation_data->hasPath()) {
+      throw new \RuntimeException("'path' component required for 'replace' operations.");
+    }
+    $package_name = $package->getName();
+    $package_path = $this->getPackagePath($package);
+    $source = ScaffoldFilePath::sourcePath($package_name, $package_path, $operation_data->destination(), $operation_data->path());
+    $op = new ReplaceOp($source, $operation_data->overwrite());
+    return $op;
+  }
+
+  /**
+   * Creates an 'append' (or 'prepend') scaffold op.
+   *
+   * @param \Composer\Package\PackageInterface $package
+   *   The package that relative paths will be relative from.
+   * @param OperationData $operation_data
+   *   The parameter data for this operation object, i.e. the relative 'path'.
+   *
+   * @return \Drupal\Composer\Plugin\Scaffold\Operations\OperationInterface
+   *   A scaffold replace operation object.
+   */
+  protected function createAppendOp(PackageInterface $package, OperationData $operation_data) {
+    $package_name = $package->getName();
+    $package_path = $this->getPackagePath($package);
+    $prepend_source_file = NULL;
+    $append_source_file = NULL;
+    $default_data_file = NULL;
+    if ($operation_data->hasPrepend()) {
+      $prepend_source_file = ScaffoldFilePath::sourcePath($package_name, $package_path, $operation_data->destination(), $operation_data->prepend());
+    }
+    if ($operation_data->hasAppend()) {
+      $append_source_file = ScaffoldFilePath::sourcePath($package_name, $package_path, $operation_data->destination(), $operation_data->append());
+    }
+    if ($operation_data->hasDefault()) {
+      $default_data_file = ScaffoldFilePath::sourcePath($package_name, $package_path, $operation_data->destination(), $operation_data->default());
+    }
+    if (!$this->hasContent($prepend_source_file) && !$this->hasContent($append_source_file)) {
+      $message = '  - Keep <info>[dest-rel-path]</info> unchanged: no content to prepend / append was provided.';
+      return new SkipOp($message);
+    }
+
+    return new AppendOp($prepend_source_file, $append_source_file, $operation_data->forceAppend(), $default_data_file);
+  }
+
+  /**
+   * Checks to see if the specified scaffold file exists and has content.
+   *
+   * @param Drupal\Composer\Plugin\Scaffold\ScaffoldFilePath $file
+   *   Scaffold file to check.
+   * @return bool
+   *   True if the file exists and has content.
+   */
+  protected function hasContent(ScaffoldFilePath $file = NULL) {
+    if (!$file) {
+      return FALSE;
+    }
+    $path = $file->fullPath();
+    return is_file($path) && (filesize($path) > 0);
+  }
+
+  /**
+   * Gets the file path of a package.
+   *
+   * Note that if we call getInstallPath on the root package, we get the
+   * wrong answer (the installation manager thinks our package is in
+   * vendor). We therefore add special checking for this case.
+   *
+   * @param \Composer\Package\PackageInterface $package
+   *   The package.
+   *
+   * @return string
+   *   The file path.
+   */
+  protected function getPackagePath(PackageInterface $package) {
+    if ($package->getName() == $this->composer->getPackage()->getName()) {
+      // This will respect the --working-dir option if Composer is invoked with
+      // it. There is no API or method to determine the filesystem path of
+      // a package's composer.json file.
+      return getcwd();
+    }
+    return $this->composer->getInstallationManager()->getInstallPath($package);
+  }
+
+}
diff --git a/vendor/drupal/core-composer-scaffold/Operations/OperationInterface.php b/vendor/drupal/core-composer-scaffold/Operations/OperationInterface.php
new file mode 100644
index 0000000000000000000000000000000000000000..9dc20e0fc922332975af8a6665784b2ab31d3972
--- /dev/null
+++ b/vendor/drupal/core-composer-scaffold/Operations/OperationInterface.php
@@ -0,0 +1,69 @@
+<?php
+
+namespace Drupal\Composer\Plugin\Scaffold\Operations;
+
+use Composer\IO\IOInterface;
+use Drupal\Composer\Plugin\Scaffold\ScaffoldFilePath;
+use Drupal\Composer\Plugin\Scaffold\ScaffoldOptions;
+
+/**
+ * Interface for scaffold operation objects.
+ *
+ * @internal
+ */
+interface OperationInterface {
+
+  /**
+   * Returns the exact data that will be written to the scaffold files.
+   *
+   * @return string
+   *   Data to be written to the scaffold location.
+   */
+  public function contents();
+
+  /**
+   * Process this scaffold operation.
+   *
+   * @param \Drupal\Composer\Plugin\Scaffold\ScaffoldFilePath $destination
+   *   Scaffold file's destination path.
+   * @param \Composer\IO\IOInterface $io
+   *   IOInterface to write to.
+   * @param \Drupal\Composer\Plugin\Scaffold\ScaffoldOptions $options
+   *   Various options that may alter the behavior of the operation.
+   *
+   * @return \Drupal\Composer\Plugin\Scaffold\Operations\ScaffoldResult
+   *   Result of the scaffolding operation.
+   */
+  public function process(ScaffoldFilePath $destination, IOInterface $io, ScaffoldOptions $options);
+
+  /**
+   * Determines what to do if operation is used at same path as a previous op.
+   *
+   * Default behavior is to scaffold this operation at the specified
+   * destination, ignoring whatever was there before.
+   *
+   * @param OperationInterface $existing_target
+   *   Existing file at the destination path that we should combine with.
+   *
+   * @return OperationInterface
+   *   The op to use at this destination.
+   */
+  public function scaffoldOverExistingTarget(OperationInterface $existing_target);
+
+  /**
+   * Determines what to do if operation is used without a previous operation.
+   *
+   * Default behavior is to scaffold this operation at the specified
+   * destination. Most operations overwrite rather than modify existing files,
+   * and therefore do not need to do anything special when there is no existing
+   * file.
+   *
+   * @param \Drupal\Composer\Plugin\Scaffold\ScaffoldFilePath $destination
+   *   Scaffold file's destination path.
+   *
+   * @return OperationInterface
+   *   The op to use at this destination.
+   */
+  public function scaffoldAtNewLocation(ScaffoldFilePath $destination);
+
+}
diff --git a/vendor/drupal/core-composer-scaffold/Operations/ReplaceOp.php b/vendor/drupal/core-composer-scaffold/Operations/ReplaceOp.php
new file mode 100644
index 0000000000000000000000000000000000000000..66f8ea35b34c091975170602175920fa1185bdef
--- /dev/null
+++ b/vendor/drupal/core-composer-scaffold/Operations/ReplaceOp.php
@@ -0,0 +1,127 @@
+<?php
+
+namespace Drupal\Composer\Plugin\Scaffold\Operations;
+
+use Composer\IO\IOInterface;
+use Composer\Util\Filesystem;
+use Drupal\Composer\Plugin\Scaffold\ScaffoldFilePath;
+use Drupal\Composer\Plugin\Scaffold\ScaffoldOptions;
+
+/**
+ * Scaffold operation to copy or symlink from source to destination.
+ *
+ * @internal
+ */
+class ReplaceOp extends AbstractOperation {
+
+  /**
+   * Identifies Replace operations.
+   */
+  const ID = 'replace';
+
+  /**
+   * The relative path to the source file.
+   *
+   * @var \Drupal\Composer\Plugin\Scaffold\ScaffoldFilePath
+   */
+  protected $source;
+
+  /**
+   * Whether to overwrite existing files.
+   *
+   * @var bool
+   */
+  protected $overwrite;
+
+  /**
+   * Constructs a ReplaceOp.
+   *
+   * @param \Drupal\Composer\Plugin\Scaffold\ScaffoldFilePath $sourcePath
+   *   The relative path to the source file.
+   * @param bool $overwrite
+   *   Whether to allow this scaffold file to overwrite files already at
+   *   the destination. Defaults to TRUE.
+   */
+  public function __construct(ScaffoldFilePath $sourcePath, $overwrite = TRUE) {
+    $this->source = $sourcePath;
+    $this->overwrite = $overwrite;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function generateContents() {
+    return file_get_contents($this->source->fullPath());
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function process(ScaffoldFilePath $destination, IOInterface $io, ScaffoldOptions $options) {
+    $fs = new Filesystem();
+    $destination_path = $destination->fullPath();
+    // Do nothing if overwrite is 'false' and a file already exists at the
+    // destination.
+    if ($this->overwrite === FALSE && file_exists($destination_path)) {
+      $interpolator = $destination->getInterpolator();
+      $io->write($interpolator->interpolate("  - Skip <info>[dest-rel-path]</info> because it already exists and overwrite is <comment>false</comment>."));
+      return new ScaffoldResult($destination, FALSE);
+    }
+
+    // Get rid of the destination if it exists, and make sure that
+    // the directory where it's going to be placed exists.
+    $fs->remove($destination_path);
+    $fs->ensureDirectoryExists(dirname($destination_path));
+    if ($options->symlink()) {
+      return $this->symlinkScaffold($destination, $io);
+    }
+    return $this->copyScaffold($destination, $io);
+  }
+
+  /**
+   * Copies the scaffold file.
+   *
+   * @param \Drupal\Composer\Plugin\Scaffold\ScaffoldFilePath $destination
+   *   Scaffold file to process.
+   * @param \Composer\IO\IOInterface $io
+   *   IOInterface to writing to.
+   *
+   * @return \Drupal\Composer\Plugin\Scaffold\Operations\ScaffoldResult
+   *   The scaffold result.
+   */
+  protected function copyScaffold(ScaffoldFilePath $destination, IOInterface $io) {
+    $interpolator = $destination->getInterpolator();
+    $this->source->addInterpolationData($interpolator);
+    $success = file_put_contents($destination->fullPath(), $this->contents());
+    if (!$success) {
+      throw new \RuntimeException($interpolator->interpolate("Could not copy source file <info>[src-rel-path]</info> to <info>[dest-rel-path]</info>!"));
+    }
+    $io->write($interpolator->interpolate("  - Copy <info>[dest-rel-path]</info> from <info>[src-rel-path]</info>"));
+    return new ScaffoldResult($destination, $this->overwrite);
+  }
+
+  /**
+   * Symlinks the scaffold file.
+   *
+   * @param \Drupal\Composer\Plugin\Scaffold\ScaffoldFilePath $destination
+   *   Scaffold file to process.
+   * @param \Composer\IO\IOInterface $io
+   *   IOInterface to writing to.
+   *
+   * @return \Drupal\Composer\Plugin\Scaffold\Operations\ScaffoldResult
+   *   The scaffold result.
+   */
+  protected function symlinkScaffold(ScaffoldFilePath $destination, IOInterface $io) {
+    $interpolator = $destination->getInterpolator();
+    try {
+      $fs = new Filesystem();
+      $fs->relativeSymlink($this->source->fullPath(), $destination->fullPath());
+    }
+    catch (\Exception $e) {
+      throw new \RuntimeException($interpolator->interpolate("Could not symlink source file <info>[src-rel-path]</info> to <info>[dest-rel-path]</info>!"), [], $e);
+    }
+    $io->write($interpolator->interpolate("  - Link <info>[dest-rel-path]</info> from <info>[src-rel-path]</info>"));
+    return new ScaffoldResult($destination, $this->overwrite);
+  }
+
+}
diff --git a/vendor/drupal/core-composer-scaffold/Operations/ScaffoldFileCollection.php b/vendor/drupal/core-composer-scaffold/Operations/ScaffoldFileCollection.php
new file mode 100644
index 0000000000000000000000000000000000000000..3551b80aea5cd273add301e30c572c1143aa0199
--- /dev/null
+++ b/vendor/drupal/core-composer-scaffold/Operations/ScaffoldFileCollection.php
@@ -0,0 +1,198 @@
+<?php
+
+namespace Drupal\Composer\Plugin\Scaffold\Operations;
+
+use Composer\IO\IOInterface;
+use Drupal\Composer\Plugin\Scaffold\Interpolator;
+use Drupal\Composer\Plugin\Scaffold\ScaffoldFileInfo;
+use Drupal\Composer\Plugin\Scaffold\ScaffoldFilePath;
+use Drupal\Composer\Plugin\Scaffold\ScaffoldOptions;
+
+/**
+ * Collection of scaffold files.
+ *
+ * @internal
+ */
+class ScaffoldFileCollection implements \IteratorAggregate {
+
+  /**
+   * Nested list of all scaffold files.
+   *
+   * The top level array maps from the package name to the collection of
+   * scaffold files provided by that package. Each collection of scaffold files
+   * is keyed by destination path.
+   *
+   * @var \Drupal\Composer\Plugin\Scaffold\ScaffoldFileInfo[][]
+   */
+  protected $scaffoldFilesByProject = [];
+
+  /**
+   * ScaffoldFileCollection constructor.
+   *
+   * @param \Drupal\Composer\Plugin\Scaffold\Operations\OperationInterface[][] $file_mappings
+   *   A multidimensional array of file mappings.
+   * @param \Drupal\Composer\Plugin\Scaffold\Interpolator $location_replacements
+   *   An object with the location mappings (e.g. [web-root]).
+   */
+  public function __construct(array $file_mappings, Interpolator $location_replacements) {
+    // Collection of all destination paths to be scaffolded. Used to determine
+    // when two projects scaffold the same file and we have to either replace or
+    // combine them together.
+    // @see OperationInterface::scaffoldOverExistingTarget().
+    $scaffoldFiles = [];
+
+    // Build the list of ScaffoldFileInfo objects by project.
+    foreach ($file_mappings as $package_name => $package_file_mappings) {
+      foreach ($package_file_mappings as $destination_rel_path => $op) {
+        $destination = ScaffoldFilePath::destinationPath($package_name, $destination_rel_path, $location_replacements);
+
+        // If there was already a scaffolding operation happening at this path,
+        // allow the new operation to decide how to handle the override.
+        // Usually, the new operation will replace whatever was there before.
+        if (isset($scaffoldFiles[$destination_rel_path])) {
+          $previous_scaffold_file = $scaffoldFiles[$destination_rel_path];
+          $op = $op->scaffoldOverExistingTarget($previous_scaffold_file->op());
+
+          // Remove the previous op so we only touch the destination once.
+          $message = "  - Skip <info>[dest-rel-path]</info>: overridden in <comment>{$package_name}</comment>";
+          $this->scaffoldFilesByProject[$previous_scaffold_file->packageName()][$destination_rel_path] = new ScaffoldFileInfo($destination, new SkipOp($message));
+        }
+        // If there is NOT already a scaffolding operation happening at this
+        // path, notify the scaffold operation of this fact.
+        else {
+          $op = $op->scaffoldAtNewLocation($destination);
+        }
+
+        // Combine the scaffold operation with the destination and record it.
+        $scaffold_file = new ScaffoldFileInfo($destination, $op);
+        $scaffoldFiles[$destination_rel_path] = $scaffold_file;
+        $this->scaffoldFilesByProject[$package_name][$destination_rel_path] = $scaffold_file;
+      }
+    }
+  }
+
+  /**
+   * Removes any item that has a path matching any path in the provided list.
+   *
+   * Matching is done via destination path.
+   *
+   * @param string[] $files_to_filter
+   *   List of destination paths
+   */
+  public function filterFiles(array $files_to_filter) {
+    foreach ($this->scaffoldFilesByProject as $project_name => $scaffold_files) {
+      foreach ($scaffold_files as $destination_rel_path => $scaffold_file) {
+        if (in_array($destination_rel_path, $files_to_filter, TRUE)) {
+          unset($scaffold_files[$destination_rel_path]);
+        }
+      }
+      $this->scaffoldFilesByProject[$project_name] = $scaffold_files;
+      if (!$this->checkListHasItemWithContent($scaffold_files)) {
+        unset($this->scaffoldFilesByProject[$project_name]);
+      }
+    }
+  }
+
+  /**
+   * Scans through a list of scaffold files and determines if any has contents.
+   *
+   * @param Drupal\Composer\Plugin\Scaffold\ScaffoldFileInfo[] $scaffold_files
+   *   List of scaffold files, path: ScaffoldFileInfo
+   *
+   * @return bool
+   *   TRUE if at least one item in the list has content
+   */
+  protected function checkListHasItemWithContent(array $scaffold_files) {
+    foreach ($scaffold_files as $destination_rel_path => $scaffold_file) {
+      $contents = $scaffold_file->op()->contents();
+      if (!empty($contents)) {
+        return TRUE;
+      }
+    }
+    return FALSE;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getIterator() {
+    return new \ArrayIterator($this->scaffoldFilesByProject);
+  }
+
+  /**
+   * Processes the files in our collection.
+   *
+   * @param \Composer\IO\IOInterface $io
+   *   The Composer IO object.
+   * @param \Drupal\Composer\Plugin\Scaffold\ScaffoldOptions $scaffold_options
+   *   The scaffold options.
+   *
+   * @return \Drupal\Composer\Plugin\Scaffold\Operations\ScaffoldResult[]
+   *   The results array.
+   */
+  public function processScaffoldFiles(IOInterface $io, ScaffoldOptions $scaffold_options) {
+    $results = [];
+    foreach ($this as $project_name => $scaffold_files) {
+      $io->write("Scaffolding files for <comment>{$project_name}</comment>:");
+      foreach ($scaffold_files as $scaffold_file) {
+        $results[$scaffold_file->destination()->relativePath()] = $scaffold_file->process($io, $scaffold_options);
+      }
+    }
+    return $results;
+  }
+
+  /**
+   * Processes the iterator created by ScaffoldFileCollection::create().
+   *
+   * @param \Drupal\Composer\Plugin\Scaffold\Operations\ScaffoldFileCollection $collection
+   *   The iterator to process.
+   * @param \Composer\IO\IOInterface $io
+   *   The Composer IO object.
+   * @param \Drupal\Composer\Plugin\Scaffold\ScaffoldOptions $scaffold_options
+   *   The scaffold options.
+   *
+   * @return \Drupal\Composer\Plugin\Scaffold\Operations\ScaffoldResult[]
+   *   The results array.
+   *
+   * @deprecated. Called when upgrading from the Core Composer Scaffold plugin
+   *   version 8.8.x due to a bug in the plugin and handler classes. Do not use
+   *   in 8.9.x or 9.x, and remove in Drupal 10.x.
+   */
+  public static function process(ScaffoldFileCollection $collection, IOInterface $io, ScaffoldOptions $scaffold_options) {
+    $results = [];
+    foreach ($collection as $project_name => $scaffold_files) {
+      $io->write("Scaffolding files for <comment>{$project_name}</comment>:");
+      foreach ($scaffold_files as $scaffold_file) {
+        $results[$scaffold_file->destination()->relativePath()] = $scaffold_file->process($io, $scaffold_options);
+      }
+    }
+    return $results;
+  }
+
+  /**
+   * Returns the list of files that have not changed since they were scaffolded.
+   *
+   * Note that there are two reasons a file may have changed:
+   *   - The user modified it after it was scaffolded.
+   *   - The package the file came to was updated, and the file is different in
+   *     the new version.
+   *
+   * With the current scaffold code, we cannot tell the difference between the
+   * two. @see https://www.drupal.org/project/drupal/issues/3092563
+   *
+   * @return string[]
+   *   List of relative paths to unchanged files on disk.
+   */
+  public function checkUnchanged() {
+    $results = [];
+    foreach ($this as $project_name => $scaffold_files) {
+      foreach ($scaffold_files as $scaffold_file) {
+        if (!$scaffold_file->hasChanged()) {
+          $results[] = $scaffold_file->destination()->relativePath();
+        }
+      }
+    }
+    return $results;
+  }
+
+}
diff --git a/vendor/drupal/core-composer-scaffold/Operations/ScaffoldResult.php b/vendor/drupal/core-composer-scaffold/Operations/ScaffoldResult.php
new file mode 100644
index 0000000000000000000000000000000000000000..3445b5307ff5f6f048592b5ebba454899d52b71b
--- /dev/null
+++ b/vendor/drupal/core-composer-scaffold/Operations/ScaffoldResult.php
@@ -0,0 +1,61 @@
+<?php
+
+namespace Drupal\Composer\Plugin\Scaffold\Operations;
+
+use Drupal\Composer\Plugin\Scaffold\ScaffoldFilePath;
+
+/**
+ * Record the result of a scaffold operation.
+ *
+ * @internal
+ */
+class ScaffoldResult {
+
+  /**
+   * The path to the scaffold file that was processed.
+   *
+   * @var \Drupal\Composer\Plugin\Scaffold\ScaffoldFilePath
+   */
+  protected $destination;
+
+  /**
+   * Indicates if this scaffold file is managed by the scaffold command.
+   *
+   * @var bool
+   */
+  protected $managed;
+
+  /**
+   * ScaffoldResult constructor.
+   *
+   * @param \Drupal\Composer\Plugin\Scaffold\ScaffoldFilePath $destination
+   *   The path to the scaffold file that was processed.
+   * @param bool $isManaged
+   *   (optional) Whether this result is managed. Defaults to FALSE.
+   */
+  public function __construct(ScaffoldFilePath $destination, $isManaged = FALSE) {
+    $this->destination = $destination;
+    $this->managed = $isManaged;
+  }
+
+  /**
+   * Determines whether this scaffold file is managed.
+   *
+   * @return bool
+   *   TRUE if this scaffold file is managed, FALSE if not.
+   */
+  public function isManaged() {
+    return $this->managed;
+  }
+
+  /**
+   * Gets the destination scaffold file that this result refers to.
+   *
+   * @return \Drupal\Composer\Plugin\Scaffold\ScaffoldFilePath
+   *   The destination path for the scaffold result.
+   */
+  public function destination() {
+    return $this->destination;
+  }
+
+}
diff --git a/vendor/drupal/core-composer-scaffold/Operations/SkipOp.php b/vendor/drupal/core-composer-scaffold/Operations/SkipOp.php
new file mode 100644
index 0000000000000000000000000000000000000000..4180bd8683486f7440206ccf77b708fda917ef6b
--- /dev/null
+++ b/vendor/drupal/core-composer-scaffold/Operations/SkipOp.php
@@ -0,0 +1,54 @@
+<?php
+
+namespace Drupal\Composer\Plugin\Scaffold\Operations;
+
+use Composer\IO\IOInterface;
+use Drupal\Composer\Plugin\Scaffold\ScaffoldFilePath;
+use Drupal\Composer\Plugin\Scaffold\ScaffoldOptions;
+
+/**
+ * Scaffold operation to skip a scaffold file (do nothing).
+ *
+ * @internal
+ */
+class SkipOp extends AbstractOperation {
+
+  /**
+   * Identifies Skip operations.
+   */
+  const ID = 'skip';
+
+  /**
+   * The message to output while processing.
+   *
+   * @var string
+   */
+  protected $message;
+
+  /**
+   * SkipOp constructor.
+   *
+   * @param string $message
+   *   (optional) A custom message to output while skipping.
+   */
+  public function __construct($message = "  - Skip <info>[dest-rel-path]</info>: disabled") {
+    $this->message = $message;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function generateContents() {
+    return '';
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function process(ScaffoldFilePath $destination, IOInterface $io, ScaffoldOptions $options) {
+    $interpolator = $destination->getInterpolator();
+    $io->write($interpolator->interpolate($this->message));
+    return new ScaffoldResult($destination, FALSE);
+  }
+
+}
diff --git a/vendor/drupal/core-composer-scaffold/Plugin.php b/vendor/drupal/core-composer-scaffold/Plugin.php
new file mode 100644
index 0000000000000000000000000000000000000000..2f5214fb225f0ea73e9eac0a6305673c2278a53d
--- /dev/null
+++ b/vendor/drupal/core-composer-scaffold/Plugin.php
@@ -0,0 +1,147 @@
+<?php
+
+namespace Drupal\Composer\Plugin\Scaffold;
+
+use Composer\Composer;
+use Composer\EventDispatcher\EventSubscriberInterface;
+use Composer\IO\IOInterface;
+use Composer\Installer\PackageEvent;
+use Composer\Installer\PackageEvents;
+use Composer\Plugin\Capability\CommandProvider;
+use Composer\Plugin\Capable;
+use Composer\Plugin\CommandEvent;
+use Composer\Plugin\PluginEvents;
+use Composer\Plugin\PluginInterface;
+use Composer\Script\Event;
+use Composer\Script\ScriptEvents;
+use Drupal\Composer\Plugin\Scaffold\CommandProvider as ScaffoldCommandProvider;
+
+/**
+ * Composer plugin for handling drupal scaffold.
+ *
+ * @internal
+ */
+class Plugin implements PluginInterface, EventSubscriberInterface, Capable {
+
+  /**
+   * The Composer service.
+   *
+   * @var \Composer\Composer
+   */
+  protected $composer;
+
+  /**
+   * Composer's I/O service.
+   *
+   * @var \Composer\IO\IOInterface
+   */
+  protected $io;
+
+  /**
+   * The Composer Scaffold handler.
+   *
+   * @var \Drupal\Composer\Plugin\Scaffold\Handler
+   */
+  protected $handler;
+
+  /**
+   * Record whether the 'require' command was called.
+   *
+   * @param bool
+   */
+  protected $requireWasCalled;
+
+  /**
+   * {@inheritdoc}
+   */
+  public function activate(Composer $composer, IOInterface $io) {
+    $this->composer = $composer;
+    $this->io = $io;
+    $this->requireWasCalled = FALSE;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function deactivate(Composer $composer, IOInterface $io) {
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function uninstall(Composer $composer, IOInterface $io) {
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getCapabilities() {
+    return [CommandProvider::class => ScaffoldCommandProvider::class];
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public static function getSubscribedEvents() {
+    // Important note: We only instantiate our handler on "post" events.
+    return [
+      ScriptEvents::POST_UPDATE_CMD => 'postCmd',
+      ScriptEvents::POST_INSTALL_CMD => 'postCmd',
+      PackageEvents::POST_PACKAGE_INSTALL => 'postPackage',
+      PluginEvents::COMMAND => 'onCommand',
+    ];
+  }
+
+  /**
+   * Post command event callback.
+   *
+   * @param \Composer\Script\Event $event
+   *   The Composer event.
+   */
+  public function postCmd(Event $event) {
+    $this->handler()->scaffold();
+  }
+
+  /**
+   * Post package event behavior.
+   *
+   * @param \Composer\Installer\PackageEvent $event
+   *   Composer package event sent on install/update/remove.
+   */
+  public function postPackage(PackageEvent $event) {
+    $this->handler()->onPostPackageEvent($event);
+  }
+
+  /**
+   * Pre command event callback.
+   *
+   * @param \Composer\Plugin\CommandEvent $event
+   *   The Composer command event.
+   */
+  public function onCommand(CommandEvent $event) {
+    if ($event->getCommandName() == 'require') {
+      if ($this->handler) {
+        throw new \Error('Core Scaffold Plugin handler instantiated too early. See https://www.drupal.org/project/drupal/issues/3104922');
+      }
+      $this->requireWasCalled = TRUE;
+    }
+  }
+
+  /**
+   * Lazy-instantiate the handler object. It is dangerous to update a Composer
+   * plugin if it loads any classes prior to the `composer update` operation,
+   * and later tries to use them in a post-update hook.
+   */
+  protected function handler() {
+    if (!$this->handler) {
+      $this->handler = new Handler($this->composer, $this->io);
+      // On instantiation of our handler, notify it if the 'require' command
+      // was executed.
+      if ($this->requireWasCalled) {
+        $this->handler->requireWasCalled();
+      }
+    }
+    return $this->handler;
+  }
+
+}
diff --git a/vendor/drupal/core-composer-scaffold/PostPackageEventListenerInterface.php b/vendor/drupal/core-composer-scaffold/PostPackageEventListenerInterface.php
new file mode 100644
index 0000000000000000000000000000000000000000..61356b145cf59e6ec2916895fa37f3d4402857d6
--- /dev/null
+++ b/vendor/drupal/core-composer-scaffold/PostPackageEventListenerInterface.php
@@ -0,0 +1,24 @@
+<?php
+
+namespace Drupal\Composer\Plugin\Scaffold;
+
+use Composer\Installer\PackageEvent;
+
+/**
+ * Interface for post package event listeners.
+ *
+ * @see \Drupal\Composer\Plugin\Scaffold\Handler::onPostPackageEvent
+ *
+ * @internal
+ */
+interface PostPackageEventListenerInterface {
+
+  /**
+   * Handles package events during a 'composer require' operation.
+   *
+   * @param \Composer\Installer\PackageEvent $event
+   *   Composer package event sent on install/update/remove.
+   */
+  public function event(PackageEvent $event);
+
+}
diff --git a/vendor/drupal/core-composer-scaffold/README.md b/vendor/drupal/core-composer-scaffold/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..2830e5565e547db1fedd01b9c7fddbcf05d4a5f4
--- /dev/null
+++ b/vendor/drupal/core-composer-scaffold/README.md
@@ -0,0 +1,519 @@
+# Drupal Composer Scaffold
+
+This project provides a composer plugin for placing scaffold files (like
+`index.php`, `update.php`, …) from the `drupal/core` project into their desired
+location inside the web root. Only individual files may be scaffolded with this
+plugin.
+
+The purpose of scaffolding files is to allow Drupal sites to be fully managed by
+Composer, and still allow individual asset files to be placed in arbitrary
+locations. The goal of doing this is to enable a properly configured composer
+template to produce a file layout that exactly matches the file layout of a
+Drupal 8.7.x and earlier tarball distribution. Other file layouts will also be
+possible; for example, a project layout very similar to the current
+[drupal-composer/drupal-project](https://github.com/drupal-composer/drupal-scaffold)
+template will also be provided. When one of these projects is used, the user
+should be able to use `composer require` and `composer update` on a Drupal site
+immediately after untarring the downloaded archive.
+
+Note that the dependencies of a Drupal site are only able to scaffold files if
+explicitly granted that right in the top-level composer.json file. See
+[allowed packages](#allowed-packages), below.
+
+## Usage
+
+Drupal Composer Scaffold is used by requiring `drupal/core-composer-scaffold` in your
+project, and providing configuration settings in the `extra` section of your
+project's composer.json file. Additional configuration from the composer.json
+file of your project's dependencies is also consulted in order to scaffold the
+files a project needs. Additional information may be added to the beginning or
+end of scaffold files, as is commonly done to `.htaccess` and `robots.txt`
+files. See [altering scaffold files](#altering-scaffold-files) for more
+information.
+
+Typically, the scaffold operations run automatically as needed, e.g. after
+`composer install`, so it is usually not necessary to do anything different
+to scaffold a project once the configuration is set up in the project
+composer.json file, as described below. To scaffold files directly, run:
+```
+composer drupal:scaffold
+```
+
+### Allowed Packages
+
+Scaffold files are stored inside of projects that are required from the main
+project's composer.json file as usual. The scaffolding operation happens after
+`composer install`, and involves copying or symlinking the desired assets to
+their destination location. In order to prevent arbitrary dependencies from
+copying files via the scaffold mechanism, only those projects that are
+specifically permitted by the top-level project will be used to scaffold files.
+
+Example: Permit scaffolding from the project `drupal/core`
+```
+  "name": "my/project",
+  ...
+  "extra": {
+    "drupal-scaffold": {
+      "allowed-packages": [
+        "drupal/core"
+      ],
+      ...
+    }
+  }
+```
+Allowing a package to scaffold files also permits it to delegate permission to
+scaffold to any project that it requires itself. This allows a package to
+organize its scaffold assets as it sees fit. For example, the project
+`drupal/core` may choose to store its assets in a subproject `drupal/assets`.
+
+It is possible for a project to obtain scaffold files from multiple projects.
+For example, a Drupal project using a distribution, and installing on a specific
+web hosting service provider might take its scaffold files from:
+
+- Drupal core
+- Its distribution
+- A project provided by the hosting provider
+- The project itself
+
+Each project allowed to scaffold by the top-level project will be used in turn,
+with projects declared later in the `allowed-packages` list taking precedence
+over the projects named before. `drupal/core` is implicitly allowed and will be
+placed at the top of the list. The top-level composer.json itself is also
+implicitly allowed to scaffold files, and its scaffold files have highest
+priority.
+
+### Defining Project Locations
+
+The top-level project in turn must define where the web root is located. It does
+so via the `locations` mapping, as shown below:
+```
+  "name": "my/project",
+  ...
+  "extra": {
+    "drupal-scaffold": {
+      "locations": {
+        "web-root": "./docroot"
+      },
+      ...
+    }
+  }
+```
+This makes it possible to configure a project with different file layouts; for
+example, either the `drupal/drupal` file layout or the
+`drupal-composer/drupal-project` file layout could be used to set up a project.
+
+If a web-root is not explicitly defined, then it will default to `./`.
+
+### Altering Scaffold Files
+
+Sometimes, a project might wish to use a scaffold file provided by a dependency,
+but alter it in some way. Two forms of alteration are supported: appending and
+patching.
+
+The example below shows a project that appends additional entries onto the end
+of the `robots.txt` file provided by `drupal/core`:
+```
+  "name": "my/project",
+  ...
+  "extra": {
+    "drupal-scaffold": {
+      "file-mapping": {
+        "[web-root]/robots.txt": {
+          "append": "assets/my-robots-additions.txt",
+        }
+      }
+    }
+  }
+```
+It is also possible to prepend to a scaffold file instead of, or in addition to
+appending by including a "prepend" entry that provides the relative path to the
+file to prepend to the scaffold file.
+
+The example below demonstrates the use of the `post-drupal-scaffold-cmd` hook
+to patch the `.htaccess` file using a patch.
+```
+  "name": "my/project",
+  ...
+  "scripts": {
+    "post-drupal-scaffold-cmd": [
+      "cd docroot && patch -p1 <../patches/htaccess-ssl.patch"
+    ]
+  }
+```
+
+### Defining Scaffold Files
+
+The placement of scaffold assets is under the control of the project that
+provides them, but the location is always relative to some directory defined by
+the root project -- usually the web root. For example, the scaffold file
+`robots.txt` is copied from its source location, `assets/robots.txt` into the
+web root in the snippet below.
+```
+{
+  "name": "drupal/assets",
+  ...
+  "extra": {
+    "drupal-scaffold": {
+      "file-mapping": {
+        "[web-root]/robots.txt": "assets/robots.txt",
+        ...
+      }
+    }
+  }
+}
+```
+
+### Excluding Scaffold Files
+
+Sometimes, a project might prefer to entirely replace a scaffold file provided
+by a dependency, and receive no further updates for it. This can be done by
+setting the value for the scaffold file to exclude to `false`:
+```
+  "name": "my/project",
+  ...
+  "extra": {
+    "drupal-scaffold": {
+      "file-mapping": {
+        "[web-root]/robots.txt": false
+      }
+    }
+  }
+```
+If possible, use the `append` and `prepend` directives as explained in [altering
+scaffold files](#altering-scaffold-files), above. Excluding a file means that
+your project will not get any bug fixes or other updates to files that are
+modified locally.
+
+### Overwrite
+
+By default, scaffold files overwrite whatever content exists at the target
+location. Sometimes a project may wish to provide the initial contents for a
+file that will not be changed in subsequent updates. This can be done by setting
+the `overwrite` flag to `false`, as shown in the example below:
+```
+{
+  "name": "service-provider/d8-scaffold-files",
+  "extra": {
+    "drupal-scaffold": {
+      "file-mapping": {
+        "[web-root]/sites/default/settings.php": {
+          "mode": "replace",
+          "path": "assets/sites/default/settings.php",
+          "overwrite": false
+        }
+      }
+    }
+  }
+}
+```
+Note that the `overwrite` directive is intended to be used by starter kits,
+service providers, and so on. Individual Drupal sites should exclude the file
+by setting its value to false instead.
+
+### Autoload File
+
+The scaffold tool automatically creates the required `autoload.php` file at the
+Drupal root as part of the scaffolding operation. This file should not be
+modified or customized in any way. If it is committed to the repository, though,
+then the scaffold tool will stop managing it. If the location of the `vendor`
+directory is changed for any reason, and the `autoload.php` file has been
+committed to the repository, manually delete it and then run `composer install`
+to update it.
+
+## Specifications
+
+Reference section for the configuration directives for the "drupal-scaffold"
+section of the "extra" section of a `composer.json` file appear below.
+
+### allowed-packages
+
+The `allowed-packages` configuration setting contains an ordered list of package
+names that will be used during the scaffolding phase.
+```
+"allowed-packages": [
+  "example/assets",
+],
+```
+### file-mapping
+
+The `file-mapping` configuration setting consists of a map from the destination
+path of the file to scaffold to a set of properties that control how the file
+should be scaffolded.
+
+The available properties are as follows:
+
+- mode: One of "replace", "append" or "skip".
+- path: The path to the source file to write over the destination file.
+- prepend: The path to the source file to prepend to the destination file, which
+  must always be a scaffold file provided by some other project.
+- append: Like `prepend`, but appends content rather than prepends.
+- overwrite: If `false`, prevents a `replace` from happening if the destination
+  already exists.
+
+The mode may be inferred from the other properties. If the mode is not
+specified, then the following defaults will be supplied:
+
+- replace: Selected if a `path` property is present, or if the entry's value is
+  a string rather than a property set.
+- append: Selected if a `prepend` or `append` property is present.
+- skip: Selected if the entry's value is a boolean `false`.
+
+Examples:
+```
+"file-mapping": {
+  "[web-root]/sites/default/default.settings.php": {
+    "mode": "replace",
+    "path": "assets/sites/default/default.settings.php",
+    "overwrite": true
+  },
+  "[web-root]/sites/default/settings.php": {
+    "mode": "replace",
+    "path": "assets/sites/default/settings.php",
+    "overwrite": false
+  },
+  "[web-root]/robots.txt": {
+    "mode": "append",
+    "prepend": "assets/robots-prequel.txt",
+    "append": "assets/robots-append.txt"
+  },
+  "[web-root]/.htaccess": {
+    "mode": "skip",
+  }
+}
+```
+The short-form of the above example would be:
+```
+"file-mapping": {
+  "[web-root]/sites/default/default.settings.php": "assets/sites/default/default.settings.php",
+  "[web-root]/sites/default/settings.php": {
+    "path": "assets/sites/default/settings.php",
+    "overwrite": false
+  },
+  "[web-root]/robots.txt": {
+    "prepend": "assets/robots-prequel.txt",
+    "append": "assets/robots-append.txt"
+  },
+  "[web-root]/.htaccess": false
+}
+```
+Note that there is no distinct "prepend" mode; "append" mode is used to both
+append and prepend to scaffold files. The reason for this is that scaffold file
+entries are identified in the file-mapping section keyed by their destination
+path, and it is not possible for multiple entries to have the same key. If
+"prepend" were a separate mode, then it would not be possible to both prepend
+and append to the same file.
+
+By default, append operations may only be applied to files that were scaffolded
+by a previously evaluated project. If the `force-append` attribute is added to
+an `append` operation, though, then the append will be made to non-scaffolded
+files if and only if the append text does not already appear in the file. When
+using this mode, it is also possible to provide default contents to use in the
+event that the destination file is entirely missing.
+
+The example below demonstrates scaffolding a settings-custom.php file, and
+including it from the existing `settings.php` file.
+
+```
+"file-mapping": {
+  "[web-root]/sites/default/settings-custom.php": "assets/settings-custom.php",
+  "[web-root]/sites/default/settings.php": {
+    "append": "assets/include-settings-custom.txt",
+    "force-append": true,
+    "default": "assets/initial-default-settings.txt"
+  }
+}
+```
+
+Note that the example above still works if used with a project that scaffolds
+the settings.php file.
+
+### gitignore
+
+The `gitignore` configuration setting controls whether or not this plugin will
+manage `.gitignore` files for files written during the scaffold operation.
+
+- true: `.gitignore` files will be updated when scaffold files are written.
+- false: `.gitignore` files will never be modified.
+- Not set: `.gitignore` files will be updated if the target directory is a local
+working copy of a git repository, and the `vendor` directory is ignored
+in that repository.
+
+### locations
+
+The `locations` configuration setting contains a list of named locations that
+may be used in placing scaffold files. The only required location is `web-root`.
+Other locations may also be defined if desired.
+```
+"locations": {
+  "web-root": "./docroot"
+},
+```
+### symlink
+
+The `symlink` property causes `replace` operations to make a symlink to the
+source file rather than copying it. This is useful when doing core development,
+as the symlink files themselves should not be edited. Note that `append`
+operations override the `symlink` option, to prevent the original scaffold
+assets from being altered.
+```
+"symlink": true,
+```
+## Managing Scaffold Files
+
+Scaffold files should be treated the same way that the `vendor` directory is
+handled. If you need to commit `vendor` (e.g. in order to deploy your site),
+then you should also commit your scaffold files. You should not commit your
+`vendor` directory or scaffold files unless it is necessary.
+
+If a dependency provides a scaffold file with `overwrite` set to `false`, that
+file should be committed to your repository.
+
+By default, `.gitignore` files will be automatically updated if needed when
+scaffold files are written. See the `gitignore` setting in the Specifications
+section above.
+
+## Examples
+
+Some full-length examples appear below.
+
+Sample composer.json for a project that relies on packages that use composer-scaffold:
+```
+{
+  "name": "my/project",
+  "require": {
+    "drupal/core-composer-scaffold": "*",
+    "composer/installers": "^1.2",
+    "cweagans/composer-patches": "^1.6.5",
+    "drupal/core": "^8.8.x-dev",
+    "service-provider/d8-scaffold-files": "^1"
+  },
+  "config": {
+    "optimize-autoloader": true,
+    "sort-packages": true
+  },
+  "extra": {
+    "drupal-scaffold": {
+      "allowed-packages": [
+        "drupal/core"
+      ],
+      "locations": {
+        "web-root": "./docroot"
+      },
+      "symlink": true,
+      "file-mapping": {
+        "[web-root]/.htaccess": false,
+        "[web-root]/robots.txt": "assets/robots-default.txt"
+      }
+    }
+  }
+}
+```
+
+Sample composer.json for drupal/core, with assets placed in a different project:
+
+```
+{
+  "name": "drupal/core",
+  "extra": {
+    "drupal-scaffold": {
+      "allowed-packages": [
+        "drupal/assets",
+      ]
+    }
+  }
+}
+```
+
+Sample composer.json for composer-scaffold files in drupal/assets:
+
+```
+{
+  "name": "drupal/assets",
+  "extra": {
+    "drupal-scaffold": {
+      "file-mapping": {
+        "[web-root]/.csslintrc": "assets/.csslintrc",
+        "[web-root]/.editorconfig": "assets/.editorconfig",
+        "[web-root]/.eslintignore": "assets/.eslintignore",
+        "[web-root]/.eslintrc.json": "assets/.eslintrc.json",
+        "[web-root]/.gitattributes": "assets/.gitattributes",
+        "[web-root]/.ht.router.php": "assets/.ht.router.php",
+        "[web-root]/.htaccess": "assets/.htaccess",
+        "[web-root]/sites/default/default.services.yml": "assets/default.services.yml",
+        "[web-root]/sites/default/default.settings.php": "assets/default.settings.php",
+        "[web-root]/sites/example.settings.local.php": "assets/example.settings.local.php",
+        "[web-root]/sites/example.sites.php": "assets/example.sites.php",
+        "[web-root]/index.php": "assets/index.php",
+        "[web-root]/robots.txt": "assets/robots.txt",
+        "[web-root]/update.php": "assets/update.php",
+        "[web-root]/web.config": "assets/web.config"
+      }
+    }
+  }
+}
+```
+
+Sample composer.json for a library that implements composer-scaffold:
+
+```
+{
+  "name": "service-provider/d8-scaffold-files",
+  "extra": {
+    "drupal-scaffold": {
+      "file-mapping": {
+        "[web-root]/sites/default/settings.php": "assets/sites/default/settings.php"
+      }
+    }
+  }
+}
+```
+
+Append to robots.txt:
+
+```
+{
+  "name": "service-provider/d8-scaffold-files",
+  "extra": {
+    "drupal-scaffold": {
+      "file-mapping": {
+        "[web-root]/robots.txt": {
+          "append": "assets/my-robots-additions.txt",
+        }
+      }
+    }
+  }
+}
+```
+
+Patch a file after it's copied:
+
+```
+"post-drupal-scaffold-cmd": [
+  "cd docroot && patch -p1 <../patches/htaccess-ssl.patch"
+]
+```
+
+## Related Plugins
+
+### drupal-composer/drupal-scaffold
+
+Previous versions of Drupal Composer Scaffold (see community project,
+[drupal-composer/drupal-scaffold](https://github.com/drupal-composer/drupal-project))
+downloaded each scaffold file directly from its distribution server (e.g.
+`https://git.drupalcode.org`) to the desired destination directory. This was
+necessary, because there was no subtree split of the scaffold files available.
+Copying the scaffold assets from projects already downloaded by Composer is more
+effective, as downloading and unpacking archive files is more efficient than
+downloading each scaffold file individually.
+
+### composer/installers
+
+The [composer/installers](https://github.com/composer/installers) plugin is
+similar to this plugin in that it allows dependencies to be installed in
+locations other than the `vendor` directory. However, Composer and the
+`composer/installers` plugin have a limitation that one project cannot be moved
+inside of another project. Therefore, if you use `composer/installers` to place
+Drupal modules inside the directory `web/modules/contrib`, then you cannot also
+use `composer/installers` to place files such as `index.php` and `robots.txt`
+into the `web` directory. The drupal-scaffold plugin was created to work around
+this limitation.
diff --git a/vendor/drupal/core-composer-scaffold/ScaffoldFileInfo.php b/vendor/drupal/core-composer-scaffold/ScaffoldFileInfo.php
new file mode 100644
index 0000000000000000000000000000000000000000..08ce59cfba58e9c185107fe397f7ece4c2a6fa26
--- /dev/null
+++ b/vendor/drupal/core-composer-scaffold/ScaffoldFileInfo.php
@@ -0,0 +1,139 @@
+<?php
+
+namespace Drupal\Composer\Plugin\Scaffold;
+
+use Composer\IO\IOInterface;
+use Drupal\Composer\Plugin\Scaffold\Operations\OperationInterface;
+
+/**
+ * Data object that keeps track of one scaffold file.
+ *
+ * Scaffold files are identified primarily by their destination path. Each
+ * scaffold file also has an 'operation' object that controls how the scaffold
+ * file will be placed (e.g. via copy or symlink, or maybe by appending multiple
+ * files together). The operation may have one or more source files.
+ *
+ * @internal
+ */
+class ScaffoldFileInfo {
+
+  /**
+   * The path to the destination.
+   *
+   * @var \Drupal\Composer\Plugin\Scaffold\ScaffoldFilePath
+   */
+  protected $destination;
+
+  /**
+   * The operation used to create the destination.
+   *
+   * @var \Drupal\Composer\Plugin\Scaffold\Operations\OperationInterface
+   */
+  protected $op;
+
+  /**
+   * Constructs a ScaffoldFileInfo object.
+   *
+   * @param \Drupal\Composer\Plugin\Scaffold\ScaffoldFilePath $destination
+   *   The full and relative paths to the destination file and the package
+   *   defining it.
+   * @param \Drupal\Composer\Plugin\Scaffold\Operations\OperationInterface $op
+   *   Operations object that will handle scaffolding operations.
+   */
+  public function __construct(ScaffoldFilePath $destination, OperationInterface $op) {
+    $this->destination = $destination;
+    $this->op = $op;
+  }
+
+  /**
+   * Gets the Scaffold operation.
+   *
+   * @return \Drupal\Composer\Plugin\Scaffold\Operations\OperationInterface
+   *   Operations object that handles scaffolding (copy, make symlink, etc).
+   */
+  public function op() {
+    return $this->op;
+  }
+
+  /**
+   * Gets the package name.
+   *
+   * @return string
+   *   The name of the package this scaffold file info was collected from.
+   */
+  public function packageName() {
+    return $this->destination->packageName();
+  }
+
+  /**
+   * Gets the destination.
+   *
+   * @return \Drupal\Composer\Plugin\Scaffold\ScaffoldFilePath
+   *   The scaffold path to the destination file.
+   */
+  public function destination() {
+    return $this->destination;
+  }
+
+  /**
+   * Determines if this scaffold file has been overridden by another package.
+   *
+   * @param string $providing_package
+   *   The name of the package that provides the scaffold file at this location,
+   *   as returned by self::findProvidingPackage()
+   *
+   * @return bool
+   *   Whether this scaffold file if overridden or removed.
+   */
+  public function overridden($providing_package) {
+    return $this->packageName() !== $providing_package;
+  }
+
+  /**
+   * Replaces placeholders in a message.
+   *
+   * @param string $message
+   *   Message with placeholders to fill in.
+   * @param array $extra
+   *   Additional data to merge with the interpolator.
+   * @param mixed $default
+   *   Default value to use for missing placeholders, or FALSE to keep them.
+   *
+   * @return string
+   *   Interpolated string with placeholders replaced.
+   */
+  public function interpolate($message, array $extra = [], $default = FALSE) {
+    $interpolator = $this->destination->getInterpolator();
+    return $interpolator->interpolate($message, $extra, $default);
+  }
+
+  /**
+   * Moves a single scaffold file from source to destination.
+   *
+   * @param \Composer\IO\IOInterface $io
+   *   The scaffold file to be processed.
+   * @param \Drupal\Composer\Plugin\Scaffold\ScaffoldOptions $options
+   *   Assorted operational options, e.g. whether the destination should be a
+   *   symlink.
+   *
+   * @return \Drupal\Composer\Plugin\Scaffold\Operations\ScaffoldResult
+   *   The scaffold result.
+   */
+  public function process(IOInterface $io, ScaffoldOptions $options) {
+    return $this->op()->process($this->destination, $io, $options);
+  }
+
+  /**
+   * Returns TRUE if the target does not exist or has changed.
+   *
+   * @return bool
+   */
+  final public function hasChanged() {
+    $path = $this->destination()->fullPath();
+    if (!file_exists($path)) {
+      return TRUE;
+    }
+    return $this->op()->contents() !== file_get_contents($path);
+  }
+
+}
diff --git a/vendor/drupal/core-composer-scaffold/ScaffoldFilePath.php b/vendor/drupal/core-composer-scaffold/ScaffoldFilePath.php
new file mode 100644
index 0000000000000000000000000000000000000000..5fb5af41d0acf1962b2ce8ee91c383cd32e96563
--- /dev/null
+++ b/vendor/drupal/core-composer-scaffold/ScaffoldFilePath.php
@@ -0,0 +1,202 @@
+<?php
+
+namespace Drupal\Composer\Plugin\Scaffold;
+
+use Composer\Util\Filesystem;
+
+/**
+ * Manage the path to a file to scaffold.
+ *
+ * Both the relative and full path to the file is maintained so that the shorter
+ * name may be used in progress and error messages, as needed. The name of the
+ * package that provided the file path is also recorded for the same reason.
+ *
+ * ScaffoldFilePaths may be used to represent destination scaffold files, or the
+ * source files used to create them. Static factory methods named
+ * destinationPath and sourcePath, respectively, are provided to create
+ * ScaffoldFilePath objects.
+ *
+ * @internal
+ */
+class ScaffoldFilePath {
+
+  /**
+   * The type of scaffold file this is, 'src' or 'dest'.
+   *
+   * @var string
+   */
+  protected $type;
+
+  /**
+   * The name of the package containing the file.
+   *
+   * @var string
+   */
+  protected $packageName;
+
+  /**
+   * The relative path to the file.
+   *
+   * @var string
+   */
+  protected $relativePath;
+
+  /**
+   * The full path to the file.
+   *
+   * @var string
+   */
+  protected $fullPath;
+
+  /**
+   * ScaffoldFilePath constructor.
+   *
+   * @param string $path_type
+   *   The type of scaffold file this is, 'src' or 'dest'.
+   * @param string $package_name
+   *   The name of the package containing the file.
+   * @param string $rel_path
+   *   The relative path to the file.
+   * @param string $full_path
+   *   The full path to the file.
+   */
+  public function __construct($path_type, $package_name, $rel_path, $full_path) {
+    $this->type = $path_type;
+    $this->packageName = $package_name;
+    $this->relativePath = $rel_path;
+    $this->fullPath = $full_path;
+
+    // Ensure that the full path really is a full path. We do not use
+    // 'realpath' here because the file specified by the full path might
+    // not exist yet.
+    $fs = new Filesystem();
+    if (!$fs->isAbsolutePath($this->fullPath)) {
+      $this->fullPath = getcwd() . '/' . $this->fullPath;
+    }
+  }
+
+  /**
+   * Gets the name of the package this source file was pulled from.
+   *
+   * @return string
+   *   Name of package.
+   */
+  public function packageName() {
+    return $this->packageName;
+  }
+
+  /**
+   * Gets the relative path to the source file (best to use in messages).
+   *
+   * @return string
+   *   Relative path to file.
+   */
+  public function relativePath() {
+    return $this->relativePath;
+  }
+
+  /**
+   * Gets the full path to the source file.
+   *
+   * @return string
+   *   Full path to file.
+   */
+  public function fullPath() {
+    return $this->fullPath;
+  }
+
+  /**
+   * Converts the relative source path into an absolute path.
+   *
+   * The path returned will be relative to the package installation location.
+   *
+   * @param string $package_name
+   *   The name of the package containing the source file. Only used for error
+   *   messages.
+   * @param string $package_path
+   *   The installation path of the package containing the source file.
+   * @param string $destination
+   *   Destination location provided as a relative path. Only used for error
+   *   messages.
+   * @param string $source
+   *   Source location provided as a relative path.
+   *
+   * @return self
+   *   Object wrapping the relative and absolute path to the source file.
+   */
+  public static function sourcePath($package_name, $package_path, $destination, $source) {
+    // Complain if there is no source path.
+    if (empty($source)) {
+      throw new \RuntimeException("No scaffold file path given for {$destination} in package {$package_name}.");
+    }
+    // Calculate the full path to the source scaffold file.
+    $source_full_path = $package_path . '/' . $source;
+    if (!file_exists($source_full_path)) {
+      throw new \RuntimeException("Scaffold file {$source} not found in package {$package_name}.");
+    }
+    if (is_dir($source_full_path)) {
+      throw new \RuntimeException("Scaffold file {$source} in package {$package_name} is a directory; only files may be scaffolded.");
+    }
+    return new self('src', $package_name, $source, $source_full_path);
+  }
+
+  /**
+   * Converts the relative destination path into an absolute path.
+   *
+   * Any placeholders in the destination path, e.g. '[web-root]', will be
+   * replaced using the provided location replacements interpolator.
+   *
+   * @param string $package_name
+   *   The name of the package defining the destination path.
+   * @param string $destination
+   *   The relative path to the destination file being scaffolded.
+   * @param \Drupal\Composer\Plugin\Scaffold\Interpolator $location_replacements
+   *   Interpolator that includes the [web-root] and any other available
+   *   placeholder replacements.
+   *
+   * @return self
+   *   Object wrapping the relative and absolute path to the destination file.
+   */
+  public static function destinationPath($package_name, $destination, Interpolator $location_replacements) {
+    $dest_full_path = $location_replacements->interpolate($destination);
+    return new self('dest', $package_name, $destination, $dest_full_path);
+  }
+
+  /**
+   * Adds data about the relative and full path to the provided interpolator.
+   *
+   * @param \Drupal\Composer\Plugin\Scaffold\Interpolator $interpolator
+   *   Interpolator to add data to.
+   * @param string $name_prefix
+   *   (optional) Prefix to add before -rel-path and -full-path item names.
+   *   Defaults to path type provided when constructing this object.
+   */
+  public function addInterpolationData(Interpolator $interpolator, $name_prefix = '') {
+    if (empty($name_prefix)) {
+      $name_prefix = $this->type;
+    }
+    $data = [
+      'package-name' => $this->packageName(),
+      "{$name_prefix}-rel-path" => $this->relativePath(),
+      "{$name_prefix}-full-path" => $this->fullPath(),
+    ];
+    $interpolator->addData($data);
+  }
+
+  /**
+   * Interpolate a string using the data from this scaffold file info.
+   *
+   * @param string $name_prefix
+   *   (optional) Prefix to add before -rel-path and -full-path item names.
+   *   Defaults to path type provided when constructing this object.
+   *
+   * @return \Drupal\Composer\Plugin\Scaffold\Interpolator
+   *   An interpolator for making string replacements.
+   */
+  public function getInterpolator($name_prefix = '') {
+    $interpolator = new Interpolator();
+    $this->addInterpolationData($interpolator, $name_prefix);
+    return $interpolator;
+  }
+
+}
diff --git a/vendor/drupal/core-composer-scaffold/ScaffoldOptions.php b/vendor/drupal/core-composer-scaffold/ScaffoldOptions.php
new file mode 100644
index 0000000000000000000000000000000000000000..05cd864245de570c088624e7e0a19c3cf441944b
--- /dev/null
+++ b/vendor/drupal/core-composer-scaffold/ScaffoldOptions.php
@@ -0,0 +1,203 @@
+<?php
+
+namespace Drupal\Composer\Plugin\Scaffold;
+
+/**
+ * Per-project options from the 'extras' section of the composer.json file.
+ *
+ * Projects that describe scaffold files do so via their scaffold options. This
+ * data is pulled from the 'drupal-scaffold' portion of the extras section of
+ * the project data.
+ *
+ * @internal
+ */
+class ScaffoldOptions {
+
+  /**
+   * The raw data from the 'extras' section of the top-level composer.json file.
+   *
+   * @var array
+   */
+  protected $options = [];
+
+  /**
+   * ScaffoldOptions constructor.
+   *
+   * @param array $options
+   *   The scaffold options taken from the 'drupal-scaffold' section.
+   */
+  protected function __construct(array $options) {
+    $this->options = $options + [
+      "allowed-packages" => [],
+      "locations" => [],
+      "symlink" => FALSE,
+      "file-mapping" => [],
+    ];
+
+    // Define any default locations.
+    $this->options['locations'] += [
+      'project-root' => '.',
+      'web-root' => '.',
+    ];
+  }
+
+  /**
+   * Determines if the provided 'extras' section has scaffold options.
+   *
+   * @param array $extras
+   *   The contents of the 'extras' section.
+   *
+   * @return bool
+   *   True if scaffold options have been declared
+   */
+  public static function hasOptions(array $extras) {
+    return array_key_exists('drupal-scaffold', $extras);
+  }
+
+  /**
+   * Creates a scaffold options object.
+   *
+   * @param array $extras
+   *   The contents of the 'extras' section.
+   *
+   * @return self
+   *   The scaffold options object representing the provided scaffold options
+   */
+  public static function create(array $extras) {
+    $options = static::hasOptions($extras) ? $extras['drupal-scaffold'] : [];
+    return new self($options);
+  }
+
+  /**
+   * Creates a new scaffold options object with some values overridden.
+   *
+   * @param array $options
+   *   Override values.
+   *
+   * @return self
+   *   The scaffold options object representing the provided scaffold options
+   */
+  protected function override(array $options) {
+    return new self($options + $this->options);
+  }
+
+  /**
+   * Creates a new scaffold options object with an overridden 'symlink' value.
+   *
+   * @param bool $symlink
+   *   Whether symlinking should be enabled or not.
+   *
+   * @return self
+   *   The scaffold options object representing the provided scaffold options
+   */
+  public function overrideSymlink($symlink) {
+    return $this->override(['symlink' => $symlink]);
+  }
+
+  /**
+   * Determines whether any allowed packages were defined.
+   *
+   * @return bool
+   *   Whether there are allowed packages
+   */
+  public function hasAllowedPackages() {
+    return !empty($this->allowedPackages());
+  }
+
+  /**
+   * Gets allowed packages from these options.
+   *
+   * @return array
+   *   The list of allowed packages
+   */
+  public function allowedPackages() {
+    return $this->options['allowed-packages'];
+  }
+
+  /**
+   * Gets the location mapping table, e.g. 'webroot' => './'.
+   *
+   * @return array
+   *   A map of name : location values
+   */
+  public function locations() {
+    return $this->options['locations'];
+  }
+
+  /**
+   * Determines whether a given named location is defined.
+   *
+   * @param string $name
+   *   The location name to search for.
+   *
+   * @return bool
+   *   True if the specified named location exist.
+   */
+  protected function hasLocation($name) {
+    return array_key_exists($name, $this->locations());
+  }
+
+  /**
+   * Gets a specific named location.
+   *
+   * @param string $name
+   *   The name of the location to fetch.
+   *
+   * @return string
+   *   The value of the provided named location
+   */
+  public function getLocation($name) {
+    return $this->hasLocation($name) ? $this->locations()[$name] : FALSE;
+  }
+
+  /**
+   * Determines if symlink mode is set.
+   *
+   * @return bool
+   *   Whether or not 'symlink' mode
+   */
+  public function symlink() {
+    return $this->options['symlink'];
+  }
+
+  /**
+   * Determines if there are file mappings.
+   *
+   * @return bool
+   *   Whether or not the scaffold options contain any file mappings
+   */
+  public function hasFileMapping() {
+    return !empty($this->fileMapping());
+  }
+
+  /**
+   * Returns the actual file mappings.
+   *
+   * @return array
+   *   File mappings for just this config type.
+   */
+  public function fileMapping() {
+    return $this->options['file-mapping'];
+  }
+
+  /**
+   * Determines if there is defined a value for the 'gitignore' option.
+   *
+   * @return bool
+   *   Whether or not there is a 'gitignore' option setting
+   */
+  public function hasGitIgnore() {
+    return isset($this->options['gitignore']);
+  }
+
+  /**
+   * Gets the value of the 'gitignore' option.
+   *
+   * @return bool
+   *   The 'gitignore' option, or TRUE if undefined.
+   */
+  public function gitIgnore() {
+    return $this->hasGitIgnore() ? $this->options['gitignore'] : TRUE;
+  }
+
+}
diff --git a/vendor/drupal/core-composer-scaffold/TESTING.txt b/vendor/drupal/core-composer-scaffold/TESTING.txt
new file mode 100644
index 0000000000000000000000000000000000000000..429c3f7a4514e63d70c8d656c32eb6f2dcd0a151
--- /dev/null
+++ b/vendor/drupal/core-composer-scaffold/TESTING.txt
@@ -0,0 +1,18 @@
+HOW-TO: Test this Drupal composer plugin
+
+In order to test this plugin, you'll need to get the entire Drupal repo and
+run the tests there.
+
+You'll find the tests under core/tests/Drupal/Tests/Composer/Plugin.
+
+You can get the full Drupal repo here:
+https://www.drupal.org/project/drupal/git-instructions
+
+You can find more information about running PHPUnit tests with Drupal here:
+https://www.drupal.org/node/2116263
+
+Each component in the Drupal\Composer\Plugin namespace has its own annotated test
+group. You can use this group to run only the tests for this component. Like
+this:
+
+$ ./vendor/bin/phpunit -c core --group Scaffold
diff --git a/vendor/drupal/core-composer-scaffold/composer.json b/vendor/drupal/core-composer-scaffold/composer.json
new file mode 100644
index 0000000000000000000000000000000000000000..ca9d6d7b48d2e1ad6f70fa833468769376d00d94
--- /dev/null
+++ b/vendor/drupal/core-composer-scaffold/composer.json
@@ -0,0 +1,32 @@
+{
+  "name": "drupal/core-composer-scaffold",
+  "description": "A flexible Composer project scaffold builder.",
+  "type": "composer-plugin",
+  "keywords": ["drupal"],
+  "homepage": "https://www.drupal.org/project/drupal",
+  "license": "GPL-2.0-or-later",
+  "require": {
+    "composer-plugin-api": "^1 || ^2",
+    "php": ">=7.3.0"
+  },
+  "conflict": {
+    "drupal-composer/drupal-scaffold": "*"
+  },
+  "autoload": {
+    "psr-4": {
+      "Drupal\\Composer\\Plugin\\Scaffold\\": ""
+    }
+  },
+  "extra": {
+    "class": "Drupal\\Composer\\Plugin\\Scaffold\\Plugin",
+    "branch-alias": {
+      "dev-master": "1.0.x-dev"
+    }
+  },
+  "config": {
+    "sort-packages": true
+  },
+  "require-dev": {
+    "composer/composer": "^1.8@stable"
+  }
+}
diff --git a/vendor/rvtraveller/qs-composer-installer/LICENSE b/vendor/rvtraveller/qs-composer-installer/LICENSE
deleted file mode 100644
index a80b363ea4efe2947d7f7c0a39048fafccb5c196..0000000000000000000000000000000000000000
--- a/vendor/rvtraveller/qs-composer-installer/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (c) 2016 Brian Thompson
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/vendor/rvtraveller/qs-composer-installer/README.md b/vendor/rvtraveller/qs-composer-installer/README.md
deleted file mode 100644
index 05a64b0693777412b541c0a99682e9851cdfad18..0000000000000000000000000000000000000000
--- a/vendor/rvtraveller/qs-composer-installer/README.md
+++ /dev/null
@@ -1,22 +0,0 @@
-# Quicksilver Composer Installer #
-
-Creates a new "type" in Composer for `quicksilver-script`s so you can treat them separately in Composer installations.  This allows you to include Quicksilver scripts as part of a composer based project on Pantheon[https://pantheon.io].
-
-To use this custom installer, require it in your project (root-level) composer.json file. Then, any Composer project of type `quicksiver-script` will be placed in the directory `web/private/scripts/quicksilver`. This path may be customized in the `installer-paths` item in `extras`.
-
-The `web/private/scripts/quicksilver` path (or your customized path) should be added to your project's .gitignore.
-
-## Example composer.json file ##
-
-```
-{
-  "require": {
-    "rvtraveller/qs-composer-installer": "1.0"
-  },
-  "extra": {
-    "installer-paths": {
-      "web/private/scripts/quicksilver/{$name}": ["type:quicksilver-script"]
-    }
-  }
-}
-```
diff --git a/vendor/rvtraveller/qs-composer-installer/composer.json b/vendor/rvtraveller/qs-composer-installer/composer.json
deleted file mode 100644
index 2ff33116fa3c0bb9cbdcf895b7a44eb63e2bf3ac..0000000000000000000000000000000000000000
--- a/vendor/rvtraveller/qs-composer-installer/composer.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
-  "name": "rvtraveller/qs-composer-installer",
-  "description": "Install Quicksilver modules for Pantheon into custom locations.",
-  "type": "composer-plugin",
-  "license": "MIT",
-  "homepage": "https://github.com/rvtraveller/qs-composer-installer",
-  "autoload": {
-    "psr-4": {
-      "rvtraveller\\QuicksilverComposerInstaller\\": "src"
-    }
-  },
-  "extra": {
-    "class": "rvtraveller\\QuicksilverComposerInstaller\\QuicksilverComposerInstallerPlugin"
-  },
-  "require": {
-    "composer-plugin-api": "~1.0",
-    "composer/installers": "~1.0"
-  },
-  "require-dev": {
-    "composer/composer": "~1.0@dev"
-  }
-}
diff --git a/vendor/rvtraveller/qs-composer-installer/src/QuicksilverComposerInstaller.php b/vendor/rvtraveller/qs-composer-installer/src/QuicksilverComposerInstaller.php
deleted file mode 100644
index 91dd99d36133646b16618513cf6d88eedd66802c..0000000000000000000000000000000000000000
--- a/vendor/rvtraveller/qs-composer-installer/src/QuicksilverComposerInstaller.php
+++ /dev/null
@@ -1,111 +0,0 @@
-<?php
-
-namespace rvtraveller\QuicksilverComposerInstaller;
-
-use Composer\Package\PackageInterface;
-use Composer\Installer\LibraryInstaller;
-
-class QuicksilverComposerInstaller extends LibraryInstaller
-{
-
-
-  /**
-   * Replace vars in a path
-   *
-   * @param  string $path
-   * @param  array  $vars
-   * @return string
-   */
-  protected function templatePath($path, array $vars = array())
-  {
-    if (strpos($path, '{') !== false) {
-      extract($vars);
-      preg_match_all('@\{\$([A-Za-z0-9_]*)\}@i', $path, $matches);
-      if (!empty($matches[1])) {
-        foreach ($matches[1] as $var) {
-          $path = str_replace('{$' . $var . '}', $$var, $path);
-        }
-      }
-    }
-
-    return $path;
-  }
-
-  /**
-   * Search through a passed paths array for a custom install path.
-   *
-   * @param  array  $paths
-   * @param  string $name
-   * @param  string $type
-   * @param  string $vendor = NULL
-   * @return string
-   */
-  protected function mapCustomInstallPaths(array $paths, $name, $type, $vendor = NULL)
-  {
-    foreach ($paths as $path => $names) {
-      if (in_array($name, $names) || in_array('type:' . $type, $names) || in_array('vendor:' . $vendor, $names)) {
-        return $path;
-      }
-    }
-
-    return false;
-  }
-
-  /**
-   * Return the install path based on package type.
-   *
-   * @param  PackageInterface $package
-   * @param  string           $frameworkType
-   * @return string
-   */
-  public function getInstallPath(PackageInterface $package, $frameworkType = '')
-  {
-    $packageType = $package->getType();
-
-    $prettyName = $package->getPrettyName();
-    if (strpos($prettyName, '/') !== false) {
-      list($vendor, $name) = explode('/', $prettyName);
-    } else {
-      $vendor = '';
-      $name = $prettyName;
-    }
-
-    $availableVars = [
-      'name' => $name,
-      'vendor' => $vendor,
-      'type' => $packageType
-    ];
-
-    $extra = $package->getExtra();
-    if (!empty($extra['installer-name'])) {
-      $availableVars['name'] = $extra['installer-name'];
-    }
-
-    if ($this->composer->getPackage()) {
-      $extra = $this->composer->getPackage()->getExtra();
-      if (!empty($extra['installer-paths'])) {
-        $customPath = $this->mapCustomInstallPaths($extra['installer-paths'], $prettyName, $packageType, $vendor);
-        if ($customPath !== false) {
-          return $this->templatePath($customPath, $availableVars);
-        }
-      }
-    }
-
-    $locations = [
-      'quicksilver-script' => 'web/private/scripts/quicksilver/{$name}/',
-      'quicksilver-module' => 'web/private/scripts/quicksilver/{$name}/',
-    ];
-
-    return $this->templatePath($locations[$packageType], $availableVars);
-  }
-
-
-  /**
-   * {@inheritDoc}
-   */
-  public function supports($packageType)
-  {
-    return in_array($packageType, ['quicksilver-script', 'quicksilver-module']);
-  }
-
-}
diff --git a/vendor/rvtraveller/qs-composer-installer/src/QuicksilverComposerInstallerPlugin.php b/vendor/rvtraveller/qs-composer-installer/src/QuicksilverComposerInstallerPlugin.php
deleted file mode 100644
index 0e8e27effb8698cd4fd582913acd4886be304b9d..0000000000000000000000000000000000000000
--- a/vendor/rvtraveller/qs-composer-installer/src/QuicksilverComposerInstallerPlugin.php
+++ /dev/null
@@ -1,20 +0,0 @@
-<?php
-
-namespace rvtraveller\QuicksilverComposerInstaller;
-
-use Composer\Composer;
-use Composer\IO\IOInterface;
-use Composer\Plugin\PluginInterface;
-
-class QuicksilverComposerInstallerPlugin implements PluginInterface
-{
-  public function activate(Composer $composer, IOInterface $io)
-  {
-    // Strange autoloading problem on CircleCI
-    if (!class_exists(QuickSilverComposerInstaller::class)) {
-      include_once __DIR__ . '/QuicksilverComposerInstaller.php';
-    }
-    $installer = new QuickSilverComposerInstaller($io, $composer);
-    $composer->getInstallationManager()->addInstaller($installer);
-  }
-}
diff --git a/web/.csslintrc b/web/.csslintrc
new file mode 100644
index 0000000000000000000000000000000000000000..177e4fcc7e8cc613b415dcbe3706d00d0d9bc0b1
--- /dev/null
+++ b/web/.csslintrc
@@ -0,0 +1,40 @@
+--errors=box-model,
+         display-property-grouping,
+         duplicate-background-images,
+         duplicate-properties,
+         empty-rules,
+         ids,
+         import,
+         important,
+         known-properties,
+         outline-none,
+         overqualified-elements,
+         qualified-headings,
+         shorthand,
+         star-property-hack,
+         text-indent,
+         underscore-property-hack,
+         unique-headings,
+         unqualified-attributes,
+         vendor-prefix,
+         zero-units
+--ignore=adjoining-classes,
+         box-sizing,
+         bulletproof-font-face,
+         compatible-vendor-prefixes,
+         errors,
+         fallback-colors,
+         floats,
+         font-faces,
+         font-sizes,
+         gradients,
+         import-ie-limit,
+         order-alphabetical,
+         regex-selectors,
+         rules-count,
+         selector-max,
+         selector-max-approaching,
+         selector-newline,
+         universal-selector
+--exclude-list=core/assets,
+               vendor
diff --git a/web/.eslintignore b/web/.eslintignore
new file mode 100644
index 0000000000000000000000000000000000000000..9c134873d484956a9b6c87447e82b792cd27334c
--- /dev/null
+++ b/web/.eslintignore
@@ -0,0 +1,8 @@
+core/**/*
+vendor/**/*
+sites/**/files/**/*
+libraries/**/*
+sites/**/libraries/**/*
+profiles/**/libraries/**/*
+**/js_test_files/**/*
+**/node_modules/**/*
diff --git a/web/.eslintrc.json b/web/.eslintrc.json
new file mode 100644
index 0000000000000000000000000000000000000000..d4bbc92052201490a83d06dd502318ee600f07f7
--- /dev/null
+++ b/web/.eslintrc.json
@@ -0,0 +1,3 @@
+{
+  "extends": "./core/.eslintrc.json"
+}
diff --git a/web/.htaccess b/web/.htaccess
index 09b703d23f6f2192d58462b54bcb40213585e46d..6f9123d14b13f8cdff5024d7a29374ad820342be 100644
--- a/web/.htaccess
+++ b/web/.htaccess
@@ -3,7 +3,7 @@
 #
 
 # Protect files and directories from prying eyes.
-<FilesMatch "\.(engine|inc|install|make|module|profile|po|sh|.*sql|theme|twig|tpl(\.php)?|xtmpl|yml)(~|\.sw[op]|\.bak|\.orig|\.save)?$|^(\.(?!well-known).*|Entries.*|Repository|Root|Tag|Template|composer\.(json|lock))$|^#.*#$|\.php(~|\.sw[op]|\.bak|\.orig|\.save)$">
+<FilesMatch "\.(engine|inc|install|make|module|profile|po|sh|.*sql|theme|twig|tpl(\.php)?|xtmpl|yml)(~|\.sw[op]|\.bak|\.orig|\.save)?$|^(\.(?!well-known).*|Entries.*|Repository|Root|Tag|Template|composer\.(json|lock)|web\.config)$|^#.*#$|\.php(~|\.sw[op]|\.bak|\.orig|\.save)$">
   <IfModule mod_authz_core.c>
     Require all denied
   </IfModule>
@@ -27,16 +27,9 @@ AddEncoding gzip svgz
 # Drupal\Core\DrupalKernel::bootEnvironment() for settings that can be
 # changed at runtime.
 
-# PHP 5, Apache 1 and 2.
-<IfModule mod_php5.c>
+# PHP 7, Apache 1 and 2.
+<IfModule mod_php7.c>
   php_value assert.active                   0
-  php_flag session.auto_start               off
-  php_value mbstring.http_input             pass
-  php_value mbstring.http_output            pass
-  php_flag mbstring.encoding_translation    off
-  # PHP 5.6 has deprecated $HTTP_RAW_POST_DATA and produces warnings if this is
-  # not set.
-  php_value always_populate_raw_post_data   -1
 </IfModule>
 
 # Requires mod_expires to be enabled.
@@ -144,7 +137,6 @@ AddEncoding gzip svgz
   # security, you can replace '!/' with '!^/'.
   # Allow access to PHP files in /core (like authorize.php or install.php):
   RewriteCond %{REQUEST_URI} !/core/[^/]*\.php$
-  RewriteCond %{REQUEST_URI} !/simplesaml/[^/]*\.php.*$
   # Allow access to test-specific PHP files:
   RewriteCond %{REQUEST_URI} !/core/modules/system/tests/https?.php
   # Allow access to Statistics module's custom front controller.
@@ -168,9 +160,9 @@ AddEncoding gzip svgz
     RewriteCond %{REQUEST_FILENAME}\.gz -s
     RewriteRule ^(.*)\.js $1\.js\.gz [QSA]
 
-    # Serve correct content types, and prevent mod_deflate double gzip.
-    RewriteRule \.css\.gz$ - [T=text/css,E=no-gzip:1]
-    RewriteRule \.js\.gz$ - [T=text/javascript,E=no-gzip:1]
+    # Serve correct content types, and prevent double compression.
+    RewriteRule \.css\.gz$ - [T=text/css,E=no-gzip:1,E=no-brotli:1]
+    RewriteRule \.js\.gz$ - [T=text/javascript,E=no-gzip:1,E=no-brotli:1]
 
     <FilesMatch "(\.js\.gz|\.css\.gz)$">
       # Serve correct encoding type.