diff --git a/.editorconfig b/.editorconfig
index 242859d..ccc6a28 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -12,6 +12,3 @@ indent_size = 2
 charset = utf-8
 trim_trailing_whitespace = true
 insert_final_newline = true
-
-[composer.json]
-indent_size = 4
diff --git a/composer.json b/composer.json
index e02dcb9..7f170ce 100644
--- a/composer.json
+++ b/composer.json
@@ -1,44 +1,44 @@
 {
-    "name": "drupal/drupal",
-    "description": "Drupal is an open source content management platform powering millions of websites and applications.",
-    "type": "project",
-    "license": "GPL-2.0+",
-    "require": {
-        "composer/installers": "^1.0.21",
-        "wikimedia/composer-merge-plugin": "~1.3"
-    },
-    "replace": {
-        "drupal/core": "~8.0"
-    },
-    "minimum-stability": "dev",
-    "prefer-stable": true,
-    "config": {
-        "preferred-install": "dist",
-        "autoloader-suffix": "Drupal8"
-    },
-    "extra": {
-        "_readme": [
-            "By default Drupal loads the autoloader from ./vendor/autoload.php.",
-            "To change the autoloader you can edit ./autoload.php."
-        ],
-        "merge-plugin": {
-            "include": [
-                "core/composer.json"
-            ],
-            "recurse": false,
-            "replace": false,
-            "merge-extra": false
-        }
-    },
-    "autoload": {
-        "psr-4": {
-            "Drupal\\Core\\Composer\\": "core/lib/Drupal/Core/Composer"
-        }
-    },
-    "scripts": {
-        "pre-autoload-dump": "Drupal\\Core\\Composer\\Composer::preAutoloadDump",
-        "post-autoload-dump": "Drupal\\Core\\Composer\\Composer::ensureHtaccess",
-        "post-package-install": "Drupal\\Core\\Composer\\Composer::vendorTestCodeCleanup",
-        "post-package-update": "Drupal\\Core\\Composer\\Composer::vendorTestCodeCleanup"
+  "name": "drupal/drupal",
+  "description": "Drupal is an open source content management platform powering millions of websites and applications.",
+  "type": "project",
+  "license": "GPL-2.0+",
+  "require": {
+    "composer/installers": "^1.0.21",
+    "wikimedia/composer-merge-plugin": "~1.3"
+  },
+  "replace": {
+    "drupal/core": "~8.0"
+  },
+  "minimum-stability": "dev",
+  "prefer-stable": true,
+  "config": {
+    "preferred-install": "dist",
+    "autoloader-suffix": "Drupal8"
+  },
+  "extra": {
+    "_readme": [
+      "By default Drupal loads the autoloader from ./vendor/autoload.php.",
+      "To change the autoloader you can edit ./autoload.php."
+    ],
+    "merge-plugin": {
+      "include": [
+        "core/composer.json"
+      ],
+      "recurse": false,
+      "replace": false,
+      "merge-extra": false
     }
+  },
+  "autoload": {
+    "psr-4": {
+      "Drupal\\Core\\Composer\\": "core/lib/Drupal/Core/Composer"
+    }
+  },
+  "scripts": {
+    "pre-autoload-dump": "Drupal\\Core\\Composer\\Composer::preAutoloadDump",
+    "post-autoload-dump": "Drupal\\Core\\Composer\\Composer::ensureHtaccess",
+    "post-package-install": "Drupal\\Core\\Composer\\Composer::vendorTestCodeCleanup",
+    "post-package-update": "Drupal\\Core\\Composer\\Composer::vendorTestCodeCleanup"
+  }
 }
diff --git a/composer.lock b/composer.lock
index af8d667..e092980 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
         "This file is @generated automatically"
     ],
-    "hash": "8ac71fcd7128b95405b61f3ce16fc769",
+    "hash": "dac77f10c1f7585fd1f7344c6a376338",
     "content-hash": "73cbcb262208c5d802cb528279f2a95c",
     "packages": [
         {
@@ -913,54 +913,6 @@
             "time": "2015-06-07 08:43:18"
         },
         {
-            "name": "paragonie/random_compat",
-            "version": "1.1.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/paragonie/random_compat.git",
-                "reference": "a208865a5aeffc2dbbef2a5b3409887272d93f32"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/paragonie/random_compat/zipball/a208865a5aeffc2dbbef2a5b3409887272d93f32",
-                "reference": "a208865a5aeffc2dbbef2a5b3409887272d93f32",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.2.0"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "4.*|5.*"
-            },
-            "suggest": {
-                "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes."
-            },
-            "type": "library",
-            "autoload": {
-                "files": [
-                    "lib/random.php"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Paragon Initiative Enterprises",
-                    "email": "security@paragonie.com",
-                    "homepage": "https://paragonie.com"
-                }
-            ],
-            "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7",
-            "keywords": [
-                "csprng",
-                "pseudorandom",
-                "random"
-            ],
-            "time": "2015-12-01 02:52:15"
-        },
-        {
             "name": "psr/http-message",
             "version": "1.0",
             "source": {
diff --git a/core/.gitignore b/core/.gitignore
new file mode 100644
index 0000000..74b6a4c
--- /dev/null
+++ b/core/.gitignore
@@ -0,0 +1,19 @@
+# SimpleTest breaks with the following files, so avoid adding them.
+vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services1-1.php
+vendor/symfony/class-loader/Symfony/Component/ClassLoader/Tests/Fixtures/php5.4/traits.php
+vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services11.php
+
+# The resources for the Validator component are not required.
+vendor/symfony/validator/Symfony/Component/Validator/Resources
+
+# Symfony Validator depends on Symfony Translation but only requires the
+# TranslatorInterface. Thus, we add only the required interface from Symfony
+# Translation by ignoring everything except the interface.
+vendor/symfony/translation/Symfony/Component/Translation/*
+!vendor/symfony/translation/Symfony/Component/Translation/TranslatorInterface.php
+
+# PHPUnit provides some binary dependencies that are already available.
+vendor/phpunit/phpunit/build/dependencies
+
+# The PHAR file below contains CRLF characters that cause a problem with PIFR.
+vendor/symfony/dependency-injection/Tests/Fixtures/includes/ProjectWithXsdExtensionInPhar.phar
diff --git a/core/assets/vendor/modernizr/modernizr.min.js b/core/assets/vendor/modernizr/modernizr.min.js
index 407556f..6a71a84 100644
--- a/core/assets/vendor/modernizr/modernizr.min.js
+++ b/core/assets/vendor/modernizr/modernizr.min.js
@@ -1,3 +1,3 @@
-/*! modernizr 3.3.1 (Custom Build) | MIT *
- * http://modernizr.com/download/?-details-inputtypes-touchevents-addtest-prefixes-setclasses-teststyles !*/
-!function(e,t,n){function o(e,t){return typeof e===t}function i(){var e,t,n,i,s,a,r;for(var l in d)if(d.hasOwnProperty(l)){if(e=[],t=d[l],t.name&&(e.push(t.name.toLowerCase()),t.options&&t.options.aliases&&t.options.aliases.length))for(n=0;n<t.options.aliases.length;n++)e.push(t.options.aliases[n].toLowerCase());for(i=o(t.fn,"function")?t.fn():t.fn,s=0;s<e.length;s++)a=e[s],r=a.split("."),1===r.length?Modernizr[r[0]]=i:(!Modernizr[r[0]]||Modernizr[r[0]]instanceof Boolean||(Modernizr[r[0]]=new Boolean(Modernizr[r[0]])),Modernizr[r[0]][r[1]]=i),u.push((i?"":"no-")+r.join("-"))}}function s(e){var t=m.className,n=Modernizr._config.classPrefix||"";if(v&&(t=t.baseVal),Modernizr._config.enableJSClass){var o=new RegExp("(^|\\s)"+n+"no-js(\\s|$)");t=t.replace(o,"$1"+n+"js$2")}Modernizr._config.enableClasses&&(t+=" "+n+e.join(" "+n),v?m.className.baseVal=t:m.className=t)}function a(e,t){if("object"==typeof e)for(var n in e)h(e,n)&&a(n,e[n]);else{e=e.toLowerCase();var o=e.split("."),i=Modernizr[o[0]];if(2==o.length&&(i=i[o[1]]),"undefined"!=typeof i)return Modernizr;t="function"==typeof t?t():t,1==o.length?Modernizr[o[0]]=t:(!Modernizr[o[0]]||Modernizr[o[0]]instanceof Boolean||(Modernizr[o[0]]=new Boolean(Modernizr[o[0]])),Modernizr[o[0]][o[1]]=t),s([(t&&0!=t?"":"no-")+o.join("-")]),Modernizr._trigger(e,t)}return Modernizr}function r(){return"function"!=typeof t.createElement?t.createElement(arguments[0]):v?t.createElementNS.call(t,"http://www.w3.org/2000/svg",arguments[0]):t.createElement.apply(t,arguments)}function l(){var e=t.body;return e||(e=r(v?"svg":"body"),e.fake=!0),e}function f(e,n,o,i){var s,a,f,u,d="modernizr",c=r("div"),p=l();if(parseInt(o,10))for(;o--;)f=r("div"),f.id=i?i[o]:d+(o+1),c.appendChild(f);return s=r("style"),s.type="text/css",s.id="s"+d,(p.fake?p:c).appendChild(s),p.appendChild(c),s.styleSheet?s.styleSheet.cssText=e:s.appendChild(t.createTextNode(e)),c.id=d,p.fake&&(p.style.background="",p.style.overflow="hidden",u=m.style.overflow,m.style.overflow="hidden",m.appendChild(p)),a=n(c,e),p.fake?(p.parentNode.removeChild(p),m.style.overflow=u,m.offsetHeight):c.parentNode.removeChild(c),!!a}var u=[],d=[],c={_version:"3.3.1",_config:{classPrefix:"",enableClasses:!0,enableJSClass:!0,usePrefixes:!0},_q:[],on:function(e,t){var n=this;setTimeout(function(){t(n[e])},0)},addTest:function(e,t,n){d.push({name:e,fn:t,options:n})},addAsyncTest:function(e){d.push({name:null,fn:e})}},Modernizr=function(){};Modernizr.prototype=c,Modernizr=new Modernizr;var p=c._config.usePrefixes?" -webkit- -moz- -o- -ms- ".split(" "):["",""];c._prefixes=p;var h,m=t.documentElement,v="svg"===m.nodeName.toLowerCase();!function(){var e={}.hasOwnProperty;h=o(e,"undefined")||o(e.call,"undefined")?function(e,t){return t in e&&o(e.constructor.prototype[t],"undefined")}:function(t,n){return e.call(t,n)}}(),c._l={},c.on=function(e,t){this._l[e]||(this._l[e]=[]),this._l[e].push(t),Modernizr.hasOwnProperty(e)&&setTimeout(function(){Modernizr._trigger(e,Modernizr[e])},0)},c._trigger=function(e,t){if(this._l[e]){var n=this._l[e];setTimeout(function(){var e,o;for(e=0;e<n.length;e++)(o=n[e])(t)},0),delete this._l[e]}},Modernizr._q.push(function(){c.addTest=a});var y=r("input"),g="search tel url email datetime date month week time datetime-local number range color".split(" "),_={};Modernizr.inputtypes=function(e){for(var o,i,s,a=e.length,r="1)",l=0;a>l;l++)y.setAttribute("type",o=e[l]),s="text"!==y.type&&"style"in y,s&&(y.value=r,y.style.cssText="position:absolute;visibility:hidden;",/^range$/.test(o)&&y.style.WebkitAppearance!==n?(m.appendChild(y),i=t.defaultView,s=i.getComputedStyle&&"textfield"!==i.getComputedStyle(y,null).WebkitAppearance&&0!==y.offsetHeight,m.removeChild(y)):/^(search|tel)$/.test(o)||(s=/^(url|email)$/.test(o)?y.checkValidity&&y.checkValidity()===!1:y.value!=r)),_[e[l]]=!!s;return _}(g);var w=c.testStyles=f;Modernizr.addTest("touchevents",function(){var n;if("ontouchstart"in e||e.DocumentTouch&&t instanceof DocumentTouch)n=!0;else{var o=["@media (",p.join("touch-enabled),("),"heartz",")","{#modernizr{top:9px;position:absolute}}"].join("");w(o,function(e){n=9===e.offsetTop})}return n}),Modernizr.addTest("details",function(){var e,t=r("details");return"open"in t?(w("#modernizr details{display:block}",function(n){n.appendChild(t),t.innerHTML="<summary>a</summary>b",e=t.offsetHeight,t.open=!0,e=e!=t.offsetHeight}),e):!1}),i(),s(u),delete c.addTest,delete c.addAsyncTest;for(var b=0;b<Modernizr._q.length;b++)Modernizr._q[b]();e.Modernizr=Modernizr}(window,document);
\ No newline at end of file
+/*! modernizr 3.1.0 (Custom Build) | MIT *
+ * http://modernizr.com/download/?-details-inputtypes-touchevents-addtest-prefixes-teststyles !*/
+!function(e,t,n){function o(e,t){return typeof e===t}function i(){var e,t,n,i,s,a,r;for(var l in u){if(e=[],t=u[l],t.name&&(e.push(t.name.toLowerCase()),t.options&&t.options.aliases&&t.options.aliases.length))for(n=0;n<t.options.aliases.length;n++)e.push(t.options.aliases[n].toLowerCase());for(i=o(t.fn,"function")?t.fn():t.fn,s=0;s<e.length;s++)a=e[s],r=a.split("."),1===r.length?Modernizr[r[0]]=i:(!Modernizr[r[0]]||Modernizr[r[0]]instanceof Boolean||(Modernizr[r[0]]=new Boolean(Modernizr[r[0]])),Modernizr[r[0]][r[1]]=i),c.push((i?"":"no-")+r.join("-"))}}function s(e){var t=p.className,n=Modernizr._config.classPrefix||"";if(h&&(t=t.baseVal),Modernizr._config.enableJSClass){var o=new RegExp("(^|\\s)"+n+"no-js(\\s|$)");t=t.replace(o,"$1"+n+"js$2")}Modernizr._config.enableClasses&&(t+=" "+n+e.join(" "+n),h?p.className.baseVal=t:p.className=t)}function a(e,t){if("object"==typeof e)for(var n in e)v(e,n)&&a(n,e[n]);else{e=e.toLowerCase();var o=e.split("."),i=Modernizr[o[0]];if(2==o.length&&(i=i[o[1]]),"undefined"!=typeof i)return Modernizr;t="function"==typeof t?t():t,1==o.length?Modernizr[o[0]]=t:(!Modernizr[o[0]]||Modernizr[o[0]]instanceof Boolean||(Modernizr[o[0]]=new Boolean(Modernizr[o[0]])),Modernizr[o[0]][o[1]]=t),s([(t&&0!=t?"":"no-")+o.join("-")]),Modernizr._trigger(e,t)}return Modernizr}function r(){return"function"!=typeof t.createElement?t.createElement(arguments[0]):h?t.createElementNS.call(t,"http://www.w3.org/2000/svg",arguments[0]):t.createElement.apply(t,arguments)}function l(){var e=t.body;return e||(e=r(h?"svg":"body"),e.fake=!0),e}function f(e,n,o,i){var s,a,f,u,d="modernizr",c=r("div"),h=l();if(parseInt(o,10))for(;o--;)f=r("div"),f.id=i?i[o]:d+(o+1),c.appendChild(f);return s=r("style"),s.type="text/css",s.id="s"+d,(h.fake?h:c).appendChild(s),h.appendChild(c),s.styleSheet?s.styleSheet.cssText=e:s.appendChild(t.createTextNode(e)),c.id=d,h.fake&&(h.style.background="",h.style.overflow="hidden",u=p.style.overflow,p.style.overflow="hidden",p.appendChild(h)),a=n(c,e),h.fake?(h.parentNode.removeChild(h),p.style.overflow=u,p.offsetHeight):c.parentNode.removeChild(c),!!a}var u=[],d={_version:"3.1.0",_config:{classPrefix:"",enableClasses:!0,enableJSClass:!0,usePrefixes:!0},_q:[],on:function(e,t){var n=this;setTimeout(function(){t(n[e])},0)},addTest:function(e,t,n){u.push({name:e,fn:t,options:n})},addAsyncTest:function(e){u.push({name:null,fn:e})}},Modernizr=function(){};Modernizr.prototype=d,Modernizr=new Modernizr;var c=[],p=t.documentElement,h="svg"===p.nodeName.toLowerCase(),m=d._config.usePrefixes?" -webkit- -moz- -o- -ms- ".split(" "):[];d._prefixes=m;var v;!function(){var e={}.hasOwnProperty;v=o(e,"undefined")||o(e.call,"undefined")?function(e,t){return t in e&&o(e.constructor.prototype[t],"undefined")}:function(t,n){return e.call(t,n)}}(),d._l={},d.on=function(e,t){this._l[e]||(this._l[e]=[]),this._l[e].push(t),Modernizr.hasOwnProperty(e)&&setTimeout(function(){Modernizr._trigger(e,Modernizr[e])},0)},d._trigger=function(e,t){if(this._l[e]){var n=this._l[e];setTimeout(function(){var e,o;for(e=0;e<n.length;e++)(o=n[e])(t)},0),delete this._l[e]}},Modernizr._q.push(function(){d.addTest=a});var y=d.testStyles=f,g=r("input"),_="search tel url email datetime date month week time datetime-local number range color".split(" "),w={};Modernizr.inputtypes=function(e){for(var o,i,s,a=e.length,r=":)",l=0;a>l;l++)g.setAttribute("type",o=e[l]),s="text"!==g.type&&"style"in g,s&&(g.value=r,g.style.cssText="position:absolute;visibility:hidden;",/^range$/.test(o)&&g.style.WebkitAppearance!==n?(p.appendChild(g),i=t.defaultView,s=i.getComputedStyle&&"textfield"!==i.getComputedStyle(g,null).WebkitAppearance&&0!==g.offsetHeight,p.removeChild(g)):/^(search|tel)$/.test(o)||(s=/^(url|email|number)$/.test(o)?g.checkValidity&&g.checkValidity()===!1:g.value!=r)),w[e[l]]=!!s;return w}(_),Modernizr.addTest("touchevents",function(){var n;if("ontouchstart"in e||e.DocumentTouch&&t instanceof DocumentTouch)n=!0;else{var o=["@media (",m.join("touch-enabled),("),"heartz",")","{#modernizr{top:9px;position:absolute}}"].join("");y(o,function(e){n=9===e.offsetTop})}return n}),Modernizr.addTest("details",function(){var e,t=r("details");return"open"in t?(y("#modernizr details{display:block}",function(n){n.appendChild(t),t.innerHTML="<summary>a</summary>b",e=t.offsetHeight,t.open=!0,e=e!=t.offsetHeight}),e):!1}),i(),s(c),delete d.addTest,delete d.addAsyncTest;for(var b=0;b<Modernizr._q.length;b++)Modernizr._q[b]();e.Modernizr=Modernizr}(window,document);
\ No newline at end of file
diff --git a/core/composer.json b/core/composer.json
index dd5e958..024a387 100644
--- a/core/composer.json
+++ b/core/composer.json
@@ -1,160 +1,159 @@
 {
-    "name": "drupal/core",
-    "description": "Drupal is an open source content management platform powering millions of websites and applications.",
-    "type": "drupal-core",
-    "license": "GPL-2.0+",
-    "require": {
-        "php": ">=5.5.9",
-        "symfony/class-loader": "2.7.*",
-        "symfony/console": "2.7.*",
-        "symfony/dependency-injection": "2.7.*",
-        "symfony/event-dispatcher": "2.7.*",
-        "symfony/http-foundation": "~2.7.2",
-        "symfony/http-kernel": "2.7.*",
-        "symfony/routing": "2.7.*",
-        "symfony/serializer": "2.7.*",
-        "symfony/translation": "2.7.*",
-        "symfony/validator": "2.7.*",
-        "symfony/process": "2.7.*",
-        "symfony/yaml": "2.7.*",
-        "twig/twig": "^1.23.1",
-        "doctrine/common": "2.5.*",
-        "doctrine/annotations": "1.2.*",
-        "guzzlehttp/guzzle": "~6.1",
-        "symfony-cmf/routing": "1.3.*",
-        "easyrdf/easyrdf": "0.9.*",
-        "zendframework/zend-feed": "~2.4",
-        "stack/builder": "1.0.*",
-        "egulias/email-validator": "1.2.*",
-        "masterminds/html5": "~2.1",
-        "symfony/psr-http-message-bridge": "v0.2",
-        "zendframework/zend-diactoros": "~1.1",
-        "composer/semver": "~1.0",
-        "paragonie/random_compat": "~1.0"
+  "name": "drupal/core",
+  "description": "Drupal is an open source content management platform powering millions of websites and applications.",
+  "type": "drupal-core",
+  "license": "GPL-2.0+",
+  "require": {
+    "php": ">=5.5.9",
+    "symfony/class-loader": "2.7.*",
+    "symfony/console": "2.7.*",
+    "symfony/dependency-injection": "2.7.*",
+    "symfony/event-dispatcher": "2.7.*",
+    "symfony/http-foundation": "~2.7.2",
+    "symfony/http-kernel": "2.7.*",
+    "symfony/routing": "2.7.*",
+    "symfony/serializer": "2.7.*",
+    "symfony/translation": "2.7.*",
+    "symfony/validator": "2.7.*",
+    "symfony/process": "2.7.*",
+    "symfony/yaml": "2.7.*",
+    "twig/twig": "^1.23.1",
+    "doctrine/common": "2.5.*",
+    "doctrine/annotations": "1.2.*",
+    "guzzlehttp/guzzle": "~6.1",
+    "symfony-cmf/routing": "1.3.*",
+    "easyrdf/easyrdf": "0.9.*",
+    "zendframework/zend-feed": "~2.4",
+    "stack/builder": "1.0.*",
+    "egulias/email-validator": "1.2.*",
+    "masterminds/html5": "~2.1",
+    "symfony/psr-http-message-bridge": "v0.2",
+    "zendframework/zend-diactoros": "~1.1",
+    "composer/semver": "~1.0"
+  },
+  "require-dev": {
+    "behat/mink": "~1.6",
+    "behat/mink-goutte-driver": "~1.2",
+    "jcalderonzumba/gastonjs": "~1.0.2",
+    "jcalderonzumba/mink-phantomjs-driver": "~0.3.1",
+    "mikey179/vfsStream": "~1.2",
+    "phpunit/phpunit": "~4.8",
+    "symfony/css-selector": "2.7.*"
+  },
+  "replace": {
+    "drupal/action": "self.version",
+    "drupal/aggregator": "self.version",
+    "drupal/automated_cron": "self.version",
+    "drupal/bartik": "self.version",
+    "drupal/ban": "self.version",
+    "drupal/basic_auth": "self.version",
+    "drupal/block": "self.version",
+    "drupal/block_content": "self.version",
+    "drupal/book": "self.version",
+    "drupal/breakpoint": "self.version",
+    "drupal/ckeditor": "self.version",
+    "drupal/classy": "self.version",
+    "drupal/color": "self.version",
+    "drupal/comment": "self.version",
+    "drupal/config": "self.version",
+    "drupal/config_translation": "self.version",
+    "drupal/contact": "self.version",
+    "drupal/content_translation": "self.version",
+    "drupal/contextual": "self.version",
+    "drupal/core-annotation": "self.version",
+    "drupal/core-bridge": "self.version",
+    "drupal/core-datetime": "self.version",
+    "drupal/core-diff": "self.version",
+    "drupal/core-discovery": "self.version",
+    "drupal/core-event-dispatcher": "self.version",
+    "drupal/core-file-cache": "self.version",
+    "drupal/core-gettext": "self.version",
+    "drupal/core-graph": "self.version",
+    "drupal/core-php-storage": "self.version",
+    "drupal/core-plugin": "self.version",
+    "drupal/core-proxy-builder": "self.version",
+    "drupal/core-serialization": "self.version",
+    "drupal/core-transliteration": "self.version",
+    "drupal/core-utility": "self.version",
+    "drupal/core-uuid": "self.version",
+    "drupal/datetime": "self.version",
+    "drupal/dblog": "self.version",
+    "drupal/dynamic_page_cache": "self.version",
+    "drupal/editor": "self.version",
+    "drupal/entity_reference": "self.version",
+    "drupal/field": "self.version",
+    "drupal/field_ui": "self.version",
+    "drupal/file": "self.version",
+    "drupal/filter": "self.version",
+    "drupal/forum": "self.version",
+    "drupal/hal": "self.version",
+    "drupal/help": "self.version",
+    "drupal/history": "self.version",
+    "drupal/image": "self.version",
+    "drupal/inline_form_errors": "self.version",
+    "drupal/language": "self.version",
+    "drupal/link": "self.version",
+    "drupal/locale": "self.version",
+    "drupal/minimal": "self.version",
+    "drupal/menu_link_content": "self.version",
+    "drupal/menu_ui": "self.version",
+    "drupal/migrate": "self.version",
+    "drupal/migrate_drupal": "self.version",
+    "drupal/node": "self.version",
+    "drupal/options": "self.version",
+    "drupal/page_cache": "self.version",
+    "drupal/path": "self.version",
+    "drupal/quickedit": "self.version",
+    "drupal/rdf": "self.version",
+    "drupal/responsive_image": "self.version",
+    "drupal/rest": "self.version",
+    "drupal/search": "self.version",
+    "drupal/serialization": "self.version",
+    "drupal/seven": "self.version",
+    "drupal/shortcut": "self.version",
+    "drupal/simpletest": "self.version",
+    "drupal/standard": "self.version",
+    "drupal/stark": "self.version",
+    "drupal/statistics": "self.version",
+    "drupal/syslog": "self.version",
+    "drupal/system": "self.version",
+    "drupal/taxonomy": "self.version",
+    "drupal/telephone": "self.version",
+    "drupal/text": "self.version",
+    "drupal/toolbar": "self.version",
+    "drupal/tour": "self.version",
+    "drupal/tracker": "self.version",
+    "drupal/update": "self.version",
+    "drupal/user": "self.version",
+    "drupal/views": "self.version",
+    "drupal/views_ui": "self.version"
+  },
+  "minimum-stability": "dev",
+  "prefer-stable": true,
+  "autoload": {
+    "psr-4": {
+      "Drupal\\Core\\": "lib/Drupal/Core",
+      "Drupal\\Component\\": "lib/Drupal/Component",
+      "Drupal\\Driver\\": "../drivers/lib/Drupal/Driver"
     },
-    "require-dev": {
-        "behat/mink": "~1.6",
-        "behat/mink-goutte-driver": "~1.2",
-        "jcalderonzumba/gastonjs": "~1.0.2",
-        "jcalderonzumba/mink-phantomjs-driver": "~0.3.1",
-        "mikey179/vfsStream": "~1.2",
-        "phpunit/phpunit": "~4.8",
-        "symfony/css-selector": "2.7.*"
-    },
-    "replace": {
-        "drupal/action": "self.version",
-        "drupal/aggregator": "self.version",
-        "drupal/automated_cron": "self.version",
-        "drupal/bartik": "self.version",
-        "drupal/ban": "self.version",
-        "drupal/basic_auth": "self.version",
-        "drupal/block": "self.version",
-        "drupal/block_content": "self.version",
-        "drupal/book": "self.version",
-        "drupal/breakpoint": "self.version",
-        "drupal/ckeditor": "self.version",
-        "drupal/classy": "self.version",
-        "drupal/color": "self.version",
-        "drupal/comment": "self.version",
-        "drupal/config": "self.version",
-        "drupal/config_translation": "self.version",
-        "drupal/contact": "self.version",
-        "drupal/content_translation": "self.version",
-        "drupal/contextual": "self.version",
-        "drupal/core-annotation": "self.version",
-        "drupal/core-bridge": "self.version",
-        "drupal/core-datetime": "self.version",
-        "drupal/core-diff": "self.version",
-        "drupal/core-discovery": "self.version",
-        "drupal/core-event-dispatcher": "self.version",
-        "drupal/core-file-cache": "self.version",
-        "drupal/core-gettext": "self.version",
-        "drupal/core-graph": "self.version",
-        "drupal/core-php-storage": "self.version",
-        "drupal/core-plugin": "self.version",
-        "drupal/core-proxy-builder": "self.version",
-        "drupal/core-serialization": "self.version",
-        "drupal/core-transliteration": "self.version",
-        "drupal/core-utility": "self.version",
-        "drupal/core-uuid": "self.version",
-        "drupal/datetime": "self.version",
-        "drupal/dblog": "self.version",
-        "drupal/dynamic_page_cache": "self.version",
-        "drupal/editor": "self.version",
-        "drupal/entity_reference": "self.version",
-        "drupal/field": "self.version",
-        "drupal/field_ui": "self.version",
-        "drupal/file": "self.version",
-        "drupal/filter": "self.version",
-        "drupal/forum": "self.version",
-        "drupal/hal": "self.version",
-        "drupal/help": "self.version",
-        "drupal/history": "self.version",
-        "drupal/image": "self.version",
-        "drupal/inline_form_errors": "self.version",
-        "drupal/language": "self.version",
-        "drupal/link": "self.version",
-        "drupal/locale": "self.version",
-        "drupal/minimal": "self.version",
-        "drupal/menu_link_content": "self.version",
-        "drupal/menu_ui": "self.version",
-        "drupal/migrate": "self.version",
-        "drupal/migrate_drupal": "self.version",
-        "drupal/node": "self.version",
-        "drupal/options": "self.version",
-        "drupal/page_cache": "self.version",
-        "drupal/path": "self.version",
-        "drupal/quickedit": "self.version",
-        "drupal/rdf": "self.version",
-        "drupal/responsive_image": "self.version",
-        "drupal/rest": "self.version",
-        "drupal/search": "self.version",
-        "drupal/serialization": "self.version",
-        "drupal/seven": "self.version",
-        "drupal/shortcut": "self.version",
-        "drupal/simpletest": "self.version",
-        "drupal/standard": "self.version",
-        "drupal/stark": "self.version",
-        "drupal/statistics": "self.version",
-        "drupal/syslog": "self.version",
-        "drupal/system": "self.version",
-        "drupal/taxonomy": "self.version",
-        "drupal/telephone": "self.version",
-        "drupal/text": "self.version",
-        "drupal/toolbar": "self.version",
-        "drupal/tour": "self.version",
-        "drupal/tracker": "self.version",
-        "drupal/update": "self.version",
-        "drupal/user": "self.version",
-        "drupal/views": "self.version",
-        "drupal/views_ui": "self.version"
-    },
-    "minimum-stability": "dev",
-    "prefer-stable": true,
-    "autoload": {
-        "psr-4": {
-            "Drupal\\Core\\": "lib/Drupal/Core",
-            "Drupal\\Component\\": "lib/Drupal/Component",
-            "Drupal\\Driver\\": "../drivers/lib/Drupal/Driver"
-        },
-        "files": [
-            "lib/Drupal.php"
-        ],
-        "classmap": [
-            "lib/Drupal/Component/Utility/Timer.php",
-            "lib/Drupal/Component/Utility/Unicode.php",
-            "lib/Drupal/Core/Database/Database.php",
-            "lib/Drupal/Core/DrupalKernel.php",
-            "lib/Drupal/Core/DrupalKernelInterface.php",
-            "lib/Drupal/Core/Site/Settings.php"
-        ]
-    },
-    "config": {
-        "preferred-install": "dist",
-        "autoloader-suffix": "Drupal8"
-    },
-    "scripts": {
-        "pre-autoload-dump": "Drupal\\Core\\Composer\\Composer::preAutoloadDump",
-        "post-autoload-dump": "Drupal\\Core\\Composer\\Composer::ensureHtaccess"
-    }
+    "files": [
+      "lib/Drupal.php"
+    ],
+    "classmap": [
+      "lib/Drupal/Component/Utility/Timer.php",
+      "lib/Drupal/Component/Utility/Unicode.php",
+      "lib/Drupal/Core/Database/Database.php",
+      "lib/Drupal/Core/DrupalKernel.php",
+      "lib/Drupal/Core/DrupalKernelInterface.php",
+      "lib/Drupal/Core/Site/Settings.php"
+    ]
+  },
+  "config": {
+    "preferred-install": "dist",
+    "autoloader-suffix": "Drupal8"
+  },
+  "scripts": {
+    "pre-autoload-dump": "Drupal\\Core\\Composer\\Composer::preAutoloadDump",
+    "post-autoload-dump": "Drupal\\Core\\Composer\\Composer::ensureHtaccess"
+  }
 }
diff --git a/core/core.api.php b/core/core.api.php
index cf3b335..ee32e87 100644
--- a/core/core.api.php
+++ b/core/core.api.php
@@ -79,9 +79,9 @@
  * Web services make it possible for applications and web sites to read and
  * update information from other web sites. There are several standard
  * techniques for providing web services, including:
- * - SOAP: http://wikipedia.org/wiki/SOAP
- * - XML-RPC: http://wikipedia.org/wiki/XML-RPC
- * - REST: http://wikipedia.org/wiki/Representational_state_transfer
+ * - SOAP: http://en.wikipedia.org/wiki/SOAP SOAP
+ * - XML-RPC: http://en.wikipedia.org/wiki/XML-RPC
+ * - REST: http://en.wikipedia.org/wiki/Representational_state_transfer
  * Drupal sites can both provide web services and integrate third-party web
  * services.
  *
@@ -254,7 +254,7 @@
  * - Exporting and importing configuration.
  *
  * The file storage format for configuration information in Drupal is
- * @link http://wikipedia.org/wiki/YAML YAML files. @endlink Configuration is
+ * @link http://en.wikipedia.org/wiki/YAML YAML files. @endlink Configuration is
  * divided into files, each containing one configuration object. The file name
  * for a configuration object is equal to the unique name of the configuration,
  * with a '.yml' extension. The default configuration files for each module are
@@ -1120,7 +1120,7 @@
  *
  * A runtime assertion is a statement that is expected to always be true at
  * the point in the code it appears at. They are tested using PHP's internal
- * @link http://php.net/assert assert() @endlink statement. If an
+ * @link http://www.php.net/assert assert() @endlink statement. If an
  * assertion is ever FALSE it indicates an error in the code or in module or
  * theme configuration files. User-provided configuration files should be
  * verified with standard control structures at all times, not just checked in
diff --git a/core/core.libraries.yml b/core/core.libraries.yml
index 8cb7b5b..32d4110 100644
--- a/core/core.libraries.yml
+++ b/core/core.libraries.yml
@@ -821,7 +821,7 @@ modernizr:
     name: MIT
     url: http://modernizr.com/license/
     gpl-compatible: true
-  version: "v3.3.1"
+  version: "v3.1.0"
   js:
     assets/vendor/modernizr/modernizr.min.js: { preprocess: 0, weight: -21, minified: true }
 
diff --git a/core/core.services.yml b/core/core.services.yml
index a960712..afccb31 100644
--- a/core/core.services.yml
+++ b/core/core.services.yml
@@ -1144,7 +1144,7 @@ services:
     class: Drupal\Core\EventSubscriber\DefaultExceptionHtmlSubscriber
     tags:
       - { name: event_subscriber }
-    arguments: ['@http_kernel', '@logger.channel.php', '@redirect.destination', '@router.no_access_checks']
+    arguments: ['@http_kernel', '@logger.channel.php', '@redirect.destination']
   exception.default:
     class: Drupal\Core\EventSubscriber\DefaultExceptionSubscriber
     tags:
@@ -1164,7 +1164,7 @@ services:
     class: Drupal\Core\EventSubscriber\CustomPageExceptionHtmlSubscriber
     tags:
       - { name: event_subscriber }
-    arguments: ['@config.factory', '@http_kernel', '@logger.channel.php', '@redirect.destination', '@router.no_access_checks']
+    arguments: ['@config.factory', '@path.alias_manager', '@http_kernel', '@logger.channel.php', '@redirect.destination']
   exception.fast_404_html:
     class: Drupal\Core\EventSubscriber\Fast404ExceptionHtmlSubscriber
     tags:
@@ -1256,7 +1256,7 @@ services:
       - { name: plugin_manager_cache_clear }
   image.toolkit.operation.manager:
     class: Drupal\Core\ImageToolkit\ImageToolkitOperationManager
-    arguments: ['@logger.channel.image', '@image.toolkit.manager']
+    arguments: ['@logger.channel.image']
     parent: default_plugin_manager
     tags:
       - { name: plugin_manager_cache_clear }
@@ -1364,7 +1364,7 @@ services:
     scope: prototype
   theme.manager:
     class: Drupal\Core\Theme\ThemeManager
-    arguments: ['@app.root', '@theme.negotiator', '@theme.initialization', '@module_handler']
+    arguments: ['@app.root', '@theme.negotiator', '@theme.initialization', '@request_stack', '@module_handler']
     calls:
       - [setThemeRegistry, ['@theme.registry']]
   theme.initialization:
diff --git a/core/includes/entity.inc b/core/includes/entity.inc
index 3cfac3f..70e8019 100644
--- a/core/includes/entity.inc
+++ b/core/includes/entity.inc
@@ -6,8 +6,6 @@
  */
 
 use Drupal\Core\Entity\EntityInterface;
-use Drupal\Core\Entity\Entity\EntityFormDisplay;
-use Drupal\Core\Entity\Entity\EntityViewDisplay;
 
 /**
  * Clears the entity render cache for all entity types.
@@ -471,7 +469,7 @@ function entity_get_display($entity_type, $bundle, $view_mode) {
   // configuration entries are only created when a display object is explicitly
   // configured and saved.
   if (!$display) {
-    $display = EntityViewDisplay::create(array(
+    $display = entity_create('entity_view_display', array(
       'targetEntityType' => $entity_type,
       'bundle' => $bundle,
       'mode' => $view_mode,
@@ -547,7 +545,7 @@ function entity_get_form_display($entity_type, $bundle, $form_mode) {
   // configuration entries are only created when an entity form display is
   // explicitly configured and saved.
   if (!$entity_form_display) {
-    $entity_form_display = EntityFormDisplay::create(array(
+    $entity_form_display = entity_create('entity_form_display', array(
       'targetEntityType' => $entity_type,
       'bundle' => $bundle,
       'mode' => $form_mode,
diff --git a/core/includes/file.inc b/core/includes/file.inc
index 3e5eb8c..b9c217b 100644
--- a/core/includes/file.inc
+++ b/core/includes/file.inc
@@ -630,8 +630,7 @@ function file_munge_filename($filename, $extensions, $alerts = TRUE) {
 
   // Allow potentially insecure uploads for very savvy users and admin
   if (!\Drupal::config('system.file')->get('allow_insecure_uploads')) {
-    // Remove any null bytes. See
-    // http://php.net/manual/security.filesystem.nullbytes.php
+    // Remove any null bytes. See http://php.net/manual/en/security.filesystem.nullbytes.php
     $filename = str_replace(chr(0), '', $filename);
 
     $whitelist = array_unique(explode(' ', strtolower(trim($extensions))));
diff --git a/core/includes/install.core.inc b/core/includes/install.core.inc
index d5fcd9c..7b66911 100644
--- a/core/includes/install.core.inc
+++ b/core/includes/install.core.inc
@@ -1,10 +1,5 @@
 <?php
 
-/**
- * @file
- * API functions for installing Drupal.
- */
-
 use Drupal\Component\Utility\UrlHelper;
 use Drupal\Core\DrupalKernel;
 use Drupal\Core\Config\BootstrapConfigStorageFactory;
@@ -34,6 +29,11 @@
 use GuzzleHttp\Exception\RequestException;
 
 /**
+ * @file
+ * API functions for installing Drupal.
+ */
+
+/**
  * Do not run the task during the current installation request.
  *
  * This can be used to skip running an installation task when certain
@@ -418,6 +418,13 @@ function install_begin_request($class_loader, &$install_state) {
   $container->get('string_translation')
     ->addTranslator($container->get('string_translator.file_translation'));
 
+  // Set the default language to the selected language, if any.
+  if (isset($install_state['parameters']['langcode'])) {
+    $default_language = new Language(array('id' => $install_state['parameters']['langcode']));
+    $container->get('language.default')->set($default_language);
+    \Drupal::translation()->setDefaultLangcode($install_state['parameters']['langcode']);
+  }
+
   // Add list of all available profiles to the installation state.
   $listing = new ExtensionDiscovery($container->get('app.root'));
   $listing->setProfileDirectories(array());
@@ -436,19 +443,6 @@ function install_begin_request($class_loader, &$install_state) {
     }
   }
 
-  // Use the language from the profile configuration, if available, to override
-  // the language previously set in the parameters.
-  if (isset($install_state['profile_info']['distribution']['langcode'])) {
-    $install_state['parameters']['langcode'] = $install_state['profile_info']['distribution']['langcode'];
-  }
-
-  // Set the default language to the selected language, if any.
-  if (isset($install_state['parameters']['langcode'])) {
-    $default_language = new Language(array('id' => $install_state['parameters']['langcode']));
-    $container->get('language.default')->set($default_language);
-    \Drupal::translation()->setDefaultLangcode($install_state['parameters']['langcode']);
-  }
-
   // Override the module list with a minimal set of modules.
   $module_handler = \Drupal::moduleHandler();
   if (!$module_handler->moduleExists('system')) {
@@ -993,7 +987,7 @@ function install_display_output($output, $install_state) {
   $default_headers = array(
     'Expires' => 'Sun, 19 Nov 1978 05:00:00 GMT',
     'Last-Modified' => gmdate(DATE_RFC1123, REQUEST_TIME),
-    'Cache-Control' => 'no-cache, must-revalidate',
+    'Cache-Control' => 'no-cache, must-revalidate, post-check=0, pre-check=0',
     'ETag' => '"' . REQUEST_TIME . '"',
   );
   $response->headers->add($default_headers);
@@ -1961,7 +1955,7 @@ function install_check_requirements($install_state) {
   $profile = $install_state['parameters']['profile'];
 
   // Check the profile requirements.
-  $requirements = drupal_check_profile($profile);
+  $requirements = drupal_check_profile($profile, $install_state);
 
   if ($install_state['settings_verified']) {
     return $requirements;
diff --git a/core/includes/install.inc b/core/includes/install.inc
index bae87d7..c9fd75d 100644
--- a/core/includes/install.inc
+++ b/core/includes/install.inc
@@ -921,11 +921,13 @@ function drupal_requirements_url($severity) {
  *
  * @param string $profile
  *   Name of installation profile to check.
+ * @param array $install_state
+ *   The current state in the install process.
  *
  * @return array
  *   Array of the installation profile's requirements.
  */
-function drupal_check_profile($profile) {
+function drupal_check_profile($profile, array $install_state) {
   $info = install_profile_info($profile);
 
   // Collect requirement testing results.
diff --git a/core/includes/tablesort.inc b/core/includes/tablesort.inc
index 95642b3..65b791f 100644
--- a/core/includes/tablesort.inc
+++ b/core/includes/tablesort.inc
@@ -1,5 +1,9 @@
 <?php
 
+use Drupal\Component\Utility\SafeMarkup;
+use Drupal\Core\Url;
+use Drupal\Component\Utility\UrlHelper;
+
 /**
  * @file
  * Functions to aid in the creation of sortable tables.
@@ -9,10 +13,6 @@
  * column.
  */
 
-use Drupal\Component\Utility\SafeMarkup;
-use Drupal\Core\Url;
-use Drupal\Component\Utility\UrlHelper;
-
 /**
  * Initializes the table sort context.
  */
diff --git a/core/includes/theme.inc b/core/includes/theme.inc
index 86eeb46..25cc7c4 100644
--- a/core/includes/theme.inc
+++ b/core/includes/theme.inc
@@ -95,21 +95,6 @@ function theme_get_registry($complete = TRUE) {
 }
 
 /**
- * Returns an array of default theme features.
- *
- * @see \Drupal\Core\Extension\ThemeHandler::$defaultFeatures
- */
-function _system_default_theme_features() {
-  return array(
-    'favicon',
-    'logo',
-    'node_user_picture',
-    'comment_user_picture',
-    'comment_user_verification',
-  );
-}
-
-/**
  * Forces the system to rebuild the theme registry.
  *
  * This function should be called when modules are added to the system, or when
@@ -416,7 +401,7 @@ function theme_render_and_autoescape($arg) {
       $return = (string) $arg;
     }
     // You can't throw exceptions in the magic PHP __toString methods, see
-    // http://php.net/manual/language.oop5.magic.php#object.tostring so
+    // http://php.net/manual/en/language.oop5.magic.php#object.tostring so
     // we also support a toString method.
     elseif (method_exists($arg, 'toString')) {
       $return = $arg->toString();
@@ -583,8 +568,9 @@ function template_preprocess_datetime_wrapper(&$variables) {
  *
  * @param array $variables
  *   An associative array containing:
- *   - links: An array of links to be themed. Each link should be itself an
- *     array, with the following elements:
+ *   - links: An associative array of links to be themed. The key for each link
+ *     is used as its CSS class. Each link should be itself an array, with the
+ *     following elements:
  *     - title: The link text.
  *     - url: (optional) The url object to link to. If omitted, no a tag is
  *       printed out.
diff --git a/core/includes/unicode.inc b/core/includes/unicode.inc
index f0df33e..216d112 100644
--- a/core/includes/unicode.inc
+++ b/core/includes/unicode.inc
@@ -29,25 +29,26 @@ function unicode_requirements() {
     'value' => $libraries[$library],
     'severity' => $severities[$library],
   );
+  $t_args = array(':url' => 'http://www.php.net/mbstring');
   switch ($failed_check) {
     case 'mb_strlen':
-      $requirements['unicode']['description'] = t('Operations on Unicode strings are emulated on a best-effort basis. Install the <a href="http://php.net/mbstring">PHP mbstring extension</a> for improved Unicode support.');
+      $requirements['unicode']['description'] = t('Operations on Unicode strings are emulated on a best-effort basis. Install the <a href=":url">PHP mbstring extension</a> for improved Unicode support.', $t_args);
       break;
 
     case 'mbstring.func_overload':
-      $requirements['unicode']['description'] = t('Multibyte string function overloading in PHP is active and must be disabled. Check the php.ini <em>mbstring.func_overload</em> setting. Please refer to the <a href="http://php.net/mbstring">PHP mbstring documentation</a> for more information.');
+      $requirements['unicode']['description'] = t('Multibyte string function overloading in PHP is active and must be disabled. Check the php.ini <em>mbstring.func_overload</em> setting. Please refer to the <a href=":url">PHP mbstring documentation</a> for more information.', $t_args);
       break;
 
     case 'mbstring.encoding_translation':
-      $requirements['unicode']['description'] = t('Multibyte string input conversion in PHP is active and must be disabled. Check the php.ini <em>mbstring.encoding_translation</em> setting. Please refer to the <a href="http://php.net/mbstring">PHP mbstring documentation</a> for more information.');
+      $requirements['unicode']['description'] = t('Multibyte string input conversion in PHP is active and must be disabled. Check the php.ini <em>mbstring.encoding_translation</em> setting. Please refer to the <a href=":url">PHP mbstring documentation</a> for more information.', $t_args);
       break;
 
     case 'mbstring.http_input':
-      $requirements['unicode']['description'] = t('Multibyte string input conversion in PHP is active and must be disabled. Check the php.ini <em>mbstring.http_input</em> setting. Please refer to the <a href="http://php.net/mbstring">PHP mbstring documentation</a> for more information.');
+      $requirements['unicode']['description'] = t('Multibyte string input conversion in PHP is active and must be disabled. Check the php.ini <em>mbstring.http_input</em> setting. Please refer to the <a href=":url">PHP mbstring documentation</a> for more information.', $t_args);
       break;
 
     case 'mbstring.http_output':
-      $requirements['unicode']['description'] = t('Multibyte string output conversion in PHP is active and must be disabled. Check the php.ini <em>mbstring.http_output</em> setting. Please refer to the <a href="http://php.net/mbstring">PHP mbstring documentation</a> for more information.');
+      $requirements['unicode']['description'] = t('Multibyte string output conversion in PHP is active and must be disabled. Check the php.ini <em>mbstring.http_output</em> setting. Please refer to the <a href=":url">PHP mbstring documentation</a> for more information.', $t_args);
       break;
   }
 
diff --git a/core/lib/Drupal.php b/core/lib/Drupal.php
index a33c265..545ec21 100644
--- a/core/lib/Drupal.php
+++ b/core/lib/Drupal.php
@@ -81,7 +81,7 @@ class Drupal {
   /**
    * The current system version.
    */
-  const VERSION = '8.1.0-dev';
+  const VERSION = '8.0.4-dev';
 
   /**
    * Core API compatibility.
diff --git a/core/lib/Drupal/Component/Bridge/LICENSE.txt b/core/lib/Drupal/Component/Bridge/LICENSE.txt
deleted file mode 100644
index 94fb846..0000000
--- a/core/lib/Drupal/Component/Bridge/LICENSE.txt
+++ /dev/null
@@ -1,339 +0,0 @@
-        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/core/lib/Drupal/Component/Bridge/README.txt b/core/lib/Drupal/Component/Bridge/README.txt
deleted file mode 100644
index eb945f7..0000000
--- a/core/lib/Drupal/Component/Bridge/README.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-The Drupal Bridge Component
-
-Thanks for using this Drupal component.
-
-You can participate in its development on Drupal.org, through our issue system:
-https://www.drupal.org/project/issues/drupal
-
-You can get the full Drupal repo here:
-https://www.drupal.org/project/drupal/git-instructions
-
-You can browse the full Drupal repo here:
-http://cgit.drupalcode.org/drupal
diff --git a/core/lib/Drupal/Component/Bridge/TESTING.txt b/core/lib/Drupal/Component/Bridge/TESTING.txt
deleted file mode 100644
index 6613928..0000000
--- a/core/lib/Drupal/Component/Bridge/TESTING.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-HOW-TO: Test this Drupal component
-
-In order to test this component, you'll need to get the entire Drupal repo and
-run the tests there.
-
-You'll find the tests under core/tests/Drupal/Tests/Component.
-
-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\Component namespace has its own annotated test
-group. You can use this group to run only the tests for this component. Like
-this:
-
-$ cd ./core
-$ ./vendor/bin/phpunit -c core --group Bridge
diff --git a/core/lib/Drupal/Component/Bridge/ZfExtensionManagerSfContainer.php b/core/lib/Drupal/Component/Bridge/ZfExtensionManagerSfContainer.php
index 252b9a9..1bd0a73 100644
--- a/core/lib/Drupal/Component/Bridge/ZfExtensionManagerSfContainer.php
+++ b/core/lib/Drupal/Component/Bridge/ZfExtensionManagerSfContainer.php
@@ -4,7 +4,6 @@
  * @file
  * Contains \Drupal\Component\Bridge\ZfExtensionManagerSfContainer.
  */
-
 namespace Drupal\Component\Bridge;
 
 use Symfony\Component\DependencyInjection\ContainerAwareInterface;
diff --git a/core/lib/Drupal/Component/Bridge/composer.json b/core/lib/Drupal/Component/Bridge/composer.json
deleted file mode 100644
index 75cd7ed..0000000
--- a/core/lib/Drupal/Component/Bridge/composer.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
-    "name": "drupal/core-bridge",
-    "description": "Bridge.",
-    "keywords": ["drupal"],
-    "homepage": "https://www.drupal.org/project/drupal",
-    "license": "GPL-2.0+",
-    "require": {
-        "php": ">=5.5.9"
-    },
-    "autoload": {
-        "psr-0": {
-            "Drupal\\Component\\Bridge\\": ""
-        }
-    }
-}
diff --git a/core/lib/Drupal/Component/Datetime/DateTimePlus.php b/core/lib/Drupal/Component/Datetime/DateTimePlus.php
index 372fb00..4540b3b 100644
--- a/core/lib/Drupal/Component/Datetime/DateTimePlus.php
+++ b/core/lib/Drupal/Component/Datetime/DateTimePlus.php
@@ -4,7 +4,6 @@
  * @file
  * Contains \Drupal\Component\Datetime\DateTimePlus.
  */
-
 namespace Drupal\Component\Datetime;
 use Drupal\Component\Utility\ToStringTrait;
 
@@ -178,7 +177,7 @@ public static function createFromTimestamp($timestamp, $timezone = NULL, $settin
    *   to use things like negative years, which php's parser fails on, or
    *   any other specialized input with a known format. If provided the
    *   date will be created using the createFromFormat() method.
-   *   @see http://php.net/manual/datetime.createfromformat.php
+   *   @see http://us3.php.net/manual/en/datetime.createfromformat.php
    * @param mixed $time
    *   @see __construct()
    * @param mixed $timezone
@@ -390,7 +389,7 @@ protected function prepareFormat($format) {
    * PHP creates a valid date from invalid data with only a warning,
    * 2011-02-30 becomes 2011-03-03, for instance, but we don't want that.
    *
-   * @see http://php.net/manual/time.getlasterrors.php
+   * @see http://us3.php.net/manual/en/time.getlasterrors.php
    */
   public function checkErrors() {
     $errors = \DateTime::getLastErrors();
diff --git a/core/lib/Drupal/Component/DependencyInjection/composer.json b/core/lib/Drupal/Component/DependencyInjection/composer.json
index d3bcd58..7e5e666 100644
--- a/core/lib/Drupal/Component/DependencyInjection/composer.json
+++ b/core/lib/Drupal/Component/DependencyInjection/composer.json
@@ -1,18 +1,18 @@
 {
-    "name": "drupal/core-dependency-injection",
-    "description": "Dependency Injection container optimized for Drupal's needs.",
-    "keywords": ["drupal", "dependency injection"],
-    "type": "library",
-    "homepage": "https://www.drupal.org/project/drupal",
-    "license": "GPL-2.0+",
-    "support": {
-        "issues": "https://www.drupal.org/project/issues/drupal",
-        "irc": "irc://irc.freenode.net/drupal-contribute",
-        "source": "https://www.drupal.org/project/drupal/git-instructions"
-    },
-    "autoload": {
-        "psr-4": {
-            "Drupal\\Component\\DependencyInjection\\": ""
-        }
+  "name": "drupal/core-dependency-injection",
+  "description": "Dependency Injection container optimized for Drupal's needs.",
+  "keywords": ["drupal", "dependency injection"],
+  "type": "library",
+  "homepage": "https://www.drupal.org/project/drupal",
+  "license": "GPL-2.0+",
+  "support": {
+    "issues": "https://www.drupal.org/project/issues/drupal",
+    "irc": "irc://irc.freenode.net/drupal-contribute",
+    "source": "https://www.drupal.org/project/drupal/git-instructions"
+  },
+  "autoload": {
+    "psr-4": {
+      "Drupal\\Component\\DependencyInjection\\": ""
     }
+  }
 }
diff --git a/core/lib/Drupal/Component/Gettext/composer.json b/core/lib/Drupal/Component/Gettext/composer.json
index 4df12de..a95be56 100644
--- a/core/lib/Drupal/Component/Gettext/composer.json
+++ b/core/lib/Drupal/Component/Gettext/composer.json
@@ -1,16 +1,16 @@
 {
-    "name": "drupal/core-gettext",
-    "description": "PHP library for reading PO files.",
-    "type": "library",
-    "license": "GPL-2.0+",
-    "support": {
-        "issues": "https://www.drupal.org/project/issues/drupal",
-        "irc": "irc://irc.freenode.net/drupal-contribute",
-        "source": "https://www.drupal.org/project/drupal/git-instructions"
-    },
-    "autoload": {
-        "psr-4": {
-            "Drupal\\Component\\Gettext\\": ""
-        }
+  "name": "drupal/core-gettext",
+  "description": "PHP library for reading PO files.",
+  "type": "library",
+  "license": "GPL-2.0+",
+  "support": {
+    "issues": "https://www.drupal.org/project/issues/drupal",
+    "irc": "irc://irc.freenode.net/drupal-contribute",
+    "source": "https://www.drupal.org/project/drupal/git-instructions"
+  },
+  "autoload": {
+    "psr-4": {
+      "Drupal\\Component\\Gettext\\": ""
     }
+  }
 }
diff --git a/core/lib/Drupal/Component/PhpStorage/MTimeProtectedFileStorage.php b/core/lib/Drupal/Component/PhpStorage/MTimeProtectedFileStorage.php
index 04ec0b9..067a8df 100644
--- a/core/lib/Drupal/Component/PhpStorage/MTimeProtectedFileStorage.php
+++ b/core/lib/Drupal/Component/PhpStorage/MTimeProtectedFileStorage.php
@@ -4,7 +4,6 @@
  * @file
  * Contains \Drupal\Component\PhpStorage\MTimeProtectedFileStorage.
  */
-
 namespace Drupal\Component\PhpStorage;
 
 /**
diff --git a/core/lib/Drupal/Component/ProxyBuilder/composer.json b/core/lib/Drupal/Component/ProxyBuilder/composer.json
index aaf0816..126c1a3 100644
--- a/core/lib/Drupal/Component/ProxyBuilder/composer.json
+++ b/core/lib/Drupal/Component/ProxyBuilder/composer.json
@@ -1,16 +1,16 @@
 {
-    "name": "drupal/core-proxy-builder",
-    "description": "Provides a lightweight mechanism to provide lazy loaded proxies.",
-    "keywords": ["drupal", "proxy"],
-    "homepage": "https://www.drupal.org/project/drupal",
-    "license": "GPL-2.0+",
-    "require": {
-        "php": ">=5.5.9",
-        "symfony/dependency-injection": "~2.6"
-    },
-    "autoload": {
-        "psr-4": {
-            "Drupal\\Component\\ProxyBuilder\\": ""
-        }
+  "name": "drupal/core-proxy-builder",
+  "description": "Provides a lightweight mechanism to provide lazy loaded proxies.",
+  "keywords": ["drupal", "proxy"],
+  "homepage": "https://www.drupal.org/project/drupal",
+  "license": "GPL-2.0+",
+  "require": {
+    "php": ">=5.5.9",
+    "symfony/dependency-injection": "~2.6"
+  },
+  "autoload": {
+    "psr-4": {
+      "Drupal\\Component\\ProxyBuilder\\": ""
     }
-}
+  }
+}
\ No newline at end of file
diff --git a/core/lib/Drupal/Component/Utility/Bytes.php b/core/lib/Drupal/Component/Utility/Bytes.php
index 4d331ea..0bcac31 100644
--- a/core/lib/Drupal/Component/Utility/Bytes.php
+++ b/core/lib/Drupal/Component/Utility/Bytes.php
@@ -15,7 +15,7 @@ class Bytes {
   /**
    * The number of bytes in a kilobyte.
    *
-   * @see http://wikipedia.org/wiki/Kilobyte
+   * @see http://en.wikipedia.org/wiki/Kilobyte
    */
   const KILOBYTE = 1024;
 
diff --git a/core/lib/Drupal/Component/Utility/Crypt.php b/core/lib/Drupal/Component/Utility/Crypt.php
index 66cadfa..7ae2e61 100644
--- a/core/lib/Drupal/Component/Utility/Crypt.php
+++ b/core/lib/Drupal/Component/Utility/Crypt.php
@@ -22,10 +22,6 @@ class Crypt {
    * bytes normally from mt_rand()) and uses the best available pseudo-random
    * source.
    *
-   * In PHP 7 and up, this uses the built-in PHP function random_bytes().
-   * In older PHP versions, this uses the random_bytes() function provided by
-   * the random_compat library.
-   *
    * @param int $count
    *   The number of characters (bytes) to return in the string.
    *
@@ -33,7 +29,65 @@ class Crypt {
    *   A randomly generated string.
    */
   public static function randomBytes($count) {
-    return random_bytes($count);
+    // $random_state does not use drupal_static as it stores random bytes.
+    static $random_state, $bytes;
+
+    $missing_bytes = $count - strlen($bytes);
+
+    if ($missing_bytes > 0) {
+      // openssl_random_pseudo_bytes() will find entropy in a system-dependent
+      // way.
+      if (function_exists('openssl_random_pseudo_bytes')) {
+        $bytes .= openssl_random_pseudo_bytes($missing_bytes);
+      }
+
+      // If OpenSSL is not available, we can use mcrypt. On Windows, this will
+      // transparently pull from CryptGenRandom. On Unix-based systems, it will
+      // read from /dev/urandom as expected.
+      elseif (function_exists(('mcrypt_create_iv')) && defined('MCRYPT_DEV_URANDOM')) {
+        $bytes .= mcrypt_create_iv($count, MCRYPT_DEV_URANDOM);
+      }
+
+      // Else, read directly from /dev/urandom, which is available on many *nix
+      // systems and is considered cryptographically secure.
+      elseif ($fh = @fopen('/dev/urandom', 'rb')) {
+        // PHP only performs buffered reads, so in reality it will always read
+        // at least 4096 bytes. Thus, it costs nothing extra to read and store
+        // that much so as to speed any additional invocations.
+        $bytes .= fread($fh, max(4096, $missing_bytes));
+        fclose($fh);
+      }
+
+      // If we couldn't get enough entropy, this simple hash-based PRNG will
+      // generate a good set of pseudo-random bytes on any system.
+      // Note that it may be important that our $random_state is passed
+      // through hash() prior to being rolled into $output, that the two hash()
+      // invocations are different, and that the extra input into the first one -
+      // the microtime() - is prepended rather than appended. This is to avoid
+      // directly leaking $random_state via the $output stream, which could
+      // allow for trivial prediction of further "random" numbers.
+      if (strlen($bytes) < $count) {
+        // Initialize on the first call. The contents of $_SERVER includes a mix
+        // of user-specific and system information that varies a little with
+        // each page.
+        if (!isset($random_state)) {
+          $random_state = print_r($_SERVER, TRUE);
+          if (function_exists('getmypid')) {
+            // Further initialize with the somewhat random PHP process ID.
+            $random_state .= getmypid();
+          }
+          $bytes = '';
+        }
+
+        do {
+          $random_state = hash('sha256', microtime() . mt_rand() . $random_state);
+          $bytes .= hash('sha256', mt_rand() . $random_state, TRUE);
+        } while (strlen($bytes) < $count);
+      }
+    }
+    $output = substr($bytes, 0, $count);
+    $bytes = substr($bytes, $count);
+    return $output;
   }
 
   /**
@@ -124,7 +178,7 @@ public static function hashEquals($known_string, $user_string) {
   /**
    * Returns a URL-safe, base64 encoded string of highly randomized bytes.
    *
-   * @param $count
+   * @param $byte_count
    *   The number of random bytes to fetch and base64 encode.
    *
    * @return string
diff --git a/core/lib/Drupal/Component/Utility/Html.php b/core/lib/Drupal/Component/Utility/Html.php
index d13c134..0c811f2 100644
--- a/core/lib/Drupal/Component/Utility/Html.php
+++ b/core/lib/Drupal/Component/Utility/Html.php
@@ -334,7 +334,7 @@ public static function escapeCdataElement(\DOMNode $node, $comment_start = '//',
         // Prevent invalid cdata escaping as this would throw a DOM error.
         // This is the same behavior as found in libxml2.
         // Related W3C standard: http://www.w3.org/TR/REC-xml/#dt-cdsection
-        // Fix explanation: http://wikipedia.org/wiki/CDATA#Nesting
+        // Fix explanation: http://en.wikipedia.org/wiki/CDATA#Nesting
         $data = str_replace(']]>', ']]]]><![CDATA[>', $child_node->data);
 
         $fragment = $node->ownerDocument->createDocumentFragment();
diff --git a/core/lib/Drupal/Component/Utility/Number.php b/core/lib/Drupal/Component/Utility/Number.php
index 59a199b..99bedc8 100644
--- a/core/lib/Drupal/Component/Utility/Number.php
+++ b/core/lib/Drupal/Component/Utility/Number.php
@@ -4,7 +4,6 @@
  * @file
  * Contains \Drupal\Component\Utility\Number.
  */
-
 namespace Drupal\Component\Utility;
 
 /**
diff --git a/core/lib/Drupal/Component/Utility/Rectangle.php b/core/lib/Drupal/Component/Utility/Rectangle.php
deleted file mode 100644
index d91fd4f..0000000
--- a/core/lib/Drupal/Component/Utility/Rectangle.php
+++ /dev/null
@@ -1,200 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\Component\Utility\Rectangle.
- */
-
-namespace Drupal\Component\Utility;
-
-/**
- * Rectangle rotation algebra class.
- *
- * This class is used by the image system to abstract, from toolkit
- * implementations, the calculation of the expected dimensions resulting from
- * an image rotate operation.
- *
- * Different versions of PHP for the GD toolkit, and alternative toolkits, use
- * different algorithms to perform the rotation of an image and result in
- * different dimensions of the output image. This prevents predictability of
- * the final image size for instance by the image rotate effect, or by image
- * toolkit rotate operations.
- *
- * This class implements a calculation algorithm that returns, given input
- * width, height and rotation angle, dimensions of the expected image after
- * rotation that are consistent with those produced by the GD rotate image
- * toolkit operation using PHP 5.5 and above.
- *
- * @see \Drupal\system\Plugin\ImageToolkit\Operation\gd\Rotate
- */
-class Rectangle {
-
-  /**
-   * The width of the rectangle.
-   *
-   * @var int
-   */
-  protected $width;
-
-  /**
-   * The height of the rectangle.
-   *
-   * @var int
-   */
-  protected $height;
-
-  /**
-   * The width of the rotated rectangle.
-   *
-   * @var int
-   */
-  protected $boundingWidth;
-
-  /**
-   * The height of the rotated rectangle.
-   *
-   * @var int
-   */
-  protected $boundingHeight;
-
-  /**
-   * Constructs a new Rectangle object.
-   *
-   * @param int $width
-   *   The width of the rectangle.
-   * @param int $height
-   *   The height of the rectangle.
-   */
-  public function __construct($width, $height) {
-    if ($width > 0 && $height > 0) {
-      $this->width = $width;
-      $this->height = $height;
-      $this->boundingWidth = $width;
-      $this->boundingHeight = $height;
-    }
-    else {
-      throw new \InvalidArgumentException("Invalid dimensions ({$width}x{$height}) specified for a Rectangle object");
-    }
-  }
-
-  /**
-   * Rotates the rectangle.
-   *
-   * @param float $angle
-   *   Rotation angle.
-   *
-   * @return $this
-   */
-  public function rotate($angle) {
-    // PHP 5.5 GD bug: https://bugs.php.net/bug.php?id=65148: To prevent buggy
-    // behavior on negative multiples of 30 degrees we convert any negative
-    // angle to a positive one between 0 and 360 degrees.
-    $angle -= floor($angle / 360) * 360;
-
-    // For some rotations that are multiple of 30 degrees, we need to correct
-    // an imprecision between GD that uses C floats internally, and PHP that
-    // uses C doubles. Also, for rotations that are not multiple of 90 degrees,
-    // we need to introduce a correction factor of 0.5 to match the GD
-    // algorithm used in PHP 5.5 (and above) to calculate the width and height
-    // of the rotated image.
-    if ((int) $angle == $angle && $angle % 90 == 0) {
-      $imprecision = 0;
-      $correction = 0;
-    }
-    else {
-      $imprecision = -0.00001;
-      $correction = 0.5;
-    }
-
-    // Do the trigonometry, applying imprecision fixes where needed.
-    $rad = deg2rad($angle);
-    $cos = cos($rad);
-    $sin = sin($rad);
-    $a = $this->width * $cos;
-    $b = $this->height * $sin + $correction;
-    $c = $this->width * $sin;
-    $d = $this->height * $cos + $correction;
-    if ((int) $angle == $angle && in_array($angle, [60, 150, 300])) {
-      $a = $this->fixImprecision($a, $imprecision);
-      $b = $this->fixImprecision($b, $imprecision);
-      $c = $this->fixImprecision($c, $imprecision);
-      $d = $this->fixImprecision($d, $imprecision);
-    }
-
-    // This is how GD on PHP5.5 calculates the new dimensions.
-    $this->boundingWidth = abs((int) $a) + abs((int) $b);
-    $this->boundingHeight = abs((int) $c) + abs((int) $d);
-
-    return $this;
-  }
-
-  /**
-   * Performs an imprecision check on the input value and fixes it if needed.
-   *
-   * GD that uses C floats internally, whereas we at PHP level use C doubles.
-   * In some cases, we need to compensate imprecision.
-   *
-   * @param float $input
-   *   The input value.
-   * @param float $imprecision
-   *   The imprecision factor.
-   *
-   * @return float
-   *   A value, where imprecision is added to input if the delta part of the
-   *   input is lower than the absolute imprecision.
-   */
-  protected function fixImprecision($input, $imprecision) {
-    if ($this->delta($input) < abs($imprecision)) {
-      return $input + $imprecision;
-    }
-    return $input;
-  }
-
-  /**
-   * Returns the fractional part of a float number, unsigned.
-   *
-   * @param float $input
-   *   The input value.
-   *
-   * @return float
-   *   The fractional part of the input number, unsigned.
-   */
-  protected function fraction($input) {
-    return abs((int) $input - $input);
-  }
-
-  /**
-   * Returns the difference of a fraction from the closest between 0 and 1.
-   *
-   * @param float $input
-   *   The input value.
-   *
-   * @return float
-   *   the difference of a fraction from the closest between 0 and 1.
-   */
-  protected function delta($input) {
-    $fraction = $this->fraction($input);
-    return $fraction > 0.5 ? (1 - $fraction) : $fraction;
-  }
-
-  /**
-   * Gets the bounding width of the rectangle.
-   *
-   * @return int
-   *   The bounding width of the rotated rectangle.
-   */
-  public function getBoundingWidth() {
-    return $this->boundingWidth;
-  }
-
-  /**
-   * Gets the bounding height of the rectangle.
-   *
-   * @return int
-   *   The bounding height of the rotated rectangle.
-   */
-  public function getBoundingHeight() {
-    return $this->boundingHeight;
-  }
-
-}
diff --git a/core/lib/Drupal/Component/Utility/composer.json b/core/lib/Drupal/Component/Utility/composer.json
index 93ae73a..a029d1e 100644
--- a/core/lib/Drupal/Component/Utility/composer.json
+++ b/core/lib/Drupal/Component/Utility/composer.json
@@ -1,16 +1,15 @@
 {
-    "name": "drupal/core-utility",
-    "description": "Mostly static utility classes for string, xss, array, image, and other commonly needed manipulations.",
-    "keywords": ["drupal"],
-    "homepage": "https://www.drupal.org/project/drupal",
-    "license": "GPL-2.0+",
-    "require": {
-        "php": ">=5.5.9",
-        "paragonie/random_compat": "~1.0"
-    },
-    "autoload": {
-        "psr-0": {
-            "Drupal\\Component\\Utility\\": ""
-        }
+  "name": "drupal/core-utility",
+  "description": "Mostly static utility classes for string, xss, array, image, and other commonly needed manipulations.",
+  "keywords": ["drupal"],
+  "homepage": "https://www.drupal.org/project/drupal",
+  "license": "GPL-2.0+",
+  "require": {
+    "php": ">=5.5.9"
+  },
+  "autoload": {
+    "psr-0": {
+      "Drupal\\Component\\Utility\\": ""
     }
+  }
 }
diff --git a/core/lib/Drupal/Core/Ajax/RemoveCommand.php b/core/lib/Drupal/Core/Ajax/RemoveCommand.php
index c976e44..5131b20 100644
--- a/core/lib/Drupal/Core/Ajax/RemoveCommand.php
+++ b/core/lib/Drupal/Core/Ajax/RemoveCommand.php
@@ -21,7 +21,7 @@
  *
  * @ingroup ajax
  */
-class RemoveCommand implements CommandInterface {
+class RemoveCommand Implements CommandInterface {
 
   /**
    * The CSS selector for the element(s) to be removed.
diff --git a/core/lib/Drupal/Core/Archiver/ArchiveTar.php b/core/lib/Drupal/Core/Archiver/ArchiveTar.php
index 24085ce..ecd7f25 100644
--- a/core/lib/Drupal/Core/Archiver/ArchiveTar.php
+++ b/core/lib/Drupal/Core/Archiver/ArchiveTar.php
@@ -1,5 +1,4 @@
 <?php
-// @codingStandardsIgnoreFile
 /* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
 
 /**
diff --git a/core/lib/Drupal/Core/Archiver/Zip.php b/core/lib/Drupal/Core/Archiver/Zip.php
index 49efa10..15500f7 100644
--- a/core/lib/Drupal/Core/Archiver/Zip.php
+++ b/core/lib/Drupal/Core/Archiver/Zip.php
@@ -59,7 +59,7 @@ public function remove($file_path) {
   /**
    * {@inheritdoc}
    */
-  public function extract($path, array $files = array()) {
+  public function extract($path, Array $files = array()) {
     if ($files) {
       $this->zip->extractTo($path, $files);
     }
diff --git a/core/lib/Drupal/Core/Batch/BatchStorage.php b/core/lib/Drupal/Core/Batch/BatchStorage.php
index 7c798a6..5742fd2 100644
--- a/core/lib/Drupal/Core/Batch/BatchStorage.php
+++ b/core/lib/Drupal/Core/Batch/BatchStorage.php
@@ -8,18 +8,12 @@
 namespace Drupal\Core\Batch;
 
 use Drupal\Core\Database\Connection;
-use Drupal\Core\Database\SchemaObjectExistsException;
 use Symfony\Component\HttpFoundation\Session\SessionInterface;
 use Drupal\Core\Access\CsrfTokenGenerator;
 
 class BatchStorage implements BatchStorageInterface {
 
   /**
-   * The table name.
-   */
-  const TABLE_NAME = 'batch';
-
-  /**
    * The database connection.
    *
    * @var \Drupal\Core\Database\Connection
@@ -62,16 +56,10 @@ public function __construct(Connection $connection, SessionInterface $session, C
   public function load($id) {
     // Ensure that a session is started before using the CSRF token generator.
     $this->session->start();
-    try {
-      $batch = $this->connection->query("SELECT batch FROM {batch} WHERE bid = :bid AND token = :token", array(
-        ':bid' => $id,
-        ':token' => $this->csrfToken->get($id),
-      ))->fetchField();
-    }
-    catch (\Exception $e) {
-      $this->catchException($e);
-      $batch = FALSE;
-    }
+    $batch = $this->connection->query("SELECT batch FROM {batch} WHERE bid = :bid AND token = :token", array(
+      ':bid' => $id,
+      ':token' => $this->csrfToken->get($id),
+    ))->fetchField();
     if ($batch) {
       return unserialize($batch);
     }
@@ -82,44 +70,29 @@ public function load($id) {
    * {@inheritdoc}
    */
   public function delete($id) {
-    try {
-      $this->connection->delete('batch')
-        ->condition('bid', $id)
-        ->execute();
-    }
-    catch (\Exception $e) {
-      $this->catchException($e);
-    }
+    $this->connection->delete('batch')
+      ->condition('bid', $id)
+      ->execute();
   }
 
   /**
    * {@inheritdoc}
    */
   public function update(array $batch) {
-    try {
-      $this->connection->update('batch')
-        ->fields(array('batch' => serialize($batch)))
-        ->condition('bid', $batch['id'])
-        ->execute();
-    }
-    catch (\Exception $e) {
-      $this->catchException($e);
-    }
+    $this->connection->update('batch')
+      ->fields(array('batch' => serialize($batch)))
+      ->condition('bid', $batch['id'])
+      ->execute();
   }
 
   /**
    * {@inheritdoc}
    */
   public function cleanup() {
-    try {
-      // Cleanup the batch table and the queue for failed batches.
-      $this->connection->delete('batch')
-        ->condition('timestamp', REQUEST_TIME - 864000, '<')
-        ->execute();
-    }
-    catch (\Exception $e) {
-      $this->catchException($e);
-    }
+    // Cleanup the batch table and the queue for failed batches.
+    $this->connection->delete('batch')
+      ->condition('timestamp', REQUEST_TIME - 864000, '<')
+      ->execute();
   }
 
   /**
@@ -128,32 +101,6 @@ public function cleanup() {
   public function create(array $batch) {
     // Ensure that a session is started before using the CSRF token generator.
     $this->session->start();
-    $try_again = FALSE;
-    try {
-      // The batch table might not yet exist.
-      $this->doCreate($batch);
-    }
-    catch (\Exception $e) {
-      // If there was an exception, try to create the table.
-      if (!$try_again = $this->ensureTableExists()) {
-        // If the exception happened for other reason than the missing table,
-        // propagate the exception.
-        throw $e;
-      }
-    }
-    // Now that the table has been created, try again if necessary.
-    if ($try_again) {
-      $this->doCreate($batch);
-    }
-  }
-
-  /**
-   * Saves a batch.
-   *
-   * @param array $batch
-   *   The array representing the batch to create.
-   */
-  protected function doCreate(array $batch) {
     $this->connection->insert('batch')
       ->fields(array(
         'bid' => $batch['id'],
@@ -164,83 +111,4 @@ protected function doCreate(array $batch) {
       ->execute();
   }
 
-  /**
-   * Check if the table exists and create it if not.
-   */
-  protected function ensureTableExists() {
-    try {
-      $database_schema = $this->connection->schema();
-      if (!$database_schema->tableExists(static::TABLE_NAME)) {
-        $schema_definition = $this->schemaDefinition();
-        $database_schema->createTable(static::TABLE_NAME, $schema_definition);
-        return TRUE;
-      }
-    }
-    // If another process has already created the batch table, attempting to
-    // recreate it will throw an exception. In this case just catch the
-    // exception and do nothing.
-    catch (SchemaObjectExistsException $e) {
-      return TRUE;
-    }
-    return FALSE;
-  }
-
-  /**
-   * Act on an exception when batch might be stale.
-   *
-   * If the table does not yet exist, that's fine, but if the table exists and
-   * yet the query failed, then the batch is stale and the exception needs to
-   * propagate.
-   *
-   * @param $e
-   *   The exception.
-   *
-   * @throws \Exception
-   */
-  protected function catchException(\Exception $e) {
-    if ($this->connection->schema()->tableExists(static::TABLE_NAME)) {
-      throw $e;
-    }
-  }
-
-  /**
-   * Defines the schema for the batch table.
-   */
-  public function schemaDefinition() {
-    return [
-      'description' => 'Stores details about batches (processes that run in multiple HTTP requests).',
-      'fields' => [
-        'bid' => [
-          'description' => 'Primary Key: Unique batch ID.',
-          // This is not a serial column, to allow both progressive and
-          // non-progressive batches. See batch_process().
-          'type' => 'int',
-          'unsigned' => TRUE,
-          'not null' => TRUE,
-        ],
-        'token' => [
-          'description' => "A string token generated against the current user's session id and the batch id, used to ensure that only the user who submitted the batch can effectively access it.",
-          'type' => 'varchar_ascii',
-          'length' => 64,
-          'not null' => TRUE,
-        ],
-        'timestamp' => [
-          'description' => 'A Unix timestamp indicating when this batch was submitted for processing. Stale batches are purged at cron time.',
-          'type' => 'int',
-          'not null' => TRUE,
-        ],
-        'batch' => [
-          'description' => 'A serialized array containing the processing data for the batch.',
-          'type' => 'blob',
-          'not null' => FALSE,
-          'size' => 'big',
-        ],
-      ],
-      'primary key' => ['bid'],
-      'indexes' => [
-        'token' => ['token'],
-      ],
-    ];
-  }
-
 }
diff --git a/core/lib/Drupal/Core/Block/Annotation/Block.php b/core/lib/Drupal/Core/Block/Annotation/Block.php
index 81fc536..e29f80d 100644
--- a/core/lib/Drupal/Core/Block/Annotation/Block.php
+++ b/core/lib/Drupal/Core/Block/Annotation/Block.php
@@ -43,4 +43,11 @@ class Block extends Plugin {
    */
   public $category = '';
 
+  /**
+   * Class used to retrieve derivative definitions of the block.
+   *
+   * @var string
+   */
+  public $derivative = '';
+
 }
diff --git a/core/lib/Drupal/Core/Composer/Composer.php b/core/lib/Drupal/Core/Composer/Composer.php
index 8210b03..0d5b6aa 100644
--- a/core/lib/Drupal/Core/Composer/Composer.php
+++ b/core/lib/Drupal/Core/Composer/Composer.php
@@ -36,7 +36,6 @@ class Composer {
     'jcalderonzumba/mink-phantomjs-driver' => ['tests'],
     'masterminds/html5' => ['test'],
     'mikey179/vfsStream' => ['src/test'],
-    'paragonie/random_compat' => ['tests'],
     'phpdocumentor/reflection-docblock' => ['tests'],
     'phpunit/php-code-coverage' => ['tests'],
     'phpunit/php-timer' => ['tests'],
@@ -66,7 +65,7 @@ class Composer {
     'symfony/routing' => ['Tests'],
     'symfony/serializer' => ['Tests'],
     'symfony/translation' => ['Tests'],
-    'symfony/validator' => ['Tests', 'Resources'],
+    'symfony/validator' => ['Tests'],
     'symfony/yaml' => ['Tests'],
     'symfony-cmf/routing' => ['Test', 'Tests'],
     'twig/twig' => ['doc', 'ext', 'test'],
diff --git a/core/lib/Drupal/Core/Config/ConfigBase.php b/core/lib/Drupal/Core/Config/ConfigBase.php
index 77460f9..8263e9a 100644
--- a/core/lib/Drupal/Core/Config/ConfigBase.php
+++ b/core/lib/Drupal/Core/Config/ConfigBase.php
@@ -55,7 +55,7 @@
    * incompatible with this limitation are created, we enforce a maximum name
    * length of 250 characters (leaving 5 characters for the file extension).
    *
-   * @see http://wikipedia.org/wiki/Comparison_of_file_systems
+   * @see http://en.wikipedia.org/wiki/Comparison_of_file_systems
    *
    * Configuration objects not stored on the filesystem should still be
    * restricted in name length so name can be used as a cache key.
diff --git a/core/lib/Drupal/Core/Config/Entity/ConfigDependencyDeleteFormTrait.php b/core/lib/Drupal/Core/Config/Entity/ConfigDependencyDeleteFormTrait.php
index a642e03..1f2660b 100644
--- a/core/lib/Drupal/Core/Config/Entity/ConfigDependencyDeleteFormTrait.php
+++ b/core/lib/Drupal/Core/Config/Entity/ConfigDependencyDeleteFormTrait.php
@@ -5,6 +5,7 @@
  * Contains \Drupal\Core\Config\Entity\ConfigDependencyDeleteFormTrait.
  */
 
+
 namespace Drupal\Core\Config\Entity;
 
 use Drupal\Core\Config\ConfigManagerInterface;
diff --git a/core/lib/Drupal/Core/Config/TypedConfigManager.php b/core/lib/Drupal/Core/Config/TypedConfigManager.php
index 1181953..b2c94ed 100644
--- a/core/lib/Drupal/Core/Config/TypedConfigManager.php
+++ b/core/lib/Drupal/Core/Config/TypedConfigManager.php
@@ -103,7 +103,7 @@ public function buildDataDefinition(array $definition, $value, $name = NULL, $pa
       unset($definition['type']);
     }
     // Add default values from type definition.
-    $definition += $this->getDefinitionWithReplacements($type, $replace);
+    $definition += $this->_getDefinitionWithReplacements($type, $replace);
 
     $data_definition = $this->createDataDefinition($definition['type']);
 
@@ -127,7 +127,7 @@ public function buildDataDefinition(array $definition, $value, $name = NULL, $pa
    * @return string
    *   The typed config type for the given plugin ID.
    */
-  protected function determineType($base_plugin_id, array $definitions) {
+  protected function _determineType($base_plugin_id, array $definitions) {
     if (isset($definitions[$base_plugin_id])) {
       $type = $base_plugin_id;
     }
@@ -157,9 +157,9 @@ protected function determineType($base_plugin_id, array $definitions) {
    * @return array
    *   A schema definition array.
    */
-  protected function getDefinitionWithReplacements($base_plugin_id, array $replacements, $exception_on_invalid = TRUE) {
+  protected function _getDefinitionWithReplacements($base_plugin_id, array $replacements, $exception_on_invalid = TRUE) {
     $definitions = $this->getDefinitions();
-    $type = $this->determineType($base_plugin_id, $definitions);
+    $type = $this->_determineType($base_plugin_id, $definitions);
     $definition = $definitions[$type];
     // Check whether this type is an extension of another one and compile it.
     if (isset($definition['type'])) {
@@ -170,12 +170,12 @@ protected function getDefinitionWithReplacements($base_plugin_id, array $replace
 
       // Replace dynamic portions of the definition type.
       if (!empty($replacements) && strpos($definition['type'], ']')) {
-        $sub_type = $this->determineType($this->replaceName($definition['type'], $replacements), $definitions);
+        $sub_type = $this->_determineType($this->replaceName($definition['type'], $replacements), $definitions);
         // Merge the newly determined subtype definition with the original
         // definition.
         $definition = NestedArray::mergeDeepArray([$definitions[$sub_type], $definition], TRUE);
-        $type = "$type||$sub_type";
       }
+
       // Unset type so we try the merge only once per type.
       unset($definition['type']);
       $this->definitions[$type] = $definition;
@@ -192,7 +192,7 @@ protected function getDefinitionWithReplacements($base_plugin_id, array $replace
    * {@inheritdoc}
    */
   public function getDefinition($base_plugin_id, $exception_on_invalid = TRUE) {
-    return $this->getDefinitionWithReplacements($base_plugin_id, [], $exception_on_invalid);
+    return $this->_getDefinitionWithReplacements($base_plugin_id, [], $exception_on_invalid);
   }
 
   /**
diff --git a/core/lib/Drupal/Core/Config/TypedConfigManagerInterface.php b/core/lib/Drupal/Core/Config/TypedConfigManagerInterface.php
index 032c6b0..dcd8584 100644
--- a/core/lib/Drupal/Core/Config/TypedConfigManagerInterface.php
+++ b/core/lib/Drupal/Core/Config/TypedConfigManagerInterface.php
@@ -17,7 +17,7 @@
  * @see hook_config_schema_info_alter()
  * @see https://www.drupal.org/node/1905070
  */
-interface TypedConfigManagerInterface extends TypedDataManagerInterface {
+Interface TypedConfigManagerInterface extends TypedDataManagerInterface {
 
   /**
    * Gets typed configuration data.
diff --git a/core/lib/Drupal/Core/Controller/ControllerBase.php b/core/lib/Drupal/Core/Controller/ControllerBase.php
index db24038..544e247 100644
--- a/core/lib/Drupal/Core/Controller/ControllerBase.php
+++ b/core/lib/Drupal/Core/Controller/ControllerBase.php
@@ -113,13 +113,6 @@
   protected $formBuilder;
 
   /**
-   * The logger factory.
-   *
-   * @var \Psr\Log\LoggerInterface
-   */
-  protected $loggerFactory;
-
-  /**
    * {@inheritdoc}
    */
   public static function create(ContainerInterface $container) {
@@ -290,23 +283,6 @@ protected function languageManager() {
   }
 
   /**
-   * Returns a channel logger object.
-   *
-   * @param string $channel
-   *   The name of the channel. Can be any string, but the general practice is
-   *   to use the name of the subsystem calling this.
-   *
-   * @return \Psr\Log\LoggerInterface
-   *   The logger for this channel.
-   */
-  protected function getLogger($channel) {
-    if (!$this->loggerFactory) {
-      $this->loggerFactory = $this->container()->get('logger.factory');
-    }
-    return $this->loggerFactory->get($channel);
-  }
-
-  /**
    * Returns the service container.
    *
    * This method is marked private to prevent sub-classes from retrieving
diff --git a/core/lib/Drupal/Core/Controller/TitleResolverInterface.php b/core/lib/Drupal/Core/Controller/TitleResolverInterface.php
index cbc49d5..fa72e11 100644
--- a/core/lib/Drupal/Core/Controller/TitleResolverInterface.php
+++ b/core/lib/Drupal/Core/Controller/TitleResolverInterface.php
@@ -4,7 +4,6 @@
  * @file
  * Contains \Drupal\Core\Controller\TitleResolverInterface.
  */
-
 namespace Drupal\Core\Controller;
 
 use Symfony\Component\Routing\Route;
diff --git a/core/lib/Drupal/Core/Database/Log.php b/core/lib/Drupal/Core/Database/Log.php
index ffcf03e..e45a3be 100644
--- a/core/lib/Drupal/Core/Database/Log.php
+++ b/core/lib/Drupal/Core/Database/Log.php
@@ -136,9 +136,7 @@ public function log(StatementInterface $statement, $args, $time) {
    * climbing logic very simple, and handles the variable stack depth caused by
    * the query builders.
    *
-   * See the @link http://php.net/debug_backtrace debug_backtrace() @endlink
-   * function.
-   *
+   * @link http://www.php.net/debug_backtrace
    * @return
    *   This method returns a stack trace entry similar to that generated by
    *   debug_backtrace(). However, it flattens the trace entry and the trace
diff --git a/core/lib/Drupal/Core/Datetime/DateFormatter.php b/core/lib/Drupal/Core/Datetime/DateFormatter.php
index a027e4d..f6227ee8 100644
--- a/core/lib/Drupal/Core/Datetime/DateFormatter.php
+++ b/core/lib/Drupal/Core/Datetime/DateFormatter.php
@@ -206,15 +206,10 @@ public function formatDiff($from, $to, $options = array()) {
       'granularity' => 2,
       'langcode' => NULL,
       'strict' => TRUE,
-      'return_as_object' => FALSE,
     );
 
     if ($options['strict'] && $from > $to) {
-      $string = $this->t('0 seconds');
-      if ($options['return_as_object']) {
-        return new FormattedDateDiff($string, 0);
-      }
-      return $string;
+      return $this->t('0 seconds');
     }
 
     $date_time_from = new \DateTime();
@@ -231,7 +226,6 @@ public function formatDiff($from, $to, $options = array()) {
     // We loop over the keys provided by \DateInterval explicitly. Since we
     // don't take the "invert" property into account, the resulting output value
     // will always be positive.
-    $max_age = 1e99;
     foreach (array('y', 'm', 'd', 'h', 'i', 's') as $value) {
       if ($interval->$value > 0) {
         // Switch over the keys to call formatPlural() explicitly with literal
@@ -239,12 +233,10 @@ public function formatDiff($from, $to, $options = array()) {
         switch ($value) {
           case 'y':
             $interval_output = $this->formatPlural($interval->y, '1 year', '@count years', array(), array('langcode' => $options['langcode']));
-            $max_age = min($max_age, 365*86400);
             break;
 
           case 'm':
             $interval_output = $this->formatPlural($interval->m, '1 month', '@count months', array(), array('langcode' => $options['langcode']));
-            $max_age = min($max_age, 30*86400);
             break;
 
           case 'd':
@@ -257,12 +249,10 @@ public function formatDiff($from, $to, $options = array()) {
               $interval_output .= $this->formatPlural($weeks, '1 week', '@count weeks', array(), array('langcode' => $options['langcode']));
               $days -= $weeks * 7;
               $granularity--;
-              $max_age = min($max_age, 7*86400);
             }
 
             if ((!$output || $weeks > 0) && $granularity > 0 && $days > 0) {
               $interval_output .= ($interval_output ? ' ' : '') . $this->formatPlural($days, '1 day', '@count days', array(), array('langcode' => $options['langcode']));
-              $max_age = min($max_age, 86400);
             }
             else {
               // If we did not output days, set the granularity to 0 so that we
@@ -273,17 +263,14 @@ public function formatDiff($from, $to, $options = array()) {
 
           case 'h':
             $interval_output = $this->formatPlural($interval->h, '1 hour', '@count hours', array(), array('langcode' => $options['langcode']));
-            $max_age = min($max_age, 3600);
             break;
 
           case 'i':
             $interval_output = $this->formatPlural($interval->i, '1 minute', '@count minutes', array(), array('langcode' => $options['langcode']));
-            $max_age = min($max_age, 60);
             break;
 
           case 's':
             $interval_output = $this->formatPlural($interval->s, '1 second', '@count seconds', array(), array('langcode' => $options['langcode']));
-            $max_age = min($max_age, 1);
             break;
 
         }
@@ -303,11 +290,6 @@ public function formatDiff($from, $to, $options = array()) {
 
     if (empty($output)) {
       $output = $this->t('0 seconds');
-      $max_age = 0;
-    }
-
-    if ($options['return_as_object']) {
-      return new FormattedDateDiff($output, $max_age);
     }
 
     return $output;
diff --git a/core/lib/Drupal/Core/Datetime/DateFormatterInterface.php b/core/lib/Drupal/Core/Datetime/DateFormatterInterface.php
index e936855..1863216 100644
--- a/core/lib/Drupal/Core/Datetime/DateFormatterInterface.php
+++ b/core/lib/Drupal/Core/Datetime/DateFormatterInterface.php
@@ -107,10 +107,8 @@ public function getSampleDateFormats($langcode = NULL, $timestamp = NULL, $timez
    *     before the current request time, the result string will be "0 seconds".
    *     If FALSE and $timestamp is before the current request time, the result
    *     string will be the formatted time difference.
-   *   - return_as_object: A Boolean value whether to return a FormattedDateDiff
-   *     object.
    *
-   * @return string|\Drupal\Core\Datetime\FormattedDateDiff
+   * @return string
    *   A translated string representation of the difference between the given
    *   timestamp and the current request time. This interval is always positive.
    *
@@ -137,10 +135,8 @@ public function formatTimeDiffUntil($timestamp, $options = array());
    *     after the current request time, the result string will be "0 seconds".
    *     If FALSE and $timestamp is after the current request time, the result
    *     string will be the formatted time difference.
-   *   - return_as_object: A Boolean value whether to return a FormattedDateDiff
-   *     object.
    *
-   * @return string|\Drupal\Core\Datetime\FormattedDateDiff
+   * @return string
    *   A translated string representation of the difference between the given
    *   timestamp and the current request time. This interval is always positive.
    *
@@ -168,10 +164,8 @@ public function formatTimeDiffSince($timestamp, $options = array());
    *     can be after the $to timestamp. If TRUE (default) and $from is after
    *     $to, the result string will be "0 seconds". If FALSE and $from is
    *     after $to, the result string will be the formatted time difference.
-   *   - return_as_object: A Boolean value whether to return a FormattedDateDiff
-   *     object.
    *
-   * @return string|\Drupal\Core\Datetime\FormattedDateDiff
+   * @return string
    *   A translated string representation of the interval. This interval is
    *   always positive.
    *
diff --git a/core/lib/Drupal/Core/Datetime/DateHelper.php b/core/lib/Drupal/Core/Datetime/DateHelper.php
index 0b04906..4cfc746 100644
--- a/core/lib/Drupal/Core/Datetime/DateHelper.php
+++ b/core/lib/Drupal/Core/Datetime/DateHelper.php
@@ -14,7 +14,6 @@
  * translation should be hard-coded and wrapped in t() so the translation system
  * will be able to process them.
  */
-
 namespace Drupal\Core\Datetime;
 
 /**
diff --git a/core/lib/Drupal/Core/Datetime/DrupalDateTime.php b/core/lib/Drupal/Core/Datetime/DrupalDateTime.php
index 340edf6..a5f196d 100644
--- a/core/lib/Drupal/Core/Datetime/DrupalDateTime.php
+++ b/core/lib/Drupal/Core/Datetime/DrupalDateTime.php
@@ -4,7 +4,6 @@
  * @file
  * Contains \Drupal\Core\Datetime\DrupalDateTime.
  */
-
 namespace Drupal\Core\Datetime;
 
 use Drupal\Component\Datetime\DateTimePlus;
diff --git a/core/lib/Drupal/Core/Datetime/FormattedDateDiff.php b/core/lib/Drupal/Core/Datetime/FormattedDateDiff.php
deleted file mode 100644
index 0998a95..0000000
--- a/core/lib/Drupal/Core/Datetime/FormattedDateDiff.php
+++ /dev/null
@@ -1,77 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\Core\Datetime\FormattedDateDiff.
- */
-
-namespace Drupal\Core\Datetime;
-
-use Drupal\Core\Cache\CacheableDependencyInterface;
-use Drupal\Core\Cache\UnchangingCacheableDependencyTrait;
-use Drupal\Core\Render\RenderableInterface;
-
-/**
- * Contains a formatted time difference.
- */
-class FormattedDateDiff implements RenderableInterface, CacheableDependencyInterface {
-
-  use UnchangingCacheableDependencyTrait;
-
-  /**
-   * The actual formatted time difference.
-   *
-   * @var string
-   */
-  protected $string;
-
-  /**
-   * The maximum time in seconds that this string may be cached.
-   *
-   * Let's say the time difference is 1 day 1 hour. In this case, we can cache
-   * it until now + 1 hour, so maxAge is 3600 seconds.
-   *
-   * @var int
-   */
-  protected $maxAge;
-
-  /**
-   * Creates a new FormattedDateDiff instance.
-   *
-   * @param string $string
-   *   The formatted time difference.
-   * @param int $max_age
-   *   The maximum time in seconds that this string may be cached.
-   */
-  public function __construct($string, $max_age) {
-    $this->string = $string;
-    $this->maxAge = $max_age;
-  }
-
-  /**
-   * @return string
-   */
-  public function getString() {
-    return $this->string;
-  }
-
-  /**
-   * @return int
-   */
-  public function getMaxAge() {
-    return $this->maxAge;
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function toRenderable() {
-    return [
-      '#markup' => $this->string,
-      '#cache' => [
-        'max-age' => $this->maxAge,
-      ],
-    ];
-  }
-
-}
diff --git a/core/lib/Drupal/Core/DependencyInjection/Compiler/RegisterLazyRouteEnhancers.php b/core/lib/Drupal/Core/DependencyInjection/Compiler/RegisterLazyRouteEnhancers.php
index 77be654..5f6c280 100644
--- a/core/lib/Drupal/Core/DependencyInjection/Compiler/RegisterLazyRouteEnhancers.php
+++ b/core/lib/Drupal/Core/DependencyInjection/Compiler/RegisterLazyRouteEnhancers.php
@@ -5,6 +5,7 @@
  * Contains \Drupal\Core\DependencyInjection\Compiler\RegisterLazyRouteEnhancers.
  */
 
+
 namespace Drupal\Core\DependencyInjection\Compiler;
 
 use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
diff --git a/core/lib/Drupal/Core/DependencyInjection/Compiler/RegisterLazyRouteFilters.php b/core/lib/Drupal/Core/DependencyInjection/Compiler/RegisterLazyRouteFilters.php
index 7f37eb4..ad41e18 100644
--- a/core/lib/Drupal/Core/DependencyInjection/Compiler/RegisterLazyRouteFilters.php
+++ b/core/lib/Drupal/Core/DependencyInjection/Compiler/RegisterLazyRouteFilters.php
@@ -5,6 +5,7 @@
  * Contains \Drupal\Core\DependencyInjection\Compiler\RegisterLazyRouteFilters.
  */
 
+
 namespace Drupal\Core\DependencyInjection\Compiler;
 
 use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
diff --git a/core/lib/Drupal/Core/DrupalKernel.php b/core/lib/Drupal/Core/DrupalKernel.php
index b608ddc..cfaf10c 100644
--- a/core/lib/Drupal/Core/DrupalKernel.php
+++ b/core/lib/Drupal/Core/DrupalKernel.php
@@ -440,6 +440,11 @@ public function boot() {
     // Initialize the container.
     $this->initializeContainer();
 
+    // Ensure mt_rand() is reseeded to prevent random values from one page load
+    // being exploited to predict random values in subsequent page loads.
+    $seed = unpack("L", Crypt::randomBytes(4));
+    mt_srand($seed[1]);
+
     $this->booted = TRUE;
 
     return $this;
diff --git a/core/lib/Drupal/Core/Entity/ContentEntityBase.php b/core/lib/Drupal/Core/Entity/ContentEntityBase.php
index 9e83814..1e198fe 100644
--- a/core/lib/Drupal/Core/Entity/ContentEntityBase.php
+++ b/core/lib/Drupal/Core/Entity/ContentEntityBase.php
@@ -9,11 +9,9 @@
 
 use Drupal\Component\Utility\SafeMarkup;
 use Drupal\Core\Entity\Plugin\DataType\EntityReference;
-use Drupal\Core\Field\BaseFieldDefinition;
 use Drupal\Core\Language\Language;
 use Drupal\Core\Language\LanguageInterface;
 use Drupal\Core\Session\AccountInterface;
-use Drupal\Core\StringTranslation\TranslatableMarkup;
 use Drupal\Core\TypedData\TypedDataInterface;
 
 /**
@@ -1119,64 +1117,6 @@ protected function getEntityKey($key) {
   /**
    * {@inheritdoc}
    */
-  public static function baseFieldDefinitions(EntityTypeInterface $entity_type) {
-    $fields = [];
-    if ($entity_type->hasKey('id')) {
-      $fields[$entity_type->getKey('id')] = BaseFieldDefinition::create('integer')
-        ->setLabel(new TranslatableMarkup('ID'))
-        ->setReadOnly(TRUE)
-        ->setSetting('unsigned', TRUE);
-    }
-    if ($entity_type->hasKey('uuid')) {
-      $fields[$entity_type->getKey('uuid')] = BaseFieldDefinition::create('uuid')
-        ->setLabel(new TranslatableMarkup('UUID'))
-        ->setReadOnly(TRUE);
-    }
-    if ($entity_type->hasKey('revision')) {
-      $fields[$entity_type->getKey('revision')] = BaseFieldDefinition::create('integer')
-        ->setLabel(new TranslatableMarkup('Revision ID'))
-        ->setReadOnly(TRUE)
-        ->setSetting('unsigned', TRUE);
-    }
-    if ($entity_type->hasKey('langcode')) {
-      $fields[$entity_type->getKey('langcode')] = BaseFieldDefinition::create('language')
-        ->setLabel(new TranslatableMarkup('Language'))
-        ->setDisplayOptions('view', [
-          'type' => 'hidden',
-        ])
-        ->setDisplayOptions('form', [
-          'type' => 'language_select',
-          'weight' => 2,
-        ]);
-      if ($entity_type->isRevisionable()) {
-        $fields[$entity_type->getKey('langcode')]->setRevisionable(TRUE);
-      }
-      if ($entity_type->isTranslatable()) {
-        $fields[$entity_type->getKey('langcode')]->setTranslatable(TRUE);
-      }
-    }
-    if ($entity_type->hasKey('bundle')) {
-      if ($bundle_entity_type_id = $entity_type->getBundleEntityType()) {
-        $fields[$entity_type->getKey('bundle')] = BaseFieldDefinition::create('entity_reference')
-          ->setLabel($entity_type->getBundleLabel())
-          ->setSetting('target_type', $bundle_entity_type_id)
-          ->setRequired(TRUE)
-          ->setReadOnly(TRUE);
-      }
-      else {
-        $fields[$entity_type->getKey('bundle')] = BaseFieldDefinition::create('string')
-          ->setLabel($entity_type->getBundleLabel())
-          ->setRequired(TRUE)
-          ->setReadOnly(TRUE);
-      }
-    }
-
-    return $fields;
-  }
-
-  /**
-   * {@inheritdoc}
-   */
   public static function bundleFieldDefinitions(EntityTypeInterface $entity_type, $bundle, array $base_field_definitions) {
     return array();
   }
diff --git a/core/lib/Drupal/Core/Entity/EntityDefinitionUpdateManager.php b/core/lib/Drupal/Core/Entity/EntityDefinitionUpdateManager.php
index a61d385..c943b95 100644
--- a/core/lib/Drupal/Core/Entity/EntityDefinitionUpdateManager.php
+++ b/core/lib/Drupal/Core/Entity/EntityDefinitionUpdateManager.php
@@ -53,14 +53,15 @@ public function getChangeSummary() {
       // Process entity type definition changes.
       if (!empty($change_list['entity_type'])) {
         $entity_type = $this->entityManager->getDefinition($entity_type_id);
+        $t_args = array('%entity_type' => $entity_type->getLabel());
 
         switch ($change_list['entity_type']) {
           case static::DEFINITION_CREATED:
-            $summary[$entity_type_id][] = $this->t('The %entity_type entity type needs to be installed.', ['%entity_type' => $entity_type->getLabel()]);
+            $summary[$entity_type_id][] = $this->t('Create the %entity_type entity type.', $t_args);
             break;
 
           case static::DEFINITION_UPDATED:
-            $summary[$entity_type_id][] = $this->t('The %entity_type entity type needs to be updated.', ['%entity_type' => $entity_type->getLabel()]);
+            $summary[$entity_type_id][] = $this->t('Update the %entity_type entity type.', $t_args);
             break;
         }
       }
@@ -73,15 +74,15 @@ public function getChangeSummary() {
         foreach ($change_list['field_storage_definitions'] as $field_name => $change) {
           switch ($change) {
             case static::DEFINITION_CREATED:
-              $summary[$entity_type_id][] = $this->t('The %field_name field needs to be installed.', ['%field_name' => $storage_definitions[$field_name]->getLabel()]);
+              $summary[$entity_type_id][] = $this->t('Create the %field_name field.', array('%field_name' => $storage_definitions[$field_name]->getLabel()));
               break;
 
             case static::DEFINITION_UPDATED:
-              $summary[$entity_type_id][] = $this->t('The %field_name field needs to be updated.', ['%field_name' => $storage_definitions[$field_name]->getLabel()]);
+              $summary[$entity_type_id][] = $this->t('Update the %field_name field.', array('%field_name' => $storage_definitions[$field_name]->getLabel()));
               break;
 
             case static::DEFINITION_DELETED:
-              $summary[$entity_type_id][] = $this->t('The %field_name field needs to be uninstalled.', ['%field_name' => $original_storage_definitions[$field_name]->getLabel()]);
+              $summary[$entity_type_id][] = $this->t('Delete the %field_name field.', array('%field_name' => $original_storage_definitions[$field_name]->getLabel()));
               break;
           }
         }
diff --git a/core/lib/Drupal/Core/Entity/EntityForm.php b/core/lib/Drupal/Core/Entity/EntityForm.php
index fd20764..8d91948 100644
--- a/core/lib/Drupal/Core/Entity/EntityForm.php
+++ b/core/lib/Drupal/Core/Entity/EntityForm.php
@@ -358,19 +358,7 @@ public function getEntityFromRouteMatch(RouteMatchInterface $route_match, $entit
       $entity = $route_match->getParameter($entity_type_id);
     }
     else {
-      $values = [];
-      // If the entity has bundles, fetch it from the route match.
-      $entity_type = $this->entityTypeManager->getDefinition($entity_type_id);
-      if ($bundle_key = $entity_type->getKey('bundle')) {
-        if (($bundle_entity_type_id = $entity_type->getBundleEntityType()) && $route_match->getRawParameter($bundle_entity_type_id)) {
-          $values[$bundle_key] = $route_match->getParameter($bundle_entity_type_id)->id();
-        }
-        elseif ($route_match->getRawParameter($bundle_key)) {
-          $values[$bundle_key] = $route_match->getParameter($bundle_key);
-        }
-      }
-
-      $entity = $this->entityTypeManager->getStorage($entity_type_id)->create($values);
+      $entity = $this->entityManager->getStorage($entity_type_id)->create([]);
     }
 
     return $entity;
diff --git a/core/lib/Drupal/Core/Entity/EntityWithPluginCollectionInterface.php b/core/lib/Drupal/Core/Entity/EntityWithPluginCollectionInterface.php
index eb4ddd8..3cc13e0 100644
--- a/core/lib/Drupal/Core/Entity/EntityWithPluginCollectionInterface.php
+++ b/core/lib/Drupal/Core/Entity/EntityWithPluginCollectionInterface.php
@@ -7,8 +7,6 @@
 
 namespace Drupal\Core\Entity;
 
-use Drupal\Core\Plugin\ObjectWithPluginCollectionInterface;
-
 /**
  * Provides an interface for an object using a plugin collection.
  *
@@ -16,6 +14,15 @@
  *
  * @ingroup plugin_api
  */
-interface EntityWithPluginCollectionInterface extends EntityInterface, ObjectWithPluginCollectionInterface {
+interface EntityWithPluginCollectionInterface extends EntityInterface {
+
+  /**
+   * Gets the plugin collections used by this entity.
+   *
+   * @return \Drupal\Component\Plugin\LazyPluginCollection[]
+   *   An array of plugin collections, keyed by the property name they use to
+   *   store their configuration.
+   */
+  public function getPluginCollections();
 
 }
diff --git a/core/lib/Drupal/Core/Entity/Query/Sql/pgsql/QueryFactory.php b/core/lib/Drupal/Core/Entity/Query/Sql/pgsql/QueryFactory.php
index 6aeba41..fb43f13 100644
--- a/core/lib/Drupal/Core/Entity/Query/Sql/pgsql/QueryFactory.php
+++ b/core/lib/Drupal/Core/Entity/Query/Sql/pgsql/QueryFactory.php
@@ -5,6 +5,7 @@
  * Contains \Drupal\Core\Entity\Query\Sql\pgsql\QueryFactory.
  */
 
+
 namespace Drupal\Core\Entity\Query\Sql\pgsql;
 
 use Drupal\Core\Entity\Query\Sql\QueryFactory as BaseQueryFactory;
diff --git a/core/lib/Drupal/Core/EventSubscriber/AcceptNegotiation406.php b/core/lib/Drupal/Core/EventSubscriber/AcceptNegotiation406.php
index 296c874..468ab9f 100644
--- a/core/lib/Drupal/Core/EventSubscriber/AcceptNegotiation406.php
+++ b/core/lib/Drupal/Core/EventSubscriber/AcceptNegotiation406.php
@@ -34,7 +34,7 @@ public function onViewDetect406(GetResponseForControllerResultEvent $event) {
     // not HTML though we can also assume that the requested format is invalid
     // so we provide a 406 response.
     if (is_array($result) && $request->getRequestFormat() !== 'html') {
-      throw new NotAcceptableHttpException('Not acceptable format: ' . $request->getRequestFormat());
+      throw new NotAcceptableHttpException('Not acceptable');
     }
   }
 
diff --git a/core/lib/Drupal/Core/EventSubscriber/CustomPageExceptionHtmlSubscriber.php b/core/lib/Drupal/Core/EventSubscriber/CustomPageExceptionHtmlSubscriber.php
index 0aef10c..8422db2 100644
--- a/core/lib/Drupal/Core/EventSubscriber/CustomPageExceptionHtmlSubscriber.php
+++ b/core/lib/Drupal/Core/EventSubscriber/CustomPageExceptionHtmlSubscriber.php
@@ -14,7 +14,6 @@
 use Symfony\Component\HttpFoundation\Response;
 use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent;
 use Symfony\Component\HttpKernel\HttpKernelInterface;
-use Symfony\Component\Routing\Matcher\UrlMatcherInterface;
 
 /**
  * Exception subscriber for handling core custom HTML error pages.
@@ -29,22 +28,30 @@ class CustomPageExceptionHtmlSubscriber extends DefaultExceptionHtmlSubscriber {
   protected $configFactory;
 
   /**
+   * The page alias manager.
+   *
+   * @var \Drupal\Core\Path\AliasManagerInterface
+   */
+  protected $aliasManager;
+
+  /**
    * Constructs a new CustomPageExceptionHtmlSubscriber.
    *
    * @param \Drupal\Core\Config\ConfigFactoryInterface $config_factory
    *   The configuration factory.
+   * @param \Drupal\Core\Path\AliasManagerInterface $alias_manager
+   *   The alias manager service.
    * @param \Symfony\Component\HttpKernel\HttpKernelInterface $http_kernel
    *   The HTTP Kernel service.
    * @param \Psr\Log\LoggerInterface $logger
    *   The logger service.
    * @param \Drupal\Core\Routing\RedirectDestinationInterface $redirect_destination
    *   The redirect destination service.
-   * @param \Symfony\Component\Routing\Matcher\UrlMatcherInterface $access_unaware_router
-   *   A router implementation which does not check access.
    */
-  public function __construct(ConfigFactoryInterface $config_factory, HttpKernelInterface $http_kernel, LoggerInterface $logger, RedirectDestinationInterface $redirect_destination, UrlMatcherInterface $access_unaware_router) {
-    parent::__construct($http_kernel, $logger, $redirect_destination, $access_unaware_router);
+  public function __construct(ConfigFactoryInterface $config_factory, AliasManagerInterface $alias_manager, HttpKernelInterface $http_kernel, LoggerInterface $logger, RedirectDestinationInterface $redirect_destination) {
+    parent::__construct($http_kernel, $logger, $redirect_destination);
     $this->configFactory = $config_factory;
+    $this->aliasManager = $alias_manager;
   }
 
   /**
@@ -58,20 +65,16 @@ protected static function getPriority() {
    * {@inheritdoc}
    */
   public function on403(GetResponseForExceptionEvent $event) {
-    $custom_403_path = $this->configFactory->get('system.site')->get('page.403');
-    if (!empty($custom_403_path)) {
-      $this->makeSubrequest($event, $custom_403_path, Response::HTTP_FORBIDDEN);
-    }
+    $path = $this->aliasManager->getPathByAlias($this->configFactory->get('system.site')->get('page.403'));
+    $this->makeSubrequest($event, trim($path, '/'), Response::HTTP_FORBIDDEN);
   }
 
   /**
    * {@inheritdoc}
    */
   public function on404(GetResponseForExceptionEvent $event) {
-    $custom_404_path = $this->configFactory->get('system.site')->get('page.404');
-    if (!empty($custom_404_path)) {
-      $this->makeSubrequest($event, $custom_404_path, Response::HTTP_NOT_FOUND);
-    }
+    $path = $this->aliasManager->getPathByAlias($this->configFactory->get('system.site')->get('page.404'));
+    $this->makeSubrequest($event, trim($path, '/'), Response::HTTP_NOT_FOUND);
   }
 
 }
diff --git a/core/lib/Drupal/Core/EventSubscriber/DefaultExceptionHtmlSubscriber.php b/core/lib/Drupal/Core/EventSubscriber/DefaultExceptionHtmlSubscriber.php
index bd9a6f3..46336e0 100644
--- a/core/lib/Drupal/Core/EventSubscriber/DefaultExceptionHtmlSubscriber.php
+++ b/core/lib/Drupal/Core/EventSubscriber/DefaultExceptionHtmlSubscriber.php
@@ -7,14 +7,16 @@
 
 namespace Drupal\Core\EventSubscriber;
 
+use Drupal\Core\Routing\AccessAwareRouterInterface;
 use Drupal\Core\Routing\RedirectDestinationInterface;
+use Drupal\Core\Url;
 use Drupal\Core\Utility\Error;
 use Psr\Log\LoggerInterface;
+use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\HttpFoundation\Response;
 use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent;
 use Symfony\Component\HttpKernel\HttpKernelInterface;
 use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface;
-use Symfony\Component\Routing\Matcher\UrlMatcherInterface;
 
 /**
  * Exception subscriber for handling core default HTML error pages.
@@ -43,13 +45,6 @@ class DefaultExceptionHtmlSubscriber extends HttpExceptionSubscriberBase {
   protected $redirectDestination;
 
   /**
-   * A router implementation which does not check access.
-   *
-   * @var \Symfony\Component\Routing\Matcher\UrlMatcherInterface
-   */
-  protected $accessUnawareRouter;
-
-  /**
    * Constructs a new DefaultExceptionHtmlSubscriber.
    *
    * @param \Symfony\Component\HttpKernel\HttpKernelInterface $http_kernel
@@ -58,14 +53,11 @@ class DefaultExceptionHtmlSubscriber extends HttpExceptionSubscriberBase {
    *   The logger service.
    * @param \Drupal\Core\Routing\RedirectDestinationInterface $redirect_destination
    *   The redirect destination service.
-   * @param \Symfony\Component\Routing\Matcher\UrlMatcherInterface $access_unaware_router
-   *   A router implementation which does not check access.
    */
-  public function __construct(HttpKernelInterface $http_kernel, LoggerInterface $logger, RedirectDestinationInterface $redirect_destination, UrlMatcherInterface $access_unaware_router) {
+  public function __construct(HttpKernelInterface $http_kernel, LoggerInterface $logger, RedirectDestinationInterface $redirect_destination) {
     $this->httpKernel = $http_kernel;
     $this->logger = $logger;
     $this->redirectDestination = $redirect_destination;
-    $this->accessUnawareRouter = $access_unaware_router;
   }
 
   /**
@@ -91,7 +83,7 @@ protected function getHandledFormats() {
    *   The event to process.
    */
   public function on401(GetResponseForExceptionEvent $event) {
-    $this->makeSubrequest($event, '/system/401', Response::HTTP_UNAUTHORIZED);
+    $this->makeSubrequest($event, Url::fromRoute('system.401')->toString(), Response::HTTP_UNAUTHORIZED);
   }
 
   /**
@@ -101,7 +93,7 @@ public function on401(GetResponseForExceptionEvent $event) {
    *   The event to process.
    */
   public function on403(GetResponseForExceptionEvent $event) {
-    $this->makeSubrequest($event, '/system/403', Response::HTTP_FORBIDDEN);
+    $this->makeSubrequest($event, Url::fromRoute('system.403')->toString(), Response::HTTP_FORBIDDEN);
   }
 
   /**
@@ -111,7 +103,7 @@ public function on403(GetResponseForExceptionEvent $event) {
    *   The event to process.
    */
   public function on404(GetResponseForExceptionEvent $event) {
-    $this->makeSubrequest($event, '/system/404', Response::HTTP_NOT_FOUND);
+    $this->makeSubrequest($event, Url::fromRoute('system.404')->toString(), Response::HTTP_NOT_FOUND);
   }
 
   /**
@@ -128,46 +120,54 @@ protected function makeSubrequest(GetResponseForExceptionEvent $event, $url, $st
     $request = $event->getRequest();
     $exception = $event->getException();
 
-    try {
-      // Reuse the exact same request (so keep the same URL, keep the access
-      // result, the exception, et cetera) but override the routing information.
-      // This means that aside from routing, this is identical to the master
-      // request. This allows us to generate a response that is executed on
-      // behalf of the master request, i.e. for the original URL. This is what
-      // allows us to e.g. generate a 404 response for the original URL; if we
-      // would execute a subrequest with the 404 route's URL, then it'd be
-      // generated for *that* URL, not the *original* URL.
-      $sub_request = clone $request;
-      $sub_request->attributes->add($this->accessUnawareRouter->match($url));
-
-      // Add to query (GET) or request (POST) parameters:
-      // - 'destination' (to ensure e.g. the login form in a 403 response
-      //   redirects to the original URL)
-      // - '_exception_statuscode'
-      $parameters = $sub_request->isMethod('GET') ? $sub_request->query : $sub_request->request;
-      $parameters->add($this->redirectDestination->getAsArray() + ['_exception_statuscode' => $status_code]);
-
-      $response = $this->httpKernel->handle($sub_request, HttpKernelInterface::SUB_REQUEST);
-      // Only 2xx responses should have their status code overridden; any
-      // other status code should be passed on: redirects (3xx), error (5xx)…
-      // @see https://www.drupal.org/node/2603788#comment-10504916
-      if ($response->isSuccessful()) {
-        $response->setStatusCode($status_code);
-      }
+    if (!($url && $url[0] == '/')) {
+      $url = $request->getBasePath() . '/' . $url;
+    }
 
-      // Persist any special HTTP headers that were set on the exception.
-      if ($exception instanceof HttpExceptionInterface) {
-        $response->headers->add($exception->getHeaders());
+    $current_url = $request->getBasePath() . $request->getPathInfo();
+
+    if ($url != $request->getBasePath() . '/' && $url != $current_url) {
+      if ($request->getMethod() === 'POST') {
+        $sub_request = Request::create($url, 'POST', $this->redirectDestination->getAsArray() + ['_exception_statuscode' => $status_code] + $request->request->all(), $request->cookies->all(), [], $request->server->all());
+      }
+      else {
+        $sub_request = Request::create($url, 'GET', $request->query->all() + $this->redirectDestination->getAsArray() + ['_exception_statuscode' => $status_code], $request->cookies->all(), [], $request->server->all());
       }
 
-      $event->setResponse($response);
-    }
-    catch (\Exception $e) {
-      // If an error happened in the subrequest we can't do much else. Instead,
-      // just log it. The DefaultExceptionSubscriber will catch the original
-      // exception and handle it normally.
-      $error = Error::decodeException($e);
-      $this->logger->log($error['severity_level'], '%type: @message in %function (line %line of %file).', $error);
+      try {
+        // Persist the 'exception' attribute to the subrequest.
+        $sub_request->attributes->set('exception', $request->attributes->get('exception'));
+        // Persist the access result attribute to the subrequest, so that the
+        // error page inherits the access result of the master request.
+        $sub_request->attributes->set(AccessAwareRouterInterface::ACCESS_RESULT, $request->attributes->get(AccessAwareRouterInterface::ACCESS_RESULT));
+
+        // Carry over the session to the subrequest.
+        if ($session = $request->getSession()) {
+          $sub_request->setSession($session);
+        }
+
+        $response = $this->httpKernel->handle($sub_request, HttpKernelInterface::SUB_REQUEST);
+        // Only 2xx responses should have their status code overridden; any
+        // other status code should be passed on: redirects (3xx), error (5xx)…
+        // @see https://www.drupal.org/node/2603788#comment-10504916
+        if ($response->isSuccessful()) {
+          $response->setStatusCode($status_code);
+        }
+
+        // Persist any special HTTP headers that were set on the exception.
+        if ($exception instanceof HttpExceptionInterface) {
+          $response->headers->add($exception->getHeaders());
+        }
+
+        $event->setResponse($response);
+      }
+      catch (\Exception $e) {
+        // If an error happened in the subrequest we can't do much else. Instead,
+        // just log it. The DefaultExceptionSubscriber will catch the original
+        // exception and handle it normally.
+        $error = Error::decodeException($e);
+        $this->logger->log($error['severity_level'], '%type: @message in %function (line %line of %file).', $error);
+      }
     }
   }
 
diff --git a/core/lib/Drupal/Core/EventSubscriber/DefaultExceptionSubscriber.php b/core/lib/Drupal/Core/EventSubscriber/DefaultExceptionSubscriber.php
index f36aafc..6f7612a 100644
--- a/core/lib/Drupal/Core/EventSubscriber/DefaultExceptionSubscriber.php
+++ b/core/lib/Drupal/Core/EventSubscriber/DefaultExceptionSubscriber.php
@@ -166,20 +166,6 @@ protected function onJson(GetResponseForExceptionEvent $event) {
   }
 
   /**
-   * Handles an HttpExceptionInterface exception for unknown formats.
-   *
-   * @param \Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent $event
-   *   The event to process.
-   */
-  protected function onFormatUnknown(GetResponseForExceptionEvent $event) {
-    /** @var \Symfony\Component\HttpKernel\Exception\HttpExceptionInterface|\Exception $exception */
-    $exception = $event->getException();
-
-    $response = new Response($exception->getMessage(), $exception->getStatusCode(), $exception->getHeaders());
-    $event->setResponse($response);
-  }
-
-  /**
    * Handles errors for this subscriber.
    *
    * @param \Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent $event
@@ -187,17 +173,11 @@ protected function onFormatUnknown(GetResponseForExceptionEvent $event) {
    */
   public function onException(GetResponseForExceptionEvent $event) {
     $format = $this->getFormat($event->getRequest());
-    $exception = $event->getException();
 
+    // If it's an unrecognized format, assume HTML.
     $method = 'on' . $format;
     if (!method_exists($this, $method)) {
-      if ($exception instanceof HttpExceptionInterface) {
-        $this->onFormatUnknown($event);
-      }
-      else {
-        $this->onHtml($event);
-      }
-      return;
+      $method = 'onHtml';
     }
     $this->$method($event);
   }
diff --git a/core/lib/Drupal/Core/EventSubscriber/FinishResponseSubscriber.php b/core/lib/Drupal/Core/EventSubscriber/FinishResponseSubscriber.php
index f0cf3e1..a373688 100644
--- a/core/lib/Drupal/Core/EventSubscriber/FinishResponseSubscriber.php
+++ b/core/lib/Drupal/Core/EventSubscriber/FinishResponseSubscriber.php
@@ -263,7 +263,7 @@ protected function setResponseCacheable(Response $response, Request $request) {
    *   A response object.
    */
   protected function setCacheControlNoCache(Response $response) {
-    $response->headers->set('Cache-Control', 'no-cache, must-revalidate');
+    $response->headers->set('Cache-Control', 'no-cache, must-revalidate, post-check=0, pre-check=0');
   }
 
   /**
diff --git a/core/lib/Drupal/Core/EventSubscriber/RouterRebuildSubscriber.php b/core/lib/Drupal/Core/EventSubscriber/RouterRebuildSubscriber.php
new file mode 100644
index 0000000..9ada39c
--- /dev/null
+++ b/core/lib/Drupal/Core/EventSubscriber/RouterRebuildSubscriber.php
@@ -0,0 +1,53 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\Core\EventSubscriber\RouterRebuildSubscriber.
+ */
+
+namespace Drupal\Core\EventSubscriber;
+
+use Drupal\Core\Routing\RouteBuilderInterface;
+use Symfony\Component\EventDispatcher\EventSubscriberInterface;
+use Symfony\Component\HttpKernel\Event\PostResponseEvent;
+use Symfony\Component\HttpKernel\KernelEvents;
+
+/**
+ * Rebuilds the router if needed at the end of the request.
+ */
+class RouterRebuildSubscriber implements EventSubscriberInterface {
+
+  /**
+   * @var \Drupal\Core\Routing\RouteBuilderInterface
+   */
+  protected $routeBuilder;
+
+  /**
+   * Constructs the RouterRebuildSubscriber object.
+   *
+   * @param \Drupal\Core\Routing\RouteBuilderInterface $route_builder
+   *   The route builder.
+   */
+  public function __construct(RouteBuilderInterface $route_builder) {
+    $this->routeBuilder = $route_builder;
+  }
+
+  /**
+   * Rebuilds routers if necessary.
+   *
+   * @param \Symfony\Component\HttpKernel\Event\PostResponseEvent $event
+   *   The event object.
+   */
+  public function onKernelTerminate(PostResponseEvent $event) {
+    $this->routeBuilder->rebuildIfNeeded();
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  static function getSubscribedEvents() {
+    $events[KernelEvents::TERMINATE][] = array('onKernelTerminate', 200);
+    return $events;
+  }
+
+}
diff --git a/core/lib/Drupal/Core/Extension/ModuleHandler.php b/core/lib/Drupal/Core/Extension/ModuleHandler.php
index 05f1e4f..b9a9a3e 100644
--- a/core/lib/Drupal/Core/Extension/ModuleHandler.php
+++ b/core/lib/Drupal/Core/Extension/ModuleHandler.php
@@ -90,13 +90,6 @@ class ModuleHandler implements ModuleHandlerInterface {
   protected $root;
 
   /**
-   * A list of module include file keys.
-   *
-   * @var array
-   */
-  protected $includeFileKeys = [];
-
-  /**
    * Constructs a ModuleHandler object.
    *
    * @param string $root
@@ -270,21 +263,14 @@ public function loadInclude($module, $type, $name = NULL) {
     }
 
     $name = $name ?: $module;
-    $key = $type . ':' . $module . ':' . $name;
-    if (isset($this->includeFileKeys[$key])) {
-      return $this->includeFileKeys[$key];
-    }
     if (isset($this->moduleList[$module])) {
       $file = $this->root . '/' . $this->moduleList[$module]->getPath() . "/$name.$type";
       if (is_file($file)) {
         require_once $file;
-        $this->includeFileKeys[$key] = $file;
         return $file;
       }
-      else {
-        $this->includeFileKeys[$key] = FALSE;
-      }
     }
+
     return FALSE;
   }
 
diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/DecimalFormatter.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/DecimalFormatter.php
index ffbfe35..a53e0b9 100644
--- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/DecimalFormatter.php
+++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/DecimalFormatter.php
@@ -52,11 +52,11 @@ public function settingsForm(array $form, FormStateInterface $form_state) {
       '#default_value' => $this->getSetting('decimal_separator'),
       '#weight' => 5,
     );
+    $range = range(0, 10);
     $elements['scale'] = array(
-      '#type' => 'number',
+      '#type' => 'select',
       '#title' => t('Scale', array(), array('context' => 'decimal places')),
-      '#min' => 0,
-      '#max' => 10,
+      '#options' => array_combine($range, $range),
       '#default_value' => $this->getSetting('scale'),
       '#description' => t('The number of digits to the right of the decimal.'),
       '#weight' => 6,
diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/EntityReferenceEntityFormatter.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/EntityReferenceEntityFormatter.php
index 78b62b3..c2f23cf 100644
--- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/EntityReferenceEntityFormatter.php
+++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/EntityReferenceEntityFormatter.php
@@ -7,8 +7,6 @@
 
 namespace Drupal\Core\Field\Plugin\Field\FieldFormatter;
 
-use Drupal\Core\Entity\EntityDisplayRepositoryInterface;
-use Drupal\Core\Entity\EntityTypeManagerInterface;
 use Drupal\Core\Field\FieldDefinitionInterface;
 use Drupal\Core\Field\FieldItemListInterface;
 use Drupal\Core\Form\FormStateInterface;
@@ -38,20 +36,6 @@ class EntityReferenceEntityFormatter extends EntityReferenceFormatterBase implem
   protected $loggerFactory;
 
   /**
-   * The entity type manager.
-   *
-   * @var \Drupal\Core\Entity\EntityTypeManagerInterface
-   */
-  protected $entityTypeManager;
-
-  /**
-   * The entity type manager.
-   *
-   * @var \Drupal\Core\Entity\EntityDisplayRepositoryInterface
-   */
-  protected $entityDisplayRepository;
-
-  /**
    * Constructs a StringFormatter instance.
    *
    * @param string $plugin_id
@@ -70,16 +54,10 @@ class EntityReferenceEntityFormatter extends EntityReferenceFormatterBase implem
    *   Any third party settings settings.
    * @param LoggerChannelFactoryInterface $logger_factory
    *   The logger factory.
-   * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager
-   *   The entity type manager.
-   * @param \Drupal\Core\Entity\EntityDisplayRepositoryInterface $entity_display_repository
-   *   The entity display repository.
    */
-  public function __construct($plugin_id, $plugin_definition, FieldDefinitionInterface $field_definition, array $settings, $label, $view_mode, array $third_party_settings, LoggerChannelFactoryInterface $logger_factory, EntityTypeManagerInterface $entity_type_manager, EntityDisplayRepositoryInterface $entity_display_repository) {
+  public function __construct($plugin_id, $plugin_definition, FieldDefinitionInterface $field_definition, array $settings, $label, $view_mode, array $third_party_settings, LoggerChannelFactoryInterface $logger_factory) {
     parent::__construct($plugin_id, $plugin_definition, $field_definition, $settings, $label, $view_mode, $third_party_settings);
     $this->loggerFactory = $logger_factory;
-    $this->entityTypeManager = $entity_type_manager;
-    $this->entityDisplayRepository = $entity_display_repository;
   }
 
   /**
@@ -94,9 +72,7 @@ public static function create(ContainerInterface $container, array $configuratio
       $configuration['label'],
       $configuration['view_mode'],
       $configuration['third_party_settings'],
-      $container->get('logger.factory'),
-      $container->get('entity_type.manager'),
-      $container->get('entity_display.repository')
+      $container->get('logger.factory')
     );
   }
 
@@ -116,7 +92,7 @@ public static function defaultSettings() {
   public function settingsForm(array $form, FormStateInterface $form_state) {
     $elements['view_mode'] = array(
       '#type' => 'select',
-      '#options' => $this->entityDisplayRepository->getViewModeOptions($this->getFieldSetting('target_type')),
+      '#options' => \Drupal::entityManager()->getViewModeOptions($this->getFieldSetting('target_type')),
       '#title' => t('View mode'),
       '#default_value' => $this->getSetting('view_mode'),
       '#required' => TRUE,
@@ -131,7 +107,7 @@ public function settingsForm(array $form, FormStateInterface $form_state) {
   public function settingsSummary() {
     $summary = array();
 
-    $view_modes = $this->entityDisplayRepository->getViewModeOptions($this->getFieldSetting('target_type'));
+    $view_modes = \Drupal::entityManager()->getViewModeOptions($this->getFieldSetting('target_type'));
     $view_mode = $this->getSetting('view_mode');
     $summary[] = t('Rendered as @mode', array('@mode' => isset($view_modes[$view_mode]) ? $view_modes[$view_mode] : $view_mode));
 
@@ -155,8 +131,7 @@ public function viewElements(FieldItemListInterface $items, $langcode) {
       }
 
       if ($entity->id()) {
-        $view_builder = $this->entityTypeManager->getViewBuilder($entity->getEntityTypeId());
-        $elements[$delta] = $view_builder->view($entity, $view_mode, $entity->language()->getId());
+        $elements[$delta] = entity_view($entity, $view_mode, $entity->language()->getId());
 
         // Add a resource attribute to set the mapping property's value to the
         // entity's url. Since we don't know what the markup of the entity will
diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/TimestampAgoFormatter.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/TimestampAgoFormatter.php
index 110d5ba..a0f61b5 100644
--- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/TimestampAgoFormatter.php
+++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/TimestampAgoFormatter.php
@@ -8,7 +8,6 @@
 namespace Drupal\Core\Field\Plugin\Field\FieldFormatter;
 
 use Drupal\Component\Utility\SafeMarkup;
-use Drupal\Core\Cache\CacheableMetadata;
 use Drupal\Core\Datetime\DateFormatterInterface;
 use Drupal\Core\Field\FieldDefinitionInterface;
 use Drupal\Core\Field\FieldItemListInterface;
@@ -162,12 +161,10 @@ public function viewElements(FieldItemListInterface $items, $langcode) {
         $updated = $this->formatTimestamp($item->value);
       }
       else {
-        $updated = [
-          '#markup' => $this->t('never'),
-        ];
+        $updated = $this->t('never');
       }
 
-      $elements[$delta] = $updated;
+      $elements[$delta] = array('#markup' => $updated);
     }
 
     return $elements;
@@ -179,30 +176,19 @@ public function viewElements(FieldItemListInterface $items, $langcode) {
    * @param int $timestamp
    *   A UNIX timestamp to format.
    *
-   * @return array
+   * @return string
    *   The formatted timestamp string using the past or future format setting.
    */
   protected function formatTimestamp($timestamp) {
     $granularity = $this->getSetting('granularity');
-    $options = [
-      'granularity' => $granularity,
-      'return_as_object' => TRUE,
-    ];
+    $options = ['granularity' => $granularity];
 
     if ($this->request->server->get('REQUEST_TIME') > $timestamp) {
-      $result = $this->dateFormatter->formatTimeDiffSince($timestamp, $options);
-      $build = [
-        '#markup' => SafeMarkup::format($this->getSetting('past_format'), ['@interval' => $result->getString()]),
-      ];
+      return SafeMarkup::format($this->getSetting('past_format'), ['@interval' => $this->dateFormatter->formatTimeDiffSince($timestamp, $options)]);
     }
     else {
-      $result = $this->dateFormatter->formatTimeDiffUntil($timestamp, $options);
-      $build = [
-        '#markup' => SafeMarkup::format($this->getSetting('future_format'), ['@interval' => $result->getString()]),
-      ];
+      return SafeMarkup::format($this->getSetting('future_format'), ['@interval' => $this->dateFormatter->formatTimeDiffUntil($timestamp, $options)]);
     }
-    CacheableMetadata::createFromObject($result)->applyTo($build);
-    return $build;
   }
 
 }
diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/TimestampFormatter.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/TimestampFormatter.php
index 623f24d..afa7586 100644
--- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/TimestampFormatter.php
+++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/TimestampFormatter.php
@@ -126,12 +126,12 @@ public function settingsForm(array $form, FormStateInterface $form_state) {
     $elements['custom_date_format'] = array(
       '#type' => 'textfield',
       '#title' => $this->t('Custom date format'),
-      '#description' => $this->t('See <a href="http://php.net/manual/function.date.php" target="_blank">the documentation for PHP date formats</a>.'),
+      '#description' => $this->t('See <a href=":url" target="_blank">the documentation for PHP date formats</a>.', [':url' => 'http://php.net/manual/function.date.php']),
       '#default_value' => $this->getSetting('custom_date_format') ?: '',
     );
 
     $elements['custom_date_format']['#states']['visible'][] = array(
-      ':input[name="fields[' . $this->fieldDefinition->getName() . '][settings_edit_form][settings][date_format]"]' => array('value' => 'custom'),
+      ':input[name="name="fields[' . $this->fieldDefinition->getName() . '][settings_edit_form][settings][date_format]"]' => array('value' => 'custom'),
     );
 
     $elements['timezone'] = array(
diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/DecimalItem.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/DecimalItem.php
index c8e608e..1f40b29 100644
--- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/DecimalItem.php
+++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/DecimalItem.php
@@ -69,21 +69,20 @@ public function storageSettingsForm(array &$form, FormStateInterface $form_state
     $element = array();
     $settings = $this->getSettings();
 
+    $range = range(10, 32);
     $element['precision'] = array(
-      '#type' => 'number',
+      '#type' => 'select',
       '#title' => t('Precision'),
-      '#min' => 10,
-      '#max' => 32,
+      '#options' => array_combine($range, $range),
       '#default_value' => $settings['precision'],
       '#description' => t('The total number of digits to store in the database, including those to the right of the decimal.'),
       '#disabled' => $has_data,
     );
-
+    $range = range(0, 10);
     $element['scale'] = array(
-      '#type' => 'number',
+      '#type' => 'select',
       '#title' => t('Scale', array(), array('context' => 'decimal places')),
-      '#min' => 0,
-      '#max' => 10,
+      '#options' => array_combine($range, $range),
       '#default_value' => $settings['scale'],
       '#description' => t('The number of digits to the right of the decimal.'),
       '#disabled' => $has_data,
@@ -153,7 +152,7 @@ public static function generateSampleValue(FieldDefinitionInterface $field_defin
     $scale = rand($decimal_digits, $scale);
 
     // @see "Example #1 Calculate a random floating-point number" in
-    // http://php.net/manual/function.mt-getrandmax.php
+    // http://php.net/manual/en/function.mt-getrandmax.php
     $random_decimal = $min + mt_rand() / mt_getrandmax() * ($max - $min);
     $values['value'] = self::truncateDecimal($random_decimal, $scale);
     return $values;
diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/FloatItem.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/FloatItem.php
index 9bc552d..34eebe9 100644
--- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/FloatItem.php
+++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/FloatItem.php
@@ -72,7 +72,7 @@ public static function generateSampleValue(FieldDefinitionInterface $field_defin
     $max = is_numeric($settings['max']) ?: pow(10, ($precision - $scale)) - 1;
     $min = is_numeric($settings['min']) ?: -pow(10, ($precision - $scale)) + 1;
     // @see "Example #1 Calculate a random floating-point number" in
-    // http://php.net/manual/function.mt-getrandmax.php
+    // http://php.net/manual/en/function.mt-getrandmax.php
     $random_decimal = $min + mt_rand() / mt_getrandmax() * ($max - $min);
     $values['value'] = self::truncateDecimal($random_decimal, $scale);
     return $values;
diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/OptionsSelectWidget.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/OptionsSelectWidget.php
index b846988..5c68a8f 100644
--- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/OptionsSelectWidget.php
+++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/OptionsSelectWidget.php
@@ -37,7 +37,7 @@ public function formElement(FieldItemListInterface $items, $delta, array $elemen
     $element += array(
       '#type' => 'select',
       '#options' => $this->getOptions($items->getEntity()),
-      '#default_value' => $this->getSelectedOptions($items),
+      '#default_value' => $this->getSelectedOptions($items, $delta),
       // Do not display a 'multiple' select box if there is only one option.
       '#multiple' => $this->multiple && count($this->options) > 1,
     );
diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/OptionsWidgetBase.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/OptionsWidgetBase.php
index a902921..0235f3f 100644
--- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/OptionsWidgetBase.php
+++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/OptionsWidgetBase.php
@@ -150,11 +150,13 @@ protected function getOptions(FieldableEntityInterface $entity) {
    *
    * @param \Drupal\Core\Field\FieldItemListInterface $items
    *   The field values.
+   * @param int $delta
+   *   (optional) The delta of the item to get options for. Defaults to 0.
    *
    * @return array
    *   The array of corresponding selected options.
    */
-  protected function getSelectedOptions(FieldItemListInterface $items) {
+  protected function getSelectedOptions(FieldItemListInterface $items, $delta = 0) {
     // We need to check against a flat list of options.
     $flat_options = OptGroup::flattenOptions($this->getOptions($items->getEntity()));
 
diff --git a/core/lib/Drupal/Core/Field/WidgetBase.php b/core/lib/Drupal/Core/Field/WidgetBase.php
index b50dfe8..c99dee5 100644
--- a/core/lib/Drupal/Core/Field/WidgetBase.php
+++ b/core/lib/Drupal/Core/Field/WidgetBase.php
@@ -567,14 +567,4 @@ protected function isDefaultValueWidget(FormStateInterface $form_state) {
     return (bool) $form_state->get('default_value_widget');
   }
 
-  /**
-   * Returns the filtered field description.
-   *
-   * @return \Drupal\Core\Field\FieldFilteredMarkup
-   *   The filtered field description, with tokens replaced.
-   */
-  protected function getFilteredDescription() {
-    return FieldFilteredMarkup::create(\Drupal::token()->replace($this->fieldDefinition->getDescription()));
-  }
-
 }
diff --git a/core/lib/Drupal/Core/Flood/DatabaseBackend.php b/core/lib/Drupal/Core/Flood/DatabaseBackend.php
index 922ff97..4fd4b2b 100644
--- a/core/lib/Drupal/Core/Flood/DatabaseBackend.php
+++ b/core/lib/Drupal/Core/Flood/DatabaseBackend.php
@@ -7,7 +7,6 @@
 
 namespace Drupal\Core\Flood;
 
-use Drupal\Core\Database\SchemaObjectExistsException;
 use Symfony\Component\HttpFoundation\RequestStack;
 use Drupal\Core\Database\Connection;
 
@@ -17,11 +16,6 @@
 class DatabaseBackend implements FloodInterface {
 
   /**
-   * The database table name.
-   */
-  const TABLE_NAME = 'flood';
-
-  /**
    * The database connection used to store flood event information.
    *
    * @var \Drupal\Core\Database\Connection
@@ -56,35 +50,7 @@ public function register($name, $window = 3600, $identifier = NULL) {
     if (!isset($identifier)) {
       $identifier = $this->requestStack->getCurrentRequest()->getClientIp();
     }
-    $try_again = FALSE;
-    try {
-      $this->doInsert($name, $window, $identifier);
-    }
-    catch (\Exception $e) {
-      $try_again = $this->ensureTableExists();
-      if (!$try_again) {
-        throw $e;
-      }
-    }
-    if ($try_again) {
-      $this->doInsert($name, $window, $identifier);
-    }
-  }
-
-  /**
-   * Inserts an event into the flood table
-   *
-   * @param string $name
-   *   The name of an event.
-   * @param int $window
-   *   Number of seconds before this event expires.
-   * @param string $identifier
-   *   Unique identifier of the current user.
-   *
-   * @see \Drupal\Core\Flood\DatabaseBackend::register
-   */
-  protected function doInsert($name, $window, $identifier) {
-    $this->connection->insert(static::TABLE_NAME)
+    $this->connection->insert('flood')
       ->fields(array(
         'event' => $name,
         'identifier' => $identifier,
@@ -101,15 +67,10 @@ public function clear($name, $identifier = NULL) {
     if (!isset($identifier)) {
       $identifier = $this->requestStack->getCurrentRequest()->getClientIp();
     }
-    try {
-      $this->connection->delete(static::TABLE_NAME)
-        ->condition('event', $name)
-        ->condition('identifier', $identifier)
-        ->execute();
-    }
-    catch (\Exception $e) {
-      $this->catchException($e);
-    }
+    $this->connection->delete('flood')
+      ->condition('event', $name)
+      ->condition('identifier', $identifier)
+      ->execute();
   }
 
   /**
@@ -119,120 +80,23 @@ public function isAllowed($name, $threshold, $window = 3600, $identifier = NULL)
     if (!isset($identifier)) {
       $identifier = $this->requestStack->getCurrentRequest()->getClientIp();
     }
-    try {
-      $number = $this->connection->select(static::TABLE_NAME, 'f')
-        ->condition('event', $name)
-        ->condition('identifier', $identifier)
-        ->condition('timestamp', REQUEST_TIME - $window, '>')
-        ->countQuery()
-        ->execute()
-        ->fetchField();
-      return ($number < $threshold);
-    }
-    catch (\Exception $e) {
-      $this->catchException($e);
-      return TRUE;
-    }
+    $number = $this->connection->select('flood', 'f')
+      ->condition('event', $name)
+      ->condition('identifier', $identifier)
+      ->condition('timestamp', REQUEST_TIME - $window, '>')
+      ->countQuery()
+      ->execute()
+      ->fetchField();
+    return ($number < $threshold);
   }
 
   /**
    * {@inheritdoc}
    */
   public function garbageCollection() {
-    try {
-      $return = $this->connection->delete(static::TABLE_NAME)
-        ->condition('expiration', REQUEST_TIME, '<')
-        ->execute();
-    }
-    catch (\Exception $e) {
-      $this->catchException($e);
-    }
-  }
-
-  /**
-   * Check if the flood table exists and create it if not.
-   */
-  protected function ensureTableExists() {
-    try {
-      $database_schema = $this->connection->schema();
-      if (!$database_schema->tableExists(static::TABLE_NAME)) {
-        $schema_definition = $this->schemaDefinition();
-        $database_schema->createTable(static::TABLE_NAME, $schema_definition);
-        return TRUE;
-      }
-    }
-    // If another process has already created the table, attempting to create
-    // it will throw an exception. In this case just catch the exception and do
-    // nothing.
-    catch (SchemaObjectExistsException $e) {
-      return TRUE;
-    }
-    return FALSE;
-  }
-
-  /**
-   * Act on an exception when flood might be stale.
-   *
-   * If the table does not yet exist, that's fine, but if the table exists and
-   * yet the query failed, then the flood is stale and the exception needs to
-   * propagate.
-   *
-   * @param $e
-   *   The exception.
-   *
-   * @throws \Exception
-   */
-  protected function catchException(\Exception $e) {
-    if ($this->connection->schema()->tableExists(static::TABLE_NAME)) {
-      throw $e;
-    }
-  }
-
-  /**
-   * Defines the schema for the flood table.
-   */
-  public function schemaDefinition() {
-    return [
-      'description' => 'Flood controls the threshold of events, such as the number of contact attempts.',
-      'fields' => [
-        'fid' => [
-          'description' => 'Unique flood event ID.',
-          'type' => 'serial',
-          'not null' => TRUE,
-        ],
-        'event' => [
-          'description' => 'Name of event (e.g. contact).',
-          'type' => 'varchar_ascii',
-          'length' => 64,
-          'not null' => TRUE,
-          'default' => '',
-        ],
-        'identifier' => [
-          'description' => 'Identifier of the visitor, such as an IP address or hostname.',
-          'type' => 'varchar_ascii',
-          'length' => 128,
-          'not null' => TRUE,
-          'default' => '',
-        ],
-        'timestamp' => [
-          'description' => 'Timestamp of the event.',
-          'type' => 'int',
-          'not null' => TRUE,
-          'default' => 0,
-        ],
-        'expiration' => [
-          'description' => 'Expiration timestamp. Expired events are purged on cron run.',
-          'type' => 'int',
-          'not null' => TRUE,
-          'default' => 0,
-        ],
-      ],
-      'primary key' => ['fid'],
-      'indexes' => [
-        'allow' => ['event', 'identifier', 'timestamp'],
-        'purge' => ['expiration'],
-      ],
-    ];
+    return $this->connection->delete('flood')
+      ->condition('expiration', REQUEST_TIME, '<')
+      ->execute();
   }
 
 }
diff --git a/core/lib/Drupal/Core/ImageToolkit/ImageToolkitOperationManager.php b/core/lib/Drupal/Core/ImageToolkit/ImageToolkitOperationManager.php
index b6d3d7e..1bc0999 100644
--- a/core/lib/Drupal/Core/ImageToolkit/ImageToolkitOperationManager.php
+++ b/core/lib/Drupal/Core/ImageToolkit/ImageToolkitOperationManager.php
@@ -33,13 +33,6 @@ class ImageToolkitOperationManager extends DefaultPluginManager implements Image
   protected $logger;
 
   /**
-   * The image toolkit manager.
-   *
-   * @var \Drupal\Core\ImageToolkit\ImageToolkitManager
-   */
-  protected $toolkitManager;
-
-  /**
    * Constructs the ImageToolkitOperationManager object.
    *
    * @param \Traversable $namespaces
@@ -51,23 +44,20 @@ class ImageToolkitOperationManager extends DefaultPluginManager implements Image
    *   The module handler to invoke the alter hook with.
    * @param \Psr\Log\LoggerInterface $logger
    *   A logger instance.
-   * @param \Drupal\Core\ImageToolkit\ImageToolkitManager $toolkit_manager
-   *   The image toolkit manager.
    */
-  public function __construct(\Traversable $namespaces, CacheBackendInterface $cache_backend, ModuleHandlerInterface $module_handler, LoggerInterface $logger, ImageToolkitManager $toolkit_manager) {
+  public function __construct(\Traversable $namespaces, CacheBackendInterface $cache_backend, ModuleHandlerInterface $module_handler, LoggerInterface $logger) {
     parent::__construct('Plugin/ImageToolkit/Operation', $namespaces, $module_handler, 'Drupal\Core\ImageToolkit\ImageToolkitOperationInterface', 'Drupal\Core\ImageToolkit\Annotation\ImageToolkitOperation');
 
     $this->alterInfo('image_toolkit_operation');
     $this->setCacheBackend($cache_backend, 'image_toolkit_operation_plugins');
     $this->logger = $logger;
-    $this->toolkitManager = $toolkit_manager;
   }
 
   /**
    * Returns the plugin ID for a given toolkit and operation.
    *
-   * @param \Drupal\Core\ImageToolkit\ImageToolkitInterface $toolkit
-   *   The toolkit instance.
+   * @param string $toolkit_id
+   *   The toolkit plugin ID.
    * @param string $operation
    *   The operation (e.g. "crop").
    *
@@ -77,8 +67,7 @@ public function __construct(\Traversable $namespaces, CacheBackendInterface $cac
    * @throws \Drupal\Component\Plugin\Exception\PluginNotFoundException
    *   When no plugin is available.
    */
-  protected function getToolkitOperationPluginId(ImageToolkitInterface $toolkit, $operation) {
-    $toolkit_id = $toolkit->getPluginId();
+  protected function getToolkitOperationPluginId($toolkit_id, $operation) {
     $definitions = $this->getDefinitions();
 
     $definitions = array_filter($definitions,
@@ -88,14 +77,6 @@ function ($definition) use ($toolkit_id, $operation) {
     );
 
     if (!$definitions) {
-      // If this image toolkit plugin is a derivative and returns no operation,
-      // try once again with its base plugin.
-      $base_toolkit_id = $toolkit->getBaseId();
-      if (($toolkit_id != $base_toolkit_id) && !empty($base_toolkit_id)) {
-        $base_toolkit = $this->toolkitManager->createInstance($base_toolkit_id);
-        return $this->getToolkitOperationPluginId($base_toolkit, $operation);
-      }
-
       $message = SafeMarkup::format("No image operation plugin for '@toolkit' toolkit and '@operation' operation.", array('@toolkit' => $toolkit_id, '@operation' => $operation));
       throw new PluginNotFoundException($toolkit_id . '.' . $operation, $message);
     }
@@ -121,7 +102,7 @@ public function createInstance($plugin_id, array $configuration = array(), Image
    * {@inheritdoc}
    */
   public function getToolkitOperation(ImageToolkitInterface $toolkit, $operation) {
-    $plugin_id = $this->getToolkitOperationPluginId($toolkit, $operation);
+    $plugin_id = $this->getToolkitOperationPluginId($toolkit->getPluginId(), $operation);
     return $this->createInstance($plugin_id, array(), $toolkit);
   }
 
diff --git a/core/lib/Drupal/Core/Lock/DatabaseLockBackend.php b/core/lib/Drupal/Core/Lock/DatabaseLockBackend.php
index e252f1d..267b6c1 100644
--- a/core/lib/Drupal/Core/Lock/DatabaseLockBackend.php
+++ b/core/lib/Drupal/Core/Lock/DatabaseLockBackend.php
@@ -9,7 +9,6 @@
 
 use Drupal\Core\Database\Connection;
 use Drupal\Core\Database\IntegrityConstraintViolationException;
-use Drupal\Core\Database\SchemaObjectExistsException;
 
 /**
  * Defines the database lock backend. This is the default backend in Drupal.
@@ -19,11 +18,6 @@
 class DatabaseLockBackend extends LockBackendAbstract {
 
   /**
-   * The database table name.
-   */
-  const TABLE_NAME = 'semaphore';
-
-  /**
    * The database connection.
    *
    * @var \Drupal\Core\Database\Connection
@@ -90,16 +84,6 @@ public function acquire($name, $timeout = 30.0) {
           // the offending row from the database table in case it has expired.
           $retry = $retry ? FALSE : $this->lockMayBeAvailable($name);
         }
-        catch (\Exception $e) {
-          // Create the semaphore table if it does not exist and retry.
-          if ($this->ensureTableExists()) {
-            // Retry only once.
-            $retry = !$retry;
-          }
-          else {
-            throw $e;
-          }
-        }
         // We only retry in case the first attempt failed, but we then broke
         // an expired lock.
       } while ($retry);
@@ -111,14 +95,7 @@ public function acquire($name, $timeout = 30.0) {
    * {@inheritdoc}
    */
   public function lockMayBeAvailable($name) {
-    try {
-      $lock = $this->database->query('SELECT expire, value FROM {semaphore} WHERE name = :name', array(':name' => $name))->fetchAssoc();
-    }
-    catch (\Exception $e) {
-      $this->catchException($e);
-      // If the table does not exist yet then the lock may be available.
-      $lock = FALSE;
-    }
+    $lock = $this->database->query('SELECT expire, value FROM {semaphore} WHERE name = :name', array(':name' => $name))->fetchAssoc();
     if (!$lock) {
       return TRUE;
     }
@@ -142,15 +119,10 @@ public function lockMayBeAvailable($name) {
    */
   public function release($name) {
     unset($this->locks[$name]);
-    try {
-      $this->database->delete('semaphore')
-        ->condition('name', $name)
-        ->condition('value', $this->getLockId())
-        ->execute();
-    }
-    catch (\Exception $e) {
-      $this->catchException($e);
-    }
+    $this->database->delete('semaphore')
+      ->condition('name', $name)
+      ->condition('value', $this->getLockId())
+      ->execute();
   }
 
   /**
@@ -168,80 +140,4 @@ public function releaseAll($lock_id = NULL) {
         ->execute();
     }
   }
-
-  /**
-   * Check if the semaphore table exists and create it if not.
-   */
-  protected function ensureTableExists() {
-    try {
-      $database_schema = $this->database->schema();
-      if (!$database_schema->tableExists(static::TABLE_NAME)) {
-        $schema_definition = $this->schemaDefinition();
-        $database_schema->createTable(static::TABLE_NAME, $schema_definition);
-        return TRUE;
-      }
-    }
-    // If another process has already created the semaphore table, attempting to
-    // recreate it will throw an exception. In this case just catch the
-    // exception and do nothing.
-    catch (SchemaObjectExistsException $e) {
-      return TRUE;
-    }
-    return FALSE;
-  }
-
-  /**
-   * Act on an exception when semaphore might be stale.
-   *
-   * If the table does not yet exist, that's fine, but if the table exists and
-   * yet the query failed, then the semaphore is stale and the exception needs
-   * to propagate.
-   *
-   * @param $e
-   *   The exception.
-   *
-   * @throws \Exception
-   */
-  protected function catchException(\Exception $e) {
-    if ($this->database->schema()->tableExists(static::TABLE_NAME)) {
-      throw $e;
-    }
-  }
-
-  /**
-   * Defines the schema for the semaphore table.
-   */
-  public function schemaDefinition() {
-    return [
-      'description' => 'Table for holding semaphores, locks, flags, etc. that cannot be stored as state since they must not be cached.',
-      'fields' => [
-        'name' => [
-          'description' => 'Primary Key: Unique name.',
-          'type' => 'varchar_ascii',
-          'length' => 255,
-          'not null' => TRUE,
-          'default' => ''
-        ],
-        'value' => [
-          'description' => 'A value for the semaphore.',
-          'type' => 'varchar_ascii',
-          'length' => 255,
-          'not null' => TRUE,
-          'default' => ''
-        ],
-        'expire' => [
-          'description' => 'A Unix timestamp with microseconds indicating when the semaphore should expire.',
-          'type' => 'float',
-          'size' => 'big',
-          'not null' => TRUE
-        ],
-      ],
-      'indexes' => [
-        'value' => ['value'],
-        'expire' => ['expire'],
-      ],
-      'primary key' => ['name'],
-    ];
-  }
-
 }
diff --git a/core/lib/Drupal/Core/Logger/LoggerChannel.php b/core/lib/Drupal/Core/Logger/LoggerChannel.php
index 0219cc4..8e0890c 100644
--- a/core/lib/Drupal/Core/Logger/LoggerChannel.php
+++ b/core/lib/Drupal/Core/Logger/LoggerChannel.php
@@ -20,26 +20,6 @@ class LoggerChannel implements LoggerChannelInterface {
   use LoggerTrait;
 
   /**
-   * Maximum call depth to self::log() for a single log message.
-   *
-   * It's very easy for logging channel code to call out to other library code
-   * that will create log messages. In that case, we will recurse back in to
-   * LoggerChannel::log() multiple times while processing a single originating
-   * message. To prevent infinite recursion, we track the call depth and bail
-   * out at LoggerChannel::MAX_CALL_DEPTH iterations.
-   *
-   * @var int
-   */
-  const MAX_CALL_DEPTH = 5;
-
-  /**
-   * Number of times LoggerChannel::log() has been called for a single message.
-   *
-   * @var int
-   */
-  protected $callDepth = 0;
-
-  /**
    * The name of the channel of this logger instance.
    *
    * @var string
@@ -97,11 +77,6 @@ public function __construct($channel) {
    * {@inheritdoc}
    */
   public function log($level, $message, array $context = array()) {
-    if ($this->callDepth == self::MAX_CALL_DEPTH) {
-      return;
-    }
-    $this->callDepth++;
-
     // Merge in defaults.
     $context += array(
       'channel' => $this->channel,
@@ -140,8 +115,6 @@ public function log($level, $message, array $context = array()) {
     foreach ($this->sortLoggers() as $logger) {
       $logger->log($level, $message, $context);
     }
-
-    $this->callDepth--;
   }
 
   /**
diff --git a/core/lib/Drupal/Core/Mail/Plugin/Mail/PhpMail.php b/core/lib/Drupal/Core/Mail/Plugin/Mail/PhpMail.php
index c939565..9dcb582 100644
--- a/core/lib/Drupal/Core/Mail/Plugin/Mail/PhpMail.php
+++ b/core/lib/Drupal/Core/Mail/Plugin/Mail/PhpMail.php
@@ -53,7 +53,7 @@ public function format(array $message) {
    * @return bool
    *   TRUE if the mail was successfully accepted, otherwise FALSE.
    *
-   * @see http://php.net/manual/function.mail.php
+   * @see http://php.net/manual/en/function.mail.php
    * @see \Drupal\Core\Mail\MailManagerInterface::mail()
    */
   public function mail(array $message) {
diff --git a/core/lib/Drupal/Core/Menu/LocalActionDefault.php b/core/lib/Drupal/Core/Menu/LocalActionDefault.php
index d30ec91..4b72af4 100644
--- a/core/lib/Drupal/Core/Menu/LocalActionDefault.php
+++ b/core/lib/Drupal/Core/Menu/LocalActionDefault.php
@@ -8,8 +8,6 @@
 namespace Drupal\Core\Menu;
 
 use Drupal\Component\Plugin\PluginBase;
-use Drupal\Core\Cache\Cache;
-use Drupal\Core\Cache\CacheableDependencyInterface;
 use Drupal\Core\DependencyInjection\DependencySerializationTrait;
 use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
 use Drupal\Core\Routing\RouteMatchInterface;
@@ -20,7 +18,7 @@
 /**
  * Provides a default implementation for local action plugins.
  */
-class LocalActionDefault extends PluginBase implements LocalActionInterface, ContainerFactoryPluginInterface, CacheableDependencyInterface {
+class LocalActionDefault extends PluginBase implements LocalActionInterface, ContainerFactoryPluginInterface {
 
   use DependencySerializationTrait;
 
@@ -124,34 +122,4 @@ public function getOptions(RouteMatchInterface $route_match) {
     return (array) $this->pluginDefinition['options'];
   }
 
-  /**
-   * {@inheritdoc}
-   */
-  public function getCacheTags() {
-    if (!isset($this->pluginDefinition['cache_tags'])) {
-      return [];
-    }
-    return $this->pluginDefinition['cache_tags'];
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function getCacheContexts() {
-    if (!isset($this->pluginDefinition['cache_contexts'])) {
-      return [];
-    }
-    return $this->pluginDefinition['cache_contexts'];
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function getCacheMaxAge() {
-    if (!isset($this->pluginDefinition['cache_max_age'])) {
-      return Cache::PERMANENT;
-    }
-    return $this->pluginDefinition['cache_max_age'];
-  }
-
 }
diff --git a/core/lib/Drupal/Core/Menu/LocalActionManager.php b/core/lib/Drupal/Core/Menu/LocalActionManager.php
index 85c834a8..f98e60e 100644
--- a/core/lib/Drupal/Core/Menu/LocalActionManager.php
+++ b/core/lib/Drupal/Core/Menu/LocalActionManager.php
@@ -8,6 +8,8 @@
 namespace Drupal\Core\Menu;
 
 use Drupal\Core\Access\AccessManagerInterface;
+use Drupal\Core\Cache\Cache;
+use Drupal\Core\Cache\CacheableDependencyInterface;
 use Drupal\Core\Cache\CacheableMetadata;
 use Drupal\Core\Cache\CacheBackendInterface;
 use Drupal\Core\Extension\ModuleHandlerInterface;
@@ -197,7 +199,16 @@ public function getActionsForRoute($route_appears) {
         '#access' => $access,
         '#weight' => $plugin->getWeight(),
       );
-      $cacheability->addCacheableDependency($access)->addCacheableDependency($plugin);
+      $cacheability->addCacheableDependency($access);
+      // For backward compatibility in 8.0.x, plugins that do not implement
+      // the \Drupal\Core\Cache\CacheableDependencyInterface are assumed
+      // to be cacheable forever.
+      if ($plugin instanceof CacheableDependencyInterface) {
+        $cacheability->addCacheableDependency($plugin);
+      }
+      else {
+        $cacheability->setCacheMaxAge(Cache::PERMANENT);
+      }
       $cacheability->applyTo($links[$plugin_id]);
     }
     $links['#cache']['contexts'][] = 'route';
diff --git a/core/lib/Drupal/Core/Menu/LocalActionManagerInterface.php b/core/lib/Drupal/Core/Menu/LocalActionManagerInterface.php
index af8aff8..5033485 100644
--- a/core/lib/Drupal/Core/Menu/LocalActionManagerInterface.php
+++ b/core/lib/Drupal/Core/Menu/LocalActionManagerInterface.php
@@ -4,7 +4,6 @@
  * @file
  * Contains \Drupal\Core\Menu\LocalActionManagerInterface.
  */
-
 namespace Drupal\Core\Menu;
 
 use Drupal\Component\Plugin\PluginManagerInterface;
diff --git a/core/lib/Drupal/Core/Menu/LocalTaskManagerInterface.php b/core/lib/Drupal/Core/Menu/LocalTaskManagerInterface.php
index 8f87f89..a9dec80 100644
--- a/core/lib/Drupal/Core/Menu/LocalTaskManagerInterface.php
+++ b/core/lib/Drupal/Core/Menu/LocalTaskManagerInterface.php
@@ -4,7 +4,6 @@
  * @file
  * Contains \Drupal\Core\Menu\LocalTaskManagerInterface.
  */
-
 namespace Drupal\Core\Menu;
 
 use Drupal\Component\Plugin\PluginManagerInterface;
diff --git a/core/lib/Drupal/Core/Path/AliasStorage.php b/core/lib/Drupal/Core/Path/AliasStorage.php
index d66407e..8caae97 100644
--- a/core/lib/Drupal/Core/Path/AliasStorage.php
+++ b/core/lib/Drupal/Core/Path/AliasStorage.php
@@ -9,7 +9,6 @@
 
 use Drupal\Core\Cache\Cache;
 use Drupal\Core\Database\Connection;
-use Drupal\Core\Database\SchemaObjectExistsException;
 use Drupal\Core\Extension\ModuleHandlerInterface;
 use Drupal\Core\Language\LanguageInterface;
 use Drupal\Core\Database\Query\Condition;
@@ -22,12 +21,6 @@
  * the same, and will both refer to the same internal system path.
  */
 class AliasStorage implements AliasStorageInterface {
-
-  /**
-   * The table for the url_alias storage.
-   */
-  const TABLE = 'url_alias';
-
   /**
    * The database connection.
    *
@@ -77,43 +70,18 @@ public function save($source, $alias, $langcode = LanguageInterface::LANGCODE_NO
 
     // Insert or update the alias.
     if (empty($pid)) {
-      $try_again = FALSE;
-      try {
-        $query = $this->connection->insert(static::TABLE)
-          ->fields($fields);
-        $pid = $query->execute();
-      }
-      catch (\Exception $e) {
-        // If there was an exception, try to create the table.
-        if (!$try_again = $this->ensureTableExists()) {
-          // If the exception happened for other reason than the missing table,
-          // propagate the exception.
-          throw $e;
-        }
-      }
-      // Now that the table has been created, try again if necessary.
-      if ($try_again) {
-        $query = $this->connection->insert(static::TABLE)
-          ->fields($fields);
-        $pid = $query->execute();
-      }
-
+      $query = $this->connection->insert('url_alias')
+        ->fields($fields);
+      $pid = $query->execute();
       $fields['pid'] = $pid;
       $operation = 'insert';
     }
     else {
       // Fetch the current values so that an update hook can identify what
       // exactly changed.
-      try {
-        $original = $this->connection->query('SELECT source, alias, langcode FROM {url_alias} WHERE pid = :pid', array(':pid' => $pid))
-          ->fetchAssoc();
-      }
-      catch (\Exception $e) {
-        $this->catchException($e);
-        $original = FALSE;
-      }
+      $original = $this->connection->query('SELECT source, alias, langcode FROM {url_alias} WHERE pid = :pid', array(':pid' => $pid))->fetchAssoc();
       $fields['pid'] = $pid;
-      $query = $this->connection->update(static::TABLE)
+      $query = $this->connection->update('url_alias')
         ->fields($fields)
         ->condition('pid', $pid);
       $pid = $query->execute();
@@ -133,7 +101,7 @@ public function save($source, $alias, $langcode = LanguageInterface::LANGCODE_NO
    * {@inheritdoc}
    */
   public function load($conditions) {
-    $select = $this->connection->select(static::TABLE);
+    $select = $this->connection->select('url_alias');
     foreach ($conditions as $field => $value) {
       if ($field == 'source' || $field == 'alias') {
         // Use LIKE for case-insensitive matching.
@@ -143,18 +111,12 @@ public function load($conditions) {
         $select->condition($field, $value);
       }
     }
-    try {
-      return $select
-        ->fields(static::TABLE)
-        ->orderBy('pid', 'DESC')
-        ->range(0, 1)
-        ->execute()
-        ->fetchAssoc();
-    }
-    catch (\Exception $e) {
-      $this->catchException($e);
-      return FALSE;
-    }
+    return $select
+      ->fields('url_alias')
+      ->orderBy('pid', 'DESC')
+      ->range(0, 1)
+      ->execute()
+      ->fetchAssoc();
   }
 
   /**
@@ -162,7 +124,7 @@ public function load($conditions) {
    */
   public function delete($conditions) {
     $path = $this->load($conditions);
-    $query = $this->connection->delete(static::TABLE);
+    $query = $this->connection->delete('url_alias');
     foreach ($conditions as $field => $value) {
       if ($field == 'source' || $field == 'alias') {
         // Use LIKE for case-insensitive matching.
@@ -172,13 +134,7 @@ public function delete($conditions) {
         $query->condition($field, $value);
       }
     }
-    try {
-      $deleted = $query->execute();
-    }
-    catch (\Exception $e) {
-      $this->catchException($e);
-      $deleted = FALSE;
-    }
+    $deleted = $query->execute();
     // @todo Switch to using an event for this instead of a hook.
     $this->moduleHandler->invokeAll('path_delete', array($path));
     Cache::invalidateTags(['route_match']);
@@ -190,8 +146,8 @@ public function delete($conditions) {
    */
   public function preloadPathAlias($preloaded, $langcode) {
     $langcode_list = [$langcode, LanguageInterface::LANGCODE_NOT_SPECIFIED];
-    $select = $this->connection->select(static::TABLE)
-      ->fields(static::TABLE, ['source', 'alias']);
+    $select = $this->connection->select('url_alias')
+      ->fields('url_alias', ['source', 'alias']);
 
     if (!empty($preloaded)) {
       $conditions = new Condition('OR');
@@ -219,13 +175,7 @@ public function preloadPathAlias($preloaded, $langcode) {
 
     $select->orderBy('pid', 'ASC');
     $select->condition('langcode', $langcode_list, 'IN');
-    try {
-      return $select->execute()->fetchAllKeyed();
-    }
-    catch (\Exception $e) {
-      $this->catchException($e);
-      return FALSE;
-    }
+    return $select->execute()->fetchAllKeyed();
   }
 
   /**
@@ -236,8 +186,8 @@ public function lookupPathAlias($path, $langcode) {
     $langcode_list = [$langcode, LanguageInterface::LANGCODE_NOT_SPECIFIED];
 
     // See the queries above. Use LIKE for case-insensitive matching.
-    $select = $this->connection->select(static::TABLE)
-      ->fields(static::TABLE, ['alias'])
+    $select = $this->connection->select('url_alias')
+      ->fields('url_alias', ['alias'])
       ->condition('source', $source, 'LIKE');
     if ($langcode == LanguageInterface::LANGCODE_NOT_SPECIFIED) {
       array_pop($langcode_list);
@@ -251,13 +201,7 @@ public function lookupPathAlias($path, $langcode) {
 
     $select->orderBy('pid', 'DESC');
     $select->condition('langcode', $langcode_list, 'IN');
-    try {
-      return $select->execute()->fetchField();
-    }
-    catch (\Exception $e) {
-      $this->catchException($e);
-      return FALSE;
-    }
+    return $select->execute()->fetchField();
   }
 
   /**
@@ -268,8 +212,8 @@ public function lookupPathSource($path, $langcode) {
     $langcode_list = [$langcode, LanguageInterface::LANGCODE_NOT_SPECIFIED];
 
     // See the queries above. Use LIKE for case-insensitive matching.
-    $select = $this->connection->select(static::TABLE)
-      ->fields(static::TABLE, ['source'])
+    $select = $this->connection->select('url_alias')
+      ->fields('url_alias', ['source'])
       ->condition('alias', $alias, 'LIKE');
     if ($langcode == LanguageInterface::LANGCODE_NOT_SPECIFIED) {
       array_pop($langcode_list);
@@ -283,13 +227,7 @@ public function lookupPathSource($path, $langcode) {
 
     $select->orderBy('pid', 'DESC');
     $select->condition('langcode', $langcode_list, 'IN');
-    try {
-      return $select->execute()->fetchField();
-    }
-    catch (\Exception $e) {
-      $this->catchException($e);
-      return FALSE;
-    }
+    return $select->execute()->fetchField();
   }
 
   /**
@@ -297,7 +235,7 @@ public function lookupPathSource($path, $langcode) {
    */
   public function aliasExists($alias, $langcode, $source = NULL) {
     // Use LIKE and NOT LIKE for case-insensitive matching.
-    $query = $this->connection->select(static::TABLE)
+    $query = $this->connection->select('url_alias')
       ->condition('alias', $this->connection->escapeLike($alias), 'LIKE')
       ->condition('langcode', $langcode);
     if (!empty($source)) {
@@ -305,152 +243,45 @@ public function aliasExists($alias, $langcode, $source = NULL) {
     }
     $query->addExpression('1');
     $query->range(0, 1);
-    try {
-      return (bool) $query->execute()->fetchField();
-    }
-    catch (\Exception $e) {
-      $this->catchException($e);
-      return FALSE;
-    }
+    return (bool) $query->execute()->fetchField();
   }
 
   /**
    * {@inheritdoc}
    */
   public function languageAliasExists() {
-    try {
-      return (bool) $this->connection->queryRange('SELECT 1 FROM {url_alias} WHERE langcode <> :langcode', 0, 1, array(':langcode' => LanguageInterface::LANGCODE_NOT_SPECIFIED))->fetchField();
-    }
-    catch (\Exception $e) {
-      $this->catchException($e);
-      return FALSE;
-    }
+    return (bool) $this->connection->queryRange('SELECT 1 FROM {url_alias} WHERE langcode <> :langcode', 0, 1, array(':langcode' => LanguageInterface::LANGCODE_NOT_SPECIFIED))->fetchField();
   }
 
   /**
    * {@inheritdoc}
    */
   public function getAliasesForAdminListing($header, $keys = NULL) {
-    $query = $this->connection->select(static::TABLE)
+    $query = $this->connection->select('url_alias')
       ->extend('Drupal\Core\Database\Query\PagerSelectExtender')
       ->extend('Drupal\Core\Database\Query\TableSortExtender');
     if ($keys) {
       // Replace wildcards with PDO wildcards.
       $query->condition('alias', '%' . preg_replace('!\*+!', '%', $keys) . '%', 'LIKE');
     }
-    try {
-      return $query
-        ->fields(static::TABLE)
-        ->orderByHeader($header)
-        ->limit(50)
-        ->execute()
-        ->fetchAll();
-    }
-    catch (\Exception $e) {
-      $this->catchException($e);
-      return [];
-    }
+    return $query
+      ->fields('url_alias')
+      ->orderByHeader($header)
+      ->limit(50)
+      ->execute()
+      ->fetchAll();
   }
 
   /**
    * {@inheritdoc}
    */
   public function pathHasMatchingAlias($initial_substring) {
-    $query = $this->connection->select(static::TABLE, 'u');
+    $query = $this->connection->select('url_alias', 'u');
     $query->addExpression(1);
-    try {
-      return (bool) $query
-        ->condition('u.source', $this->connection->escapeLike($initial_substring) . '%', 'LIKE')
-        ->range(0, 1)
-        ->execute()
-        ->fetchField();
-    }
-    catch (\Exception $e) {
-      $this->catchException($e);
-      return FALSE;
-    }
+    return (bool) $query
+      ->condition('u.source', $this->connection->escapeLike($initial_substring) . '%', 'LIKE')
+      ->range(0, 1)
+      ->execute()
+      ->fetchField();
   }
-
-  /**
-   * Check if the table exists and create it if not.
-   */
-  protected function ensureTableExists() {
-    try {
-      $database_schema = $this->connection->schema();
-      if (!$database_schema->tableExists(static::TABLE)) {
-        $schema_definition = $this->schemaDefinition();
-        $database_schema->createTable(static::TABLE, $schema_definition);
-        return TRUE;
-      }
-    }
-    // If another process has already created the table, attempting to recreate
-    // it will throw an exception. In this case just catch the exception and do
-    // nothing.
-    catch (SchemaObjectExistsException $e) {
-      return TRUE;
-    }
-    return FALSE;
-  }
-
-  /**
-   * Act on an exception when url_alias might be stale.
-   *
-   * If the table does not yet exist, that's fine, but if the table exists and
-   * yet the query failed, then the url_alias is stale and the exception needs
-   * to propagate.
-   *
-   * @param $e
-   *   The exception.
-   *
-   * @throws \Exception
-   */
-  protected function catchException(\Exception $e) {
-    if ($this->connection->schema()->tableExists(static::TABLE)) {
-      throw $e;
-    }
-  }
-
-  /**
-   * Defines the schema for the {url_alias} table.
-   */
-  public static function schemaDefinition() {
-    return [
-      'description' => 'A list of URL aliases for Drupal paths; a user may visit either the source or destination path.',
-      'fields' => [
-        'pid' => [
-          'description' => 'A unique path alias identifier.',
-          'type' => 'serial',
-          'unsigned' => TRUE,
-          'not null' => TRUE,
-        ],
-        'source' => [
-          'description' => 'The Drupal path this alias is for; e.g. node/12.',
-          'type' => 'varchar',
-          'length' => 255,
-          'not null' => TRUE,
-          'default' => '',
-        ],
-        'alias' => [
-          'description' => 'The alias for this path; e.g. title-of-the-story.',
-          'type' => 'varchar',
-          'length' => 255,
-          'not null' => TRUE,
-          'default' => '',
-        ],
-        'langcode' => [
-          'description' => "The language code this alias is for; if 'und', the alias will be used for unknown languages. Each Drupal path can have an alias for each supported language.",
-          'type' => 'varchar_ascii',
-          'length' => 12,
-          'not null' => TRUE,
-          'default' => '',
-        ],
-      ],
-      'primary key' => ['pid'],
-      'indexes' => [
-        'alias_langcode_pid' => ['alias', 'langcode', 'pid'],
-        'source_langcode_pid' => ['source', 'langcode', 'pid'],
-      ],
-    ];
-  }
-
 }
diff --git a/core/lib/Drupal/Core/Plugin/ObjectWithPluginCollectionInterface.php b/core/lib/Drupal/Core/Plugin/ObjectWithPluginCollectionInterface.php
deleted file mode 100644
index 9d091d1..0000000
--- a/core/lib/Drupal/Core/Plugin/ObjectWithPluginCollectionInterface.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\Core\Plugin\ObjectWithPluginCollectionInterface.
- */
-
-namespace Drupal\Core\Plugin;
-
-/**
- * Provides an interface for an object using a plugin collection.
- *
- * @see \Drupal\Component\Plugin\LazyPluginCollection
- *
- * @ingroup plugin_api
- *
- * Entities that need this interface should implement
- * \Drupal\Core\Entity\EntityWithPluginCollectionInterface, which extends this.
- */
-interface ObjectWithPluginCollectionInterface {
-
-  /**
-   * Gets the plugin collections used by this entity.
-   *
-   * @return \Drupal\Component\Plugin\LazyPluginCollection[]
-   *   An array of plugin collections, keyed by the property name they use to
-   *   store their configuration.
-   */
-  public function getPluginCollections();
-
-}
diff --git a/core/lib/Drupal/Core/Queue/Batch.php b/core/lib/Drupal/Core/Queue/Batch.php
index 631f984..2d172d9 100644
--- a/core/lib/Drupal/Core/Queue/Batch.php
+++ b/core/lib/Drupal/Core/Queue/Batch.php
@@ -30,15 +30,10 @@ class Batch extends DatabaseQueue {
    * item to be claimed repeatedly until it is deleted.
    */
   public function claimItem($lease_time = 0) {
-    try {
-      $item = $this->connection->queryRange('SELECT data, item_id FROM {queue} q WHERE name = :name ORDER BY item_id ASC', 0, 1, array(':name' => $this->name))->fetchObject();
-      if ($item) {
-        $item->data = unserialize($item->data);
-        return $item;
-      }
-    }
-    catch (\Exception $e) {
-      $this->catchException($e);
+    $item = $this->connection->queryRange('SELECT data, item_id FROM {queue} q WHERE name = :name ORDER BY item_id ASC', 0, 1, array(':name' => $this->name))->fetchObject();
+    if ($item) {
+      $item->data = unserialize($item->data);
+      return $item;
     }
     return FALSE;
   }
@@ -54,14 +49,9 @@ public function claimItem($lease_time = 0) {
    */
   public function getAllItems() {
     $result = array();
-    try {
-      $items = $this->connection->query('SELECT data FROM {queue} q WHERE name = :name ORDER BY item_id ASC', array(':name' => $this->name))->fetchAll();
-      foreach ($items as $item) {
-        $result[] = unserialize($item->data);
-      }
-    }
-    catch (\Exception $e) {
-      $this->catchException($e);
+    $items = $this->connection->query('SELECT data FROM {queue} q WHERE name = :name ORDER BY item_id ASC', array(':name' => $this->name))->fetchAll();
+    foreach ($items as $item) {
+      $result[] = unserialize($item->data);
     }
     return $result;
   }
diff --git a/core/lib/Drupal/Core/Queue/DatabaseQueue.php b/core/lib/Drupal/Core/Queue/DatabaseQueue.php
index 78cabe8..9a9573b 100644
--- a/core/lib/Drupal/Core/Queue/DatabaseQueue.php
+++ b/core/lib/Drupal/Core/Queue/DatabaseQueue.php
@@ -8,7 +8,6 @@
 namespace Drupal\Core\Queue;
 
 use Drupal\Core\Database\Connection;
-use Drupal\Core\Database\SchemaObjectExistsException;
 use Drupal\Core\DependencyInjection\DependencySerializationTrait;
 
 /**
@@ -16,16 +15,11 @@
  *
  * @ingroup queue
  */
-class DatabaseQueue implements ReliableQueueInterface, QueueGarbageCollectionInterface {
+class DatabaseQueue implements ReliableQueueInterface {
 
   use DependencySerializationTrait;
 
   /**
-   * The database table name.
-   */
-  const TABLE_NAME = 'queue';
-
-  /**
    * The name of the queue this instance is working with.
    *
    * @var string
@@ -56,39 +50,7 @@ function __construct($name, Connection $connection) {
    * {@inheritdoc}
    */
   public function createItem($data) {
-    $try_again = FALSE;
-    try {
-      $id = $this->doCreateItem($data);
-    }
-    catch (\Exception $e) {
-      // If there was an exception, try to create the table.
-      if (!$try_again = $this->ensureTableExists()) {
-        // If the exception happened for other reason than the missing table,
-        // propagate the exception.
-        throw $e;
-      }
-    }
-    // Now that the table has been created, try again if necessary.
-    if ($try_again) {
-      $id = $this->doCreateItem($data);
-    }
-    return $id;
-  }
-
-  /**
-   * Adds a queue item and store it directly to the queue.
-   *
-   * @param $data
-   *   Arbitrary data to be associated with the new task in the queue.
-   *
-   * @return
-   *   A unique ID if the item was successfully created and was (best effort)
-   *   added to the queue, otherwise FALSE. We don't guarantee the item was
-   *   committed to disk etc, but as far as we know, the item is now in the
-   *   queue.
-   */
-  protected function doCreateItem($data) {
-    $query = $this->connection->insert(static::TABLE_NAME)
+    $query = $this->connection->insert('queue')
       ->fields(array(
         'name' => $this->name,
         'data' => serialize($data),
@@ -104,15 +66,7 @@ protected function doCreateItem($data) {
    * {@inheritdoc}
    */
   public function numberOfItems() {
-    try {
-      return $this->connection->query('SELECT COUNT(item_id) FROM {' . static::TABLE_NAME . '} WHERE name = :name', array(':name' => $this->name))
-        ->fetchField();
-    }
-    catch (\Exception $e) {
-      $this->catchException($e);
-      // If there is no table there cannot be any items.
-      return 0;
-    }
+    return $this->connection->query('SELECT COUNT(item_id) FROM {queue} WHERE name = :name', array(':name' => $this->name))->fetchField();
   }
 
   /**
@@ -124,15 +78,7 @@ public function claimItem($lease_time = 30) {
     // until an item is successfully claimed or we are reasonably sure there
     // are no unclaimed items left.
     while (TRUE) {
-      try {
-        $item = $this->connection->queryRange('SELECT data, created, item_id FROM {' . static::TABLE_NAME . '} q WHERE expire = 0 AND name = :name ORDER BY created, item_id ASC', 0, 1, array(':name' => $this->name))->fetchObject();
-      }
-      catch (\Exception $e) {
-        $this->catchException($e);
-        // If the table does not exist there are no items currently available to
-        // claim.
-        return FALSE;
-      }
+      $item = $this->connection->queryRange('SELECT data, created, item_id FROM {queue} q WHERE expire = 0 AND name = :name ORDER BY created, item_id ASC', 0, 1, array(':name' => $this->name))->fetchObject();
       if ($item) {
         // Try to update the item. Only one thread can succeed in UPDATEing the
         // same row. We cannot rely on REQUEST_TIME because items might be
@@ -140,7 +86,7 @@ public function claimItem($lease_time = 30) {
         // continue to use REQUEST_TIME instead of the current time(), we steal
         // time from the lease, and will tend to reset items before the lease
         // should really expire.
-        $update = $this->connection->update(static::TABLE_NAME)
+        $update = $this->connection->update('queue')
           ->fields(array(
             'expire' => time() + $lease_time,
           ))
@@ -163,169 +109,38 @@ public function claimItem($lease_time = 30) {
    * {@inheritdoc}
    */
   public function releaseItem($item) {
-    try {
-      $update = $this->connection->update(static::TABLE_NAME)
-        ->fields(array(
-          'expire' => 0,
-        ))
-        ->condition('item_id', $item->item_id);
+    $update = $this->connection->update('queue')
+      ->fields(array(
+        'expire' => 0,
+      ))
+      ->condition('item_id', $item->item_id);
       return $update->execute();
-    }
-    catch (\Exception $e) {
-      $this->catchException($e);
-      // If the table doesn't exist we should consider the item released.
-      return TRUE;
-    }
   }
 
   /**
    * {@inheritdoc}
    */
   public function deleteItem($item) {
-    try {
-      $this->connection->delete(static::TABLE_NAME)
-        ->condition('item_id', $item->item_id)
-        ->execute();
-    }
-    catch (\Exception $e) {
-      $this->catchException($e);
-    }
+    $this->connection->delete('queue')
+      ->condition('item_id', $item->item_id)
+      ->execute();
   }
 
   /**
    * {@inheritdoc}
    */
   public function createQueue() {
-    // All tasks are stored in a single database table (which is created on
-    // demand) so there is nothing we need to do to create a new queue.
+    // All tasks are stored in a single database table (which is created when
+    // Drupal is first installed) so there is nothing we need to do to create
+    // a new queue.
   }
 
   /**
    * {@inheritdoc}
    */
   public function deleteQueue() {
-    try {
-      $this->connection->delete(static::TABLE_NAME)
-        ->condition('name', $this->name)
-        ->execute();
-    }
-    catch (\Exception $e) {
-      $this->catchException($e);
-    }
+    $this->connection->delete('queue')
+      ->condition('name', $this->name)
+      ->execute();
   }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function garbageCollection() {
-    try {
-      // Clean up the queue for failed batches.
-      $this->connection->delete(static::TABLE_NAME)
-        ->condition('created', REQUEST_TIME - 864000, '<')
-        ->condition('name', 'drupal_batch:%', 'LIKE')
-        ->execute();
-
-      // Reset expired items in the default queue implementation table. If that's
-      // not used, this will simply be a no-op.
-      $this->connection->update(static::TABLE_NAME)
-        ->fields(array(
-          'expire' => 0,
-        ))
-        ->condition('expire', 0, '<>')
-        ->condition('expire', REQUEST_TIME, '<')
-        ->execute();
-    }
-    catch (\Exception $e) {
-      $this->catchException($e);
-    }
-  }
-
-  /**
-   * Check if the table exists and create it if not.
-   */
-  protected function ensureTableExists() {
-    try {
-      $database_schema = $this->connection->schema();
-      if (!$database_schema->tableExists(static::TABLE_NAME)) {
-        $schema_definition = $this->schemaDefinition();
-        $database_schema->createTable(static::TABLE_NAME, $schema_definition);
-        return TRUE;
-      }
-    }
-    // If another process has already created the queue table, attempting to
-    // recreate it will throw an exception. In this case just catch the
-    // exception and do nothing.
-    catch (SchemaObjectExistsException $e) {
-      return TRUE;
-    }
-    return FALSE;
-  }
-
-  /**
-   * Act on an exception when queue might be stale.
-   *
-   * If the table does not yet exist, that's fine, but if the table exists and
-   * yet the query failed, then the queue is stale and the exception needs to
-   * propagate.
-   *
-   * @param $e
-   *   The exception.
-   *
-   * @throws \Exception
-   *   If the table exists the exception passed in is rethrown.
-   */
-  protected function catchException(\Exception $e) {
-    if ($this->connection->schema()->tableExists(static::TABLE_NAME)) {
-      throw $e;
-    }
-  }
-
-  /**
-   * Defines the schema for the queue table.
-   */
-  public function schemaDefinition() {
-    return [
-      'description' => 'Stores items in queues.',
-      'fields' => [
-        'item_id' => [
-          'type' => 'serial',
-          'unsigned' => TRUE,
-          'not null' => TRUE,
-          'description' => 'Primary Key: Unique item ID.',
-        ],
-        'name' => [
-          'type' => 'varchar_ascii',
-          'length' => 255,
-          'not null' => TRUE,
-          'default' => '',
-          'description' => 'The queue name.',
-        ],
-        'data' => [
-          'type' => 'blob',
-          'not null' => FALSE,
-          'size' => 'big',
-          'serialize' => TRUE,
-          'description' => 'The arbitrary data for the item.',
-        ],
-        'expire' => [
-          'type' => 'int',
-          'not null' => TRUE,
-          'default' => 0,
-          'description' => 'Timestamp when the claim lease expires on the item.',
-        ],
-        'created' => [
-          'type' => 'int',
-          'not null' => TRUE,
-          'default' => 0,
-          'description' => 'Timestamp when the item was created.',
-        ],
-      ],
-      'primary key' => ['item_id'],
-      'indexes' => [
-        'name_created' => ['name', 'created'],
-        'expire' => ['expire'],
-      ],
-    ];
-  }
-
 }
diff --git a/core/lib/Drupal/Core/Queue/QueueGarbageCollectionInterface.php b/core/lib/Drupal/Core/Queue/QueueGarbageCollectionInterface.php
deleted file mode 100644
index 63d440a..0000000
--- a/core/lib/Drupal/Core/Queue/QueueGarbageCollectionInterface.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\Core\Queue\QueueGarbageCollectionInterface.
- */
-
-namespace Drupal\Core\Queue;
-
-/**
- * If the Drupal 'queue' service implements this interface, the
- * garbageCollection() method will be called during cron.
- *
- * @see system_cron()
- */
-interface QueueGarbageCollectionInterface {
-
-  /**
-   * Cleans queues of garbage.
-   */
-  public function garbageCollection();
-
-}
diff --git a/core/lib/Drupal/Core/Render/Element/HtmlTag.php b/core/lib/Drupal/Core/Render/Element/HtmlTag.php
index 1d0a243..5ec0d3f 100644
--- a/core/lib/Drupal/Core/Render/Element/HtmlTag.php
+++ b/core/lib/Drupal/Core/Render/Element/HtmlTag.php
@@ -165,7 +165,7 @@ public static function preRenderConditionalComments($element) {
     // conditional comment markup. The conditional comment expression is
     // evaluated by Internet Explorer only. To control the rendering by other
     // browsers, use either the "downlevel-hidden" or "downlevel-revealed"
-    // technique. See http://wikipedia.org/wiki/Conditional_comment
+    // technique. See http://en.wikipedia.org/wiki/Conditional_comment
     // for details.
 
     // Ensure what we are dealing with is safe.
diff --git a/core/lib/Drupal/Core/StreamWrapper/LocalReadOnlyStream.php b/core/lib/Drupal/Core/StreamWrapper/LocalReadOnlyStream.php
index ad4636c..4013d0f 100644
--- a/core/lib/Drupal/Core/StreamWrapper/LocalReadOnlyStream.php
+++ b/core/lib/Drupal/Core/StreamWrapper/LocalReadOnlyStream.php
@@ -104,7 +104,7 @@ public function stream_lock($operation) {
    * @return bool
    *   FALSE as data will not be written.
    *
-   * @see http://php.net/manual/streamwrapper.stream-write.php
+   * @see http://php.net/manual/en/streamwrapper.stream-write.php
    */
   public function stream_write($data) {
     trigger_error('stream_write() not supported for read-only stream wrappers', E_USER_WARNING);
@@ -158,7 +158,7 @@ public function stream_truncate($new_size) {
    *   TRUE so that file_delete() will remove db reference to file. File is not
    *   actually deleted.
    *
-   * @see http://php.net/manual/streamwrapper.unlink.php
+   * @see http://php.net/manual/en/streamwrapper.unlink.php
    */
   public function unlink($uri) {
     trigger_error('unlink() not supported for read-only stream wrappers', E_USER_WARNING);
@@ -178,7 +178,7 @@ public function unlink($uri) {
    * @return bool
    *   FALSE as file will never be renamed.
    *
-   * @see http://php.net/manual/streamwrapper.rename.php
+   * @see http://php.net/manual/en/streamwrapper.rename.php
    */
   public function rename($from_uri, $to_uri) {
     trigger_error('rename() not supported for read-only stream wrappers', E_USER_WARNING);
@@ -200,7 +200,7 @@ public function rename($from_uri, $to_uri) {
    * @return bool
    *   FALSE as directory will never be created.
    *
-   * @see http://php.net/manual/streamwrapper.mkdir.php
+   * @see http://php.net/manual/en/streamwrapper.mkdir.php
    */
   public function mkdir($uri, $mode, $options) {
     trigger_error('mkdir() not supported for read-only stream wrappers', E_USER_WARNING);
@@ -220,7 +220,7 @@ public function mkdir($uri, $mode, $options) {
    * @return bool
    *   FALSE as directory will never be deleted.
    *
-   * @see http://php.net/manual/streamwrapper.rmdir.php
+   * @see http://php.net/manual/en/streamwrapper.rmdir.php
    */
   public function rmdir($uri, $options) {
     trigger_error('rmdir() not supported for read-only stream wrappers', E_USER_WARNING);
diff --git a/core/lib/Drupal/Core/StreamWrapper/PhpStreamWrapperInterface.php b/core/lib/Drupal/Core/StreamWrapper/PhpStreamWrapperInterface.php
index 5091b8f..de6d66e 100644
--- a/core/lib/Drupal/Core/StreamWrapper/PhpStreamWrapperInterface.php
+++ b/core/lib/Drupal/Core/StreamWrapper/PhpStreamWrapperInterface.php
@@ -10,7 +10,7 @@
 /**
  * Defines a generic PHP stream wrapper interface.
  *
- * @see http://php.net/manual/class.streamwrapper.php
+ * @see http://www.php.net/manual/class.streamwrapper.php
  */
 interface PhpStreamWrapperInterface {
 
@@ -116,7 +116,7 @@ public function stream_lock($operation);
    *   Returns TRUE on success or FALSE on failure. If $option is not
    *   implemented, FALSE should be returned.
    *
-   * @see http://php.net/manual/streamwrapper.stream-metadata.php
+   * @see http://www.php.net/manual/streamwrapper.stream-metadata.php
    */
   public function stream_metadata($path, $option, $value);
 
diff --git a/core/lib/Drupal/Core/StreamWrapper/ReadOnlyStream.php b/core/lib/Drupal/Core/StreamWrapper/ReadOnlyStream.php
index cc6da4b..a7201d2 100644
--- a/core/lib/Drupal/Core/StreamWrapper/ReadOnlyStream.php
+++ b/core/lib/Drupal/Core/StreamWrapper/ReadOnlyStream.php
@@ -138,7 +138,7 @@ public function stream_lock($operation) {
    * @return bool
    *   FALSE as data will not be written.
    *
-   * @see http://php.net/manual/streamwrapper.stream-write.php
+   * @see http://php.net/manual/en/streamwrapper.stream-write.php
    */
   public function stream_write($data) {
     trigger_error('stream_write() not supported for read-only stream wrappers', E_USER_WARNING);
@@ -192,7 +192,7 @@ public function stream_truncate($new_size) {
    *   TRUE so that file_delete() will remove db reference to file. File is not
    *   actually deleted.
    *
-   * @see http://php.net/manual/streamwrapper.unlink.php
+   * @see http://php.net/manual/en/streamwrapper.unlink.php
    */
   public function unlink($uri) {
     trigger_error('unlink() not supported for read-only stream wrappers', E_USER_WARNING);
@@ -212,7 +212,7 @@ public function unlink($uri) {
    * @return bool
    *   FALSE as file will never be renamed.
    *
-   * @see http://php.net/manual/streamwrapper.rename.php
+   * @see http://php.net/manual/en/streamwrapper.rename.php
    */
   public function rename($from_uri, $to_uri) {
     trigger_error('rename() not supported for read-only stream wrappers', E_USER_WARNING);
@@ -234,7 +234,7 @@ public function rename($from_uri, $to_uri) {
    * @return bool
    *   FALSE as directory will never be created.
    *
-   * @see http://php.net/manual/streamwrapper.mkdir.php
+   * @see http://php.net/manual/en/streamwrapper.mkdir.php
    */
   public function mkdir($uri, $mode, $options) {
     trigger_error('mkdir() not supported for read-only stream wrappers', E_USER_WARNING);
@@ -254,7 +254,7 @@ public function mkdir($uri, $mode, $options) {
    * @return bool
    *   FALSE as directory will never be deleted.
    *
-   * @see http://php.net/manual/streamwrapper.rmdir.php
+   * @see http://php.net/manual/en/streamwrapper.rmdir.php
    */
   public function rmdir($uri, $options) {
     trigger_error('rmdir() not supported for read-only stream wrappers', E_USER_WARNING);
diff --git a/core/lib/Drupal/Core/Template/TwigExtension.php b/core/lib/Drupal/Core/Template/TwigExtension.php
index 0632db5..5f225d3 100644
--- a/core/lib/Drupal/Core/Template/TwigExtension.php
+++ b/core/lib/Drupal/Core/Template/TwigExtension.php
@@ -15,7 +15,7 @@
 use Drupal\Component\Utility\Html;
 use Drupal\Component\Utility\SafeMarkup;
 use Drupal\Component\Render\MarkupInterface;
-use Drupal\Core\Datetime\DateFormatterInterface;
+use Drupal\Core\Datetime\DateFormatter;
 use Drupal\Core\Render\RenderableInterface;
 use Drupal\Core\Render\RendererInterface;
 use Drupal\Core\Routing\UrlGeneratorInterface;
@@ -55,7 +55,7 @@ class TwigExtension extends \Twig_Extension {
   /**
    * The date formatter.
    *
-   * @var \Drupal\Core\Datetime\DateFormatterInterface
+   * @var \Drupal\Core\Datetime\DateFormatter
    */
   protected $dateFormatter;
 
@@ -118,7 +118,7 @@ public function setThemeManager(ThemeManagerInterface $theme_manager) {
    *
    * @return $this
    */
-  public function setDateFormatter(DateFormatterInterface $date_formatter) {
+  public function setDateFormatter(DateFormatter $date_formatter) {
     $this->dateFormatter = $date_formatter;
     return $this;
   }
@@ -434,7 +434,7 @@ public function escapeFilter(\Twig_Environment $env, $arg, $strategy = 'html', $
         $return = (string) $arg;
       }
       // You can't throw exceptions in the magic PHP __toString methods, see
-      // http://php.net/manual/language.oop5.magic.php#object.tostring so
+      // http://php.net/manual/en/language.oop5.magic.php#object.tostring so
       // we also support a toString method.
       elseif (method_exists($arg, 'toString')) {
         $return = $arg->toString();
@@ -512,7 +512,7 @@ public function renderVar($arg) {
         return (string) $arg;
       }
       // You can't throw exceptions in the magic PHP __toString methods, see
-      // http://php.net/manual/language.oop5.magic.php#object.tostring so
+      // http://php.net/manual/en/language.oop5.magic.php#object.tostring so
       // we also support a toString method.
       elseif (method_exists($arg, 'toString')) {
         return $arg->toString();
diff --git a/core/lib/Drupal/Core/Template/TwigSandboxPolicy.php b/core/lib/Drupal/Core/Template/TwigSandboxPolicy.php
index eee6dad..a7bb43f 100644
--- a/core/lib/Drupal/Core/Template/TwigSandboxPolicy.php
+++ b/core/lib/Drupal/Core/Template/TwigSandboxPolicy.php
@@ -57,7 +57,6 @@ public function __construct() {
       'bundle',
       'get',
       '__toString',
-      'toString',
     ]);
     $this->whitelisted_methods = array_flip($whitelisted_methods);
 
diff --git a/core/lib/Drupal/Core/Theme/ThemeManager.php b/core/lib/Drupal/Core/Theme/ThemeManager.php
index 0cbd529..d4c6a2c 100644
--- a/core/lib/Drupal/Core/Theme/ThemeManager.php
+++ b/core/lib/Drupal/Core/Theme/ThemeManager.php
@@ -11,6 +11,7 @@
 use Drupal\Core\Render\Markup;
 use Drupal\Core\Routing\RouteMatchInterface;
 use Drupal\Core\Routing\StackedRouteMatchInterface;
+use Symfony\Component\HttpFoundation\RequestStack;
 use Drupal\Core\Extension\ModuleHandlerInterface;
 use Drupal\Core\Template\Attribute;
 
@@ -48,11 +49,9 @@ class ThemeManager implements ThemeManagerInterface {
   protected $themeInitialization;
 
   /**
-   * The module handler.
-   *
-   * @var \Drupal\Core\Extension\ModuleHandlerInterface
+   * @var \Symfony\Component\HttpFoundation\RequestStack
    */
-  protected $moduleHandler;
+  protected $requestStack;
 
   /**
    * The app root.
@@ -70,13 +69,15 @@ class ThemeManager implements ThemeManagerInterface {
    *   The theme negotiator.
    * @param \Drupal\Core\Theme\ThemeInitializationInterface $theme_initialization
    *   The theme initialization.
+   * @param \Symfony\Component\HttpFoundation\RequestStack $request_stack
+   *   The request stack.
    * @param \Drupal\Core\Extension\ModuleHandlerInterface $module_handler
-   *   The module handler.
    */
-  public function __construct($root, ThemeNegotiatorInterface $theme_negotiator, ThemeInitializationInterface $theme_initialization, ModuleHandlerInterface $module_handler) {
+  public function __construct($root, ThemeNegotiatorInterface $theme_negotiator, ThemeInitializationInterface $theme_initialization, RequestStack $request_stack, ModuleHandlerInterface $module_handler) {
     $this->root = $root;
     $this->themeNegotiator = $theme_negotiator;
     $this->themeInitialization = $theme_initialization;
+    $this->requestStack = $request_stack;
     $this->moduleHandler = $module_handler;
   }
 
diff --git a/core/lib/Drupal/Core/TypedData/Plugin/DataType/BinaryData.php b/core/lib/Drupal/Core/TypedData/Plugin/DataType/BinaryData.php
index 882bc7b..e9a3abc 100644
--- a/core/lib/Drupal/Core/TypedData/Plugin/DataType/BinaryData.php
+++ b/core/lib/Drupal/Core/TypedData/Plugin/DataType/BinaryData.php
@@ -14,7 +14,7 @@
  * The binary data type.
  *
  * The plain value of binary data is a PHP file resource, see
- * http://php.net/manual/language.types.resource.php. For setting the value
+ * http://php.net/manual/en/language.types.resource.php. For setting the value
  * a PHP file resource or a (absolute) stream resource URI may be passed.
  *
  * @DataType(
diff --git a/core/misc/ajax.js b/core/misc/ajax.js
index 225b2f0..b63bc03 100644
--- a/core/misc/ajax.js
+++ b/core/misc/ajax.js
@@ -484,11 +484,6 @@
    *
    * Allows developers to execute an Ajax request manually without specifying
    * an event to respond to.
-   *
-   * @return {object}
-   *   Returns the jQuery.Deferred object underlying the Ajax request. If
-   *   pre-serialization fails, the Deferred will be returned in the rejected
-   *   state.
    */
   Drupal.Ajax.prototype.execute = function () {
     // Do not perform another ajax command if one is already in progress.
@@ -498,17 +493,13 @@
 
     try {
       this.beforeSerialize(this.element, this.options);
-      // Return the jqXHR so that external code can hook into the Deferred API.
-      return $.ajax(this.options);
+      $.ajax(this.options);
     }
     catch (e) {
       // Unset the ajax.ajaxing flag here because it won't be unset during
       // the complete response.
       this.ajaxing = false;
       window.alert('An error occurred while attempting to process ' + this.options.url + ': ' + e.message);
-      // For consistency, return a rejected Deferred (i.e., jqXHR's superclass)
-      // so that calling code can take appropriate action.
-      return $.Deferred().reject();
     }
   };
 
diff --git a/core/misc/menu-leaf.png b/core/misc/menu-leaf.png
new file mode 100644
index 0000000..6b2d63f
--- /dev/null
+++ b/core/misc/menu-leaf.png
@@ -0,0 +1,3 @@
+PNG
+
+   IHDR         6|J   PLTE   E<   tRNS @f   IDAT[c` cfe ($b       IENDB`
\ No newline at end of file
diff --git a/core/modules/aggregator/aggregator.install b/core/modules/aggregator/aggregator.install
index e236628..a763639 100644
--- a/core/modules/aggregator/aggregator.install
+++ b/core/modules/aggregator/aggregator.install
@@ -17,7 +17,7 @@ function aggregator_requirements($phase) {
   );
   if (!$has_curl) {
     $requirements['curl']['severity'] = REQUIREMENT_ERROR;
-    $requirements['curl']['description'] = t('The Aggregator module could not be installed because the PHP <a href="http://php.net/manual/curl.setup.php">cURL</a> library is not available.');
+    $requirements['curl']['description'] = t('The Aggregator module could not be installed because the PHP <a href=":curl_url">cURL</a> library is not available.', array(':curl_url' => 'http://php.net/manual/curl.setup.php'));
   }
   return $requirements;
 }
diff --git a/core/modules/aggregator/src/FeedForm.php b/core/modules/aggregator/src/FeedForm.php
index 3f06ddb..aa5069c 100644
--- a/core/modules/aggregator/src/FeedForm.php
+++ b/core/modules/aggregator/src/FeedForm.php
@@ -21,7 +21,9 @@ class FeedForm extends ContentEntityForm {
    */
   public function save(array $form, FormStateInterface $form_state) {
     $feed = $this->entity;
-    if ($feed->save() == SAVED_UPDATED) {
+    $insert = (bool) $feed->id();
+    $feed->save();
+    if ($insert) {
       drupal_set_message($this->t('The feed %feed has been updated.', array('%feed' => $feed->label())));
       $form_state->setRedirectUrl($feed->urlInfo('canonical'));
     }
diff --git a/core/modules/aggregator/src/Plugin/aggregator/processor/DefaultProcessor.php b/core/modules/aggregator/src/Plugin/aggregator/processor/DefaultProcessor.php
index 7a4a698..95c6324 100644
--- a/core/modules/aggregator/src/Plugin/aggregator/processor/DefaultProcessor.php
+++ b/core/modules/aggregator/src/Plugin/aggregator/processor/DefaultProcessor.php
@@ -7,7 +7,6 @@
 
 namespace Drupal\aggregator\Plugin\aggregator\processor;
 
-use Drupal\aggregator\Entity\Item;
 use Drupal\aggregator\ItemStorageInterface;
 use Drupal\aggregator\Plugin\AggregatorPluginSettingsBase;
 use Drupal\aggregator\Plugin\ProcessorInterface;
@@ -216,7 +215,7 @@ public function process(FeedInterface $feed) {
         $entry = reset($entry);
       }
       else {
-        $entry = Item::create(array('langcode' => $feed->language()->getId()));
+        $entry = entity_create('aggregator_item', array('langcode' => $feed->language()->getId()));
       }
       if ($item['timestamp']) {
         $entry->setPostedTime($item['timestamp']);
diff --git a/core/modules/aggregator/src/Plugin/migrate/source/AggregatorFeed.php b/core/modules/aggregator/src/Plugin/migrate/source/AggregatorFeed.php
index 4348023..9dce5e9 100644
--- a/core/modules/aggregator/src/Plugin/migrate/source/AggregatorFeed.php
+++ b/core/modules/aggregator/src/Plugin/migrate/source/AggregatorFeed.php
@@ -37,8 +37,8 @@ public function fields() {
       'url' => $this->t('URL to the feed.'),
       'refresh' => $this->t('Refresh frequency in seconds.'),
       'checked' => $this->t('Last-checked unix timestamp.'),
-      'link' => $this->t('Parent website of the feed.'),
-      'description' => $this->t("Parent website's description of the feed."),
+      'link' => $this->t('Parent website of feed.'),
+      'description' => $this->t('Parent website\'s description fo the feed.'),
       'image' => $this->t('An image representing the feed.'),
       'etag' => $this->t('Entity tag HTTP response header.'),
       'modified' => $this->t('When the feed was last modified.'),
diff --git a/core/modules/aggregator/src/Tests/AggregatorTestBase.php b/core/modules/aggregator/src/Tests/AggregatorTestBase.php
index 13f0a77..d5b09e5 100644
--- a/core/modules/aggregator/src/Tests/AggregatorTestBase.php
+++ b/core/modules/aggregator/src/Tests/AggregatorTestBase.php
@@ -137,7 +137,7 @@ public function getFeedEditObject($feed_url = NULL, array $values = array()) {
       'url' => $feed_url,
       'refresh' => '900',
     );
-    return Feed::create($values);
+    return entity_create('aggregator_feed', $values);
   }
 
   /**
diff --git a/core/modules/aggregator/src/Tests/FeedParserTest.php b/core/modules/aggregator/src/Tests/FeedParserTest.php
index 8883089..f507302 100644
--- a/core/modules/aggregator/src/Tests/FeedParserTest.php
+++ b/core/modules/aggregator/src/Tests/FeedParserTest.php
@@ -8,7 +8,6 @@
 namespace Drupal\aggregator\Tests;
 
 use Drupal\Core\Url;
-use Drupal\aggregator\Entity\Feed;
 
 /**
  * Tests the built-in feed parser with valid feed samples.
@@ -90,7 +89,7 @@ public function testHtmlEntitiesSample() {
    */
   public function testRedirectFeed() {
     $redirect_url = Url::fromRoute('aggregator_test.redirect')->setAbsolute()->toString();
-    $feed = Feed::create(array('url' => $redirect_url, 'title' => $this->randomMachineName()));
+    $feed = entity_create('aggregator_feed', array('url' => $redirect_url, 'title' => $this->randomMachineName()));
     $feed->save();
     $feed->refreshItems();
 
@@ -104,7 +103,7 @@ public function testRedirectFeed() {
   public function testInvalidFeed() {
     // Simulate a typo in the URL to force a curl exception.
     $invalid_url = 'http:/www.drupal.org';
-    $feed = Feed::create(array('url' => $invalid_url, 'title' => $this->randomMachineName()));
+    $feed = entity_create('aggregator_feed', array('url' => $invalid_url, 'title' => $this->randomMachineName()));
     $feed->save();
 
     // Update the feed. Use the UI to be able to check the message easily.
diff --git a/core/modules/aggregator/tests/modules/aggregator_test/src/Controller/AggregatorTestRssController.php b/core/modules/aggregator/tests/modules/aggregator_test/src/Controller/AggregatorTestRssController.php
index 0df2b03..079cdd5 100644
--- a/core/modules/aggregator/tests/modules/aggregator_test/src/Controller/AggregatorTestRssController.php
+++ b/core/modules/aggregator/tests/modules/aggregator_test/src/Controller/AggregatorTestRssController.php
@@ -59,7 +59,7 @@ public function testFeed($use_last_modified, $use_etag, Request $request) {
     $response->headers->set('Content-Type', 'application/rss+xml; charset=utf-8');
 
     // Read actual feed from file.
-    $file_name = __DIR__ . '/../../aggregator_test_rss091.xml';
+    $file_name = drupal_get_path('module', 'aggregator_test') . '/aggregator_test_rss091.xml';
     $handle = fopen($file_name, 'r');
     $feed = fread($handle, filesize($file_name));
     fclose($handle);
diff --git a/core/modules/block/js/block.js b/core/modules/block/js/block.js
index b3c8c31..df9327b 100644
--- a/core/modules/block/js/block.js
+++ b/core/modules/block/js/block.js
@@ -78,78 +78,6 @@
         return;
       }
 
-      /**
-       * Function to check empty regions and toggle classes based on this.
-       *
-       * @param {jQuery} table
-       *   The jQuery object representing the table to inspect.
-       * @param {jQuery} rowObject
-       *   The jQuery object representing the table row.
-       */
-      function checkEmptyRegions(table, rowObject) {
-        table.find('tr.region-message').each(function () {
-          var $this = $(this);
-          // If the dragged row is in this region, but above the message row,
-          // swap it down one space.
-          if ($this.prev('tr').get(0) === rowObject.element) {
-            // Prevent a recursion problem when using the keyboard to move rows
-            // up.
-            if ((rowObject.method !== 'keyboard' || rowObject.direction === 'down')) {
-              rowObject.swap('after', this);
-            }
-          }
-          // This region has become empty.
-          if ($this.next('tr').is(':not(.draggable)') || $this.next('tr').length === 0) {
-            $this.removeClass('region-populated').addClass('region-empty');
-          }
-          // This region has become populated.
-          else if ($this.is('.region-empty')) {
-            $this.removeClass('region-empty').addClass('region-populated');
-          }
-        });
-      }
-
-      /**
-       * Function to update the last placed row with the correct classes.
-       *
-       * @param {jQuery} table
-       *   The jQuery object representing the table to inspect.
-       * @param {jQuery} rowObject
-       *   The jQuery object representing the table row.
-       */
-      function updateLastPlaced(table, rowObject) {
-        // Remove the color-success class from new block if applicable.
-        table.find('.color-success').removeClass('color-success');
-
-        var $rowObject = $(rowObject);
-        if (!$rowObject.is('.drag-previous')) {
-          table.find('.drag-previous').removeClass('drag-previous');
-          $rowObject.addClass('drag-previous');
-        }
-      }
-
-      /**
-       * Update block weights in the given region.
-       *
-       * @param {jQuery} table
-       *   Table with draggable items.
-       * @param {string} region
-       *   Machine name of region containing blocks to update.
-       */
-      function updateBlockWeights(table, region) {
-        // Calculate minimum weight.
-        var weight = -Math.round(table.find('.draggable').length / 2);
-        // Update the block weights.
-        table.find('.region-' + region + '-message').nextUntil('.region-title')
-          .find('select.block-weight').val(function () {
-            // Increment the weight before assigning it to prevent using the
-            // absolute minimum available weight. This way we always have an
-            // unused upper and lower bound, which makes manually setting the
-            // weights easier for users who prefer to do it that way.
-            return ++weight;
-          });
-      }
-
       var table = $('#blocks');
       // Get the blocks tableDrag object.
       var tableDrag = Drupal.tableDrag.blocks;
@@ -215,6 +143,70 @@
           // Remove focus from selectbox.
           select.trigger('blur');
         });
+
+      var updateLastPlaced = function ($table, rowObject) {
+        // Remove the color-success class from new block if applicable.
+        $table.find('.color-success').removeClass('color-success');
+
+        var $rowObject = $(rowObject);
+        if (!$rowObject.is('.drag-previous')) {
+          $table.find('.drag-previous').removeClass('drag-previous');
+          $rowObject.addClass('drag-previous');
+        }
+      };
+
+      /**
+       * Update block weights in the given region.
+       *
+       * @param {jQuery} $table
+       *   Table with draggable items.
+       * @param {string} region
+       *   Machine name of region containing blocks to update.
+       */
+      var updateBlockWeights = function ($table, region) {
+        // Calculate minimum weight.
+        var weight = -Math.round($table.find('.draggable').length / 2);
+        // Update the block weights.
+        $table.find('.region-' + region + '-message').nextUntil('.region-title')
+          .find('select.block-weight').val(function () {
+            // Increment the weight before assigning it to prevent using the
+            // absolute minimum available weight. This way we always have an
+            // unused upper and lower bound, which makes manually setting the
+            // weights easier for users who prefer to do it that way.
+            return ++weight;
+          });
+      };
+
+      /**
+       * Checks empty regions and toggles classes based on this.
+       *
+       * @param {jQuery} table
+       *   The jQuery object representing the table to inspect.
+       * @param {jQuery} rowObject
+       *   The jQuery object representing the table row.
+       */
+      var checkEmptyRegions = function (table, rowObject) {
+        table.find('tr.region-message').each(function () {
+          var $this = $(this);
+          // If the dragged row is in this region, but above the message row,
+          // swap it down one space.
+          if ($this.prev('tr').get(0) === rowObject.element) {
+            // Prevent a recursion problem when using the keyboard to move rows
+            // up.
+            if ((rowObject.method !== 'keyboard' || rowObject.direction === 'down')) {
+              rowObject.swap('after', this);
+            }
+          }
+          // This region has become empty.
+          if ($this.next('tr').is(':not(.draggable)') || $this.next('tr').length === 0) {
+            $this.removeClass('region-populated').addClass('region-empty');
+          }
+          // This region has become populated.
+          else if ($this.is('.region-empty')) {
+            $this.removeClass('region-empty').addClass('region-populated');
+          }
+        });
+      };
     }
   };
 
diff --git a/core/modules/block/src/BlockViewBuilder.php b/core/modules/block/src/BlockViewBuilder.php
index 32c7bfe..e7279ce 100644
--- a/core/modules/block/src/BlockViewBuilder.php
+++ b/core/modules/block/src/BlockViewBuilder.php
@@ -250,6 +250,6 @@ public static function preRender($build) {
       }
     }
     return $build;
-  }
+   }
 
 }
diff --git a/core/modules/block/src/Tests/BlockRenderOrderTest.php b/core/modules/block/src/Tests/BlockRenderOrderTest.php
index 07e6945..fa2913c 100644
--- a/core/modules/block/src/Tests/BlockRenderOrderTest.php
+++ b/core/modules/block/src/Tests/BlockRenderOrderTest.php
@@ -70,7 +70,7 @@ function testBlockRenderOrder() {
     $this->drupalGet('');
     $test_content = $this->getRawContent('');
 
-    $controller = $this->container->get('entity_type.manager')->getStorage('block');
+    $controller = $this->container->get('entity.manager')->getStorage('block');
     foreach ($controller->loadMultiple() as $return_block) {
       $id = $return_block->id();
       if ($return_block_weight = $return_block->getWeight()) {
diff --git a/core/modules/block/src/Tests/BlockStorageUnitTest.php b/core/modules/block/src/Tests/BlockStorageUnitTest.php
index db892cb..140f746 100644
--- a/core/modules/block/src/Tests/BlockStorageUnitTest.php
+++ b/core/modules/block/src/Tests/BlockStorageUnitTest.php
@@ -38,7 +38,7 @@ class BlockStorageUnitTest extends KernelTestBase {
   protected function setUp() {
     parent::setUp();
 
-    $this->controller = $this->container->get('entity_type.manager')->getStorage('block');
+    $this->controller = $this->container->get('entity.manager')->getStorage('block');
   }
 
   /**
diff --git a/core/modules/block/src/Tests/BlockTemplateSuggestionsTest.php b/core/modules/block/src/Tests/BlockTemplateSuggestionsTest.php
index 3c61d84..4b2ed69 100644
--- a/core/modules/block/src/Tests/BlockTemplateSuggestionsTest.php
+++ b/core/modules/block/src/Tests/BlockTemplateSuggestionsTest.php
@@ -7,7 +7,6 @@
 
 namespace Drupal\block\Tests;
 
-use Drupal\block\Entity\Block;
 use Drupal\simpletest\WebTestBase;
 
 /**
@@ -32,7 +31,8 @@ function testBlockThemeHookSuggestions() {
     // an underscore (not transformed) and a hyphen (transformed to underscore),
     // and generates possibilities for each level of derivative.
     // @todo Clarify this comment.
-    $block = Block::create(array(
+    /** @var \Drupal\block\BlockInterface $block */
+    $block = entity_create('block', array(
       'plugin' => 'system_menu_block:admin',
       'region' => 'footer',
       'id' => 'machinename',
diff --git a/core/modules/block/src/Tests/BlockTestBase.php b/core/modules/block/src/Tests/BlockTestBase.php
index e87b633..c0d96ad 100644
--- a/core/modules/block/src/Tests/BlockTestBase.php
+++ b/core/modules/block/src/Tests/BlockTestBase.php
@@ -8,7 +8,6 @@
 namespace Drupal\block\Tests;
 
 use Drupal\simpletest\WebTestBase;
-use Drupal\filter\Entity\FilterFormat;
 
 /**
  * Provides setup and helper methods for block module tests.
@@ -43,7 +42,7 @@ protected function setUp() {
     $this->config('system.site')->set('page.front', '/test-page')->save();
 
     // Create Full HTML text format.
-    $full_html_format = FilterFormat::create(array(
+    $full_html_format = entity_create('filter_format', array(
       'format' => 'full_html',
       'name' => 'Full HTML',
     ));
@@ -66,7 +65,7 @@ protected function setUp() {
       'sidebar_second',
       'footer',
     );
-    $block_storage = $this->container->get('entity_type.manager')->getStorage('block');
+    $block_storage = $this->container->get('entity.manager')->getStorage('block');
     $blocks = $block_storage->loadByProperties(array('theme' => $this->config('system.theme')->get('default')));
     foreach ($blocks as $block) {
       $block->delete();
diff --git a/core/modules/block/src/Tests/BlockViewBuilderTest.php b/core/modules/block/src/Tests/BlockViewBuilderTest.php
index fdfa089..331db82 100644
--- a/core/modules/block/src/Tests/BlockViewBuilderTest.php
+++ b/core/modules/block/src/Tests/BlockViewBuilderTest.php
@@ -55,7 +55,7 @@ protected function setUp() {
     parent::setUp();
 
     $this->controller = $this->container
-      ->get('entity_type.manager')
+      ->get('entity.manager')
       ->getStorage('block');
 
     \Drupal::state()->set('block_test.content', 'Llamas &gt; unicorns!');
@@ -327,7 +327,7 @@ protected function assertBlockRenderedWithExpectedCacheability(array $expected_k
    *   The render array.
    */
   protected function getBlockRenderArray() {
-    return $this->container->get('entity_type.manager')->getViewBuilder('block')->view($this->block, 'block');
+    return $this->container->get('entity.manager')->getViewBuilder('block')->view($this->block, 'block');
   }
 
 }
diff --git a/core/modules/block/src/Tests/Views/DisplayBlockTest.php b/core/modules/block/src/Tests/Views/DisplayBlockTest.php
index 9fbd519..3adefe0 100644
--- a/core/modules/block/src/Tests/Views/DisplayBlockTest.php
+++ b/core/modules/block/src/Tests/Views/DisplayBlockTest.php
@@ -145,7 +145,7 @@ public function testDeleteBlockDisplay() {
     $this->assertBlockAppears($block_3);
     $this->assertBlockAppears($block_4);
 
-    $block_storage = $this->container->get('entity_type.manager')->getStorage('block');
+    $block_storage = $this->container->get('entity.manager')->getStorage('block');
 
     // Remove the block display, so both block entities from the first view
     // should both disappear.
@@ -192,7 +192,7 @@ public function testViewsBlockForm() {
     $this->assertNoFieldById('edit-machine-name', 'views_block__test_view_block_1', 'The machine name is hidden on the views block form.');
     // Save the block.
     $this->drupalPostForm(NULL, array(), t('Save block'));
-    $storage = $this->container->get('entity_type.manager')->getStorage('block');
+    $storage = $this->container->get('entity.manager')->getStorage('block');
     $block = $storage->load('views_block__test_view_block_block_1');
     // This will only return a result if our new block has been created with the
     // expected machine name.
diff --git a/core/modules/block/templates/block-list.html.twig b/core/modules/block/templates/block-list.html.twig
new file mode 100644
index 0000000..854d3ce
--- /dev/null
+++ b/core/modules/block/templates/block-list.html.twig
@@ -0,0 +1,23 @@
+{#
+/**
+ * @file
+ * Two column template for the block add/edit form.
+ *
+ * This template will be used when a block edit form specifies 'block_edit_form'
+ * as its #theme callback.  Otherwise, by default, block add/edit forms will be
+ * themed by form.html.twig.
+ *
+ * Available variables:
+ * - form: The block add/edit form.
+ *
+ * @ingroup themeable
+ */
+#}
+<div class="layout-block-list clearfix">
+  <div class="layout-region block-list-primary">
+    {{ form|without('place_blocks') }}
+  </div>
+  <div class="layout-region block-list-secondary">
+    {{ form.place_blocks }}
+  </div>
+</div>
diff --git a/core/modules/block_content/block_content.module b/core/modules/block_content/block_content.module
index e7a59e7..74fe9f1 100644
--- a/core/modules/block_content/block_content.module
+++ b/core/modules/block_content/block_content.module
@@ -79,12 +79,12 @@ function block_content_add_body_field($block_type_id, $label = 'Body') {
   // Add or remove the body field, as needed.
   $field = FieldConfig::loadByName('block_content', $block_type_id, 'body');
   if (empty($field)) {
-    $field = FieldConfig::create([
+    $field = entity_create('field_config', array(
       'field_storage' =>  FieldStorageConfig::loadByName('block_content', 'body'),
       'bundle' => $block_type_id,
       'label' => $label,
       'settings' => array('display_summary' => FALSE),
-    ]);
+    ));
     $field->save();
 
     // Assign widget settings for the 'default' form mode.
diff --git a/core/modules/block_content/src/BlockContentViewsData.php b/core/modules/block_content/src/BlockContentViewsData.php
index 69132b5..40963ce 100644
--- a/core/modules/block_content/src/BlockContentViewsData.php
+++ b/core/modules/block_content/src/BlockContentViewsData.php
@@ -29,8 +29,8 @@ public function getViewsData() {
     $data['block_content_field_data']['type']['field']['id'] = 'field';
 
     $data['block_content']['block_content_listing_empty'] = array(
-      'title' => $this->t('Empty block library behavior'),
-      'help' => $this->t('Provides a link to add a new block.'),
+      'title' => t('Empty block library behavior'),
+      'help' => t('Provides a link to add a new block.'),
       'area' => array(
         'id' => 'block_content_listing_empty',
       ),
diff --git a/core/modules/block_content/src/Tests/BlockContentCacheTagsTest.php b/core/modules/block_content/src/Tests/BlockContentCacheTagsTest.php
index 567d5e1..8f543c3 100644
--- a/core/modules/block_content/src/Tests/BlockContentCacheTagsTest.php
+++ b/core/modules/block_content/src/Tests/BlockContentCacheTagsTest.php
@@ -7,8 +7,6 @@
 
 namespace Drupal\block_content\Tests;
 
-use Drupal\block_content\Entity\BlockContent;
-use Drupal\block_content\Entity\BlockContentType;
 use Drupal\Core\Cache\Cache;
 use Drupal\Core\Entity\EntityInterface;
 use Drupal\Core\Language\LanguageInterface;
@@ -31,7 +29,7 @@ class BlockContentCacheTagsTest extends EntityCacheTagsTestBase {
    * {@inheritdoc}
    */
   protected function createEntity() {
-    $block_content_type = BlockContentType::create(array(
+    $block_content_type = entity_create('block_content_type', array(
       'id' => 'basic',
       'label' => 'basic',
       'revision' => FALSE
@@ -40,7 +38,7 @@ protected function createEntity() {
     block_content_add_body_field($block_content_type->id());
 
     // Create a "Llama" custom block.
-    $block_content = BlockContent::create(array(
+    $block_content = entity_create('block_content', array(
       'info' => 'Llama',
       'type' => 'basic',
       'body' => array(
diff --git a/core/modules/block_content/src/Tests/BlockContentSaveTest.php b/core/modules/block_content/src/Tests/BlockContentSaveTest.php
index 894099f..75c2801 100644
--- a/core/modules/block_content/src/Tests/BlockContentSaveTest.php
+++ b/core/modules/block_content/src/Tests/BlockContentSaveTest.php
@@ -46,7 +46,7 @@ public function testImport() {
       'type' => 'basic',
       'id' => $test_id
     );
-    $block = BlockContent::create($block_array);
+    $block = entity_create('block_content', $block_array);
     $block->enforceIsNew(TRUE);
     $block->save();
 
diff --git a/core/modules/block_content/src/Tests/BlockContentTestBase.php b/core/modules/block_content/src/Tests/BlockContentTestBase.php
index cc6e3ad..ceb5846 100644
--- a/core/modules/block_content/src/Tests/BlockContentTestBase.php
+++ b/core/modules/block_content/src/Tests/BlockContentTestBase.php
@@ -7,8 +7,6 @@
 
 namespace Drupal\block_content\Tests;
 
-use Drupal\block_content\Entity\BlockContent;
-use Drupal\block_content\Entity\BlockContentType;
 use Drupal\simpletest\WebTestBase;
 
 /**
@@ -80,7 +78,7 @@ protected function setUp() {
    */
   protected function createBlockContent($title = FALSE, $bundle = 'basic', $save = TRUE) {
     $title = ($title ? : $this->randomMachineName());
-    $block_content = BlockContent::create(array(
+    $block_content = entity_create('block_content', array(
       'info' => $title,
       'type' => $bundle,
       'langcode' => 'en'
@@ -103,7 +101,7 @@ protected function createBlockContent($title = FALSE, $bundle = 'basic', $save =
    *   Created custom block type.
    */
   protected function createBlockContentType($label, $create_body = FALSE) {
-    $bundle = BlockContentType::create(array(
+    $bundle = entity_create('block_content_type', array(
       'id' => $label,
       'label' => $label,
       'revision' => FALSE,
diff --git a/core/modules/block_content/src/Tests/BlockContentTranslationUITest.php b/core/modules/block_content/src/Tests/BlockContentTranslationUITest.php
index c32fb45..4e4fd6b 100644
--- a/core/modules/block_content/src/Tests/BlockContentTranslationUITest.php
+++ b/core/modules/block_content/src/Tests/BlockContentTranslationUITest.php
@@ -7,8 +7,6 @@
 
 namespace Drupal\block_content\Tests;
 
-use Drupal\block_content\Entity\BlockContent;
-use Drupal\block_content\Entity\BlockContentType;
 use Drupal\Component\Utility\Unicode;
 use Drupal\content_translation\Tests\ContentTranslationUITestBase;
 
@@ -62,7 +60,7 @@ protected function setUp() {
    */
   protected function setupBundle() {
     // Create the basic bundle since it is provided by standard.
-    $bundle = BlockContentType::create(array(
+    $bundle = entity_create('block_content_type', array(
       'id' => $this->bundle,
       'label' => $this->bundle,
       'revision' => FALSE
@@ -98,7 +96,7 @@ public function getTranslatorPermissions() {
   protected function createBlockContent($title = FALSE, $bundle = FALSE) {
     $title = ($title ? : $this->randomMachineName());
     $bundle = ($bundle ? : $this->bundle);
-    $block_content = BlockContent::create(array(
+    $block_content = entity_create('block_content', array(
       'info' => $title,
       'type' => $bundle,
       'langcode' => 'en'
@@ -164,7 +162,7 @@ protected function doTestBasicTranslation() {
   public function testDisabledBundle() {
     // Create a bundle that does not have translation enabled.
     $disabled_bundle = $this->randomMachineName();
-    $bundle = BlockContentType::create(array(
+    $bundle = entity_create('block_content_type', array(
       'id' => $disabled_bundle,
       'label' => $disabled_bundle,
       'revision' => FALSE
diff --git a/core/modules/block_content/src/Tests/Views/BlockContentTestBase.php b/core/modules/block_content/src/Tests/Views/BlockContentTestBase.php
index fdbec95..4d65dcf 100644
--- a/core/modules/block_content/src/Tests/Views/BlockContentTestBase.php
+++ b/core/modules/block_content/src/Tests/Views/BlockContentTestBase.php
@@ -7,7 +7,6 @@
 
 namespace Drupal\block_content\Tests\Views;
 
-use Drupal\block_content\Entity\BlockContent;
 use Drupal\block_content\Entity\BlockContentType;
 use Drupal\Component\Utility\SafeMarkup;
 use Drupal\views\Tests\ViewTestBase;
@@ -70,7 +69,7 @@ protected function createBlockContent(array $settings = array()) {
       'type' => 'basic',
       'langcode' => 'en',
     );
-    if ($block_content = BlockContent::create($settings)) {
+    if ($block_content = entity_create('block_content', $settings)) {
       $status = $block_content->save();
     }
     $this->assertEqual($status, SAVED_NEW, SafeMarkup::format('Created block content %info.', array('%info' => $block_content->label())));
@@ -101,7 +100,7 @@ protected function createBlockContentType(array $values = array()) {
       'label' => $id,
       'revision' => FALSE
     );
-    $bundle = BlockContentType::create($values);
+    $bundle = entity_create('block_content_type', $values);
     $status = $bundle->save();
     block_content_add_body_field($bundle->id());
 
diff --git a/core/modules/block_content/src/Tests/Views/RevisionRelationshipsTest.php b/core/modules/block_content/src/Tests/Views/RevisionRelationshipsTest.php
index f3a7e25..44f7c75 100644
--- a/core/modules/block_content/src/Tests/Views/RevisionRelationshipsTest.php
+++ b/core/modules/block_content/src/Tests/Views/RevisionRelationshipsTest.php
@@ -4,7 +4,6 @@
  * @file
  * Contains \Drupal\block_content\Tests\Views\RevisionRelationshipsTest.
  */
-
 namespace Drupal\block_content\Tests\Views;
 
 use Drupal\block_content\Entity\BlockContentType;
diff --git a/core/modules/book/book.module b/core/modules/book/book.module
index f9a6ad2..f55f5d6 100644
--- a/core/modules/book/book.module
+++ b/core/modules/book/book.module
@@ -88,7 +88,7 @@ function book_entity_type_build(array &$entity_types) {
 /**
  * Implements hook_node_links_alter().
  */
-function book_node_links_alter(array &$links, NodeInterface $node, array &$context) {
+function book_node_links_alter(array &$node_links, NodeInterface $node, array &$context) {
   if ($context['view_mode'] != 'rss') {
     $account = \Drupal::currentUser();
 
@@ -97,14 +97,14 @@ function book_node_links_alter(array &$links, NodeInterface $node, array &$conte
         $child_type = \Drupal::config('book.settings')->get('child_type');
         $access_control_handler = \Drupal::entityManager()->getAccessControlHandler('node');
         if (($account->hasPermission('add content to books') || $account->hasPermission('administer book outlines')) && $access_control_handler->createAccess($child_type) && $node->isPublished() && $node->book['depth'] < BookManager::BOOK_MAX_DEPTH) {
-          $book_links['book_add_child'] = array(
+          $links['book_add_child'] = array(
             'title' => t('Add child page'),
             'url' => Url::fromRoute('node.add', ['node_type' => $child_type], ['query' => ['parent' => $node->id()]]),
           );
         }
 
         if ($account->hasPermission('access printer-friendly version')) {
-          $book_links['book_printer'] = array(
+          $links['book_printer'] = array(
             'title' => t('Printer-friendly version'),
             'url' => Url::fromRoute('book.export', [
               'type' => 'html',
@@ -116,10 +116,10 @@ function book_node_links_alter(array &$links, NodeInterface $node, array &$conte
       }
     }
 
-    if (!empty($book_links)) {
-      $links['book'] = array(
+    if (!empty($links)) {
+      $node_links['book'] = array(
         '#theme' => 'links__node__book',
-        '#links' => $book_links,
+        '#links' => $links,
         '#attributes' => array('class' => array('links', 'inline')),
       );
     }
diff --git a/core/modules/book/src/BookBreadcrumbBuilder.php b/core/modules/book/src/BookBreadcrumbBuilder.php
index 4bef0e3..2fc237c 100644
--- a/core/modules/book/src/BookBreadcrumbBuilder.php
+++ b/core/modules/book/src/BookBreadcrumbBuilder.php
@@ -88,7 +88,10 @@ public function build(RouteMatchInterface $route_match) {
       $depth = 1;
       while (!empty($book['p' . ($depth + 1)])) {
         if (!empty($parent_books[$book['p' . $depth]]) && ($parent_book = $parent_books[$book['p' . $depth]])) {
-          if ($parent_book->access('view', $this->account)) {
+          $access = $parent_book->access('view', $this->account, TRUE);
+          $breadcrumb->addCacheableDependency($access);
+          if ($access->isAllowed()) {
+            $breadcrumb->addCacheableDependency($parent_book);
             $links[] = Link::createFromRoute($parent_book->label(), 'entity.node.canonical', array('node' => $parent_book->id()));
           }
         }
diff --git a/core/modules/book/src/Tests/BookBreadcrumbTest.php b/core/modules/book/src/Tests/BookBreadcrumbTest.php
new file mode 100644
index 0000000..58529ef
--- /dev/null
+++ b/core/modules/book/src/Tests/BookBreadcrumbTest.php
@@ -0,0 +1,210 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\book\Tests\BookBreadcrumbTest.
+ */
+
+namespace Drupal\book\Tests;
+
+use Drupal\simpletest\WebTestBase;
+
+/**
+ * Create a book, add pages, and test book interface.
+ *
+ * @group book
+ */
+class BookBreadcrumbTest extends WebTestBase {
+
+  /**
+   * Modules to install.
+   *
+   * @var array
+   */
+  public static $modules = array('book', 'block', 'book_breadcrumb_test');
+
+  /**
+   * A book node.
+   *
+   * @var \Drupal\node\NodeInterface
+   */
+  protected $book;
+
+  /**
+   * A user with permission to create and edit books.
+   *
+   * @var \Drupal\user\Entity\User
+   */
+  protected $bookAuthor;
+
+  /**
+   * A user without the 'node test view' permission.
+   *
+   * @var \Drupal\user\UserInterface
+   */
+  protected $webUserWithoutNodeAccess;
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+    $this->drupalPlaceBlock('system_breadcrumb_block');
+    $this->drupalPlaceBlock('page_title_block');
+
+    // Create users.
+    $this->bookAuthor = $this->drupalCreateUser(array('create new books', 'create book content', 'edit own book content', 'add content to books'));
+    $this->adminUser = $this->drupalCreateUser(array('create new books', 'create book content', 'edit any book content', 'delete any book content', 'add content to books', 'administer blocks', 'administer permissions', 'administer book outlines', 'administer content types', 'administer site configuration'));
+  }
+
+  /**
+   * Creates a new book with a page hierarchy.
+   *
+   * @return \Drupal\node\NodeInterface[]
+   */
+  function createBreadcrumbBook() {
+    // Create new book.
+    $this->drupalLogin($this->bookAuthor);
+
+    $this->book = $this->createBookNode('new');
+    $book = $this->book;
+
+    /*
+     * Add page hierarchy to book.
+     * Book
+     *  |- Node 0
+     *   |- Node 1
+     *   |- Node 2
+     *    |- Node 3
+     *     |- Node 4
+     *      |- Node 5
+     *  |- Node 6
+     */
+    $nodes = array();
+    $nodes[0] = $this->createBookNode($book->id()); // Node 0.
+    $nodes[1] = $this->createBookNode($book->id(), $nodes[0]->id()); // Node 1.
+    $nodes[2] = $this->createBookNode($book->id(), $nodes[0]->id()); // Node 2.
+    $nodes[3] = $this->createBookNode($book->id(), $nodes[2]->id()); // Node 3.
+    $nodes[4] = $this->createBookNode($book->id(), $nodes[3]->id()); // Node 4.
+    $nodes[5] = $this->createBookNode($book->id(), $nodes[4]->id()); // Node 5.
+    $nodes[6] = $this->createBookNode($book->id()); // Node 6.
+
+    $this->drupalLogout();
+
+    return $nodes;
+  }
+
+  /**
+   * Creates a book node.
+   *
+   * @param int|string $book_nid
+   *   A book node ID or set to 'new' to create a new book.
+   * @param int|null $parent
+   *   (optional) Parent book reference ID. Defaults to NULL.
+   *
+   * @return \Drupal\node\NodeInterface
+   *   The created node.
+   */
+  function createBookNode($book_nid, $parent = NULL) {
+    // $number does not use drupal_static as it should not be reset
+    // since it uniquely identifies each call to createBookNode().
+    static $number = 0; // Used to ensure that when sorted nodes stay in same order.
+
+    $edit = array();
+    $edit['title[0][value]'] = str_pad($number, 2, '0', STR_PAD_LEFT) . ' - SimpleTest test node ' . $this->randomMachineName(10);
+    $edit['body[0][value]'] = 'SimpleTest test body ' . $this->randomMachineName(32) . ' ' . $this->randomMachineName(32);
+    $edit['book[bid]'] = $book_nid;
+
+    if ($parent !== NULL) {
+      $this->drupalPostForm('node/add/book', $edit, t('Change book (update list of parents)'));
+
+      $edit['book[pid]'] = $parent;
+      $this->drupalPostForm(NULL, $edit, t('Save'));
+      // Make sure the parent was flagged as having children.
+      $parent_node = \Drupal::entityManager()->getStorage('node')->loadUnchanged($parent);
+      $this->assertFalse(empty($parent_node->book['has_children']), 'Parent node is marked as having children');
+    }
+    else {
+      $this->drupalPostForm('node/add/book', $edit, t('Save'));
+    }
+
+    // Check to make sure the book node was created.
+    $node = $this->drupalGetNodeByTitle($edit['title[0][value]']);
+    $this->assertNotNull(($node === FALSE ? NULL : $node), 'Book node found in database.');
+    $number++;
+
+    return $node;
+  }
+
+  /**
+   * Test that the breadcrumb is updated when book content changes.
+   */
+  public function testBreadcrumbTitleUpdates() {
+    // Create a new book.
+    $nodes = $this->createBreadcrumbBook();
+    $book = $this->book;
+
+    $this->drupalLogin($this->bookAuthor);
+
+    $this->drupalGet($nodes[4]->toUrl());
+    // Fetch each node title in the current breadcrumb.
+    $links = $this->xpath('//nav[@class="breadcrumb"]/ol/li/a');
+    $got_breadcrumb = array();
+    foreach ($links as $link) {
+      $got_breadcrumb[] = (string) $link;
+    }
+    // Home link and four parent book nodes should be in the breadcrumb.
+    $this->assertEqual(5, count($got_breadcrumb));
+    $this->assertEqual($nodes[3]->getTitle(), end($got_breadcrumb));
+    $edit = [
+      'title[0][value]' => 'Updated node5 title',
+    ];
+    $this->drupalPostForm($nodes[3]->toUrl('edit-form'), $edit, 'Save');
+    $this->drupalGet($nodes[4]->toUrl());
+    // Fetch each node title in the current breadcrumb.
+    $links = $this->xpath('//nav[@class="breadcrumb"]/ol/li/a');
+    $got_breadcrumb = array();
+    foreach ($links as $link) {
+      $got_breadcrumb[] = (string) $link;
+    }
+    $this->assertEqual(5, count($got_breadcrumb));
+    $this->assertEqual($edit['title[0][value]'], end($got_breadcrumb));
+  }
+
+  /**
+   * Test that the breadcrumb is updated when book access changes.
+   */
+  public function testBreadcrumbAccessUpdates() {
+    // Create a new book.
+    $nodes = $this->createBreadcrumbBook();
+    $this->drupalLogin($this->bookAuthor);
+    $edit = [
+      'title[0][value]' => "you can't see me",
+    ];
+    $this->drupalPostForm($nodes[3]->toUrl('edit-form'), $edit, 'Save');
+    $this->drupalGet($nodes[4]->toUrl());
+    $links = $this->xpath('//nav[@class="breadcrumb"]/ol/li/a');
+    $got_breadcrumb = array();
+    foreach ($links as $link) {
+      $got_breadcrumb[] = (string) $link;
+    }
+    $this->assertEqual(5, count($got_breadcrumb));
+    $this->assertEqual($edit['title[0][value]'], end($got_breadcrumb));
+    $config = $this->container->get('config.factory')->getEditable('book_breadcrumb_test.settings');
+    // Because the configuration isn't provided in config/install, save this
+    // twice to ensure the cache tag is invalidated.
+    $config->set('hide', TRUE)->save();
+    $config->set('hide', TRUE)->save();
+    $this->drupalGet($nodes[4]->toUrl());
+    $links = $this->xpath('//nav[@class="breadcrumb"]/ol/li/a');
+    $got_breadcrumb = array();
+    foreach ($links as $link) {
+      $got_breadcrumb[] = (string) $link;
+    }
+    $this->assertEqual(4, count($got_breadcrumb));
+    $this->assertEqual($nodes[2]->getTitle(), end($got_breadcrumb));
+    $this->drupalGet($nodes[3]->toUrl());
+    $this->assertResponse(403);
+  }
+
+}
diff --git a/core/modules/book/tests/modules/book_breadcrumb_test/book_breadcrumb_test.info.yml b/core/modules/book/tests/modules/book_breadcrumb_test/book_breadcrumb_test.info.yml
new file mode 100644
index 0000000..192fb71
--- /dev/null
+++ b/core/modules/book/tests/modules/book_breadcrumb_test/book_breadcrumb_test.info.yml
@@ -0,0 +1,6 @@
+name: 'Book module breadcrumb tests'
+type: module
+description: 'Support module for book module breadcrumb testing.'
+package: Testing
+version: VERSION
+core: 8.x
diff --git a/core/modules/book/tests/modules/book_breadcrumb_test/book_breadcrumb_test.module b/core/modules/book/tests/modules/book_breadcrumb_test/book_breadcrumb_test.module
new file mode 100644
index 0000000..526da71
--- /dev/null
+++ b/core/modules/book/tests/modules/book_breadcrumb_test/book_breadcrumb_test.module
@@ -0,0 +1,27 @@
+<?php
+
+/**
+ * @file
+ * Test module for testing the book module breadcrumb.
+ */
+
+use Drupal\Core\Access\AccessResultForbidden;
+use Drupal\Core\Access\AccessResultNeutral;
+use Drupal\Core\Session\AccountInterface;
+use Drupal\node\NodeInterface;
+
+/**
+ * Implements hook_node_access().
+ */
+function book_breadcrumb_test_node_access(NodeInterface $node, $operation, AccountInterface $account) {
+  $config = \Drupal::config('book_breadcrumb_test.settings');
+  if ($config->get('hide') && $node->getTitle() == "you can't see me" && $operation == 'view') {
+    $access = new AccessResultForbidden();
+  }
+  else {
+    $access = new AccessResultNeutral();
+  }
+  $access->addCacheableDependency($config);
+  $access->addCacheableDependency($node);
+  return $access;
+}
diff --git a/core/modules/book/tests/modules/book_breadcrumb_test/config/schema/book_breadcrumb_test.schema.yml b/core/modules/book/tests/modules/book_breadcrumb_test/config/schema/book_breadcrumb_test.schema.yml
new file mode 100644
index 0000000..3baf544
--- /dev/null
+++ b/core/modules/book/tests/modules/book_breadcrumb_test/config/schema/book_breadcrumb_test.schema.yml
@@ -0,0 +1,9 @@
+# Schema for the configuration files of the book_breadcrumb_test module.
+
+book_breadcrumb_test.settings:
+  type: config_object
+  label: 'Book Breadcrumb Test module settings'
+  mapping:
+    hide:
+      type: boolean
+      label: 'Setting for hiding content'
diff --git a/core/modules/book/tests/modules/book_test.info.yml b/core/modules/book/tests/modules/book_test/book_test.info.yml
similarity index 100%
rename from core/modules/book/tests/modules/book_test.info.yml
rename to core/modules/book/tests/modules/book_test/book_test.info.yml
diff --git a/core/modules/book/tests/modules/book_test.module b/core/modules/book/tests/modules/book_test/book_test.module
similarity index 100%
rename from core/modules/book/tests/modules/book_test.module
rename to core/modules/book/tests/modules/book_test/book_test.module
diff --git a/core/modules/ckeditor/ckeditor.module b/core/modules/ckeditor/ckeditor.module
index 1104815..3d5e9f2 100644
--- a/core/modules/ckeditor/ckeditor.module
+++ b/core/modules/ckeditor/ckeditor.module
@@ -27,8 +27,6 @@ function ckeditor_help($route_name, RouteMatchInterface $route_match) {
       $output .= '<dd>' . t('CKEditor only allow users to format content in accordance with the filter configuration of the specific text format. If a text format excludes certain HTML tags, the corresponding toolbar buttons are not displayed to users when they edit a text field in this format. For more information see the <a href=":filter">Filter help page</a>.', array(':filter' => \Drupal::url('help.page', array('name' => 'filter')))) . '</dd>';
       $output .= '<dt>' . t('Toggling between formatted text and HTML source') . '</dt>';
       $output .= '<dd>' . t('If the <em>Source</em> button is available in the toolbar, users can click this button to disable the visual editor and edit the HTML source directly. After toggling back, the visual editor uses the allowed HTML tags to format the text — independent of whether buttons for these tags are available in the toolbar. If the text format is set to <em>limit the use of HTML tags</em>, then all excluded tags will be stripped out of the HTML source when the user toggles back to the text editor.') . '</dd>';
-      $output .= '<dt>' . t('Check my spelling as I type') . '</dt>';
-      $output .= '<dd>' . t('By default, CKEditor is configured to leverage your browser\'s spell check capability. Make sure your browser\'s spell checker is enabled in your browser\'s settings. To access suggested corrections for misspelled words, it may be necessary to hold the <em>Control</em> or <em>command</em> (Mac) key while right-clicking the misspelling.') . '</dd>';
       $output .= '<dt>' . t('Accessibility features') . '</dt>';
       $output .= '<dd>' . t('The built in WYSIWYG editor (CKEditor) comes with a number of <a href=":features">accessibility features</a>. CKEditor comes with built in <a href=":shortcuts">keyboard shortcuts</a>, which can be beneficial for both power users and keyboard only users.', array(':features' => 'http://docs.ckeditor.com/#!/guide/dev_a11y', ':shortcuts' => 'http://docs.ckeditor.com/#!/guide/dev_shortcuts')) . '</dd>';
       $output .= '<dt>' . t('Generating accessible content') . '</dt>';
diff --git a/core/modules/ckeditor/src/Plugin/CKEditorPlugin/Internal.php b/core/modules/ckeditor/src/Plugin/CKEditorPlugin/Internal.php
index ecaff54..2dbb4b1 100644
--- a/core/modules/ckeditor/src/Plugin/CKEditorPlugin/Internal.php
+++ b/core/modules/ckeditor/src/Plugin/CKEditorPlugin/Internal.php
@@ -100,7 +100,6 @@ public function getConfig(Editor $editor) {
       'resize_dir' => 'vertical',
       'justifyClasses' => array('text-align-left', 'text-align-center', 'text-align-right', 'text-align-justify'),
       'entities' => FALSE,
-      'disableNativeSpellChecker' => FALSE,
     );
 
     // Add the allowedContent setting, which ensures CKEditor only allows tags
diff --git a/core/modules/ckeditor/src/Plugin/Editor/CKEditor.php b/core/modules/ckeditor/src/Plugin/Editor/CKEditor.php
index 8a30eea..8072060 100644
--- a/core/modules/ckeditor/src/Plugin/Editor/CKEditor.php
+++ b/core/modules/ckeditor/src/Plugin/Editor/CKEditor.php
@@ -15,7 +15,7 @@
 use Drupal\Core\Render\RendererInterface;
 use Drupal\editor\Plugin\EditorBase;
 use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
-use Drupal\editor\Entity\Editor;
+use Drupal\editor\Entity\Editor as EditorEntity;
 use Symfony\Component\DependencyInjection\ContainerInterface;
 
 /**
@@ -142,7 +142,7 @@ public function getDefaultSettings() {
   /**
    * {@inheritdoc}
    */
-  public function settingsForm(array $form, FormStateInterface $form_state, Editor $editor) {
+  public function settingsForm(array $form, FormStateInterface $form_state, EditorEntity $editor) {
     $settings = $editor->getSettings();
 
     $ckeditor_settings_toolbar = array(
@@ -204,7 +204,7 @@ public function settingsForm(array $form, FormStateInterface $form_state, Editor
     }, array());
     // Build a fake Editor object, which we'll use to generate JavaScript
     // settings for this fake Editor instance.
-    $fake_editor = Editor::create(array(
+    $fake_editor = entity_create('editor', array(
       'format' => $editor->id(),
       'editor' => 'ckeditor',
       'settings' => array(
@@ -259,7 +259,7 @@ public function settingsFormSubmit(array $form, FormStateInterface $form_state)
   /**
    * {@inheritdoc}
    */
-  public function getJSSettings(Editor $editor) {
+  public function getJSSettings(EditorEntity $editor) {
     $settings = array();
 
     // Get the settings for all enabled plugins, even the internal ones.
@@ -367,7 +367,7 @@ public function getLangcodes() {
   /**
    * {@inheritdoc}
    */
-  public function getLibraries(Editor $editor) {
+  public function getLibraries(EditorEntity $editor) {
     $libraries = array(
       'ckeditor/drupal.ckeditor',
     );
@@ -393,7 +393,7 @@ public function getLibraries(Editor $editor) {
    * @return array
    *   An array containing the "toolbar" configuration.
    */
-  public function buildToolbarJSSetting(Editor $editor) {
+  public function buildToolbarJSSetting(EditorEntity $editor) {
     $toolbar = array();
 
     $settings = $editor->getSettings();
@@ -416,7 +416,7 @@ public function buildToolbarJSSetting(Editor $editor) {
    * @return array
    *   An array containing the "contentsCss" configuration.
    */
-  public function buildContentsCssJSSetting(Editor $editor) {
+  public function buildContentsCssJSSetting(EditorEntity $editor) {
     $css = array(
       drupal_get_path('module', 'ckeditor') . '/css/ckeditor-iframe.css',
       drupal_get_path('module', 'system') . '/css/components/align.module.css',
diff --git a/core/modules/ckeditor/src/Tests/CKEditorAdminTest.php b/core/modules/ckeditor/src/Tests/CKEditorAdminTest.php
index 75df6e0..da06bd4 100644
--- a/core/modules/ckeditor/src/Tests/CKEditorAdminTest.php
+++ b/core/modules/ckeditor/src/Tests/CKEditorAdminTest.php
@@ -11,7 +11,6 @@
 use Drupal\editor\Entity\Editor;
 use Drupal\filter\FilterFormatInterface;
 use Drupal\simpletest\WebTestBase;
-use Drupal\filter\Entity\FilterFormat;
 
 /**
  * Tests administration of CKEditor.
@@ -38,7 +37,7 @@ protected function setUp() {
     parent::setUp();
 
     // Create text format.
-    $filtered_html_format = FilterFormat::create(array(
+    $filtered_html_format = entity_create('filter_format', array(
       'format' => 'filtered_html',
       'name' => 'Filtered HTML',
       'weight' => 0,
diff --git a/core/modules/ckeditor/src/Tests/CKEditorLoadingTest.php b/core/modules/ckeditor/src/Tests/CKEditorLoadingTest.php
index feba8ec..1081eb9 100644
--- a/core/modules/ckeditor/src/Tests/CKEditorLoadingTest.php
+++ b/core/modules/ckeditor/src/Tests/CKEditorLoadingTest.php
@@ -7,9 +7,7 @@
 
 namespace Drupal\ckeditor\Tests;
 
-use Drupal\editor\Entity\Editor;
 use Drupal\simpletest\WebTestBase;
-use Drupal\filter\Entity\FilterFormat;
 
 /**
  * Tests loading of CKEditor.
@@ -43,22 +41,22 @@ protected function setUp() {
     parent::setUp();
 
     // Create text format, associate CKEditor.
-    $filtered_html_format = FilterFormat::create(array(
+    $filtered_html_format = entity_create('filter_format', array(
       'format' => 'filtered_html',
       'name' => 'Filtered HTML',
       'weight' => 0,
       'filters' => array(),
     ));
     $filtered_html_format->save();
-    $editor = Editor::create([
+    $editor = entity_create('editor', array(
       'format' => 'filtered_html',
       'editor' => 'ckeditor',
-    ]);
+    ));
     $editor->save();
 
     // Create a second format without an associated editor so a drop down select
     // list is created when selecting formats.
-    $full_html_format = FilterFormat::create(array(
+    $full_html_format = entity_create('filter_format', array(
       'format' => 'full_html',
       'name' => 'Full HTML',
       'weight' => 1,
diff --git a/core/modules/ckeditor/src/Tests/CKEditorPluginManagerTest.php b/core/modules/ckeditor/src/Tests/CKEditorPluginManagerTest.php
index aacb4c9..aec8dbb 100644
--- a/core/modules/ckeditor/src/Tests/CKEditorPluginManagerTest.php
+++ b/core/modules/ckeditor/src/Tests/CKEditorPluginManagerTest.php
@@ -7,9 +7,7 @@
 
 namespace Drupal\ckeditor\Tests;
 
-use Drupal\editor\Entity\Editor;
 use Drupal\simpletest\KernelTestBase;
-use Drupal\filter\Entity\FilterFormat;
 
 /**
  * Tests different ways of enabling CKEditor plugins.
@@ -36,19 +34,20 @@ protected function setUp() {
     parent::setUp();
 
     // Install the Filter module.
+    $this->installSchema('system', 'url_alias');
 
     // Create text format, associate CKEditor.
-    $filtered_html_format = FilterFormat::create(array(
+    $filtered_html_format = entity_create('filter_format', array(
       'format' => 'filtered_html',
       'name' => 'Filtered HTML',
       'weight' => 0,
       'filters' => array(),
     ));
     $filtered_html_format->save();
-    $editor = Editor::create([
+    $editor = entity_create('editor', array(
       'format' => 'filtered_html',
       'editor' => 'ckeditor',
-    ]);
+    ));
     $editor->save();
   }
 
diff --git a/core/modules/ckeditor/src/Tests/CKEditorTest.php b/core/modules/ckeditor/src/Tests/CKEditorTest.php
index a86a5e3..4346cd6 100644
--- a/core/modules/ckeditor/src/Tests/CKEditorTest.php
+++ b/core/modules/ckeditor/src/Tests/CKEditorTest.php
@@ -10,7 +10,6 @@
 use Drupal\simpletest\KernelTestBase;
 use Drupal\language\Entity\ConfigurableLanguage;
 use Drupal\editor\Entity\Editor;
-use Drupal\filter\Entity\FilterFormat;
 
 /**
  * Tests for the 'CKEditor' text editor plugin.
@@ -44,9 +43,10 @@ protected function setUp() {
     parent::setUp();
 
     // Install the Filter module.
+    $this->installSchema('system', 'url_alias');
 
     // Create text format, associate CKEditor.
-    $filtered_html_format = FilterFormat::create(array(
+    $filtered_html_format = entity_create('filter_format', array(
       'format' => 'filtered_html',
       'name' => 'Filtered HTML',
       'weight' => 0,
@@ -60,10 +60,10 @@ protected function setUp() {
       ),
     ));
     $filtered_html_format->save();
-    $editor = Editor::create([
+    $editor = entity_create('editor', array(
       'format' => 'filtered_html',
       'editor' => 'ckeditor',
-    ]);
+    ));
     $editor->save();
 
     // Create "CKEditor" text editor plugin instance.
@@ -266,11 +266,10 @@ function testBuildContentsCssJSSetting() {
 
     // Enable the Bartik theme, which specifies a CKEditor stylesheet.
     \Drupal::service('theme_handler')->install(['bartik']);
-    \Drupal::service('theme_handler')->setDefault('bartik');
+    $this->config('system.theme')->set('default', 'bartik')->save();
     $expected[] = file_url_transform_relative(file_create_url('core/themes/bartik/css/base/elements.css'));
     $expected[] = file_url_transform_relative(file_create_url('core/themes/bartik/css/components/captions.css'));
     $expected[] = file_url_transform_relative(file_create_url('core/themes/bartik/css/components/table.css'));
-    $expected[] = file_url_transform_relative(file_create_url('core/themes/bartik/css/components/text-formatted.css'));
     $this->assertIdentical($expected, $this->ckeditor->buildContentsCssJSSetting($editor), '"contentsCss" configuration part of JS settings built correctly while a theme providing a CKEditor stylesheet exists.');
   }
 
@@ -427,7 +426,6 @@ protected function getDefaultInternalConfig() {
       'resize_dir' => 'vertical',
       'justifyClasses' => array('text-align-left', 'text-align-center', 'text-align-right', 'text-align-justify'),
       'entities' => FALSE,
-      'disableNativeSpellChecker' => FALSE,
     );
   }
 
diff --git a/core/modules/color/color.install b/core/modules/color/color.install
index 7f61338..aa2dd47 100644
--- a/core/modules/color/color.install
+++ b/core/modules/color/color.install
@@ -22,14 +22,14 @@ function color_requirements($phase) {
       // Check for PNG support.
       if (!function_exists('imagecreatefrompng')) {
         $requirements['color_gd']['severity'] = REQUIREMENT_WARNING;
-        $requirements['color_gd']['description'] = t('The GD library for PHP is enabled, but was compiled without PNG support. Check the <a href="http://php.net/manual/ref.image.php">PHP image documentation</a> for information on how to correct this.');
+        $requirements['color_gd']['description'] = t('The GD library for PHP is enabled, but was compiled without PNG support. Check the <a href=":url">PHP image documentation</a> for information on how to correct this.', array(':url' => 'http://www.php.net/manual/ref.image.php'));
       }
     }
     else {
       $requirements['color_gd'] = array(
         'value' => t('Not installed'),
         'severity' => REQUIREMENT_ERROR,
-        'description' => t('The GD library for PHP is missing or outdated. Check the <a href="http://php.net/manual/book.image.php">PHP image documentation</a> for information on how to correct this.'),
+        'description' => t('The GD library for PHP is missing or outdated. Check the <a href=":url">PHP image documentation</a> for information on how to correct this.', array(':url' => 'http://www.php.net/manual/book.image.php')),
       );
     }
     $requirements['color_gd']['title'] = t('GD library PNG support');
diff --git a/core/modules/color/color.module b/core/modules/color/color.module
index 055d750..d266b2e 100644
--- a/core/modules/color/color.module
+++ b/core/modules/color/color.module
@@ -413,7 +413,7 @@ function color_scheme_form_submit($form, FormStateInterface $form_state) {
     $memory_limit = ini_get('memory_limit');
     $size = Bytes::toInt($memory_limit);
     if (!Environment::checkMemoryLimit($usage + $required, $memory_limit)) {
-      drupal_set_message(t('There is not enough memory available to PHP to change this theme\'s color scheme. You need at least %size more. Check the <a href="http://php.net/manual/ini.core.php#ini.sect.resource-limits">PHP documentation</a> for more information.', array('%size' => format_size($usage + $required - $size))), 'error');
+      drupal_set_message(t('There is not enough memory available to PHP to change this theme\'s color scheme. You need at least %size more. Check the <a href=":url">PHP documentation</a> for more information.', array('%size' => format_size($usage + $required - $size), ':url' => 'http://www.php.net/manual/ini.core.php#ini.sect.resource-limits')), 'error');
       return;
     }
   }
diff --git a/core/modules/comment/comment.api.php b/core/modules/comment/comment.api.php
index 7b922cb..4b79b36 100644
--- a/core/modules/comment/comment.api.php
+++ b/core/modules/comment/comment.api.php
@@ -1,13 +1,13 @@
 <?php
 
+use Drupal\comment\CommentInterface;
+use Drupal\Core\Url;
+
 /**
  * @file
  * Hooks provided by the Comment module.
  */
 
-use Drupal\comment\CommentInterface;
-use Drupal\Core\Url;
-
 /**
  * @addtogroup hooks
  * @{
diff --git a/core/modules/comment/comment.module b/core/modules/comment/comment.module
index 8736b90..e1d74b6 100644
--- a/core/modules/comment/comment.module
+++ b/core/modules/comment/comment.module
@@ -194,15 +194,15 @@ function comment_field_config_delete(FieldConfigInterface $field) {
 /**
  * Implements hook_node_links_alter().
  */
-function comment_node_links_alter(array &$links, NodeInterface $node, array &$context) {
+function comment_node_links_alter(array &$node_links, NodeInterface $node, array &$context) {
   // Comment links are only added to node entity type for backwards
   // compatibility. Should you require comment links for other entity types you
   // can do so by implementing a new field formatter.
   // @todo Make this configurable from the formatter. See
   //   https://www.drupal.org/node/1901110.
 
-  $comment_links = \Drupal::service('comment.link_builder')->buildCommentedEntityLinks($node, $context);
-  $links += $comment_links;
+  $links = \Drupal::service('comment.link_builder')->buildCommentedEntityLinks($node, $context);
+  $node_links += $links;
 }
 
 /**
diff --git a/core/modules/comment/src/CommentViewsData.php b/core/modules/comment/src/CommentViewsData.php
index 209add9..c70f77f 100644
--- a/core/modules/comment/src/CommentViewsData.php
+++ b/core/modules/comment/src/CommentViewsData.php
@@ -20,32 +20,32 @@ class CommentViewsData extends EntityViewsData {
   public function getViewsData() {
     $data = parent::getViewsData();
 
-    $data['comment_field_data']['table']['base']['help'] = $this->t('Comments are responses to content.');
+    $data['comment_field_data']['table']['base']['help'] = t('Comments are responses to content.');
     $data['comment_field_data']['table']['base']['access query tag'] = 'comment_access';
 
     $data['comment_field_data']['table']['wizard_id'] = 'comment';
 
-    $data['comment_field_data']['subject']['title'] = $this->t('Title');
-    $data['comment_field_data']['subject']['help'] = $this->t('The title of the comment.');
+    $data['comment_field_data']['subject']['title'] = t('Title');
+    $data['comment_field_data']['subject']['help'] = t('The title of the comment.');
 
-    $data['comment_field_data']['name']['title'] = $this->t('Author');
-    $data['comment_field_data']['name']['help'] = $this->t("The name of the comment's author. Can be rendered as a link to the author's homepage.");
+    $data['comment_field_data']['name']['title'] = t('Author');
+    $data['comment_field_data']['name']['help'] = t("The name of the comment's author. Can be rendered as a link to the author's homepage.");
     $data['comment_field_data']['name']['field']['default_formatter'] = 'comment_username';
 
-    $data['comment_field_data']['homepage']['title'] = $this->t("Author's website");
-    $data['comment_field_data']['homepage']['help'] = $this->t("The website address of the comment's author. Can be rendered as a link. Will be empty if the author is a registered user.");
+    $data['comment_field_data']['homepage']['title'] = t("Author's website");
+    $data['comment_field_data']['homepage']['help'] = t("The website address of the comment's author. Can be rendered as a link. Will be empty if the author is a registered user.");
 
-    $data['comment_field_data']['mail']['help'] = $this->t('Email of user that posted the comment. Will be empty if the author is a registered user.');
+    $data['comment_field_data']['mail']['help'] = t('Email of user that posted the comment. Will be empty if the author is a registered user.');
 
-    $data['comment_field_data']['created']['title'] = $this->t('Post date');
-    $data['comment_field_data']['created']['help'] = $this->t('Date and time of when the comment was created.');
+    $data['comment_field_data']['created']['title'] = t('Post date');
+    $data['comment_field_data']['created']['help'] = t('Date and time of when the comment was created.');
 
-    $data['comment_field_data']['changed']['title'] = $this->t('Updated date');
-    $data['comment_field_data']['changed']['help'] = $this->t('Date and time of when the comment was last updated.');
+    $data['comment_field_data']['changed']['title'] = t('Updated date');
+    $data['comment_field_data']['changed']['help'] = t('Date and time of when the comment was last updated.');
 
     $data['comment_field_data']['changed_fulldata'] = array(
-      'title' => $this->t('Created date'),
-      'help' => $this->t('Date in the form of CCYYMMDD.'),
+      'title' => t('Created date'),
+      'help' => t('Date in the form of CCYYMMDD.'),
       'argument' => array(
         'field' => 'changed',
         'id' => 'date_fulldate',
@@ -53,8 +53,8 @@ public function getViewsData() {
     );
 
     $data['comment_field_data']['changed_year_month'] = array(
-      'title' => $this->t('Created year + month'),
-      'help' => $this->t('Date in the form of YYYYMM.'),
+      'title' => t('Created year + month'),
+      'help' => t('Date in the form of YYYYMM.'),
       'argument' => array(
         'field' => 'changed',
         'id' => 'date_year_month',
@@ -62,8 +62,8 @@ public function getViewsData() {
     );
 
     $data['comment_field_data']['changed_year'] = array(
-      'title' => $this->t('Created year'),
-      'help' => $this->t('Date in the form of YYYY.'),
+      'title' => t('Created year'),
+      'help' => t('Date in the form of YYYY.'),
       'argument' => array(
         'field' => 'changed',
         'id' => 'date_year',
@@ -71,8 +71,8 @@ public function getViewsData() {
     );
 
     $data['comment_field_data']['changed_month'] = array(
-      'title' => $this->t('Created month'),
-      'help' => $this->t('Date in the form of MM (01 - 12).'),
+      'title' => t('Created month'),
+      'help' => t('Date in the form of MM (01 - 12).'),
       'argument' => array(
         'field' => 'changed',
         'id' => 'date_month',
@@ -80,8 +80,8 @@ public function getViewsData() {
     );
 
     $data['comment_field_data']['changed_day'] = array(
-      'title' => $this->t('Created day'),
-      'help' => $this->t('Date in the form of DD (01 - 31).'),
+      'title' => t('Created day'),
+      'help' => t('Date in the form of DD (01 - 31).'),
       'argument' => array(
         'field' => 'changed',
         'id' => 'date_day',
@@ -89,43 +89,43 @@ public function getViewsData() {
     );
 
     $data['comment_field_data']['changed_week'] = array(
-      'title' => $this->t('Created week'),
-      'help' => $this->t('Date in the form of WW (01 - 53).'),
+      'title' => t('Created week'),
+      'help' => t('Date in the form of WW (01 - 53).'),
       'argument' => array(
         'field' => 'changed',
         'id' => 'date_week',
       ),
     );
 
-    $data['comment_field_data']['status']['title'] = $this->t('Approved status');
-    $data['comment_field_data']['status']['help'] = $this->t('Whether the comment is approved (or still in the moderation queue).');
-    $data['comment_field_data']['status']['filter']['label'] = $this->t('Approved comment status');
+    $data['comment_field_data']['status']['title'] = t('Approved status');
+    $data['comment_field_data']['status']['help'] = t('Whether the comment is approved (or still in the moderation queue).');
+    $data['comment_field_data']['status']['filter']['label'] = t('Approved comment status');
     $data['comment_field_data']['status']['filter']['type'] = 'yes-no';
 
     $data['comment']['approve_comment'] = array(
       'field' => array(
-        'title' => $this->t('Link to approve comment'),
-        'help' => $this->t('Provide a simple link to approve the comment.'),
+        'title' => t('Link to approve comment'),
+        'help' => t('Provide a simple link to approve the comment.'),
         'id' => 'comment_link_approve',
       ),
     );
 
     $data['comment']['replyto_comment'] = array(
       'field' => array(
-        'title' => $this->t('Link to reply-to comment'),
-        'help' => $this->t('Provide a simple link to reply to the comment.'),
+        'title' => t('Link to reply-to comment'),
+        'help' => t('Provide a simple link to reply to the comment.'),
         'id' => 'comment_link_reply',
       ),
     );
 
     $data['comment_field_data']['thread']['field'] = array(
-      'title' => $this->t('Depth'),
-      'help' => $this->t('Display the depth of the comment if it is threaded.'),
+      'title' => t('Depth'),
+      'help' => t('Display the depth of the comment if it is threaded.'),
       'id' => 'comment_depth',
     );
     $data['comment_field_data']['thread']['sort'] = array(
-      'title' => $this->t('Thread'),
-      'help' => $this->t('Sort by the threaded order. This will keep child comments together with their parents.'),
+      'title' => t('Thread'),
+      'help' => t('Sort by the threaded order. This will keep child comments together with their parents.'),
       'id' => 'comment_thread',
     );
     unset($data['comment_field_data']['thread']['filter']);
@@ -142,7 +142,7 @@ public function getViewsData() {
         $data['comment_field_data'][$type] = array(
           'relationship' => array(
             'title' => $entity_type->getLabel(),
-            'help' => $this->t('The @entity_type to which the comment is a reply to.', array('@entity_type' => $entity_type->getLabel())),
+            'help' => t('The @entity_type to which the comment is a reply to.', array('@entity_type' => $entity_type->getLabel())),
             'base' => $entity_type->getDataTable() ?: $entity_type->getBaseTable(),
             'base field' => $entity_type->getKey('id'),
             'relationship field' => 'entity_id',
@@ -160,20 +160,20 @@ public function getViewsData() {
       }
     }
 
-    $data['comment_field_data']['uid']['title'] = $this->t('Author uid');
-    $data['comment_field_data']['uid']['help'] = $this->t('If you need more fields than the uid add the comment: author relationship');
-    $data['comment_field_data']['uid']['relationship']['title'] = $this->t('Author');
-    $data['comment_field_data']['uid']['relationship']['help'] = $this->t("The User ID of the comment's author.");
-    $data['comment_field_data']['uid']['relationship']['label'] = $this->t('author');
+    $data['comment_field_data']['uid']['title'] = t('Author uid');
+    $data['comment_field_data']['uid']['help'] = t('If you need more fields than the uid add the comment: author relationship');
+    $data['comment_field_data']['uid']['relationship']['title'] = t('Author');
+    $data['comment_field_data']['uid']['relationship']['help'] = t("The User ID of the comment's author.");
+    $data['comment_field_data']['uid']['relationship']['label'] = t('author');
 
-    $data['comment_field_data']['pid']['title'] = $this->t('Parent CID');
-    $data['comment_field_data']['pid']['relationship']['title'] = $this->t('Parent comment');
-    $data['comment_field_data']['pid']['relationship']['help'] = $this->t('The parent comment');
-    $data['comment_field_data']['pid']['relationship']['label'] = $this->t('parent');
+    $data['comment_field_data']['pid']['title'] = t('Parent CID');
+    $data['comment_field_data']['pid']['relationship']['title'] = t('Parent comment');
+    $data['comment_field_data']['pid']['relationship']['help'] = t('The parent comment');
+    $data['comment_field_data']['pid']['relationship']['label'] = t('parent');
 
     // Define the base group of this table. Fields that don't have a group defined
     // will go into this field by default.
-    $data['comment_entity_statistics']['table']['group']  = $this->t('Comment Statistics');
+    $data['comment_entity_statistics']['table']['group']  = t('Comment Statistics');
 
     // Provide a relationship for each entity type except comment.
     foreach ($entities_types as $type => $entity_type) {
@@ -202,8 +202,8 @@ public function getViewsData() {
     }
 
     $data['comment_entity_statistics']['last_comment_timestamp'] = array(
-      'title' => $this->t('Last comment time'),
-      'help' => $this->t('Date and time of when the last comment was posted.'),
+      'title' => t('Last comment time'),
+      'help' => t('Date and time of when the last comment was posted.'),
       'field' => array(
         'id' => 'comment_last_timestamp',
       ),
@@ -216,8 +216,8 @@ public function getViewsData() {
     );
 
     $data['comment_entity_statistics']['last_comment_name'] = array(
-      'title' => $this->t("Last comment author"),
-      'help' => $this->t('The name of the author of the last posted comment.'),
+      'title' => t("Last comment author"),
+      'help' => t('The name of the author of the last posted comment.'),
       'field' => array(
         'id' => 'comment_ces_last_comment_name',
         'no group by' => TRUE,
@@ -229,8 +229,8 @@ public function getViewsData() {
     );
 
     $data['comment_entity_statistics']['comment_count'] = array(
-      'title' => $this->t('Comment count'),
-      'help' => $this->t('The number of comments an entity has.'),
+      'title' => t('Comment count'),
+      'help' => t('The number of comments an entity has.'),
       'field' => array(
         'id' => 'numeric',
       ),
@@ -246,8 +246,8 @@ public function getViewsData() {
     );
 
     $data['comment_entity_statistics']['last_updated'] = array(
-      'title' => $this->t('Updated/commented date'),
-      'help' => $this->t('The most recent of last comment posted or entity updated time.'),
+      'title' => t('Updated/commented date'),
+      'help' => t('The most recent of last comment posted or entity updated time.'),
       'field' => array(
         'id' => 'comment_ces_last_updated',
         'no group by' => TRUE,
@@ -262,28 +262,28 @@ public function getViewsData() {
     );
 
     $data['comment_entity_statistics']['cid'] = array(
-      'title' => $this->t('Last comment CID'),
-      'help' => $this->t('Display the last comment of an entity'),
+      'title' => t('Last comment CID'),
+      'help' => t('Display the last comment of an entity'),
       'relationship' => array(
-        'title' => $this->t('Last comment'),
-        'help' => $this->t('The last comment of an entity.'),
-        'group' => $this->t('Comment'),
+        'title' => t('Last comment'),
+        'help' => t('The last comment of an entity.'),
+        'group' => t('Comment'),
         'base' => 'comment',
         'base field' => 'cid',
         'id' => 'standard',
-        'label' => $this->t('Last Comment'),
+        'label' => t('Last Comment'),
       ),
     );
 
     $data['comment_entity_statistics']['last_comment_uid'] = array(
-      'title' => $this->t('Last comment uid'),
-      'help' => $this->t('The User ID of the author of the last comment of an entity.'),
+      'title' => t('Last comment uid'),
+      'help' => t('The User ID of the author of the last comment of an entity.'),
       'relationship' => array(
-        'title' => $this->t('Last comment author'),
+        'title' => t('Last comment author'),
         'base' => 'users',
         'base field' => 'uid',
         'id' => 'standard',
-        'label' => $this->t('Last comment author'),
+        'label' => t('Last comment author'),
       ),
       'filter' => array(
         'id' => 'numeric',
@@ -297,8 +297,8 @@ public function getViewsData() {
     );
 
     $data['comment_entity_statistics']['entity_type'] = array(
-      'title' => $this->t('Entity type'),
-      'help' => $this->t('The entity type to which the comment is a reply to.'),
+      'title' => t('Entity type'),
+      'help' => t('The entity type to which the comment is a reply to.'),
       'field' => array(
         'id' => 'standard',
       ),
@@ -313,8 +313,8 @@ public function getViewsData() {
       ),
     );
     $data['comment_entity_statistics']['field_name'] = array(
-      'title' => $this->t('Comment field name'),
-      'help' => $this->t('The field name from which the comment originated.'),
+      'title' => t('Comment field name'),
+      'help' => t('The field name from which the comment originated.'),
       'field' => array(
         'id' => 'standard',
       ),
diff --git a/core/modules/comment/src/Plugin/views/field/StatisticsLastCommentName.php b/core/modules/comment/src/Plugin/views/field/StatisticsLastCommentName.php
index 7264ccc..1c8c41a 100644
--- a/core/modules/comment/src/Plugin/views/field/StatisticsLastCommentName.php
+++ b/core/modules/comment/src/Plugin/views/field/StatisticsLastCommentName.php
@@ -7,7 +7,6 @@
 
 namespace Drupal\comment\Plugin\views\field;
 
-use Drupal\user\Entity\User;
 use Drupal\views\Plugin\views\field\FieldPluginBase;
 use Drupal\views\ResultRow;
 
@@ -68,7 +67,7 @@ protected function defineOptions() {
    */
   public function render(ResultRow $values) {
     if (!empty($this->options['link_to_user'])) {
-      $account = User::create();
+      $account = entity_create('user');
       $account->name = $this->getValue($values);
       $account->uid = $values->{$this->uid};
       $username = array(
diff --git a/core/modules/comment/src/Tests/CommentActionsTest.php b/core/modules/comment/src/Tests/CommentActionsTest.php
index 51fbd36..5cf7ead 100644
--- a/core/modules/comment/src/Tests/CommentActionsTest.php
+++ b/core/modules/comment/src/Tests/CommentActionsTest.php
@@ -8,7 +8,6 @@
 namespace Drupal\comment\Tests;
 
 use Drupal\comment\Entity\Comment;
-use Drupal\system\Entity\Action;
 
 /**
  * Tests actions provided by the Comment module.
@@ -51,7 +50,7 @@ function testCommentUnpublishByKeyword() {
     $this->drupalLogin($this->adminUser);
     $keyword_1 = $this->randomMachineName();
     $keyword_2 = $this->randomMachineName();
-    $action = Action::create(array(
+    $action = entity_create('action', array(
       'id' => 'comment_unpublish_by_keyword_action',
       'label' => $this->randomMachineName(),
       'type' => 'comment',
diff --git a/core/modules/comment/src/Tests/CommentAdminTest.php b/core/modules/comment/src/Tests/CommentAdminTest.php
index 37ed92c..ee434f7 100644
--- a/core/modules/comment/src/Tests/CommentAdminTest.php
+++ b/core/modules/comment/src/Tests/CommentAdminTest.php
@@ -8,7 +8,6 @@
 namespace Drupal\comment\Tests;
 
 use Drupal\user\RoleInterface;
-use Drupal\comment\Entity\Comment;
 
 /**
  * Tests comment approval functionality.
@@ -51,7 +50,7 @@ function testApprovalAdminInterface() {
     // Get unapproved comment id.
     $this->drupalLogin($this->adminUser);
     $anonymous_comment4 = $this->getUnapprovedComment($subject);
-    $anonymous_comment4 = Comment::create(array(
+    $anonymous_comment4 = entity_create('comment', array(
       'cid' => $anonymous_comment4,
       'subject' => $subject,
       'comment_body' => $body,
@@ -128,7 +127,7 @@ function testApprovalNodeInterface() {
     // Get unapproved comment id.
     $this->drupalLogin($this->adminUser);
     $anonymous_comment4 = $this->getUnapprovedComment($subject);
-    $anonymous_comment4 = Comment::create(array(
+    $anonymous_comment4 = entity_create('comment', array(
       'cid' => $anonymous_comment4,
       'subject' => $subject,
       'comment_body' => $body,
diff --git a/core/modules/comment/src/Tests/CommentBookTest.php b/core/modules/comment/src/Tests/CommentBookTest.php
index 24581be..ecc2624 100644
--- a/core/modules/comment/src/Tests/CommentBookTest.php
+++ b/core/modules/comment/src/Tests/CommentBookTest.php
@@ -9,7 +9,6 @@
 
 use Drupal\comment\CommentInterface;
 use Drupal\simpletest\WebTestBase;
-use Drupal\comment\Entity\Comment;
 
 /**
  * Tests visibility of comments on book pages.
@@ -48,7 +47,7 @@ public function testBookCommentPrint() {
 
     $comment_subject = $this->randomMachineName(8);
     $comment_body = $this->randomMachineName(8);
-    $comment = Comment::create(array(
+    $comment = entity_create('comment', array(
       'subject' => $comment_subject,
       'comment_body' => $comment_body,
       'entity_id' => $book_node->id(),
diff --git a/core/modules/comment/src/Tests/CommentCSSTest.php b/core/modules/comment/src/Tests/CommentCSSTest.php
index 793762b..47a31cc 100644
--- a/core/modules/comment/src/Tests/CommentCSSTest.php
+++ b/core/modules/comment/src/Tests/CommentCSSTest.php
@@ -10,7 +10,6 @@
 use Drupal\Core\Language\LanguageInterface;
 use Drupal\comment\CommentInterface;
 use Drupal\user\RoleInterface;
-use Drupal\comment\Entity\Comment;
 
 /**
  * Tests CSS classes on comments.
@@ -48,7 +47,7 @@ function testCommentClasses() {
 
       // Add a comment.
       /** @var \Drupal\comment\CommentInterface $comment */
-      $comment = Comment::create(array(
+      $comment = entity_create('comment', array(
         'entity_id' => $node->id(),
         'entity_type' => 'node',
         'field_name' => 'comment',
diff --git a/core/modules/comment/src/Tests/CommentCacheTagsTest.php b/core/modules/comment/src/Tests/CommentCacheTagsTest.php
index 597e7ac..15142d8 100644
--- a/core/modules/comment/src/Tests/CommentCacheTagsTest.php
+++ b/core/modules/comment/src/Tests/CommentCacheTagsTest.php
@@ -77,7 +77,7 @@ protected function createEntity() {
     $this->entityTestCamelid->save();
 
     // Create a "Llama" comment.
-    $comment = Comment::create(array(
+    $comment = entity_create('comment', array(
       'subject' => 'Llama',
       'comment_body' => array(
         'value' => 'The name "llama" was adopted by European settlers from native Peruvians.',
diff --git a/core/modules/comment/src/Tests/CommentDefaultFormatterCacheTagsTest.php b/core/modules/comment/src/Tests/CommentDefaultFormatterCacheTagsTest.php
index 9dbba85..1164ba0 100644
--- a/core/modules/comment/src/Tests/CommentDefaultFormatterCacheTagsTest.php
+++ b/core/modules/comment/src/Tests/CommentDefaultFormatterCacheTagsTest.php
@@ -13,7 +13,6 @@
 use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\HttpFoundation\RequestStack;
 use Symfony\Component\HttpFoundation\Session\Session;
-use Drupal\comment\Entity\Comment;
 
 /**
  * Tests the bubbling up of comment cache tags when using the Comment list
@@ -99,7 +98,7 @@ public function testCacheTags() {
     // also exists in the {users} table.
     $user = $this->createUser();
     $user->save();
-    $comment = Comment::create(array(
+    $comment = entity_create('comment', array(
       'subject' => 'Llama',
       'comment_body' => array(
         'value' => 'Llamas are cool!',
diff --git a/core/modules/comment/src/Tests/CommentLinksTest.php b/core/modules/comment/src/Tests/CommentLinksTest.php
index c21601d..68f9f0e 100644
--- a/core/modules/comment/src/Tests/CommentLinksTest.php
+++ b/core/modules/comment/src/Tests/CommentLinksTest.php
@@ -11,7 +11,6 @@
 use Drupal\Core\Language\LanguageInterface;
 use Drupal\comment\CommentInterface;
 use Drupal\user\RoleInterface;
-use Drupal\comment\Entity\Comment;
 
 /**
  * Basic comment links tests to ensure markup present.
@@ -60,7 +59,7 @@ public function testCommentLinks() {
 
     // Create a comment via CRUD API functionality, since
     // $this->postComment() relies on actual user permissions.
-    $comment = Comment::create(array(
+    $comment = entity_create('comment', array(
       'cid' => NULL,
       'entity_id' => $this->node->id(),
       'entity_type' => 'node',
diff --git a/core/modules/comment/src/Tests/CommentNewIndicatorTest.php b/core/modules/comment/src/Tests/CommentNewIndicatorTest.php
index 49c9e9e..46e2795 100644
--- a/core/modules/comment/src/Tests/CommentNewIndicatorTest.php
+++ b/core/modules/comment/src/Tests/CommentNewIndicatorTest.php
@@ -11,7 +11,6 @@
 use Drupal\Core\Language\LanguageInterface;
 use Drupal\comment\CommentInterface;
 use Drupal\Core\Url;
-use Drupal\comment\Entity\Comment;
 
 /**
  * Tests the 'new' indicator posted on comments.
@@ -86,7 +85,7 @@ public function testCommentNewCommentsIndicator() {
     // Create a new comment. This helper function may be run with different
     // comment settings so use $comment->save() to avoid complex setup.
     /** @var \Drupal\comment\CommentInterface $comment */
-    $comment = Comment::create(array(
+    $comment = entity_create('comment', array(
       'cid' => NULL,
       'entity_id' => $this->node->id(),
       'entity_type' => 'node',
diff --git a/core/modules/comment/src/Tests/CommentNonNodeTest.php b/core/modules/comment/src/Tests/CommentNonNodeTest.php
index c217fdc..aa06942 100644
--- a/core/modules/comment/src/Tests/CommentNonNodeTest.php
+++ b/core/modules/comment/src/Tests/CommentNonNodeTest.php
@@ -54,7 +54,7 @@ protected function setUp() {
 
     // Create a bundle for entity_test.
     entity_test_create_bundle('entity_test', 'Entity Test', 'entity_test');
-    CommentType::create(array(
+    entity_create('comment_type', array(
       'id' => 'comment',
       'label' => 'Comment settings',
       'description' => 'Comment settings',
diff --git a/core/modules/comment/src/Tests/CommentStringIdEntitiesTest.php b/core/modules/comment/src/Tests/CommentStringIdEntitiesTest.php
index ef7f48d..0285432 100644
--- a/core/modules/comment/src/Tests/CommentStringIdEntitiesTest.php
+++ b/core/modules/comment/src/Tests/CommentStringIdEntitiesTest.php
@@ -9,7 +9,6 @@
 
 use Drupal\comment\Entity\CommentType;
 use Drupal\simpletest\KernelTestBase;
-use Drupal\field\Entity\FieldStorageConfig;
 
 /**
  * Tests that comment fields cannot be added to entities with non-integer IDs.
@@ -52,7 +51,7 @@ public function testCommentFieldNonStringId() {
         'target_entity_type_id' => 'entity_test_string_id',
       ));
       $bundle->save();
-      $field_storage = FieldStorageConfig::create(array(
+      $field_storage = entity_create('field_storage_config', array(
         'field_name' => 'foo',
         'entity_type' => 'entity_test_string_id',
         'settings' => array(
diff --git a/core/modules/comment/src/Tests/Views/CommentFieldFilterTest.php b/core/modules/comment/src/Tests/Views/CommentFieldFilterTest.php
index 03b31ff..4fd7d58 100644
--- a/core/modules/comment/src/Tests/Views/CommentFieldFilterTest.php
+++ b/core/modules/comment/src/Tests/Views/CommentFieldFilterTest.php
@@ -8,7 +8,6 @@
 namespace Drupal\comment\Tests\Views;
 
 use Drupal\language\Entity\ConfigurableLanguage;
-use Drupal\comment\Entity\Comment;
 
 /**
  * Tests comment field filters with translations.
@@ -62,7 +61,7 @@ function setUp() {
       'pid' => '',
       'node_type' => '',
     );
-    $this->comment = Comment::create($comment);
+    $this->comment = entity_create('comment', $comment);
 
     // Add field values and translate the comment.
     $this->comment->subject->value = $this->commentTitles['en'];
diff --git a/core/modules/comment/src/Tests/Views/CommentRestExportTest.php b/core/modules/comment/src/Tests/Views/CommentRestExportTest.php
index b2f334c..9737b4f 100644
--- a/core/modules/comment/src/Tests/Views/CommentRestExportTest.php
+++ b/core/modules/comment/src/Tests/Views/CommentRestExportTest.php
@@ -8,7 +8,6 @@
 namespace Drupal\comment\Tests\Views;
 
 use Drupal\Component\Serialization\Json;
-use Drupal\comment\Entity\Comment;
 
 /**
  * Tests a comment rest export view.
@@ -44,7 +43,7 @@ protected function setUp() {
       'name' => 'bobby tables',
       'hostname' => 'public.example.com',
     );
-    $this->comment = Comment::create($comment);
+    $this->comment = entity_create('comment', $comment);
     $this->comment->save();
 
     $user = $this->drupalCreateUser(['access comments']);
diff --git a/core/modules/comment/src/Tests/Views/CommentTestBase.php b/core/modules/comment/src/Tests/Views/CommentTestBase.php
index 2067e2d..202bf47 100644
--- a/core/modules/comment/src/Tests/Views/CommentTestBase.php
+++ b/core/modules/comment/src/Tests/Views/CommentTestBase.php
@@ -10,7 +10,6 @@
 use Drupal\comment\Tests\CommentTestTrait;
 use Drupal\views\Tests\ViewTestBase;
 use Drupal\views\Tests\ViewTestData;
-use Drupal\comment\Entity\Comment;
 
 /**
  * Tests the argument_comment_user_uid handler.
@@ -88,7 +87,7 @@ protected function setUp() {
       'pid' => '',
       'mail' => 'someone@example.com',
     );
-    $this->comment = Comment::create($comment);
+    $this->comment = entity_create('comment', $comment);
     $this->comment->save();
   }
 
diff --git a/core/modules/comment/src/Tests/Views/DefaultViewRecentCommentsTest.php b/core/modules/comment/src/Tests/Views/DefaultViewRecentCommentsTest.php
index bd52ef3..89b03b3 100644
--- a/core/modules/comment/src/Tests/Views/DefaultViewRecentCommentsTest.php
+++ b/core/modules/comment/src/Tests/Views/DefaultViewRecentCommentsTest.php
@@ -84,7 +84,7 @@ protected function setUp() {
     // Create some comments and attach them to the created node.
     for ($i = 0; $i < $this->masterDisplayResults; $i++) {
       /** @var \Drupal\comment\CommentInterface $comment */
-      $comment = Comment::create(array(
+      $comment = entity_create('comment', array(
         'status' => CommentInterface::PUBLISHED,
         'field_name' => 'comment',
         'entity_type' => 'node',
diff --git a/core/modules/config/src/Form/ConfigSync.php b/core/modules/config/src/Form/ConfigSync.php
index 30e9d97..03de002 100644
--- a/core/modules/config/src/Form/ConfigSync.php
+++ b/core/modules/config/src/Form/ConfigSync.php
@@ -186,7 +186,7 @@ public function buildForm(array $form, FormStateInterface $form_state) {
     if (empty($source_list) || !$storage_comparer->createChangelist()->hasChanges()) {
       $form['no_changes'] = array(
         '#type' => 'table',
-        '#header' => array($this->t('Name'), $this->t('Operations')),
+        '#header' => array('Name', 'Operations'),
         '#rows' => array(),
         '#empty' => $this->t('There are no configuration changes to import.'),
       );
@@ -272,7 +272,7 @@ public function buildForm(array $form, FormStateInterface $form_state) {
         }
         $form[$collection][$config_change_type]['list'] = array(
           '#type' => 'table',
-          '#header' => array($this->t('Name'), $this->t('Operations')),
+          '#header' => array('Name', 'Operations'),
         );
 
         foreach ($config_names as $config_name) {
@@ -343,9 +343,9 @@ public function submitForm(array &$form, FormStateInterface $form_state) {
           'finished' => array(get_class($this), 'finishBatch'),
           'title' => t('Synchronizing configuration'),
           'init_message' => t('Starting configuration synchronization.'),
-          'progress_message' => t('Completed step @current of @total.'),
+          'progress_message' => t('Completed @current step of @total.'),
           'error_message' => t('Configuration synchronization has encountered an error.'),
-          'file' => __DIR__ . '/../../config.admin.inc',
+          'file' => drupal_get_path('module', 'config') . '/config.admin.inc',
         );
         foreach ($sync_steps as $sync_step) {
           $batch['operations'][] = array(array(get_class($this), 'processBatch'), array($config_importer, $sync_step));
diff --git a/core/modules/config/src/Tests/ConfigExportImportUITest.php b/core/modules/config/src/Tests/ConfigExportImportUITest.php
index d1a9cab..d72c718 100644
--- a/core/modules/config/src/Tests/ConfigExportImportUITest.php
+++ b/core/modules/config/src/Tests/ConfigExportImportUITest.php
@@ -108,16 +108,16 @@ public function testExportImport() {
 
     // Create a field.
     $this->fieldName = Unicode::strtolower($this->randomMachineName());
-    $this->fieldStorage = FieldStorageConfig::create(array(
+    $this->fieldStorage = entity_create('field_storage_config', array(
       'field_name' => $this->fieldName,
       'entity_type' => 'node',
       'type' => 'text',
     ));
     $this->fieldStorage->save();
-    FieldConfig::create([
+    entity_create('field_config', array(
       'field_storage' => $this->fieldStorage,
       'bundle' => $this->contentType->id(),
-    ])->save();
+    ))->save();
     // Update the displays so that configuration does not change unexpectedly on
     // import.
     entity_get_form_display('node', $this->contentType->id(), 'default')
diff --git a/core/modules/config/src/Tests/ConfigImportRecreateTest.php b/core/modules/config/src/Tests/ConfigImportRecreateTest.php
index 163389f..34aa441 100644
--- a/core/modules/config/src/Tests/ConfigImportRecreateTest.php
+++ b/core/modules/config/src/Tests/ConfigImportRecreateTest.php
@@ -63,10 +63,10 @@ protected function setUp() {
 
   public function testRecreateEntity() {
     $type_name = Unicode::strtolower($this->randomMachineName(16));
-    $content_type = NodeType::create([
+    $content_type = entity_create('node_type', array(
       'type' => $type_name,
       'name' => 'Node type one',
-    ]);
+    ));
     $content_type->save();
     node_add_body_field($content_type);
     /** @var \Drupal\Core\Config\StorageInterface $active */
@@ -82,10 +82,10 @@ public function testRecreateEntity() {
     $content_type->delete();
     $this->assertFalse($active->exists($config_name), 'Content type\'s old name does not exist active store.');
     // Recreate with the same type - this will have a different UUID.
-    $content_type = NodeType::create([
+    $content_type = entity_create('node_type', array(
       'type' => $type_name,
       'name' => 'Node type two',
-    ]);
+    ));
     $content_type->save();
     node_add_body_field($content_type);
 
diff --git a/core/modules/config/src/Tests/ConfigImportRenameValidationTest.php b/core/modules/config/src/Tests/ConfigImportRenameValidationTest.php
index fe4df02..c461f30 100644
--- a/core/modules/config/src/Tests/ConfigImportRenameValidationTest.php
+++ b/core/modules/config/src/Tests/ConfigImportRenameValidationTest.php
@@ -13,7 +13,6 @@
 use Drupal\Core\Config\ConfigImporter;
 use Drupal\Core\Config\ConfigImporterException;
 use Drupal\Core\Config\StorageComparer;
-use Drupal\node\Entity\NodeType;
 use Drupal\simpletest\KernelTestBase;
 
 /**
@@ -86,11 +85,11 @@ public function testRenameValidation() {
     $test_entity->delete();
 
     // Create a content type with a matching UUID in the active storage.
-    $content_type = NodeType::create([
+    $content_type = entity_create('node_type', array(
       'type' => Unicode::strtolower($this->randomMachineName(16)),
       'name' => $this->randomMachineName(),
       'uuid' => $uuid,
-    ]);
+    ));
     $content_type->save();
 
     // Confirm that the staged configuration is detected as a rename since the
diff --git a/core/modules/config/src/Tests/ConfigSchemaTest.php b/core/modules/config/src/Tests/ConfigSchemaTest.php
index a89db0e..a34e6a6 100644
--- a/core/modules/config/src/Tests/ConfigSchemaTest.php
+++ b/core/modules/config/src/Tests/ConfigSchemaTest.php
@@ -388,8 +388,8 @@ public function testConfigSaveWithSchema() {
     // Ensure that configuration objects with keys marked as ignored are not
     // changed when saved. The 'config_schema_test.ignore' will have been saved
     // during the installation of configuration in the setUp method.
-    $extension_path = __DIR__ . '/../../tests/config_schema_test/';
-    $install_storage = new FileStorage($extension_path . InstallStorage::CONFIG_INSTALL_DIRECTORY);
+    $extension_path = drupal_get_path('module', 'config_schema_test');
+    $install_storage = new FileStorage($extension_path . '/' . InstallStorage::CONFIG_INSTALL_DIRECTORY);
     $original_data = $install_storage->read('config_schema_test.ignore');
     $installed_data = $this->config('config_schema_test.ignore')->get();
     unset($installed_data['_core']);
@@ -546,44 +546,8 @@ public function testConfigSaveWithWrappingSchemaDoubleBrackets() {
       'tests' => [
         [
           'wrapper_value' => 'foo',
-          'foo' => 'turtle',
-          'bar' => 'horse',
-          // Converted to a string by 'test.double_brackets.turtle.horse'
-          // schema.
-          'another_key' => '100',
-        ],
-      ],
-    ];
-
-    $typed_values = [
-      'tests' => [
-        [
-          'wrapper_value' => 'foo',
-          'foo' => 'turtle',
-          'bar' => 'horse',
-          'another_key' => 100,
-        ],
-      ],
-    ];
-
-    // Save config which has a schema that enforces types.
-    \Drupal::configFactory()->getEditable('wrapping.config_schema_test.double_brackets')
-      ->setData($untyped_values)
-      ->save();
-    $this->assertIdentical(\Drupal::config('wrapping.config_schema_test.double_brackets')
-      ->get(), $typed_values);
-
-    $tests = \Drupal::service('config.typed')->get('wrapping.config_schema_test.double_brackets')->get('tests')->getElements();
-    $definition = $tests[0]->getDataDefinition()->toArray();
-    $this->assertEqual($definition['type'], 'wrapping.test.double_brackets.*||test.double_brackets.turtle.horse');
-
-    $untyped_values = [
-      'tests' => [
-        [
-          'wrapper_value' => 'foo',
           'foo' => 'cat',
           'bar' => 'dog',
-          // Converted to a string by 'test.double_brackets.cat.dog' schema.
           'another_key' => 100,
         ],
       ],
@@ -606,36 +570,6 @@ public function testConfigSaveWithWrappingSchemaDoubleBrackets() {
       ->save();
     $this->assertIdentical(\Drupal::config('wrapping.config_schema_test.double_brackets')
       ->get(), $typed_values);
-
-    $tests = \Drupal::service('config.typed')->get('wrapping.config_schema_test.double_brackets')->get('tests')->getElements();
-    $definition = $tests[0]->getDataDefinition()->toArray();
-    $this->assertEqual($definition['type'], 'wrapping.test.double_brackets.*||test.double_brackets.cat.dog');
-
-    // Combine everything in a single save.
-    $typed_values = [
-      'tests' => [
-        [
-          'wrapper_value' => 'foo',
-          'foo' => 'cat',
-          'bar' => 'dog',
-          'another_key' => 100,
-        ],
-        [
-          'wrapper_value' => 'foo',
-          'foo' => 'turtle',
-          'bar' => 'horse',
-          'another_key' => '100',
-        ],
-      ],
-    ];
-    \Drupal::configFactory()->getEditable('wrapping.config_schema_test.double_brackets')
-      ->setData($typed_values)
-      ->save();
-    $tests = \Drupal::service('config.typed')->get('wrapping.config_schema_test.double_brackets')->get('tests')->getElements();
-    $definition = $tests[0]->getDataDefinition()->toArray();
-    $this->assertEqual($definition['type'], 'wrapping.test.double_brackets.*||test.double_brackets.cat.dog');
-    $definition = $tests[1]->getDataDefinition()->toArray();
-    $this->assertEqual($definition['type'], 'wrapping.test.double_brackets.*||test.double_brackets.turtle.horse');
   }
 
 }
diff --git a/core/modules/config/tests/config_schema_test/config/schema/config_schema_test.schema.yml b/core/modules/config/tests/config_schema_test/config/schema/config_schema_test.schema.yml
index f96bb8b..d7ec9a5 100644
--- a/core/modules/config/tests/config_schema_test/config/schema/config_schema_test.schema.yml
+++ b/core/modules/config/tests/config_schema_test/config/schema/config_schema_test.schema.yml
@@ -258,15 +258,5 @@ test.double_brackets.cat.dog:
     bar:
       type: string
 
-test.double_brackets.turtle.horse:
-  type: test.double_brackets
-  mapping:
-    another_key:
-      type: integer
-    foo:
-      type: string
-    bar:
-      type: string
-
 test.double_brackets.*:
   type: mapping
diff --git a/core/modules/config_translation/src/FormElement/DateFormat.php b/core/modules/config_translation/src/FormElement/DateFormat.php
index a39da17..6395a92 100644
--- a/core/modules/config_translation/src/FormElement/DateFormat.php
+++ b/core/modules/config_translation/src/FormElement/DateFormat.php
@@ -20,7 +20,7 @@ class DateFormat extends FormElementBase {
   public function getTranslationElement(LanguageInterface $translation_language, $source_config, $translation_config) {
     /** @var \Drupal\Core\Datetime\DateFormatterInterface $date_formatter */
     $date_formatter = \Drupal::service('date.formatter');
-    $description = $this->t('A user-defined date format. See the <a href="http://php.net/manual/function.date.php">PHP manual</a> for available options.');
+    $description = $this->t('A user-defined date format. See the <a href=":url">PHP manual</a> for available options.', array(':url' => 'http://php.net/manual/function.date.php'));
     $format = $this->t('Displayed as %date_format', array('%date_format' => $date_formatter->format(REQUEST_TIME, 'custom', $translation_config)));
 
     return [
diff --git a/core/modules/config_translation/src/Tests/ConfigTranslationListUiTest.php b/core/modules/config_translation/src/Tests/ConfigTranslationListUiTest.php
index 9671feb..fceb41d 100644
--- a/core/modules/config_translation/src/Tests/ConfigTranslationListUiTest.php
+++ b/core/modules/config_translation/src/Tests/ConfigTranslationListUiTest.php
@@ -7,15 +7,10 @@
 
 namespace Drupal\config_translation\Tests;
 
-use Drupal\block_content\Entity\BlockContentType;
 use Drupal\Component\Utility\Unicode;
-use Drupal\field\Entity\FieldConfig;
 use Drupal\field\Entity\FieldStorageConfig;
 use Drupal\language\Entity\ConfigurableLanguage;
 use Drupal\simpletest\WebTestBase;
-use Drupal\shortcut\Entity\ShortcutSet;
-use Drupal\contact\Entity\ContactForm;
-use Drupal\filter\Entity\FilterFormat;
 
 /**
  * Visit all lists.
@@ -190,7 +185,7 @@ protected function doVocabularyListTest() {
   public function doCustomContentTypeListTest() {
     // Create a test custom block type to decouple looking for translate
     // operations link so this does not test more than necessary.
-    $block_content_type = BlockContentType::create(array(
+    $block_content_type = entity_create('block_content_type', array(
       'id' => Unicode::strtolower($this->randomMachineName(16)),
       'label' => $this->randomMachineName(),
       'revision' => FALSE
@@ -215,10 +210,10 @@ public function doCustomContentTypeListTest() {
   public function doContactFormsListTest() {
     // Create a test contact form to decouple looking for translate operations
     // link so this does not test more than necessary.
-    $contact_form = ContactForm::create([
+    $contact_form = entity_create('contact_form', array(
       'id' => Unicode::strtolower($this->randomMachineName(16)),
       'label' => $this->randomMachineName(),
-    ]);
+    ));
     $contact_form->save();
 
     // Get the contact form listing.
@@ -262,7 +257,7 @@ public function doContentTypeListTest() {
   public function doFormatsListTest() {
     // Create a test format to decouple looking for translate operations
     // link so this does not test more than necessary.
-    $filter_format = FilterFormat::create(array(
+    $filter_format = entity_create('filter_format', array(
       'format' => Unicode::strtolower($this->randomMachineName(16)),
       'name' => $this->randomMachineName(),
     ));
@@ -286,7 +281,7 @@ public function doFormatsListTest() {
   public function doShortcutListTest() {
     // Create a test shortcut to decouple looking for translate operations
     // link so this does not test more than necessary.
-    $shortcut = ShortcutSet::create(array(
+    $shortcut = entity_create('shortcut_set', array(
       'id' => Unicode::strtolower($this->randomMachineName(16)),
       'label' => $this->randomString(),
     ));
@@ -396,20 +391,20 @@ public function doFieldListTest() {
     ));
 
     // Create a block content type.
-    $block_content_type = BlockContentType::create(array(
+    $block_content_type = entity_create('block_content_type', array(
       'id' => 'basic',
       'label' => 'Basic',
       'revision' => FALSE
     ));
     $block_content_type->save();
-    $field = FieldConfig::create([
+    $field = entity_create('field_config', array(
       // The field storage is guaranteed to exist because it is supplied by the
       // block_content module.
       'field_storage' => FieldStorageConfig::loadByName('block_content', 'body'),
       'bundle' => $block_content_type->id(),
       'label' => 'Body',
       'settings' => array('display_summary' => FALSE),
-    ]);
+    ));
     $field->save();
 
     // Look at a few fields on a few entity types.
diff --git a/core/modules/contact/contact.module b/core/modules/contact/contact.module
index 63e1c4d..46b131d 100644
--- a/core/modules/contact/contact.module
+++ b/core/modules/contact/contact.module
@@ -35,6 +35,14 @@ function contact_help($route_name, RouteMatchInterface $route_match) {
       $output .= '</dl>';
       return $output;
 
+    case 'entity.contact_form.collection':
+      $menu_page = \Drupal::moduleHandler()->moduleExists('menu_ui') ? \Drupal::url('entity.menu.collection') : '#';
+      $block_page = \Drupal::moduleHandler()->moduleExists('block') ? \Drupal::url('block.admin_display') : '#';
+      $output = '';
+      $output .= '<p>' . t('The <em>Personal contact form</em> is the form for site visitors to contact registered users; the name and recipients of this form cannot be edited. Other forms listed here are your configured site-wide contact forms, which site visitors can use to send mail to a centralized email address or addresses. You can edit the name and recipients of site-wide forms by choosing the <em>Edit</em> operation. You can also configure the fields and display of both personal and site-wide forms.') . '</p>';
+      $output .= '<p>' . t('If you have configured a default site-wide contact form, a <em>Contact</em> menu link in the <em>Footer</em> menu will link to it. You can modify this link from the <a href=":menu-settings">Menus page</a> if you have the Menu UI module installed. You can also create links to other contact forms; the URL has format contact/machine_name_of_form.', array(':menu-settings' => $menu_page)) . '</p>';
+      $output .= '<p>' . t('If you would like additional text to appear on a site-wide contact page, beyond field labels, use a block. You can create and edit blocks on the <a href=":blocks">Block layout page</a>, if you have the Block module installed.', array(':blocks' => $block_page)) . '</p>';
+      return $output;
   }
 }
 
diff --git a/core/modules/contact/src/Tests/ContactPersonalTest.php b/core/modules/contact/src/Tests/ContactPersonalTest.php
index 8b1a7a1..d133240 100644
--- a/core/modules/contact/src/Tests/ContactPersonalTest.php
+++ b/core/modules/contact/src/Tests/ContactPersonalTest.php
@@ -232,6 +232,11 @@ function testPersonalContactFlood() {
     $flood_limit = 3;
     $this->config('contact.settings')->set('flood.limit', $flood_limit)->save();
 
+    // Clear flood table in preparation for flood test and allow other checks to complete.
+    db_delete('flood')->execute();
+    $num_records_flood = db_query("SELECT COUNT(*) FROM {flood}")->fetchField();
+    $this->assertIdentical($num_records_flood, '0', 'Flood table emptied.');
+
     $this->drupalLogin($this->webUser);
 
     // Submit contact form with correct values and check flood interval.
diff --git a/core/modules/contact/src/Tests/ContactSitewideTest.php b/core/modules/contact/src/Tests/ContactSitewideTest.php
index a29a45b..39cd34a 100644
--- a/core/modules/contact/src/Tests/ContactSitewideTest.php
+++ b/core/modules/contact/src/Tests/ContactSitewideTest.php
@@ -185,6 +185,10 @@ function testSiteWideContact() {
     $this->assertNoRaw(t('Contact form %label has been added.', array('%label' => $label)));
     $this->assertRaw(t('The machine-readable name is already in use. It must be unique.'));
 
+    // Clear flood table in preparation for flood test and allow other checks to complete.
+    db_delete('flood')->execute();
+    $num_records_after = db_query("SELECT COUNT(*) FROM {flood}")->fetchField();
+    $this->assertIdentical($num_records_after, '0', 'Flood table emptied.');
     $this->drupalLogout();
 
     // Check to see that anonymous user cannot see contact page without permission.
diff --git a/core/modules/contact/src/Tests/Views/ContactFieldsTest.php b/core/modules/contact/src/Tests/Views/ContactFieldsTest.php
index 197a69f..014e968 100644
--- a/core/modules/contact/src/Tests/Views/ContactFieldsTest.php
+++ b/core/modules/contact/src/Tests/Views/ContactFieldsTest.php
@@ -7,10 +7,7 @@
 
 namespace Drupal\contact\Tests\Views;
 
-use Drupal\field\Entity\FieldConfig;
 use Drupal\views\Tests\ViewTestBase;
-use Drupal\field\Entity\FieldStorageConfig;
-use Drupal\contact\Entity\ContactForm;
 
 /**
  * Tests which checks that no fieldapi fields are added on contact.
@@ -36,22 +33,22 @@ class ContactFieldsTest extends ViewTestBase {
   protected function setUp() {
     parent::setUp();
 
-    $this->fieldStorage = FieldStorageConfig::create(array(
+    $this->fieldStorage = entity_create('field_storage_config', array(
       'field_name' => strtolower($this->randomMachineName()),
       'entity_type' => 'contact_message',
       'type' => 'text'
     ));
     $this->fieldStorage->save();
 
-    ContactForm::create([
+    entity_create('contact_form', array(
       'id' => 'contact_message',
       'label' => 'Test contact form',
-    ])->save();
+    ))->save();
 
-    FieldConfig::create([
+    entity_create('field_config', array(
       'field_storage' => $this->fieldStorage,
       'bundle' => 'contact_message',
-    ])->save();
+    ))->save();
 
     $this->container->get('views.views_data')->clear();
   }
diff --git a/core/modules/content_translation/content_translation.install b/core/modules/content_translation/content_translation.install
index 79b76cf..d44b2d1 100644
--- a/core/modules/content_translation/content_translation.install
+++ b/core/modules/content_translation/content_translation.install
@@ -21,7 +21,7 @@ function content_translation_enable() {
   // Translation works when at least two languages are added.
   if (count(\Drupal::languageManager()->getLanguages()) < 2) {
     $t_args = array(':language_url' => \Drupal::url('entity.configurable_language.collection'));
-    $message = t('This site has only a single language enabled. <a href=":language_url">Add at least one more language</a> in order to translate content.', $t_args);
+    $message = t('Be sure to <a href=":language_url">add at least two languages</a> to translate content.', $t_args);
     drupal_set_message($message, 'warning');
   }
   // Point the user to the content translation settings.
diff --git a/core/modules/content_translation/src/Tests/ContentTranslationContextualLinksTest.php b/core/modules/content_translation/src/Tests/ContentTranslationContextualLinksTest.php
index 320180f..edccaf0 100644
--- a/core/modules/content_translation/src/Tests/ContentTranslationContextualLinksTest.php
+++ b/core/modules/content_translation/src/Tests/ContentTranslationContextualLinksTest.php
@@ -8,11 +8,9 @@
 namespace Drupal\content_translation\Tests;
 
 use Drupal\Component\Serialization\Json;
-use Drupal\field\Entity\FieldConfig;
 use Drupal\language\Entity\ConfigurableLanguage;
 use Drupal\node\Entity\NodeType;
 use Drupal\simpletest\WebTestBase;
-use Drupal\field\Entity\FieldStorageConfig;
 
 /**
  * Tests that contextual links are available for content translation.
@@ -74,18 +72,18 @@ protected function setUp() {
     $this->contentType = $this->drupalCreateContentType(array('type' => $this->bundle));
 
     // Add a field to the content type. The field is not yet translatable.
-    FieldStorageConfig::create(array(
+    entity_create('field_storage_config', array(
       'field_name' => 'field_test_text',
       'entity_type' => 'node',
       'type' => 'text',
       'cardinality' => 1,
     ))->save();
-    FieldConfig::create([
+    entity_create('field_config', array(
       'entity_type' => 'node',
       'field_name' => 'field_test_text',
       'bundle' => $this->bundle,
       'label' => 'Test text-field',
-    ])->save();
+    ))->save();
     entity_get_form_display('node', $this->bundle, 'default')
       ->setComponent('field_test_text', array(
         'type' => 'text_textfield',
diff --git a/core/modules/content_translation/src/Tests/ContentTranslationSyncImageTest.php b/core/modules/content_translation/src/Tests/ContentTranslationSyncImageTest.php
index 281d7b8..56b1ed5 100644
--- a/core/modules/content_translation/src/Tests/ContentTranslationSyncImageTest.php
+++ b/core/modules/content_translation/src/Tests/ContentTranslationSyncImageTest.php
@@ -8,9 +8,6 @@
 namespace Drupal\content_translation\Tests;
 
 use Drupal\Core\Entity\EntityInterface;
-use Drupal\field\Entity\FieldConfig;
-use Drupal\field\Entity\FieldStorageConfig;
-use Drupal\file\Entity\File;
 
 /**
  * Tests the field synchronization behavior for the image field.
@@ -52,14 +49,14 @@ protected function setupTestFields() {
     $this->fieldName = 'field_test_et_ui_image';
     $this->cardinality = 3;
 
-    FieldStorageConfig::create(array(
+    entity_create('field_storage_config', array(
       'field_name' => $this->fieldName,
       'entity_type' => $this->entityTypeId,
       'type' => 'image',
       'cardinality' => $this->cardinality,
     ))->save();
 
-    FieldConfig::create([
+    entity_create('field_config', array(
       'entity_type' => $this->entityTypeId,
       'field_name' => $this->fieldName,
       'bundle' => $this->entityTypeId,
@@ -73,7 +70,7 @@ protected function setupTestFields() {
           ),
         ),
       ),
-    ])->save();
+    ))->save();
   }
 
   /**
@@ -140,7 +137,7 @@ function testImageFieldSync() {
         'uid' => \Drupal::currentUser()->id(),
         'status' => FILE_STATUS_PERMANENT,
       );
-      $file = File::create($field_values);
+      $file = entity_create('file', $field_values);
       $file->save();
       $fid = $file->id();
       $this->files[$index]->fid = $fid;
diff --git a/core/modules/content_translation/src/Tests/ContentTranslationTestBase.php b/core/modules/content_translation/src/Tests/ContentTranslationTestBase.php
index 9a93ba2..d00b378 100644
--- a/core/modules/content_translation/src/Tests/ContentTranslationTestBase.php
+++ b/core/modules/content_translation/src/Tests/ContentTranslationTestBase.php
@@ -8,10 +8,8 @@
 namespace Drupal\content_translation\Tests;
 
 use Drupal\Core\Entity\Sql\SqlContentEntityStorage;
-use Drupal\field\Entity\FieldConfig;
 use Drupal\language\Entity\ConfigurableLanguage;
 use Drupal\simpletest\WebTestBase;
-use Drupal\field\Entity\FieldStorageConfig;
 
 /**
  * Base class for content translation tests.
@@ -185,18 +183,18 @@ protected function setupTestFields() {
     if (empty($this->fieldName)) {
       $this->fieldName = 'field_test_et_ui_test';
     }
-    FieldStorageConfig::create(array(
+    entity_create('field_storage_config', array(
       'field_name' => $this->fieldName,
       'type' => 'string',
       'entity_type' => $this->entityTypeId,
       'cardinality' => 1,
     ))->save();
-    FieldConfig::create([
+    entity_create('field_config', array(
       'entity_type' => $this->entityTypeId,
       'field_name' => $this->fieldName,
       'bundle' => $this->bundle,
       'label' => 'Test translatable text-field',
-    ])->save();
+    ))->save();
     entity_get_form_display($this->entityTypeId, $this->bundle, 'default')
       ->setComponent($this->fieldName, array(
         'type' => 'string_textfield',
diff --git a/core/modules/contextual/images/gear-select.png b/core/modules/contextual/images/gear-select.png
new file mode 100644
index 0000000..adf6582
--- /dev/null
+++ b/core/modules/contextual/images/gear-select.png
@@ -0,0 +1,8 @@
+PNG
+
+   IHDR      $   $ZT  IDATxA0@PIB![W7 `mPnoHg.>H__G^tuK_KPIb@Bc:"XF{!*AZ&lEl90SUZJ"
+Yᒽ/
+-cN	9"
+ +pWK6!@Pc ~4UĦY)<zN4)Xd\H,
++X!ooӄn9&؂+;sC+xH^jjr!IHhlAGh<^x/D=@˄-f\"t֢q|)P 
+})Vh#tbM`c~Q|NJq&$>(9=ãMSEl:0/GωI"H̣shXZeL6s9&C.o@1|{ޤ    IENDB`
\ No newline at end of file
diff --git a/core/modules/datetime/datetime.views.inc b/core/modules/datetime/datetime.views.inc
index d3b0d18..c12a3ac 100644
--- a/core/modules/datetime/datetime.views.inc
+++ b/core/modules/datetime/datetime.views.inc
@@ -26,11 +26,8 @@ function datetime_field_views_data(FieldStorageConfigInterface $field_storage) {
     $arguments = [
       // Argument type => help text.
       'year' => t('Date in the form of YYYY.'),
-      'month' => t('Date in the form of MM (01 - 12).'),
-      'day' => t('Date in the form of DD (01 - 31).'),
-      'week' => t('Date in the form of WW (01 - 53).'),
-      'year_month' => t('Date in the form of YYYYMM.'),
-      'full_date' => t('Date in the form of CCYYMMDD.'),
+      'month' => t('Date in the form of MM.'),
+      'day' => t('Date in the form of DD.'),
     ];
     foreach ($arguments as $argument_type => $help_text) {
       $data[$table_name][$field_storage->getName() . '_value_' . $argument_type] = [
diff --git a/core/modules/datetime/src/Plugin/Field/FieldFormatter/DateTimeCustomFormatter.php b/core/modules/datetime/src/Plugin/Field/FieldFormatter/DateTimeCustomFormatter.php
index 5b53a8f..af6fd37 100644
--- a/core/modules/datetime/src/Plugin/Field/FieldFormatter/DateTimeCustomFormatter.php
+++ b/core/modules/datetime/src/Plugin/Field/FieldFormatter/DateTimeCustomFormatter.php
@@ -84,7 +84,7 @@ public function settingsForm(array $form, FormStateInterface $form_state) {
     $form['date_format'] = array(
       '#type' => 'textfield',
       '#title' => $this->t('Date/time format'),
-      '#description' => $this->t('See <a href="http://php.net/manual/function.date.php" target="_blank">the documentation for PHP date formats</a>.'),
+      '#description' => $this->t('See <a href=":url" target="_blank">the documentation for PHP date formats</a>.', [':url' => 'http://php.net/manual/function.date.php']),
       '#default_value' => $this->getSetting('date_format'),
     );
 
diff --git a/core/modules/datetime/src/Plugin/Field/FieldFormatter/DateTimeTimeAgoFormatter.php b/core/modules/datetime/src/Plugin/Field/FieldFormatter/DateTimeTimeAgoFormatter.php
index 786c49b..b902c31 100644
--- a/core/modules/datetime/src/Plugin/Field/FieldFormatter/DateTimeTimeAgoFormatter.php
+++ b/core/modules/datetime/src/Plugin/Field/FieldFormatter/DateTimeTimeAgoFormatter.php
@@ -8,7 +8,6 @@
 namespace Drupal\datetime\Plugin\Field\FieldFormatter;
 
 use Drupal\Component\Utility\SafeMarkup;
-use Drupal\Core\Cache\CacheableMetadata;
 use Drupal\Core\Datetime\DateFormatterInterface;
 use Drupal\Core\Datetime\DrupalDateTime;
 use Drupal\Core\Field\FieldDefinitionInterface;
@@ -113,7 +112,7 @@ public function viewElements(FieldItemListInterface $items, $langcode) {
 
     foreach ($items as $delta => $item) {
       $date = $item->date;
-      $output = [];
+      $output = '';
       if (!empty($item->date)) {
         if ($this->getFieldSetting('datetime_type') == 'date') {
           // A date without time will pick up the current time, use the default.
@@ -121,7 +120,7 @@ public function viewElements(FieldItemListInterface $items, $langcode) {
         }
         $output = $this->formatDate($date);
       }
-      $elements[$delta] = $output;
+      $elements[$delta] = array('#markup' => $output);
     }
 
     return $elements;
@@ -177,31 +176,20 @@ public function settingsSummary() {
    * @param \Drupal\Core\Datetime\DrupalDateTime|object $date
    *   A date/time object.
    *
-   * @return array
+   * @return string
    *   The formatted date/time string using the past or future format setting.
    */
   protected function formatDate(DrupalDateTime $date) {
     $granularity = $this->getSetting('granularity');
     $timestamp = $date->getTimestamp();
-    $options = [
-      'granularity' => $granularity,
-      'return_as_object' => TRUE,
-    ];
+    $options = ['granularity' => $granularity];
 
     if ($this->request->server->get('REQUEST_TIME') > $timestamp) {
-      $result = $this->dateFormatter->formatTimeDiffSince($timestamp, $options);
-      $build = [
-        '#markup' => SafeMarkup::format($this->getSetting('past_format'), ['@interval' => $result->getString()]),
-      ];
+      return SafeMarkup::format($this->getSetting('past_format'), ['@interval' => $this->dateFormatter->formatTimeDiffSince($timestamp, $options)]);
     }
     else {
-      $result = $this->dateFormatter->formatTimeDiffUntil($timestamp, $options);
-      $build = [
-        '#markup' => SafeMarkup::format($this->getSetting('future_format'), ['@interval' => $result->getString()]),
-      ];
+      return SafeMarkup::format($this->getSetting('future_format'), ['@interval' => $this->dateFormatter->formatTimeDiffUntil($timestamp, $options)]);
     }
-    CacheableMetadata::createFromObject($result)->applyTo($build);
-    return $build;
   }
 
 }
diff --git a/core/modules/datetime/src/Plugin/Field/FieldType/DateTimeFieldItemList.php b/core/modules/datetime/src/Plugin/Field/FieldType/DateTimeFieldItemList.php
index 3998900..e277c14 100644
--- a/core/modules/datetime/src/Plugin/Field/FieldType/DateTimeFieldItemList.php
+++ b/core/modules/datetime/src/Plugin/Field/FieldType/DateTimeFieldItemList.php
@@ -51,7 +51,7 @@ public function defaultValuesForm(array &$form, FormStateInterface $form_state)
         'default_date' => array(
           '#type' => 'textfield',
           '#title' => t('Relative default value'),
-          '#description' => t("Describe a time by reference to the current day, like '+90 days' (90 days from the day the field is created) or '+1 Saturday' (the next Saturday). See <a href=\"http://php.net/manual/function.strtotime.php\">strtotime</a> for more details."),
+          '#description' => t("Describe a time by reference to the current day, like '+90 days' (90 days from the day the field is created) or '+1 Saturday' (the next Saturday). See <a href=\"@url\">@strtotime</a> for more details.", array('@strtotime' => 'strtotime', '@url' => 'http://www.php.net/manual/en/function.strtotime.php')),
           '#default_value' => (isset($default_value[0]['default_date_type']) && $default_value[0]['default_date_type'] == static::DEFAULT_VALUE_CUSTOM) ? $default_value[0]['default_date'] : '',
           '#states' => array(
             'visible' => array(
diff --git a/core/modules/datetime/src/Plugin/views/argument/FullDate.php b/core/modules/datetime/src/Plugin/views/argument/FullDate.php
deleted file mode 100644
index 16644a9..0000000
--- a/core/modules/datetime/src/Plugin/views/argument/FullDate.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\datetime\Plugin\views\argument\FullDate.
- */
-
-namespace Drupal\datetime\Plugin\views\argument;
-
-/**
- * Argument handler for a full date (CCYYMMDD).
- *
- * @ViewsArgument("datetime_full_date")
- */
-class FullDate extends Date {
-
-  /**
-   * {@inheritdoc}
-   */
-  protected $argFormat = 'Ymd';
-
-}
diff --git a/core/modules/datetime/src/Plugin/views/argument/WeekDate.php b/core/modules/datetime/src/Plugin/views/argument/WeekDate.php
deleted file mode 100644
index 6b0d817..0000000
--- a/core/modules/datetime/src/Plugin/views/argument/WeekDate.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\datetime\Plugin\views\argument\WeekDate.
- */
-
-namespace Drupal\datetime\Plugin\views\argument;
-
-/**
- * Argument handler for a week.
- *
- * @ViewsArgument("datetime_week")
- */
-class WeekDate extends Date {
-
-  /**
-   * {@inheritdoc}
-   */
-  protected $argFormat = 'W';
-
-}
diff --git a/core/modules/datetime/src/Plugin/views/argument/YearMonthDate.php b/core/modules/datetime/src/Plugin/views/argument/YearMonthDate.php
deleted file mode 100644
index 1a533bf..0000000
--- a/core/modules/datetime/src/Plugin/views/argument/YearMonthDate.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\datetime\Plugin\views\argument\YearMonthDate.
- */
-
-namespace Drupal\datetime\Plugin\views\argument;
-
-/**
- * Argument handler for a year plus month (CCYYMM).
- *
- * @ViewsArgument("datetime_year_month")
- */
-class YearMonthDate extends Date {
-
-  /**
-   * {@inheritdoc}
-   */
-  protected $argFormat = 'Ym';
-
-}
diff --git a/core/modules/datetime/src/Tests/DateTimeFieldTest.php b/core/modules/datetime/src/Tests/DateTimeFieldTest.php
index dc55bfe..14ad190 100644
--- a/core/modules/datetime/src/Tests/DateTimeFieldTest.php
+++ b/core/modules/datetime/src/Tests/DateTimeFieldTest.php
@@ -11,9 +11,7 @@
 use Drupal\Component\Utility\Unicode;
 use Drupal\Core\Entity\Entity\EntityViewDisplay;
 use Drupal\Core\Datetime\DrupalDateTime;
-use Drupal\field\Entity\FieldConfig;
 use Drupal\simpletest\WebTestBase;
-use Drupal\field\Entity\FieldStorageConfig;
 
 /**
  * Tests Datetime field functionality.
@@ -79,18 +77,18 @@ protected function setUp() {
 
     // Create a field with settings to validate.
     $field_name = Unicode::strtolower($this->randomMachineName());
-    $this->fieldStorage = FieldStorageConfig::create(array(
+    $this->fieldStorage = entity_create('field_storage_config', array(
       'field_name' => $field_name,
       'entity_type' => 'entity_test',
       'type' => 'datetime',
       'settings' => array('datetime_type' => 'date'),
     ));
     $this->fieldStorage->save();
-    $this->field = FieldConfig::create([
+    $this->field = entity_create('field_config', array(
       'field_storage' => $this->fieldStorage,
       'bundle' => 'entity_test',
       'required' => TRUE,
-    ]);
+    ));
     $this->field->save();
 
     entity_get_form_display($this->field->getTargetEntityTypeId(), $this->field->getTargetBundle(), 'default')
@@ -626,7 +624,7 @@ function testDefaultValue() {
 
     // Create a field storage with settings to validate.
     $field_name = Unicode::strtolower($this->randomMachineName());
-    $field_storage = FieldStorageConfig::create(array(
+    $field_storage = entity_create('field_storage_config', array(
       'field_name' => $field_name,
       'entity_type' => 'node',
       'type' => 'datetime',
@@ -634,10 +632,10 @@ function testDefaultValue() {
     ));
     $field_storage->save();
 
-    $field = FieldConfig::create([
+    $field = entity_create('field_config', array(
       'field_storage' => $field_storage,
       'bundle' => 'date_content',
-    ]);
+    ));
     $field->save();
 
     // Set now as default_value.
diff --git a/core/modules/datetime/src/Tests/DateTimeItemTest.php b/core/modules/datetime/src/Tests/DateTimeItemTest.php
index 2f4fbcc..d83d2a2 100644
--- a/core/modules/datetime/src/Tests/DateTimeItemTest.php
+++ b/core/modules/datetime/src/Tests/DateTimeItemTest.php
@@ -9,9 +9,7 @@
 
 use Drupal\Core\Field\FieldItemListInterface;
 use Drupal\Core\Field\FieldItemInterface;
-use Drupal\field\Entity\FieldConfig;
 use Drupal\field\Tests\FieldUnitTestBase;
-use Drupal\field\Entity\FieldStorageConfig;
 
 /**
  * Tests the new entity API for the date field type.
@@ -31,20 +29,20 @@ protected function setUp() {
     parent::setUp();
 
     // Create a field with settings to validate.
-    $field_storage = FieldStorageConfig::create(array(
+    $field_storage = entity_create('field_storage_config', array(
       'field_name' => 'field_datetime',
       'type' => 'datetime',
       'entity_type' => 'entity_test',
       'settings' => array('datetime_type' => 'date'),
     ));
     $field_storage->save();
-    $field = FieldConfig::create([
+    $field = entity_create('field_config', array(
       'field_storage' => $field_storage,
       'bundle' => 'entity_test',
       'settings' => array(
         'default_value' => 'blank',
       ),
-    ]);
+    ));
     $field->save();
   }
 
diff --git a/core/modules/datetime/src/Tests/Views/ArgumentDateTimeTest.php b/core/modules/datetime/src/Tests/Views/ArgumentDateTimeTest.php
index ba90110..e40868e 100644
--- a/core/modules/datetime/src/Tests/Views/ArgumentDateTimeTest.php
+++ b/core/modules/datetime/src/Tests/Views/ArgumentDateTimeTest.php
@@ -138,71 +138,4 @@ public function testDatetimeArgumentAll() {
     $view->destroy();
   }
 
-  /**
-   * Test week WW argument.
-   */
-  public function testDatetimeArgumentWeek() {
-    $view = Views::getView('test_argument_datetime');
-    // The 'embed_4' display has WW argument.
-    $view->setDisplay('embed_4');
-
-    $this->executeView($view, ['41']);
-    $expected = [];
-    $expected[] = ['nid' => $this->nodes[0]->id()];
-    $expected[] = ['nid' => $this->nodes[1]->id()];
-    $this->assertIdenticalResultset($view, $expected, $this->map);
-    $view->destroy();
-
-    $view->setDisplay('embed_4');
-    $this->executeView($view, ['01']);
-    $expected = [];
-    $expected[] = ['nid' => $this->nodes[2]->id()];
-    $this->assertIdenticalResultset($view, $expected, $this->map);
-    $view->destroy();
-  }
-
-  /**
-   * Test full_date CCYYMMDD argument.
-   */
-  public function testDatetimeArgumentFullDate() {
-    $view = Views::getView('test_argument_datetime');
-    // The 'embed_5' display has CCYYMMDD argument.
-    $view->setDisplay('embed_5');
-
-    $this->executeView($view, ['20001010']);
-    $expected = [];
-    $expected[] = ['nid' => $this->nodes[0]->id()];
-    $this->assertIdenticalResultset($view, $expected, $this->map);
-    $view->destroy();
-
-    $view->setDisplay('embed_5');
-    $this->executeView($view, ['20020101']);
-    $expected = [];
-    $expected[] = ['nid' => $this->nodes[2]->id()];
-    $this->assertIdenticalResultset($view, $expected, $this->map);
-    $view->destroy();
-  }
-
-  /**
-   * Test year_month CCYYMM argument.
-   */
-  public function testDatetimeArgumentYearMonth() {
-    $view = Views::getView('test_argument_datetime');
-    // The 'embed_6' display has CCYYMM argument.
-    $view->setDisplay('embed_6');
-
-    $this->executeView($view, ['200010']);
-    $expected = [];
-    $expected[] = ['nid' => $this->nodes[0]->id()];
-    $this->assertIdenticalResultset($view, $expected, $this->map);
-    $view->destroy();
-
-    $view->setDisplay('embed_6');
-    $this->executeView($view, ['200201']);
-    $expected = [];
-    $expected[] = ['nid' => $this->nodes[2]->id()];
-    $this->assertIdenticalResultset($view, $expected, $this->map);
-    $view->destroy();
-  }
-
 }
diff --git a/core/modules/datetime/src/Tests/Views/DateTimeHandlerTestBase.php b/core/modules/datetime/src/Tests/Views/DateTimeHandlerTestBase.php
index 208f66e..068f718 100644
--- a/core/modules/datetime/src/Tests/Views/DateTimeHandlerTestBase.php
+++ b/core/modules/datetime/src/Tests/Views/DateTimeHandlerTestBase.php
@@ -8,11 +8,8 @@
 namespace Drupal\datetime\Tests\Views;
 
 use Drupal\datetime\Plugin\Field\FieldType\DateTimeItem;
-use Drupal\field\Entity\FieldConfig;
-use Drupal\node\Entity\NodeType;
 use Drupal\views\Tests\Handler\HandlerTestBase;
 use Drupal\views\Tests\ViewTestData;
-use Drupal\field\Entity\FieldStorageConfig;
 
 /**
  * Base class for testing datetime handlers.
@@ -47,19 +44,19 @@ protected function setUp() {
     parent::setUp();
 
     // Add a date field to page nodes.
-    $node_type = NodeType::create([
+    $node_type = entity_create('node_type', [
       'type' => 'page',
       'name' => 'page'
     ]);
     $node_type->save();
-    $fieldStorage = FieldStorageConfig::create([
+    $fieldStorage = entity_create('field_storage_config', [
       'field_name' => static::$field_name,
       'entity_type' => 'node',
       'type' => 'datetime',
       'settings' => ['datetime_type' => DateTimeItem::DATETIME_TYPE_DATETIME],
     ]);
     $fieldStorage->save();
-    $field = FieldConfig::create([
+    $field = entity_create('field_config', [
       'field_storage' => $fieldStorage,
       'bundle' => 'page',
       'required' => TRUE,
diff --git a/core/modules/datetime/tests/modules/datetime_test/test_views/views.view.test_argument_datetime.yml b/core/modules/datetime/tests/modules/datetime_test/test_views/views.view.test_argument_datetime.yml
index 24900e6..7f3abec 100644
--- a/core/modules/datetime/tests/modules/datetime_test/test_views/views.view.test_argument_datetime.yml
+++ b/core/modules/datetime/tests/modules/datetime_test/test_views/views.view.test_argument_datetime.yml
@@ -97,45 +97,3 @@ display:
     id: embed_2
     display_title: ''
     position: null
-  embed_4:
-    display_options:
-      defaults:
-        arguments: false
-      arguments:
-        field_date_value_day:
-          field: field_date_value_week
-          id: field_date_value
-          table: node__field_date
-          plugin_id: datetime_week
-    display_plugin: embed
-    id: embed_4
-    display_title: ''
-    position: null
-  embed_5:
-    display_options:
-      defaults:
-        arguments: false
-      arguments:
-        field_date_value_day:
-          field: field_date_value_full_date
-          id: field_date_value
-          table: node__field_date
-          plugin_id: datetime_full_date
-    display_plugin: embed
-    id: embed_5
-    display_title: ''
-    position: null
-  embed_6:
-    display_options:
-      defaults:
-        arguments: false
-      arguments:
-        field_date_value_day:
-          field: field_date_value_year_month
-          id: field_date_value
-          table: node__field_date
-          plugin_id: datetime_year_month
-    display_plugin: embed
-    id: embed_6
-    display_title: ''
-    position: null
diff --git a/core/modules/dblog/dblog.views.inc b/core/modules/dblog/dblog.views.inc
index dfc1fde..1012d6f 100644
--- a/core/modules/dblog/dblog.views.inc
+++ b/core/modules/dblog/dblog.views.inc
@@ -60,7 +60,7 @@ function dblog_views_data() {
 
   $data['watchdog']['type'] = array(
     'title' => t('Type'),
-    'help' => t('The type of the log entry, for example "user" or "page not found".'),
+    'help' => t('The of the log entry, for example "user" or "page not found.".'),
     'field' => array(
       'id' => 'standard',
     ),
diff --git a/core/modules/dynamic_page_cache/src/EventSubscriber/DynamicPageCacheSubscriber.php b/core/modules/dynamic_page_cache/src/EventSubscriber/DynamicPageCacheSubscriber.php
index 63689a1..7602b4d 100644
--- a/core/modules/dynamic_page_cache/src/EventSubscriber/DynamicPageCacheSubscriber.php
+++ b/core/modules/dynamic_page_cache/src/EventSubscriber/DynamicPageCacheSubscriber.php
@@ -41,6 +41,14 @@
 class DynamicPageCacheSubscriber implements EventSubscriberInterface {
 
   /**
+   * Attribute name of the Dynamic Page Cache request policy result.
+   *
+   * @see onRouteMatch()
+   * @see onRespond()
+   */
+  const ATTRIBUTE_REQUEST_POLICY_RESULT = '_dynamic_page_cache_request_policy_result';
+
+  /**
    * Name of Dynamic Page Cache's response header.
    */
   const HEADER = 'X-Drupal-Dynamic-Cache';
@@ -96,13 +104,6 @@ class DynamicPageCacheSubscriber implements EventSubscriberInterface {
   ];
 
   /**
-   * Internal cache of request policy results.
-   *
-   * @var \SplObjectStorage
-   */
-  protected $requestPolicyResults;
-
-  /**
    * Constructs a new DynamicPageCacheSubscriber object.
    *
    * @param \Drupal\Core\PageCache\RequestPolicyInterface $request_policy
@@ -119,7 +120,6 @@ public function __construct(RequestPolicyInterface $request_policy, ResponsePoli
     $this->responsePolicy = $response_policy;
     $this->renderCache = $render_cache;
     $this->rendererConfig = $renderer_config;
-    $this->requestPolicyResults = new \SplObjectStorage();
   }
 
   /**
@@ -134,7 +134,7 @@ public function onRouteMatch(GetResponseEvent $event) {
     // does not have to redo the request policy check.
     $request = $event->getRequest();
     $request_policy_result = $this->requestPolicy->check($request);
-    $this->requestPolicyResults[$request] = $request_policy_result;
+    $request->attributes->set(self::ATTRIBUTE_REQUEST_POLICY_RESULT, $request_policy_result);
     if ($request_policy_result === RequestPolicyInterface::DENY) {
       return;
     }
@@ -189,14 +189,14 @@ public function onResponse(FilterResponseEvent $event) {
     // @see \Drupal\Core\Routing\AccessAwareRouter::checkAccess()
     // @see \Drupal\Core\EventSubscriber\DefaultExceptionHtmlSubscriber::on403()
     $request = $event->getRequest();
-    if (!isset($this->requestPolicyResults[$request])) {
+    if (!$request->attributes->has(self::ATTRIBUTE_REQUEST_POLICY_RESULT)) {
       return;
     }
 
     // Don't cache the response if the Dynamic Page Cache request & response
     // policies are not met.
     // @see onRouteMatch()
-    if ($this->requestPolicyResults[$request] === RequestPolicyInterface::DENY || $this->responsePolicy->check($response, $request) === ResponsePolicyInterface::DENY) {
+    if ($request->attributes->get(self::ATTRIBUTE_REQUEST_POLICY_RESULT) === RequestPolicyInterface::DENY || $this->responsePolicy->check($response, $request) === ResponsePolicyInterface::DENY) {
       return;
     }
 
diff --git a/core/modules/editor/editor.module b/core/modules/editor/editor.module
index 01d5c5e..8468caa 100644
--- a/core/modules/editor/editor.module
+++ b/core/modules/editor/editor.module
@@ -178,10 +178,10 @@ function editor_form_filter_admin_format_editor_configure($form, FormStateInterf
     }
     elseif (empty($editor) || $editor_value !== $editor->getEditor()) {
       $format = $form_state->getFormObject()->getEntity();
-      $editor = Editor::create([
+      $editor = entity_create('editor', array(
         'format' => $format->isNew() ? NULL : $format->id(),
         'editor' => $editor_value,
-      ]);
+      ));
       $form_state->set('editor', $editor);
     }
   }
diff --git a/core/modules/editor/src/Tests/EditorAdminTest.php b/core/modules/editor/src/Tests/EditorAdminTest.php
index 8172f30..bc25912 100644
--- a/core/modules/editor/src/Tests/EditorAdminTest.php
+++ b/core/modules/editor/src/Tests/EditorAdminTest.php
@@ -38,7 +38,7 @@ protected function setUp() {
     parent::setUp();
 
     // Add text format.
-    $filtered_html_format = FilterFormat::create(array(
+    $filtered_html_format = entity_create('filter_format', array(
       'format' => 'filtered_html',
       'name' => 'Filtered HTML',
       'weight' => 0,
diff --git a/core/modules/editor/src/Tests/EditorFileReferenceFilterTest.php b/core/modules/editor/src/Tests/EditorFileReferenceFilterTest.php
index aac6ae0..87809ef 100644
--- a/core/modules/editor/src/Tests/EditorFileReferenceFilterTest.php
+++ b/core/modules/editor/src/Tests/EditorFileReferenceFilterTest.php
@@ -8,7 +8,6 @@
 namespace Drupal\editor\Tests;
 
 use Drupal\Core\Cache\Cache;
-use Drupal\file\Entity\File;
 use Drupal\simpletest\KernelTestBase;
 use Drupal\filter\FilterPluginCollection;
 
@@ -56,14 +55,14 @@ function testEditorFileReferenceFilter() {
     };
 
     file_put_contents('public://llama.jpg', $this->randomMachineName());
-    $image = File::create(['uri' => 'public://llama.jpg']);
+    $image = entity_create('file', array('uri' => 'public://llama.jpg'));
     $image->save();
     $id = $image->id();
     $uuid = $image->uuid();
     $cache_tag = ['file:' . $id];
 
     file_put_contents('public://alpaca.jpg', $this->randomMachineName());
-    $image_2 = File::create(['uri' => 'public://alpaca.jpg']);
+    $image_2 = entity_create('file', array('uri' => 'public://alpaca.jpg'));
     $image_2->save();
     $id_2 = $image_2->id();
     $uuid_2 = $image_2->uuid();
diff --git a/core/modules/editor/src/Tests/EditorFileUsageTest.php b/core/modules/editor/src/Tests/EditorFileUsageTest.php
index 750edd3..6e291d4 100644
--- a/core/modules/editor/src/Tests/EditorFileUsageTest.php
+++ b/core/modules/editor/src/Tests/EditorFileUsageTest.php
@@ -7,13 +7,9 @@
 
 namespace Drupal\editor\Tests;
 
-use Drupal\editor\Entity\Editor;
-use Drupal\node\Entity\NodeType;
-use Drupal\file\Entity\File;
 use Drupal\system\Tests\Entity\EntityUnitTestBase;
 use Drupal\field\Entity\FieldStorageConfig;
 use Drupal\Core\Field\FieldStorageDefinitionInterface;
-use Drupal\filter\Entity\FilterFormat;
 
 /**
  * Tests tracking of file usage by the Text Editor module.
@@ -37,7 +33,7 @@ protected function setUp() {
     $this->installConfig(['node']);
 
     // Add text formats.
-    $filtered_html_format = FilterFormat::create(array(
+    $filtered_html_format = entity_create('filter_format', array(
       'format' => 'filtered_html',
       'name' => 'Filtered HTML',
       'weight' => 0,
@@ -51,14 +47,14 @@ protected function setUp() {
       ->save();
 
     // Set up text editor.
-    $editor = Editor::create([
+    $editor = entity_create('editor', array(
       'format' => 'filtered_html',
       'editor' => 'unicorn',
-    ]);
+    ));
     $editor->save();
 
     // Create a node type for testing.
-    $type = NodeType::create(['type' => 'page', 'name' => 'page']);
+    $type = entity_create('node_type', array('type' => 'page', 'name' => 'page'));
     $type->save();
     node_add_body_field($type);
   }
@@ -75,7 +71,7 @@ public function testEditorEntityHooks() {
 
     $image_entities = array();
     foreach ($image_paths as $key => $image_path) {
-      $image = File::create();
+      $image = entity_create('file');
       $image->setFileUri($image_path);
       $image->setFilename(drupal_basename($image->getFileUri()));
       $image->save();
diff --git a/core/modules/editor/src/Tests/EditorLoadingTest.php b/core/modules/editor/src/Tests/EditorLoadingTest.php
index 1511711..002ccd3 100644
--- a/core/modules/editor/src/Tests/EditorLoadingTest.php
+++ b/core/modules/editor/src/Tests/EditorLoadingTest.php
@@ -8,11 +8,9 @@
 namespace Drupal\editor\Tests;
 
 use Drupal\Core\Entity\Entity;
-use Drupal\editor\Entity\Editor;
 use Drupal\field\Entity\FieldConfig;
 use Drupal\field\Entity\FieldStorageConfig;
 use Drupal\simpletest\WebTestBase;
-use Drupal\filter\Entity\FilterFormat;
 
 /**
  * Tests loading of text editors.
@@ -57,14 +55,14 @@ protected function setUp() {
     \Drupal::service('plugin.manager.editor')->clearCachedDefinitions();
 
     // Add text formats.
-    $filtered_html_format = FilterFormat::create(array(
+    $filtered_html_format = entity_create('filter_format', array(
       'format' => 'filtered_html',
       'name' => 'Filtered HTML',
       'weight' => 0,
       'filters' => array(),
     ));
     $filtered_html_format->save();
-    $full_html_format = FilterFormat::create(array(
+    $full_html_format = entity_create('filter_format', array(
       'format' => 'full_html',
       'name' => 'Full HTML',
       'weight' => 1,
@@ -115,7 +113,7 @@ protected function setUp() {
    */
   public function testLoading() {
     // Only associate a text editor with the "Full HTML" text format.
-    $editor = Editor::create([
+    $editor = entity_create('editor', array(
       'format' => 'full_html',
       'editor' => 'unicorn',
       'image_upload' => array(
@@ -125,7 +123,7 @@ public function testLoading() {
         'max_size' => '',
         'max_dimensions' => array('width' => '', 'height' => ''),
       )
-    ]);
+    ));
     $editor->save();
 
     // The normal user:
@@ -168,10 +166,10 @@ public function testLoading() {
     $this->drupalLogout($this->privilegedUser);
 
     // Also associate a text editor with the "Plain Text" text format.
-    $editor = Editor::create([
+    $editor = entity_create('editor', array(
       'format' => 'plain_text',
       'editor' => 'unicorn',
-    ]);
+    ));
     $editor->save();
 
     // The untrusted user:
@@ -223,7 +221,7 @@ public function testLoading() {
    */
   public function testSupportedElementTypes() {
     // Associate the unicorn text editor with the "Full HTML" text format.
-    $editor = Editor::create([
+    $editor = entity_create('editor', array(
       'format' => 'full_html',
       'editor' => 'unicorn',
       'image_upload' => array(
@@ -233,7 +231,7 @@ public function testSupportedElementTypes() {
         'max_size' => '',
         'max_dimensions' => array('width' => '', 'height' => ''),
       )
-    ]);
+    ));
     $editor->save();
 
     // Create an "page" node that uses the full_html text format.
@@ -257,10 +255,10 @@ public function testSupportedElementTypes() {
 
     // Associate the trex text editor with the "Full HTML" text format.
     $editor->delete();
-    Editor::create([
+    entity_create('editor', array(
       'format' => 'full_html',
       'editor' => 'trex',
-    ])->save();
+    ))->save();
 
     $this->drupalGet('node/1/edit');
     list( , $editor_settings_present, $editor_js_present, $field, $format_selector) = $this->getThingsToCheck('field-text', 'input');
diff --git a/core/modules/editor/src/Tests/EditorManagerTest.php b/core/modules/editor/src/Tests/EditorManagerTest.php
index 498e33e..9bb7a67 100644
--- a/core/modules/editor/src/Tests/EditorManagerTest.php
+++ b/core/modules/editor/src/Tests/EditorManagerTest.php
@@ -7,9 +7,7 @@
 
 namespace Drupal\editor\Tests;
 
-use Drupal\editor\Entity\Editor;
 use Drupal\simpletest\KernelTestBase;
-use Drupal\filter\Entity\FilterFormat;
 
 /**
  * Tests detection of text editors and correct generation of attachments.
@@ -36,16 +34,17 @@ protected function setUp() {
     parent::setUp();
 
     // Install the Filter module.
+    $this->installSchema('system', 'url_alias');
 
     // Add text formats.
-    $filtered_html_format = FilterFormat::create(array(
+    $filtered_html_format = entity_create('filter_format', array(
       'format' => 'filtered_html',
       'name' => 'Filtered HTML',
       'weight' => 0,
       'filters' => array(),
     ));
     $filtered_html_format->save();
-    $full_html_format = FilterFormat::create(array(
+    $full_html_format = entity_create('filter_format', array(
       'format' => 'full_html',
       'name' => 'Full HTML',
       'weight' => 1,
@@ -80,10 +79,10 @@ public function testManager() {
     // Case 3: a text editor available & associated (but associated only with
     // the 'Full HTML' text format).
     $unicorn_plugin = $this->editorManager->createInstance('unicorn');
-    $editor = Editor::create([
+    $editor = entity_create('editor', array(
       'format' => 'full_html',
       'editor' => 'unicorn',
-    ]);
+    ));
     $editor->save();
     $this->assertIdentical(array(), $this->editorManager->getAttachments(array()), 'No attachments when one text editor is enabled and retrieving attachments for zero text formats.');
     $expected = array(
diff --git a/core/modules/editor/src/Tests/EditorSecurityTest.php b/core/modules/editor/src/Tests/EditorSecurityTest.php
index 16f2bb6..bb39450 100644
--- a/core/modules/editor/src/Tests/EditorSecurityTest.php
+++ b/core/modules/editor/src/Tests/EditorSecurityTest.php
@@ -8,9 +8,7 @@
 namespace Drupal\editor\Tests;
 
 use Drupal\Component\Serialization\Json;
-use Drupal\editor\Entity\Editor;
 use Drupal\simpletest\WebTestBase;
-use Drupal\filter\Entity\FilterFormat;
 
 /**
  * Tests XSS protection for content creators when using text editors.
@@ -88,7 +86,7 @@ protected function setUp() {
     // With text formats 2, 3 and 5, we also associate a text editor that does
     // not guarantee XSS safety. "restricted" means the text format has XSS
     // filters on output, "unrestricted" means the opposite.
-    $format = FilterFormat::create(array(
+    $format = entity_create('filter_format', array(
       'format' => 'restricted_without_editor',
       'name' => 'Restricted HTML, without text editor',
       'weight' => 0,
@@ -103,7 +101,7 @@ protected function setUp() {
       ),
     ));
     $format->save();
-    $format = FilterFormat::create(array(
+    $format = entity_create('filter_format', array(
       'format' => 'restricted_with_editor',
       'name' => 'Restricted HTML, with text editor',
       'weight' => 1,
@@ -118,12 +116,12 @@ protected function setUp() {
       ),
     ));
     $format->save();
-    $editor = Editor::create([
+    $editor = entity_create('editor', array(
       'format' => 'restricted_with_editor',
       'editor' => 'unicorn',
-    ]);
+    ));
     $editor->save();
-    $format = FilterFormat::create(array(
+    $format = entity_create('filter_format', array(
       'format' => 'restricted_plus_dangerous_tag_with_editor',
       'name' => 'Restricted HTML, dangerous tag allowed, with text editor',
       'weight' => 1,
@@ -138,29 +136,29 @@ protected function setUp() {
       ),
     ));
     $format->save();
-    $editor = Editor::create([
+    $editor = entity_create('editor', array(
       'format' => 'restricted_plus_dangerous_tag_with_editor',
       'editor' => 'unicorn',
-    ]);
+    ));
     $editor->save();
-    $format = FilterFormat::create(array(
+    $format = entity_create('filter_format', array(
       'format' => 'unrestricted_without_editor',
       'name' => 'Unrestricted HTML, without text editor',
       'weight' => 0,
       'filters' => array(),
     ));
     $format->save();
-    $format = FilterFormat::create(array(
+    $format = entity_create('filter_format', array(
       'format' => 'unrestricted_with_editor',
       'name' => 'Unrestricted HTML, with text editor',
       'weight' => 1,
       'filters' => array(),
     ));
     $format->save();
-    $editor = Editor::create([
+    $editor = entity_create('editor', array(
       'format' => 'unrestricted_with_editor',
       'editor' => 'unicorn',
-    ]);
+    ));
     $editor->save();
 
 
diff --git a/core/modules/editor/src/Tests/QuickEditIntegrationLoadingTest.php b/core/modules/editor/src/Tests/QuickEditIntegrationLoadingTest.php
index af5623f..8f4ec18 100644
--- a/core/modules/editor/src/Tests/QuickEditIntegrationLoadingTest.php
+++ b/core/modules/editor/src/Tests/QuickEditIntegrationLoadingTest.php
@@ -10,7 +10,6 @@
 use Drupal\Component\Serialization\Json;
 use Drupal\Core\EventSubscriber\MainContentViewSubscriber;
 use Drupal\simpletest\WebTestBase;
-use Drupal\filter\Entity\FilterFormat;
 
 /**
  * Tests Quick Edit module integration endpoints.
@@ -37,7 +36,7 @@ protected function setUp() {
     parent::setUp();
 
     // Create a text format.
-    $filtered_html_format = FilterFormat::create(array(
+    $filtered_html_format = entity_create('filter_format', array(
       'format' => 'filtered_html',
       'name' => 'Filtered HTML',
       'weight' => 0,
diff --git a/core/modules/editor/src/Tests/QuickEditIntegrationTest.php b/core/modules/editor/src/Tests/QuickEditIntegrationTest.php
index 8f792c0..188a38b 100644
--- a/core/modules/editor/src/Tests/QuickEditIntegrationTest.php
+++ b/core/modules/editor/src/Tests/QuickEditIntegrationTest.php
@@ -10,7 +10,6 @@
 use Drupal\Component\Serialization\Json;
 use Drupal\Core\EventSubscriber\AjaxResponseSubscriber;
 use Drupal\Core\Language\LanguageInterface;
-use Drupal\editor\Entity\Editor;
 use Drupal\quickedit\MetadataGenerator;
 use Drupal\quickedit\Tests\QuickEditTestBase;
 use Drupal\quickedit_test\MockEditEntityFieldAccessCheck;
@@ -18,7 +17,6 @@
 use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\HttpKernel\Event\FilterResponseEvent;
 use Symfony\Component\HttpKernel\HttpKernelInterface;
-use Drupal\filter\Entity\FilterFormat;
 
 /**
  * Tests Edit module integration (Editor module's inline editing support).
@@ -71,6 +69,7 @@ protected function setUp() {
     parent::setUp();
 
     // Install the Filter module.
+    $this->installSchema('system', 'url_alias');
 
     // Create a field.
     $this->fieldName = 'field_textarea';
@@ -87,7 +86,7 @@ protected function setUp() {
     );
 
     // Create text format.
-    $full_html_format = FilterFormat::create(array(
+    $full_html_format = entity_create('filter_format', array(
       'format' => 'full_html',
       'name' => 'Full HTML',
       'weight' => 1,
@@ -96,14 +95,14 @@ protected function setUp() {
     $full_html_format->save();
 
     // Associate text editor with text format.
-    $editor = Editor::create([
+    $editor = entity_create('editor', array(
       'format' => $full_html_format->id(),
       'editor' => 'unicorn',
-    ]);
+    ));
     $editor->save();
 
     // Also create a text format without an associated text editor.
-    FilterFormat::create(array(
+    entity_create('filter_format', array(
       'format' => 'no_editor',
       'name' => 'No Text Editor',
       'weight' => 2,
diff --git a/core/modules/editor/tests/modules/src/Plugin/Editor/TRexEditor.php b/core/modules/editor/tests/modules/src/Plugin/Editor/TRexEditor.php
index 540ff8c..5539c16 100644
--- a/core/modules/editor/tests/modules/src/Plugin/Editor/TRexEditor.php
+++ b/core/modules/editor/tests/modules/src/Plugin/Editor/TRexEditor.php
@@ -8,8 +8,8 @@
 namespace Drupal\editor_test\Plugin\Editor;
 
 use Drupal\Core\Form\FormStateInterface;
-use Drupal\editor\Entity\Editor;
 use Drupal\editor\Plugin\EditorBase;
+use Drupal\editor\Entity\Editor as EditorEntity;
 
 /**
  * Defines a Tyrannosaurus-Rex powered text editor for testing purposes.
@@ -37,7 +37,7 @@ public function getDefaultSettings() {
   /**
    * {@inheritdoc}
    */
-  public function settingsForm(array $form, FormStateInterface $form_state, Editor $editor) {
+  public function settingsForm(array $form, FormStateInterface $form_state, EditorEntity $editor) {
     $form['stumpy_arms'] = array(
       '#title' => t('Stumpy arms'),
       '#type' => 'checkbox',
@@ -49,7 +49,7 @@ public function settingsForm(array $form, FormStateInterface $form_state, Editor
   /**
    * {@inheritdoc}
    */
-  public function getJSSettings(Editor $editor) {
+  public function getJSSettings(EditorEntity $editor) {
     $js_settings = array();
     $settings = $editor->getSettings();
     if ($settings['stumpy_arms']) {
@@ -61,7 +61,7 @@ public function getJSSettings(Editor $editor) {
   /**
    * {@inheritdoc}
    */
-  public function getLibraries(Editor $editor) {
+  public function getLibraries(EditorEntity $editor) {
     return array(
       'editor_test/trex',
     );
diff --git a/core/modules/editor/tests/modules/src/Plugin/Editor/UnicornEditor.php b/core/modules/editor/tests/modules/src/Plugin/Editor/UnicornEditor.php
index 33f1c5a..e859732 100644
--- a/core/modules/editor/tests/modules/src/Plugin/Editor/UnicornEditor.php
+++ b/core/modules/editor/tests/modules/src/Plugin/Editor/UnicornEditor.php
@@ -8,8 +8,8 @@
 namespace Drupal\editor_test\Plugin\Editor;
 
 use Drupal\Core\Form\FormStateInterface;
-use Drupal\editor\Entity\Editor;
 use Drupal\editor\Plugin\EditorBase;
+use Drupal\editor\Entity\Editor as EditorEntity;
 
 /**
  * Defines a Unicorn-powered text editor for Drupal (for testing purposes).
@@ -38,7 +38,7 @@ function getDefaultSettings() {
   /**
    * {@inheritdoc}
    */
-  function settingsForm(array $form, FormStateInterface $form_state, Editor $editor) {
+  function settingsForm(array $form, FormStateInterface $form_state, EditorEntity $editor) {
     $form['ponies_too'] = array(
       '#title' => t('Pony mode'),
       '#type' => 'checkbox',
@@ -50,7 +50,7 @@ function settingsForm(array $form, FormStateInterface $form_state, Editor $edito
   /**
    * {@inheritdoc}
    */
-  function getJSSettings(Editor $editor) {
+  function getJSSettings(EditorEntity $editor) {
     $js_settings = array();
     $settings = $editor->getSettings();
     if ($settings['ponies_too']) {
@@ -62,7 +62,7 @@ function getJSSettings(Editor $editor) {
   /**
    * {@inheritdoc}
    */
-  public function getLibraries(Editor $editor) {
+  public function getLibraries(EditorEntity $editor) {
     return array(
       'editor_test/unicorn',
     );
diff --git a/core/modules/field/field.api.php b/core/modules/field/field.api.php
index 8e11650..a71d69d 100644
--- a/core/modules/field/field.api.php
+++ b/core/modules/field/field.api.php
@@ -1,11 +1,6 @@
 <?php
 
 /**
- * @file
- * Field API documentation.
- */
-
-/**
  * @addtogroup hooks
  * @{
  */
diff --git a/core/modules/field/field.services.yml b/core/modules/field/field.services.yml
index 321cf91..6c2187a 100644
--- a/core/modules/field/field.services.yml
+++ b/core/modules/field/field.services.yml
@@ -3,5 +3,5 @@ services:
     class: Drupal\field\FieldUninstallValidator
     tags:
       - { name: module_install.uninstall_validator }
-    arguments: ['@entity_type.manager', '@string_translation', '@plugin.manager.field.field_type']
+    arguments: ['@entity.manager', '@string_translation']
     lazy: true
diff --git a/core/modules/field/src/Entity/FieldConfig.php b/core/modules/field/src/Entity/FieldConfig.php
index 1597994..8e0e0b4 100644
--- a/core/modules/field/src/Entity/FieldConfig.php
+++ b/core/modules/field/src/Entity/FieldConfig.php
@@ -72,7 +72,7 @@ class FieldConfig extends FieldConfigBase implements FieldConfigInterface {
    * Constructs a FieldConfig object.
    *
    * In most cases, Field entities are created via
-   * FieldConfig::create($values), where $values is the same
+   * entity_create('field_config', $values), where $values is the same
    * parameter as in this constructor.
    *
    * @param array $values
diff --git a/core/modules/field/src/Entity/FieldStorageConfig.php b/core/modules/field/src/Entity/FieldStorageConfig.php
index eaf14c6..d4c2922 100644
--- a/core/modules/field/src/Entity/FieldStorageConfig.php
+++ b/core/modules/field/src/Entity/FieldStorageConfig.php
@@ -15,7 +15,6 @@
 use Drupal\Core\Field\FieldStorageDefinitionInterface;
 use Drupal\Core\TypedData\OptionsProviderInterface;
 use Drupal\field\FieldStorageConfigInterface;
-use Drupal\field\Entity\FieldStorageConfig;
 
 /**
  * Defines the Field storage configuration entity.
@@ -239,7 +238,7 @@ class FieldStorageConfig extends ConfigEntityBase implements FieldStorageConfigI
    *   - type: required.
    *
    * In most cases, Field entities are created via
-   * FieldStorageConfig::create($values)), where $values is the same
+   * entity_create('field_storage_config', $values)), where $values is the same
    * parameter as in this constructor.
    *
    * @see entity_create()
diff --git a/core/modules/field/src/FieldUninstallValidator.php b/core/modules/field/src/FieldUninstallValidator.php
index 34ddcee..3302b04 100644
--- a/core/modules/field/src/FieldUninstallValidator.php
+++ b/core/modules/field/src/FieldUninstallValidator.php
@@ -7,9 +7,8 @@
 
 namespace Drupal\field;
 
-use Drupal\Core\Entity\EntityTypeManagerInterface;
+use Drupal\Core\Entity\EntityManagerInterface;
 use Drupal\Core\Extension\ModuleUninstallValidatorInterface;
-use Drupal\Core\Field\FieldTypePluginManagerInterface;
 use Drupal\Core\StringTranslation\StringTranslationTrait;
 use Drupal\Core\StringTranslation\TranslationInterface;
 
@@ -28,26 +27,16 @@ class FieldUninstallValidator implements ModuleUninstallValidatorInterface {
   protected $fieldStorageConfigStorage;
 
   /**
-   * The field type plugin manager.
-   *
-   * @var \Drupal\Core\Field\FieldTypePluginManagerInterface
-   */
-  protected $fieldTypeManager;
-
-  /**
    * Constructs a new FieldUninstallValidator.
    *
-   * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager
+   * @param \Drupal\Core\Entity\EntityManagerInterface $entity_manager
    *   The entity manager.
    * @param \Drupal\Core\StringTranslation\TranslationInterface $string_translation
    *   The string translation service.
-   * @param \Drupal\Core\Field\FieldTypePluginManagerInterface $field_type_manager
-   *   The field type plugin manager.
    */
-  public function __construct(EntityTypeManagerInterface $entity_type_manager, TranslationInterface $string_translation, FieldTypePluginManagerInterface $field_type_manager) {
-    $this->fieldStorageConfigStorage = $entity_type_manager->getStorage('field_storage_config');
+  public function __construct(EntityManagerInterface $entity_manager, TranslationInterface $string_translation) {
+    $this->fieldStorageConfigStorage = $entity_manager->getStorage('field_storage_config');
     $this->stringTranslation = $string_translation;
-    $this->fieldTypeManager = $field_type_manager;
   }
 
   /**
@@ -58,17 +47,15 @@ public function validate($module) {
     if ($field_storages = $this->getFieldStoragesByModule($module)) {
       // Provide an explanation message (only mention pending deletions if there
       // remain no actual, non-deleted fields.)
-      $fields_in_use = [];
+      $non_deleted = FALSE;
       foreach ($field_storages as $field_storage) {
         if (!$field_storage->isDeleted()) {
-          $fields_in_use[$field_storage->getType()][] = $field_storage->getLabel();
+          $non_deleted = TRUE;
+          break;
         }
       }
-      if (!empty($fields_in_use)) {
-        foreach ($fields_in_use as $field_type => $field_storages) {
-          $field_type_label = $this->getFieldTypeLabel($field_type);
-          $reasons[] = $this->formatPlural(count($fields_in_use[$field_type]), 'The %field_type_label field type is used in the following field: @fields', 'The %field_type_label field type is used in the following fields: @fields', ['%field_type_label' => $field_type_label, '@fields' => implode(', ', $field_storages)]);
-        }
+      if ($non_deleted) {
+        $reasons[] = $this->t('Fields type(s) in use');
       }
       else {
         $reasons[] = $this->t('Fields pending deletion');
@@ -90,18 +77,4 @@ protected function getFieldStoragesByModule($module) {
     return $this->fieldStorageConfigStorage->loadByProperties(['module' => $module, 'include_deleted' => TRUE]);
   }
 
-
-  /**
-   * Returns the label for a specified field type.
-   *
-   * @param string $field_type
-   *   The field type.
-   *
-   * @return string
-   *   The field type label.
-   */
-  protected function getFieldTypeLabel($field_type) {
-    return $this->fieldTypeManager->getDefinitions()[$field_type]['label'];
-  }
-
 }
diff --git a/core/modules/field/src/Tests/Boolean/BooleanItemTest.php b/core/modules/field/src/Tests/Boolean/BooleanItemTest.php
index 8b8c192..e9d7605 100644
--- a/core/modules/field/src/Tests/Boolean/BooleanItemTest.php
+++ b/core/modules/field/src/Tests/Boolean/BooleanItemTest.php
@@ -9,9 +9,7 @@
 
 use Drupal\Core\Field\FieldItemListInterface;
 use Drupal\Core\Field\FieldItemInterface;
-use Drupal\field\Entity\FieldConfig;
 use Drupal\field\Tests\FieldUnitTestBase;
-use Drupal\field\Entity\FieldStorageConfig;
 
 /**
  * Tests the new entity API for the boolean field type.
@@ -27,16 +25,16 @@ protected function setUp() {
     parent::setUp();
 
     // Create a boolean field and storage for validation.
-    FieldStorageConfig::create(array(
+    entity_create('field_storage_config', array(
       'field_name' => 'field_boolean',
       'entity_type' => 'entity_test',
       'type' => 'boolean',
     ))->save();
-    FieldConfig::create([
+    entity_create('field_config', array(
       'entity_type' => 'entity_test',
       'field_name' => 'field_boolean',
       'bundle' => 'entity_test',
-    ])->save();
+    ))->save();
 
     // Create a form display for the default form mode.
     entity_get_form_display('entity_test', 'entity_test', 'default')
diff --git a/core/modules/field/src/Tests/BulkDeleteTest.php b/core/modules/field/src/Tests/BulkDeleteTest.php
index 2c7835f..d7e1aca 100644
--- a/core/modules/field/src/Tests/BulkDeleteTest.php
+++ b/core/modules/field/src/Tests/BulkDeleteTest.php
@@ -9,7 +9,6 @@
 
 use Drupal\Core\Entity\EntityInterface;
 use Drupal\field\Entity\FieldConfig;
-use Drupal\field\Entity\FieldStorageConfig;
 
 /**
  * Bulk delete storages and fields, and clean up afterwards.
@@ -106,7 +105,7 @@ protected function setUp() {
     }
 
     // Create two field storages.
-    $field_storage = FieldStorageConfig::create(array(
+    $field_storage = entity_create('field_storage_config', array(
       'field_name' => 'bf_1',
       'entity_type' => $this->entityTypeId,
       'type' => 'test_field',
@@ -114,7 +113,7 @@ protected function setUp() {
     ));
     $field_storage->save();
     $this->fieldStorages[] = $field_storage;
-    $field_storage = FieldStorageConfig::create(array(
+    $field_storage = entity_create('field_storage_config', array(
       'field_name' => 'bf_2',
       'entity_type' => $this->entityTypeId,
       'type' => 'test_field',
@@ -127,10 +126,10 @@ protected function setUp() {
     // fields.
     foreach ($this->bundles as $bundle) {
       foreach ($this->fieldStorages as $field_storage) {
-        FieldConfig::create([
+        entity_create('field_config', array(
           'field_storage' => $field_storage,
           'bundle' => $bundle,
-        ])->save();
+        ))->save();
       }
       for ($i = 0; $i < 10; $i++) {
         $entity = entity_create($this->entityTypeId, array('type' => $bundle));
diff --git a/core/modules/field/src/Tests/DisplayApiTest.php b/core/modules/field/src/Tests/DisplayApiTest.php
index 1526a4f..eff812b 100644
--- a/core/modules/field/src/Tests/DisplayApiTest.php
+++ b/core/modules/field/src/Tests/DisplayApiTest.php
@@ -8,8 +8,6 @@
 namespace Drupal\field\Tests;
 
 use Drupal\Core\Entity\Entity\EntityViewMode;
-use Drupal\field\Entity\FieldConfig;
-use Drupal\field\Entity\FieldStorageConfig;
 
 /**
  * Tests the field display API.
@@ -96,8 +94,8 @@ protected function setUp() {
       ),
     );
 
-    FieldStorageConfig::create($field_storage)->save();
-    FieldConfig::create($field)->save();
+    entity_create('field_storage_config', $field_storage)->save();
+    entity_create('field_config', $field)->save();
     // Create a display for the default view mode.
     entity_get_display($field['entity_type'], $field['bundle'], 'default')
       ->setComponent($this->fieldName, $this->displayOptions['default'])
@@ -122,7 +120,7 @@ function testFieldItemListView() {
     $items = $this->entity->get($this->fieldName);
 
     \Drupal::service('theme_handler')->install(['classy']);
-    \Drupal::service('theme_handler')->setDefault('classy');
+    $this->config('system.theme')->set('default', 'classy')->save();
 
     // No display settings: check that default display settings are used.
     $build = $items->view();
diff --git a/core/modules/field/src/Tests/Email/EmailFieldTest.php b/core/modules/field/src/Tests/Email/EmailFieldTest.php
index d730585..b916ed0 100644
--- a/core/modules/field/src/Tests/Email/EmailFieldTest.php
+++ b/core/modules/field/src/Tests/Email/EmailFieldTest.php
@@ -8,9 +8,7 @@
 namespace Drupal\field\Tests\Email;
 
 use Drupal\Component\Utility\Unicode;
-use Drupal\field\Entity\FieldConfig;
 use Drupal\simpletest\WebTestBase;
-use Drupal\field\Entity\FieldStorageConfig;
 
 /**
  * Tests email field functionality.
@@ -56,16 +54,16 @@ protected function setUp() {
   function testEmailField() {
     // Create a field with settings to validate.
     $field_name = Unicode::strtolower($this->randomMachineName());
-    $this->fieldStorage = FieldStorageConfig::create(array(
+    $this->fieldStorage = entity_create('field_storage_config', array(
       'field_name' => $field_name,
       'entity_type' => 'entity_test',
       'type' => 'email',
     ));
     $this->fieldStorage->save();
-    $this->field = FieldConfig::create([
+    $this->field = entity_create('field_config', array(
       'field_storage' => $this->fieldStorage,
       'bundle' => 'entity_test',
-    ]);
+    ));
     $this->field->save();
 
     // Create a form display for the default form mode.
diff --git a/core/modules/field/src/Tests/Email/EmailItemTest.php b/core/modules/field/src/Tests/Email/EmailItemTest.php
index 3267ce4..b6a148f 100644
--- a/core/modules/field/src/Tests/Email/EmailItemTest.php
+++ b/core/modules/field/src/Tests/Email/EmailItemTest.php
@@ -9,9 +9,7 @@
 
 use Drupal\Core\Field\FieldItemListInterface;
 use Drupal\Core\Field\FieldItemInterface;
-use Drupal\field\Entity\FieldConfig;
 use Drupal\field\Tests\FieldUnitTestBase;
-use Drupal\field\Entity\FieldStorageConfig;
 
 /**
  * Tests the new entity API for the email field type.
@@ -24,16 +22,16 @@ protected function setUp() {
     parent::setUp();
 
     // Create an email field storage and field for validation.
-    FieldStorageConfig::create(array(
+    entity_create('field_storage_config', array(
       'field_name' => 'field_email',
       'entity_type' => 'entity_test',
       'type' => 'email',
     ))->save();
-    FieldConfig::create([
+    entity_create('field_config', array(
       'entity_type' => 'entity_test',
       'field_name' => 'field_email',
       'bundle' => 'entity_test',
-    ])->save();
+    ))->save();
 
     // Create a form display for the default form mode.
     entity_get_form_display('entity_test', 'entity_test', 'default')
diff --git a/core/modules/field/src/Tests/EntityReference/EntityReferenceAutoCreateTest.php b/core/modules/field/src/Tests/EntityReference/EntityReferenceAutoCreateTest.php
index a381b1f..77bede9 100644
--- a/core/modules/field/src/Tests/EntityReference/EntityReferenceAutoCreateTest.php
+++ b/core/modules/field/src/Tests/EntityReference/EntityReferenceAutoCreateTest.php
@@ -8,10 +8,8 @@
 namespace Drupal\field\Tests\EntityReference;
 
 use Drupal\Core\Field\FieldStorageDefinitionInterface;
-use Drupal\field\Entity\FieldConfig;
 use Drupal\simpletest\WebTestBase;
 use Drupal\node\Entity\Node;
-use Drupal\field\Entity\FieldStorageConfig;
 
 /**
  * Tests creating new entity (e.g. taxonomy-term) from an autocomplete widget.
@@ -46,7 +44,7 @@ protected function setUp() {
     $referenced = $this->drupalCreateContentType();
     $this->referencedType = $referenced->id();
 
-    FieldStorageConfig::create(array(
+    entity_create('field_storage_config', array(
       'field_name' => 'test_field',
       'entity_type' => 'node',
       'translatable' => FALSE,
@@ -58,7 +56,7 @@ protected function setUp() {
       'cardinality' => FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED,
     ))->save();
 
-    FieldConfig::create([
+    entity_create('field_config', array(
       'label' => 'Entity reference field',
       'field_name' => 'test_field',
       'entity_type' => 'node',
@@ -74,7 +72,7 @@ protected function setUp() {
           'auto_create' => TRUE,
         ),
       ),
-    ])->save();
+    ))->save();
 
     entity_get_display('node', $referencing->id(), 'default')
       ->setComponent('test_field')
diff --git a/core/modules/field/src/Tests/EntityReference/EntityReferenceFieldDefaultValueTest.php b/core/modules/field/src/Tests/EntityReference/EntityReferenceFieldDefaultValueTest.php
index 19d99f2..ae6fec7 100644
--- a/core/modules/field/src/Tests/EntityReference/EntityReferenceFieldDefaultValueTest.php
+++ b/core/modules/field/src/Tests/EntityReference/EntityReferenceFieldDefaultValueTest.php
@@ -9,7 +9,6 @@
 
 use Drupal\Component\Utility\Unicode;
 use Drupal\config\Tests\SchemaCheckTestTrait;
-use Drupal\field\Entity\FieldConfig;
 use Drupal\field\Entity\FieldStorageConfig;
 use Drupal\simpletest\WebTestBase;
 
@@ -56,14 +55,14 @@ function testEntityReferenceDefaultValue() {
     $referenced_node = $this->drupalCreateNode(array('type' => 'referenced_content'));
 
     $field_name = Unicode::strtolower($this->randomMachineName());
-    $field_storage = FieldStorageConfig::create(array(
+    $field_storage = entity_create('field_storage_config', array(
       'field_name' => $field_name,
       'entity_type' => 'node',
       'type' => 'entity_reference',
       'settings' => array('target_type' => 'node'),
     ));
     $field_storage->save();
-    $field = FieldConfig::create([
+    $field = entity_create('field_config', array(
       'field_storage' => $field_storage,
       'bundle' => 'reference_content',
       'settings' => array(
@@ -73,7 +72,7 @@ function testEntityReferenceDefaultValue() {
           'sort' => array('field' => '_none'),
         ),
       ),
-    ]);
+    ));
     $field->save();
 
     // Set created node as default_value.
@@ -119,7 +118,7 @@ function testEntityReferenceDefaultConfigValue() {
     $referenced_node_type2 = $this->drupalCreateContentType(array('type' => 'referenced_config_to_preserve'));
 
     $field_name = Unicode::strtolower($this->randomMachineName());
-    $field_storage = FieldStorageConfig::create(array(
+    $field_storage = entity_create('field_storage_config', array(
       'field_name' => $field_name,
       'entity_type' => 'node',
       'type' => 'entity_reference',
@@ -127,7 +126,7 @@ function testEntityReferenceDefaultConfigValue() {
       'cardinality' => FieldStorageConfig::CARDINALITY_UNLIMITED,
     ));
     $field_storage->save();
-    $field = FieldConfig::create([
+    $field = entity_create('field_config', array(
       'field_storage' => $field_storage,
       'bundle' => 'reference_content',
       'settings' => array(
@@ -136,7 +135,7 @@ function testEntityReferenceDefaultConfigValue() {
           'sort' => array('field' => '_none'),
         ),
       ),
-    ]);
+    ));
     $field->save();
 
     // Set created node as default_value.
diff --git a/core/modules/field/src/Tests/EntityReference/EntityReferenceFieldTranslatedReferenceViewTest.php b/core/modules/field/src/Tests/EntityReference/EntityReferenceFieldTranslatedReferenceViewTest.php
index 6d2ffc2..7b3568c 100644
--- a/core/modules/field/src/Tests/EntityReference/EntityReferenceFieldTranslatedReferenceViewTest.php
+++ b/core/modules/field/src/Tests/EntityReference/EntityReferenceFieldTranslatedReferenceViewTest.php
@@ -7,11 +7,9 @@
 
 namespace Drupal\field\Tests\EntityReference;
 
-use Drupal\field\Entity\FieldConfig;
 use Drupal\language\Entity\ConfigurableLanguage;
 use Drupal\Core\Field\FieldStorageDefinitionInterface;
 use Drupal\simpletest\WebTestBase;
-use Drupal\field\Entity\FieldStorageConfig;
 
 /**
  * Tests the translation of entity reference field display on nodes.
@@ -208,7 +206,7 @@ protected function enableTranslation() {
    * Adds term reference field for the article content type.
    */
   protected function setUpEntityReferenceField() {
-    FieldStorageConfig::create(array(
+    entity_create('field_storage_config', array(
       'field_name' => $this->referenceFieldName,
       'entity_type' => $this->testEntityTypeName,
       'type' => 'entity_reference',
@@ -223,11 +221,11 @@ protected function setUpEntityReferenceField() {
       ),
     ))->save();
 
-    FieldConfig::create([
+    entity_create('field_config', array(
       'field_name' => $this->referenceFieldName,
       'bundle' => $this->referrerType->id(),
       'entity_type' => $this->testEntityTypeName,
-    ])
+    ))
     ->save();
     entity_get_form_display($this->testEntityTypeName, $this->referrerType->id(), 'default')
       ->setComponent($this->referenceFieldName, array(
diff --git a/core/modules/field/src/Tests/EntityReference/EntityReferenceFileUploadTest.php b/core/modules/field/src/Tests/EntityReference/EntityReferenceFileUploadTest.php
index a487f6a..eb9f640 100644
--- a/core/modules/field/src/Tests/EntityReference/EntityReferenceFileUploadTest.php
+++ b/core/modules/field/src/Tests/EntityReference/EntityReferenceFileUploadTest.php
@@ -8,9 +8,7 @@
 namespace Drupal\field\Tests\EntityReference;
 
 use Drupal\Core\Field\FieldStorageDefinitionInterface;
-use Drupal\field\Entity\FieldConfig;
 use Drupal\simpletest\WebTestBase;
-use Drupal\field\Entity\FieldStorageConfig;
 
 /**
  * Tests an autocomplete widget with file upload.
@@ -53,7 +51,7 @@ protected function setUp() {
     $this->referencedType = $referenced->id();
     $this->nodeId = $this->drupalCreateNode(array('type' => $referenced->id()))->id();
 
-    FieldStorageConfig::create(array(
+    entity_create('field_storage_config', array(
       'field_name' => 'test_field',
       'entity_type' => 'node',
       'translatable' => FALSE,
@@ -65,7 +63,7 @@ protected function setUp() {
       'cardinality' => FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED,
     ))->save();
 
-    FieldConfig::create([
+    entity_create('field_config', array(
       'label' => 'Entity reference field',
       'field_name' => 'test_field',
       'entity_type' => 'node',
@@ -80,23 +78,23 @@ protected function setUp() {
           ),
         ),
       ),
-    ])->save();
+    ))->save();
 
 
     // Create a file field.
     $file_field_name = 'file_field';
-    $field_storage = FieldStorageConfig::create(array(
+    $field_storage = entity_create('field_storage_config', array(
       'field_name' => $file_field_name,
       'entity_type' => 'node',
       'type' => 'file'
     ));
     $field_storage->save();
-    FieldConfig::create([
+    entity_create('field_config', array(
       'entity_type' => 'node',
       'field_storage' => $field_storage,
       'bundle' => $referencing->id(),
       'label' => $this->randomMachineName() . '_label',
-    ])->save();
+    ))->save();
 
     entity_get_display('node', $referencing->id(), 'default')
       ->setComponent('test_field')
diff --git a/core/modules/field/src/Tests/EntityReference/EntityReferenceFormatterTest.php b/core/modules/field/src/Tests/EntityReference/EntityReferenceFormatterTest.php
index 5379750..cc41f7d 100644
--- a/core/modules/field/src/Tests/EntityReference/EntityReferenceFormatterTest.php
+++ b/core/modules/field/src/Tests/EntityReference/EntityReferenceFormatterTest.php
@@ -10,13 +10,11 @@
 use Drupal\Core\Cache\Cache;
 use Drupal\Core\Cache\CacheableMetadata;
 use Drupal\Core\Field\FieldStorageDefinitionInterface;
-use Drupal\field\Entity\FieldConfig;
 use Drupal\field\Entity\FieldStorageConfig;
 use Drupal\filter\Entity\FilterFormat;
 use Drupal\system\Tests\Entity\EntityUnitTestBase;
 use Drupal\user\Entity\Role;
 use Drupal\user\RoleInterface;
-use Drupal\entity_test\Entity\EntityTestLabel;
 
 /**
  * Tests the formatters functionality.
@@ -68,7 +66,7 @@ protected function setUp() {
 
     // Use Classy theme for testing markup output.
     \Drupal::service('theme_handler')->install(['classy']);
-    \Drupal::service('theme_handler')->setDefault('classy');
+    $this->config('system.theme')->set('default', 'classy')->save();
 
     // Grant the 'view test entity' permission.
     $this->installConfig(array('user'));
@@ -84,18 +82,18 @@ protected function setUp() {
 
     // Set up a field, so that the entity that'll be referenced bubbles up a
     // cache tag when rendering it entirely.
-    FieldStorageConfig::create(array(
+    entity_create('field_storage_config', array(
       'field_name' => 'body',
       'entity_type' => $this->entityType,
       'type' => 'text',
       'settings' => array(),
     ))->save();
-    FieldConfig::create([
+    entity_create('field_config', array(
       'entity_type' => $this->entityType,
       'bundle' => $this->bundle,
       'field_name' => 'body',
       'label' => 'Body',
-    ])->save();
+    ))->save();
     entity_get_display($this->entityType, $this->bundle, 'default')
       ->setComponent('body', array(
         'type' => 'text_default',
@@ -103,7 +101,7 @@ protected function setUp() {
       ))
       ->save();
 
-    FilterFormat::create(array(
+    entity_create('filter_format', array(
       'format' => 'full_html',
       'name' => 'Full HTML',
     ))->save();
@@ -261,7 +259,7 @@ public function testLabelFormatter() {
     $field_storage_config->setSetting('target_type', 'entity_test_label');
     $field_storage_config->save();
 
-    $referenced_entity_with_no_link_template = EntityTestLabel::create(array(
+    $referenced_entity_with_no_link_template = entity_create('entity_test_label', array(
       'name' => $this->randomMachineName(),
     ));
     $referenced_entity_with_no_link_template->save();
diff --git a/core/modules/field/src/Tests/EntityReference/Views/SelectionTest.php b/core/modules/field/src/Tests/EntityReference/Views/SelectionTest.php
index 6bcba87..c5db78b 100644
--- a/core/modules/field/src/Tests/EntityReference/Views/SelectionTest.php
+++ b/core/modules/field/src/Tests/EntityReference/Views/SelectionTest.php
@@ -7,10 +7,8 @@
 
 namespace Drupal\field\Tests\EntityReference\Views;
 
-use Drupal\field\Entity\FieldConfig;
 use Drupal\simpletest\WebTestBase;
 use Drupal\views\Views;
-use Drupal\field\Entity\FieldStorageConfig;
 
 /**
  * Tests entity reference selection handler.
@@ -52,7 +50,7 @@ protected function setUp() {
     }
 
     // Create a field.
-    $field_storage = FieldStorageConfig::create(array(
+    $field_storage = entity_create('field_storage_config', array(
       'field_name' => 'test_field',
       'entity_type' => 'entity_test',
       'translatable' => FALSE,
@@ -63,7 +61,7 @@ protected function setUp() {
       'cardinality' => '1',
     ));
     $field_storage->save();
-    $field = FieldConfig::create([
+    $field = entity_create('field_config', array(
       'field_storage' => $field_storage,
       'bundle' => 'test_bundle',
       'settings' => array(
@@ -76,7 +74,7 @@ protected function setUp() {
           ),
         ),
       ),
-    ]);
+    ));
     $field->save();
     $this->field = $field;
   }
diff --git a/core/modules/field/src/Tests/FieldAccessTest.php b/core/modules/field/src/Tests/FieldAccessTest.php
index b837e85..3617364 100644
--- a/core/modules/field/src/Tests/FieldAccessTest.php
+++ b/core/modules/field/src/Tests/FieldAccessTest.php
@@ -7,9 +7,6 @@
 
 namespace Drupal\field\Tests;
 
-use Drupal\field\Entity\FieldConfig;
-use Drupal\field\Entity\FieldStorageConfig;
-
 /**
  * Tests Field access.
  *
@@ -53,13 +50,13 @@ protected function setUp() {
       'entity_type' => 'node',
       'type' => 'text',
     );
-    FieldStorageConfig::create($field_storage)->save();
+    entity_create('field_storage_config', $field_storage)->save();
     $field = array(
       'field_name' => $field_storage['field_name'],
       'entity_type' => 'node',
       'bundle' => $content_type,
     );
-    FieldConfig::create($field)->save();
+    entity_create('field_config', $field)->save();
 
     // Assign display properties for the 'default' and 'teaser' view modes.
     foreach (array('default', 'teaser') as $view_mode) {
diff --git a/core/modules/field/src/Tests/FieldAttachStorageTest.php b/core/modules/field/src/Tests/FieldAttachStorageTest.php
index d700334..a7c7217 100644
--- a/core/modules/field/src/Tests/FieldAttachStorageTest.php
+++ b/core/modules/field/src/Tests/FieldAttachStorageTest.php
@@ -8,7 +8,6 @@
 namespace Drupal\field\Tests;
 use Drupal\Component\Utility\Unicode;
 use Drupal\field\Entity\FieldConfig;
-use Drupal\field\Entity\FieldStorageConfig;
 
 /**
  * Tests storage-related Field Attach API functions.
@@ -96,7 +95,7 @@ function testFieldAttachLoadMultiple() {
     );
     for ($i = 1; $i <= 3; $i++) {
       $field_names[$i] = 'field_' . $i;
-      $field_storage = FieldStorageConfig::create(array(
+      $field_storage = entity_create('field_storage_config', array(
         'field_name' => $field_names[$i],
         'entity_type' => $entity_type,
         'type' => 'test_field',
@@ -104,11 +103,11 @@ function testFieldAttachLoadMultiple() {
       $field_storage->save();
       $field_ids[$i] = $field_storage->uuid();
       foreach ($field_bundles_map[$i] as $bundle) {
-        FieldConfig::create([
+        entity_create('field_config', array(
           'field_name' => $field_names[$i],
           'entity_type' => $entity_type,
           'bundle' => $bundles[$bundle],
-        ])->save();
+        ))->save();
       }
     }
 
@@ -289,7 +288,7 @@ function testEntityCreateBundle() {
 
     // Add a field to that bundle.
     $this->fieldTestData->field_definition['bundle'] = $new_bundle;
-    FieldConfig::create($this->fieldTestData->field_definition)->save();
+    entity_create('field_config', $this->fieldTestData->field_definition)->save();
 
     // Save an entity with data in the field.
     $entity = entity_create($entity_type, array('type' => $this->fieldTestData->field->getTargetBundle()));
@@ -314,7 +313,7 @@ function testEntityDeleteBundle() {
 
     // Add a field to that bundle.
     $this->fieldTestData->field_definition['bundle'] = $new_bundle;
-    FieldConfig::create($this->fieldTestData->field_definition)->save();
+    entity_create('field_config', $this->fieldTestData->field_definition)->save();
 
     // Create a second field for the test bundle
     $field_name = Unicode::strtolower($this->randomMachineName() . '_field_name');
@@ -324,7 +323,7 @@ function testEntityDeleteBundle() {
       'type' => 'test_field',
       'cardinality' => 1,
     );
-    FieldStorageConfig::create($field_storage)->save();
+    entity_create('field_storage_config', $field_storage)->save();
     $field = array(
       'field_name' => $field_name,
       'entity_type' => $entity_type,
@@ -333,7 +332,7 @@ function testEntityDeleteBundle() {
       'description' => $this->randomMachineName() . '_description',
       'weight' => mt_rand(0, 127),
     );
-    FieldConfig::create($field)->save();
+    entity_create('field_config', $field)->save();
 
     // Save an entity with data for both fields
     $entity = entity_create($entity_type, array('type' => $this->fieldTestData->field->getTargetBundle()));
diff --git a/core/modules/field/src/Tests/FieldCrudTest.php b/core/modules/field/src/Tests/FieldCrudTest.php
index 08daa6c..d6e9994 100644
--- a/core/modules/field/src/Tests/FieldCrudTest.php
+++ b/core/modules/field/src/Tests/FieldCrudTest.php
@@ -50,7 +50,7 @@ function setUp() {
       'entity_type' => 'entity_test',
       'type' => 'test_field',
     );
-    $this->fieldStorage = FieldStorageConfig::create($this->fieldStorageDefinition);
+    $this->fieldStorage = entity_create('field_storage_config', $this->fieldStorageDefinition);
     $this->fieldStorage->save();
     $this->fieldDefinition = array(
       'field_name' => $this->fieldStorage->getName(),
@@ -73,7 +73,7 @@ function testCreateField() {
     // constraint for this field.
     \Drupal::state()->set('field_test_add_constraint', $this->fieldStorage->getName());
     /** @var \Drupal\Core\Field\FieldConfigInterface $field */
-    $field = FieldConfig::create($this->fieldDefinition);
+    $field = entity_create('field_config', $this->fieldDefinition);
     $field->save();
 
     $field = FieldConfig::load($field->id());
@@ -118,7 +118,7 @@ function testCreateField() {
 
     // Guarantee that the field/bundle combination is unique.
     try {
-      FieldConfig::create($this->fieldDefinition)->save();
+      entity_create('field_config', $this->fieldDefinition)->save();
       $this->fail(t('Cannot create two fields with the same field / bundle combination.'));
     }
     catch (EntityStorageException $e) {
@@ -128,7 +128,7 @@ function testCreateField() {
     // Check that the specified field exists.
     try {
       $this->fieldDefinition['field_name'] = $this->randomMachineName();
-      FieldConfig::create($this->fieldDefinition)->save();
+      entity_create('field_config', $this->fieldDefinition)->save();
       $this->fail(t('Cannot create a field with a non-existing storage.'));
     }
     catch (FieldException $e) {
@@ -180,7 +180,7 @@ public function testCreateFieldCustomStorage() {
    * Test reading back a field definition.
    */
   function testReadField() {
-    FieldConfig::create($this->fieldDefinition)->save();
+    entity_create('field_config', $this->fieldDefinition)->save();
 
     // Read the field back.
     $field = FieldConfig::load('entity_test.' . $this->fieldDefinition['bundle'] . '.' . $this->fieldDefinition['field_name']);
@@ -193,7 +193,7 @@ function testReadField() {
    * Test the update of a field.
    */
   function testUpdateField() {
-    FieldConfig::create($this->fieldDefinition)->save();
+    entity_create('field_config', $this->fieldDefinition)->save();
 
     // Check that basic changes are saved.
     $field = FieldConfig::load('entity_test.' . $this->fieldDefinition['bundle'] . '.' . $this->fieldDefinition['field_name']);
@@ -221,11 +221,11 @@ function testDeleteField() {
 
     // Create two fields for the same field storage so we can test that only one
     // is deleted.
-    FieldConfig::create($this->fieldDefinition)->save();
+    entity_create('field_config', $this->fieldDefinition)->save();
     $another_field_definition = $this->fieldDefinition;
     $another_field_definition['bundle'] .= '_another_bundle';
     entity_test_create_bundle($another_field_definition['bundle']);
-    FieldConfig::create($another_field_definition)->save();
+    entity_create('field_config', $another_field_definition)->save();
 
     // Test that the first field is not deleted, and then delete it.
     $field = current(entity_load_multiple_by_properties('field_config', array('entity_type' => 'entity_test', 'field_name' => $this->fieldDefinition['field_name'], 'bundle' => $this->fieldDefinition['bundle'], 'include_deleted' => TRUE)));
@@ -255,18 +255,18 @@ function testDeleteFieldCrossDeletion() {
 
     // Check that deletion of a field storage deletes its fields.
     $field_storage = $this->fieldStorage;
-    FieldConfig::create($this->fieldDefinition)->save();
-    FieldConfig::create($field_definition_2)->save();
+    entity_create('field_config', $this->fieldDefinition)->save();
+    entity_create('field_config', $field_definition_2)->save();
     $field_storage->delete();
     $this->assertFalse(FieldConfig::loadByName('entity_test', $this->fieldDefinition['bundle'], $field_storage->getName()));
     $this->assertFalse(FieldConfig::loadByName('entity_test', $field_definition_2['bundle'], $field_storage->getName()));
 
     // Check that deletion of the last field deletes the storage.
-    $field_storage = FieldStorageConfig::create($this->fieldStorageDefinition);
+    $field_storage = entity_create('field_storage_config', $this->fieldStorageDefinition);
     $field_storage->save();
-    $field = FieldConfig::create($this->fieldDefinition);
+    $field = entity_create('field_config', $this->fieldDefinition);
     $field->save();
-    $field_2 = FieldConfig::create($field_definition_2);
+    $field_2 = entity_create('field_config', $field_definition_2);
     $field_2->save();
     $field->delete();
     $this->assertTrue(FieldStorageConfig::loadByName('entity_test', $field_storage->getName()));
@@ -275,11 +275,11 @@ function testDeleteFieldCrossDeletion() {
 
     // Check that deletion of all fields using a storage simultaneously deletes
     // the storage.
-    $field_storage = FieldStorageConfig::create($this->fieldStorageDefinition);
+    $field_storage = entity_create('field_storage_config', $this->fieldStorageDefinition);
     $field_storage->save();
-    $field = FieldConfig::create($this->fieldDefinition);
+    $field = entity_create('field_config', $this->fieldDefinition);
     $field->save();
-    $field_2 = FieldConfig::create($field_definition_2);
+    $field_2 = entity_create('field_config', $field_definition_2);
     $field_2->save();
     $this->container->get('entity.manager')->getStorage('field_config')->delete(array($field, $field_2));
     $this->assertFalse(FieldStorageConfig::loadByName('entity_test', $field_storage->getName()));
diff --git a/core/modules/field/src/Tests/FieldDataCountTest.php b/core/modules/field/src/Tests/FieldDataCountTest.php
index 8b992b7..bbb0cd9 100644
--- a/core/modules/field/src/Tests/FieldDataCountTest.php
+++ b/core/modules/field/src/Tests/FieldDataCountTest.php
@@ -54,17 +54,17 @@ public function testEntityCountAndHasData() {
     // Create a field with a cardinality of 2 to show that we are counting
     // entities and not rows in a table.
     /** @var \Drupal\field\Entity\FieldStorageConfig $field_storage */
-    $field_storage = FieldStorageConfig::create(array(
+    $field_storage = entity_create('field_storage_config', array(
       'field_name' => 'field_int',
       'entity_type' => 'entity_test',
       'type' => 'integer',
       'cardinality' => 2,
     ));
     $field_storage->save();
-    FieldConfig::create([
+    entity_create('field_config', array(
       'field_storage' => $field_storage,
       'bundle' => 'entity_test',
-    ])->save();
+    ))->save();
 
     $this->assertIdentical($field_storage->hasdata(), FALSE, 'There are no entities with field data.');
     $this->assertIdentical($this->storage->countFieldData($field_storage), 0, 'There are 0 entities with field data.');
diff --git a/core/modules/field/src/Tests/FieldImportDeleteUninstallTest.php b/core/modules/field/src/Tests/FieldImportDeleteUninstallTest.php
index fe54ddd..b5b2d157 100644
--- a/core/modules/field/src/Tests/FieldImportDeleteUninstallTest.php
+++ b/core/modules/field/src/Tests/FieldImportDeleteUninstallTest.php
@@ -7,9 +7,6 @@
 
 namespace Drupal\field\Tests;
 
-use Drupal\field\Entity\FieldConfig;
-use Drupal\field\Entity\FieldStorageConfig;
-
 /**
  * Delete field storages and fields during config synchronization and uninstall
  * module that provides the field type.
@@ -42,28 +39,28 @@ public function testImportDeleteUninstall() {
     // Create a field to delete to prove that
     // \Drupal\field\ConfigImporterFieldPurger does not purge fields that are
     // not related to the configuration synchronization.
-    $unrelated_field_storage = FieldStorageConfig::create(array(
+    $unrelated_field_storage = entity_create('field_storage_config', array(
       'field_name' => 'field_int',
       'entity_type' => 'entity_test',
       'type' => 'integer',
     ));
     $unrelated_field_storage->save();
-    FieldConfig::create([
+    entity_create('field_config', array(
       'field_storage' => $unrelated_field_storage,
       'bundle' => 'entity_test',
-    ])->save();
+    ))->save();
 
     // Create a telephone field for validation.
-    $field_storage = FieldStorageConfig::create(array(
+    $field_storage = entity_create('field_storage_config', array(
       'field_name' => 'field_test',
       'entity_type' => 'entity_test',
       'type' => 'telephone',
     ));
     $field_storage->save();
-    FieldConfig::create([
+    entity_create('field_config', array(
       'field_storage' => $field_storage,
       'bundle' => 'entity_test',
-    ])->save();
+    ))->save();
 
     $entity = entity_create('entity_test');
     $value = '+0123456789';
@@ -116,17 +113,17 @@ public function testImportDeleteUninstall() {
    */
   public function testImportAlreadyDeletedUninstall() {
     // Create a telephone field for validation.
-    $field_storage = FieldStorageConfig::create(array(
+    $field_storage = entity_create('field_storage_config', array(
       'field_name' => 'field_test',
       'entity_type' => 'entity_test',
       'type' => 'telephone',
     ));
     $field_storage->save();
     $field_storage_uuid = $field_storage->uuid();
-    FieldConfig::create([
+    entity_create('field_config', array(
       'field_storage' => $field_storage,
       'bundle' => 'entity_test',
-    ])->save();
+    ))->save();
 
     // Create 12 entities to ensure that the purging works as expected.
     for ($i=0; $i < 12; $i++) {
diff --git a/core/modules/field/src/Tests/FieldImportDeleteUninstallUiTest.php b/core/modules/field/src/Tests/FieldImportDeleteUninstallUiTest.php
index e8a964e..58766e8 100644
--- a/core/modules/field/src/Tests/FieldImportDeleteUninstallUiTest.php
+++ b/core/modules/field/src/Tests/FieldImportDeleteUninstallUiTest.php
@@ -7,9 +7,6 @@
 
 namespace Drupal\field\Tests;
 
-use Drupal\field\Entity\FieldConfig;
-use Drupal\field\Entity\FieldStorageConfig;
-
 /**
  * Delete field storages and fields during config synchronization and uninstall
  * module that provides the field type through the UI.
@@ -39,28 +36,28 @@ protected function setUp() {
    */
   public function testImportDeleteUninstall() {
     // Create a telephone field.
-    $field_storage = FieldStorageConfig::create(array(
+    $field_storage = entity_create('field_storage_config', array(
       'field_name' => 'field_tel',
       'entity_type' => 'entity_test',
       'type' => 'telephone',
     ));
     $field_storage->save();
-    FieldConfig::create([
+    entity_create('field_config', array(
       'field_storage' => $field_storage,
       'bundle' => 'entity_test',
-    ])->save();
+    ))->save();
 
     // Create a text field.
-    $date_field_storage = FieldStorageConfig::create(array(
+    $date_field_storage = entity_create('field_storage_config', array(
       'field_name' => 'field_date',
       'entity_type' => 'entity_test',
       'type' => 'datetime',
     ));
     $date_field_storage->save();
-    FieldConfig::create([
+    entity_create('field_config', array(
       'field_storage' => $date_field_storage,
       'bundle' => 'entity_test',
-    ])->save();
+    ))->save();
 
     // Create an entity which has values for the telephone and text field.
     $entity = entity_create('entity_test');
diff --git a/core/modules/field/src/Tests/FieldStorageCrudTest.php b/core/modules/field/src/Tests/FieldStorageCrudTest.php
index 43d0aa0..8912783 100644
--- a/core/modules/field/src/Tests/FieldStorageCrudTest.php
+++ b/core/modules/field/src/Tests/FieldStorageCrudTest.php
@@ -42,7 +42,7 @@ function testCreate() {
       'type' => 'test_field',
     );
     field_test_memorize();
-    $field_storage = FieldStorageConfig::create($field_storage_definition);
+    $field_storage = entity_create('field_storage_config', $field_storage_definition);
     $field_storage->save();
 
     $field_storage = FieldStorageConfig::load($field_storage->id());
@@ -81,7 +81,7 @@ function testCreate() {
 
     // Guarantee that the name is unique.
     try {
-      FieldStorageConfig::create($field_storage_definition)->save();
+      entity_create('field_storage_config', $field_storage_definition)->save();
       $this->fail(t('Cannot create two fields with the same name.'));
     }
     catch (EntityStorageException $e) {
@@ -94,7 +94,7 @@ function testCreate() {
         'field_name' => 'field_1',
         'entity_type' => 'entity_type',
       );
-      FieldStorageConfig::create($field_storage_definition)->save();
+      entity_create('field_storage_config', $field_storage_definition)->save();
       $this->fail(t('Cannot create a field with no type.'));
     }
     catch (FieldException $e) {
@@ -107,7 +107,7 @@ function testCreate() {
         'type' => 'test_field',
         'entity_type' => 'entity_test',
       );
-      FieldStorageConfig::create($field_storage_definition)->save();
+      entity_create('field_storage_config', $field_storage_definition)->save();
       $this->fail(t('Cannot create an unnamed field.'));
     }
     catch (FieldException $e) {
@@ -119,7 +119,7 @@ function testCreate() {
         'field_name' => 'test_field',
         'type' => 'test_field'
       );
-      FieldStorageConfig::create($field_storage_definition)->save();
+      entity_create('field_storage_config', $field_storage_definition)->save();
       $this->fail('Cannot create a field without an entity type.');
     }
     catch (FieldException $e) {
@@ -133,7 +133,7 @@ function testCreate() {
         'entity_type' => 'entity_test',
         'type' => 'test_field',
       );
-      FieldStorageConfig::create($field_storage_definition)->save();
+      entity_create('field_storage_config', $field_storage_definition)->save();
       $this->fail(t('Cannot create a field with a name starting with a digit.'));
     }
     catch (FieldException $e) {
@@ -147,7 +147,7 @@ function testCreate() {
         'entity_type' => 'entity_test',
         'type' => 'test_field',
       );
-      FieldStorageConfig::create($field_storage_definition)->save();
+      entity_create('field_storage_config', $field_storage_definition)->save();
       $this->fail(t('Cannot create a field with a name containing an illegal character.'));
     }
     catch (FieldException $e) {
@@ -161,7 +161,7 @@ function testCreate() {
         'entity_type' => 'entity_test',
         'type' => 'test_field',
       );
-      FieldStorageConfig::create($field_storage_definition)->save();
+      entity_create('field_storage_config', $field_storage_definition)->save();
       $this->fail(t('Cannot create a field with a name longer than 32 characters.'));
     }
     catch (FieldException $e) {
@@ -176,7 +176,7 @@ function testCreate() {
         'field_name' => 'id',
         'entity_type' => 'entity_test',
       );
-      FieldStorageConfig::create($field_storage_definition)->save();
+      entity_create('field_storage_config', $field_storage_definition)->save();
       $this->fail(t('Cannot create a field bearing the name of an entity key.'));
     }
     catch (FieldException $e) {
@@ -194,7 +194,7 @@ function testCreateWithExplicitSchema() {
     $schema = array(
       'dummy' => 'foobar'
     );
-    $field_storage = FieldStorageConfig::create(array(
+    $field_storage = entity_create('field_storage_config', array(
       'field_name' => 'field_2',
       'entity_type' => 'entity_test',
       'type' => 'test_field',
@@ -212,7 +212,7 @@ function testRead() {
       'entity_type' => 'entity_test',
       'type' => 'test_field',
     );
-    $field_storage = FieldStorageConfig::create($field_storage_definition);
+    $field_storage = entity_create('field_storage_config', $field_storage_definition);
     $field_storage->save();
     $id = $field_storage->id();
 
@@ -232,7 +232,7 @@ function testRead() {
       'entity_type' => 'entity_test',
       'bundle' => 'entity_test',
     );
-    FieldConfig::create($field_definition)->save();
+    entity_create('field_config', $field_definition)->save();
   }
 
   /**
@@ -240,7 +240,7 @@ function testRead() {
    */
   function testIndexes() {
     // Check that indexes specified by the field type are used by default.
-    $field_storage = FieldStorageConfig::create(array(
+    $field_storage = entity_create('field_storage_config', array(
       'field_name' => 'field_1',
       'entity_type' => 'entity_test',
       'type' => 'test_field',
@@ -253,7 +253,7 @@ function testIndexes() {
 
     // Check that indexes specified by the field definition override the field
     // type indexes.
-    $field_storage = FieldStorageConfig::create(array(
+    $field_storage = entity_create('field_storage_config', array(
       'field_name' => 'field_2',
       'entity_type' => 'entity_test',
       'type' => 'test_field',
@@ -269,7 +269,7 @@ function testIndexes() {
 
     // Check that indexes specified by the field definition add to the field
     // type indexes.
-    $field_storage = FieldStorageConfig::create(array(
+    $field_storage = entity_create('field_storage_config', array(
       'field_name' => 'field_3',
       'entity_type' => 'entity_test',
       'type' => 'test_field',
@@ -297,13 +297,13 @@ function testDelete() {
       'type' => 'test_field',
       'entity_type' => 'entity_test',
     );
-    FieldStorageConfig::create($field_storage_definition)->save();
+    entity_create('field_storage_config', $field_storage_definition)->save();
     $another_field_storage_definition = array(
       'field_name' => 'field_2',
       'type' => 'test_field',
       'entity_type' => 'entity_test',
     );
-    FieldStorageConfig::create($another_field_storage_definition)->save();
+    entity_create('field_storage_config', $another_field_storage_definition)->save();
 
     // Create fields for each.
     $field_definition = array(
@@ -311,10 +311,10 @@ function testDelete() {
       'entity_type' => 'entity_test',
       'bundle' => 'entity_test',
     );
-    FieldConfig::create($field_definition)->save();
+    entity_create('field_config', $field_definition)->save();
     $another_field_definition = $field_definition;
     $another_field_definition['field_name'] = $another_field_storage_definition['field_name'];
-    FieldConfig::create($another_field_definition)->save();
+    entity_create('field_config', $another_field_definition)->save();
 
     // Test that the first field is not deleted, and then delete it.
     $field_storage = current(entity_load_multiple_by_properties('field_storage_config', array('field_name' => $field_storage_definition['field_name'], 'include_deleted' => TRUE)));
@@ -347,8 +347,8 @@ function testDelete() {
 
     // Try to create a new field the same name as a deleted field and
     // write data into it.
-    FieldStorageConfig::create($field_storage_definition)->save();
-    FieldConfig::create($field_definition)->save();
+    entity_create('field_storage_config', $field_storage_definition)->save();
+    entity_create('field_config', $field_definition)->save();
     $field_storage = FieldStorageConfig::load('entity_test.' . $field_storage_definition['field_name']);
     $this->assertTrue(!empty($field_storage) && !$field_storage->isDeleted(), 'A new storage with a previously used name is created.');
     $field = FieldConfig::load('entity_test.' . $field_definition['bundle'] . '.' . $field_definition['field_name'] );
@@ -368,7 +368,7 @@ function testDelete() {
   }
 
   function testUpdateFieldType() {
-    $field_storage = FieldStorageConfig::create(array(
+    $field_storage = entity_create('field_storage_config', array(
       'field_name' => 'field_type',
       'entity_type' => 'entity_test',
       'type' => 'decimal',
@@ -393,18 +393,18 @@ function testUpdate() {
     // respected. Since cardinality enforcement is consistent across database
     // systems, it makes a good test case.
     $cardinality = 4;
-    $field_storage = FieldStorageConfig::create(array(
+    $field_storage = entity_create('field_storage_config', array(
       'field_name' => 'field_update',
       'entity_type' => 'entity_test',
       'type' => 'test_field',
       'cardinality' => $cardinality,
     ));
     $field_storage->save();
-    $field = FieldConfig::create([
+    $field = entity_create('field_config', array(
       'field_storage' => $field_storage,
       'entity_type' => 'entity_test',
       'bundle' => 'entity_test',
-    ]);
+    ));
     $field->save();
 
     do {
@@ -431,7 +431,7 @@ function testUpdate() {
    * Test field type modules forbidding an update.
    */
   function testUpdateForbid() {
-    $field_storage = FieldStorageConfig::create(array(
+    $field_storage = entity_create('field_storage_config', array(
       'field_name' => 'forbidden',
       'entity_type' => 'entity_test',
       'type' => 'test_field',
diff --git a/core/modules/field/src/Tests/FieldUnitTestBase.php b/core/modules/field/src/Tests/FieldUnitTestBase.php
index 512ef35..ddcf3f9 100644
--- a/core/modules/field/src/Tests/FieldUnitTestBase.php
+++ b/core/modules/field/src/Tests/FieldUnitTestBase.php
@@ -10,9 +10,7 @@
 use Drupal\Component\Utility\Unicode;
 use Drupal\Core\Entity\EntityInterface;
 use Drupal\Core\Language\LanguageInterface;
-use Drupal\field\Entity\FieldConfig;
 use Drupal\simpletest\KernelTestBase;
-use Drupal\field\Entity\FieldStorageConfig;
 
 /**
  * Parent class for Field API unit tests.
@@ -93,7 +91,7 @@ protected function createFieldWithStorage($suffix = '', $entity_type = 'entity_t
     $field_definition = 'field_definition' . $suffix;
 
     $this->fieldTestData->$field_name = Unicode::strtolower($this->randomMachineName() . '_field_name' . $suffix);
-    $this->fieldTestData->$field_storage = FieldStorageConfig::create(array(
+    $this->fieldTestData->$field_storage = entity_create('field_storage_config', array(
       'field_name' => $this->fieldTestData->$field_name,
       'entity_type' => $entity_type,
       'type' => 'test_field',
@@ -110,7 +108,7 @@ protected function createFieldWithStorage($suffix = '', $entity_type = 'entity_t
         'test_field_setting' => $this->randomMachineName(),
       ),
     );
-    $this->fieldTestData->$field = FieldConfig::create($this->fieldTestData->$field_definition);
+    $this->fieldTestData->$field = entity_create('field_config', $this->fieldTestData->$field_definition);
     $this->fieldTestData->$field->save();
 
     entity_get_form_display($entity_type, $bundle, 'default')
diff --git a/core/modules/field/src/Tests/FormTest.php b/core/modules/field/src/Tests/FormTest.php
index c629ca7..dbdc71a 100644
--- a/core/modules/field/src/Tests/FormTest.php
+++ b/core/modules/field/src/Tests/FormTest.php
@@ -99,8 +99,8 @@ function testFieldFormSingle() {
     $field_storage = $this->fieldStorageSingle;
     $field_name = $field_storage['field_name'];
     $this->field['field_name'] = $field_name;
-    FieldStorageConfig::create($field_storage)->save();
-    FieldConfig::create($this->field)->save();
+    entity_create('field_storage_config', $field_storage)->save();
+    entity_create('field_config', $this->field)->save();
     entity_get_form_display($this->field['entity_type'], $this->field['bundle'], 'default')
       ->setComponent($field_name)
       ->save();
@@ -175,8 +175,8 @@ function testFieldFormDefaultValue() {
     $this->field['field_name'] = $field_name;
     $default = rand(1, 127);
     $this->field['default_value'] = array(array('value' => $default));
-    FieldStorageConfig::create($field_storage)->save();
-    FieldConfig::create($this->field)->save();
+    entity_create('field_storage_config', $field_storage)->save();
+    entity_create('field_config', $this->field)->save();
     entity_get_form_display($this->field['entity_type'], $this->field['bundle'], 'default')
       ->setComponent($field_name)
       ->save();
@@ -203,8 +203,8 @@ function testFieldFormSingleRequired() {
     $field_name = $field_storage['field_name'];
     $this->field['field_name'] = $field_name;
     $this->field['required'] = TRUE;
-    FieldStorageConfig::create($field_storage)->save();
-    FieldConfig::create($this->field)->save();
+    entity_create('field_storage_config', $field_storage)->save();
+    entity_create('field_config', $this->field)->save();
     entity_get_form_display($this->field['entity_type'], $this->field['bundle'], 'default')
       ->setComponent($field_name)
       ->save();
@@ -239,16 +239,16 @@ function testFieldFormSingleRequired() {
 //    $this->field = $this->field_multiple;
 //    $field_name = $this->field['field_name'];
 //    $this->instance['field_name'] = $field_name;
-//    FieldStorageConfig::create($this->field)->save();
-//    FieldConfig::create($this->instance)->save();
+//    entity_create('field_storage_config', $this->field)->save();
+//    entity_create('field_config', $this->instance)->save();
 //  }
 
   function testFieldFormUnlimited() {
     $field_storage = $this->fieldStorageUnlimited;
     $field_name = $field_storage['field_name'];
     $this->field['field_name'] = $field_name;
-    FieldStorageConfig::create($field_storage)->save();
-    FieldConfig::create($this->field)->save();
+    entity_create('field_storage_config', $field_storage)->save();
+    entity_create('field_config', $this->field)->save();
     entity_get_form_display($this->field['entity_type'], $this->field['bundle'], 'default')
       ->setComponent($field_name)
       ->save();
@@ -358,14 +358,14 @@ function testFieldFormMultivalueWithRequiredRadio() {
     $field_storage = $this->fieldStorageUnlimited;
     $field_name = $field_storage['field_name'];
     $this->field['field_name'] = $field_name;
-    FieldStorageConfig::create($field_storage)->save();
-    FieldConfig::create($this->field)->save();
+    entity_create('field_storage_config', $field_storage)->save();
+    entity_create('field_config', $this->field)->save();
     entity_get_form_display($this->field['entity_type'], $this->field['bundle'], 'default')
       ->setComponent($field_name)
       ->save();
 
     // Add a required radio field.
-    FieldStorageConfig::create(array(
+    entity_create('field_storage_config', array(
       'field_name' => 'required_radio_test',
       'entity_type' => 'entity_test',
       'type' => 'list_string',
@@ -379,7 +379,7 @@ function testFieldFormMultivalueWithRequiredRadio() {
       'bundle' => 'entity_test',
       'required' => TRUE,
     );
-    FieldConfig::create($field)->save();
+    entity_create('field_config', $field)->save();
     entity_get_form_display($field['entity_type'], $field['bundle'], 'default')
       ->setComponent($field['field_name'], array(
         'type' => 'options_buttons',
@@ -405,8 +405,8 @@ function testFieldFormJSAddMore() {
     $field_storage = $this->fieldStorageUnlimited;
     $field_name = $field_storage['field_name'];
     $this->field['field_name'] = $field_name;
-    FieldStorageConfig::create($field_storage)->save();
-    FieldConfig::create($this->field)->save();
+    entity_create('field_storage_config', $field_storage)->save();
+    entity_create('field_config', $this->field)->save();
     entity_get_form_display($this->field['entity_type'], $this->field['bundle'], 'default')
       ->setComponent($field_name)
       ->save();
@@ -466,8 +466,8 @@ function testFieldFormMultipleWidget() {
     $field_storage = $this->fieldStorageMultiple;
     $field_name = $field_storage['field_name'];
     $this->field['field_name'] = $field_name;
-    FieldStorageConfig::create($field_storage)->save();
-    FieldConfig::create($this->field)->save();
+    entity_create('field_storage_config', $field_storage)->save();
+    entity_create('field_config', $this->field)->save();
     entity_get_form_display($this->field['entity_type'], $this->field['bundle'], 'default')
       ->setComponent($field_name, array(
         'type' => 'test_field_widget_multiple',
@@ -515,8 +515,8 @@ function testFieldFormAccess() {
     $field['field_name'] = $field_name;
     $field['entity_type'] = $entity_type;
     $field['bundle'] = $entity_type;
-    FieldStorageConfig::create($field_storage)->save();
-    FieldConfig::create($field)->save();
+    entity_create('field_storage_config', $field_storage)->save();
+    entity_create('field_config', $field)->save();
     entity_get_form_display($entity_type, $entity_type, 'default')
       ->setComponent($field_name)
       ->save();
@@ -535,8 +535,8 @@ function testFieldFormAccess() {
       'bundle' => $entity_type,
       'default_value' => array(0 => array('value' => 99)),
     );
-    FieldStorageConfig::create($field_storage_no_access)->save();
-    FieldConfig::create($field_no_access)->save();
+    entity_create('field_storage_config', $field_storage_no_access)->save();
+    entity_create('field_config', $field_no_access)->save();
     entity_get_form_display($field_no_access['entity_type'], $field_no_access['bundle'], 'default')
       ->setComponent($field_name_no_access)
       ->save();
@@ -600,8 +600,8 @@ function testHiddenField() {
     $this->field['default_value'] = array(0 => array('value' => 99));
     $this->field['entity_type'] = $entity_type;
     $this->field['bundle'] = $entity_type;
-    FieldStorageConfig::create($field_storage)->save();
-    $this->field = FieldConfig::create($this->field);
+    entity_create('field_storage_config', $field_storage)->save();
+    $this->field = entity_create('field_config', $this->field);
     $this->field->save();
     // We explicitly do not assign a widget in a form display, so the field
     // stays hidden in forms.
diff --git a/core/modules/field/src/Tests/NestedFormTest.php b/core/modules/field/src/Tests/NestedFormTest.php
index ac5dca4..5067b97 100644
--- a/core/modules/field/src/Tests/NestedFormTest.php
+++ b/core/modules/field/src/Tests/NestedFormTest.php
@@ -7,8 +7,6 @@
 
 namespace Drupal\field\Tests;
 use Drupal\Core\Field\FieldStorageDefinitionInterface;
-use Drupal\field\Entity\FieldConfig;
-use Drupal\field\Entity\FieldStorageConfig;
 
 /**
  * Tests field elements in nested forms.
@@ -59,17 +57,17 @@ protected function setUp() {
    */
   function testNestedFieldForm() {
     // Add two fields on the 'entity_test'
-    FieldStorageConfig::create($this->fieldStorageSingle)->save();
-    FieldStorageConfig::create($this->fieldStorageUnlimited)->save();
+    entity_create('field_storage_config', $this->fieldStorageSingle)->save();
+    entity_create('field_storage_config', $this->fieldStorageUnlimited)->save();
     $this->field['field_name'] = 'field_single';
     $this->field['label'] = 'Single field';
-    FieldConfig::create($this->field)->save();
+    entity_create('field_config', $this->field)->save();
     entity_get_form_display($this->field['entity_type'], $this->field['bundle'], 'default')
       ->setComponent($this->field['field_name'])
       ->save();
     $this->field['field_name'] = 'field_unlimited';
     $this->field['label'] = 'Unlimited field';
-    FieldConfig::create($this->field)->save();
+    entity_create('field_config', $this->field)->save();
     entity_get_form_display($this->field['entity_type'], $this->field['bundle'], 'default')
       ->setComponent($this->field['field_name'])
       ->save();
diff --git a/core/modules/field/src/Tests/Number/NumberFieldTest.php b/core/modules/field/src/Tests/Number/NumberFieldTest.php
index 894c92c..9537170 100644
--- a/core/modules/field/src/Tests/Number/NumberFieldTest.php
+++ b/core/modules/field/src/Tests/Number/NumberFieldTest.php
@@ -8,9 +8,7 @@
 namespace Drupal\field\Tests\Number;
 
 use Drupal\Component\Utility\Unicode;
-use Drupal\field\Entity\FieldConfig;
 use Drupal\simpletest\WebTestBase;
-use Drupal\field\Entity\FieldStorageConfig;
 
 /**
  * Tests the creation of numeric fields.
@@ -45,7 +43,7 @@ protected function setUp() {
   function testNumberDecimalField() {
     // Create a field with settings to validate.
     $field_name = Unicode::strtolower($this->randomMachineName());
-    FieldStorageConfig::create(array(
+    entity_create('field_storage_config', array(
       'field_name' => $field_name,
       'entity_type' => 'entity_test',
       'type' => 'decimal',
@@ -53,11 +51,11 @@ function testNumberDecimalField() {
         'precision' => 8, 'scale' => 4,
       )
     ))->save();
-    FieldConfig::create([
+    entity_create('field_config', array(
       'field_name' => $field_name,
       'entity_type' => 'entity_test',
       'bundle' => 'entity_test',
-    ])->save();
+    ))->save();
 
     entity_get_form_display('entity_test', 'entity_test', 'default')
       ->setComponent($field_name, array(
@@ -135,21 +133,21 @@ function testNumberIntegerField() {
 
     // Create a field with settings to validate.
     $field_name = Unicode::strtolower($this->randomMachineName());
-    $storage = FieldStorageConfig::create(array(
+    $storage = entity_create('field_storage_config', array(
       'field_name' => $field_name,
       'entity_type' => 'entity_test',
       'type' => 'integer',
     ));
     $storage->save();
 
-    FieldConfig::create([
+    entity_create('field_config', array(
       'field_name' => $field_name,
       'entity_type' => 'entity_test',
       'bundle' => 'entity_test',
       'settings' => array(
         'min' => $minimum, 'max' => $maximum, 'prefix' => 'ThePrefix',
       )
-    ])->save();
+    ))->save();
 
     entity_get_form_display('entity_test', 'entity_test', 'default')
       ->setComponent($field_name, array(
@@ -278,17 +276,17 @@ function testNumberIntegerField() {
   function testNumberFloatField() {
     // Create a field with settings to validate.
     $field_name = Unicode::strtolower($this->randomMachineName());
-    FieldStorageConfig::create(array(
+    entity_create('field_storage_config', array(
       'field_name' => $field_name,
       'entity_type' => 'entity_test',
       'type' => 'float',
     ))->save();
 
-    FieldConfig::create([
+    entity_create('field_config', array(
       'field_name' => $field_name,
       'entity_type' => 'entity_test',
       'bundle' => 'entity_test',
-    ])->save();
+    ))->save();
 
     entity_get_form_display('entity_test', 'entity_test', 'default')
       ->setComponent($field_name, array(
@@ -379,19 +377,19 @@ function testNumberFormatter() {
     // Create a content type containing float and integer fields.
     $this->drupalCreateContentType(array('type' => $type));
 
-    FieldStorageConfig::create(array(
+    entity_create('field_storage_config', array(
       'field_name' => $float_field,
       'entity_type' => 'node',
       'type' => 'float',
     ))->save();
 
-    FieldStorageConfig::create(array(
+    entity_create('field_storage_config', array(
       'field_name' => $integer_field,
       'entity_type' => 'node',
       'type' => 'integer',
     ))->save();
 
-    FieldConfig::create([
+    entity_create('field_config', array(
       'field_name' => $float_field,
       'entity_type' => 'node',
       'bundle' => $type,
@@ -399,9 +397,9 @@ function testNumberFormatter() {
         'prefix' => $prefix,
         'suffix' => $suffix
       ),
-    ])->save();
+    ))->save();
 
-    FieldConfig::create([
+    entity_create('field_config', array(
       'field_name' => $integer_field,
       'entity_type' => 'node',
       'bundle' => $type,
@@ -409,7 +407,7 @@ function testNumberFormatter() {
         'prefix' => $prefix,
         'suffix' => $suffix
       ),
-    ])->save();
+    ))->save();
 
     entity_get_form_display('node', $type, 'default')
       ->setComponent($float_field, array(
@@ -503,17 +501,17 @@ function testNumberFormatter() {
   function testCreateNumberFloatField() {
     // Create a float field.
     $field_name = Unicode::strtolower($this->randomMachineName());
-    FieldStorageConfig::create(array(
+    entity_create('field_storage_config', array(
       'field_name' => $field_name,
       'entity_type' => 'entity_test',
       'type' => 'float',
     ))->save();
 
-    $field = FieldConfig::create([
+    $field = entity_create('field_config', array(
       'field_name' => $field_name,
       'entity_type' => 'entity_test',
       'bundle' => 'entity_test',
-    ]);
+    ));
     $field->save();
 
     // Set the minimum value to a float value.
@@ -528,17 +526,17 @@ function testCreateNumberFloatField() {
   function testCreateNumberDecimalField() {
     // Create a decimal field.
     $field_name = Unicode::strtolower($this->randomMachineName());
-    FieldStorageConfig::create(array(
+    entity_create('field_storage_config', array(
       'field_name' => $field_name,
       'entity_type' => 'entity_test',
       'type' => 'decimal',
     ))->save();
 
-    $field = FieldConfig::create([
+    $field = entity_create('field_config', array(
       'field_name' => $field_name,
       'entity_type' => 'entity_test',
       'bundle' => 'entity_test',
-    ]);
+    ));
     $field->save();
 
     // Set the minimum value to a decimal value.
diff --git a/core/modules/field/src/Tests/Number/NumberItemTest.php b/core/modules/field/src/Tests/Number/NumberItemTest.php
index 3f65fe2..e7eac30 100644
--- a/core/modules/field/src/Tests/Number/NumberItemTest.php
+++ b/core/modules/field/src/Tests/Number/NumberItemTest.php
@@ -9,9 +9,7 @@
 
 use Drupal\Core\Field\FieldItemInterface;
 use Drupal\Core\Field\FieldItemListInterface;
-use Drupal\field\Entity\FieldConfig;
 use Drupal\field\Tests\FieldUnitTestBase;
-use Drupal\field\Entity\FieldStorageConfig;
 
 /**
  * Tests the new entity API for the number field type.
@@ -32,16 +30,16 @@ protected function setUp() {
 
     // Create number field storages and fields for validation.
     foreach (array('integer', 'float', 'decimal') as $type) {
-      FieldStorageConfig::create(array(
+      entity_create('field_storage_config', array(
         'entity_type' => 'entity_test',
         'field_name' => 'field_' . $type,
         'type' => $type,
       ))->save();
-      FieldConfig::create([
+      entity_create('field_config', array(
         'entity_type' => 'entity_test',
         'field_name' => 'field_' . $type,
         'bundle' => 'entity_test',
-      ])->save();
+      ))->save();
     }
   }
 
diff --git a/core/modules/field/src/Tests/ShapeItemTest.php b/core/modules/field/src/Tests/ShapeItemTest.php
index 20bb4e0..9f7df3b 100644
--- a/core/modules/field/src/Tests/ShapeItemTest.php
+++ b/core/modules/field/src/Tests/ShapeItemTest.php
@@ -9,8 +9,6 @@
 
 use Drupal\Core\Field\FieldItemInterface;
 use Drupal\Core\Field\FieldItemListInterface;
-use Drupal\field\Entity\FieldConfig;
-use Drupal\field\Entity\FieldStorageConfig;
 
 /**
  * Tests the new entity API for the shape field type.
@@ -37,16 +35,16 @@ protected function setUp() {
     parent::setUp();
 
     // Create a 'shape' field and storage for validation.
-    FieldStorageConfig::create(array(
+    entity_create('field_storage_config', array(
       'field_name' => $this->fieldName,
       'entity_type' => 'entity_test',
       'type' => 'shape',
     ))->save();
-    FieldConfig::create([
+    entity_create('field_config', array(
       'entity_type' => 'entity_test',
       'field_name' => $this->fieldName,
       'bundle' => 'entity_test',
-    ])->save();
+    ))->save();
   }
 
   /**
diff --git a/core/modules/field/src/Tests/String/StringFieldTest.php b/core/modules/field/src/Tests/String/StringFieldTest.php
index 80cb1fe..3114490 100644
--- a/core/modules/field/src/Tests/String/StringFieldTest.php
+++ b/core/modules/field/src/Tests/String/StringFieldTest.php
@@ -8,9 +8,7 @@
 namespace Drupal\field\Tests\String;
 
 use Drupal\Component\Utility\Unicode;
-use Drupal\field\Entity\FieldConfig;
 use Drupal\simpletest\WebTestBase;
-use Drupal\field\Entity\FieldStorageConfig;
 
 /**
  * Tests the creation of string fields.
@@ -56,17 +54,17 @@ function testTextfieldWidgets() {
   function _testTextfieldWidgets($field_type, $widget_type) {
     // Create a field.
     $field_name = Unicode::strtolower($this->randomMachineName());
-    $field_storage = FieldStorageConfig::create(array(
+    $field_storage = entity_create('field_storage_config', array(
       'field_name' => $field_name,
       'entity_type' => 'entity_test',
       'type' => $field_type
     ));
     $field_storage->save();
-    FieldConfig::create([
+    entity_create('field_config', array(
       'field_storage' => $field_storage,
       'bundle' => 'entity_test',
       'label' => $this->randomMachineName() . '_label',
-    ])->save();
+    ))->save();
     entity_get_form_display('entity_test', 'entity_test', 'default')
       ->setComponent($field_name, array(
         'type' => $widget_type,
diff --git a/core/modules/field/src/Tests/TestItemTest.php b/core/modules/field/src/Tests/TestItemTest.php
index b4bf7ca..7aa4679 100644
--- a/core/modules/field/src/Tests/TestItemTest.php
+++ b/core/modules/field/src/Tests/TestItemTest.php
@@ -10,8 +10,6 @@
 use Drupal\Core\Field\BaseFieldDefinition;
 use Drupal\Core\Field\FieldItemInterface;
 use Drupal\Core\Field\FieldItemListInterface;
-use Drupal\field\Entity\FieldConfig;
-use Drupal\field\Entity\FieldStorageConfig;
 
 /**
  * Tests the new entity API for the test field type.
@@ -38,16 +36,16 @@ protected function setUp() {
     parent::setUp();
 
     // Create a 'test_field' field and storage for validation.
-    FieldStorageConfig::create(array(
+    entity_create('field_storage_config', array(
       'field_name' => $this->fieldName,
       'entity_type' => 'entity_test',
       'type' => 'test_field',
     ))->save();
-    FieldConfig::create([
+    entity_create('field_config', array(
       'entity_type' => 'entity_test',
       'field_name' => $this->fieldName,
       'bundle' => 'entity_test',
-    ])->save();
+    ))->save();
   }
 
   /**
diff --git a/core/modules/field/src/Tests/TestItemWithDependenciesTest.php b/core/modules/field/src/Tests/TestItemWithDependenciesTest.php
index 16d5a78..a3be92b 100644
--- a/core/modules/field/src/Tests/TestItemWithDependenciesTest.php
+++ b/core/modules/field/src/Tests/TestItemWithDependenciesTest.php
@@ -7,9 +7,6 @@
 
 namespace Drupal\field\Tests;
 
-use Drupal\field\Entity\FieldConfig;
-use Drupal\field\Entity\FieldStorageConfig;
-
 /**
  * Tests the new entity API for the test field with dependencies type.
  *
@@ -36,16 +33,16 @@ class TestItemWithDependenciesTest extends FieldUnitTestBase {
    */
   public function testTestItemWithDepenencies() {
     // Create a 'test_field_with_dependencies' field and storage for validation.
-    FieldStorageConfig::create(array(
+    entity_create('field_storage_config', array(
       'field_name' => $this->fieldName,
       'entity_type' => 'entity_test',
       'type' => 'test_field_with_dependencies',
     ))->save();
-    $field = FieldConfig::create([
+    $field = entity_create('field_config', array(
       'entity_type' => 'entity_test',
       'field_name' => $this->fieldName,
       'bundle' => 'entity_test',
-    ]);
+    ));
     $field->save();
 
     // Validate that the field configuration entity has the expected
diff --git a/core/modules/field/src/Tests/TranslationTest.php b/core/modules/field/src/Tests/TranslationTest.php
index 359ef7d..8328951 100644
--- a/core/modules/field/src/Tests/TranslationTest.php
+++ b/core/modules/field/src/Tests/TranslationTest.php
@@ -8,9 +8,7 @@
 namespace Drupal\field\Tests;
 
 use Drupal\Component\Utility\Unicode;
-use Drupal\field\Entity\FieldConfig;
 use Drupal\language\Entity\ConfigurableLanguage;
-use Drupal\field\Entity\FieldStorageConfig;
 
 /**
  * Tests multilanguage fields logic.
@@ -90,14 +88,14 @@ protected function setUp() {
       'type' => 'test_field',
       'cardinality' => 4,
     );
-    $this->fieldStorage = FieldStorageConfig::create($this->fieldStorageDefinition);
+    $this->fieldStorage = entity_create('field_storage_config', $this->fieldStorageDefinition);
     $this->fieldStorage->save();
 
     $this->fieldDefinition = array(
       'field_storage' => $this->fieldStorage,
       'bundle' => 'entity_test',
     );
-    $this->field = FieldConfig::create($this->fieldDefinition);
+    $this->field = entity_create('field_config', $this->fieldDefinition);
     $this->field->save();
 
     for ($i = 0; $i < 3; ++$i) {
@@ -146,13 +144,13 @@ function testTranslatableFieldSaveLoad() {
     $field_name_default = Unicode::strtolower($this->randomMachineName() . '_field_name');
     $field_storage_definition = $this->fieldStorageDefinition;
     $field_storage_definition['field_name'] = $field_name_default;
-    $field_storage = FieldStorageConfig::create($field_storage_definition);
+    $field_storage = entity_create('field_storage_config', $field_storage_definition);
     $field_storage->save();
 
     $field_definition = $this->fieldDefinition;
     $field_definition['field_storage'] = $field_storage;
     $field_definition['default_value'] = array(array('value' => rand(1, 127)));
-    $field = FieldConfig::create($field_definition);
+    $field = entity_create('field_config', $field_definition);
     $field->save();
 
     $translation_langcodes = array_slice($available_langcodes, 0, 2);
diff --git a/core/modules/field/src/Tests/TranslationWebTest.php b/core/modules/field/src/Tests/TranslationWebTest.php
index 78530c0..8350285 100644
--- a/core/modules/field/src/Tests/TranslationWebTest.php
+++ b/core/modules/field/src/Tests/TranslationWebTest.php
@@ -65,14 +65,14 @@ protected function setUp() {
       'type' => 'test_field',
       'cardinality' => 4,
     );
-    FieldStorageConfig::create($field_storage)->save();
+    entity_create('field_storage_config', $field_storage)->save();
     $this->fieldStorage = FieldStorageConfig::load($this->entityTypeId . '.' . $this->fieldName);
 
     $field = array(
       'field_storage' => $this->fieldStorage,
       'bundle' => $this->entityTypeId,
     );
-    FieldConfig::create($field)->save();
+    entity_create('field_config', $field)->save();
     $this->field = FieldConfig::load($this->entityTypeId . '.' . $field['bundle'] . '.' . $this->fieldName);
 
     entity_get_form_display($this->entityTypeId, $this->entityTypeId, 'default')
diff --git a/core/modules/field/src/Tests/Views/FieldTestBase.php b/core/modules/field/src/Tests/Views/FieldTestBase.php
index 4e9cfc2..0425c29 100644
--- a/core/modules/field/src/Tests/Views/FieldTestBase.php
+++ b/core/modules/field/src/Tests/Views/FieldTestBase.php
@@ -19,11 +19,8 @@
 
 namespace Drupal\field\Tests\Views;
 
-use Drupal\field\Entity\FieldConfig;
-use Drupal\node\Entity\NodeType;
 use Drupal\views\Tests\ViewTestBase;
 use Drupal\views\Tests\ViewTestData;
-use Drupal\field\Entity\FieldStorageConfig;
 
 /**
  * Provides some helper methods for testing fieldapi integration into views.
@@ -56,10 +53,10 @@ protected function setUp() {
     parent::setUp();
 
     // Ensure the page node type exists.
-    NodeType::create([
+    entity_create('node_type', array(
       'type' => 'page',
       'name' => 'page',
-    ])->save();
+    ))->save();
 
     ViewTestData::createTestViews(get_class($this), array('field_test_views'));
   }
@@ -69,7 +66,7 @@ function setUpFieldStorages($amount = 3, $type = 'string') {
     $field_names = array();
     for ($i = 0; $i < $amount; $i++) {
       $field_names[$i] = 'field_name_' . $i;
-      $this->fieldStorages[$i] = FieldStorageConfig::create(array(
+      $this->fieldStorages[$i] = entity_create('field_storage_config', array(
         'field_name' => $field_names[$i],
         'entity_type' => 'node',
         'type' => $type,
@@ -81,10 +78,10 @@ function setUpFieldStorages($amount = 3, $type = 'string') {
 
   function setUpFields($bundle = 'page') {
     foreach ($this->fieldStorages as $key => $field_storage) {
-      $this->fields[$key] = FieldConfig::create([
+      $this->fields[$key] = entity_create('field_config', array(
         'field_storage' => $field_storage,
         'bundle' => $bundle,
-      ]);
+      ));
       $this->fields[$key]->save();
     }
   }
diff --git a/core/modules/field/src/Tests/Views/HandlerFieldFieldTest.php b/core/modules/field/src/Tests/Views/HandlerFieldFieldTest.php
index 5524843..f3be429 100644
--- a/core/modules/field/src/Tests/Views/HandlerFieldFieldTest.php
+++ b/core/modules/field/src/Tests/Views/HandlerFieldFieldTest.php
@@ -10,7 +10,6 @@
 use Drupal\Core\Field\FieldStorageDefinitionInterface;
 use Drupal\views\ViewExecutable;
 use Drupal\views\Views;
-use Drupal\field\Entity\FieldStorageConfig;
 
 /**
  * Tests the field itself of the Field integration.
@@ -53,7 +52,7 @@ protected function setUp() {
     $this->setUpFieldStorages(3);
 
     // Setup a field with cardinality > 1.
-    $this->fieldStorages[3] = FieldStorageConfig::create(array(
+    $this->fieldStorages[3] = entity_create('field_storage_config', array(
       'field_name' => 'field_name_3',
       'entity_type' => 'node',
       'type' => 'string',
@@ -61,7 +60,7 @@ protected function setUp() {
     ));
     $this->fieldStorages[3]->save();
     // Setup a field that will have no value.
-    $this->fieldStorages[4] = FieldStorageConfig::create(array(
+    $this->fieldStorages[4] = entity_create('field_storage_config', array(
       'field_name' => 'field_name_4',
       'entity_type' => 'node',
       'type' => 'string',
@@ -70,7 +69,7 @@ protected function setUp() {
     $this->fieldStorages[4]->save();
 
     // Setup a text field.
-    $this->fieldStorages[5] = FieldStorageConfig::create(array(
+    $this->fieldStorages[5] = entity_create('field_storage_config', array(
       'field_name' => 'field_name_5',
       'entity_type' => 'node',
       'type' => 'text',
@@ -79,7 +78,7 @@ protected function setUp() {
 
     // Setup a text field with access control.
     // @see field_test_entity_field_access()
-    $this->fieldStorages[6] = FieldStorageConfig::create(array(
+    $this->fieldStorages[6] = entity_create('field_storage_config', array(
       'field_name' => 'field_no_view_access',
       'entity_type' => 'node',
       'type' => 'text',
diff --git a/core/modules/field/src/Tests/reEnableModuleFieldTest.php b/core/modules/field/src/Tests/reEnableModuleFieldTest.php
index c8040ff..3a72c67 100644
--- a/core/modules/field/src/Tests/reEnableModuleFieldTest.php
+++ b/core/modules/field/src/Tests/reEnableModuleFieldTest.php
@@ -7,9 +7,7 @@
 
 namespace Drupal\field\Tests;
 
-use Drupal\field\Entity\FieldConfig;
 use Drupal\simpletest\WebTestBase;
-use Drupal\field\Entity\FieldStorageConfig;
 
 /**
  * Tests the behavior of a field module after being disabled and re-enabled.
@@ -49,17 +47,17 @@ protected function setUp() {
   function testReEnabledField() {
 
     // Add a telephone field to the article content type.
-    $field_storage = FieldStorageConfig::create(array(
+    $field_storage = entity_create('field_storage_config', array(
       'field_name' => 'field_telephone',
       'entity_type' => 'node',
       'type' => 'telephone',
     ));
     $field_storage->save();
-    FieldConfig::create([
+    entity_create('field_config', array(
       'field_storage' => $field_storage,
       'bundle' => 'article',
       'label' => 'Telephone Number',
-    ])->save();
+    ))->save();
 
     entity_get_form_display('node', 'article', 'default')
       ->setComponent('field_telephone', array(
@@ -95,35 +93,14 @@ function testReEnabledField() {
     $admin_user = $this->drupalCreateUser(array('access administration pages', 'administer modules'));
     $this->drupalLogin($admin_user);
     $this->drupalGet('admin/modules/uninstall');
-    $this->assertText("The Telephone number field type is used in the following field: node.field_telephone");
-
-    // Add another telephone field to a different entity type in order to test
-    // the message for the case when multiple fields are blocking the
-    // uninstallation of a module.
-    $field_storage2 = entity_create('field_storage_config', array(
-      'field_name' => 'field_telephone_2',
-      'entity_type' => 'user',
-      'type' => 'telephone',
-    ));
-    $field_storage2->save();
-    FieldConfig::create([
-      'field_storage' => $field_storage2,
-      'bundle' => 'user',
-      'label' => 'User Telephone Number',
-    ])->save();
-
-    $this->drupalGet('admin/modules/uninstall');
-    $this->assertText("The Telephone number field type is used in the following fields: node.field_telephone, user.field_telephone_2");
-
-    // Delete both fields.
+    $this->assertText('Fields type(s) in use');
     $field_storage->delete();
-    $field_storage2->delete();
-
     $this->drupalGet('admin/modules/uninstall');
     $this->assertText('Fields pending deletion');
     $this->cronRun();
-    $this->assertNoText("The Telephone number field type is used in the following field: node.field_telephone");
+    $this->assertNoText('Fields type(s) in use');
     $this->assertNoText('Fields pending deletion');
+
   }
 
 }
diff --git a/core/modules/field/tests/modules/field_test/field_test.module b/core/modules/field/tests/modules/field_test/field_test.module
index 2b1d06f..c86a7b9 100644
--- a/core/modules/field/tests/modules/field_test/field_test.module
+++ b/core/modules/field/tests/modules/field_test/field_test.module
@@ -1,5 +1,8 @@
 <?php
 
+use Drupal\field\FieldStorageConfigInterface;
+use Drupal\Core\Form\FormStateInterface;
+
 /**
  * @file
  * Helper module for the Field API tests.
@@ -13,10 +16,6 @@
  * test helper functions
  */
 
-use Drupal\field\FieldStorageConfigInterface;
-use Drupal\Core\Form\FormStateInterface;
-use Drupal\field\Entity\FieldStorageConfig;
-
 require_once __DIR__ . '/field_test.entity.inc';
 require_once __DIR__ . '/field_test.field.inc';
 
@@ -43,7 +42,7 @@
  *   field_test_memorize();
  *
  *   // call some Field API functions that invoke field_test hooks
- *   FieldStorageConfig::create($field_definition)->save();
+ *   entity_create('field_storage_config', $field_definition)->save();
  *
  *   // retrieve and reset the memorized hook call data
  *   $mem = field_test_memorize();
diff --git a/core/modules/field/tests/modules/field_test/src/Plugin/Field/FieldFormatter/TestFieldEmptyFormatter.php b/core/modules/field/tests/modules/field_test/src/Plugin/Field/FieldFormatter/TestFieldEmptyFormatter.php
index 59a9487..cab0c17 100644
--- a/core/modules/field/tests/modules/field_test/src/Plugin/Field/FieldFormatter/TestFieldEmptyFormatter.php
+++ b/core/modules/field/tests/modules/field_test/src/Plugin/Field/FieldFormatter/TestFieldEmptyFormatter.php
@@ -4,7 +4,6 @@
  * @file
  * Contains \Drupal\field_test\Plugin\Field\FieldFormatter\TestFieldEmptyFormatter.
  */
-
 namespace Drupal\field_test\Plugin\Field\FieldFormatter;
 
 use Drupal\Core\Field\FieldItemListInterface;
diff --git a/core/modules/field/tests/modules/field_test/src/Plugin/Field/FieldFormatter/TestFieldNoSettingsFormatter.php b/core/modules/field/tests/modules/field_test/src/Plugin/Field/FieldFormatter/TestFieldNoSettingsFormatter.php
index 22b0d6f..d01ef8b 100644
--- a/core/modules/field/tests/modules/field_test/src/Plugin/Field/FieldFormatter/TestFieldNoSettingsFormatter.php
+++ b/core/modules/field/tests/modules/field_test/src/Plugin/Field/FieldFormatter/TestFieldNoSettingsFormatter.php
@@ -5,7 +5,6 @@
  *
  * Contains \Drupal\field_test\Plugin\Field\FieldFormatter\TestFieldNoSettingsFormatter.
  */
-
 namespace Drupal\field_test\Plugin\Field\FieldFormatter;
 
 use Drupal\Core\Field\FieldItemListInterface;
diff --git a/core/modules/field/tests/modules/field_third_party_test/field_third_party_test.module b/core/modules/field/tests/modules/field_third_party_test/field_third_party_test.module
index fa0e418..8726b18 100644
--- a/core/modules/field/tests/modules/field_third_party_test/field_third_party_test.module
+++ b/core/modules/field/tests/modules/field_third_party_test/field_third_party_test.module
@@ -1,10 +1,5 @@
 <?php
 
-/**
- * @file
- * Test module.
- */
-
 use Drupal\Core\Form\FormStateInterface;
 
 /**
diff --git a/core/modules/field/tests/src/Unit/FieldUninstallValidatorTest.php b/core/modules/field/tests/src/Unit/FieldUninstallValidatorTest.php
index 51d5540..5f7a16d 100644
--- a/core/modules/field/tests/src/Unit/FieldUninstallValidatorTest.php
+++ b/core/modules/field/tests/src/Unit/FieldUninstallValidatorTest.php
@@ -7,7 +7,6 @@
 
 namespace Drupal\Tests\field\Unit;
 
-use Drupal\Core\DependencyInjection\ContainerBuilder;
 use Drupal\simpletest\AssertHelperTrait;
 use Drupal\Tests\UnitTestCase;
 
@@ -25,20 +24,13 @@ class FieldUninstallValidatorTest extends UnitTestCase {
   protected $fieldUninstallValidator;
 
   /**
-   * The mock field type plugin manager;
-   *
-   * @var \Drupal\Core\Field\FieldTypePluginManagerInterface|\PHPUnit_Framework_MockObject_MockObject
-   */
-  protected $fieldTypePluginManager;
-
-  /**
    * {@inheritdoc}
    */
   protected function setUp() {
     parent::setUp();
     $this->fieldUninstallValidator = $this->getMockBuilder('Drupal\field\FieldUninstallValidator')
       ->disableOriginalConstructor()
-      ->setMethods(['getFieldStoragesByModule', 'getFieldTypeLabel'])
+      ->setMethods(['getFieldStoragesByModule'])
       ->getMock();
     $this->fieldUninstallValidator->setStringTranslation($this->getStringTranslationStub());
   }
@@ -87,24 +79,12 @@ public function testValidateNoDeleted() {
     $field_storage->expects($this->once())
       ->method('isDeleted')
       ->willReturn(FALSE);
-    $field_type = $this->randomMachineName();
-    $field_storage->expects($this->once())
-      ->method('getType')
-      ->willReturn($field_type);
-    $field_name = $this->randomMachineName();
-    $field_storage->expects($this->once())
-      ->method('getLabel')
-      ->willReturn($field_name);
     $this->fieldUninstallValidator->expects($this->once())
       ->method('getFieldStoragesByModule')
       ->willReturn([$field_storage]);
-    $field_type_label = $this->randomMachineName();
-    $this->fieldUninstallValidator->expects($this->once())
-      ->method('getFieldTypeLabel')
-      ->willReturn($field_type_label);
 
     $module = $this->randomMachineName();
-    $expected = ["The <em class=\"placeholder\">$field_type_label</em> field type is used in the following field: $field_name"];
+    $expected = ['Fields type(s) in use'];
     $reasons = $this->fieldUninstallValidator->validate($module);
     $this->assertSame($expected, $this->castSafeStrings($reasons));
   }
diff --git a/core/modules/field_ui/src/Tests/EntityFormDisplayTest.php b/core/modules/field_ui/src/Tests/EntityFormDisplayTest.php
index 1840218..b002106 100644
--- a/core/modules/field_ui/src/Tests/EntityFormDisplayTest.php
+++ b/core/modules/field_ui/src/Tests/EntityFormDisplayTest.php
@@ -81,7 +81,7 @@ public function testFieldComponent() {
     $default_widget = $field_type_info['default_widget'];
     $widget_settings = \Drupal::service('plugin.manager.field.widget')->getDefaultSettings($default_widget);
     $expected = array(
-      'weight' => 3,
+      'weight' => 0,
       'type' => $default_widget,
       'settings' => $widget_settings,
       'third_party_settings' => array(),
diff --git a/core/modules/file/file.install b/core/modules/file/file.install
index 05eedf0..35a5737 100644
--- a/core/modules/file/file.install
+++ b/core/modules/file/file.install
@@ -98,18 +98,18 @@ function file_requirements($phase) {
     }
     elseif (!$implementation && extension_loaded('apcu')) {
       $value = t('Not enabled');
-      $description = t('Your server is capable of displaying file upload progress through APC, but it is not enabled. Add <code>apc.rfc1867 = 1</code> to your php.ini configuration. Alternatively, it is recommended to use <a href="http://pecl.php.net/package/uploadprogress">PECL uploadprogress</a>, which supports more than one simultaneous upload.');
+      $description = t('Your server is capable of displaying file upload progress through APC, but it is not enabled. Add <code>apc.rfc1867 = 1</code> to your php.ini configuration. Alternatively, it is recommended to use <a href=":url">PECL uploadprogress</a>, which supports more than one simultaneous upload.', array(':url' => 'http://pecl.php.net/package/uploadprogress'));
     }
     elseif (!$implementation) {
       $value = t('Not enabled');
-      $description = t('Your server is capable of displaying file upload progress, but does not have the required libraries. It is recommended to install the <a href="http://pecl.php.net/package/uploadprogress">PECL uploadprogress library</a> (preferred) or to install <a href="http://php.net/apcu">APC</a>.');
+      $description = t('Your server is capable of displaying file upload progress, but does not have the required libraries. It is recommended to install the <a href=":uploadprogress_url">PECL uploadprogress library</a> (preferred) or to install <a href=":apc_url">APC</a>.', array(':uploadprogress_url' => 'http://pecl.php.net/package/uploadprogress', ':apc_url' => 'http://php.net/apcu'));
     }
     elseif ($implementation == 'apc') {
-      $value = t('Enabled (<a href="http://php.net/manual/apcu.configuration.php#ini.apcu.rfc1867">APC RFC1867</a>)');
-      $description = t('Your server is capable of displaying file upload progress using APC RFC1867. Note that only one upload at a time is supported. It is recommended to use the <a href="http://pecl.php.net/package/uploadprogress">PECL uploadprogress library</a> if possible.');
+      $value = t('Enabled (<a href=":url">APC RFC1867</a>)', array(':url' => 'http://php.net/manual/en/apcu.configuration.php#ini.apcu.rfc1867'));
+      $description = t('Your server is capable of displaying file upload progress using APC RFC1867. Note that only one upload at a time is supported. It is recommended to use the <a href=":url">PECL uploadprogress library</a> if possible.', array(':url' => 'http://pecl.php.net/package/uploadprogress'));
     }
     elseif ($implementation == 'uploadprogress') {
-      $value = t('Enabled (<a href="http://pecl.php.net/package/uploadprogress">PECL uploadprogress</a>)');
+      $value = t('Enabled (<a href=":url">PECL uploadprogress</a>)', array(':url' => 'http://pecl.php.net/package/uploadprogress'));
     }
     $requirements['file_progress'] = array(
       'title' => t('Upload progress'),
diff --git a/core/modules/file/file.module b/core/modules/file/file.module
index bffb84d..fd17021 100644
--- a/core/modules/file/file.module
+++ b/core/modules/file/file.module
@@ -504,11 +504,11 @@ function file_save_data($data, $destination = NULL, $replace = FILE_EXISTS_RENAM
 
   if ($uri = file_unmanaged_save_data($data, $destination, $replace)) {
     // Create a file entity.
-    $file = File::create([
+    $file = entity_create('file', array(
       'uri' => $uri,
       'uid' => $user->id(),
       'status' => FILE_STATUS_PERMANENT,
-    ]);
+    ));
     // If we are replacing an existing file re-use its database record.
     // @todo Do not create a new entity in order to update it. See
     //   https://www.drupal.org/node/2241865.
@@ -772,7 +772,7 @@ function file_save_upload($form_field_name, $validators = array(), $destination
       'filesize' => $file_info->getSize(),
     );
     $values['filemime'] = \Drupal::service('file.mime_type.guesser')->guess($values['filename']);
-    $file = File::create($values);
+    $file = entity_create('file', $values);
 
     $extensions = '';
     if (isset($validators['file_validate_extensions'])) {
diff --git a/core/modules/file/src/FileViewsData.php b/core/modules/file/src/FileViewsData.php
index 4065e2d..7acbabc 100644
--- a/core/modules/file/src/FileViewsData.php
+++ b/core/modules/file/src/FileViewsData.php
@@ -21,7 +21,7 @@ public function getViewsData() {
     $data = parent::getViewsData();
 
     // @TODO There is no corresponding information in entity metadata.
-    $data['file_managed']['table']['base']['help'] = $this->t('Files maintained by Drupal and various modules.');
+    $data['file_managed']['table']['base']['help'] = t('Files maintained by Drupal and various modules.');
     $data['file_managed']['table']['base']['defaults']['field'] = 'filename';
     $data['file_managed']['table']['wizard_id'] = 'file_managed';
 
@@ -32,13 +32,13 @@ public function getViewsData() {
       'numeric' => TRUE,
     );
     $data['file_managed']['fid']['relationship'] = array(
-      'title' => $this->t('File usage'),
-      'help' => $this->t('Relate file entities to their usage.'),
+      'title' => t('File usage'),
+      'help' => t('Relate file entities to their usage.'),
       'id' => 'standard',
       'base' => 'file_usage',
       'base field' => 'fid',
       'field' => 'fid',
-      'label' => $this->t('File usage'),
+      'label' => t('File usage'),
     );
 
     $data['file_managed']['uri']['field']['default_formatter'] = 'file_uri';
@@ -46,8 +46,8 @@ public function getViewsData() {
     $data['file_managed']['filemime']['field']['default_formatter'] = 'file_filemime';
 
     $data['file_managed']['extension'] = array(
-      'title' => $this->t('Extension'),
-      'help' => $this->t('The extension of the file.'),
+      'title' => t('Extension'),
+      'help' => t('The extension of the file.'),
       'real field' => 'filename',
       'field' => array(
         'entity_type' => 'file',
@@ -63,14 +63,14 @@ public function getViewsData() {
     $data['file_managed']['status']['field']['default_formatter_settings'] = [
       'format' => 'custom',
       'format_custom_false' => $this->t('Temporary'),
-      'format_custom_true' => $this->t('Permanent'),
+      'format_custom_true' => t('Permanent'),
     ];
     $data['file_managed']['status']['filter']['id'] = 'file_status';
 
-    $data['file_managed']['uid']['relationship']['title'] = $this->t('User who uploaded');
-    $data['file_managed']['uid']['relationship']['label'] = $this->t('User who uploaded');
+    $data['file_managed']['uid']['relationship']['title'] = t('User who uploaded');
+    $data['file_managed']['uid']['relationship']['label'] = t('User who uploaded');
 
-    $data['file_usage']['table']['group']  = $this->t('File Usage');
+    $data['file_usage']['table']['group']  = t('File Usage');
 
     // Provide field-type-things to several base tables; on the core files table
     // ("file_managed") so that we can create relationships from files to
@@ -119,15 +119,15 @@ public function getViewsData() {
 
     // Describes relationships between files and nodes.
     $data['file_usage']['file_to_node'] = array(
-      'title' => $this->t('Content'),
-      'help' => $this->t('Content that is associated with this file, usually because this file is in a field on the content.'),
+      'title' => t('Content'),
+      'help' => t('Content that is associated with this file, usually because this file is in a field on the content.'),
       // Only provide this field/relationship/etc.,
       // when the 'file_managed' base table is present.
       'skip base' => array('node_field_data', 'node_field_revision', 'users_field_data', 'comment_field_data', 'taxonomy_term_field_data'),
       'real field' => 'id',
       'relationship' => array(
-        'title' => $this->t('Content'),
-        'label' => $this->t('Content'),
+        'title' => t('Content'),
+        'label' => t('Content'),
         'base' => 'node_field_data',
         'base field' => 'nid',
         'relationship field' => 'id',
@@ -135,15 +135,15 @@ public function getViewsData() {
       ),
     );
     $data['file_usage']['node_to_file'] = array(
-      'title' => $this->t('File'),
-      'help' => $this->t('A file that is associated with this node, usually because it is in a field on the node.'),
+      'title' => t('File'),
+      'help' => t('A file that is associated with this node, usually because it is in a field on the node.'),
       // Only provide this field/relationship/etc.,
       // when the 'node' base table is present.
       'skip base' => array('file_managed', 'users_field_data', 'comment_field_data', 'taxonomy_term_field_data'),
       'real field' => 'fid',
       'relationship' => array(
-        'title' => $this->t('File'),
-        'label' => $this->t('File'),
+        'title' => t('File'),
+        'label' => t('File'),
         'base' => 'file_managed',
         'base field' => 'fid',
         'relationship field' => 'fid',
@@ -152,15 +152,15 @@ public function getViewsData() {
 
     // Describes relationships between files and users.
     $data['file_usage']['file_to_user'] = array(
-      'title' => $this->t('User'),
-      'help' => $this->t('A user that is associated with this file, usually because this file is in a field on the user.'),
+      'title' => t('User'),
+      'help' => t('A user that is associated with this file, usually because this file is in a field on the user.'),
       // Only provide this field/relationship/etc.,
       // when the 'file_managed' base table is present.
       'skip base' => array('node_field_data', 'node_field_revision', 'users_field_data', 'comment_field_data', 'taxonomy_term_field_data'),
       'real field' => 'id',
       'relationship' => array(
-        'title' => $this->t('User'),
-        'label' => $this->t('User'),
+        'title' => t('User'),
+        'label' => t('User'),
         'base' => 'users',
         'base field' => 'uid',
         'relationship field' => 'id',
@@ -168,15 +168,15 @@ public function getViewsData() {
       ),
     );
     $data['file_usage']['user_to_file'] = array(
-      'title' => $this->t('File'),
-      'help' => $this->t('A file that is associated with this user, usually because it is in a field on the user.'),
+      'title' => t('File'),
+      'help' => t('A file that is associated with this user, usually because it is in a field on the user.'),
       // Only provide this field/relationship/etc.,
       // when the 'users' base table is present.
       'skip base' => array('file_managed', 'node_field_data', 'node_field_revision', 'comment_field_data', 'taxonomy_term_field_data'),
       'real field' => 'fid',
       'relationship' => array(
-        'title' => $this->t('File'),
-        'label' => $this->t('File'),
+        'title' => t('File'),
+        'label' => t('File'),
         'base' => 'file_managed',
         'base field' => 'fid',
         'relationship field' => 'fid',
@@ -185,15 +185,15 @@ public function getViewsData() {
 
     // Describes relationships between files and comments.
     $data['file_usage']['file_to_comment'] = array(
-      'title' => $this->t('Comment'),
-      'help' => $this->t('A comment that is associated with this file, usually because this file is in a field on the comment.'),
+      'title' => t('Comment'),
+      'help' => t('A comment that is associated with this file, usually because this file is in a field on the comment.'),
       // Only provide this field/relationship/etc.,
       // when the 'file_managed' base table is present.
       'skip base' => array('node_field_data', 'node_field_revision', 'users_field_data', 'comment_field_data', 'taxonomy_term_field_data'),
       'real field' => 'id',
       'relationship' => array(
-        'title' => $this->t('Comment'),
-        'label' => $this->t('Comment'),
+        'title' => t('Comment'),
+        'label' => t('Comment'),
         'base' => 'comment_field_data',
         'base field' => 'cid',
         'relationship field' => 'id',
@@ -201,15 +201,15 @@ public function getViewsData() {
       ),
     );
     $data['file_usage']['comment_to_file'] = array(
-      'title' => $this->t('File'),
-      'help' => $this->t('A file that is associated with this comment, usually because it is in a field on the comment.'),
+      'title' => t('File'),
+      'help' => t('A file that is associated with this comment, usually because it is in a field on the comment.'),
       // Only provide this field/relationship/etc.,
       // when the 'comment' base table is present.
       'skip base' => array('file_managed', 'node_field_data', 'node_field_revision', 'users_field_data', 'taxonomy_term_field_data'),
       'real field' => 'fid',
       'relationship' => array(
-        'title' => $this->t('File'),
-        'label' => $this->t('File'),
+        'title' => t('File'),
+        'label' => t('File'),
         'base' => 'file_managed',
         'base field' => 'fid',
         'relationship field' => 'fid',
@@ -218,15 +218,15 @@ public function getViewsData() {
 
     // Describes relationships between files and taxonomy_terms.
     $data['file_usage']['file_to_taxonomy_term'] = array(
-      'title' => $this->t('Taxonomy Term'),
-      'help' => $this->t('A taxonomy term that is associated with this file, usually because this file is in a field on the taxonomy term.'),
+      'title' => t('Taxonomy Term'),
+      'help' => t('A taxonomy term that is associated with this file, usually because this file is in a field on the taxonomy term.'),
       // Only provide this field/relationship/etc.,
       // when the 'file_managed' base table is present.
       'skip base' => array('node_field_data', 'node_field_revision', 'users_field_data', 'comment_field_data', 'taxonomy_term_field_data'),
       'real field' => 'id',
       'relationship' => array(
-        'title' => $this->t('Taxonomy Term'),
-        'label' => $this->t('Taxonomy Term'),
+        'title' => t('Taxonomy Term'),
+        'label' => t('Taxonomy Term'),
         'base' => 'taxonomy_term_data',
         'base field' => 'tid',
         'relationship field' => 'id',
@@ -234,15 +234,15 @@ public function getViewsData() {
       ),
     );
     $data['file_usage']['taxonomy_term_to_file'] = array(
-      'title' => $this->t('File'),
-      'help' => $this->t('A file that is associated with this taxonomy term, usually because it is in a field on the taxonomy term.'),
+      'title' => t('File'),
+      'help' => t('A file that is associated with this taxonomy term, usually because it is in a field on the taxonomy term.'),
       // Only provide this field/relationship/etc.,
       // when the 'taxonomy_term_data' base table is present.
       'skip base' => array('file_managed', 'node_field_data', 'node_field_revision', 'users_field_data', 'comment_field_data'),
       'real field' => 'fid',
       'relationship' => array(
-        'title' => $this->t('File'),
-        'label' => $this->t('File'),
+        'title' => t('File'),
+        'label' => t('File'),
         'base' => 'file_managed',
         'base field' => 'fid',
         'relationship field' => 'fid',
@@ -253,8 +253,8 @@ public function getViewsData() {
     // we've declared joins to, because there is no 'skip base' property on these
     // fields.
     $data['file_usage']['module'] = array(
-      'title' => $this->t('Module'),
-      'help' => $this->t('The module managing this file relationship.'),
+      'title' => t('Module'),
+      'help' => t('The module managing this file relationship.'),
       'field' => array(
         'id' => 'standard',
        ),
@@ -269,8 +269,8 @@ public function getViewsData() {
       ),
     );
     $data['file_usage']['type'] = array(
-      'title' => $this->t('Entity type'),
-      'help' => $this->t('The type of entity that is related to the file.'),
+      'title' => t('Entity type'),
+      'help' => t('The type of entity that is related to the file.'),
       'field' => array(
         'id' => 'standard',
        ),
@@ -285,8 +285,8 @@ public function getViewsData() {
       ),
     );
     $data['file_usage']['id'] = array(
-      'title' => $this->t('Entity ID'),
-      'help' => $this->t('The ID of the entity that is related to the file.'),
+      'title' => t('Entity ID'),
+      'help' => t('The ID of the entity that is related to the file.'),
       'field' => array(
         'id' => 'numeric',
       ),
@@ -301,8 +301,8 @@ public function getViewsData() {
       ),
     );
     $data['file_usage']['count'] = array(
-      'title' => $this->t('Use count'),
-      'help' => $this->t('The number of times the file is used by this entity.'),
+      'title' => t('Use count'),
+      'help' => t('The number of times the file is used by this entity.'),
       'field' => array(
         'id' => 'numeric',
        ),
@@ -314,8 +314,8 @@ public function getViewsData() {
       ),
     );
     $data['file_usage']['entity_label'] = array(
-      'title' => $this->t('Entity label'),
-      'help' => $this->t('The label of the entity that is related to the file.'),
+      'title' => t('Entity label'),
+      'help' => t('The label of the entity that is related to the file.'),
       'real field' => 'id',
       'field' => array(
         'id' => 'entity_label',
diff --git a/core/modules/file/src/Plugin/Field/FieldFormatter/RSSEnclosureFormatter.php b/core/modules/file/src/Plugin/Field/FieldFormatter/RSSEnclosureFormatter.php
index 2f0a65f..cce0dc5 100644
--- a/core/modules/file/src/Plugin/Field/FieldFormatter/RSSEnclosureFormatter.php
+++ b/core/modules/file/src/Plugin/Field/FieldFormatter/RSSEnclosureFormatter.php
@@ -28,7 +28,7 @@ class RSSEnclosureFormatter extends FileFormatterBase {
   public function viewElements(FieldItemListInterface $items, $langcode) {
     $entity = $items->getEntity();
     // Add the first file as an enclosure to the RSS item. RSS allows only one
-    // enclosure per item. See: http://wikipedia.org/wiki/RSS_enclosure
+    // enclosure per item. See: http://en.wikipedia.org/wiki/RSS_enclosure
     foreach ($this->getEntitiesToView($items, $langcode) as $delta => $file) {
       $entity->rss_elements[] = array(
         'key' => 'enclosure',
diff --git a/core/modules/file/src/Plugin/Field/FieldWidget/FileWidget.php b/core/modules/file/src/Plugin/Field/FieldWidget/FileWidget.php
index 9b120c6..887e377 100644
--- a/core/modules/file/src/Plugin/Field/FieldWidget/FileWidget.php
+++ b/core/modules/file/src/Plugin/Field/FieldWidget/FileWidget.php
@@ -119,7 +119,7 @@ protected function formMultipleElements(FieldItemListInterface $items, array &$f
     }
 
     $title = $this->fieldDefinition->getLabel();
-    $description = $this->getFilteredDescription();
+    $description = FieldFilteredMarkup::create($this->fieldDefinition->getDescription());
 
     $elements = array();
 
diff --git a/core/modules/file/src/Tests/DownloadTest.php b/core/modules/file/src/Tests/DownloadTest.php
index 20289e7..997eb56 100644
--- a/core/modules/file/src/Tests/DownloadTest.php
+++ b/core/modules/file/src/Tests/DownloadTest.php
@@ -95,7 +95,7 @@ function testFileCreateUrl() {
 
     // Tilde (~) is excluded from this test because it is encoded by
     // rawurlencode() in PHP 5.2 but not in PHP 5.3, as per RFC 3986.
-    // @see http://php.net/manual/function.rawurlencode.php#86506
+    // @see http://www.php.net/manual/function.rawurlencode.php#86506
     $basename = " -._!$'\"()*@[]?&+%#,;=:\n\x00" . // "Special" ASCII characters.
       "%23%25%26%2B%2F%3F" . // Characters that look like a percent-escaped string.
       "éøïвβ中國書۞"; // Characters from various non-ASCII alphabets.
diff --git a/core/modules/file/src/Tests/FileFieldTestBase.php b/core/modules/file/src/Tests/FileFieldTestBase.php
index e9cdc24..5874cf5 100644
--- a/core/modules/file/src/Tests/FileFieldTestBase.php
+++ b/core/modules/file/src/Tests/FileFieldTestBase.php
@@ -50,7 +50,7 @@ function getTestFile($type_name, $size = NULL) {
     // \Drupal\file\Entity\File::load().
     $file->filesize = filesize($file->uri);
 
-    return File::create((array) $file);
+    return entity_create('file', (array) $file);
   }
 
   /**
@@ -77,7 +77,7 @@ function getLastFileId() {
    *   A list of widget settings that will be added to the widget defaults.
    */
   function createFileField($name, $entity_type, $bundle, $storage_settings = array(), $field_settings = array(), $widget_settings = array()) {
-    $field_storage = FieldStorageConfig::create(array(
+    $field_storage = entity_create('field_storage_config', array(
       'entity_type' => $entity_type,
       'field_name' => $name,
       'type' => 'file',
@@ -113,7 +113,7 @@ function attachFileField($name, $entity_type, $bundle, $field_settings = array()
       'required' => !empty($field_settings['required']),
       'settings' => $field_settings,
     );
-    FieldConfig::create($field)->save();
+    entity_create('field_config', $field)->save();
 
     entity_get_form_display($entity_type, $bundle, 'default')
       ->setComponent($name, array(
diff --git a/core/modules/file/src/Tests/FileItemTest.php b/core/modules/file/src/Tests/FileItemTest.php
index e94f4ee..9337ca0 100644
--- a/core/modules/file/src/Tests/FileItemTest.php
+++ b/core/modules/file/src/Tests/FileItemTest.php
@@ -12,8 +12,6 @@
 use Drupal\Core\Field\FieldStorageDefinitionInterface;
 use Drupal\field\Entity\FieldConfig;
 use Drupal\field\Tests\FieldUnitTestBase;
-use Drupal\field\Entity\FieldStorageConfig;
-use Drupal\file\Entity\File;
 
 /**
  * Tests using entity fields of the file field type.
@@ -49,23 +47,23 @@ protected function setUp() {
     $this->installEntitySchema('file');
     $this->installSchema('file', array('file_usage'));
 
-    FieldStorageConfig::create(array(
+    entity_create('field_storage_config', array(
       'field_name' => 'file_test',
       'entity_type' => 'entity_test',
       'type' => 'file',
       'cardinality' => FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED,
     ))->save();
     $this->directory = $this->getRandomGenerator()->name(8);
-    FieldConfig::create([
+    entity_create('field_config', array(
       'entity_type' => 'entity_test',
       'field_name' => 'file_test',
       'bundle' => 'entity_test',
       'settings' => array('file_directory' => $this->directory),
-    ])->save();
+    ))->save();
     file_put_contents('public://example.txt', $this->randomMachineName());
-    $this->file = File::create([
+    $this->file = entity_create('file', array(
       'uri' => 'public://example.txt',
-    ]);
+    ));
     $this->file->save();
   }
 
@@ -100,9 +98,9 @@ public function testFileItem() {
 
     // Make sure the computed files reflects updates to the file.
     file_put_contents('public://example-2.txt', $this->randomMachineName());
-    $file2 = File::create([
+    $file2 = entity_create('file', array(
       'uri' => 'public://example-2.txt',
-    ]);
+    ));
     $file2->save();
 
     $entity->file_test->target_id = $file2->id();
@@ -125,9 +123,9 @@ public function testFileItem() {
     // Make sure the computed files reflects updates to the file.
     file_put_contents('public://example-3.txt', $this->randomMachineName());
     // Test unsaved file entity.
-    $file3 = File::create([
+    $file3 = entity_create('file', array(
       'uri' => 'public://example-3.txt',
-    ]);
+    ));
     $display = entity_get_display('entity_test', 'entity_test', 'default');
     $display->setComponent('file_test', [
       'label' => 'above',
diff --git a/core/modules/file/src/Tests/FileListingTest.php b/core/modules/file/src/Tests/FileListingTest.php
index 47612ca..72b2378 100644
--- a/core/modules/file/src/Tests/FileListingTest.php
+++ b/core/modules/file/src/Tests/FileListingTest.php
@@ -157,7 +157,7 @@ function testFileListingPages() {
    */
   protected function createFile() {
     // Create a new file entity.
-    $file = File::create([
+    $file = entity_create('file', array(
       'uid' => 1,
       'filename' => 'druplicon.txt',
       'uri' => 'public://druplicon.txt',
@@ -165,7 +165,7 @@ protected function createFile() {
       'created' => 1,
       'changed' => 1,
       'status' => FILE_STATUS_PERMANENT,
-    ]);
+    ));
     file_put_contents($file->getFileUri(), 'hello world');
 
     // Save it, inserting a new record.
diff --git a/core/modules/file/src/Tests/FileManagedTestBase.php b/core/modules/file/src/Tests/FileManagedTestBase.php
index 04b33aa..ebaaaea 100644
--- a/core/modules/file/src/Tests/FileManagedTestBase.php
+++ b/core/modules/file/src/Tests/FileManagedTestBase.php
@@ -7,7 +7,6 @@
 
 namespace Drupal\file\Tests;
 
-use Drupal\file\Entity\File;
 use Drupal\file\FileInterface;
 use Drupal\simpletest\WebTestBase;
 
@@ -153,10 +152,10 @@ function assertSameFile(FileInterface $file1, FileInterface $file2) {
   function createFile($filepath = NULL, $contents = NULL, $scheme = NULL) {
     // Don't count hook invocations caused by creating the file.
     \Drupal::state()->set('file_test.count_hook_invocations', FALSE);
-    $file = File::create([
+    $file = entity_create('file', array(
       'uri' => $this->createUri($filepath, $contents, $scheme),
       'uid' => 1,
-    ]);
+    ));
     $file->save();
     // Write the record directly rather than using the API so we don't invoke
     // the hooks.
diff --git a/core/modules/file/src/Tests/FileManagedUnitTestBase.php b/core/modules/file/src/Tests/FileManagedUnitTestBase.php
index 62ee4c2..c9f0c6b 100644
--- a/core/modules/file/src/Tests/FileManagedUnitTestBase.php
+++ b/core/modules/file/src/Tests/FileManagedUnitTestBase.php
@@ -7,10 +7,8 @@
 
 namespace Drupal\file\Tests;
 
-use Drupal\file\Entity\File;
 use Drupal\file\FileInterface;
 use Drupal\simpletest\KernelTestBase;
-use Drupal\user\Entity\User;
 
 /**
  * Base class for file unit tests that use the file_test module to test uploads and
@@ -37,7 +35,7 @@ protected function setUp() {
 
     // Make sure that a user with uid 1 exists, self::createFile() relies on
     // it.
-    $user = User::create(['uid' => 1, 'name' => $this->randomMachineName()]);
+    $user = entity_create('user', array('uid' => 1, 'name' => $this->randomMachineName()));
     $user->enforceIsNew();
     $user->save();
     \Drupal::currentUser()->setAccount($user);
@@ -166,10 +164,10 @@ function assertSameFile(FileInterface $file1, FileInterface $file2) {
   function createFile($filepath = NULL, $contents = NULL, $scheme = NULL) {
     // Don't count hook invocations caused by creating the file.
     \Drupal::state()->set('file_test.count_hook_invocations', FALSE);
-    $file = File::create([
+    $file = entity_create('file', array(
       'uri' => $this->createUri($filepath, $contents, $scheme),
       'uid' => 1,
-    ]);
+    ));
     $file->save();
     // Write the record directly rather than using the API so we don't invoke
     // the hooks.
diff --git a/core/modules/file/src/Tests/SaveUploadTest.php b/core/modules/file/src/Tests/SaveUploadTest.php
index 9b6a090..7c3bd4c 100644
--- a/core/modules/file/src/Tests/SaveUploadTest.php
+++ b/core/modules/file/src/Tests/SaveUploadTest.php
@@ -52,7 +52,7 @@ protected function setUp() {
     $this->drupalLogin($account);
 
     $image_files = $this->drupalGetTestFiles('image');
-    $this->image = File::create((array) current($image_files));
+    $this->image = entity_create('file', (array) current($image_files));
 
     list(, $this->imageExtension) = explode('.', $this->image->getFilename());
     $this->assertTrue(is_file($this->image->getFileUri()), "The image file we're going to upload exists.");
diff --git a/core/modules/file/src/Tests/SpaceUsedTest.php b/core/modules/file/src/Tests/SpaceUsedTest.php
index 3a4e8c3..56ed974 100644
--- a/core/modules/file/src/Tests/SpaceUsedTest.php
+++ b/core/modules/file/src/Tests/SpaceUsedTest.php
@@ -6,7 +6,6 @@
  */
 
 namespace Drupal\file\Tests;
-use Drupal\file\Entity\File;
 
 /**
  * Tests the spaceUsed() function.
@@ -45,11 +44,11 @@ protected function setUp() {
    */
   protected function createFileWithSize($uri, $size, $uid, $status = FILE_STATUS_PERMANENT) {
     file_put_contents($uri, $this->randomMachineName($size));
-    $file = File::create([
+    $file = entity_create('file', array(
       'uri' => $uri,
       'uid' => $uid,
       'status' => $status,
-    ]);
+    ));
     $file->save();
     return $file;
   }
diff --git a/core/modules/file/src/Tests/ValidatorTest.php b/core/modules/file/src/Tests/ValidatorTest.php
index be3e098..8ad5939 100644
--- a/core/modules/file/src/Tests/ValidatorTest.php
+++ b/core/modules/file/src/Tests/ValidatorTest.php
@@ -6,7 +6,6 @@
  */
 
 namespace Drupal\file\Tests;
-use Drupal\file\Entity\File;
 
 /**
  * Tests the functions used to validate uploaded files.
@@ -32,11 +31,11 @@ class ValidatorTest extends FileManagedUnitTestBase {
   protected function setUp() {
     parent::setUp();
 
-    $this->image = File::create();
+    $this->image = entity_create('file');
     $this->image->setFileUri('core/misc/druplicon.png');
     $this->image->setFilename(drupal_basename($this->image->getFileUri()));
 
-    $this->nonImage = File::create();
+    $this->nonImage = entity_create('file');
     $this->nonImage->setFileUri('core/assets/vendor/jquery/jquery.min.js');
     $this->nonImage->setFilename(drupal_basename($this->nonImage->getFileUri()));
   }
@@ -45,7 +44,7 @@ protected function setUp() {
    * Test the file_validate_extensions() function.
    */
   function testFileValidateExtensions() {
-    $file = File::create(['filename' => 'asdf.txt']);
+    $file = entity_create('file', array('filename' => 'asdf.txt'));
     $errors = file_validate_extensions($file, 'asdf txt pork');
     $this->assertEqual(count($errors), 0, 'Valid extension accepted.', 'File');
 
@@ -121,7 +120,7 @@ function testFileValidateImageResolution() {
    */
   function testFileValidateNameLength() {
     // Create a new file entity.
-    $file = File::create();
+    $file = entity_create('file');
 
     // Add a filename with an allowed length and test it.
     $file->setFilename(str_repeat('x', 240));
@@ -146,7 +145,7 @@ function testFileValidateNameLength() {
    */
   function testFileValidateSize() {
     // Create a file with a size of 1000 bytes, and quotas of only 1 byte.
-    $file = File::create(['filesize' => 1000]);
+    $file = entity_create('file', array('filesize' => 1000));
     $errors = file_validate_size($file, 0, 0);
     $this->assertEqual(count($errors), 0, 'No limits means no errors.', 'File');
     $errors = file_validate_size($file, 1, 0);
diff --git a/core/modules/file/src/Tests/Views/RelationshipUserFileDataTest.php b/core/modules/file/src/Tests/Views/RelationshipUserFileDataTest.php
index c1f1e2c..8cdc903 100644
--- a/core/modules/file/src/Tests/Views/RelationshipUserFileDataTest.php
+++ b/core/modules/file/src/Tests/Views/RelationshipUserFileDataTest.php
@@ -7,12 +7,9 @@
 
 namespace Drupal\file\Tests\Views;
 
-use Drupal\field\Entity\FieldConfig;
-use Drupal\file\Entity\File;
 use Drupal\views\Tests\ViewTestBase;
 use Drupal\views\Views;
 use Drupal\views\Tests\ViewTestData;
-use Drupal\field\Entity\FieldStorageConfig;
 
 /**
  * Tests file on user relationship handler.
@@ -39,20 +36,20 @@ protected function setUp() {
     parent::setUp();
 
     // Create the user profile field and instance.
-    FieldStorageConfig::create(array(
+    entity_create('field_storage_config', array(
       'entity_type' => 'user',
       'field_name' => 'user_file',
       'type' => 'file',
       'translatable' => '0',
     ))->save();
-    FieldConfig::create([
+    entity_create('field_config', array(
       'label' => 'User File',
       'description' => '',
       'field_name' => 'user_file',
       'entity_type' => 'user',
       'bundle' => 'user',
       'required' => 0,
-    ])->save();
+    ))->save();
 
     ViewTestData::createTestViews(get_class($this), array('file_test_views'));
   }
@@ -61,7 +58,7 @@ protected function setUp() {
    * Tests using the views file relationship.
    */
   public function testViewsHandlerRelationshipUserFileData() {
-    $file = File::create([
+    $file = entity_create('file', array(
       'fid' => 2,
       'uid' => 2,
       'filename' => 'image-test.jpg',
@@ -70,7 +67,7 @@ public function testViewsHandlerRelationshipUserFileData() {
       'created' => 1,
       'changed' => 1,
       'status' => FILE_STATUS_PERMANENT,
-    ]);
+    ));
     $file->enforceIsNew();
     file_put_contents($file->getFileUri(), file_get_contents('core/modules/simpletest/files/image-1.png'));
     $file->save();
diff --git a/core/modules/filter/src/Plugin/migrate/process/d6/FilterFormatPermission.php b/core/modules/filter/src/Plugin/migrate/process/d6/FilterFormatPermission.php
index 3861994..9ae5a71 100644
--- a/core/modules/filter/src/Plugin/migrate/process/d6/FilterFormatPermission.php
+++ b/core/modules/filter/src/Plugin/migrate/process/d6/FilterFormatPermission.php
@@ -5,6 +5,7 @@
  * Contains \Drupal\filter\Plugin\migrate\process\d6\FilterFormatPermission.
  */
 
+
 namespace Drupal\filter\Plugin\migrate\process\d6;
 
 use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
diff --git a/core/modules/filter/src/Tests/FilterAPITest.php b/core/modules/filter/src/Tests/FilterAPITest.php
index a6a3d56..5fd9999 100644
--- a/core/modules/filter/src/Tests/FilterAPITest.php
+++ b/core/modules/filter/src/Tests/FilterAPITest.php
@@ -11,8 +11,7 @@
 use Drupal\Core\Session\AnonymousUserSession;
 use Drupal\Core\TypedData\OptionsProviderInterface;
 use Drupal\Core\TypedData\DataDefinition;
-use Drupal\filter\Entity\FilterFormat;
-use Drupal\filter\Plugin\DataType\FilterFormat as FilterFormatDataType;
+use Drupal\filter\Plugin\DataType\FilterFormat;
 use Drupal\filter\Plugin\FilterInterface;
 use Drupal\system\Tests\Entity\EntityUnitTestBase;
 use Symfony\Component\Validator\ConstraintViolationListInterface;
@@ -37,7 +36,7 @@ protected function setUp() {
    */
   function testCheckMarkupFilterOrder() {
     // Create crazy HTML format.
-    $crazy_format = FilterFormat::create(array(
+    $crazy_format = entity_create('filter_format', array(
       'format' => 'crazy',
       'name' => 'Crazy',
       'weight' => 1,
@@ -139,7 +138,7 @@ function testFilterFormatAPI() {
     );
 
     // Test on stupid_filtered_html, where nothing is allowed.
-    $stupid_filtered_html_format = FilterFormat::create(array(
+    $stupid_filtered_html_format = entity_create('filter_format', array(
       'format' => 'stupid_filtered_html',
       'name' => 'Stupid Filtered HTML',
       'filters' => array(
@@ -165,7 +164,7 @@ function testFilterFormatAPI() {
 
     // Test on very_restricted_html, where there's two different filters of the
     // FilterInterface::TYPE_HTML_RESTRICTOR type, each restricting in different ways.
-    $very_restricted_html_format = FilterFormat::create(array(
+    $very_restricted_html_format = entity_create('filter_format', array(
       'format' => 'very_restricted_html',
       'name' => 'Very Restricted HTML',
       'filters' => array(
@@ -255,7 +254,7 @@ function testFilterFormatAPI() {
    * This test focuses solely on those advanced features.
    */
   function testProcessedTextElement() {
-    FilterFormat::create(array(
+    entity_create('filter_format', array(
       'format' => 'element_test',
       'name' => 'processed_text element test format',
       'filters' => array(
@@ -402,7 +401,7 @@ function testTypedDataAPI() {
    */
   public function testFilterFormatPreSave() {
     /** @var \Drupal\filter\FilterFormatInterface $crazy_format */
-    $crazy_format = FilterFormat::create(array(
+    $crazy_format = entity_create('filter_format', array(
       'format' => 'crazy',
       'name' => 'Crazy',
       'weight' => 1,
@@ -452,7 +451,7 @@ public function testFilterFormatPreSave() {
   public function assertFilterFormatViolation(ConstraintViolationListInterface $violations, $invalid_value) {
     $filter_format_violation_found = FALSE;
     foreach ($violations as $violation) {
-      if ($violation->getRoot() instanceof FilterFormatDataType && $violation->getInvalidValue() === $invalid_value) {
+      if ($violation->getRoot() instanceof FilterFormat && $violation->getInvalidValue() === $invalid_value) {
         $filter_format_violation_found = TRUE;
         break;
       }
diff --git a/core/modules/filter/src/Tests/FilterAdminTest.php b/core/modules/filter/src/Tests/FilterAdminTest.php
index 78dbfcb..0c61a9e 100644
--- a/core/modules/filter/src/Tests/FilterAdminTest.php
+++ b/core/modules/filter/src/Tests/FilterAdminTest.php
@@ -50,7 +50,7 @@ protected function setUp() {
     $this->drupalCreateContentType(array('type' => 'page', 'name' => 'Basic page'));
 
     // Set up the filter formats used by this test.
-    $basic_html_format = FilterFormat::create(array(
+    $basic_html_format = entity_create('filter_format', array(
       'format' => 'basic_html',
       'name' => 'Basic HTML',
       'filters' => array(
@@ -63,7 +63,7 @@ protected function setUp() {
       ),
     ));
     $basic_html_format->save();
-    $restricted_html_format = FilterFormat::create(array(
+    $restricted_html_format = entity_create('filter_format', array(
       'format' => 'restricted_html',
       'name' => 'Restricted HTML',
       'filters' => array(
@@ -89,7 +89,7 @@ protected function setUp() {
       ),
     ));
     $restricted_html_format->save();
-    $full_html_format = FilterFormat::create(array(
+    $full_html_format = entity_create('filter_format', array(
       'format' => 'full_html',
       'name' => 'Full HTML',
       'weight' => 1,
diff --git a/core/modules/filter/src/Tests/FilterCrudTest.php b/core/modules/filter/src/Tests/FilterCrudTest.php
index db0516b..00a25fc 100644
--- a/core/modules/filter/src/Tests/FilterCrudTest.php
+++ b/core/modules/filter/src/Tests/FilterCrudTest.php
@@ -29,15 +29,14 @@ class FilterCrudTest extends KernelTestBase {
    */
   function testTextFormatCrud() {
     // Add a text format with minimum data only.
-    $format = FilterFormat::create(array(
-      'format' => 'empty_format',
-      'name' => 'Empty format',
-    ));
+    $format = entity_create('filter_format');
+    $format->set('format', 'empty_format');
+    $format->set('name', 'Empty format');
     $format->save();
     $this->verifyTextFormat($format);
 
     // Add another text format specifying all possible properties.
-    $format = FilterFormat::create(array(
+    $format = entity_create('filter_format', array(
       'format' => 'custom_format',
       'name' => 'Custom format',
     ));
diff --git a/core/modules/filter/src/Tests/FilterDefaultConfigTest.php b/core/modules/filter/src/Tests/FilterDefaultConfigTest.php
index 55fdea3..daef17b 100644
--- a/core/modules/filter/src/Tests/FilterDefaultConfigTest.php
+++ b/core/modules/filter/src/Tests/FilterDefaultConfigTest.php
@@ -24,6 +24,7 @@ protected function setUp() {
 
     // Drupal\filter\FilterPermissions::permissions() builds an URL to output
     // a link in the description.
+    $this->installSchema('system', 'url_alias');
 
     $this->installEntitySchema('user');
 
diff --git a/core/modules/filter/src/Tests/FilterHtmlImageSecureTest.php b/core/modules/filter/src/Tests/FilterHtmlImageSecureTest.php
index aaa8c8b..9d96c5f 100644
--- a/core/modules/filter/src/Tests/FilterHtmlImageSecureTest.php
+++ b/core/modules/filter/src/Tests/FilterHtmlImageSecureTest.php
@@ -10,7 +10,6 @@
 use Drupal\comment\Tests\CommentTestTrait;
 use Drupal\Core\StreamWrapper\PublicStream;
 use Drupal\simpletest\WebTestBase;
-use Drupal\filter\Entity\FilterFormat;
 
 /**
  * Tests restriction of IMG tags in HTML input.
@@ -39,7 +38,7 @@ protected function setUp() {
     parent::setUp();
 
     // Setup Filtered HTML text format.
-    $filtered_html_format = FilterFormat::create(array(
+    $filtered_html_format = entity_create('filter_format', array(
       'format' => 'filtered_html',
       'name' => 'Filtered HTML',
       'filters' => array(
diff --git a/core/modules/filter/src/Tests/FilterSettingsTest.php b/core/modules/filter/src/Tests/FilterSettingsTest.php
index fdd3270..9b95336 100644
--- a/core/modules/filter/src/Tests/FilterSettingsTest.php
+++ b/core/modules/filter/src/Tests/FilterSettingsTest.php
@@ -8,7 +8,6 @@
 namespace Drupal\filter\Tests;
 
 use Drupal\simpletest\KernelTestBase;
-use Drupal\filter\Entity\FilterFormat;
 
 /**
  * Tests filter settings.
@@ -31,7 +30,7 @@ function testFilterDefaults() {
     $filter_info = $this->container->get('plugin.manager.filter')->getDefinitions();
 
     // Create text format using filter default settings.
-    $filter_defaults_format = FilterFormat::create(array(
+    $filter_defaults_format = entity_create('filter_format', array(
       'format' => 'filter_defaults',
       'name' => 'Filter defaults',
     ));
diff --git a/core/modules/filter/src/Tests/FilterUnitTest.php b/core/modules/filter/src/Tests/FilterUnitTest.php
index 2d5d005..d64c349 100644
--- a/core/modules/filter/src/Tests/FilterUnitTest.php
+++ b/core/modules/filter/src/Tests/FilterUnitTest.php
@@ -933,7 +933,7 @@ function testUrlFilterContent() {
         'filter_url_length' => 496,
       )
     ));
-    $path = __DIR__ . '/../../tests';
+    $path = drupal_get_path('module', 'filter') . '/tests';
 
     $input = file_get_contents($path . '/filter.url-input.txt');
     $expected = file_get_contents($path . '/filter.url-output.txt');
diff --git a/core/modules/forum/src/ForumIndexStorageInterface.php b/core/modules/forum/src/ForumIndexStorageInterface.php
index 1a4ce18..4d59fb3 100644
--- a/core/modules/forum/src/ForumIndexStorageInterface.php
+++ b/core/modules/forum/src/ForumIndexStorageInterface.php
@@ -3,7 +3,6 @@
  * @file
  * Contains \Drupal\forum\ForumIndexStorageInterface.
  */
-
 namespace Drupal\forum;
 
 use Drupal\node\NodeInterface;
diff --git a/core/modules/forum/src/Tests/ForumBlockTest.php b/core/modules/forum/src/Tests/ForumBlockTest.php
index c0003d9..f505bdf 100644
--- a/core/modules/forum/src/Tests/ForumBlockTest.php
+++ b/core/modules/forum/src/Tests/ForumBlockTest.php
@@ -9,7 +9,6 @@
 
 use Drupal\simpletest\WebTestBase;
 use Drupal\Core\Datetime\DrupalDateTime;
-use Drupal\comment\Entity\Comment;
 
 /**
  * Tests the forum blocks.
@@ -98,7 +97,7 @@ public function testActiveForumTopicsBlock() {
       // Get the node from the topic title.
       $node = $this->drupalGetNodeByTitle($topics[$index]);
       $date->modify('+1 minute');
-      $comment = Comment::create(array(
+      $comment = entity_create('comment', array(
         'entity_id' => $node->id(),
         'field_name' => 'comment_forum',
         'entity_type' => 'node',
diff --git a/core/modules/forum/src/Tests/ForumUninstallTest.php b/core/modules/forum/src/Tests/ForumUninstallTest.php
index c3f18d0..8eb1345 100644
--- a/core/modules/forum/src/Tests/ForumUninstallTest.php
+++ b/core/modules/forum/src/Tests/ForumUninstallTest.php
@@ -11,7 +11,6 @@
 use Drupal\field\Entity\FieldStorageConfig;
 use Drupal\node\Entity\NodeType;
 use Drupal\simpletest\WebTestBase;
-use Drupal\comment\Entity\Comment;
 
 /**
  * Tests forum module uninstallation.
@@ -55,7 +54,7 @@ public function testForumUninstallWithField() {
     ));
 
     // Create at least one comment against the forum node.
-    $comment = Comment::create(array(
+    $comment = entity_create('comment', array(
       'entity_id' => $node->nid->value,
       'entity_type' => 'node',
       'field_name' => 'comment_forum',
diff --git a/core/modules/hal/hal.module b/core/modules/hal/hal.module
index eaf06c1..90696d4 100644
--- a/core/modules/hal/hal.module
+++ b/core/modules/hal/hal.module
@@ -16,7 +16,7 @@ function hal_help($route_name, RouteMatchInterface $route_match) {
       $output = '';
       $output .= '<h3>' . t('About') . '</h3>';
       $output .= '<p>' . t('<a href=":hal_spec">Hypertext Application Language (HAL)</a> is a format that supports the linking required for hypermedia APIs.', array(':hal_spec' => 'http://stateless.co/hal_specification.html')) . '</p>';
-      $output .= '<p>' . t('Hypermedia APIs are a style of Web API that uses URIs to identify resources and the <a href="http://wikipedia.org/wiki/Link_relation">link relations</a> between them, enabling API consumers to follow links to discover API functionality.') . '</p>';
+      $output .= '<p>' . t('Hypermedia APIs are a style of Web API that uses URIs to identify resources and the <a href=":link_rel">link relations</a> between them, enabling API consumers to follow links to discover API functionality.', array(':link_rel' => 'http://en.wikipedia.org/wiki/Link_relation')) . '</p>';
       $output .= '<p>' . t('This module adds support for serializing entities (such as content items, taxonomy terms, etc.) to the JSON version of HAL. For more information, see the <a href=":hal_do">online documentation for the HAL module</a>.', array(':hal_do' => 'https://www.drupal.org/documentation/modules/hal')) . '</p>';
       return $output;
   }
diff --git a/core/modules/hal/src/Tests/EntityTest.php b/core/modules/hal/src/Tests/EntityTest.php
index f4a510f..6301fb0 100644
--- a/core/modules/hal/src/Tests/EntityTest.php
+++ b/core/modules/hal/src/Tests/EntityTest.php
@@ -8,9 +8,6 @@
 namespace Drupal\hal\Tests;
 
 use Drupal\comment\Tests\CommentTestTrait;
-use Drupal\comment\Entity\Comment;
-use Drupal\user\Entity\User;
-use Drupal\node\Entity\NodeType;
 
 /**
  * Tests that nodes and terms are correctly normalized and denormalized.
@@ -45,10 +42,10 @@ protected function setUp() {
    * Tests the normalization of nodes.
    */
   public function testNode() {
-    $node_type = NodeType::create(['type' => 'example_type']);
+    $node_type = entity_create('node_type', array('type' => 'example_type'));
     $node_type->save();
 
-    $user = User::create(['name' => $this->randomMachineName()]);
+    $user = entity_create('user', array('name' => $this->randomMachineName()));
     $user->save();
 
     // Add comment type.
@@ -100,7 +97,7 @@ public function testTerm() {
     $vocabulary = entity_create('taxonomy_vocabulary', array('vid' => 'example_vocabulary'));
     $vocabulary->save();
 
-    $account = User::create(['name' => $this->randomMachineName()]);
+    $account = entity_create('user', array('name' => $this->randomMachineName()));
     $account->save();
 
     // @todo Until https://www.drupal.org/node/2327935 is fixed, if no parent is
@@ -141,10 +138,10 @@ public function testTerm() {
    * Tests the normalization of comments.
    */
   public function testComment() {
-    $node_type = NodeType::create(['type' => 'example_type']);
+    $node_type = entity_create('node_type', array('type' => 'example_type'));
     $node_type->save();
 
-    $account = User::create(['name' => $this->randomMachineName()]);
+    $account = entity_create('user', array('name' => $this->randomMachineName()));
     $account->save();
 
     // Add comment type.
@@ -170,7 +167,7 @@ public function testComment() {
     ));
     $node->save();
 
-    $parent_comment = Comment::create(array(
+    $parent_comment = entity_create('comment', array(
       'uid' => $account->id(),
       'subject' => $this->randomMachineName(),
       'comment_body' => [
@@ -183,7 +180,7 @@ public function testComment() {
     ));
     $parent_comment->save();
 
-    $comment = Comment::create(array(
+    $comment = entity_create('comment', array(
       'uid' => $account->id(),
       'subject' => $this->randomMachineName(),
       'comment_body' => [
diff --git a/core/modules/hal/src/Tests/FileDenormalizeTest.php b/core/modules/hal/src/Tests/FileDenormalizeTest.php
index b2e6ab5..853b06d 100644
--- a/core/modules/hal/src/Tests/FileDenormalizeTest.php
+++ b/core/modules/hal/src/Tests/FileDenormalizeTest.php
@@ -36,7 +36,7 @@ public function testFileDenormalize() {
       'status' => FILE_STATUS_PERMANENT,
     );
     // Create a new file entity.
-    $file = File::create($file_params);
+    $file = entity_create('file', $file_params);
     file_put_contents($file->getFileUri(), 'hello world');
     $file->save();
 
diff --git a/core/modules/hal/src/Tests/FileNormalizeTest.php b/core/modules/hal/src/Tests/FileNormalizeTest.php
index 67406fb..64ffd07 100644
--- a/core/modules/hal/src/Tests/FileNormalizeTest.php
+++ b/core/modules/hal/src/Tests/FileNormalizeTest.php
@@ -8,7 +8,6 @@
 namespace Drupal\hal\Tests;
 
 use Drupal\Core\Cache\MemoryBackend;
-use Drupal\file\Entity\File;
 use Drupal\hal\Encoder\JsonEncoder;
 use Drupal\hal\Normalizer\FieldItemNormalizer;
 use Drupal\hal\Normalizer\FileEntityNormalizer;
@@ -66,7 +65,7 @@ public function testNormalize() {
       'status' => FILE_STATUS_PERMANENT,
     );
     // Create a new file entity.
-    $file = File::create($file_params);
+    $file = entity_create('file', $file_params);
     file_put_contents($file->getFileUri(), 'hello world');
     $file->save();
 
diff --git a/core/modules/hal/src/Tests/NormalizerTestBase.php b/core/modules/hal/src/Tests/NormalizerTestBase.php
index 0e14495..104a5e2 100644
--- a/core/modules/hal/src/Tests/NormalizerTestBase.php
+++ b/core/modules/hal/src/Tests/NormalizerTestBase.php
@@ -8,7 +8,6 @@
 namespace Drupal\hal\Tests;
 
 use Drupal\Core\Cache\MemoryBackend;
-use Drupal\field\Entity\FieldConfig;
 use Drupal\hal\Encoder\JsonEncoder;
 use Drupal\hal\Normalizer\ContentEntityNormalizer;
 use Drupal\hal\Normalizer\EntityReferenceItemNormalizer;
@@ -23,7 +22,6 @@
 use Drupal\serialization\EntityResolver\UuidResolver;
 use Drupal\simpletest\KernelTestBase;
 use Symfony\Component\Serializer\Serializer;
-use Drupal\field\Entity\FieldStorageConfig;
 
 /**
  * Test the HAL normalizer.
@@ -63,7 +61,7 @@
    */
   protected function setUp() {
     parent::setUp();
-    $this->installSchema('system', array('router'));
+    $this->installSchema('system', array('url_alias', 'router'));
     $this->installEntitySchema('user');
     $this->installEntitySchema('entity_test');
     // If the concrete test sub-class installs the Node or Comment modules,
@@ -95,33 +93,33 @@ protected function setUp() {
     ))->save();
 
     // Create the test text field.
-    FieldStorageConfig::create(array(
+    entity_create('field_storage_config', array(
       'field_name' => 'field_test_text',
       'entity_type' => 'entity_test',
       'type' => 'text',
     ))->save();
-    FieldConfig::create([
+    entity_create('field_config', array(
       'entity_type' => 'entity_test',
       'field_name' => 'field_test_text',
       'bundle' => 'entity_test',
       'translatable' => FALSE,
-    ])->save();
+    ))->save();
 
     // Create the test translatable field.
-    FieldStorageConfig::create(array(
+    entity_create('field_storage_config', array(
       'field_name' => 'field_test_translatable_text',
       'entity_type' => 'entity_test',
       'type' => 'text',
     ))->save();
-    FieldConfig::create([
+    entity_create('field_config', array(
       'entity_type' => 'entity_test',
       'field_name' => 'field_test_translatable_text',
       'bundle' => 'entity_test',
       'translatable' => TRUE,
-    ])->save();
+    ))->save();
 
     // Create the test entity reference field.
-    FieldStorageConfig::create(array(
+    entity_create('field_storage_config', array(
       'field_name' => 'field_test_entity_reference',
       'entity_type' => 'entity_test',
       'type' => 'entity_reference',
@@ -129,12 +127,12 @@ protected function setUp() {
         'target_type' => 'entity_test',
       ),
     ))->save();
-    FieldConfig::create([
+    entity_create('field_config', array(
       'entity_type' => 'entity_test',
       'field_name' => 'field_test_entity_reference',
       'bundle' => 'entity_test',
       'translatable' => TRUE,
-    ])->save();
+    ))->save();
 
     $entity_manager = \Drupal::entityManager();
     $link_manager = new LinkManager(new TypeLinkManager(new MemoryBackend('default'), \Drupal::moduleHandler(), \Drupal::service('config.factory'), \Drupal::service('request_stack')), new RelationLinkManager(new MemoryBackend('default'), $entity_manager, \Drupal::moduleHandler(), \Drupal::service('config.factory'), \Drupal::service('request_stack')));
diff --git a/core/modules/help/help.api.php b/core/modules/help/help.api.php
index 09b2e0f..60c6867 100644
--- a/core/modules/help/help.api.php
+++ b/core/modules/help/help.api.php
@@ -40,9 +40,8 @@
  *   The current route match. This can be used to generate different help
  *   output for different pages that share the same route.
  *
- * @return string|array
- *   A render array, localized string, or object that can be rendered into
- *   a string, containing the help text.
+ * @return string
+ *   A localized string containing the help text.
  */
 function hook_help($route_name, \Drupal\Core\Routing\RouteMatchInterface $route_match) {
   switch ($route_name) {
diff --git a/core/modules/help/help.module b/core/modules/help/help.module
index 9a7dc07..0aadd5b 100644
--- a/core/modules/help/help.module
+++ b/core/modules/help/help.module
@@ -26,7 +26,7 @@ function help_help($route_name, RouteMatchInterface $route_match) {
       }
       $output .= '</ol>';
       $output .= '<p>' . t('For more information, refer to the subjects listed in the Help Topics section or to the <a href=":docs">online documentation</a> and <a href=":support">support</a> pages at <a href=":drupal">drupal.org</a>.', array(':docs' => 'https://www.drupal.org/documentation', ':support' => 'https://www.drupal.org/support', ':drupal' => 'https://www.drupal.org')) . '</p>';
-      return ['#markup' => $output];
+      return $output;
 
     case 'help.page.help':
       $output = '';
@@ -39,7 +39,7 @@ function help_help($route_name, RouteMatchInterface $route_match) {
       $output .= '<dt>' . t('Providing page-specific help') . '</dt>';
       $output .= '<dd>' . t('Page-specific help text provided by modules is displayed in the Help block. This block can be placed and configured on the <a href=":blocks">Block layout page</a>.', array(':blocks' => (\Drupal::moduleHandler()->moduleExists('block')) ? \Drupal::url('block.admin_display') : '#')) . '</dd>';
       $output .= '</dl>';
-      return ['#markup' => $output];
+      return $output;
   }
 }
 
diff --git a/core/modules/help/src/Controller/HelpController.php b/core/modules/help/src/Controller/HelpController.php
index 4758aa0..dcb50bd 100644
--- a/core/modules/help/src/Controller/HelpController.php
+++ b/core/modules/help/src/Controller/HelpController.php
@@ -116,20 +116,12 @@ public function helpPage($name) {
       $module_name =  $this->moduleHandler()->getName($name);
       $build['#title'] = $module_name;
 
-      $info = system_get_info('module', $name);
-      if ($info['package'] === 'Core (Experimental)') {
-        drupal_set_message($this->t('This module is experimental. <a href=":url">Experimental modules</a> are provided for testing purposes only. Use at your own risk.', [':url' => 'https://www.drupal.org/core/experimental']), 'warning');
-      }
-
       $temp = $this->moduleHandler()->invoke($name, 'help', array("help.page.$name", $this->routeMatch));
       if (empty($temp)) {
-        $build['top'] = ['#markup' => $this->t('No help is available for module %module.', array('%module' => $module_name))];
+        $build['top']['#markup'] = $this->t('No help is available for module %module.', array('%module' => $module_name));
       }
       else {
-        if (!is_array($temp)) {
-          $temp = ['#markup' => $temp];
-        }
-        $build['top'] = $temp;
+        $build['top']['#markup'] = $temp;
       }
 
       // Only print list of administration pages if the module in question has
diff --git a/core/modules/help/src/Plugin/Block/HelpBlock.php b/core/modules/help/src/Plugin/Block/HelpBlock.php
index 829407a..af71928 100644
--- a/core/modules/help/src/Plugin/Block/HelpBlock.php
+++ b/core/modules/help/src/Plugin/Block/HelpBlock.php
@@ -90,8 +90,8 @@ public static function create(ContainerInterface $container, array $configuratio
    * @param \Symfony\Component\HttpFoundation\Request $request
    *   The current request.
    *
-   * @return array|string
-   *   Render array or string containing the help of the matched route item.
+   * @return string
+   *   Help text of the matched route item as HTML.
    */
   protected function getActiveHelp(Request $request) {
     // Do not show on a 403 or 404 page.
@@ -100,15 +100,7 @@ protected function getActiveHelp(Request $request) {
     }
 
     $help = $this->moduleHandler->invokeAll('help', array($this->routeMatch->getRouteName(), $this->routeMatch));
-    $build = [];
-    foreach ($help as $item) {
-      if (!is_array($item)) {
-        $item = ['#markup' => $item];
-      }
-      $build[] = $item;
-    }
-
-    return $build;
+    return $help ? implode("\n", $help) : '';
   }
 
   /**
@@ -119,11 +111,10 @@ public function build() {
     if (!$help) {
       return [];
     }
-    elseif (!is_array($help)) {
-      return ['#markup' => $help];
-    }
     else {
-      return $help;
+      return [
+        '#children' => $help,
+      ];
     }
   }
 
@@ -131,7 +122,9 @@ public function build() {
    * {@inheritdoc}
    */
   public function getCacheContexts() {
-    return Cache::mergeContexts(parent::getCacheContexts(), ['route']);
+    // The "Help" block must be cached per URL: help is defined for a
+    // given path, and does not come with any access restrictions.
+    return Cache::mergeContexts(parent::getCacheContexts(), ['url']);
   }
 
 }
diff --git a/core/modules/help/src/Tests/ExperimentalHelpTest.php b/core/modules/help/src/Tests/ExperimentalHelpTest.php
deleted file mode 100644
index 169469f..0000000
--- a/core/modules/help/src/Tests/ExperimentalHelpTest.php
+++ /dev/null
@@ -1,61 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\help\Tests\ExperimentalHelpTest.
- */
-
-namespace Drupal\help\Tests;
-
-use Drupal\simpletest\WebTestBase;
-
-/**
- * Verifies help for experimental modules.
- *
- * @group help
- */
-class ExperimentalHelpTest extends WebTestBase {
-
-  /**
-   * Modules to enable.
-   *
-   * The experimental_module_test module implements hook_help() and is in the
-   * Core (Experimental) package.
-   *
-   * @var array
-   */
-  public static $modules = array('help', 'experimental_module_test', 'help_page_test');
-
-  /**
-   * The admin user.
-   *
-   * @var \Drupal\user\UserInterface
-   */
-  protected $adminUser;
-
-  /**
-   * {@inheritoc}
-   */
-  protected function setUp() {
-    parent::setUp();
-    $this->adminUser = $this->drupalCreateUser(['access administration pages']);
-  }
-
-  /**
-   * Verifies that a warning message is displayed for experimental modules.
-   */
-  public function testExperimentalHelp() {
-    $this->drupalLogin($this->adminUser);
-    $this->drupalGet('admin/help/experimental_module_test');
-    $this->assertText('This module is experimental.');
-
-    // Regular modules should not display the message.
-    $this->drupalGet('admin/help/help_page_test');
-    $this->assertNoText('This module is experimental.');
-
-    // Ensure the actual help page is displayed to avoid a false positive.
-    $this->assertResponse(200);
-    $this->assertText('online documentation for the Help Page Test module');
-  }
-
-}
diff --git a/core/modules/help/tests/modules/help_page_test/help_page_test.info.yml b/core/modules/help/tests/modules/help_page_test/help_page_test.info.yml
deleted file mode 100644
index 7de2a0d..0000000
--- a/core/modules/help/tests/modules/help_page_test/help_page_test.info.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-name: 'Help Page Test'
-type: module
-description: 'Module to test the help page.'
-package: Testing
-version: VERSION
-core: 8.x
-hidden: true
diff --git a/core/modules/help/tests/modules/help_page_test/help_page_test.module b/core/modules/help/tests/modules/help_page_test/help_page_test.module
deleted file mode 100644
index 68639a8..0000000
--- a/core/modules/help/tests/modules/help_page_test/help_page_test.module
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-
-/**
- * @file
- * Help Page Test module to test the help page.
- */
-
-use \Drupal\Core\Routing\RouteMatchInterface;
-
-/**
- * Implements hook_help().
- */
-function help_page_test_help($route_name, RouteMatchInterface $route_match) {
-
-  switch ($route_name) {
-    case 'help.page.help_page_test':
-      // Make the help text conform to core standards. See
-      // \Drupal\system\Tests\Module\InstallUninstallTest::assertHelp().
-      return t('Read the <a href=":url">online documentation for the Help Page Test module</a>.', [':url' => 'http://www.example.com']);
-  }
-
-}
diff --git a/core/modules/history/history.install b/core/modules/history/history.install
index ede5255..dcfd871 100644
--- a/core/modules/history/history.install
+++ b/core/modules/history/history.install
@@ -5,8 +5,6 @@
  * Installation functions for History module.
  */
 
-use Drupal\Core\Database\Database;
-
 /**
  * Implements hook_schema().
  */
@@ -23,7 +21,6 @@ function history_schema() {
       'nid' => array(
         'description' => 'The {node}.nid that was read.',
         'type' => 'int',
-        'unsigned' => TRUE,
         'not null' => TRUE,
         'default' => 0,
       ),
@@ -42,59 +39,3 @@ function history_schema() {
 
   return $schema;
 }
-
-/**
- * @defgroup updates-8.0.x-to-8.1.x Updates from 8.0.x to 8.1.x
- * @{
- * Update functions from 8.0.x to 8.1.x.
- */
-
-/**
- * Change {history}.nid to an unsigned int in order to match {node}.nid.
- */
-function history_update_8101() {
-  $schema = Database::getConnection()->schema();
-  $schema->dropPrimaryKey('history');
-  $schema->dropIndex('history', 'nid');
-  $schema->changeField('history', 'nid', 'nid', array(
-    'description' => 'The {node}.nid that was read.',
-    'type' => 'int',
-    'unsigned' => TRUE,
-    'not null' => TRUE,
-    'default' => 0,
-  ));
-  $schema->addPrimaryKey('history', array('uid', 'nid'));
-  $spec = array(
-    'description' => 'A record of which {users} have read which {node}s.',
-    'fields' => array(
-      'uid' => array(
-        'description' => 'The {users}.uid that read the {node} nid.',
-        'type' => 'int',
-        'not null' => TRUE,
-        'default' => 0,
-      ),
-      'nid' => array(
-        'description' => 'The {node}.nid that was read.',
-        'type' => 'int',
-        'unsigned' => TRUE,
-        'not null' => TRUE,
-        'default' => 0,
-      ),
-      'timestamp' => array(
-        'description' => 'The Unix timestamp at which the read occurred.',
-        'type' => 'int',
-        'not null' => TRUE,
-        'default' => 0,
-      ),
-    ),
-    'primary key' => array('uid', 'nid'),
-    'indexes' => array(
-      'nid' => array('nid'),
-    ),
-  );
-  $schema->addIndex('history', 'nid', array('nid'), $spec);
-}
-
-/**
- * @} End of "defgroup updates-8.0.x-to-8.1.x".
- */
diff --git a/core/modules/image/image.module b/core/modules/image/image.module
index 7f8314a..97b3dd2 100644
--- a/core/modules/image/image.module
+++ b/core/modules/image/image.module
@@ -14,36 +14,26 @@
 
 /**
  * Image style constant for user presets in the database.
- *
- * @deprecated in Drupal 8.1.x, will be removed before Drupal 9.0.0.
  */
 const IMAGE_STORAGE_NORMAL = 1;
 
 /**
  * Image style constant for user presets that override module-defined presets.
- *
- * @deprecated in Drupal 8.1.x, will be removed before Drupal 9.0.0.
  */
 const IMAGE_STORAGE_OVERRIDE = 2;
 
 /**
  * Image style constant for module-defined presets in code.
- *
- * @deprecated in Drupal 8.1.x, will be removed before Drupal 9.0.0.
  */
 const IMAGE_STORAGE_DEFAULT = 4;
 
 /**
  * Image style constant to represent an editable preset.
- *
- * @deprecated in Drupal 8.1.x, will be removed before Drupal 9.0.0.
  */
 define('IMAGE_STORAGE_EDITABLE', IMAGE_STORAGE_NORMAL | IMAGE_STORAGE_OVERRIDE);
 
 /**
  * Image style constant to represent any module-based preset.
- *
- * @deprecated in Drupal 8.1.x, will be removed before Drupal 9.0.0.
  */
 define('IMAGE_STORAGE_MODULE', IMAGE_STORAGE_OVERRIDE | IMAGE_STORAGE_DEFAULT);
 
@@ -76,7 +66,7 @@ function image_help($route_name, RouteMatchInterface $route_match) {
       $output .= '<dd>' . t('For accessibility and search engine optimization, all images that convey meaning on web sites should have alternate text. Drupal also allows entry of title text for images, but it can lead to confusion for screen reader users and its use is not recommended. Image fields can be configured so that alternate and title text fields are enabled or disabled; if enabled, the fields can be set to be required. The recommended setting is to enable and require alternate text and disable title text.') . '</dd>';
       $output .= '<dd>' . t('When you create an image field, you will need to choose whether the uploaded images will be stored in the public or private file directory defined in your settings.php file and shown on the <a href=":file-system">File system page</a>. This choice cannot be changed later. You can also configure your field to store files in a subdirectory of the public or private directory; this setting can be changed later and can be different for each entity sub-type using the field. For more information on file storage, see the <a href=":system-help">System module help page</a>.', array(':file-system' => \Drupal::url('system.file_system_settings'), ':system-help' => \Drupal::url('help.page', array('name' => 'system')))) . '</dd>';
       $output .= '<dd>' . t('The maximum file size that can be uploaded is limited by PHP settings of the server, but you can restrict it further by configuring a <em>Maximum upload size</em> in the field settings (this setting can be changed later). The maximum file size, either from PHP server settings or field configuration, is automatically displayed to users in the help text of the image field.') . '</dd>';
-      $output .= '<dd>' . t('You can also configure a minimum and/or maximum resolution for uploaded images. Images that are too small will be rejected. Images that are to large will be resized. During the resizing the <a href="http://wikipedia.org/wiki/Exchangeable_image_file_format">EXIF data</a> in the image will be lost.') . '</dd>';
+      $output .= '<dd>' . t('You can also configure a minimum and/or maximum resolution for uploaded images. Images that are too small will be rejected. Images that are to large will be resized. During the resizing the <a href=":exif">EXIF data</a> in the image will be lost.', array(':exif' => 'http://en.wikipedia.org/wiki/Exchangeable_image_file_format')) . '</dd>';
       $output .= '<dd>' . t('You can also configure a default image that will be used if no image is uploaded in an image field. This default can be defined for all instances of the field in the field storage settings when you create a field, and the setting can be overridden for each entity sub-type that uses the field.') . '</dd>';
       $output .= '<dt>' . t('Configuring displays and form displays') . '</dt>';
       $output .= '<dd>' . t('On the <em>Manage display</em> page, you can choose the image formatter, which determines the image style used to display the image in each display mode and whether or not to display the image as a link. On the <em>Manage form display</em> page, you can configure the image upload widget, including setting the preview image style shown on the entity edit form.') . '</dd>';
diff --git a/core/modules/image/src/Controller/ImageStyleDownloadController.php b/core/modules/image/src/Controller/ImageStyleDownloadController.php
index 4deea44..200a425 100644
--- a/core/modules/image/src/Controller/ImageStyleDownloadController.php
+++ b/core/modules/image/src/Controller/ImageStyleDownloadController.php
@@ -53,11 +53,13 @@ class ImageStyleDownloadController extends FileDownloadController {
    *   The lock backend.
    * @param \Drupal\Core\Image\ImageFactory $image_factory
    *   The image factory.
+   * @param \Psr\Log\LoggerInterface $logger
+   *   A logger instance.
    */
-  public function __construct(LockBackendInterface $lock, ImageFactory $image_factory) {
+  public function __construct(LockBackendInterface $lock, ImageFactory $image_factory, LoggerInterface $logger) {
     $this->lock = $lock;
     $this->imageFactory = $image_factory;
-    $this->logger = $this->getLogger('image');
+    $this->logger = $logger;
   }
 
   /**
@@ -66,7 +68,8 @@ public function __construct(LockBackendInterface $lock, ImageFactory $image_fact
   public static function create(ContainerInterface $container) {
     return new static(
       $container->get('lock'),
-      $container->get('image.factory')
+      $container->get('image.factory'),
+      $container->get('logger.factory')->get('image')
     );
   }
 
diff --git a/core/modules/image/src/Plugin/Field/FieldType/ImageItem.php b/core/modules/image/src/Plugin/Field/FieldType/ImageItem.php
index 656c6e1..9ec3b67 100644
--- a/core/modules/image/src/Plugin/Field/FieldType/ImageItem.php
+++ b/core/modules/image/src/Plugin/Field/FieldType/ImageItem.php
@@ -212,7 +212,7 @@ public function fieldSettingsForm(array $form, FormStateInterface $form_state) {
       '#weight' => 4.1,
       '#field_prefix' => '<div class="container-inline">',
       '#field_suffix' => '</div>',
-      '#description' => t('The maximum allowed image size expressed as WIDTH×HEIGHT (e.g. 640×480). Leave blank for no restriction. If a larger image is uploaded, it will be resized to reflect the given width and height. Resizing images on upload will cause the loss of <a href="http://wikipedia.org/wiki/Exchangeable_image_file_format">EXIF data</a> in the image.'),
+      '#description' => t('The maximum allowed image size expressed as WIDTH×HEIGHT (e.g. 640×480). Leave blank for no restriction. If a larger image is uploaded, it will be resized to reflect the given width and height. Resizing images on upload will cause the loss of <a href=":url">EXIF data</a> in the image.', array(':url' => 'http://en.wikipedia.org/wiki/Exchangeable_image_file_format')),
     );
     $element['max_resolution']['x'] = array(
       '#type' => 'number',
diff --git a/core/modules/image/src/Plugin/Field/FieldWidget/ImageWidget.php b/core/modules/image/src/Plugin/Field/FieldWidget/ImageWidget.php
index 7d70e29..10ebfb5 100644
--- a/core/modules/image/src/Plugin/Field/FieldWidget/ImageWidget.php
+++ b/core/modules/image/src/Plugin/Field/FieldWidget/ImageWidget.php
@@ -7,7 +7,6 @@
 
 namespace Drupal\image\Plugin\Field\FieldWidget;
 
-use Drupal\Core\Field\FieldFilteredMarkup;
 use Drupal\Core\Field\FieldItemListInterface;
 use Drupal\Component\Utility\NestedArray;
 use Drupal\Core\Form\FormStateInterface;
@@ -99,7 +98,7 @@ protected function formMultipleElements(FieldItemListInterface $items, array &$f
     if ($cardinality == 1) {
       // If there's only one field, return it as delta 0.
       if (empty($elements[0]['#default_value']['fids'])) {
-        $file_upload_help['#description'] = $this->getFilteredDescription();
+        $file_upload_help['#description'] = $this->fieldDefinition->getDescription();
         $elements[0]['#description'] = \Drupal::service('renderer')->renderPlain($file_upload_help);
       }
     }
diff --git a/core/modules/image/src/Plugin/ImageEffect/RotateImageEffect.php b/core/modules/image/src/Plugin/ImageEffect/RotateImageEffect.php
index 3b79e43..2507a8c 100644
--- a/core/modules/image/src/Plugin/ImageEffect/RotateImageEffect.php
+++ b/core/modules/image/src/Plugin/ImageEffect/RotateImageEffect.php
@@ -8,7 +8,6 @@
 namespace Drupal\image\Plugin\ImageEffect;
 
 use Drupal\Component\Utility\Color;
-use Drupal\Component\Utility\Rectangle;
 use Drupal\Core\Form\FormStateInterface;
 use Drupal\Core\Image\ImageInterface;
 use Drupal\image\ConfigurableImageEffectBase;
@@ -44,13 +43,14 @@ public function applyEffect(ImageInterface $image) {
    * {@inheritdoc}
    */
   public function transformDimensions(array &$dimensions, $uri) {
-    // If the rotate is not random and current dimensions are set,
+    // If the rotate is not random and the angle is a multiple of 90 degrees,
     // then the new dimensions can be determined.
-    if (!$this->configuration['random'] && $dimensions['width'] && $dimensions['height']) {
-      $rect = new Rectangle($dimensions['width'], $dimensions['height']);
-      $rect = $rect->rotate($this->configuration['degrees']);
-      $dimensions['width'] = $rect->getBoundingWidth();
-      $dimensions['height'] = $rect->getBoundingHeight();
+    if (!$this->configuration['random'] && ((int) ($this->configuration['degrees']) == $this->configuration['degrees']) && ($this->configuration['degrees'] % 90 == 0)) {
+      if ($this->configuration['degrees'] % 180 != 0) {
+        $temp = $dimensions['width'];
+        $dimensions['width'] = $dimensions['height'];
+        $dimensions['height'] = $temp;
+      }
     }
     else {
       $dimensions['width'] = $dimensions['height'] = NULL;
diff --git a/core/modules/image/src/Tests/FileMoveTest.php b/core/modules/image/src/Tests/FileMoveTest.php
index 4c11725..34c54a7 100644
--- a/core/modules/image/src/Tests/FileMoveTest.php
+++ b/core/modules/image/src/Tests/FileMoveTest.php
@@ -7,7 +7,6 @@
 
 namespace Drupal\image\Tests;
 
-use Drupal\file\Entity\File;
 use Drupal\simpletest\WebTestBase;
 use Drupal\image\Entity\ImageStyle;
 
@@ -30,7 +29,7 @@ class FileMoveTest extends WebTestBase {
    */
   function testNormal() {
     // Pick a file for testing.
-    $file = File::create((array) current($this->drupalGetTestFiles('image')));
+    $file = entity_create('file', (array) current($this->drupalGetTestFiles('image')));
 
     // Create derivative image.
     $styles = ImageStyle::loadMultiple();
diff --git a/core/modules/image/src/Tests/ImageAdminStylesTest.php b/core/modules/image/src/Tests/ImageAdminStylesTest.php
index cf5916c..869e0c1 100644
--- a/core/modules/image/src/Tests/ImageAdminStylesTest.php
+++ b/core/modules/image/src/Tests/ImageAdminStylesTest.php
@@ -298,7 +298,7 @@ function testStyleReplacement() {
     // Create a new style.
     $style_name = strtolower($this->randomMachineName(10));
     $style_label = $this->randomString();
-    $style = ImageStyle::create(array('name' => $style_name, 'label' => $style_label));
+    $style = entity_create('image_style', array('name' => $style_name, 'label' => $style_label));
     $style->save();
     $style_path = 'admin/config/media/image-styles/manage/';
 
@@ -403,7 +403,7 @@ public function testFlushUserInterface() {
 
     // Create a new style.
     $style_name = strtolower($this->randomMachineName(10));
-    $style = ImageStyle::create(array('name' => $style_name, 'label' => $this->randomString()));
+    $style = entity_create('image_style', array('name' => $style_name, 'label' => $this->randomString()));
     $style->save();
 
     // Create an image to make sure it gets flushed.
@@ -433,7 +433,7 @@ function testConfigImport() {
     // Create a new style.
     $style_name = strtolower($this->randomMachineName(10));
     $style_label = $this->randomString();
-    $style = ImageStyle::create(array('name' => $style_name, 'label' => $style_label));
+    $style = entity_create('image_style', array('name' => $style_name, 'label' => $style_label));
     $style->save();
 
     // Create an image field that uses the new style.
@@ -479,7 +479,7 @@ function testConfigImport() {
    * Tests access for the image style listing.
    */
   public function testImageStyleAccess() {
-    $style = ImageStyle::create(array('name' => 'style_foo', 'label' => $this->randomString()));
+    $style = entity_create('image_style', array('name' => 'style_foo', 'label' => $this->randomString()));
     $style->save();
 
     $this->drupalGet('admin/config/media/image-styles');
diff --git a/core/modules/image/src/Tests/ImageDimensionsTest.php b/core/modules/image/src/Tests/ImageDimensionsTest.php
index f232d71..984e060 100644
--- a/core/modules/image/src/Tests/ImageDimensionsTest.php
+++ b/core/modules/image/src/Tests/ImageDimensionsTest.php
@@ -38,7 +38,7 @@ function testImageDimensions() {
 
     // Create a style.
     /** @var $style \Drupal\image\ImageStyleInterface */
-    $style = ImageStyle::create(array('name' => 'test', 'label' => 'Test'));
+    $style = entity_create('image_style', array('name' => 'test', 'label' => 'Test'));
     $style->save();
     $generated_uri = 'public://styles/test/public/'. \Drupal::service('file_system')->basename($original_uri);
     $url = file_url_transform_relative($style->buildUrl($original_uri));
@@ -213,14 +213,11 @@ function testImageDimensions() {
 
     $effect_id = $style->addImageEffect($effect);
     $style->save();
-    $this->assertEqual($this->getImageTag($variables), '<img src="' . $url . '" width="41" height="41" alt="" class="image-style-test" />');
+    $this->assertEqual($this->getImageTag($variables), '<img src="' . $url . '" alt="" class="image-style-test" />');
     $this->assertFalse(file_exists($generated_uri), 'Generated file does not exist.');
     $this->drupalGet($this->getAbsoluteUrl($url));
     $this->assertResponse(200, 'Image was generated at the URL.');
     $this->assertTrue(file_exists($generated_uri), 'Generated file does exist after we accessed it.');
-    $image_file = $image_factory->get($generated_uri);
-    $this->assertEqual($image_file->getWidth(), 41);
-    $this->assertEqual($image_file->getHeight(), 41);
 
     $effect_plugin = $style->getEffect($effect_id);
     $style->deleteImageEffect($effect_plugin);
diff --git a/core/modules/image/src/Tests/ImageFieldDefaultImagesTest.php b/core/modules/image/src/Tests/ImageFieldDefaultImagesTest.php
index 627bd74..ee47e30 100644
--- a/core/modules/image/src/Tests/ImageFieldDefaultImagesTest.php
+++ b/core/modules/image/src/Tests/ImageFieldDefaultImagesTest.php
@@ -8,9 +8,7 @@
 namespace Drupal\image\Tests;
 use Drupal\Component\Utility\Unicode;
 use Drupal\Core\Entity\Entity\EntityViewDisplay;
-use Drupal\field\Entity\FieldConfig;
 use Drupal\file\Entity\File;
-use Drupal\field\Entity\FieldStorageConfig;
 
 /**
  * Tests setting up default images both to the field and field field.
@@ -38,12 +36,12 @@ public function testDefaultImages() {
       $filename = $this->randomMachineName() . "$i";
       $desired_filepath = 'public://' . $filename;
       file_unmanaged_copy($files[0]->uri, $desired_filepath, FILE_EXISTS_ERROR);
-      $file = File::create(['uri' => $desired_filepath, 'filename' => $filename, 'name' => $filename]);
+      $file = entity_create('file', array('uri' => $desired_filepath, 'filename' => $filename, 'name' => $filename));
       $file->save();
     }
     $default_images = array();
     foreach (array('field', 'field', 'field2', 'field_new', 'field_new') as $image_target) {
-      $file = File::create((array) array_pop($files));
+      $file = entity_create('file', (array) array_pop($files));
       $file->save();
       $default_images[$image_target] = $file;
     }
@@ -84,7 +82,7 @@ public function testDefaultImages() {
     $this->assertEqual($field_storage->getSettings()['default_image']['uuid'], $default_images['field']->uuid());
 
     // Add another field with another default image to the page content type.
-    $field2 = FieldConfig::create([
+    $field2 = entity_create('field_config', array(
       'field_storage' => $field_storage,
       'bundle' => 'page',
       'label' => $field->label(),
@@ -98,7 +96,7 @@ public function testDefaultImages() {
           'height' => 0,
         ),
       ),
-    ]);
+    ));
     $field2->save();
 
     $widget_settings = entity_get_form_display('node', $field->getTargetBundle(), 'default')->getComponent($field_name);
@@ -321,7 +319,7 @@ public function testDefaultImages() {
    * Tests image field and field having an invalid default image.
    */
   public function testInvalidDefaultImage() {
-    $field_storage = FieldStorageConfig::create(array(
+    $field_storage = entity_create('field_storage_config', array(
       'field_name' => Unicode::strtolower($this->randomMachineName()),
       'entity_type' => 'node',
       'type' => 'image',
@@ -336,7 +334,7 @@ public function testInvalidDefaultImage() {
     // The non-existent default image should not be saved.
     $this->assertNull($settings['default_image']['uuid']);
 
-    $field = FieldConfig::create([
+    $field = entity_create('field_config', array(
       'field_storage' => $field_storage,
       'bundle' => 'page',
       'label' => $this->randomMachineName(),
@@ -345,7 +343,7 @@ public function testInvalidDefaultImage() {
           'uuid' => 100000,
         )
       ),
-    ]);
+    ));
     $field->save();
     $settings = $field->getSettings();
     // The non-existent default image should not be saved.
diff --git a/core/modules/image/src/Tests/ImageFieldTestBase.php b/core/modules/image/src/Tests/ImageFieldTestBase.php
index 68c9aae..9984a76 100644
--- a/core/modules/image/src/Tests/ImageFieldTestBase.php
+++ b/core/modules/image/src/Tests/ImageFieldTestBase.php
@@ -7,9 +7,7 @@
 
 namespace Drupal\image\Tests;
 
-use Drupal\field\Entity\FieldConfig;
 use Drupal\simpletest\WebTestBase;
-use Drupal\field\Entity\FieldStorageConfig;
 
 /**
  * TODO: Test the following functions.
@@ -71,11 +69,9 @@ protected function setUp() {
    *   Widget settings to be added to the widget defaults.
    * @param array $formatter_settings
    *   Formatter settings to be added to the formatter defaults.
-   * @param string $description
-   *   A description for the field.
    */
-  function createImageField($name, $type_name, $storage_settings = array(), $field_settings = array(), $widget_settings = array(), $formatter_settings = array(), $description = '') {
-    FieldStorageConfig::create(array(
+  function createImageField($name, $type_name, $storage_settings = array(), $field_settings = array(), $widget_settings = array(), $formatter_settings = array()) {
+    entity_create('field_storage_config', array(
       'field_name' => $name,
       'entity_type' => 'node',
       'type' => 'image',
@@ -83,15 +79,14 @@ function createImageField($name, $type_name, $storage_settings = array(), $field
       'cardinality' => !empty($storage_settings['cardinality']) ? $storage_settings['cardinality'] : 1,
     ))->save();
 
-    $field_config = FieldConfig::create([
+    $field_config = entity_create('field_config', array(
       'field_name' => $name,
       'label' => $name,
       'entity_type' => 'node',
       'bundle' => $type_name,
       'required' => !empty($field_settings['required']),
       'settings' => $field_settings,
-      'description' => $description,
-    ]);
+    ));
     $field_config->save();
 
     entity_get_form_display('node', $type_name, 'default')
diff --git a/core/modules/image/src/Tests/ImageFieldWidgetTest.php b/core/modules/image/src/Tests/ImageFieldWidgetTest.php
index 4a80c9a..8bc70bc 100644
--- a/core/modules/image/src/Tests/ImageFieldWidgetTest.php
+++ b/core/modules/image/src/Tests/ImageFieldWidgetTest.php
@@ -27,10 +27,9 @@ public function testWidgetElement() {
       'min_resolution' => $min_resolution . 'x' . $min_resolution,
       'alt_field' => 0,
     );
-    $this->createImageField($field_name, 'article', array(), $field_settings, array(), array(), 'Image test on [site:name]');
+    $this->createImageField($field_name, 'article', array(), $field_settings);
     $this->drupalGet('node/add/article');
     $this->assertNotEqual(0, count($this->xpath('//div[contains(@class, "field--widget-image-image")]')), 'Image field widget found on add/node page', 'Browser');
-    $this->assertNoText('Image test on [site:name]');
   }
 
 }
diff --git a/core/modules/image/src/Tests/ImageItemTest.php b/core/modules/image/src/Tests/ImageItemTest.php
index 983088f..fddbd3f 100644
--- a/core/modules/image/src/Tests/ImageItemTest.php
+++ b/core/modules/image/src/Tests/ImageItemTest.php
@@ -10,10 +10,7 @@
 use Drupal\Core\Field\FieldItemInterface;
 use Drupal\Core\Field\FieldItemListInterface;
 use Drupal\Core\Field\FieldStorageDefinitionInterface;
-use Drupal\field\Entity\FieldConfig;
 use Drupal\field\Tests\FieldUnitTestBase;
-use Drupal\field\Entity\FieldStorageConfig;
-use Drupal\file\Entity\File;
 
 /**
  * Tests using entity fields of the image field type.
@@ -47,21 +44,21 @@ protected function setUp() {
     $this->installEntitySchema('file');
     $this->installSchema('file', array('file_usage'));
 
-    FieldStorageConfig::create(array(
+    entity_create('field_storage_config', array(
       'entity_type' => 'entity_test',
       'field_name' => 'image_test',
       'type' => 'image',
       'cardinality' => FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED,
     ))->save();
-    FieldConfig::create([
+    entity_create('field_config', array(
       'entity_type' => 'entity_test',
       'field_name' => 'image_test',
       'bundle' => 'entity_test',
-    ])->save();
+    ))->save();
     file_unmanaged_copy(\Drupal::root() . '/core/misc/druplicon.png', 'public://example.jpg');
-    $this->image = File::create([
+    $this->image = entity_create('file', array(
       'uri' => 'public://example.jpg',
-    ]);
+    ));
     $this->image->save();
     $this->imageFactory = $this->container->get('image.factory');
   }
@@ -92,9 +89,9 @@ public function testImageItem() {
 
     // Make sure the computed entity reflects updates to the referenced file.
     file_unmanaged_copy(\Drupal::root() . '/core/misc/druplicon.png', 'public://example-2.jpg');
-    $image2 = File::create([
+    $image2 = entity_create('file', array(
       'uri' => 'public://example-2.jpg',
-    ]);
+    ));
     $image2->save();
 
     $entity->image_test->target_id = $image2->id();
diff --git a/core/modules/image/src/Tests/ImageStylesPathAndUrlTest.php b/core/modules/image/src/Tests/ImageStylesPathAndUrlTest.php
index 28febab..81c1628 100644
--- a/core/modules/image/src/Tests/ImageStylesPathAndUrlTest.php
+++ b/core/modules/image/src/Tests/ImageStylesPathAndUrlTest.php
@@ -7,7 +7,6 @@
 
 namespace Drupal\image\Tests;
 
-use Drupal\image\Entity\ImageStyle;
 use Drupal\simpletest\WebTestBase;
 
 /**
@@ -32,7 +31,7 @@ class ImageStylesPathAndUrlTest extends WebTestBase {
   protected function setUp() {
     parent::setUp();
 
-    $this->style = ImageStyle::create(array('name' => 'style_foo', 'label' => $this->randomString()));
+    $this->style = entity_create('image_style', array('name' => 'style_foo', 'label' => $this->randomString()));
     $this->style->save();
   }
 
diff --git a/core/modules/image/src/Tests/ImageThemeFunctionTest.php b/core/modules/image/src/Tests/ImageThemeFunctionTest.php
index 653ba55..4d4dd98 100644
--- a/core/modules/image/src/Tests/ImageThemeFunctionTest.php
+++ b/core/modules/image/src/Tests/ImageThemeFunctionTest.php
@@ -9,11 +9,7 @@
 
 use Drupal\Core\Field\FieldStorageDefinitionInterface;
 use Drupal\Core\Url;
-use Drupal\field\Entity\FieldConfig;
-use Drupal\file\Entity\File;
-use Drupal\image\Entity\ImageStyle;
 use Drupal\simpletest\WebTestBase;
-use Drupal\field\Entity\FieldStorageConfig;
 
 /**
  * Tests image theme functions.
@@ -44,21 +40,21 @@ class ImageThemeFunctionTest extends WebTestBase {
   protected function setUp() {
     parent::setUp();
 
-    FieldStorageConfig::create(array(
+    entity_create('field_storage_config', array(
       'entity_type' => 'entity_test',
       'field_name' => 'image_test',
       'type' => 'image',
       'cardinality' => FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED,
     ))->save();
-    FieldConfig::create([
+    entity_create('field_config', array(
       'entity_type' => 'entity_test',
       'field_name' => 'image_test',
       'bundle' => 'entity_test',
-    ])->save();
+    ))->save();
     file_unmanaged_copy(\Drupal::root() . '/core/misc/druplicon.png', 'public://example.jpg');
-    $this->image = File::create([
+    $this->image = entity_create('file', array(
       'uri' => 'public://example.jpg',
-    ]);
+    ));
     $this->image->save();
     $this->imageFactory = $this->container->get('image.factory');
   }
@@ -76,7 +72,7 @@ function testImageFormatterTheme() {
     $original_uri = file_unmanaged_copy($file->uri, 'public://', FILE_EXISTS_RENAME);
 
     // Create a style.
-    $style = ImageStyle::create(array('name' => 'test', 'label' => 'Test'));
+    $style = entity_create('image_style', array('name' => 'test', 'label' => 'Test'));
     $style->save();
     $url = file_url_transform_relative($style->buildUrl($original_uri));
 
@@ -138,7 +134,7 @@ function testImageStyleTheme() {
     $original_uri = file_unmanaged_copy($file->uri, 'public://', FILE_EXISTS_RENAME);
 
     // Create a style.
-    $style = ImageStyle::create(array('name' => 'image_test', 'label' => 'Test'));
+    $style = entity_create('image_style', array('name' => 'image_test', 'label' => 'Test'));
     $style->save();
     $url = file_url_transform_relative($style->buildUrl($original_uri));
 
diff --git a/core/modules/image/src/Tests/Views/RelationshipUserImageDataTest.php b/core/modules/image/src/Tests/Views/RelationshipUserImageDataTest.php
index 0ef0dd1..4ef0626 100644
--- a/core/modules/image/src/Tests/Views/RelationshipUserImageDataTest.php
+++ b/core/modules/image/src/Tests/Views/RelationshipUserImageDataTest.php
@@ -7,12 +7,9 @@
 
 namespace Drupal\image\Tests\Views;
 
-use Drupal\field\Entity\FieldConfig;
-use Drupal\file\Entity\File;
 use Drupal\views\Tests\ViewTestBase;
 use Drupal\views\Views;
 use Drupal\views\Tests\ViewTestData;
-use Drupal\field\Entity\FieldStorageConfig;
 
 /**
  * Tests image on user relationship handler.
@@ -39,20 +36,20 @@ protected function setUp() {
     parent::setUp();
 
     // Create the user profile field and instance.
-    FieldStorageConfig::create(array(
+    entity_create('field_storage_config', array(
       'entity_type' => 'user',
       'field_name' => 'user_picture',
       'type' => 'image',
       'translatable' => '0',
     ))->save();
-    FieldConfig::create([
+    entity_create('field_config', array(
       'label' => 'User Picture',
       'description' => '',
       'field_name' => 'user_picture',
       'entity_type' => 'user',
       'bundle' => 'user',
       'required' => 0,
-    ])->save();
+    ))->save();
 
     ViewTestData::createTestViews(get_class($this), array('image_test_views'));
   }
@@ -61,7 +58,7 @@ protected function setUp() {
    * Tests using the views image relationship.
    */
   public function testViewsHandlerRelationshipUserImageData() {
-    $file = File::create([
+    $file = entity_create('file', array(
       'fid' => 2,
       'uid' => 2,
       'filename' => 'image-test.jpg',
@@ -70,7 +67,7 @@ public function testViewsHandlerRelationshipUserImageData() {
       'created' => 1,
       'changed' => 1,
       'status' => FILE_STATUS_PERMANENT,
-    ]);
+    ));
     $file->enforceIsNew();
     file_put_contents($file->getFileUri(), file_get_contents('core/modules/simpletest/files/image-1.png'));
     $file->save();
diff --git a/core/modules/language/language.module b/core/modules/language/language.module
index 99ebc3b..5904685 100644
--- a/core/modules/language/language.module
+++ b/core/modules/language/language.module
@@ -29,7 +29,7 @@ function language_help($route_name, RouteMatchInterface $route_match) {
     case 'help.page.language':
       $output = '';
       $output .= '<h3>' . t('About') . '</h3>';
-      $output .= '<p>' . t('The Language module allows you to configure the languages used on your site, and provides information for the <a href=":content">Content Translation</a>, <a href=":interface">Interface Translation</a>, and <a href=":configuration">Configuration Translation</a> modules, if they are enabled. For more information, see the <a href=":doc_url">online documentation for the Language module</a>.', array(':doc_url' => 'https://www.drupal.org/documentation/modules/language', ':content' => (\Drupal::moduleHandler()->moduleExists('content_translation')) ? \Drupal::url('help.page', array('name' => 'content_translation')) : '#', ':interface' => (\Drupal::moduleHandler()->moduleExists('locale')) ? \Drupal::url('help.page', array('name' => 'locale')) : '#', ':configuration' => (\Drupal::moduleHandler()->moduleExists('config_translation')) ? \Drupal::url('help.page', array('name' => 'config_translation')) : '#')) . '</p>';
+      $output .= '<p>' . t('The Language module allows you to configure the languages used on your site, and provides information for the for <a href=":content">Content Translation</a>, <a href=":interface">Interface Translation</a>, and <a href=":configuration">Configuration Translation</a> modules, if they are enabled. For more information, see the <a href=":doc_url">online documentation for the Language module</a>.', array(':doc_url' => 'https://www.drupal.org/documentation/modules/language', ':content' => (\Drupal::moduleHandler()->moduleExists('content_translation')) ? \Drupal::url('help.page', array('name' => 'content_translation')) : '#', ':interface' => (\Drupal::moduleHandler()->moduleExists('locale')) ? \Drupal::url('help.page', array('name' => 'locale')) : '#', ':configuration' => (\Drupal::moduleHandler()->moduleExists('config_translation')) ? \Drupal::url('help.page', array('name' => 'config_translation')) : '#')) . '</p>';
       $output .= '<h3>' . t('Uses') . '</h3>';
       $output .= '<dl>';
       $output .= '<dt>' . t('Adding languages') . '</dt>';
diff --git a/core/modules/language/src/Entity/ContentLanguageSettings.php b/core/modules/language/src/Entity/ContentLanguageSettings.php
index 2d9cf28..7501012 100644
--- a/core/modules/language/src/Entity/ContentLanguageSettings.php
+++ b/core/modules/language/src/Entity/ContentLanguageSettings.php
@@ -67,7 +67,7 @@ class ContentLanguageSettings extends ConfigEntityBase implements ContentLanguag
    * Constructs a ContentLanguageSettings object.
    *
    * In most cases, Field entities are created via
-   * FieldConfig::create($values), where $values is the same
+   * entity_create('field_config', $values), where $values is the same
    * parameter as in this constructor.
    *
    * @param array $values
diff --git a/core/modules/language/src/Plugin/LanguageNegotiation/LanguageNegotiationContentEntity.php b/core/modules/language/src/Plugin/LanguageNegotiation/LanguageNegotiationContentEntity.php
index 4ce022d..fd9da35 100644
--- a/core/modules/language/src/Plugin/LanguageNegotiation/LanguageNegotiationContentEntity.php
+++ b/core/modules/language/src/Plugin/LanguageNegotiation/LanguageNegotiationContentEntity.php
@@ -181,8 +181,8 @@ public function getLanguageSwitchLinks(Request $request, $type, Url $url) {
    * \Drupal\language\Plugin\LanguageNegotiation\LanguageNegotiationContentEntity::processOutbound().
    *
    * @return bool
-   *   TRUE if the the content entity language negotiator has higher priority
-   *   than the url language negotiator, FALSE otherwise.
+   *   TRUE if the content entity language negotiator has higher priority than
+   *   the url language negotiator, FALSE otherwise.
    */
   protected function hasLowerLanguageNegotiationWeight() {
     if (!isset($this->hasLowerLanguageNegotiationWeightResult)) {
diff --git a/core/modules/language/src/Tests/LanguageConfigOverrideInstallTest.php b/core/modules/language/src/Tests/LanguageConfigOverrideInstallTest.php
index b3cdd09..28d6330 100644
--- a/core/modules/language/src/Tests/LanguageConfigOverrideInstallTest.php
+++ b/core/modules/language/src/Tests/LanguageConfigOverrideInstallTest.php
@@ -4,7 +4,6 @@
  * @file
  * Contains \Drupal\language\Tests\LanguageConfigOverrideInstallTest.
  */
-
 namespace Drupal\language\Tests;
 
 use Drupal\language\Entity\ConfigurableLanguage;
diff --git a/core/modules/link/src/Tests/LinkFieldTest.php b/core/modules/link/src/Tests/LinkFieldTest.php
index 7fa960c..79c2cbb 100644
--- a/core/modules/link/src/Tests/LinkFieldTest.php
+++ b/core/modules/link/src/Tests/LinkFieldTest.php
@@ -10,10 +10,8 @@
 use Drupal\Component\Utility\Html;
 use Drupal\Component\Utility\Unicode;
 use Drupal\Core\Url;
-use Drupal\field\Entity\FieldConfig;
 use Drupal\link\LinkItemInterface;
 use Drupal\simpletest\WebTestBase;
-use Drupal\field\Entity\FieldStorageConfig;
 
 /**
  * Tests link field widgets and formatters.
@@ -59,20 +57,20 @@ protected function setUp() {
   function testURLValidation() {
     $field_name = Unicode::strtolower($this->randomMachineName());
     // Create a field with settings to validate.
-    $this->fieldStorage = FieldStorageConfig::create(array(
+    $this->fieldStorage = entity_create('field_storage_config', array(
       'field_name' => $field_name,
       'entity_type' => 'entity_test',
       'type' => 'link',
     ));
     $this->fieldStorage->save();
-    $this->field = FieldConfig::create([
+    $this->field = entity_create('field_config', array(
       'field_storage' => $this->fieldStorage,
       'bundle' => 'entity_test',
       'settings' => array(
         'title' => DRUPAL_DISABLED,
         'link_type' => LinkItemInterface::LINK_GENERIC,
       ),
-    ]);
+    ));
     $this->field->save();
     entity_get_form_display('entity_test', 'entity_test', 'default')
       ->setComponent($field_name, array(
@@ -224,13 +222,13 @@ protected function assertInvalidEntries($field_name, array $invalid_entries) {
   function testLinkTitle() {
     $field_name = Unicode::strtolower($this->randomMachineName());
     // Create a field with settings to validate.
-    $this->fieldStorage = FieldStorageConfig::create(array(
+    $this->fieldStorage = entity_create('field_storage_config', array(
       'field_name' => $field_name,
       'entity_type' => 'entity_test',
       'type' => 'link',
     ));
     $this->fieldStorage->save();
-    $this->field = FieldConfig::create([
+    $this->field = entity_create('field_config', array(
       'field_storage' => $this->fieldStorage,
       'bundle' => 'entity_test',
       'label' => 'Read more about this entity',
@@ -238,7 +236,7 @@ function testLinkTitle() {
         'title' => DRUPAL_OPTIONAL,
         'link_type' => LinkItemInterface::LINK_GENERIC,
       ),
-    ]);
+    ));
     $this->field->save();
     entity_get_form_display('entity_test', 'entity_test', 'default')
       ->setComponent($field_name, array(
@@ -338,14 +336,14 @@ function testLinkTitle() {
   function testLinkFormatter() {
     $field_name = Unicode::strtolower($this->randomMachineName());
     // Create a field with settings to validate.
-    $this->fieldStorage = FieldStorageConfig::create(array(
+    $this->fieldStorage = entity_create('field_storage_config', array(
       'field_name' => $field_name,
       'entity_type' => 'entity_test',
       'type' => 'link',
       'cardinality' => 2,
     ));
     $this->fieldStorage->save();
-    FieldConfig::create([
+    entity_create('field_config', array(
       'field_storage' => $this->fieldStorage,
       'label' => 'Read more about this entity',
       'bundle' => 'entity_test',
@@ -353,7 +351,7 @@ function testLinkFormatter() {
         'title' => DRUPAL_OPTIONAL,
         'link_type' => LinkItemInterface::LINK_GENERIC,
       ),
-    ])->save();
+    ))->save();
     entity_get_form_display('entity_test', 'entity_test', 'default')
       ->setComponent($field_name, array(
         'type' => 'link_default',
@@ -478,21 +476,21 @@ function testLinkFormatter() {
   function testLinkSeparateFormatter() {
     $field_name = Unicode::strtolower($this->randomMachineName());
     // Create a field with settings to validate.
-    $this->fieldStorage = FieldStorageConfig::create(array(
+    $this->fieldStorage = entity_create('field_storage_config', array(
       'field_name' => $field_name,
       'entity_type' => 'entity_test',
       'type' => 'link',
       'cardinality' => 2,
     ));
     $this->fieldStorage->save();
-    FieldConfig::create([
+    entity_create('field_config', array(
       'field_storage' => $this->fieldStorage,
       'bundle' => 'entity_test',
       'settings' => array(
         'title' => DRUPAL_OPTIONAL,
         'link_type' => LinkItemInterface::LINK_GENERIC,
       ),
-    ])->save();
+    ))->save();
     $display_options = array(
       'type' => 'link_separate',
       'label' => 'hidden',
diff --git a/core/modules/locale/src/Tests/LocaleConfigSubscriberTest.php b/core/modules/locale/src/Tests/LocaleConfigSubscriberTest.php
index 38e8ad0..376ec44 100644
--- a/core/modules/locale/src/Tests/LocaleConfigSubscriberTest.php
+++ b/core/modules/locale/src/Tests/LocaleConfigSubscriberTest.php
@@ -62,6 +62,7 @@ protected function setUp() {
     $this->setUpDefaultLanguage();
 
     $this->installSchema('locale', ['locales_source', 'locales_target', 'locales_location']);
+    $this->installSchema('system', ['queue']);
 
     $this->setupLanguages();
 
diff --git a/core/modules/locale/src/Tests/LocaleExportTest.php b/core/modules/locale/src/Tests/LocaleExportTest.php
index 6d309d0..061c161 100644
--- a/core/modules/locale/src/Tests/LocaleExportTest.php
+++ b/core/modules/locale/src/Tests/LocaleExportTest.php
@@ -38,8 +38,8 @@ protected function setUp() {
     $this->drupalLogin($this->adminUser);
 
     // Copy test po files to the translations directory.
-    file_unmanaged_copy(__DIR__ . '/../../tests/test.de.po', 'translations://', FILE_EXISTS_REPLACE);
-    file_unmanaged_copy(__DIR__ . '/../../tests/test.xx.po', 'translations://', FILE_EXISTS_REPLACE);
+    file_unmanaged_copy(drupal_get_path('module', 'locale') . '/tests/test.de.po', 'translations://', FILE_EXISTS_REPLACE);
+    file_unmanaged_copy(drupal_get_path('module', 'locale') . '/tests/test.xx.po', 'translations://', FILE_EXISTS_REPLACE);
   }
 
   /**
diff --git a/core/modules/locale/src/Tests/LocaleImportFunctionalTest.php b/core/modules/locale/src/Tests/LocaleImportFunctionalTest.php
index a78f286..74ef0ae 100644
--- a/core/modules/locale/src/Tests/LocaleImportFunctionalTest.php
+++ b/core/modules/locale/src/Tests/LocaleImportFunctionalTest.php
@@ -46,8 +46,8 @@ protected function setUp() {
     parent::setUp();
 
     // Copy test po files to the translations directory.
-    file_unmanaged_copy(__DIR__ . '/../../tests/test.de.po', 'translations://', FILE_EXISTS_REPLACE);
-    file_unmanaged_copy(__DIR__ . '/../../tests/test.xx.po', 'translations://', FILE_EXISTS_REPLACE);
+    file_unmanaged_copy(drupal_get_path('module', 'locale') . '/tests/test.de.po', 'translations://', FILE_EXISTS_REPLACE);
+    file_unmanaged_copy(drupal_get_path('module', 'locale') . '/tests/test.xx.po', 'translations://', FILE_EXISTS_REPLACE);
 
     $this->adminUser = $this->drupalCreateUser(array('administer languages', 'translate interface', 'access administration pages'));
     $this->adminUserAccessSiteReports = $this->drupalCreateUser(array('administer languages', 'translate interface', 'access administration pages', 'access site reports'));
diff --git a/core/modules/locale/src/Tests/LocaleJavascriptTranslationTest.php b/core/modules/locale/src/Tests/LocaleJavascriptTranslationTest.php
index 0e62805..a87f866 100644
--- a/core/modules/locale/src/Tests/LocaleJavascriptTranslationTest.php
+++ b/core/modules/locale/src/Tests/LocaleJavascriptTranslationTest.php
@@ -26,7 +26,7 @@ class LocaleJavascriptTranslationTest extends WebTestBase {
   public static $modules = array('locale', 'locale_test');
 
   public function testFileParsing() {
-    $filename = __DIR__ . '/../../tests/locale_test.js';
+    $filename = drupal_get_path('module', 'locale') . '/tests/locale_test.js';
 
     // Parse the file to look for source strings.
     _locale_parse_js_file($filename);
diff --git a/core/modules/locale/src/Tests/LocaleTranslatedSchemaDefinitionTest.php b/core/modules/locale/src/Tests/LocaleTranslatedSchemaDefinitionTest.php
index 326cccd..5422a10 100644
--- a/core/modules/locale/src/Tests/LocaleTranslatedSchemaDefinitionTest.php
+++ b/core/modules/locale/src/Tests/LocaleTranslatedSchemaDefinitionTest.php
@@ -46,17 +46,17 @@ function testTranslatedSchemaDefinition() {
     $stringStorage = \Drupal::service('locale.storage');
 
     $source = $stringStorage->createString(array(
-      'source' => 'Revision ID',
+      'source' => 'The node ID.',
     ))->save();
 
     $stringStorage->createTranslation(array(
       'lid' => $source->lid,
       'language' => 'fr',
-      'translation' => 'Translated Revision ID',
+      'translation' => 'Translated node ID',
     ))->save();
 
     // Ensure that the field is translated when access through the API.
-    $this->assertEqual('Translated Revision ID', \Drupal::entityManager()->getBaseFieldDefinitions('node')['vid']->getLabel());
+    $this->assertEqual('Translated node ID', \Drupal::entityManager()->getBaseFieldDefinitions('node')['nid']->getDescription());
 
     // Assert there are no updates.
     $this->assertFalse(\Drupal::service('entity.definition_update_manager')->needsUpdates());
diff --git a/core/modules/locale/src/Tests/LocaleUpdateBase.php b/core/modules/locale/src/Tests/LocaleUpdateBase.php
index 78c2b39..cc2aed3 100644
--- a/core/modules/locale/src/Tests/LocaleUpdateBase.php
+++ b/core/modules/locale/src/Tests/LocaleUpdateBase.php
@@ -8,7 +8,6 @@
 namespace Drupal\locale\Tests;
 
 use Drupal\Core\StreamWrapper\PublicStream;
-use Drupal\file\Entity\File;
 use Drupal\simpletest\WebTestBase;
 use Drupal\Component\Utility\SafeMarkup;
 
@@ -134,14 +133,14 @@ protected function makePoFile($path, $filename, $timestamp = NULL, array $transl
     }
 
     file_prepare_directory($path, FILE_CREATE_DIRECTORY);
-    $file = File::create([
+    $file = entity_create('file', array(
       'uid' => 1,
       'filename' => $filename,
       'uri' => $path . '/' . $filename,
       'filemime' => 'text/x-gettext-translation',
       'timestamp' => $timestamp,
       'status' => FILE_STATUS_PERMANENT,
-    ]);
+    ));
     file_put_contents($file->getFileUri(), $po_header . $text);
     touch(drupal_realpath($file->getFileUri()), $timestamp);
     $file->save();
diff --git a/core/modules/menu_link_content/src/Tests/LinksTest.php b/core/modules/menu_link_content/src/Tests/LinksTest.php
index 46e3d60..29a8d97 100644
--- a/core/modules/menu_link_content/src/Tests/LinksTest.php
+++ b/core/modules/menu_link_content/src/Tests/LinksTest.php
@@ -8,9 +8,7 @@
 namespace Drupal\menu_link_content\Tests;
 
 use Drupal\Component\Utility\SafeMarkup;
-use Drupal\menu_link_content\Entity\MenuLinkContent;
 use Drupal\simpletest\WebTestBase;
-use Drupal\system\Entity\Menu;
 
 /**
  * Tests handling of menu links hierarchies.
@@ -41,7 +39,7 @@ protected function setUp() {
 
     $this->menuLinkManager = \Drupal::service('plugin.manager.menu.link');
 
-    Menu::create(array(
+    entity_create('menu', array(
       'id' => 'menu_test',
       'label' => 'Test menu',
       'description' => 'Description text',
@@ -70,7 +68,7 @@ function createLinkHierarchy($module = 'menu_test') {
     $parent = $base_options + array(
       'link' => ['uri' => 'internal:/menu-test/hierarchy/parent'],
     );
-    $link = MenuLinkContent::create($parent);
+    $link = entity_create('menu_link_content', $parent);
     $link->save();
     $links['parent'] = $link->getPluginId();
 
@@ -78,7 +76,7 @@ function createLinkHierarchy($module = 'menu_test') {
       'link' => ['uri' => 'internal:/menu-test/hierarchy/parent/child'],
       'parent' => $links['parent'],
     );
-    $link = MenuLinkContent::create($child_1);
+    $link = entity_create('menu_link_content', $child_1);
     $link->save();
     $links['child-1'] = $link->getPluginId();
 
@@ -86,7 +84,7 @@ function createLinkHierarchy($module = 'menu_test') {
       'link' => ['uri' => 'internal:/menu-test/hierarchy/parent/child2/child'],
       'parent' => $links['child-1'],
     );
-    $link = MenuLinkContent::create($child_1_1);
+    $link = entity_create('menu_link_content', $child_1_1);
     $link->save();
     $links['child-1-1'] = $link->getPluginId();
 
@@ -94,7 +92,7 @@ function createLinkHierarchy($module = 'menu_test') {
       'link' => ['uri' => 'internal:/menu-test/hierarchy/parent/child2/child'],
       'parent' => $links['child-1'],
     );
-    $link = MenuLinkContent::create($child_1_2);
+    $link = entity_create('menu_link_content', $child_1_2);
     $link->save();
     $links['child-1-2'] = $link->getPluginId();
 
@@ -102,7 +100,7 @@ function createLinkHierarchy($module = 'menu_test') {
       'link' => ['uri' => 'internal:/menu-test/hierarchy/parent/child'],
       'parent' => $links['parent'],
     );
-    $link = MenuLinkContent::create($child_2);
+    $link = entity_create('menu_link_content', $child_2);
     $link->save();
     $links['child-2'] = $link->getPluginId();
 
@@ -131,7 +129,7 @@ public function testCreateLink() {
       'bundle' => 'menu_link_content',
       'link' => [['uri' => 'internal:/']],
     );
-    $link = MenuLinkContent::create($options);
+    $link = entity_create('menu_link_content', $options);
     $link->save();
     // Make sure the changed timestamp is set.
     $this->assertEqual($link->getChangedTime(), REQUEST_TIME, 'Creating a menu link sets the "changed" timestamp.');
diff --git a/core/modules/menu_link_content/src/Tests/MenuLinkContentCacheabilityBubblingTest.php b/core/modules/menu_link_content/src/Tests/MenuLinkContentCacheabilityBubblingTest.php
index 6d0b682..825f493 100644
--- a/core/modules/menu_link_content/src/Tests/MenuLinkContentCacheabilityBubblingTest.php
+++ b/core/modules/menu_link_content/src/Tests/MenuLinkContentCacheabilityBubblingTest.php
@@ -39,7 +39,7 @@ protected function setUp() {
 
     $this->installEntitySchema('menu_link_content');
     $this->installEntitySchema('user');
-    $this->installSchema('system', ['router']);
+    $this->installSchema('system', ['url_alias', 'router']);
 
     // Ensure that the weight of module_link_content is higher than system.
     // @see menu_link_content_install()
diff --git a/core/modules/menu_link_content/src/Tests/MenuLinkContentDeleteFormTest.php b/core/modules/menu_link_content/src/Tests/MenuLinkContentDeleteFormTest.php
index 362c691..c411f83 100644
--- a/core/modules/menu_link_content/src/Tests/MenuLinkContentDeleteFormTest.php
+++ b/core/modules/menu_link_content/src/Tests/MenuLinkContentDeleteFormTest.php
@@ -56,8 +56,6 @@ public function testMenuLinkContentDeleteForm() {
     $this->assertLinkByHref($menu_link->url('edit-form'));
 
     \Drupal::service('module_installer')->install(['menu_ui']);
-    \Drupal::service('router.builder')->rebuild();
-
     // Make sure cancel URL points to menu_ui route now.
     $this->drupalGet($menu_link->urlInfo('delete-form'));
     $menu = Menu::load($menu_link->getMenuName());
diff --git a/core/modules/menu_link_content/src/Tests/PathAliasMenuLinkContentTest.php b/core/modules/menu_link_content/src/Tests/PathAliasMenuLinkContentTest.php
index 4ed9b4f..3cdec3f 100644
--- a/core/modules/menu_link_content/src/Tests/PathAliasMenuLinkContentTest.php
+++ b/core/modules/menu_link_content/src/Tests/PathAliasMenuLinkContentTest.php
@@ -32,7 +32,7 @@ protected function setUp() {
     parent::setUp();
 
     $this->installEntitySchema('menu_link_content');
-    $this->installSchema('system', ['router']);
+    $this->installSchema('system', ['url_alias', 'router']);
 
     // Ensure that the weight of module_link_content is higher than system.
     // @see menu_link_content_install()
diff --git a/core/modules/menu_link_content/tests/src/Unit/Plugin/migrate/source/MenuLinkSourceTest.php b/core/modules/menu_link_content/tests/src/Unit/Plugin/migrate/source/MenuLinkSourceTest.php
index 72955cb..9484ca4 100644
--- a/core/modules/menu_link_content/tests/src/Unit/Plugin/migrate/source/MenuLinkSourceTest.php
+++ b/core/modules/menu_link_content/tests/src/Unit/Plugin/migrate/source/MenuLinkSourceTest.php
@@ -4,7 +4,6 @@
  * @file
  * Contains \Drupal\Tests\menu_link_content\Unit\Plugin\migrate\source\MenuLinkSourceTest.
  */
-
 namespace Drupal\Tests\menu_link_content\Unit\Plugin\migrate\source;
 
 use Drupal\Component\Utility\Unicode;
diff --git a/core/modules/menu_ui/menu_ui.install b/core/modules/menu_ui/menu_ui.install
new file mode 100644
index 0000000..a79e503
--- /dev/null
+++ b/core/modules/menu_ui/menu_ui.install
@@ -0,0 +1,25 @@
+<?php
+
+/**
+ * @file
+ * Install, update and uninstall functions for the menu_ui module.
+ */
+
+/**
+ * Implements hook_install().
+ */
+function menu_ui_install() {
+  // Rebuild all the menu data.
+  // @todo - remove this when we understand why removing it breaks the
+  // standard install profile, possibly need to be handled in
+  // \Drupal\Core\Extension\ModuleHandler::install().
+  // @see https://www.drupal.org/node/2181151
+  \Drupal::service('router.builder')->rebuild();
+}
+
+/**
+ * Implements hook_uninstall().
+ */
+function menu_ui_uninstall() {
+  \Drupal::service('router.builder')->setRebuildNeeded();
+}
diff --git a/core/modules/menu_ui/menu_ui.module b/core/modules/menu_ui/menu_ui.module
index c3d87c4..f32608c 100644
--- a/core/modules/menu_ui/menu_ui.module
+++ b/core/modules/menu_ui/menu_ui.module
@@ -142,7 +142,7 @@ function _menu_ui_node_save(NodeInterface $node, array $values) {
   }
   else {
     // Create a new menu_link_content entity.
-    $entity = MenuLinkContent::create(array(
+    $entity = entity_create('menu_link_content', array(
       'link' => ['uri' => 'entity:node/' . $node->id()],
       'langcode' => $node->getUntranslated()->language()->getId(),
     ));
diff --git a/core/modules/menu_ui/src/Tests/MenuCacheTagsTest.php b/core/modules/menu_ui/src/Tests/MenuCacheTagsTest.php
index 5e8e691..520627e 100644
--- a/core/modules/menu_ui/src/Tests/MenuCacheTagsTest.php
+++ b/core/modules/menu_ui/src/Tests/MenuCacheTagsTest.php
@@ -8,9 +8,7 @@
 namespace Drupal\menu_ui\Tests;
 
 use Drupal\Core\Url;
-use Drupal\menu_link_content\Entity\MenuLinkContent;
 use Drupal\system\Tests\Cache\PageCacheTagsTestBase;
-use Drupal\system\Entity\Menu;
 
 /**
  * Tests the Menu and Menu Link entities' cache tags.
@@ -34,7 +32,7 @@ public function testMenuBlock() {
     $url = Url::fromRoute('test_page_test.test_page');
 
     // Create a Llama menu, add a link to it and place the corresponding block.
-    $menu = Menu::create(array(
+    $menu = entity_create('menu', array(
       'id' => 'llama',
       'label' => 'Llama',
       'description' => 'Description text',
@@ -81,7 +79,7 @@ public function testMenuBlock() {
 
     // Verify that after adding a menu link, there is a cache miss.
     $this->pass('Test addition of menu link.', 'Debug');
-    $menu_link_2 = MenuLinkContent::create(array(
+    $menu_link_2 = entity_create('menu_link_content', array(
       'id' => '',
       'parent' => '',
       'title' => 'Alpaca',
diff --git a/core/modules/menu_ui/src/Tests/MenuNodeTest.php b/core/modules/menu_ui/src/Tests/MenuNodeTest.php
index 4b99703..b57cc9d 100644
--- a/core/modules/menu_ui/src/Tests/MenuNodeTest.php
+++ b/core/modules/menu_ui/src/Tests/MenuNodeTest.php
@@ -198,7 +198,7 @@ function testMenuNodeFormWidget() {
     $this->assertNoLink($node_title);
 
     // Add a menu link to the Administration menu.
-    $item = MenuLinkContent::create(array(
+    $item = entity_create('menu_link_content', array(
       'link' => [['uri' => 'entity:node/' . $node->id()]],
       'title' => $this->randomMachineName(16),
       'menu_name' => 'admin',
@@ -220,7 +220,7 @@ function testMenuNodeFormWidget() {
     // Create a second node.
     $child_node = $this->drupalCreateNode(array('type' => 'article'));
     // Assign a menu link to the second node, being a child of the first one.
-    $child_item = MenuLinkContent::create(array(
+    $child_item = entity_create('menu_link_content', array(
       'link' => [['uri' => 'entity:node/' . $child_node->id()]],
       'title' => $this->randomMachineName(16),
       'parent' => $item->getPluginId(),
diff --git a/core/modules/menu_ui/src/Tests/MenuTest.php b/core/modules/menu_ui/src/Tests/MenuTest.php
index d350ab6..d88911a 100644
--- a/core/modules/menu_ui/src/Tests/MenuTest.php
+++ b/core/modules/menu_ui/src/Tests/MenuTest.php
@@ -157,7 +157,7 @@ function addCustomMenuCRUD() {
     $menu_name = substr(hash('sha256', $this->randomMachineName(16)), 0, MENU_MAX_MENU_NAME_LENGTH_UI);
     $label = $this->randomMachineName(16);
 
-    $menu = Menu::create(array(
+    $menu = entity_create('menu', array(
       'id' => $menu_name,
       'label' => $label,
       'description' => 'Description text',
diff --git a/core/modules/migrate/src/Annotation/MigrateDestination.php b/core/modules/migrate/src/Annotation/MigrateDestination.php
index d06e161..3837370 100644
--- a/core/modules/migrate/src/Annotation/MigrateDestination.php
+++ b/core/modules/migrate/src/Annotation/MigrateDestination.php
@@ -48,4 +48,13 @@ class MigrateDestination extends Plugin {
    */
   public $requirements_met = TRUE;
 
+  /**
+   * A class to make the plugin derivative aware.
+   *
+   * @var string
+   *
+   * @see \Drupal\Component\Plugin\Discovery\DerivativeDiscoveryDecorator
+   */
+  public $derivative;
+
 }
diff --git a/core/modules/migrate/src/Plugin/migrate/process/MenuLinkParent.php b/core/modules/migrate/src/Plugin/migrate/process/MenuLinkParent.php
index b15b321..78fbd14 100644
--- a/core/modules/migrate/src/Plugin/migrate/process/MenuLinkParent.php
+++ b/core/modules/migrate/src/Plugin/migrate/process/MenuLinkParent.php
@@ -5,6 +5,7 @@
  * Contains \Drupal\migrate\Plugin\migrate\process\MenuLinkContent.
  */
 
+
 namespace Drupal\migrate\Plugin\migrate\process;
 
 use Drupal\Core\Entity\EntityStorageInterface;
diff --git a/core/modules/migrate/tests/src/Unit/process/SkipOnEmptyTest.php b/core/modules/migrate/tests/src/Unit/process/SkipOnEmptyTest.php
index beea773..3a0d08c 100644
--- a/core/modules/migrate/tests/src/Unit/process/SkipOnEmptyTest.php
+++ b/core/modules/migrate/tests/src/Unit/process/SkipOnEmptyTest.php
@@ -5,6 +5,7 @@
  * Contains \Drupal\Tests\migrate\Unit\process\SkipOnEmptyTest.
  */
 
+
 namespace Drupal\Tests\migrate\Unit\process;
 use Drupal\migrate\Plugin\migrate\process\SkipOnEmpty;
 
diff --git a/core/modules/node/node.api.php b/core/modules/node/node.api.php
index 823e1ca..7be1829 100644
--- a/core/modules/node/node.api.php
+++ b/core/modules/node/node.api.php
@@ -1,16 +1,16 @@
 <?php
 
-/**
- * @file
- * Hooks specific to the Node module.
- */
-
 use Drupal\node\NodeInterface;
 use Drupal\Component\Utility\Html;
 use Drupal\Component\Utility\Xss;
 use Drupal\Core\Access\AccessResult;
 
 /**
+ * @file
+ * Hooks specific to the Node module.
+ */
+
+/**
  * @addtogroup hooks
  * @{
  */
@@ -148,7 +148,7 @@ function hook_node_grants(\Drupal\Core\Session\AccountInterface $account, $op) {
  * @param \Drupal\node\NodeInterface $node
  *   The node that has just been saved.
  *
- * @return
+ * @return array
  *   An array of grants as defined above.
  *
  * @see hook_node_access_records_alter()
diff --git a/core/modules/node/node.links.menu.yml b/core/modules/node/node.links.menu.yml
index ae7a9af..4a85f5e 100644
--- a/core/modules/node/node.links.menu.yml
+++ b/core/modules/node/node.links.menu.yml
@@ -1,7 +1,7 @@
 entity.node_type.collection:
   title: 'Content types'
   parent: system.admin_structure
-  description: 'Create and manage fields, forms, and display settings for your content.'
+  description: 'Create content types and manage their default settings.'
   route_name: entity.node_type.collection
 node.add_page:
   title: 'Add content'
diff --git a/core/modules/node/node.module b/core/modules/node/node.module
index ab310d5..91d27e8 100644
--- a/core/modules/node/node.module
+++ b/core/modules/node/node.module
@@ -324,12 +324,12 @@ function node_add_body_field(NodeTypeInterface $type, $label = 'Body') {
   $field_storage = FieldStorageConfig::loadByName('node', 'body');
   $field = FieldConfig::loadByName('node', $type->id(), 'body');
   if (empty($field)) {
-    $field = FieldConfig::create([
+    $field = entity_create('field_config', array(
       'field_storage' => $field_storage,
       'bundle' => $type->id(),
       'label' => $label,
       'settings' => array('display_summary' => TRUE),
-    ]);
+    ));
     $field->save();
 
     // Assign widget settings for the 'default' form mode.
@@ -832,7 +832,6 @@ function node_form_system_themes_admin_form_alter(&$form, FormStateInterface $fo
   $form['admin_theme']['use_admin_theme'] = array(
     '#type' => 'checkbox',
     '#title' => t('Use the administration theme when editing or creating content'),
-    '#description' => t('Control which roles can "View the administration theme" on the <a href=":permissions">Permissions page</a>.', array(':permissions' => '/admin/people/permissions')),
     '#default_value' => \Drupal::configFactory()->getEditable('node.settings')->get('use_admin_theme'),
   );
   $form['#submit'][] = 'node_form_system_themes_admin_form_submit';
@@ -1134,7 +1133,6 @@ function node_access_needs_rebuild($rebuild = NULL) {
  */
 function node_access_rebuild($batch_mode = FALSE) {
   $node_storage = \Drupal::entityManager()->getStorage('node');
-  /** @var \Drupal\node\NodeAccessControlHandlerInterface $access_control_handler */
   $access_control_handler = \Drupal::entityManager()->getAccessControlHandler('node');
   $access_control_handler->deleteGrants();
   // Only recalculate if the site is using a node_access module.
@@ -1164,8 +1162,7 @@ function node_access_rebuild($batch_mode = FALSE) {
         // To preserve database integrity, only write grants if the node
         // loads successfully.
         if (!empty($node)) {
-          $grants = $access_control_handler->acquireGrants($node);
-          \Drupal::service('node.grant_storage')->write($node, $grants);
+          $access_control_handler->writeGrants($node);
         }
       }
     }
@@ -1215,10 +1212,7 @@ function _node_access_rebuild_batch_operation(&$context) {
     // To preserve database integrity, only write grants if the node
     // loads successfully.
     if (!empty($node)) {
-      /** @var \Drupal\node\NodeAccessControlHandlerInterface $access_control_handler */
-      $access_control_handler = \Drupal::entityManager()->getAccessControlHandler('node');
-      $grants = $access_control_handler->acquireGrants($node);
-      \Drupal::service('node.grant_storage')->write($node, $grants);
+      \Drupal::entityManager()->getAccessControlHandler('node')->writeGrants($node);
     }
     $context['sandbox']['progress']++;
     $context['sandbox']['current_node'] = $nid;
diff --git a/core/modules/node/src/Entity/Node.php b/core/modules/node/src/Entity/Node.php
index 7b20a3b..118e862 100644
--- a/core/modules/node/src/Entity/Node.php
+++ b/core/modules/node/src/Entity/Node.php
@@ -131,10 +131,7 @@ public function postSave(EntityStorageInterface $storage, $update = TRUE) {
     // default revision. There's no need to delete existing records if the node
     // is new.
     if ($this->isDefaultRevision()) {
-      /** @var \Drupal\node\NodeAccessControlHandlerInterface $access_control_handler */
-      $access_control_handler = \Drupal::entityManager()->getAccessControlHandler('node');
-      $grants = $access_control_handler->acquireGrants($this);
-      \Drupal::service('node.grant_storage')->write($this, $grants, NULL, $update);
+      \Drupal::entityManager()->getAccessControlHandler('node')->writeGrants($this, $update);
     }
 
     // Reindex the node when it is updated. The node is automatically indexed
@@ -325,7 +322,41 @@ public function setRevisionAuthorId($uid) {
    * {@inheritdoc}
    */
   public static function baseFieldDefinitions(EntityTypeInterface $entity_type) {
-    $fields = parent::baseFieldDefinitions($entity_type);
+    $fields['nid'] = BaseFieldDefinition::create('integer')
+      ->setLabel(t('Node ID'))
+      ->setDescription(t('The node ID.'))
+      ->setReadOnly(TRUE)
+      ->setSetting('unsigned', TRUE);
+
+    $fields['uuid'] = BaseFieldDefinition::create('uuid')
+      ->setLabel(t('UUID'))
+      ->setDescription(t('The node UUID.'))
+      ->setReadOnly(TRUE);
+
+    $fields['vid'] = BaseFieldDefinition::create('integer')
+      ->setLabel(t('Revision ID'))
+      ->setDescription(t('The node revision ID.'))
+      ->setReadOnly(TRUE)
+      ->setSetting('unsigned', TRUE);
+
+    $fields['type'] = BaseFieldDefinition::create('entity_reference')
+      ->setLabel(t('Type'))
+      ->setDescription(t('The node type.'))
+      ->setSetting('target_type', 'node_type')
+      ->setReadOnly(TRUE);
+
+    $fields['langcode'] = BaseFieldDefinition::create('language')
+      ->setLabel(t('Language'))
+      ->setDescription(t('The node language code.'))
+      ->setTranslatable(TRUE)
+      ->setRevisionable(TRUE)
+      ->setDisplayOptions('view', array(
+        'type' => 'hidden',
+      ))
+      ->setDisplayOptions('form', array(
+        'type' => 'language_select',
+        'weight' => 2,
+      ));
 
     $fields['title'] = BaseFieldDefinition::create('string')
       ->setLabel(t('Title'))
diff --git a/core/modules/node/src/Form/NodeRevisionRevertForm.php b/core/modules/node/src/Form/NodeRevisionRevertForm.php
index f4899f3..717cf28 100644
--- a/core/modules/node/src/Form/NodeRevisionRevertForm.php
+++ b/core/modules/node/src/Form/NodeRevisionRevertForm.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\node\Form;
 
-use Drupal\Core\Datetime\DateFormatterInterface;
+use Drupal\Core\Datetime\DateFormatter;
 use Drupal\Core\Entity\EntityStorageInterface;
 use Drupal\Core\Form\ConfirmFormBase;
 use Drupal\Core\Form\FormStateInterface;
@@ -37,7 +37,7 @@ class NodeRevisionRevertForm extends ConfirmFormBase {
   /**
    * The date formatter service.
    *
-   * @var \Drupal\Core\Datetime\DateFormatterInterface
+   * @var \Drupal\Core\Datetime\DateFormatter
    */
   protected $dateFormatter;
 
@@ -46,10 +46,10 @@ class NodeRevisionRevertForm extends ConfirmFormBase {
    *
    * @param \Drupal\Core\Entity\EntityStorageInterface $node_storage
    *   The node storage.
-   * @param \Drupal\Core\Datetime\DateFormatterInterface $date_formatter
+   * @param \Drupal\Core\Datetime\DateFormatter $date_formatter
    *   The date formatter service.
    */
-  public function __construct(EntityStorageInterface $node_storage, DateFormatterInterface $date_formatter) {
+  public function __construct(EntityStorageInterface $node_storage, DateFormatter $date_formatter) {
     $this->nodeStorage = $node_storage;
     $this->dateFormatter = $date_formatter;
   }
diff --git a/core/modules/node/src/Form/NodeRevisionRevertTranslationForm.php b/core/modules/node/src/Form/NodeRevisionRevertTranslationForm.php
index 7e8a4eb..d2c996e 100644
--- a/core/modules/node/src/Form/NodeRevisionRevertTranslationForm.php
+++ b/core/modules/node/src/Form/NodeRevisionRevertTranslationForm.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\node\Form;
 
-use Drupal\Core\Datetime\DateFormatterInterface;
+use Drupal\Core\Datetime\DateFormatter;
 use Drupal\Core\Entity\EntityStorageInterface;
 use Drupal\Core\Form\FormStateInterface;
 use Drupal\Core\Language\LanguageManagerInterface;
@@ -38,12 +38,12 @@ class NodeRevisionRevertTranslationForm extends NodeRevisionRevertForm {
    *
    * @param \Drupal\Core\Entity\EntityStorageInterface $node_storage
    *   The node storage.
-   * @param \Drupal\Core\Datetime\DateFormatterInterface $date_formatter
+   * @param \Drupal\Core\Datetime\DateFormatter $date_formatter
    *   The date formatter service.
    * @param \Drupal\Core\Language\LanguageManagerInterface $language_manager
    *   The language manager.
    */
-  public function __construct(EntityStorageInterface $node_storage, DateFormatterInterface $date_formatter, LanguageManagerInterface $language_manager) {
+  public function __construct(EntityStorageInterface $node_storage, DateFormatter $date_formatter, LanguageManagerInterface $language_manager) {
     parent::__construct($node_storage, $date_formatter);
     $this->languageManager = $language_manager;
   }
diff --git a/core/modules/node/src/NodeAccessControlHandlerInterface.php b/core/modules/node/src/NodeAccessControlHandlerInterface.php
index 0b629d7..9e7c34a 100644
--- a/core/modules/node/src/NodeAccessControlHandlerInterface.php
+++ b/core/modules/node/src/NodeAccessControlHandlerInterface.php
@@ -35,11 +35,13 @@ public function acquireGrants(NodeInterface $node);
   /**
    * Writes a list of grants to the database, deleting any previously saved ones.
    *
-   * Modules that use node access can use this function when doing mass updates
-   * due to widespread permission changes.
+   * If a realm is provided, it will only delete grants from that realm, but it
+   * will always delete a grant from the 'all' realm. Modules that use node
+   * access can use this function when doing mass updates due to widespread
+   * permission changes.
    *
    * Note: Don't call this function directly from a contributed module. Call
-   * \Drupal\node\NodeAccessControlHandlerInterface::acquireGrants() instead.
+   * node_access_acquire_grants() instead.
    *
    * @param \Drupal\node\NodeInterface $node
    *   The node whose grants are being written.
@@ -47,9 +49,6 @@ public function acquireGrants(NodeInterface $node);
    *   (optional) If false, does not delete records. This is only for optimization
    *   purposes, and assumes the caller has already performed a mass delete of
    *   some form. Defaults to TRUE.
-   *
-   * @deprecated in Drupal 8.x, will be removed before Drupal 9.0.
-   *   Use \Drupal\node\NodeAccessControlHandlerInterface::acquireGrants().
    */
   public function writeGrants(NodeInterface $node, $delete = TRUE);
 
diff --git a/core/modules/node/src/NodeGrantDatabaseStorageInterface.php b/core/modules/node/src/NodeGrantDatabaseStorageInterface.php
index 9a2586f..c59f941 100644
--- a/core/modules/node/src/NodeGrantDatabaseStorageInterface.php
+++ b/core/modules/node/src/NodeGrantDatabaseStorageInterface.php
@@ -61,7 +61,7 @@ public function alterQuery($query, array $tables, $op, AccountInterface $account
    * permission changes.
    *
    * Note: Don't call this method directly from a contributed module. Call
-   * \Drupal\node\NodeAccessControlHandlerInterface::acquireGrants() instead.
+   * node_access_write_grants() instead.
    *
    * @param \Drupal\node\NodeInterface $node
    *   The node whose grants are being written.
@@ -78,6 +78,9 @@ public function alterQuery($query, array $tables, $op, AccountInterface $account
    *   (optional) If false, does not delete records. This is only for optimization
    *   purposes, and assumes the caller has already performed a mass delete of
    *   some form. Defaults to TRUE.
+   *
+   * @see node_access_write_grants()
+   * @see node_access_acquire_grants()
    */
   public function write(NodeInterface $node, array $grants, $realm = NULL, $delete = TRUE);
 
diff --git a/core/modules/node/src/NodeViewsData.php b/core/modules/node/src/NodeViewsData.php
index 1c648c4..72a0baa 100644
--- a/core/modules/node/src/NodeViewsData.php
+++ b/core/modules/node/src/NodeViewsData.php
@@ -37,43 +37,43 @@ public function getViewsData() {
 
     $data['node_field_data']['type']['argument']['id'] = 'node_type';
 
-    $data['node_field_data']['langcode']['help'] = $this->t('The language of the content or translation.');
+    $data['node_field_data']['langcode']['help'] = t('The language of the content or translation.');
 
-    $data['node_field_data']['status']['filter']['label'] = $this->t('Published status');
+    $data['node_field_data']['status']['filter']['label'] = t('Published status');
     $data['node_field_data']['status']['filter']['type'] = 'yes-no';
     // Use status = 1 instead of status <> 0 in WHERE statement.
     $data['node_field_data']['status']['filter']['use_equal'] = TRUE;
 
     $data['node_field_data']['status_extra'] = array(
-      'title' => $this->t('Published status or admin user'),
-      'help' => $this->t('Filters out unpublished content if the current user cannot view it.'),
+      'title' => t('Published status or admin user'),
+      'help' => t('Filters out unpublished content if the current user cannot view it.'),
       'filter' => array(
         'field' => 'status',
         'id' => 'node_status',
-        'label' => $this->t('Published status or admin user'),
+        'label' => t('Published status or admin user'),
       ),
     );
 
-    $data['node_field_data']['promote']['help'] = $this->t('A boolean indicating whether the node is visible on the front page.');
-    $data['node_field_data']['promote']['filter']['label'] = $this->t('Promoted to front page status');
+    $data['node_field_data']['promote']['help'] = t('A boolean indicating whether the node is visible on the front page.');
+    $data['node_field_data']['promote']['filter']['label'] = t('Promoted to front page status');
     $data['node_field_data']['promote']['filter']['type'] = 'yes-no';
 
-    $data['node_field_data']['sticky']['help'] = $this->t('A boolean indicating whether the node should sort to the top of content lists.');
-    $data['node_field_data']['sticky']['filter']['label'] = $this->t('Sticky status');
+    $data['node_field_data']['sticky']['help'] = t('A boolean indicating whether the node should sort to the top of content lists.');
+    $data['node_field_data']['sticky']['filter']['label'] = t('Sticky status');
     $data['node_field_data']['sticky']['filter']['type'] = 'yes-no';
-    $data['node_field_data']['sticky']['sort']['help'] = $this->t('Whether or not the content is sticky. To list sticky content first, set this to descending.');
+    $data['node_field_data']['sticky']['sort']['help'] = t('Whether or not the content is sticky. To list sticky content first, set this to descending.');
 
     $data['node']['path'] = array(
       'field' => array(
-        'title' => $this->t('Path'),
-        'help' => $this->t('The aliased path to this content.'),
+        'title' => t('Path'),
+        'help' => t('The aliased path to this content.'),
         'id' => 'node_path',
       ),
     );
 
     $data['node']['node_bulk_form'] = array(
-      'title' => $this->t('Node operations bulk form'),
-      'help' => $this->t('Add a form element that lets you run operations on multiple nodes.'),
+      'title' => t('Node operations bulk form'),
+      'help' => t('Add a form element that lets you run operations on multiple nodes.'),
       'field' => array(
         'id' => 'node_bulk_form',
       ),
@@ -84,8 +84,8 @@ public function getViewsData() {
     // @todo Add similar support to any date field
     // @see https://www.drupal.org/node/2337507
     $data['node_field_data']['created_fulldate'] = array(
-      'title' => $this->t('Created date'),
-      'help' => $this->t('Date in the form of CCYYMMDD.'),
+      'title' => t('Created date'),
+      'help' => t('Date in the form of CCYYMMDD.'),
       'argument' => array(
         'field' => 'created',
         'id' => 'date_fulldate',
@@ -93,8 +93,8 @@ public function getViewsData() {
     );
 
     $data['node_field_data']['created_year_month'] = array(
-      'title' => $this->t('Created year + month'),
-      'help' => $this->t('Date in the form of YYYYMM.'),
+      'title' => t('Created year + month'),
+      'help' => t('Date in the form of YYYYMM.'),
       'argument' => array(
         'field' => 'created',
         'id' => 'date_year_month',
@@ -102,8 +102,8 @@ public function getViewsData() {
     );
 
     $data['node_field_data']['created_year'] = array(
-      'title' => $this->t('Created year'),
-      'help' => $this->t('Date in the form of YYYY.'),
+      'title' => t('Created year'),
+      'help' => t('Date in the form of YYYY.'),
       'argument' => array(
         'field' => 'created',
         'id' => 'date_year',
@@ -111,8 +111,8 @@ public function getViewsData() {
     );
 
     $data['node_field_data']['created_month'] = array(
-      'title' => $this->t('Created month'),
-      'help' => $this->t('Date in the form of MM (01 - 12).'),
+      'title' => t('Created month'),
+      'help' => t('Date in the form of MM (01 - 12).'),
       'argument' => array(
         'field' => 'created',
         'id' => 'date_month',
@@ -120,8 +120,8 @@ public function getViewsData() {
     );
 
     $data['node_field_data']['created_day'] = array(
-      'title' => $this->t('Created day'),
-      'help' => $this->t('Date in the form of DD (01 - 31).'),
+      'title' => t('Created day'),
+      'help' => t('Date in the form of DD (01 - 31).'),
       'argument' => array(
         'field' => 'created',
         'id' => 'date_day',
@@ -129,8 +129,8 @@ public function getViewsData() {
     );
 
     $data['node_field_data']['created_week'] = array(
-      'title' => $this->t('Created week'),
-      'help' => $this->t('Date in the form of WW (01 - 53).'),
+      'title' => t('Created week'),
+      'help' => t('Date in the form of WW (01 - 53).'),
       'argument' => array(
         'field' => 'created',
         'id' => 'date_week',
@@ -138,8 +138,8 @@ public function getViewsData() {
     );
 
     $data['node_field_data']['changed_fulldate'] = array(
-      'title' => $this->t('Updated date'),
-      'help' => $this->t('Date in the form of CCYYMMDD.'),
+      'title' => t('Updated date'),
+      'help' => t('Date in the form of CCYYMMDD.'),
       'argument' => array(
         'field' => 'changed',
         'id' => 'date_fulldate',
@@ -147,8 +147,8 @@ public function getViewsData() {
     );
 
     $data['node_field_data']['changed_year_month'] = array(
-      'title' => $this->t('Updated year + month'),
-      'help' => $this->t('Date in the form of YYYYMM.'),
+      'title' => t('Updated year + month'),
+      'help' => t('Date in the form of YYYYMM.'),
       'argument' => array(
         'field' => 'changed',
         'id' => 'date_year_month',
@@ -156,8 +156,8 @@ public function getViewsData() {
     );
 
     $data['node_field_data']['changed_year'] = array(
-      'title' => $this->t('Updated year'),
-      'help' => $this->t('Date in the form of YYYY.'),
+      'title' => t('Updated year'),
+      'help' => t('Date in the form of YYYY.'),
       'argument' => array(
         'field' => 'changed',
         'id' => 'date_year',
@@ -165,8 +165,8 @@ public function getViewsData() {
     );
 
     $data['node_field_data']['changed_month'] = array(
-      'title' => $this->t('Updated month'),
-      'help' => $this->t('Date in the form of MM (01 - 12).'),
+      'title' => t('Updated month'),
+      'help' => t('Date in the form of MM (01 - 12).'),
       'argument' => array(
         'field' => 'changed',
         'id' => 'date_month',
@@ -174,8 +174,8 @@ public function getViewsData() {
     );
 
     $data['node_field_data']['changed_day'] = array(
-      'title' => $this->t('Updated day'),
-      'help' => $this->t('Date in the form of DD (01 - 31).'),
+      'title' => t('Updated day'),
+      'help' => t('Date in the form of DD (01 - 31).'),
       'argument' => array(
         'field' => 'changed',
         'id' => 'date_day',
@@ -183,30 +183,30 @@ public function getViewsData() {
     );
 
     $data['node_field_data']['changed_week'] = array(
-      'title' => $this->t('Updated week'),
-      'help' => $this->t('Date in the form of WW (01 - 53).'),
+      'title' => t('Updated week'),
+      'help' => t('Date in the form of WW (01 - 53).'),
       'argument' => array(
         'field' => 'changed',
         'id' => 'date_week',
       ),
     );
 
-    $data['node_field_data']['uid']['help'] = $this->t('The user authoring the content. If you need more fields than the uid add the content: author relationship');
+    $data['node_field_data']['uid']['help'] = t('The user authoring the content. If you need more fields than the uid add the content: author relationship');
     $data['node_field_data']['uid']['filter']['id'] = 'user_name';
-    $data['node_field_data']['uid']['relationship']['title'] = $this->t('Content author');
-    $data['node_field_data']['uid']['relationship']['help'] = $this->t('Relate content to the user who created it.');
-    $data['node_field_data']['uid']['relationship']['label'] = $this->t('author');
+    $data['node_field_data']['uid']['relationship']['title'] = t('Content author');
+    $data['node_field_data']['uid']['relationship']['help'] = t('Relate content to the user who created it.');
+    $data['node_field_data']['uid']['relationship']['label'] = t('author');
 
     $data['node']['node_listing_empty'] = array(
-      'title' => $this->t('Empty Node Frontpage behavior'),
-      'help' => $this->t('Provides a link to the node add overview page.'),
+      'title' => t('Empty Node Frontpage behavior'),
+      'help' => t('Provides a link to the node add overview page.'),
       'area' => array(
         'id' => 'node_listing_empty',
       ),
     );
 
-    $data['node_field_data']['uid_revision']['title'] = $this->t('User has a revision');
-    $data['node_field_data']['uid_revision']['help'] = $this->t('All nodes where a certain user has a revision');
+    $data['node_field_data']['uid_revision']['title'] = t('User has a revision');
+    $data['node_field_data']['uid_revision']['help'] = t('All nodes where a certain user has a revision');
     $data['node_field_data']['uid_revision']['real field'] = 'nid';
     $data['node_field_data']['uid_revision']['filter']['id'] = 'node_uid_revision';
     $data['node_field_data']['uid_revision']['argument']['id'] = 'node_uid_revision';
@@ -214,7 +214,7 @@ public function getViewsData() {
     $data['node_field_revision']['table']['wizard_id'] = 'node_revision';
 
     // Advertise this table as a possible base table.
-    $data['node_field_revision']['table']['base']['help'] = $this->t('Content revision is a history of changes to content.');
+    $data['node_field_revision']['table']['base']['help'] = t('Content revision is a history of changes to content.');
     $data['node_field_revision']['table']['base']['defaults']['title'] = 'title';
 
     $data['node_field_revision']['nid']['argument'] = [
@@ -227,8 +227,8 @@ public function getViewsData() {
     $data['node_field_revision']['nid']['relationship']['id'] = 'standard';
     $data['node_field_revision']['nid']['relationship']['base'] = 'node_field_data';
     $data['node_field_revision']['nid']['relationship']['base field'] = 'nid';
-    $data['node_field_revision']['nid']['relationship']['title'] = $this->t('Content');
-    $data['node_field_revision']['nid']['relationship']['label'] = $this->t('Get the actual content from a content revision.');
+    $data['node_field_revision']['nid']['relationship']['title'] = t('Content');
+    $data['node_field_revision']['nid']['relationship']['label'] = t('Get the actual content from a content revision.');
 
     $data['node_field_revision']['vid'] = array(
       'argument' => array(
@@ -239,35 +239,35 @@ public function getViewsData() {
         'id' => 'standard',
         'base' => 'node_field_data',
         'base field' => 'vid',
-        'title' => $this->t('Content'),
-        'label' => $this->t('Get the actual content from a content revision.'),
+        'title' => t('Content'),
+        'label' => t('Get the actual content from a content revision.'),
       ),
     ) + $data['node_field_revision']['vid'];
 
-    $data['node_field_revision']['langcode']['help'] = $this->t('The language the original content is in.');
+    $data['node_field_revision']['langcode']['help'] = t('The language the original content is in.');
 
-    $data['node_revision']['revision_uid']['help'] = $this->t('Relate a content revision to the user who created the revision.');
-    $data['node_revision']['revision_uid']['relationship']['label'] = $this->t('revision user');
+    $data['node_revision']['revision_uid']['help'] = t('Relate a content revision to the user who created the revision.');
+    $data['node_revision']['revision_uid']['relationship']['label'] = t('revision user');
 
     $data['node_field_revision']['table']['wizard_id'] = 'node_field_revision';
 
     $data['node_field_revision']['table']['join']['node_field_data']['left_field'] = 'vid';
     $data['node_field_revision']['table']['join']['node_field_data']['field'] = 'vid';
 
-    $data['node_field_revision']['status']['filter']['label'] = $this->t('Published');
+    $data['node_field_revision']['status']['filter']['label'] = t('Published');
     $data['node_field_revision']['status']['filter']['type'] = 'yes-no';
     $data['node_field_revision']['status']['filter']['use_equal'] = TRUE;
 
-    $data['node_field_revision']['promote']['help'] = $this->t('A boolean indicating whether the node is visible on the front page.');
+    $data['node_field_revision']['promote']['help'] = t('A boolean indicating whether the node is visible on the front page.');
 
-    $data['node_field_revision']['sticky']['help'] = $this->t('A boolean indicating whether the node should sort to the top of content lists.');
+    $data['node_field_revision']['sticky']['help'] = t('A boolean indicating whether the node should sort to the top of content lists.');
 
-    $data['node_field_revision']['langcode']['help'] = $this->t('The language of the content or translation.');
+    $data['node_field_revision']['langcode']['help'] = t('The language of the content or translation.');
 
     $data['node_field_revision']['link_to_revision'] = array(
       'field' => array(
-        'title' => $this->t('Link to revision'),
-        'help' => $this->t('Provide a simple link to the revision.'),
+        'title' => t('Link to revision'),
+        'help' => t('Provide a simple link to the revision.'),
         'id' => 'node_revision_link',
         'click sortable' => FALSE,
       ),
@@ -275,8 +275,8 @@ public function getViewsData() {
 
     $data['node_field_revision']['revert_revision'] = array(
       'field' => array(
-        'title' => $this->t('Link to revert revision'),
-        'help' => $this->t('Provide a simple link to revert to the revision.'),
+        'title' => t('Link to revert revision'),
+        'help' => t('Provide a simple link to revert to the revision.'),
         'id' => 'node_revision_link_revert',
         'click sortable' => FALSE,
       ),
@@ -284,8 +284,8 @@ public function getViewsData() {
 
     $data['node_field_revision']['delete_revision'] = array(
       'field' => array(
-        'title' => $this->t('Link to delete revision'),
-        'help' => $this->t('Provide a simple link to delete the content revision.'),
+        'title' => t('Link to delete revision'),
+        'help' => t('Provide a simple link to delete the content revision.'),
         'id' => 'node_revision_link_delete',
         'click sortable' => FALSE,
       ),
@@ -293,7 +293,7 @@ public function getViewsData() {
 
     // Define the base group of this table. Fields that don't have a group defined
     // will go into this field by default.
-    $data['node_access']['table']['group']  = $this->t('Content access');
+    $data['node_access']['table']['group']  = t('Content access');
 
     // For other base tables, explain how we join.
     $data['node_access']['table']['join'] = array(
@@ -303,11 +303,11 @@ public function getViewsData() {
       ),
     );
     $data['node_access']['nid'] = array(
-      'title' => $this->t('Access'),
-      'help' => $this->t('Filter by access.'),
+      'title' => t('Access'),
+      'help' => t('Filter by access.'),
       'filter' => array(
         'id' => 'node_access',
-        'help' => $this->t('Filter for content by view access. <strong>Not necessary if you are using node as your base table.</strong>'),
+        'help' => t('Filter for content by view access. <strong>Not necessary if you are using node as your base table.</strong>'),
       ),
     );
 
@@ -324,7 +324,7 @@ public function getViewsData() {
       }
 
       if ($enabled) {
-        $data['node_search_index']['table']['group'] = $this->t('Search');
+        $data['node_search_index']['table']['group'] = t('Search');
 
         // Automatically join to the node table (or actually, node_field_data).
         // Use a Views table alias to allow other modules to use this table too,
@@ -357,8 +357,8 @@ public function getViewsData() {
         );
 
         $data['node_search_index']['score'] = array(
-          'title' => $this->t('Score'),
-          'help' => $this->t('The score of the search item. This will not be used if the search filter is not also present.'),
+          'title' => t('Score'),
+          'help' => t('The score of the search item. This will not be used if the search filter is not also present.'),
           'field' => array(
             'id' => 'search_score',
             'float' => TRUE,
@@ -371,8 +371,8 @@ public function getViewsData() {
         );
 
         $data['node_search_index']['keys'] = array(
-          'title' => $this->t('Search Keywords'),
-          'help' => $this->t('The keywords to search for.'),
+          'title' => t('Search Keywords'),
+          'help' => t('The keywords to search for.'),
           'filter' => array(
             'id' => 'search_keywords',
             'no group by' => TRUE,
diff --git a/core/modules/node/src/Tests/Condition/NodeConditionTest.php b/core/modules/node/src/Tests/Condition/NodeConditionTest.php
index 6af1d77..d739751 100644
--- a/core/modules/node/src/Tests/Condition/NodeConditionTest.php
+++ b/core/modules/node/src/Tests/Condition/NodeConditionTest.php
@@ -7,8 +7,6 @@
 
 namespace Drupal\node\Tests\Condition;
 
-use Drupal\node\Entity\Node;
-use Drupal\node\Entity\NodeType;
 use Drupal\system\Tests\Entity\EntityUnitTestBase;
 
 /**
@@ -24,11 +22,11 @@ protected function setUp() {
     parent::setUp();
 
     // Create the node bundles required for testing.
-    $type = NodeType::create(['type' => 'page', 'name' => 'page']);
+    $type = entity_create('node_type', array('type' => 'page', 'name' => 'page'));
     $type->save();
-    $type = NodeType::create(['type' => 'article', 'name' => 'article']);
+    $type = entity_create('node_type', array('type' => 'article', 'name' => 'article'));
     $type->save();
-    $type = NodeType::create(['type' => 'test', 'name' => 'test']);
+    $type = entity_create('node_type', array('type' => 'test', 'name' => 'test'));
     $type->save();
   }
 
@@ -40,11 +38,11 @@ function testConditions() {
     $this->createUser();
 
     // Get some nodes of various types to check against.
-    $page = Node::create(['type' => 'page', 'title' => $this->randomMachineName(), 'uid' => 1]);
+    $page = entity_create('node', array('type' => 'page', 'title' => $this->randomMachineName(), 'uid' => 1));
     $page->save();
-    $article = Node::create(['type' => 'article', 'title' => $this->randomMachineName(), 'uid' => 1]);
+    $article = entity_create('node', array('type' => 'article', 'title' => $this->randomMachineName(), 'uid' => 1));
     $article->save();
-    $test = Node::create(['type' => 'test', 'title' => $this->randomMachineName(), 'uid' => 1]);
+    $test = entity_create('node', array('type' => 'test', 'title' => $this->randomMachineName(), 'uid' => 1));
     $test->save();
 
     // Grab the node type condition and configure it to check against node type
diff --git a/core/modules/node/src/Tests/MultiStepNodeFormBasicOptionsTest.php b/core/modules/node/src/Tests/MultiStepNodeFormBasicOptionsTest.php
index 9e3803f..84ffbe2 100644
--- a/core/modules/node/src/Tests/MultiStepNodeFormBasicOptionsTest.php
+++ b/core/modules/node/src/Tests/MultiStepNodeFormBasicOptionsTest.php
@@ -7,8 +7,6 @@
 
 namespace Drupal\node\Tests;
 use Drupal\Component\Utility\Unicode;
-use Drupal\field\Entity\FieldConfig;
-use Drupal\field\Entity\FieldStorageConfig;
 
 /**
  * Tests the persistence of basic options through multiple steps.
@@ -34,7 +32,7 @@ function testMultiStepNodeFormBasicOptions() {
 
     // Create an unlimited cardinality field.
     $this->fieldName = Unicode::strtolower($this->randomMachineName());
-    FieldStorageConfig::create(array(
+    entity_create('field_storage_config', array(
       'field_name' => $this->fieldName,
       'entity_type' => 'node',
       'type' => 'text',
@@ -42,12 +40,12 @@ function testMultiStepNodeFormBasicOptions() {
     ))->save();
 
     // Attach an instance of the field to the page content type.
-    FieldConfig::create([
+    entity_create('field_config', array(
       'field_name' => $this->fieldName,
       'entity_type' => 'node',
       'bundle' => 'page',
       'label' => $this->randomMachineName() . '_label',
-    ])->save();
+    ))->save();
     entity_get_form_display('node', 'page', 'default')
       ->setComponent($this->fieldName, array(
         'type' => 'text_textfield',
diff --git a/core/modules/node/src/Tests/NodeAccessFieldTest.php b/core/modules/node/src/Tests/NodeAccessFieldTest.php
index d9f39b4..ab490bb 100644
--- a/core/modules/node/src/Tests/NodeAccessFieldTest.php
+++ b/core/modules/node/src/Tests/NodeAccessFieldTest.php
@@ -7,8 +7,6 @@
 
 namespace Drupal\node\Tests;
 use Drupal\Component\Utility\Unicode;
-use Drupal\field\Entity\FieldConfig;
-use Drupal\field\Entity\FieldStorageConfig;
 
 /**
  * Tests the interaction of the node access system with fields.
@@ -56,16 +54,16 @@ protected function setUp() {
 
     // Add a custom field to the page content type.
     $this->fieldName = Unicode::strtolower($this->randomMachineName() . '_field_name');
-    FieldStorageConfig::create(array(
+    entity_create('field_storage_config', array(
       'field_name' => $this->fieldName,
       'entity_type' => 'node',
       'type' => 'text'
     ))->save();
-    FieldConfig::create([
+    entity_create('field_config', array(
       'field_name' => $this->fieldName,
       'entity_type' => 'node',
       'bundle' => 'page',
-    ])->save();
+    ))->save();
     entity_get_display('node', 'page', 'default')
       ->setComponent($this->fieldName)
       ->save();
diff --git a/core/modules/node/src/Tests/NodeAccessLanguageAwareCombinationTest.php b/core/modules/node/src/Tests/NodeAccessLanguageAwareCombinationTest.php
index 3d52bc7..3051af1 100644
--- a/core/modules/node/src/Tests/NodeAccessLanguageAwareCombinationTest.php
+++ b/core/modules/node/src/Tests/NodeAccessLanguageAwareCombinationTest.php
@@ -8,11 +8,9 @@
 namespace Drupal\node\Tests;
 
 use Drupal\Core\Language\LanguageInterface;
-use Drupal\field\Entity\FieldConfig;
 use Drupal\language\Entity\ConfigurableLanguage;
 use Drupal\node\Entity\NodeType;
 use Drupal\user\Entity\User;
-use Drupal\field\Entity\FieldStorageConfig;
 
 /**
  * Tests node access functionality with multiple languages and two node access
@@ -57,7 +55,7 @@ protected function setUp() {
 
     // Create the 'private' field, which allows the node to be marked as private
     // (restricted access) in a given translation.
-    $field_storage = FieldStorageConfig::create(array(
+    $field_storage = entity_create('field_storage_config', array(
       'field_name' => 'field_private',
       'entity_type' => 'node',
       'type' => 'boolean',
@@ -65,7 +63,7 @@ protected function setUp() {
     ));
     $field_storage->save();
 
-    FieldConfig::create([
+    entity_create('field_config', array(
       'field_storage' => $field_storage,
       'bundle' => 'page',
       'widget' => array(
@@ -75,7 +73,7 @@ protected function setUp() {
         'on_label' => 'Private',
         'off_label' => 'Not private',
       ),
-    ])->save();
+    ))->save();
 
     // After enabling a node access module, the access table has to be rebuild.
     node_access_rebuild();
diff --git a/core/modules/node/src/Tests/NodeAccessLanguageAwareTest.php b/core/modules/node/src/Tests/NodeAccessLanguageAwareTest.php
index 6715cc0..5770746 100644
--- a/core/modules/node/src/Tests/NodeAccessLanguageAwareTest.php
+++ b/core/modules/node/src/Tests/NodeAccessLanguageAwareTest.php
@@ -8,10 +8,8 @@
 namespace Drupal\node\Tests;
 
 use Drupal\Core\Language\LanguageInterface;
-use Drupal\field\Entity\FieldConfig;
 use Drupal\language\Entity\ConfigurableLanguage;
 use Drupal\user\Entity\User;
-use Drupal\field\Entity\FieldStorageConfig;
 
 /**
  * Tests node_access and db_select() with node_access tag functionality with
@@ -54,7 +52,7 @@ protected function setUp() {
 
     // Create the 'private' field, which allows the node to be marked as private
     // (restricted access) in a given translation.
-    $field_storage = FieldStorageConfig::create(array(
+    $field_storage = entity_create('field_storage_config', array(
       'field_name' => 'field_private',
       'entity_type' => 'node',
       'type' => 'boolean',
@@ -62,7 +60,7 @@ protected function setUp() {
     ));
     $field_storage->save();
 
-    FieldConfig::create([
+    entity_create('field_config', array(
       'field_storage' => $field_storage,
       'bundle' => 'page',
       'widget' => array(
@@ -72,7 +70,7 @@ protected function setUp() {
         'on_label' => 'Private',
         'off_label' => 'Not private',
       ),
-    ])->save();
+    ))->save();
 
     // After enabling a node access module, the access table has to be rebuild.
     node_access_rebuild();
diff --git a/core/modules/node/src/Tests/NodeAccessPagerTest.php b/core/modules/node/src/Tests/NodeAccessPagerTest.php
index 6eb9eff..c442566 100644
--- a/core/modules/node/src/Tests/NodeAccessPagerTest.php
+++ b/core/modules/node/src/Tests/NodeAccessPagerTest.php
@@ -10,7 +10,6 @@
 use Drupal\comment\CommentInterface;
 use Drupal\comment\Tests\CommentTestTrait;
 use Drupal\simpletest\WebTestBase;
-use Drupal\comment\Entity\Comment;
 
 /**
  * Tests access controlled node views have the right amount of comment pages.
@@ -46,7 +45,7 @@ public function testCommentPager() {
 
     // Create 60 comments.
     for ($i = 0; $i < 60; $i++) {
-      $comment = Comment::create(array(
+      $comment = entity_create('comment', array(
         'entity_id' => $node->id(),
         'entity_type' => 'node',
         'field_name' => 'comment',
diff --git a/core/modules/node/src/Tests/NodeCacheTagsTest.php b/core/modules/node/src/Tests/NodeCacheTagsTest.php
index b10bcb6..5940d4c 100644
--- a/core/modules/node/src/Tests/NodeCacheTagsTest.php
+++ b/core/modules/node/src/Tests/NodeCacheTagsTest.php
@@ -8,8 +8,6 @@
 namespace Drupal\node\Tests;
 
 use Drupal\Core\Entity\EntityInterface;
-use Drupal\node\Entity\Node;
-use Drupal\node\Entity\NodeType;
 use Drupal\system\Tests\Entity\EntityWithUriCacheTagsTestBase;
 
 /**
@@ -29,13 +27,13 @@ class NodeCacheTagsTest extends EntityWithUriCacheTagsTestBase {
    */
   protected function createEntity() {
     // Create a "Camelids" node type.
-    NodeType::create([
+    entity_create('node_type', array(
       'name' => 'Camelids',
       'type' => 'camelids',
-    ])->save();
+    ))->save();
 
     // Create a "Llama" node.
-    $node = Node::create(['type' => 'camelids']);
+    $node = entity_create('node', array('type' => 'camelids'));
     $node->setTitle('Llama')
       ->setPublished(TRUE)
       ->save();
diff --git a/core/modules/node/src/Tests/NodeCreationTest.php b/core/modules/node/src/Tests/NodeCreationTest.php
index d625e52..abe7ba7 100644
--- a/core/modules/node/src/Tests/NodeCreationTest.php
+++ b/core/modules/node/src/Tests/NodeCreationTest.php
@@ -9,7 +9,6 @@
 
 use Drupal\Core\Database\Database;
 use Drupal\Core\Language\LanguageInterface;
-use Drupal\node\Entity\Node;
 
 /**
  * Create a node and test saving it.
@@ -91,7 +90,7 @@ function testFailedPageCreation() {
     try {
       // An exception is generated by node_test_exception_node_insert() if the
       // title is 'testing_transaction_exception'.
-      Node::create($edit)->save();
+      entity_create('node', $edit)->save();
       $this->fail(t('Expected exception has not been thrown.'));
     }
     catch (\Exception $e) {
diff --git a/core/modules/node/src/Tests/NodeSaveTest.php b/core/modules/node/src/Tests/NodeSaveTest.php
index 7fcea9b..3acbf82 100644
--- a/core/modules/node/src/Tests/NodeSaveTest.php
+++ b/core/modules/node/src/Tests/NodeSaveTest.php
@@ -64,7 +64,7 @@ function testImport() {
       'nid' => $test_nid,
     );
     /** @var \Drupal\node\NodeInterface $node */
-    $node = Node::create($node);
+    $node = entity_create('node', $node);
     $node->enforceIsNew();
 
     $this->assertEqual($node->getOwnerId(), $this->webUser->id());
@@ -89,7 +89,7 @@ function testTimestamps() {
       'title' => $this->randomMachineName(8),
     );
 
-    Node::create($edit)->save();
+    entity_create('node', $edit)->save();
     $node = $this->drupalGetNodeByTitle($edit['title']);
     $this->assertEqual($node->getCreatedTime(), REQUEST_TIME, 'Creating a node sets default "created" timestamp.');
     $this->assertEqual($node->getChangedTime(), REQUEST_TIME, 'Creating a node sets default "changed" timestamp.');
@@ -118,7 +118,7 @@ function testTimestamps() {
       'changed' => 979534800, // Drupal 1.0 release.
     );
 
-    Node::create($edit)->save();
+    entity_create('node', $edit)->save();
     $node = $this->drupalGetNodeByTitle($edit['title']);
     $this->assertEqual($node->getCreatedTime(), 280299600, 'Creating a node programmatically uses programmatically set "created" timestamp.');
     $this->assertEqual($node->getChangedTime(), 979534800, 'Creating a node programmatically uses programmatically set "changed" timestamp.');
@@ -144,11 +144,11 @@ function testTimestamps() {
    */
   function testDeterminingChanges() {
     // Initial creation.
-    $node = Node::create([
+    $node = entity_create('node', array(
       'uid' => $this->webUser->id(),
       'type' => 'article',
       'title' => 'test_changes',
-    ]);
+    ));
     $node->save();
 
     // Update the node without applying changes.
diff --git a/core/modules/node/src/Tests/NodeTokenReplaceTest.php b/core/modules/node/src/Tests/NodeTokenReplaceTest.php
index 9050de9..bc6a049 100644
--- a/core/modules/node/src/Tests/NodeTokenReplaceTest.php
+++ b/core/modules/node/src/Tests/NodeTokenReplaceTest.php
@@ -10,8 +10,6 @@
 use Drupal\Component\Render\FormattableMarkup;
 use Drupal\Component\Utility\Html;
 use Drupal\Core\Render\BubbleableMetadata;
-use Drupal\node\Entity\Node;
-use Drupal\node\Entity\NodeType;
 use Drupal\system\Tests\System\TokenReplaceUnitTestBase;
 
 /**
@@ -36,7 +34,7 @@ protected function setUp() {
     parent::setUp();
     $this->installConfig(array('filter', 'node'));
 
-    $node_type = NodeType::create(['type' => 'article', 'name' => 'Article']);
+    $node_type = entity_create('node_type', array('type' => 'article', 'name' => 'Article'));
     $node_type->save();
     node_add_body_field($node_type);
   }
@@ -53,13 +51,13 @@ function testNodeTokenReplacement() {
     // Create a user and a node.
     $account = $this->createUser();
     /* @var $node \Drupal\node\NodeInterface */
-    $node = Node::create([
+    $node = entity_create('node', array(
       'type' => 'article',
       'tnid' => 0,
       'uid' => $account->id(),
       'title' => '<blink>Blinking Text</blink>',
       'body' => [['value' => 'Regular NODE body for the test.', 'summary' => 'Fancy NODE summary.', 'format' => 'plain_text']],
-    ]);
+    ));
     $node->save();
 
     // Generate and test tokens.
@@ -112,12 +110,12 @@ function testNodeTokenReplacement() {
     }
 
     // Repeat for a node without a summary.
-    $node = Node::create([
+    $node = entity_create('node', array(
       'type' => 'article',
       'uid' => $account->id(),
       'title' => '<blink>Blinking Text</blink>',
       'body' => [['value' => 'A string that looks random like TR5c2I', 'format' => 'plain_text']],
-    ]);
+    ));
     $node->save();
 
     // Generate and test token - use full body as expected value.
diff --git a/core/modules/node/src/Tests/NodeTranslationUITest.php b/core/modules/node/src/Tests/NodeTranslationUITest.php
index ca31f3b..0bb81c0 100644
--- a/core/modules/node/src/Tests/NodeTranslationUITest.php
+++ b/core/modules/node/src/Tests/NodeTranslationUITest.php
@@ -30,8 +30,7 @@ class NodeTranslationUITest extends ContentTranslationUITestBase {
     'theme',
     'route',
     'timezone',
-    'url.path',
-    'url.query_args:_wrapper_format',
+    'url',
     'user'
   ];
 
diff --git a/core/modules/node/src/Tests/NodeValidationTest.php b/core/modules/node/src/Tests/NodeValidationTest.php
index c6e26cc..9f6bccc 100644
--- a/core/modules/node/src/Tests/NodeValidationTest.php
+++ b/core/modules/node/src/Tests/NodeValidationTest.php
@@ -7,8 +7,6 @@
 
 namespace Drupal\node\Tests;
 
-use Drupal\node\Entity\Node;
-use Drupal\node\Entity\NodeType;
 use Drupal\system\Tests\Entity\EntityUnitTestBase;
 
 /**
@@ -32,7 +30,7 @@ protected function setUp() {
     parent::setUp();
 
     // Create a node type for testing.
-    $type = NodeType::create(['type' => 'page', 'name' => 'page']);
+    $type = entity_create('node_type', array('type' => 'page', 'name' => 'page'));
     $type->save();
   }
 
@@ -41,7 +39,7 @@ protected function setUp() {
    */
   public function testValidation() {
     $this->createUser();
-    $node = Node::create(['type' => 'page', 'title' => 'test', 'uid' => 1]);
+    $node = entity_create('node', array('type' => 'page', 'title' => 'test', 'uid' => 1));
     $violations = $node->validate();
     $this->assertEqual(count($violations), 0, 'No violations when validating a default node.');
 
diff --git a/core/modules/node/src/Tests/Views/NodeFieldTokensTest.php b/core/modules/node/src/Tests/Views/NodeFieldTokensTest.php
index 46fbb23..5cc96c7 100644
--- a/core/modules/node/src/Tests/Views/NodeFieldTokensTest.php
+++ b/core/modules/node/src/Tests/Views/NodeFieldTokensTest.php
@@ -6,8 +6,6 @@
  */
 
 namespace Drupal\node\Tests\Views;
-use Drupal\node\Entity\Node;
-use Drupal\node\Entity\NodeType;
 
 /**
  * Tests replacement of Views tokens supplied by the Node module.
@@ -30,7 +28,7 @@ class NodeFieldTokensTest extends NodeTestBase {
   public function testViewsTokenReplacement() {
     // Create the Article content type with a standard body field.
     /* @var $node_type \Drupal\node\NodeTypeInterface */
-    $node_type = NodeType::create(['type' => 'article', 'name' => 'Article']);
+    $node_type = entity_create('node_type', ['type' => 'article', 'name' => 'Article']);
     $node_type->save();
     node_add_body_field($node_type);
 
@@ -40,7 +38,7 @@ public function testViewsTokenReplacement() {
     $summary = $this->randomMachineName(16);
 
     /** @var $node \Drupal\node\NodeInterface */
-    $node = Node::create([
+    $node = entity_create('node', [
       'type' => 'article',
       'tnid' => 0,
       'uid' => $account->id(),
diff --git a/core/modules/node/src/Tests/Views/RevisionRelationshipsTest.php b/core/modules/node/src/Tests/Views/RevisionRelationshipsTest.php
index 306df50..c36b377 100644
--- a/core/modules/node/src/Tests/Views/RevisionRelationshipsTest.php
+++ b/core/modules/node/src/Tests/Views/RevisionRelationshipsTest.php
@@ -4,7 +4,6 @@
  * @file
  * Contains \Drupal\node\Tests\Views\RevisionRelationshipsTest.
  */
-
 namespace Drupal\node\Tests\Views;
 
 use Drupal\views\Views;
diff --git a/core/modules/options/src/Plugin/Field/FieldType/ListFloatItem.php b/core/modules/options/src/Plugin/Field/FieldType/ListFloatItem.php
index ff2e25c..870ad91 100644
--- a/core/modules/options/src/Plugin/Field/FieldType/ListFloatItem.php
+++ b/core/modules/options/src/Plugin/Field/FieldType/ListFloatItem.php
@@ -104,7 +104,7 @@ public static function simplifyAllowedValues(array $structured_values) {
       // Cast the value to a float first so that .5 and 0.5 are the same value
       // and then cast to a string so that values like 0.5 can be used as array
       // keys.
-      // @see http://php.net/manual/language.types.array.php
+      // @see http://php.net/manual/en/language.types.array.php
       $values[(string) (float) $item['value']] = $item['label'];
     }
     return $values;
diff --git a/core/modules/options/src/Tests/OptionsDynamicValuesTestBase.php b/core/modules/options/src/Tests/OptionsDynamicValuesTestBase.php
index c54466d..0bc99f0 100644
--- a/core/modules/options/src/Tests/OptionsDynamicValuesTestBase.php
+++ b/core/modules/options/src/Tests/OptionsDynamicValuesTestBase.php
@@ -7,9 +7,7 @@
 
 namespace Drupal\options\Tests;
 
-use Drupal\field\Entity\FieldConfig;
 use Drupal\field\Tests\FieldTestBase;
-use Drupal\field\Entity\FieldStorageConfig;
 
 /**
  * Base class for testing allowed values of options fields.
@@ -41,7 +39,7 @@ protected function setUp() {
     parent::setUp();
 
     $field_name = 'test_options';
-    $this->fieldStorage = FieldStorageConfig::create([
+    $this->fieldStorage = entity_create('field_storage_config', [
       'field_name' => $field_name,
       'entity_type' => 'entity_test_rev',
       'type' => 'list_string',
@@ -52,7 +50,7 @@ protected function setUp() {
     ]);
     $this->fieldStorage->save();
 
-    $this->field = FieldConfig::create([
+    $this->field = entity_create('field_config', [
       'field_name' => $field_name,
       'entity_type' => 'entity_test_rev',
       'bundle' => 'entity_test_rev',
diff --git a/core/modules/options/src/Tests/OptionsFieldTest.php b/core/modules/options/src/Tests/OptionsFieldTest.php
index 98d9d09..a7d3ffe 100644
--- a/core/modules/options/src/Tests/OptionsFieldTest.php
+++ b/core/modules/options/src/Tests/OptionsFieldTest.php
@@ -8,8 +8,6 @@
 namespace Drupal\options\Tests;
 
 use Drupal\Core\Entity\Exception\FieldStorageDefinitionUpdateForbiddenException;
-use Drupal\field\Entity\FieldConfig;
-use Drupal\field\Entity\FieldStorageConfig;
 
 /**
  * Tests for the 'Options' field types.
@@ -77,13 +75,13 @@ function testUpdateAllowedValues() {
 
     // Options are reset when a new field with the same name is created.
     $this->fieldStorage->delete();
-    FieldStorageConfig::create($this->fieldStorageDefinition)->save();
-    FieldConfig::create([
+    entity_create('field_storage_config', $this->fieldStorageDefinition)->save();
+    entity_create('field_config', array(
       'field_name' => $this->fieldName,
       'entity_type' => 'entity_test',
       'bundle' => 'entity_test',
       'required' => TRUE,
-    ])->save();
+    ))->save();
     entity_get_form_display('entity_test', 'entity_test', 'default')
       ->setComponent($this->fieldName, array(
         'type' => 'options_buttons',
diff --git a/core/modules/options/src/Tests/OptionsFieldUITest.php b/core/modules/options/src/Tests/OptionsFieldUITest.php
index 360f548..d4219c6 100644
--- a/core/modules/options/src/Tests/OptionsFieldUITest.php
+++ b/core/modules/options/src/Tests/OptionsFieldUITest.php
@@ -7,7 +7,6 @@
 
 namespace Drupal\options\Tests;
 
-use Drupal\field\Entity\FieldConfig;
 use Drupal\field\Entity\FieldStorageConfig;
 use Drupal\field\Tests\FieldTestBase;
 
@@ -268,16 +267,16 @@ function testOptionsTrimmedValuesText() {
    */
   protected function createOptionsField($type) {
     // Create a field.
-    FieldStorageConfig::create(array(
+    entity_create('field_storage_config', array(
       'field_name' => $this->fieldName,
       'entity_type' => 'node',
       'type' => $type,
     ))->save();
-    FieldConfig::create([
+    entity_create('field_config', array(
       'field_name' => $this->fieldName,
       'entity_type' => 'node',
       'bundle' => $this->type,
-    ])->save();
+    ))->save();
 
     entity_get_form_display('node', $this->type, 'default')->setComponent($this->fieldName)->save();
 
diff --git a/core/modules/options/src/Tests/OptionsFieldUnitTestBase.php b/core/modules/options/src/Tests/OptionsFieldUnitTestBase.php
index 14d4b8d..fcfe4f8 100644
--- a/core/modules/options/src/Tests/OptionsFieldUnitTestBase.php
+++ b/core/modules/options/src/Tests/OptionsFieldUnitTestBase.php
@@ -5,11 +5,10 @@
  * Contains \Drupal\options\Tests\OptionsFieldUnitTestBase.
  */
 
+
 namespace Drupal\options\Tests;
 
-use Drupal\field\Entity\FieldConfig;
 use Drupal\field\Tests\FieldUnitTestBase;
-use Drupal\field\Entity\FieldStorageConfig;
 
 /**
  * Base class for Options module integration tests.
@@ -67,13 +66,13 @@ protected function setUp() {
         'allowed_values' => array(1 => 'One', 2 => 'Two', 3 => 'Three'),
       ),
     );
-    $this->fieldStorage = FieldStorageConfig::create($this->fieldStorageDefinition);
+    $this->fieldStorage = entity_create('field_storage_config', $this->fieldStorageDefinition);
     $this->fieldStorage->save();
 
-    $this->field = FieldConfig::create([
+    $this->field = entity_create('field_config', array(
       'field_storage' => $this->fieldStorage,
       'bundle' => 'entity_test',
-    ]);
+    ));
     $this->field->save();
 
     entity_get_form_display('entity_test', 'entity_test', 'default')
diff --git a/core/modules/options/src/Tests/OptionsWidgetsTest.php b/core/modules/options/src/Tests/OptionsWidgetsTest.php
index 679fdb6..93293ca 100644
--- a/core/modules/options/src/Tests/OptionsWidgetsTest.php
+++ b/core/modules/options/src/Tests/OptionsWidgetsTest.php
@@ -7,9 +7,7 @@
 
 namespace Drupal\options\Tests;
 
-use Drupal\field\Entity\FieldConfig;
 use Drupal\field\Tests\FieldTestBase;
-use Drupal\field\Entity\FieldStorageConfig;
 
 /**
  * Tests the Options widgets.
@@ -44,7 +42,7 @@ protected function setUp() {
     parent::setUp();
 
     // Field storage with cardinality 1.
-    $this->card1 = FieldStorageConfig::create([
+    $this->card1 = entity_create('field_storage_config', [
       'field_name' => 'card_1',
       'entity_type' => 'entity_test',
       'type' => 'list_integer',
@@ -64,7 +62,7 @@ protected function setUp() {
     $this->card1->save();
 
     // Field storage with cardinality 2.
-    $this->card2 = FieldStorageConfig::create([
+    $this->card2 = entity_create('field_storage_config', [
       'field_name' => 'card_2',
       'entity_type' => 'entity_test',
       'type' => 'list_integer',
@@ -90,7 +88,7 @@ protected function setUp() {
    */
   function testRadioButtons() {
     // Create an instance of the 'single value' field.
-    $field = FieldConfig::create([
+    $field = entity_create('field_config', [
       'field_storage' => $this->card1,
       'bundle' => 'entity_test',
     ]);
@@ -147,10 +145,10 @@ function testRadioButtons() {
    */
   function testCheckBoxes() {
     // Create an instance of the 'multiple values' field.
-    $field = FieldConfig::create([
+    $field = entity_create('field_config', array(
       'field_storage' => $this->card2,
       'bundle' => 'entity_test',
-    ]);
+    ));
     $field->save();
     entity_get_form_display('entity_test', 'entity_test', 'default')
       ->setComponent($this->card2->getName(), array(
@@ -236,11 +234,11 @@ function testCheckBoxes() {
    */
   function testSelectListSingle() {
     // Create an instance of the 'single value' field.
-    $field = FieldConfig::create([
+    $field = entity_create('field_config', array(
       'field_storage' => $this->card1,
       'bundle' => 'entity_test',
       'required' => TRUE,
-    ]);
+    ));
     $field->save();
     entity_get_form_display('entity_test', 'entity_test', 'default')
       ->setComponent($this->card1->getName(), array(
@@ -336,10 +334,10 @@ function testSelectListSingle() {
    */
   function testSelectListMultiple() {
     // Create an instance of the 'multiple values' field.
-    $field = FieldConfig::create([
+    $field = entity_create('field_config', array(
       'field_storage' => $this->card2,
       'bundle' => 'entity_test',
-    ]);
+    ));
     $field->save();
     entity_get_form_display('entity_test', 'entity_test', 'default')
       ->setComponent($this->card2->getName(), array(
@@ -457,7 +455,7 @@ function testSelectListMultiple() {
    */
   function testEmptyValue() {
     // Create an instance of the 'single value' field.
-    $field = FieldConfig::create([
+    $field = entity_create('field_config', [
       'field_storage' => $this->card1,
       'bundle' => 'entity_test',
     ]);
diff --git a/core/modules/options/src/Tests/Views/ViewsDataTest.php b/core/modules/options/src/Tests/Views/ViewsDataTest.php
index 3d17470..f743f4c 100644
--- a/core/modules/options/src/Tests/Views/ViewsDataTest.php
+++ b/core/modules/options/src/Tests/Views/ViewsDataTest.php
@@ -6,9 +6,6 @@
 
 namespace Drupal\options\Tests\Views;
 
-use Drupal\field\Entity\FieldConfig;
-use Drupal\field\Entity\FieldStorageConfig;
-
 /**
  * Test to ensure views data is properly created for the Options module.
  *
@@ -35,7 +32,7 @@ protected function setUp() {
     parent::setUp();
 
     $field_name = 'test_options';
-    $this->fieldStorage = FieldStorageConfig::create([
+    $this->fieldStorage = entity_create('field_storage_config', [
       'field_name' => $field_name,
       'entity_type' => 'entity_test',
       'type' => 'list_string',
@@ -46,7 +43,7 @@ protected function setUp() {
     ]);
     $this->fieldStorage->save();
 
-    $this->field = FieldConfig::create([
+    $this->field = entity_create('field_config', [
       'field_name' => $field_name,
       'entity_type' => 'entity_test',
       'bundle' => 'entity_test',
diff --git a/core/modules/page_cache/src/Tests/PageCacheTagsIntegrationTest.php b/core/modules/page_cache/src/Tests/PageCacheTagsIntegrationTest.php
index 039772d..ab1c8f2 100644
--- a/core/modules/page_cache/src/Tests/PageCacheTagsIntegrationTest.php
+++ b/core/modules/page_cache/src/Tests/PageCacheTagsIntegrationTest.php
@@ -7,7 +7,6 @@
 
 namespace Drupal\page_cache\Tests;
 
-use Drupal\Core\EventSubscriber\MainContentViewSubscriber;
 use Drupal\Core\Language\LanguageInterface;
 use Drupal\simpletest\WebTestBase;
 use Drupal\system\Tests\Cache\AssertPageCacheContextsAndTagsTrait;
@@ -78,8 +77,7 @@ function testPageCacheTags() {
       'user',
       // The placed block is only visible on certain URLs through a visibility
       // condition.
-      'url.path',
-      'url.query_args:' . MainContentViewSubscriber::WRAPPER_FORMAT,
+      'url',
     ];
 
     // Full node page 1.
diff --git a/core/modules/page_cache/src/Tests/PageCacheTest.php b/core/modules/page_cache/src/Tests/PageCacheTest.php
index 42fbec5..0183b31 100644
--- a/core/modules/page_cache/src/Tests/PageCacheTest.php
+++ b/core/modules/page_cache/src/Tests/PageCacheTest.php
@@ -263,7 +263,7 @@ function testPageCache() {
     $this->drupalGet('system-test/set-header', array('query' => array('name' => 'Foo', 'value' => 'bar')));
     $this->assertFalse($this->drupalGetHeader('X-Drupal-Cache'), 'Caching was bypassed.');
     $this->assertTrue(strpos(strtolower($this->drupalGetHeader('Vary')), 'cookie') === FALSE, 'Vary: Cookie header was not sent.');
-    $this->assertEqual($this->drupalGetHeader('Cache-Control'), 'must-revalidate, no-cache, private', 'Cache-Control header was sent.');
+    $this->assertEqual($this->drupalGetHeader('Cache-Control'), 'must-revalidate, no-cache, post-check=0, pre-check=0, private', 'Cache-Control header was sent.');
     $this->assertEqual($this->drupalGetHeader('Expires'), 'Sun, 19 Nov 1978 05:00:00 GMT', 'Expires header was sent.');
     $this->assertEqual($this->drupalGetHeader('Foo'), 'bar', 'Custom header was sent.');
 
@@ -452,12 +452,12 @@ public function testCacheableResponseResponses() {
     // GET a URL, which would be marked as a cache miss if it were cacheable.
     $this->drupalGet('/system-test/respond-reponse');
     $this->assertFalse($this->drupalGetHeader('X-Drupal-Cache'), 'Drupal page cache header not found.');
-    $this->assertEqual($this->drupalGetHeader('Cache-Control'), 'must-revalidate, no-cache, private', 'Cache-Control header was sent');
+    $this->assertEqual($this->drupalGetHeader('Cache-Control'), 'must-revalidate, no-cache, post-check=0, pre-check=0, private', 'Cache-Control header was sent');
 
     // GET it again, verify it's still not cached.
     $this->drupalGet('/system-test/respond-reponse');
     $this->assertFalse($this->drupalGetHeader('X-Drupal-Cache'), 'Drupal page cache header not found.');
-    $this->assertEqual($this->drupalGetHeader('Cache-Control'), 'must-revalidate, no-cache, private', 'Cache-Control header was sent');
+    $this->assertEqual($this->drupalGetHeader('Cache-Control'), 'must-revalidate, no-cache, post-check=0, pre-check=0, private', 'Cache-Control header was sent');
 
     // GET a URL, which would be marked as a cache miss if it were cacheable.
     $this->drupalGet('/system-test/respond-public-response');
diff --git a/core/modules/path/src/Form/EditForm.php b/core/modules/path/src/Form/EditForm.php
index 2f9739e..a1f4a77 100644
--- a/core/modules/path/src/Form/EditForm.php
+++ b/core/modules/path/src/Form/EditForm.php
@@ -40,25 +40,28 @@ public function buildForm(array $form, FormStateInterface $form_state, $pid = NU
       '#type' => 'hidden',
       '#value' => $this->path['pid'],
     );
+    $form['actions']['delete'] = array(
+      '#type' => 'submit',
+      '#value' => $this->t('Delete'),
+      '#submit' => array('::deleteSubmit'),
+    );
+    return $form;
+  }
 
+  /**
+   * Submits the delete form.
+   */
+  public function deleteSubmit(array &$form, FormStateInterface $form_state) {
     $url = new Url('path.delete', array(
-      'pid' => $this->path['pid'],
+      'pid' => $form_state->getValue('pid'),
     ));
 
     if ($this->getRequest()->query->has('destination')) {
       $url->setOption('query', $this->getDestinationArray());
+      $this->getRequest()->query->remove('destination');
     }
 
-    $form['actions']['delete'] = array(
-      '#type' => 'link',
-      '#title' => $this->t('Delete'),
-      '#url' => $url,
-      '#attributes' => array(
-        'class' => array('button', 'button--danger'),
-      ),
-    );
-
-    return $form;
+    $form_state->setRedirectUrl($url);
   }
 
 }
diff --git a/core/modules/path/src/Form/PathFormBase.php b/core/modules/path/src/Form/PathFormBase.php
index 80b99cb..95d261a 100644
--- a/core/modules/path/src/Form/PathFormBase.php
+++ b/core/modules/path/src/Form/PathFormBase.php
@@ -116,7 +116,7 @@ public function buildForm(array $form, FormStateInterface $form_state, $pid = NU
       '#default_value' => $this->path['alias'],
       '#maxlength' => 255,
       '#size' => 45,
-      '#description' => $this->t('Specify an alternative path by which this data can be accessed. For example, type "/about" when writing an about page. Use a relative path with a slash in front.'),
+      '#description' => $this->t('Specify an alternative path by which this data can be accessed. For example, type "/about" when writing an about page. Use a relative path with a slash in front..'),
       '#field_prefix' => $this->requestContext->getCompleteBaseUrl(),
       '#required' => TRUE,
     );
@@ -151,7 +151,6 @@ public function buildForm(array $form, FormStateInterface $form_state, $pid = NU
     $form['actions']['submit'] = array(
       '#type' => 'submit',
       '#value' => $this->t('Save'),
-      '#button_type' => 'primary',
     );
 
     return $form;
diff --git a/core/modules/path/src/Tests/Migrate/d6/MigrateUrlAliasTest.php b/core/modules/path/src/Tests/Migrate/d6/MigrateUrlAliasTest.php
index ad7e5e7..7dd662d 100644
--- a/core/modules/path/src/Tests/Migrate/d6/MigrateUrlAliasTest.php
+++ b/core/modules/path/src/Tests/Migrate/d6/MigrateUrlAliasTest.php
@@ -29,6 +29,7 @@ class MigrateUrlAliasTest extends MigrateDrupal6TestBase {
    */
   protected function setUp() {
     parent::setUp();
+    $this->installSchema('system', ['url_alias']);
     $this->executeMigration('d6_url_alias');
   }
 
diff --git a/core/modules/path/src/Tests/Migrate/d7/MigrateUrlAliasTest.php b/core/modules/path/src/Tests/Migrate/d7/MigrateUrlAliasTest.php
index e8c2db6..829a872 100644
--- a/core/modules/path/src/Tests/Migrate/d7/MigrateUrlAliasTest.php
+++ b/core/modules/path/src/Tests/Migrate/d7/MigrateUrlAliasTest.php
@@ -26,6 +26,7 @@ class MigrateUrlAliasTest extends MigrateDrupal7TestBase {
    */
   protected function setUp() {
     parent::setUp();
+    $this->installSchema('system', ['url_alias']);
     $this->executeMigration('d7_url_alias');
   }
 
diff --git a/core/modules/path/src/Tests/PathAliasTest.php b/core/modules/path/src/Tests/PathAliasTest.php
index 7a58787..7e85cda 100644
--- a/core/modules/path/src/Tests/PathAliasTest.php
+++ b/core/modules/path/src/Tests/PathAliasTest.php
@@ -145,9 +145,7 @@ function testAdminAlias() {
     ]), 'Attempt to move upper-case alias was rejected.');
 
     // Delete alias.
-    $this->drupalGet('admin/config/search/path/edit/' . $pid);
-    $this->clickLink(t('Delete'));
-    $this->assertRaw(t('Are you sure you want to delete path alias %name?', array('%name' => $edit['alias'])));
+    $this->drupalPostForm('admin/config/search/path/edit/' . $pid, array(), t('Delete'));
     $this->drupalPostForm(NULL, array(), t('Confirm'));
 
     // Confirm that the alias no longer works.
diff --git a/core/modules/quickedit/src/Tests/MetadataGeneratorTest.php b/core/modules/quickedit/src/Tests/MetadataGeneratorTest.php
index 0ac5706..0335703 100644
--- a/core/modules/quickedit/src/Tests/MetadataGeneratorTest.php
+++ b/core/modules/quickedit/src/Tests/MetadataGeneratorTest.php
@@ -10,7 +10,6 @@
 use Drupal\quickedit\EditorSelector;
 use Drupal\quickedit\MetadataGenerator;
 use Drupal\quickedit_test\MockEditEntityFieldAccessCheck;
-use Drupal\filter\Entity\FilterFormat;
 
 /**
  * Tests in-place field editing metadata.
@@ -124,6 +123,8 @@ public function testSimpleEntityType() {
    * Tests a field whose associated in-place editor generates custom metadata.
    */
   public function testEditorWithCustomMetadata() {
+    $this->installSchema('system', 'url_alias');
+
     $this->editorManager = $this->container->get('plugin.manager.quickedit.editor');
     $this->editorSelector = new EditorSelector($this->editorManager, $this->container->get('plugin.manager.field.formatter'));
     $this->metadataGenerator = new MetadataGenerator($this->accessChecker, $this->editorSelector, $this->editorManager);
@@ -148,7 +149,7 @@ public function testEditorWithCustomMetadata() {
     );
 
     // Create a text format.
-    $full_html_format = FilterFormat::create(array(
+    $full_html_format = entity_create('filter_format', array(
       'format' => 'full_html',
       'name' => 'Full HTML',
       'weight' => 1,
diff --git a/core/modules/quickedit/src/Tests/QuickEditLoadingTest.php b/core/modules/quickedit/src/Tests/QuickEditLoadingTest.php
index 57fc0ba..6e6fffb 100644
--- a/core/modules/quickedit/src/Tests/QuickEditLoadingTest.php
+++ b/core/modules/quickedit/src/Tests/QuickEditLoadingTest.php
@@ -17,7 +17,6 @@
 use Drupal\node\Entity\Node;
 use Drupal\node\Entity\NodeType;
 use Drupal\simpletest\WebTestBase;
-use Drupal\filter\Entity\FilterFormat;
 
 /**
  * Tests loading of in-place editing functionality and lazy loading of its
@@ -58,7 +57,7 @@ protected function setUp() {
     parent::setUp();
 
     // Create a text format.
-    $filtered_html_format = FilterFormat::create(array(
+    $filtered_html_format = entity_create('filter_format', array(
       'format' => 'filtered_html',
       'name' => 'Filtered HTML',
       'weight' => 0,
diff --git a/core/modules/quickedit/src/Tests/QuickEditTestBase.php b/core/modules/quickedit/src/Tests/QuickEditTestBase.php
index 85884ff..eb779ad 100644
--- a/core/modules/quickedit/src/Tests/QuickEditTestBase.php
+++ b/core/modules/quickedit/src/Tests/QuickEditTestBase.php
@@ -7,9 +7,7 @@
 
 namespace Drupal\quickedit\Tests;
 
-use Drupal\field\Entity\FieldConfig;
 use Drupal\simpletest\KernelTestBase;
-use Drupal\field\Entity\FieldStorageConfig;
 
 /**
  * Base class for testing Quick Edit functionality.
@@ -72,7 +70,7 @@ protected function setUp() {
    */
   protected function createFieldWithStorage($field_name, $type, $cardinality, $label, $field_settings, $widget_type, $widget_settings, $formatter_type, $formatter_settings) {
     $field_storage = $field_name . '_field_storage';
-    $this->fields->$field_storage = FieldStorageConfig::create(array(
+    $this->fields->$field_storage = entity_create('field_storage_config', array(
       'field_name' => $field_name,
       'entity_type' => 'entity_test',
       'type' => $type,
@@ -81,14 +79,14 @@ protected function createFieldWithStorage($field_name, $type, $cardinality, $lab
     $this->fields->$field_storage->save();
 
     $field = $field_name . '_field';
-    $this->fields->$field = FieldConfig::create([
+    $this->fields->$field = entity_create('field_config', array(
       'field_storage' => $this->fields->$field_storage,
       'bundle' => 'entity_test',
       'label' => $label,
       'description' => $label,
       'weight' => mt_rand(0, 127),
       'settings' => $field_settings,
-    ]);
+    ));
     $this->fields->$field->save();
 
     entity_get_form_display('entity_test', 'entity_test', 'default')
diff --git a/core/modules/rdf/rdf.module b/core/modules/rdf/rdf.module
index 0c7cf5c..33a3e92 100644
--- a/core/modules/rdf/rdf.module
+++ b/core/modules/rdf/rdf.module
@@ -7,7 +7,6 @@
 
 use Drupal\Core\Routing\RouteMatchInterface;
 use Drupal\Core\Template\Attribute;
-use Drupal\rdf\Entity\RdfMapping;
 
 /**
  * Implements hook_help().
@@ -74,7 +73,7 @@ function rdf_get_mapping($entity_type, $bundle) {
 
   // If not found, create a fresh mapping object.
   if (!$mapping) {
-    $mapping = RdfMapping::create(array(
+    $mapping = entity_create('rdf_mapping', array(
       'targetEntityType' => $entity_type,
       'bundle' => $bundle,
     ));
diff --git a/core/modules/rdf/src/Tests/CommentAttributesTest.php b/core/modules/rdf/src/Tests/CommentAttributesTest.php
index 552fbaf..8d3beb7 100644
--- a/core/modules/rdf/src/Tests/CommentAttributesTest.php
+++ b/core/modules/rdf/src/Tests/CommentAttributesTest.php
@@ -11,7 +11,6 @@
 use Drupal\comment\CommentManagerInterface;
 use Drupal\comment\Tests\CommentTestBase;
 use Drupal\user\RoleInterface;
-use Drupal\comment\Entity\Comment;
 
 /**
  * Tests the RDFa markup of comments.
@@ -373,7 +372,7 @@ function saveComment($nid, $uid, $contact = NULL, $pid = 0) {
       $values += $contact;
     }
 
-    $comment = Comment::create($values);
+    $comment = entity_create('comment', $values);
     $comment->save();
     return $comment;
   }
diff --git a/core/modules/rdf/src/Tests/Field/FieldRdfaTestBase.php b/core/modules/rdf/src/Tests/Field/FieldRdfaTestBase.php
index f4d2240..cb8f584 100644
--- a/core/modules/rdf/src/Tests/Field/FieldRdfaTestBase.php
+++ b/core/modules/rdf/src/Tests/Field/FieldRdfaTestBase.php
@@ -6,9 +6,7 @@
 
 namespace Drupal\rdf\Tests\Field;
 
-use Drupal\field\Entity\FieldConfig;
 use Drupal\field\Tests\FieldUnitTestBase;
-use Drupal\field\Entity\FieldStorageConfig;
 
 abstract class FieldRdfaTestBase extends FieldUnitTestBase {
 
@@ -116,17 +114,17 @@ protected function assertFormatterRdfa($formatter, $property, $expected_rdf_valu
    *   (optional) An array of field settings.
    */
   protected function createTestField($field_settings = array()) {
-    FieldStorageConfig::create(array(
+    entity_create('field_storage_config', array(
       'field_name' => $this->fieldName,
       'entity_type' => 'entity_test',
       'type' => $this->fieldType,
     ))->save();
-    FieldConfig::create([
+    entity_create('field_config', array(
       'entity_type' => 'entity_test',
       'field_name' => $this->fieldName,
       'bundle' => 'entity_test',
       'settings' => $field_settings,
-    ])->save();
+    ))->save();
   }
 
   /**
diff --git a/core/modules/rdf/src/Tests/Field/NumberFieldRdfaTest.php b/core/modules/rdf/src/Tests/Field/NumberFieldRdfaTest.php
index 8424866..120d6f0 100644
--- a/core/modules/rdf/src/Tests/Field/NumberFieldRdfaTest.php
+++ b/core/modules/rdf/src/Tests/Field/NumberFieldRdfaTest.php
@@ -33,7 +33,7 @@ public function testIntegerFormatter() {
    */
   public function testIntegerFormatterWithSettings() {
     \Drupal::service('theme_handler')->install(['classy']);
-    \Drupal::service('theme_handler')->setDefault('classy');
+    $this->config('system.theme')->set('default', 'classy')->save();
     $this->fieldType = 'integer';
     $formatter = array(
       'type' => 'number_integer',
@@ -76,7 +76,7 @@ public function testFloatFormatter() {
    */
   public function testFloatFormatterWithSettings() {
     \Drupal::service('theme_handler')->install(['classy']);
-    \Drupal::service('theme_handler')->setDefault('classy');
+    $this->config('system.theme')->set('default', 'classy')->save();
     $this->fieldType = 'float';
     $formatter = array(
       'type' => 'number_decimal',
@@ -126,7 +126,7 @@ public function testFloatFormatterWithScale() {
    */
   public function testFloatFormatterWithScaleExercised() {
     \Drupal::service('theme_handler')->install(['classy']);
-    \Drupal::service('theme_handler')->setDefault('classy');
+    $this->config('system.theme')->set('default', 'classy')->save();
     $this->fieldType = 'float';
     $formatter = array(
       'type' => 'number_decimal',
@@ -164,7 +164,7 @@ public function testDecimalFormatter() {
    */
   public function testDecimalFormatterWithSettings() {
     \Drupal::service('theme_handler')->install(['classy']);
-    \Drupal::service('theme_handler')->setDefault('classy');
+    $this->config('system.theme')->set('default', 'classy')->save();
     $this->fieldType = 'decimal';
     $formatter = array(
       'type' => 'number_decimal',
diff --git a/core/modules/rdf/src/Tests/StandardProfileTest.php b/core/modules/rdf/src/Tests/StandardProfileTest.php
index 4a812ac..57f4c3f 100644
--- a/core/modules/rdf/src/Tests/StandardProfileTest.php
+++ b/core/modules/rdf/src/Tests/StandardProfileTest.php
@@ -8,12 +8,10 @@
 namespace Drupal\rdf\Tests;
 
 use Drupal\Core\Url;
-use Drupal\file\Entity\File;
 use Drupal\image\Entity\ImageStyle;
 use Drupal\node\Entity\NodeType;
 use Drupal\node\NodeInterface;
 use Drupal\simpletest\WebTestBase;
-use Drupal\comment\Entity\Comment;
 
 /**
  * Tests the RDF mappings and RDFa markup of the standard profile.
@@ -111,7 +109,7 @@ protected function setUp() {
 
     // Use Classy theme for testing markup output.
     \Drupal::service('theme_handler')->install(['classy']);
-    \Drupal::service('theme_handler')->setDefault('classy');
+    $this->config('system.theme')->set('default', 'classy')->save();
 
     $this->baseUri = \Drupal::url('<front>', [], ['absolute' => TRUE]);
 
@@ -141,7 +139,7 @@ protected function setUp() {
 
     // Create image.
     file_unmanaged_copy(\Drupal::root() . '/core/misc/druplicon.png', 'public://example.jpg');
-    $this->image = File::create(['uri' => 'public://example.jpg']);
+    $this->image = entity_create('file', array('uri' => 'public://example.jpg'));
     $this->image->save();
 
     // Create article.
@@ -517,7 +515,7 @@ protected function saveComment($nid, $uid, $contact = NULL, $pid = 0) {
       $values += $contact;
     }
 
-    $comment = Comment::create($values);
+    $comment = entity_create('comment', $values);
     $comment->save();
     return $comment;
   }
diff --git a/core/modules/responsive_image/responsive_image.module b/core/modules/responsive_image/responsive_image.module
index 7df1da8..aa959a3 100644
--- a/core/modules/responsive_image/responsive_image.module
+++ b/core/modules/responsive_image/responsive_image.module
@@ -37,7 +37,7 @@ function responsive_image_help($route_name, RouteMatchInterface $route_match) {
       $output .= '<dt>' . t('Breakpoint groups: viewport sizing vs art direction') . '</dt>';
       $output .= '<dd>' . t('The breakpoint group typically only needs a single breakpoint with an empty media query in order to do <em>viewport sizing.</em> Multiple breakpoints are used for changing the crop or aspect ratio of images at different viewport sizes, which is often referred to as <em>art direction.</em> Once you select a breakpoint group, you can choose which breakpoints to use for the responsive image style. By default, the option <em>do not use this breakpoint</em> is selected for each breakpoint. See the <a href=":breakpoint_help">help page of the Breakpoint module</a> for more information.', array(':breakpoint_help' => \Drupal::url('help.page', array('name' => 'breakpoint')))) . '</dd>';
       $output .= '<dt>' . t('Breakpoint settings: sizes vs image styles') . '</dt>';
-      $output .= '<dd>' . t('While you have the option to provide only one image style per breakpoint, the sizes option allows you to provide more options to browsers as to which image file it can display, even when using multiple breakpoints for art direction. Breakpoints are defined in the configuration files of the theme.</dd>');
+      $output .= '<dd>' . t('While you have the option to provide only image style per breakpoint, the sizes option allows you to provide more options to browsers as to which image file it can display, even when using multiple breakpoints for art direction. Breakpoints are defined in the configuration files of the theme.</dd>');
       $output .= '<dt>' . t('Sizes field') . '</dt>';
       $output .= '<dd>' . t('Once the sizes option is selected, you can let the browser know the size of this image in relation to the site layout, using the <em>Sizes</em> field. For a hero image that always fills the entire screen, you could simply enter 100vw, which means 100% of the viewport width. For an image that fills 90% of the screen for small viewports, but only fills 40% of the screen when the viewport is larger than 40em (typically 640px), you could enter "(min-width: 40em) 40vw, 90vw" in the Sizes field. The last item in the comma-separated list is the smallest viewport size: other items in the comma-separated list should have a media condition paired with an image width. <em>Media conditions</em> are similar to a media query, often a min-width paired with a viewport width using em or px units: e.g. (min-width: 640px) or (min-width: 40em). This is paired with the <em>image width</em> at that viewport size using px, em or vw units. The vw unit is viewport width and is used instead of a percentage because the percentage always refers to the width of the entire viewport.</dd>');
       $output .= '<dt>' . t('Image styles for sizes') . '</dt>';
diff --git a/core/modules/responsive_image/src/Tests/ResponsiveImageFieldDisplayTest.php b/core/modules/responsive_image/src/Tests/ResponsiveImageFieldDisplayTest.php
index e8e7aae..a6f2930 100644
--- a/core/modules/responsive_image/src/Tests/ResponsiveImageFieldDisplayTest.php
+++ b/core/modules/responsive_image/src/Tests/ResponsiveImageFieldDisplayTest.php
@@ -13,7 +13,6 @@
 use Drupal\node\Entity\Node;
 use Drupal\file\Entity\File;
 use Drupal\responsive_image\Plugin\Field\FieldFormatter\ResponsiveImageFormatter;
-use Drupal\responsive_image\Entity\ResponsiveImageStyle;
 use Drupal\user\RoleInterface;
 
 /**
@@ -61,7 +60,7 @@ protected function setUp() {
     ));
     $this->drupalLogin($this->adminUser);
     // Add responsive image style.
-    $this->responsiveImgStyle = ResponsiveImageStyle::create(array(
+    $this->responsiveImgStyle = entity_create('responsive_image_style', array(
       'id' => 'style_one',
       'label' => 'Style One',
       'breakpoint_group' => 'responsive_image_test_module',
diff --git a/core/modules/responsive_image/src/Tests/ResponsiveImageFieldUiTest.php b/core/modules/responsive_image/src/Tests/ResponsiveImageFieldUiTest.php
index 214ba2b..af5a955 100644
--- a/core/modules/responsive_image/src/Tests/ResponsiveImageFieldUiTest.php
+++ b/core/modules/responsive_image/src/Tests/ResponsiveImageFieldUiTest.php
@@ -10,7 +10,6 @@
 
 use Drupal\field_ui\Tests\FieldUiTestTrait;
 use Drupal\simpletest\WebTestBase;
-use Drupal\responsive_image\Entity\ResponsiveImageStyle;
 
 /**
  * Tests the "Responsive Image" formatter settings form.
@@ -66,7 +65,7 @@ function testResponsiveImageFormatterUI() {
     $this->assertText("Select a responsive image style.", 'The expected summary is displayed.');
 
     // Create responsive image styles.
-    $responsive_image_style = ResponsiveImageStyle::create(array(
+    $responsive_image_style = entity_create('responsive_image_style', array(
       'id' => 'style_one',
       'label' => 'Style One',
       'breakpoint_group' => 'responsive_image_test_module',
diff --git a/core/modules/rest/src/Plugin/rest/resource/EntityResource.php b/core/modules/rest/src/Plugin/rest/resource/EntityResource.php
index a830d97..a483044 100644
--- a/core/modules/rest/src/Plugin/rest/resource/EntityResource.php
+++ b/core/modules/rest/src/Plugin/rest/resource/EntityResource.php
@@ -112,10 +112,9 @@ public function post(EntityInterface $entity = NULL) {
       $entity->save();
       $this->logger->notice('Created entity %type with ID %id.', array('%type' => $entity->getEntityTypeId(), '%id' => $entity->id()));
 
-      // 201 Created responses return the newly created entity in the response
-      // body.
+      // 201 Created responses have an empty body.
       $url = $entity->urlInfo('canonical', ['absolute' => TRUE])->toString(TRUE);
-      $response = new ResourceResponse($entity, 201, ['Location' => $url->getGeneratedUrl()]);
+      $response = new ResourceResponse(NULL, 201, ['Location' => $url->getGeneratedUrl()]);
       // Responses after creating an entity are not cacheable, so we add no
       // cacheability metadata here.
       return $response;
diff --git a/core/modules/rest/src/Tests/CreateTest.php b/core/modules/rest/src/Tests/CreateTest.php
index 47673af..fc6037c 100644
--- a/core/modules/rest/src/Tests/CreateTest.php
+++ b/core/modules/rest/src/Tests/CreateTest.php
@@ -361,14 +361,8 @@ public function createAccountPerEntity($entity_type) {
   public function assertCreateEntityOverRestApi($entity_type, $serialized = NULL) {
     // Note: this will fail with PHP 5.6 when always_populate_raw_post_data is
     // set to something other than -1. See https://www.drupal.org/node/2456025.
-    $response = $this->httpRequest('entity/' . $entity_type, 'POST', $serialized, $this->defaultMimeType);
+    $this->httpRequest('entity/' . $entity_type, 'POST', $serialized, $this->defaultMimeType);
     $this->assertResponse(201);
-
-    // Make sure that the response includes an entity in the body and check the
-    // UUID as an example.
-    $request = Json::decode($serialized);
-    $response = Json::decode($response);
-    $this->assertEqual($request['uuid'][0]['value'], $response['uuid'][0]['value'], 'Got new entity created as response after successful POST over Rest API');
   }
 
   /**
diff --git a/core/modules/rest/src/Tests/ReadTest.php b/core/modules/rest/src/Tests/ReadTest.php
index 1cf1eac..eb3f222 100644
--- a/core/modules/rest/src/Tests/ReadTest.php
+++ b/core/modules/rest/src/Tests/ReadTest.php
@@ -94,7 +94,7 @@ public function testRead() {
     // application/hal+json, so it returns a 406.
     $this->assertResponse('406', 'HTTP response code is 406 when the resource does not define formats, because it falls back to the canonical, non-REST route.');
     $this->assertEqual($response, Json::encode([
-      'message' => 'Not acceptable format: hal_json',
+      'message' => 'Not acceptable',
     ]));
   }
 
diff --git a/core/modules/search/src/Controller/SearchController.php b/core/modules/search/src/Controller/SearchController.php
index b3a379a..0893259 100644
--- a/core/modules/search/src/Controller/SearchController.php
+++ b/core/modules/search/src/Controller/SearchController.php
@@ -47,12 +47,14 @@ class SearchController extends ControllerBase {
    *
    * @param \Drupal\search\SearchPageRepositoryInterface $search_page_repository
    *   The search page repository.
+   * @param \Psr\Log\LoggerInterface $logger
+   *   A logger instance.
    * @param \Drupal\Core\Render\RendererInterface $renderer
    *   The renderer.
    */
-  public function __construct(SearchPageRepositoryInterface $search_page_repository, RendererInterface $renderer) {
+  public function __construct(SearchPageRepositoryInterface $search_page_repository, LoggerInterface $logger, RendererInterface $renderer) {
     $this->searchPageRepository = $search_page_repository;
-    $this->logger = $this->getLogger('search');
+    $this->logger = $logger;
     $this->renderer = $renderer;
   }
 
@@ -62,6 +64,7 @@ public function __construct(SearchPageRepositoryInterface $search_page_repositor
   public static function create(ContainerInterface $container) {
     return new static(
       $container->get('search.search_page_repository'),
+      $container->get('logger.factory')->get('search'),
       $container->get('renderer')
     );
   }
diff --git a/core/modules/search/src/Tests/SearchCommentTest.php b/core/modules/search/src/Tests/SearchCommentTest.php
index faec089..d7f7255 100644
--- a/core/modules/search/src/Tests/SearchCommentTest.php
+++ b/core/modules/search/src/Tests/SearchCommentTest.php
@@ -11,7 +11,6 @@
 use Drupal\comment\Tests\CommentTestTrait;
 use Drupal\field\Entity\FieldConfig;
 use Drupal\user\RoleInterface;
-use Drupal\filter\Entity\FilterFormat;
 
 /**
  * Tests integration searching comments.
@@ -60,7 +59,7 @@ class SearchCommentTest extends SearchTestBase {
   protected function setUp() {
     parent::setUp();
 
-    $full_html_format = FilterFormat::create(array(
+    $full_html_format = entity_create('filter_format', array(
       'format' => 'full_html',
       'name' => 'Full HTML',
       'weight' => 1,
@@ -91,7 +90,7 @@ protected function setUp() {
   function testSearchResultsComment() {
     $node_storage = $this->container->get('entity.manager')->getStorage('node');
     // Create basic_html format that escapes all HTML.
-    $basic_html_format = FilterFormat::create(array(
+    $basic_html_format = entity_create('filter_format', array(
       'format' => 'basic_html',
       'name' => 'Basic HTML',
       'weight' => 1,
diff --git a/core/modules/search/src/Tests/SearchRankingTest.php b/core/modules/search/src/Tests/SearchRankingTest.php
index 6c9f0e9..4f12cdf 100644
--- a/core/modules/search/src/Tests/SearchRankingTest.php
+++ b/core/modules/search/src/Tests/SearchRankingTest.php
@@ -10,7 +10,6 @@
 use Drupal\comment\Plugin\Field\FieldType\CommentItemInterface;
 use Drupal\comment\Tests\CommentTestTrait;
 use Drupal\Core\Url;
-use Drupal\filter\Entity\FilterFormat;
 
 /**
  * Indexes content and tests ranking factors.
@@ -204,7 +203,7 @@ public function testRankings() {
    * Test rankings of HTML tags.
    */
   public function testHTMLRankings() {
-    $full_html_format = FilterFormat::create(array(
+    $full_html_format = entity_create('filter_format', array(
       'format' => 'full_html',
       'name' => 'Full HTML',
     ));
diff --git a/core/modules/search/tests/modules/search_query_alter/search_query_alter.module b/core/modules/search/tests/modules/search_query_alter/search_query_alter.module
index aee8e6c..57bdb16 100644
--- a/core/modules/search/tests/modules/search_query_alter/search_query_alter.module
+++ b/core/modules/search/tests/modules/search_query_alter/search_query_alter.module
@@ -1,12 +1,12 @@
 <?php
 
+use Drupal\Core\Database\Query\AlterableInterface;
+
 /**
  * @file
  * Test module that alters search queries.
  */
 
-use Drupal\Core\Database\Query\AlterableInterface;
-
 /**
  * Implements hook_query_TAG_alter(): tag search_$type with $type node_search.
  */
diff --git a/core/modules/serialization/src/Normalizer/EntityReferenceFieldItemNormalizer.php b/core/modules/serialization/src/Normalizer/EntityReferenceFieldItemNormalizer.php
index 0fb0a0b..d007bd9 100644
--- a/core/modules/serialization/src/Normalizer/EntityReferenceFieldItemNormalizer.php
+++ b/core/modules/serialization/src/Normalizer/EntityReferenceFieldItemNormalizer.php
@@ -27,18 +27,12 @@ class EntityReferenceFieldItemNormalizer extends ComplexDataNormalizer {
   public function normalize($field_item, $format = NULL, array $context = []) {
     $values = parent::normalize($field_item, $format, $context);
 
+    // Add a 'url' value if there is a reference and a canonical URL. Hard code
+    // 'canonical' here as config entities override the default $rel parameter
+    // value to 'edit-form.
     /** @var \Drupal\Core\Entity\EntityInterface $entity */
-    if ($entity = $field_item->get('entity')->getValue()) {
-      $values['target_type'] = $entity->getEntityTypeId();
-      // Add the target entity UUID to the normalized output values.
-      $values['target_uuid'] = $entity->uuid();
-
-      // Add a 'url' value if there is a reference and a canonical URL. Hard
-      // code 'canonical' here as config entities override the default $rel
-      // parameter value to 'edit-form.
-      if ($url = $entity->url('canonical')) {
-        $values['url'] = $url;
-      }
+    if (($entity = $field_item->get('entity')->getValue()) && ($url = $entity->url('canonical'))) {
+      $values['url'] = $url;
     }
 
     return $values;
diff --git a/core/modules/serialization/src/Tests/EntityResolverTest.php b/core/modules/serialization/src/Tests/EntityResolverTest.php
index 481afc3..e362b8d 100644
--- a/core/modules/serialization/src/Tests/EntityResolverTest.php
+++ b/core/modules/serialization/src/Tests/EntityResolverTest.php
@@ -8,8 +8,6 @@
 
 use Drupal\Core\Url;
 use Drupal\entity_test\Entity\EntityTestMulRev;
-use Drupal\field\Entity\FieldConfig;
-use Drupal\field\Entity\FieldStorageConfig;
 
 /**
  * Tests that entities references can be resolved.
@@ -38,7 +36,7 @@ protected function setUp() {
     \Drupal::service('router.builder')->rebuild();
 
     // Create the test field storage.
-    FieldStorageConfig::create(array(
+    entity_create('field_storage_config', array(
       'entity_type' => 'entity_test_mulrev',
       'field_name' => 'field_test_entity_reference',
       'type' => 'entity_reference',
@@ -48,11 +46,11 @@ protected function setUp() {
     ))->save();
 
     // Create the test field.
-    FieldConfig::create([
+    entity_create('field_config', array(
       'entity_type' => 'entity_test_mulrev',
       'field_name' => 'field_test_entity_reference',
       'bundle' => 'entity_test_mulrev',
-    ])->save();
+    ))->save();
   }
 
   /**
diff --git a/core/modules/serialization/src/Tests/EntitySerializationTest.php b/core/modules/serialization/src/Tests/EntitySerializationTest.php
index abcac01..d9be353 100644
--- a/core/modules/serialization/src/Tests/EntitySerializationTest.php
+++ b/core/modules/serialization/src/Tests/EntitySerializationTest.php
@@ -116,8 +116,6 @@ public function testNormalize() {
       'user_id' => array(
         array(
           'target_id' => $this->user->id(),
-          'target_type' => $this->user->getEntityTypeId(),
-          'target_uuid' => $this->user->uuid(),
           'url' => $this->user->url(),
         ),
       ),
@@ -192,7 +190,7 @@ public function testSerialize() {
       'name' => '<name><value>' . $this->values['name'] . '</value></name>',
       'type' => '<type><value>entity_test_mulrev</value></type>',
       'created' => '<created><value>' . $this->entity->created->value . '</value></created>',
-      'user_id' => '<user_id><target_id>' . $this->user->id() . '</target_id><target_type>' . $this->user->getEntityTypeId() . '</target_type><target_uuid>' . $this->user->uuid() . '</target_uuid><url>' . $this->user->url() . '</url></user_id>',
+      'user_id' => '<user_id><target_id>' . $this->user->id() . '</target_id><url>' . $this->user->url() . '</url></user_id>',
       'revision_id' => '<revision_id><value>' . $this->entity->getRevisionId() . '</value></revision_id>',
       'default_langcode' => '<default_langcode><value>1</value></default_langcode>',
       'field_test_text' => '<field_test_text><value>' . $this->values['field_test_text']['value'] . '</value><format>' . $this->values['field_test_text']['format'] . '</format></field_test_text>',
diff --git a/core/modules/serialization/src/Tests/NormalizerTestBase.php b/core/modules/serialization/src/Tests/NormalizerTestBase.php
index f63c6bf..50e3c87 100644
--- a/core/modules/serialization/src/Tests/NormalizerTestBase.php
+++ b/core/modules/serialization/src/Tests/NormalizerTestBase.php
@@ -25,7 +25,7 @@ protected function setUp() {
 
     $this->installEntitySchema('entity_test_mulrev');
     $this->installEntitySchema('user');
-    $this->installSchema('system', array('router'));
+    $this->installSchema('system', array('url_alias', 'router'));
     $this->installConfig(array('field'));
     \Drupal::service('router.builder')->rebuild();
     \Drupal::moduleHandler()->invoke('rest', 'install');
diff --git a/core/modules/serialization/tests/src/Unit/Normalizer/EntityReferenceFieldItemNormalizerTest.php b/core/modules/serialization/tests/src/Unit/Normalizer/EntityReferenceFieldItemNormalizerTest.php
index 04cfa16..a86b6f7 100644
--- a/core/modules/serialization/tests/src/Unit/Normalizer/EntityReferenceFieldItemNormalizerTest.php
+++ b/core/modules/serialization/tests/src/Unit/Normalizer/EntityReferenceFieldItemNormalizerTest.php
@@ -78,12 +78,6 @@ public function testNormalize() {
     $entity->url('canonical')
       ->willReturn($test_url)
       ->shouldBeCalled();
-    $entity->uuid()
-      ->willReturn('080e3add-f9d5-41ac-9821-eea55b7b42fb')
-      ->shouldBeCalled();
-    $entity->getEntityTypeId()
-      ->willReturn('test_type')
-      ->shouldBeCalled();
 
     $entity_reference = $this->prophesize(TypedDataInterface::class);
     $entity_reference->getValue()
@@ -98,8 +92,6 @@ public function testNormalize() {
 
     $expected = [
       'target_id' => ['value' => 'test'],
-      'target_type' => 'test_type',
-      'target_uuid' => '080e3add-f9d5-41ac-9821-eea55b7b42fb',
       'url' => $test_url,
     ];
     $this->assertSame($expected, $normalized);
diff --git a/core/modules/simpletest/files/php-1.txt b/core/modules/simpletest/files/php-1.txt
index c641a69..52788b6 100644
--- a/core/modules/simpletest/files/php-1.txt
+++ b/core/modules/simpletest/files/php-1.txt
@@ -1,4 +1,3 @@
 <?php
-// @codingStandardsIgnoreFile
 print 'SimpleTest PHP was executed!';
 ?>
diff --git a/core/modules/simpletest/files/php-2.php b/core/modules/simpletest/files/php-2.php
index 29738aa..615a8d7 100644
--- a/core/modules/simpletest/files/php-2.php
+++ b/core/modules/simpletest/files/php-2.php
@@ -1,3 +1,2 @@
 <?php
-// @codingStandardsIgnoreFile
 print 'SimpleTest PHP was executed!';
diff --git a/core/modules/simpletest/simpletest.install b/core/modules/simpletest/simpletest.install
index e5eb9a3..c501624 100644
--- a/core/modules/simpletest/simpletest.install
+++ b/core/modules/simpletest/simpletest.install
@@ -19,6 +19,7 @@ function simpletest_requirements($phase) {
   $requirements = array();
 
   $has_curl = function_exists('curl_init');
+  $has_domdocument = method_exists('DOMDocument', 'loadHTML');
   $open_basedir = ini_get('open_basedir');
 
   $requirements['curl'] = array(
@@ -27,7 +28,16 @@ function simpletest_requirements($phase) {
   );
   if (!$has_curl) {
     $requirements['curl']['severity'] = REQUIREMENT_ERROR;
-    $requirements['curl']['description'] = t('The testing framework could not be installed because the PHP <a href="http://php.net/manual/curl.setup.php">cURL</a> library is not available.');
+    $requirements['curl']['description'] = t('The testing framework could not be installed because the PHP <a href=":curl_url">cURL</a> library is not available.', array(':curl_url' => 'http://php.net/manual/curl.setup.php'));
+  }
+
+  $requirements['php_domdocument'] = array(
+    'title' => t('PHP DOMDocument class'),
+    'value' => $has_domdocument ? t('Enabled') : t('Not found'),
+  );
+  if (!$has_domdocument) {
+    $requirements['php_domdocument']['severity'] = REQUIREMENT_ERROR;
+    $requirements['php_domdocument']['description'] = t('The testing framework requires the DOMDocument class to be available. Check the configure command at the <a href=":link-phpinfo">PHP info page</a>.', array(':link-phpinfo' => \Drupal::url('system.php')));
   }
 
   // SimpleTest currently needs 2 cURL options which are incompatible with
@@ -39,7 +49,7 @@ function simpletest_requirements($phase) {
   );
   if ($open_basedir) {
     $requirements['php_open_basedir']['severity'] = REQUIREMENT_ERROR;
-    $requirements['php_open_basedir']['description'] = t('The testing framework requires the PHP <a href="http://php.net/manual/ini.core.php#ini.open-basedir">open_basedir</a> restriction to be disabled. Check your webserver configuration or contact your web host.');
+    $requirements['php_open_basedir']['description'] = t('The testing framework requires the PHP <a href=":open_basedir-url">open_basedir</a> restriction to be disabled. Check your webserver configuration or contact your web host.', array(':open_basedir-url' => 'http://php.net/manual/ini.core.php#ini.open-basedir'));
   }
 
   // Check the current memory limit. If it is set too low, SimpleTest will fail
diff --git a/core/modules/simpletest/simpletest.module b/core/modules/simpletest/simpletest.module
index ddd6828..74d348e 100644
--- a/core/modules/simpletest/simpletest.module
+++ b/core/modules/simpletest/simpletest.module
@@ -1,10 +1,5 @@
 <?php
 
-/**
- * @file
- * Provides testing functionality.
- */
-
 use Drupal\Core\Asset\AttachedAssetsInterface;
 use Drupal\Core\Database\Database;
 use Drupal\Core\Render\Element;
@@ -14,6 +9,11 @@
 use Symfony\Component\Process\PhpExecutableFinder;
 
 /**
+ * @file
+ * Provides testing functionality.
+ */
+
+/**
  * Implements hook_help().
  */
 function simpletest_help($route_name, RouteMatchInterface $route_match) {
diff --git a/core/modules/simpletest/src/BrowserTestBase.php b/core/modules/simpletest/src/BrowserTestBase.php
index b5da13c..d93ed8b 100644
--- a/core/modules/simpletest/src/BrowserTestBase.php
+++ b/core/modules/simpletest/src/BrowserTestBase.php
@@ -25,8 +25,6 @@
 use Drupal\Core\StreamWrapper\StreamWrapperInterface;
 use Drupal\Core\Test\TestRunnerKernel;
 use Drupal\Core\Url;
-use Drupal\user\Entity\Role;
-use Drupal\user\Entity\User;
 use Drupal\user\UserInterface;
 use Symfony\Component\HttpFoundation\Request;
 
@@ -568,7 +566,7 @@ protected function drupalCreateUser(array $permissions = array(), $name = NULL)
       $edit['roles'] = array($rid);
     }
 
-    $account = User::create($edit);
+    $account = entity_create('user', $edit);
     $account->save();
 
     $this->assertNotNull($account->id(), SafeMarkup::format('User created with name %name and pass %pass', array('%name' => $edit['name'], '%pass' => $edit['pass'])));
@@ -616,7 +614,7 @@ protected function drupalCreateRole(array $permissions, $rid = NULL, $name = NUL
 
     // Create new role.
     /* @var \Drupal\user\RoleInterface $role */
-    $role = Role::create(array(
+    $role = entity_create('user_role', array(
       'id' => $rid,
       'label' => $name,
     ));
diff --git a/core/modules/simpletest/src/InstallerTestBase.php b/core/modules/simpletest/src/InstallerTestBase.php
index adc5463..8115840 100644
--- a/core/modules/simpletest/src/InstallerTestBase.php
+++ b/core/modules/simpletest/src/InstallerTestBase.php
@@ -118,7 +118,7 @@ protected function setUp() {
       ->set('app.root', DRUPAL_ROOT);
     \Drupal::setContainer($this->container);
 
-    $this->visitInstaller();
+    $this->drupalGet($GLOBALS['base_url'] . '/core/install.php');
 
     // Select language.
     $this->setUpLanguage();
@@ -165,13 +165,6 @@ protected function setUp() {
   }
 
   /**
-   * Visits the interactive installer.
-   */
-  protected function visitInstaller() {
-    $this->drupalGet($GLOBALS['base_url'] . '/core/install.php');
-  }
-
-  /**
    * Installer step: Select language.
    */
   protected function setUpLanguage() {
diff --git a/core/modules/simpletest/src/KernelTestBase.php b/core/modules/simpletest/src/KernelTestBase.php
index a987d13..10463d9 100644
--- a/core/modules/simpletest/src/KernelTestBase.php
+++ b/core/modules/simpletest/src/KernelTestBase.php
@@ -429,18 +429,10 @@ protected function installSchema($module, $tables) {
     if (!$this->container->get('module_handler')->moduleExists($module)) {
       throw new \RuntimeException("'$module' module is not enabled");
     }
-
     $tables = (array) $tables;
     foreach ($tables as $table) {
       $schema = drupal_get_module_schema($module, $table);
       if (empty($schema)) {
-        // BC layer to avoid some contrib tests to fail.
-        // @todo Remove the BC layer before 8.1.x release.
-        // @see https://www.drupal.org/node/2670360
-        // @see https://www.drupal.org/node/2670454
-        if ($module == 'system') {
-          continue;
-        }
         throw new \RuntimeException("Unknown '$table' table schema in '$module' module.");
       }
       $this->container->get('database')->schema()->createTable($table, $schema);
diff --git a/core/modules/simpletest/src/TestBase.php b/core/modules/simpletest/src/TestBase.php
index 517afb8..1cdc231 100644
--- a/core/modules/simpletest/src/TestBase.php
+++ b/core/modules/simpletest/src/TestBase.php
@@ -314,7 +314,7 @@
    * HTTP authentication method (specified as a CURLAUTH_* constant).
    *
    * @var int
-   * @see http://php.net/manual/function.curl-setopt.php
+   * @see http://php.net/manual/en/function.curl-setopt.php
    */
   protected $httpAuthMethod = CURLAUTH_BASIC;
 
diff --git a/core/modules/simpletest/src/Tests/KernelTestBaseTest.php b/core/modules/simpletest/src/Tests/KernelTestBaseTest.php
index 5bcd5d3..2187ccc 100644
--- a/core/modules/simpletest/src/Tests/KernelTestBaseTest.php
+++ b/core/modules/simpletest/src/Tests/KernelTestBaseTest.php
@@ -8,10 +8,7 @@
 namespace Drupal\simpletest\Tests;
 
 use Drupal\Core\Database\Database;
-use Drupal\field\Entity\FieldConfig;
 use Drupal\simpletest\KernelTestBase;
-use Drupal\field\Entity\FieldStorageConfig;
-use Drupal\Core\Entity\Entity\EntityViewDisplay;
 
 /**
  * Tests KernelTestBase functionality.
@@ -275,21 +272,21 @@ function testEnableModulesFixedList() {
     $this->enableModules(array('field_test'));
 
     // Create a field.
-    $display = EntityViewDisplay::create(array(
+    entity_create('entity_view_display', array(
       'targetEntityType' => 'entity_test',
       'bundle' => 'entity_test',
       'mode' => 'default',
     ));
-    $field_storage = FieldStorageConfig::create(array(
+    $field_storage = entity_create('field_storage_config', array(
       'field_name' => 'test_field',
       'entity_type' => 'entity_test',
       'type' => 'test_field'
     ));
     $field_storage->save();
-    FieldConfig::create([
+    entity_create('field_config', array(
       'field_storage' => $field_storage,
       'bundle' => 'entity_test',
-    ])->save();
+    ))->save();
   }
 
   /**
diff --git a/core/modules/simpletest/src/WebTestBase.php b/core/modules/simpletest/src/WebTestBase.php
index e4e9622..667f705 100644
--- a/core/modules/simpletest/src/WebTestBase.php
+++ b/core/modules/simpletest/src/WebTestBase.php
@@ -1175,7 +1175,7 @@ protected function curlInitialize() {
    * @param $curl_options
    *   An associative array of cURL options to set, where the keys are constants
    *   defined by the cURL library. For a list of valid options, see
-   *   http://php.net/manual/function.curl-setopt.php
+   *   http://www.php.net/manual/function.curl-setopt.php
    * @param $redirect
    *   FALSE if this is an initial request, TRUE if this request is the result
    *   of a redirect.
diff --git a/core/modules/simpletest/tests/fixtures/simpletest_phpunit_run_command_test.php b/core/modules/simpletest/tests/fixtures/simpletest_phpunit_run_command_test.php
index dd47547..c86a9e6 100644
--- a/core/modules/simpletest/tests/fixtures/simpletest_phpunit_run_command_test.php
+++ b/core/modules/simpletest/tests/fixtures/simpletest_phpunit_run_command_test.php
@@ -1,10 +1,5 @@
 <?php
 
-/**
- * @file
- * Contains \Drupal\Tests\simpletest\Unit\SimpletestPhpunitRunCommandTestWillDie.
- */
-
 namespace Drupal\Tests\simpletest\Unit;
 
 use Drupal\Tests\UnitTestCase;
diff --git a/core/modules/simpletest/tests/modules/simpletest_test/simpletest_test.install b/core/modules/simpletest/tests/modules/simpletest_test/simpletest_test.install
index f5b4a39..b0ccbc7 100644
--- a/core/modules/simpletest/tests/modules/simpletest_test/simpletest_test.install
+++ b/core/modules/simpletest/tests/modules/simpletest_test/simpletest_test.install
@@ -1,11 +1,6 @@
 <?php
 
 /**
- * @file
- * Install hooks for test module.
- */
-
-/**
  * Implements hook_install().
  */
 function simpletest_test_install() {
diff --git a/core/modules/statistics/statistics.module b/core/modules/statistics/statistics.module
index 5079e43..61d58e2 100644
--- a/core/modules/statistics/statistics.module
+++ b/core/modules/statistics/statistics.module
@@ -48,20 +48,20 @@ function statistics_node_view(array &$build, EntityInterface $node, EntityViewDi
 /**
  * Implements hook_node_links_alter().
  */
-function statistics_node_links_alter(array &$links, NodeInterface $entity, array &$context) {
+function statistics_node_links_alter(array &$node_links, NodeInterface $entity, array &$context) {
   if ($context['view_mode'] != 'rss') {
-    $links['#cache']['contexts'][] = 'user.permissions';
+    $node_links['#cache']['contexts'][] = 'user.permissions';
     if (\Drupal::currentUser()->hasPermission('view post access counter')) {
       $statistics = statistics_get($entity->id());
       if ($statistics) {
-        $statistics_links['statistics_counter']['title'] = \Drupal::translation()->formatPlural($statistics['totalcount'], '1 view', '@count views');
-        $links['statistics'] = array(
+        $links['statistics_counter']['title'] = \Drupal::translation()->formatPlural($statistics['totalcount'], '1 view', '@count views');
+        $node_links['statistics'] = array(
           '#theme' => 'links__node__statistics',
-          '#links' => $statistics_links,
+          '#links' => $links,
           '#attributes' => array('class' => array('links', 'inline')),
         );
       }
-      $links['#cache']['max-age'] = \Drupal::config('statistics.settings')->get('display_max_age');
+      $node_links['#cache']['max-age'] = \Drupal::config('statistics.settings')->get('display_max_age');
     }
   }
 }
diff --git a/core/modules/syslog/syslog.module b/core/modules/syslog/syslog.module
index 68fe614..e74d993 100644
--- a/core/modules/syslog/syslog.module
+++ b/core/modules/syslog/syslog.module
@@ -17,7 +17,7 @@ function syslog_help($route_name, RouteMatchInterface $route_match) {
     case 'help.page.syslog':
       $output = '';
       $output .= '<h3>' . t('About') . '</h3>';
-      $output .= '<p>' . t('The Syslog module logs events by sending messages to the logging facility of your web server\'s operating system. Syslog is an operating system administrative logging tool that provides valuable information for use in system management and security auditing. Most suited to medium and large sites, Syslog provides filtering tools that allow messages to be routed by type and severity. For more information, see the <a href=":syslog">online documentation for the Syslog module</a>, as well as PHP\'s documentation pages for the <a href="http://php.net/manual/function.openlog.php">openlog</a> and <a href="http://php.net/manual/function.syslog.php">syslog</a> functions.', array(':syslog' => 'https://www.drupal.org/documentation/modules/syslog')) . '</p>';
+      $output .= '<p>' . t('The Syslog module logs events by sending messages to the logging facility of your web server\'s operating system. Syslog is an operating system administrative logging tool that provides valuable information for use in system management and security auditing. Most suited to medium and large sites, Syslog provides filtering tools that allow messages to be routed by type and severity. For more information, see the <a href=":syslog">online documentation for the Syslog module</a>, as well as PHP\'s documentation pages for the <a href=":php_openlog">openlog</a> and <a href=":php_syslog">syslog</a> functions.', array(':syslog' => 'https://www.drupal.org/documentation/modules/syslog', ':php_openlog' => 'http://www.php.net/manual/function.openlog.php', ':php_syslog' => 'http://www.php.net/manual/function.syslog.php')) . '</p>';
       $output .= '<h3>' . t('Uses') . '</h3>';
       $output .= '<dl>';
       $output .= '<dt>' . t('Logging for UNIX, Linux, and Mac OS X') . '</dt>';
diff --git a/core/modules/system/src/Form/CronForm.php b/core/modules/system/src/Form/CronForm.php
index 63c6e8f..81e44c4 100644
--- a/core/modules/system/src/Form/CronForm.php
+++ b/core/modules/system/src/Form/CronForm.php
@@ -127,7 +127,7 @@ public function buildForm(array $form, FormStateInterface $form_state) {
   public function submitForm(array &$form, FormStateInterface $form_state) {
     // Run cron manually from Cron form.
     if ($this->cron->run()) {
-      drupal_set_message(t('Cron ran successfully.'));
+      drupal_set_message(t('Cron run successfully.'));
     }
     else {
       drupal_set_message(t('Cron run failed.'), 'error');
diff --git a/core/modules/system/src/Form/DateFormatFormBase.php b/core/modules/system/src/Form/DateFormatFormBase.php
index d5868b5..252fba4 100644
--- a/core/modules/system/src/Form/DateFormatFormBase.php
+++ b/core/modules/system/src/Form/DateFormatFormBase.php
@@ -104,7 +104,7 @@ public function form(array $form, FormStateInterface $form_state) {
       '#type' => 'textfield',
       '#title' => t('Format string'),
       '#maxlength' => 100,
-      '#description' => $this->t('A user-defined date format. See the <a href="http://php.net/manual/function.date.php">PHP manual</a> for available options.'),
+      '#description' => $this->t('A user-defined date format. See the <a href=":url">PHP manual</a> for available options.', array(':url' => 'http://php.net/manual/function.date.php')),
       '#required' => TRUE,
       '#attributes' => [
         'data-drupal-date-formatter' => 'source',
diff --git a/core/modules/system/src/Form/ModulesListConfirmForm.php b/core/modules/system/src/Form/ModulesListConfirmForm.php
index ec57697..dea5207 100644
--- a/core/modules/system/src/Form/ModulesListConfirmForm.php
+++ b/core/modules/system/src/Form/ModulesListConfirmForm.php
@@ -7,7 +7,6 @@
 
 namespace Drupal\system\Form;
 
-use Drupal\Component\Render\MarkupInterface;
 use Drupal\Core\Config\PreExistingConfigException;
 use Drupal\Core\Config\UnmetDependenciesException;
 use Drupal\Core\Extension\ModuleHandlerInterface;
@@ -125,7 +124,16 @@ public function buildForm(array $form, FormStateInterface $form_state) {
       return $this->redirect('system.modules_list');
     }
 
-    $items = $this->buildMessageList();
+    $items = array();
+    // Display a list of required modules that have to be installed as well but
+    // were not manually selected.
+    foreach ($this->modules['dependencies'] as $module => $dependencies) {
+      $items[] = $this->formatPlural(count($dependencies), 'You must enable the @required module to install @module.', 'You must enable the @required modules to install @module.', array(
+        '@module' => $this->modules['install'][$module],
+        '@required' => implode(', ', $dependencies),
+      ));
+    }
+
     $form['message'] = array(
       '#theme' => 'item_list',
       '#items' => $items,
@@ -135,31 +143,6 @@ public function buildForm(array $form, FormStateInterface $form_state) {
   }
 
   /**
-   * Builds the message list for the confirmation form.
-   *
-   * @return MarkupInterface[]
-   *   Array of markup for the list of messages on the form.
-   *
-   * @see \Drupal\system\Form\ModulesListForm::buildModuleList()
-   */
-  protected function buildMessageList() {
-    $items = [];
-    if (!empty($this->modules['dependencies'])) {
-      // Display a list of required modules that have to be installed as well
-      // but were not manually selected.
-      foreach ($this->modules['dependencies'] as $module => $dependencies) {
-        $items[] = $this->formatPlural(count($dependencies), 'You must enable the @required module to install @module.', 'You must enable the @required modules to install @module.', [
-          '@module' => $this->modules['install'][$module],
-          // It is safe to implode this because module names are not translated
-          // markup and so will not be double-escaped.
-          '@required' => implode(', ', $dependencies),
-        ]);
-      }
-    }
-    return $items;
-  }
-
-  /**
    * {@inheritdoc}
    */
   public function submitForm(array &$form, FormStateInterface $form_state) {
diff --git a/core/modules/system/src/Form/ModulesListExperimentalConfirmForm.php b/core/modules/system/src/Form/ModulesListExperimentalConfirmForm.php
deleted file mode 100644
index 2194612..0000000
--- a/core/modules/system/src/Form/ModulesListExperimentalConfirmForm.php
+++ /dev/null
@@ -1,45 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\system\Form\ModulesListExperimentalConfirmForm.
- */
-
-namespace Drupal\system\Form;
-
-use Drupal\Core\Form\ConfirmFormBase;
-use Drupal\Core\Form\FormStateInterface;
-
-/**
- * Builds a confirmation form for enabling experimental modules.
- */
-class ModulesListExperimentalConfirmForm extends ModulesListConfirmForm {
-
-  /**
-   * {@inheritdoc}
-   */
-  public function getQuestion() {
-    return $this->t('Are you sure you wish to enable experimental modules?');
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function getFormId() {
-    return 'system_modules_experimental_confirm_form';
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  protected function buildMessageList() {
-    drupal_set_message($this->t('<a href=":url">Experimental modules</a> are provided for testing purposes only. Use at your own risk.', [':url' => 'https://www.drupal.org/core/experimental']), 'warning');
-
-    $items = parent::buildMessageList();
-    // Add the list of experimental modules after any other messages.
-    $items[] = $this->t('The following modules are experimental: @modules', ['@modules' => implode(', ', array_values($this->modules['experimental']))]);
-
-    return $items;
-  }
-
-}
diff --git a/core/modules/system/src/Form/ModulesListForm.php b/core/modules/system/src/Form/ModulesListForm.php
index de67829..e8a6cea 100644
--- a/core/modules/system/src/Form/ModulesListForm.php
+++ b/core/modules/system/src/Form/ModulesListForm.php
@@ -368,7 +368,6 @@ protected function buildModuleList(FormStateInterface $form_state) {
     $modules = array(
       'install' => array(),
       'dependencies' => array(),
-      'experimental' => [],
     );
 
     // Required modules have to be installed.
@@ -381,14 +380,10 @@ protected function buildModuleList(FormStateInterface $form_state) {
     }
 
     // First, build a list of all modules that were selected.
-    foreach ($packages as $package => $items) {
+    foreach ($packages as $items) {
       foreach ($items as $name => $checkbox) {
         if ($checkbox['enable'] && !$this->moduleHandler->moduleExists($name)) {
           $modules['install'][$name] = $data[$name]->info['name'];
-          // Identify experimental modules.
-          if ($package == 'Core (Experimental)') {
-            $modules['experimental'][$name] = $data[$name]->info['name'];
-          }
         }
       }
     }
@@ -399,11 +394,6 @@ protected function buildModuleList(FormStateInterface $form_state) {
         if (!isset($modules['install'][$dependency]) && !$this->moduleHandler->moduleExists($dependency)) {
           $modules['dependencies'][$module][$dependency] = $data[$dependency]->info['name'];
           $modules['install'][$dependency] = $data[$dependency]->info['name'];
-
-          // Identify experimental modules.
-          if ($data[$dependency]->info['package'] == 'Core (Experimental)') {
-            $modules['experimental'][$dependency] = $data[$dependency]->info['name'];
-          }
         }
       }
     }
@@ -433,16 +423,16 @@ public function submitForm(array &$form, FormStateInterface $form_state) {
     // Retrieve a list of modules to install and their dependencies.
     $modules = $this->buildModuleList($form_state);
 
-    // Redirect to a confirmation form if needed.
-    if (!empty($modules['experimental']) || !empty($modules['dependencies'])) {
-
-      $route_name = !empty($modules['experimental']) ? 'system.modules_list_experimental_confirm' : 'system.modules_list_confirm';
+    // Check if we have to install any dependencies. If there is one or more
+    // dependencies that are not installed yet, redirect to the confirmation
+    // form.
+    if (!empty($modules['dependencies']) || !empty($modules['missing'])) {
       // Write the list of changed module states into a key value store.
       $account = $this->currentUser()->id();
       $this->keyValueExpirable->setWithExpire($account, $modules, 60);
 
       // Redirect to the confirmation form.
-      $form_state->setRedirect($route_name);
+      $form_state->setRedirect('system.modules_list_confirm');
 
       // We can exit here because at least one modules has dependencies
       // which we have to prompt the user for in a confirmation form.
diff --git a/core/modules/system/src/Plugin/ImageToolkit/GDToolkit.php b/core/modules/system/src/Plugin/ImageToolkit/GDToolkit.php
index 3314623..f9cfb53 100644
--- a/core/modules/system/src/Plugin/ImageToolkit/GDToolkit.php
+++ b/core/modules/system/src/Plugin/ImageToolkit/GDToolkit.php
@@ -53,7 +53,7 @@ class GDToolkit extends ImageToolkitBase {
    *
    * @see \Drupal\system\Plugin\ImageToolkit\GDToolkit::parseFile()
    * @see \Drupal\system\Plugin\ImageToolkit\GDToolkit::setResource()
-   * @see http://php.net/manual/function.getimagesize.php
+   * @see http://php.net/manual/en/function.getimagesize.php
    */
   protected $preLoadInfo = NULL;
 
@@ -378,7 +378,7 @@ public function getRequirements() {
     // Check for filter and rotate support.
     if (!function_exists('imagefilter') || !function_exists('imagerotate')) {
       $requirements['version']['severity'] = REQUIREMENT_WARNING;
-      $requirements['version']['description'] = t('The GD Library for PHP is enabled, but was compiled without support for functions used by the rotate and desaturate effects. It was probably compiled using the official GD libraries from http://www.libgd.org instead of the GD library bundled with PHP. You should recompile PHP --with-gd using the bundled GD library. See <a href="http://php.net/manual/book.image.php">the PHP manual</a>.');
+      $requirements['version']['description'] = t('The GD Library for PHP is enabled, but was compiled without support for functions used by the rotate and desaturate effects. It was probably compiled using the official GD libraries from http://www.libgd.org instead of the GD library bundled with PHP. You should recompile PHP --with-gd using the bundled GD library. See <a href=":url">the PHP manual</a>.', array(':url' => 'http://www.php.net/manual/book.image.php'));
     }
 
     return $requirements;
diff --git a/core/modules/system/src/Tests/Action/ActionUnitTest.php b/core/modules/system/src/Tests/Action/ActionUnitTest.php
index 6de447f..7bc57b5 100644
--- a/core/modules/system/src/Tests/Action/ActionUnitTest.php
+++ b/core/modules/system/src/Tests/Action/ActionUnitTest.php
@@ -9,7 +9,6 @@
 
 use Drupal\simpletest\KernelTestBase;
 use Drupal\Core\Action\ActionInterface;
-use Drupal\system\Entity\Action;
 use Drupal\user\RoleInterface;
 
 /**
@@ -81,7 +80,7 @@ public function testOperations() {
    */
   public function testDependencies() {
     // Create a new action that depends on a user role.
-    $action = Action::create(array(
+    $action = entity_create('action', array(
       'id' => 'user_add_role_action.' . RoleInterface::ANONYMOUS_ID,
       'type' => 'user',
       'label' => t('Add the anonymous role to the selected users'),
diff --git a/core/modules/system/src/Tests/Ajax/AjaxTestBase.php b/core/modules/system/src/Tests/Ajax/AjaxTestBase.php
index c9edeb5..a4c7bfc 100644
--- a/core/modules/system/src/Tests/Ajax/AjaxTestBase.php
+++ b/core/modules/system/src/Tests/Ajax/AjaxTestBase.php
@@ -56,7 +56,7 @@ protected function assertCommand($haystack, $needle, $message) {
       // If the command has additional data that we're not testing for, do not
       // consider that a failure. Also, == instead of ===, because we don't
       // require the key/value pairs to be in any particular order
-      // (http://php.net/manual/language.operators.array.php).
+      // (http://www.php.net/manual/language.operators.array.php).
       if (array_intersect_key($command, $needle) == $needle) {
         $found = TRUE;
         break;
diff --git a/core/modules/system/src/Tests/Ajax/FrameworkTest.php b/core/modules/system/src/Tests/Ajax/FrameworkTest.php
index 68ed9dd..f6dfd6b 100644
--- a/core/modules/system/src/Tests/Ajax/FrameworkTest.php
+++ b/core/modules/system/src/Tests/Ajax/FrameworkTest.php
@@ -198,7 +198,7 @@ public function testCurrentPathChange() {
    * Tests that overridden CSS files are not added during lazy load.
    */
   public function testLazyLoadOverriddenCSS() {
-    // The test theme overrides js.module.css without an implementation,
+    // The test theme overrides system.module.css without an implementation,
     // thereby removing it.
     \Drupal::service('theme_handler')->install(array('test_theme'));
     $this->config('system.theme')
@@ -214,6 +214,6 @@ public function testLazyLoadOverriddenCSS() {
     // information about the file; we only really care about whether it appears
     // in a LINK or STYLE tag, for which Drupal always adds a query string for
     // cache control.
-    $this->assertNoText('js.module.css?', 'Ajax lazy loading does not add overridden CSS files.');
+    $this->assertNoText('system.module.css?', 'Ajax lazy loading does not add overridden CSS files.');
   }
 }
diff --git a/core/modules/system/src/Tests/Ajax/MultiFormTest.php b/core/modules/system/src/Tests/Ajax/MultiFormTest.php
index 3d16bca..f87100d 100644
--- a/core/modules/system/src/Tests/Ajax/MultiFormTest.php
+++ b/core/modules/system/src/Tests/Ajax/MultiFormTest.php
@@ -8,8 +8,6 @@
 namespace Drupal\system\Tests\Ajax;
 
 use Drupal\Core\Field\FieldStorageDefinitionInterface;
-use Drupal\field\Entity\FieldConfig;
-use Drupal\field\Entity\FieldStorageConfig;
 
 /**
  * Tests that AJAX-enabled forms work when multiple instances of the same form
@@ -33,17 +31,17 @@ protected function setUp() {
 
     // Create a multi-valued field for 'page' nodes to use for Ajax testing.
     $field_name = 'field_ajax_test';
-    FieldStorageConfig::create(array(
+    entity_create('field_storage_config', array(
       'entity_type' => 'node',
       'field_name' => $field_name,
       'type' => 'text',
       'cardinality' => FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED,
     ))->save();
-    FieldConfig::create([
+    entity_create('field_config', array(
       'field_name' => $field_name,
       'entity_type' => 'node',
       'bundle' => 'page',
-    ])->save();
+    ))->save();
     entity_get_form_display('node', 'page', 'default')
       ->setComponent($field_name, array('type' => 'text_textfield'))
       ->save();
diff --git a/core/modules/system/src/Tests/Block/SystemMenuBlockTest.php b/core/modules/system/src/Tests/Block/SystemMenuBlockTest.php
index 6b1a81f..e10a6af 100644
--- a/core/modules/system/src/Tests/Block/SystemMenuBlockTest.php
+++ b/core/modules/system/src/Tests/Block/SystemMenuBlockTest.php
@@ -6,8 +6,6 @@
 
 namespace Drupal\system\Tests\Block;
 
-use Drupal\system\Entity\Menu;
-use Drupal\block\Entity\Block;
 use Drupal\Core\Render\Element;
 use Drupal\simpletest\KernelTestBase;
 use Drupal\system\Tests\Routing\MockRouteProvider;
@@ -120,7 +118,7 @@ protected function setUp() {
     $menu_name = 'mock';
     $label = $this->randomMachineName(16);
 
-    $this->menu = Menu::create(array(
+    $this->menu = entity_create('menu', array(
       'id' => $menu_name,
       'label' => $label,
       'description' => 'Description text',
@@ -157,7 +155,7 @@ protected function setUp() {
    */
   public function testSystemMenuBlockConfigDependencies() {
 
-    $block = Block::create(array(
+    $block = entity_create('block', array(
       'plugin' => 'system_menu_block:' . $this->menu->id(),
       'region' => 'footer',
       'id' => 'machinename',
diff --git a/core/modules/system/src/Tests/Condition/CurrentThemeConditionTest.php b/core/modules/system/src/Tests/Condition/CurrentThemeConditionTest.php
index 303f583..3139ecc 100644
--- a/core/modules/system/src/Tests/Condition/CurrentThemeConditionTest.php
+++ b/core/modules/system/src/Tests/Condition/CurrentThemeConditionTest.php
@@ -52,7 +52,7 @@ public function testCurrentTheme() {
     $this->assertTrue($condition_negated->execute());
 
     // Set the expected theme to be used.
-    \Drupal::service('theme_handler')->setDefault('test_theme');
+    $this->config('system.theme')->set('default', 'test_theme')->save();
     \Drupal::theme()->resetActiveTheme();
 
     $this->assertTrue($condition->execute());
diff --git a/core/modules/system/src/Tests/Database/SelectComplexTest.php b/core/modules/system/src/Tests/Database/SelectComplexTest.php
index dce52b1..880c6eb 100644
--- a/core/modules/system/src/Tests/Database/SelectComplexTest.php
+++ b/core/modules/system/src/Tests/Database/SelectComplexTest.php
@@ -9,7 +9,6 @@
 
 use Drupal\Core\Database\Database;
 use Drupal\Core\Database\RowCountException;
-use Drupal\user\Entity\User;
 
 /**
  * Tests the Select query builder with more complex queries.
@@ -329,10 +328,10 @@ function testJoinTwice() {
   function testJoinSubquery() {
     $this->installSchema('system', 'sequences');
 
-    $account = User::create([
+    $account = entity_create('user', array(
       'name' => $this->randomMachineName(),
       'mail' => $this->randomMachineName() . '@example.com',
-    ]);
+    ));
 
     $query = db_select('test_task', 'tt', array('target' => 'replica'));
     $query->addExpression('tt.pid + 1', 'abc');
diff --git a/core/modules/system/src/Tests/Entity/ConfigEntityImportTest.php b/core/modules/system/src/Tests/Entity/ConfigEntityImportTest.php
index cf60631..f7fbe1c 100644
--- a/core/modules/system/src/Tests/Entity/ConfigEntityImportTest.php
+++ b/core/modules/system/src/Tests/Entity/ConfigEntityImportTest.php
@@ -9,9 +9,7 @@
 
 use Drupal\Core\Entity\EntityWithPluginCollectionInterface;
 use Drupal\image\Entity\ImageStyle;
-use Drupal\search\Entity\SearchPage;
 use Drupal\simpletest\WebTestBase;
-use Drupal\system\Entity\Action;
 
 /**
  * Tests ConfigEntity importing.
@@ -52,7 +50,7 @@ public function testConfigUpdateImport() {
   protected function doActionUpdate() {
     // Create a test action with a known label.
     $name = 'system.action.apple';
-    $entity = Action::create(array(
+    $entity = entity_create('action', array(
       'id' => 'apple',
       'plugin' => 'action_message_action',
     ));
@@ -161,10 +159,10 @@ protected function doImageStyleUpdate() {
   protected function doSearchPageUpdate() {
     // Create a test search page with a known label.
     $name = 'search.page.apple';
-    $entity = SearchPage::create([
+    $entity = entity_create('search_page', array(
       'id' => 'apple',
       'plugin' => 'search_extra_type_search',
-    ]);
+    ));
     $entity->save();
 
     $this->checkSinglePluginConfigSync($entity, 'configuration', 'boost', 'bi');
diff --git a/core/modules/system/src/Tests/Entity/ConfigEntityQueryTest.php b/core/modules/system/src/Tests/Entity/ConfigEntityQueryTest.php
index 09a21d2..d3b7795 100644
--- a/core/modules/system/src/Tests/Entity/ConfigEntityQueryTest.php
+++ b/core/modules/system/src/Tests/Entity/ConfigEntityQueryTest.php
@@ -9,7 +9,6 @@
 
 use Drupal\Core\Config\Entity\Query\QueryFactory;
 use Drupal\simpletest\KernelTestBase;
-use Drupal\config_test\Entity\ConfigQueryTest;
 
 /**
  * Tests Config Entity Query functionality.
@@ -59,7 +58,7 @@ protected function setUp() {
     $array['level1a']['level2'] = 9;
     // The tests match array.level1.level2.
     $array['level1']['level2'] = 1;
-    $entity = ConfigQueryTest::create(array(
+    $entity = entity_create('config_query_test', array(
       'label' => $this->randomMachineName(),
       'id' => '1',
       'number' => 31,
@@ -70,7 +69,7 @@ protected function setUp() {
     $entity->save();
 
     $array['level1']['level2'] = 2;
-    $entity = ConfigQueryTest::create(array(
+    $entity = entity_create('config_query_test', array(
       'label' => $this->randomMachineName(),
       'id' => '2',
       'number' => 41,
@@ -81,7 +80,7 @@ protected function setUp() {
     $entity->save();
 
     $array['level1']['level2'] = 1;
-    $entity = ConfigQueryTest::create(array(
+    $entity = entity_create('config_query_test', array(
       'label' => 'test_prefix_' . $this->randomMachineName(),
       'id' => '3',
       'number' => 59,
@@ -92,7 +91,7 @@ protected function setUp() {
     $entity->save();
 
     $array['level1']['level2'] = 2;
-    $entity = ConfigQueryTest::create(array(
+    $entity = entity_create('config_query_test', array(
       'label' => $this->randomMachineName() . '_test_suffix',
       'id' => '4',
       'number' => 26,
@@ -103,7 +102,7 @@ protected function setUp() {
     $entity->save();
 
     $array['level1']['level2'] = 3;
-    $entity = ConfigQueryTest::create(array(
+    $entity = entity_create('config_query_test', array(
       'label' => $this->randomMachineName() . '_TEST_contains_' . $this->randomMachineName(),
       'id' => '5',
       'number' => 53,
@@ -349,7 +348,7 @@ public function testConfigEntityQuery() {
    */
   public function testStringIdConditions() {
     // We need an entity with a non-numeric ID.
-    $entity = ConfigQueryTest::create(array(
+    $entity = entity_create('config_query_test', array(
       'label' => $this->randomMachineName(),
       'id' => 'foo.bar',
     ));
diff --git a/core/modules/system/src/Tests/Entity/EntityAccessControlHandlerTest.php b/core/modules/system/src/Tests/Entity/EntityAccessControlHandlerTest.php
index bea9af4..3833476 100644
--- a/core/modules/system/src/Tests/Entity/EntityAccessControlHandlerTest.php
+++ b/core/modules/system/src/Tests/Entity/EntityAccessControlHandlerTest.php
@@ -20,6 +20,11 @@
  */
 class EntityAccessControlHandlerTest extends EntityLanguageTestBase  {
 
+  protected function setUp() {
+    parent::setUp();
+    $this->installSchema('system', 'url_alias');
+  }
+
   /**
    * Asserts entity access correctly grants or denies access.
    */
diff --git a/core/modules/system/src/Tests/Entity/EntityCacheTagsTestBase.php b/core/modules/system/src/Tests/Entity/EntityCacheTagsTestBase.php
index 53df175..dd35bbd 100644
--- a/core/modules/system/src/Tests/Entity/EntityCacheTagsTestBase.php
+++ b/core/modules/system/src/Tests/Entity/EntityCacheTagsTestBase.php
@@ -73,19 +73,19 @@ protected function setUp() {
     if ($this->entity->getEntityType()->get('field_ui_base_route')) {
       // Add field, so we can modify the field storage and field entities to
       // verify that changes to those indeed clear cache tags.
-      FieldStorageConfig::create(array(
+      entity_create('field_storage_config', array(
         'field_name' => 'configurable_field',
         'entity_type' => $this->entity->getEntityTypeId(),
         'type' => 'test_field',
         'settings' => array(),
       ))->save();
-      FieldConfig::create([
+      entity_create('field_config', array(
         'entity_type' => $this->entity->getEntityTypeId(),
         'bundle' => $this->entity->bundle(),
         'field_name' => 'configurable_field',
         'label' => 'Configurable field',
         'settings' => array(),
-      ])->save();
+      ))->save();
 
       // Reload the entity now that a new field has been added to it.
       $storage = $this->container
@@ -246,7 +246,7 @@ protected function createReferenceTestEntities($referenced_entity) {
 
     // Add a field of the given type to the given entity type's "foo" bundle.
     $field_name = $referenced_entity->getEntityTypeId() . '_reference';
-    FieldStorageConfig::create(array(
+    entity_create('field_storage_config', array(
       'field_name' => $field_name,
       'entity_type' => $entity_type,
       'type' => 'entity_reference',
@@ -255,7 +255,7 @@ protected function createReferenceTestEntities($referenced_entity) {
         'target_type' => $referenced_entity->getEntityTypeId(),
       ),
     ))->save();
-    FieldConfig::create([
+    entity_create('field_config', array(
       'field_name' => $field_name,
       'entity_type' => $entity_type,
       'bundle' => $bundle,
@@ -269,7 +269,7 @@ protected function createReferenceTestEntities($referenced_entity) {
           'auto_create' => FALSE,
         ),
       ),
-    ])->save();
+    ))->save();
     if (!$this->entity->getEntityType()->hasHandlerClass('view_builder')) {
       entity_get_display($entity_type, $bundle, 'full')
         ->setComponent($field_name, array(
diff --git a/core/modules/system/src/Tests/Entity/EntityCrudHookTest.php b/core/modules/system/src/Tests/Entity/EntityCrudHookTest.php
index 8e401cd..2885d47 100644
--- a/core/modules/system/src/Tests/Entity/EntityCrudHookTest.php
+++ b/core/modules/system/src/Tests/Entity/EntityCrudHookTest.php
@@ -13,7 +13,6 @@
 use Drupal\Core\Database\Database;
 use Drupal\Core\Language\LanguageInterface;
 use Drupal\block\Entity\Block;
-use Drupal\node\Entity\NodeType;
 use Drupal\taxonomy\Entity\Term;
 use Drupal\node\Entity\Node;
 use Drupal\taxonomy\Entity\Vocabulary;
@@ -87,7 +86,7 @@ protected function assertHookMessageOrder($messages) {
    * Tests hook invocations for CRUD operations on blocks.
    */
   public function testBlockHooks() {
-    $entity = Block::create(array(
+    $entity = entity_create('block', array(
       'id' => 'stark_test_html',
       'plugin' => 'test_html',
       'theme' => 'stark',
@@ -143,10 +142,10 @@ public function testBlockHooks() {
    */
   public function testCommentHooks() {
     $account = $this->createUser();
-    NodeType::create([
+    entity_create('node_type', array(
       'type' => 'article',
       'name' => 'Article',
-    ])->save();
+    ))->save();
     $this->addDefaultCommentField('node', 'article', 'comment', CommentItemInterface::OPEN);
 
     $node = entity_create('node', array(
@@ -164,7 +163,7 @@ public function testCommentHooks() {
     $nid = $node->id();
     $GLOBALS['entity_crud_hook_test'] = array();
 
-    $comment = Comment::create(array(
+    $comment = entity_create('comment', array(
       'cid' => NULL,
       'pid' => 0,
       'entity_id' => $nid,
@@ -231,7 +230,7 @@ public function testFileHooks() {
 
     $url = 'public://entity_crud_hook_test.file';
     file_put_contents($url, 'Test test test');
-    $file = File::create([
+    $file = entity_create('file', array(
       'fid' => NULL,
       'uid' => 1,
       'filename' => 'entity_crud_hook_test.file',
@@ -241,7 +240,7 @@ public function testFileHooks() {
       'status' => 1,
       'created' => REQUEST_TIME,
       'changed' => REQUEST_TIME,
-    ]);
+    ));
 
     $this->assertHookMessageOrder(array(
       'entity_crud_hook_test_file_create called',
@@ -483,13 +482,13 @@ public function testTaxonomyVocabularyHooks() {
    * Tests hook invocations for CRUD operations on users.
    */
   public function testUserHooks() {
-    $account = User::create([
+    $account = entity_create('user', array(
       'name' => 'Test user',
       'mail' => 'test@example.com',
       'created' => REQUEST_TIME,
       'status' => 1,
       'language' => 'en',
-    ]);
+    ));
 
     $this->assertHookMessageOrder(array(
       'entity_crud_hook_test_user_create called',
diff --git a/core/modules/system/src/Tests/Entity/EntityDefinitionUpdateTest.php b/core/modules/system/src/Tests/Entity/EntityDefinitionUpdateTest.php
index 177fd52..a9b86b9 100644
--- a/core/modules/system/src/Tests/Entity/EntityDefinitionUpdateTest.php
+++ b/core/modules/system/src/Tests/Entity/EntityDefinitionUpdateTest.php
@@ -105,7 +105,7 @@ public function testEntityTypeUpdateWithoutData() {
     $this->assertTrue($this->entityDefinitionUpdateManager->needsUpdates(), 'EntityDefinitionUpdateManager reports that updates are needed.');
     $expected = array(
       'entity_test_update' => array(
-        t('The %entity_type entity type needs to be updated.', ['%entity_type' => $this->entityManager->getDefinition('entity_test_update')->getLabel()]),
+        t('Update the %entity_type entity type.', array('%entity_type' => $this->entityManager->getDefinition('entity_test_update')->getLabel())),
       ),
     );
     $this->assertEqual($this->entityDefinitionUpdateManager->getChangeSummary(), $expected); //, 'EntityDefinitionUpdateManager reports the expected change summary.');
@@ -144,7 +144,7 @@ public function testBaseFieldCreateUpdateDeleteWithoutData() {
     $this->assertTrue($this->entityDefinitionUpdateManager->needsUpdates(), 'EntityDefinitionUpdateManager reports that updates are needed.');
     $expected = array(
       'entity_test_update' => array(
-        t('The %field_name field needs to be installed.', ['%field_name' => t('A new base field')]),
+        t('Create the %field_name field.', array('%field_name' => t('A new base field'))),
       ),
     );
     $this->assertEqual($this->entityDefinitionUpdateManager->getChangeSummary(), $expected, 'EntityDefinitionUpdateManager reports the expected change summary.');
@@ -157,7 +157,7 @@ public function testBaseFieldCreateUpdateDeleteWithoutData() {
     $this->assertTrue($this->entityDefinitionUpdateManager->needsUpdates(), 'EntityDefinitionUpdateManager reports that updates are needed.');
     $expected = array(
       'entity_test_update' => array(
-        t('The %field_name field needs to be updated.', ['%field_name' => t('A new base field')]),
+        t('Update the %field_name field.', array('%field_name' => t('A new base field'))),
       ),
     );
     $this->assertEqual($this->entityDefinitionUpdateManager->getChangeSummary(), $expected, 'EntityDefinitionUpdateManager reports the expected change summary.');
@@ -170,7 +170,7 @@ public function testBaseFieldCreateUpdateDeleteWithoutData() {
     $this->assertTrue($this->entityDefinitionUpdateManager->needsUpdates(), 'EntityDefinitionUpdateManager reports that updates are needed.');
     $expected = array(
       'entity_test_update' => array(
-        t('The %field_name field needs to be updated.', ['%field_name' => t('A new base field')]),
+        t('Update the %field_name field.', array('%field_name' => t('A new base field'))),
       ),
     );
     $this->assertEqual($this->entityDefinitionUpdateManager->getChangeSummary(), $expected, 'EntityDefinitionUpdateManager reports the expected change summary.');
@@ -184,7 +184,7 @@ public function testBaseFieldCreateUpdateDeleteWithoutData() {
     $this->assertTrue($this->entityDefinitionUpdateManager->needsUpdates(), 'EntityDefinitionUpdateManager reports that updates are needed.');
     $expected = array(
       'entity_test_update' => array(
-        t('The %field_name field needs to be updated.', ['%field_name' => t('A new base field')]),
+        t('Update the %field_name field.', array('%field_name' => t('A new base field'))),
       ),
     );
     $this->assertEqual($this->entityDefinitionUpdateManager->getChangeSummary(), $expected, 'EntityDefinitionUpdateManager reports the expected change summary.');
@@ -199,7 +199,7 @@ public function testBaseFieldCreateUpdateDeleteWithoutData() {
     $this->assertTrue($this->entityDefinitionUpdateManager->needsUpdates(), 'EntityDefinitionUpdateManager reports that updates are needed.');
     $expected = array(
       'entity_test_update' => array(
-        t('The %field_name field needs to be uninstalled.', ['%field_name' => t('A new base field')]),
+        t('Delete the %field_name field.', array('%field_name' => t('A new base field'))),
       ),
     );
     $this->assertEqual($this->entityDefinitionUpdateManager->getChangeSummary(), $expected, 'EntityDefinitionUpdateManager reports the expected change summary.');
@@ -218,7 +218,7 @@ public function testBundleFieldCreateUpdateDeleteWithoutData() {
     $this->assertTrue($this->entityDefinitionUpdateManager->needsUpdates(), 'EntityDefinitionUpdateManager reports that updates are needed.');
     $expected = array(
       'entity_test_update' => array(
-        t('The %field_name field needs to be installed.', ['%field_name' => t('A new bundle field')]),
+        t('Create the %field_name field.', array('%field_name' => t('A new bundle field'))),
       ),
     );
     $this->assertEqual($this->entityDefinitionUpdateManager->getChangeSummary(), $expected, 'EntityDefinitionUpdateManager reports the expected change summary.');
@@ -231,9 +231,9 @@ public function testBundleFieldCreateUpdateDeleteWithoutData() {
     $this->modifyBundleField();
     $this->assertTrue($this->entityDefinitionUpdateManager->needsUpdates(), 'EntityDefinitionUpdateManager reports that updates are needed.');
     $expected = array(
-      'entity_test_update' => [
-        t('The %field_name field needs to be updated.', ['%field_name' => t('A new bundle field')]),
-      ],
+      'entity_test_update' => array(
+        t('Update the %field_name field.', array('%field_name' => t('A new bundle field'))),
+      ),
     );
     $this->assertEqual($this->entityDefinitionUpdateManager->getChangeSummary(), $expected, 'EntityDefinitionUpdateManager reports the expected change summary.');
     $this->entityDefinitionUpdateManager->applyUpdates();
@@ -245,7 +245,7 @@ public function testBundleFieldCreateUpdateDeleteWithoutData() {
     $this->assertTrue($this->entityDefinitionUpdateManager->needsUpdates(), 'EntityDefinitionUpdateManager reports that updates are needed.');
     $expected = array(
       'entity_test_update' => array(
-        t('The %field_name field needs to be uninstalled.', ['%field_name' => t('A new bundle field')]),
+        t('Delete the %field_name field.', array('%field_name' => t('A new bundle field'))),
       ),
     );
     $this->assertEqual($this->entityDefinitionUpdateManager->getChangeSummary(), $expected, 'EntityDefinitionUpdateManager reports the expected change summary.');
@@ -487,7 +487,7 @@ public function testEntityIndexCreateDeleteWithoutData() {
     $this->assertTrue($this->entityDefinitionUpdateManager->needsUpdates(), 'EntityDefinitionUpdateManager reports that updates are needed.');
     $expected = array(
       'entity_test_update' => array(
-        t('The %entity_type entity type needs to be updated.', ['%entity_type' => $this->entityManager->getDefinition('entity_test_update')->getLabel()]),
+        t('Update the %entity_type entity type.', array('%entity_type' => $this->entityManager->getDefinition('entity_test_update')->getLabel())),
       ),
     );
     $this->assertEqual($this->entityDefinitionUpdateManager->getChangeSummary(), $expected, 'EntityDefinitionUpdateManager reports the expected change summary.');
@@ -502,7 +502,7 @@ public function testEntityIndexCreateDeleteWithoutData() {
     $this->assertTrue($this->entityDefinitionUpdateManager->needsUpdates(), 'EntityDefinitionUpdateManager reports that updates are needed.');
     $expected = array(
       'entity_test_update' => array(
-        t('The %entity_type entity type needs to be updated.', ['%entity_type' => $this->entityManager->getDefinition('entity_test_update')->getLabel()]),
+        t('Update the %entity_type entity type.', array('%entity_type' => $this->entityManager->getDefinition('entity_test_update')->getLabel())),
       ),
     );
     $this->assertEqual($this->entityDefinitionUpdateManager->getChangeSummary(), $expected, 'EntityDefinitionUpdateManager reports the expected change summary.');
diff --git a/core/modules/system/src/Tests/Entity/EntityLanguageTestBase.php b/core/modules/system/src/Tests/Entity/EntityLanguageTestBase.php
index 27ad447..61a5ad2 100644
--- a/core/modules/system/src/Tests/Entity/EntityLanguageTestBase.php
+++ b/core/modules/system/src/Tests/Entity/EntityLanguageTestBase.php
@@ -10,7 +10,6 @@
 use Drupal\Component\Utility\Unicode;
 use Drupal\language\Entity\ConfigurableLanguage;
 use Drupal\field\Entity\FieldConfig;
-use Drupal\field\Entity\FieldStorageConfig;
 
 /**
  * Base class for language-aware entity tests.
@@ -76,32 +75,32 @@ protected function setUp() {
 
     // Create field fields in all entity variations.
     foreach (entity_test_entity_types() as $entity_type) {
-      FieldStorageConfig::create(array(
+      entity_create('field_storage_config', array(
         'field_name' => $this->fieldName,
         'entity_type' => $entity_type,
         'type' => 'text',
         'cardinality' => 4,
       ))->save();
-      FieldConfig::create([
+      entity_create('field_config', array(
         'field_name' => $this->fieldName,
         'entity_type' => $entity_type,
         'bundle' => $entity_type,
         'translatable' => TRUE,
-      ])->save();
+      ))->save();
       $this->field[$entity_type] = FieldConfig::load($entity_type . '.' . $entity_type . '.' . $this->fieldName);
 
-      FieldStorageConfig::create(array(
+      entity_create('field_storage_config', array(
         'field_name' => $this->untranslatableFieldName,
         'entity_type' => $entity_type,
         'type' => 'text',
         'cardinality' => 4,
       ))->save();
-      FieldConfig::create([
+      entity_create('field_config', array(
         'field_name' => $this->untranslatableFieldName,
         'entity_type' => $entity_type,
         'bundle' => $entity_type,
         'translatable' => FALSE,
-      ])->save();
+      ))->save();
     }
 
     // Create the default languages.
diff --git a/core/modules/system/src/Tests/Entity/EntityQueryAggregateTest.php b/core/modules/system/src/Tests/Entity/EntityQueryAggregateTest.php
index 57fe7c5..a3262ea 100644
--- a/core/modules/system/src/Tests/Entity/EntityQueryAggregateTest.php
+++ b/core/modules/system/src/Tests/Entity/EntityQueryAggregateTest.php
@@ -4,12 +4,8 @@
  * @file
  * Contains \Drupal\system\Tests\Entity\EntityQueryAggregateTest.
  */
-
 namespace Drupal\system\Tests\Entity;
 
-use Drupal\field\Entity\FieldConfig;
-use Drupal\field\Entity\FieldStorageConfig;
-
 /**
  * Tests the Entity Query Aggregation API.
  *
@@ -55,17 +51,17 @@ protected function setUp() {
     // Add some fieldapi fields to be used in the test.
     for ($i = 1; $i <= 2; $i++) {
       $field_name = 'field_test_' . $i;
-      FieldStorageConfig::create(array(
+      entity_create('field_storage_config', array(
         'field_name' => $field_name,
         'entity_type' => 'entity_test',
         'type' => 'integer',
         'cardinality' => 2,
       ))->save();
-      FieldConfig::create([
+      entity_create('field_config', array(
         'field_name' => $field_name,
         'entity_type' => 'entity_test',
         'bundle' => 'entity_test',
-      ])->save();
+      ))->save();
     }
 
     $entity = $this->entityStorage->create(array(
diff --git a/core/modules/system/src/Tests/Entity/EntityQueryTest.php b/core/modules/system/src/Tests/Entity/EntityQueryTest.php
index a368298..932e5fb 100644
--- a/core/modules/system/src/Tests/Entity/EntityQueryTest.php
+++ b/core/modules/system/src/Tests/Entity/EntityQueryTest.php
@@ -71,7 +71,7 @@ protected function setUp() {
     $figures = Unicode::strtolower($this->randomMachineName());
     $greetings = Unicode::strtolower($this->randomMachineName());
     foreach (array($figures => 'shape', $greetings => 'text') as $field_name => $field_type) {
-      $field_storage = FieldStorageConfig::create(array(
+      $field_storage = entity_create('field_storage_config', array(
         'field_name' => $field_name,
         'entity_type' => 'entity_test_mulrev',
         'type' => $field_type,
@@ -89,10 +89,10 @@ protected function setUp() {
       } while ($bundles && strtolower($bundles[0]) >= strtolower($bundle));
       entity_test_create_bundle($bundle);
       foreach ($field_storages as $field_storage) {
-        FieldConfig::create([
+        entity_create('field_config', array(
           'field_storage' => $field_storage,
           'bundle' => $bundle,
-        ])->save();
+        ))->save();
       }
       $bundles[] = $bundle;
     }
@@ -458,7 +458,7 @@ public function testTableSort() {
   public function testCount() {
     // Create a field with the same name in a different entity type.
     $field_name = $this->figures;
-    $field_storage = FieldStorageConfig::create(array(
+    $field_storage = entity_create('field_storage_config', array(
       'field_name' => $field_name,
       'entity_type' => 'entity_test',
       'type' => 'shape',
@@ -467,10 +467,10 @@ public function testCount() {
     ));
     $field_storage->save();
     $bundle = $this->randomMachineName();
-    FieldConfig::create([
+    entity_create('field_config', array(
       'field_storage' => $field_storage,
       'bundle' => $bundle,
-    ])->save();
+    ))->save();
 
     $entity = entity_create('entity_test', array(
       'id' => 1,
diff --git a/core/modules/system/src/Tests/Entity/EntityReferenceSelection/EntityReferenceSelectionAccessTest.php b/core/modules/system/src/Tests/Entity/EntityReferenceSelection/EntityReferenceSelectionAccessTest.php
index 92efca6..46cc952 100644
--- a/core/modules/system/src/Tests/Entity/EntityReferenceSelection/EntityReferenceSelectionAccessTest.php
+++ b/core/modules/system/src/Tests/Entity/EntityReferenceSelection/EntityReferenceSelectionAccessTest.php
@@ -13,7 +13,6 @@
 use Drupal\comment\CommentInterface;
 use Drupal\simpletest\WebTestBase;
 use Drupal\user\Entity\User;
-use Drupal\comment\Entity\Comment;
 
 /**
  * Tests for the base handlers provided by Entity Reference.
@@ -235,7 +234,7 @@ public function testUserHandler() {
     $user_labels = array();
     foreach ($user_values as $key => $values) {
       if (is_array($values)) {
-        $account = User::create($values);
+        $account = entity_create('user', $values);
         $account->save();
       }
       else {
@@ -414,7 +413,7 @@ public function testCommentHandler() {
     $comments = array();
     $comment_labels = array();
     foreach ($comment_values as $key => $values) {
-      $comment = Comment::create($values);
+      $comment = entity_create('comment', $values);
       $comment->save();
       $comments[$key] = $comment;
       $comment_labels[$key] = Html::escape($comment->label());
diff --git a/core/modules/system/src/Tests/Entity/EntityReferenceSelection/EntityReferenceSelectionSortTest.php b/core/modules/system/src/Tests/Entity/EntityReferenceSelection/EntityReferenceSelectionSortTest.php
index 76992f1..3d0d4d1 100644
--- a/core/modules/system/src/Tests/Entity/EntityReferenceSelection/EntityReferenceSelectionSortTest.php
+++ b/core/modules/system/src/Tests/Entity/EntityReferenceSelection/EntityReferenceSelectionSortTest.php
@@ -8,11 +8,9 @@
 namespace Drupal\system\Tests\Entity\EntityReferenceSelection;
 
 use Drupal\Component\Utility\Html;
-use Drupal\field\Entity\FieldConfig;
 use Drupal\node\Entity\Node;
 use Drupal\node\Entity\NodeType;
 use Drupal\system\Tests\Entity\EntityUnitTestBase;
-use Drupal\field\Entity\FieldStorageConfig;
 
 /**
  * Tests sorting referenced items.
@@ -47,21 +45,21 @@ protected function setUp() {
    */
   public function testSort() {
     // Add text field to entity, to sort by.
-    FieldStorageConfig::create(array(
+    entity_create('field_storage_config', array(
       'field_name' => 'field_text',
       'entity_type' => 'node',
       'type' => 'text',
       'entity_types' => array('node'),
     ))->save();
 
-    FieldConfig::create([
+    entity_create('field_config', array(
       'label' => 'Text Field',
       'field_name' => 'field_text',
       'entity_type' => 'node',
       'bundle' => 'article',
       'settings' => array(),
       'required' => FALSE,
-    ])->save();
+    ))->save();
 
     // Build a set of test data.
     $node_values = array(
diff --git a/core/modules/system/src/Tests/Entity/EntityUnitTestBase.php b/core/modules/system/src/Tests/Entity/EntityUnitTestBase.php
index ff9941b..8940f0f 100644
--- a/core/modules/system/src/Tests/Entity/EntityUnitTestBase.php
+++ b/core/modules/system/src/Tests/Entity/EntityUnitTestBase.php
@@ -9,8 +9,6 @@
 
 use Drupal\simpletest\KernelTestBase;
 use Drupal\Core\Entity\EntityInterface;
-use Drupal\user\Entity\Role;
-use Drupal\user\Entity\User;
 
 /**
  * Defines an abstract test base for entity unit tests.
@@ -101,7 +99,7 @@ protected function setUp() {
   protected function createUser($values = array(), $permissions = array()) {
     if ($permissions) {
       // Create a new role and apply permissions to it.
-      $role = Role::create(array(
+      $role = entity_create('user_role', array(
         'id' => strtolower($this->randomMachineName(8)),
         'label' => $this->randomMachineName(8),
       ));
@@ -110,10 +108,10 @@ protected function createUser($values = array(), $permissions = array()) {
       $values['roles'][] = $role->id();
     }
 
-    $account = User::create($values + [
+    $account = entity_create('user', $values + array(
       'name' => $this->randomMachineName(),
       'status' => 1,
-    ]);
+    ));
     $account->enforceIsNew();
     $account->save();
     return $account;
diff --git a/core/modules/system/src/Tests/Entity/FieldAccessTest.php b/core/modules/system/src/Tests/Entity/FieldAccessTest.php
index 0e4fe59..70fc629 100644
--- a/core/modules/system/src/Tests/Entity/FieldAccessTest.php
+++ b/core/modules/system/src/Tests/Entity/FieldAccessTest.php
@@ -9,7 +9,6 @@
 
 use Drupal\Core\Access\AccessResult;
 use Drupal\simpletest\KernelTestBase;
-use Drupal\user\Entity\User;
 
 /**
  * Tests Field level access hooks.
@@ -65,7 +64,7 @@ function testFieldAccess() {
 
     // Create a dummy user account for testing access with.
     $values = array('name' => 'test');
-    $account = User::create($values);
+    $account = entity_create('user', $values);
 
     $this->assertFalse($entity->field_test_text->access('view', $account), 'Access to the field was denied.');
     $expected = AccessResult::forbidden()->cacheUntilEntityChanges($entity);
diff --git a/core/modules/system/src/Tests/Entity/FieldSqlStorageTest.php b/core/modules/system/src/Tests/Entity/FieldSqlStorageTest.php
index 9f5028f..67b0e94 100644
--- a/core/modules/system/src/Tests/Entity/FieldSqlStorageTest.php
+++ b/core/modules/system/src/Tests/Entity/FieldSqlStorageTest.php
@@ -10,7 +10,6 @@
 use Drupal\Component\Utility\Unicode;
 use Drupal\Core\Database\Database;
 use Drupal\Core\Entity\Exception\FieldStorageDefinitionUpdateForbiddenException;
-use Drupal\field\Entity\FieldConfig;
 use Drupal\field\Entity\FieldStorageConfig;
 
 /**
@@ -85,17 +84,17 @@ protected function setUp() {
 
     $this->fieldName = strtolower($this->randomMachineName());
     $this->fieldCardinality = 4;
-    $this->fieldStorage = FieldStorageConfig::create(array(
+    $this->fieldStorage = entity_create('field_storage_config', array(
       'field_name' => $this->fieldName,
       'entity_type' => $entity_type,
       'type' => 'test_field',
       'cardinality' => $this->fieldCardinality,
     ));
     $this->fieldStorage->save();
-    $this->field = FieldConfig::create([
+    $this->field = entity_create('field_config', array(
       'field_storage' => $this->fieldStorage,
       'bundle' => $entity_type
-    ]);
+    ));
     $this->field->save();
 
     /** @var \Drupal\Core\Entity\Sql\DefaultTableMapping $table_mapping */
@@ -283,16 +282,16 @@ function testLongNames() {
     $values = array();
     for ($i = 0; $i < 2; $i++) {
       $field_names[$i] = $name_base . $i;
-      FieldStorageConfig::create(array(
+      entity_create('field_storage_config', array(
         'field_name' => $field_names[$i],
         'entity_type' => $entity_type,
         'type' => 'test_field',
       ))->save();
-      FieldConfig::create([
+      entity_create('field_config', array(
         'field_name' => $field_names[$i],
         'entity_type' => $entity_type,
         'bundle' => $bundle,
-      ])->save();
+      ))->save();
       $values[$field_names[$i]] = mt_rand(1, 127);
     }
 
@@ -313,17 +312,17 @@ function testLongNames() {
   function testUpdateFieldSchemaWithData() {
     $entity_type = 'entity_test_rev';
     // Create a decimal 5.2 field and add some data.
-    $field_storage = FieldStorageConfig::create(array(
+    $field_storage = entity_create('field_storage_config', array(
       'field_name' => 'decimal52',
       'entity_type' => $entity_type,
       'type' => 'decimal',
       'settings' => array('precision' => 5, 'scale' => 2),
     ));
     $field_storage->save();
-    $field = FieldConfig::create([
+    $field = entity_create('field_config', array(
       'field_storage' => $field_storage,
       'bundle' => $entity_type,
-    ]);
+    ));
     $field->save();
     $entity = entity_create($entity_type, array(
       'id' => 0,
@@ -348,7 +347,7 @@ function testUpdateFieldSchemaWithData() {
    */
   function testFieldUpdateFailure() {
     // Create a text field.
-    $field_storage = FieldStorageConfig::create(array(
+    $field_storage = entity_create('field_storage_config', array(
       'field_name' => 'test_text',
       'entity_type' => 'entity_test_rev',
       'type' => 'text',
@@ -388,16 +387,16 @@ function testFieldUpdateIndexesWithData() {
     // Create a decimal field.
     $field_name = 'testfield';
     $entity_type = 'entity_test_rev';
-    $field_storage = FieldStorageConfig::create(array(
+    $field_storage = entity_create('field_storage_config', array(
       'field_name' => $field_name,
       'entity_type' => $entity_type,
       'type' => 'text',
     ));
     $field_storage->save();
-    $field = FieldConfig::create([
+    $field = entity_create('field_config', array(
       'field_storage' => $field_storage,
       'bundle' => $entity_type,
-    ]);
+    ));
     $field->save();
     $tables = array($this->tableMapping->getDedicatedDataTableName($field_storage), $this->tableMapping->getDedicatedRevisionTableName($field_storage));
 
@@ -444,7 +443,7 @@ function testFieldSqlStorageForeignKeys() {
     // field_test_field_schema()).
     $field_name = 'testfield';
     $foreign_key_name = 'shape';
-    $field_storage = FieldStorageConfig::create(array(
+    $field_storage = entity_create('field_storage_config', array(
       'field_name' => $field_name,
       'entity_type' => 'entity_test',
       'type' => 'shape',
@@ -481,7 +480,7 @@ public function testTableNames() {
     // Short entity type and field name.
     $entity_type = 'short_entity_type';
     $field_name = 'short_field_name';
-    $field_storage = FieldStorageConfig::create(array(
+    $field_storage = entity_create('field_storage_config', array(
       'entity_type' => $entity_type,
       'field_name' => $field_name,
       'type' => 'test_field',
@@ -494,7 +493,7 @@ public function testTableNames() {
     // Short entity type, long field name
     $entity_type = 'short_entity_type';
     $field_name = 'long_field_name_abcdefghijklmnopqrstuvwxyz';
-    $field_storage = FieldStorageConfig::create(array(
+    $field_storage = entity_create('field_storage_config', array(
       'entity_type' => $entity_type,
       'field_name' => $field_name,
       'type' => 'test_field',
@@ -507,7 +506,7 @@ public function testTableNames() {
     // Long entity type, short field name
     $entity_type = 'long_entity_type_abcdefghijklmnopqrstuvwxyz';
     $field_name = 'short_field_name';
-    $field_storage = FieldStorageConfig::create(array(
+    $field_storage = entity_create('field_storage_config', array(
       'entity_type' => $entity_type,
       'field_name' => $field_name,
       'type' => 'test_field',
@@ -520,7 +519,7 @@ public function testTableNames() {
     // Long entity type and field name.
     $entity_type = 'long_entity_type_abcdefghijklmnopqrstuvwxyz';
     $field_name = 'long_field_name_abcdefghijklmnopqrstuvwxyz';
-    $field_storage = FieldStorageConfig::create(array(
+    $field_storage = entity_create('field_storage_config', array(
       'entity_type' => $entity_type,
       'field_name' => $field_name,
       'type' => 'test_field',
@@ -530,7 +529,7 @@ public function testTableNames() {
     $expected = 'long_entity_type_abcdefghijklmnopq_r__' . substr(hash('sha256', $field_storage->uuid()), 0, 10);
     $this->assertEqual($this->tableMapping->getDedicatedRevisionTableName($field_storage), $expected);
     // Try creating a second field and check there are no clashes.
-    $field_storage2 = FieldStorageConfig::create(array(
+    $field_storage2 = entity_create('field_storage_config', array(
       'entity_type' => $entity_type,
       'field_name' => $field_name . '2',
       'type' => 'test_field',
@@ -539,7 +538,7 @@ public function testTableNames() {
     $this->assertNotEqual($this->tableMapping->getDedicatedRevisionTableName($field_storage), $this->tableMapping->getDedicatedRevisionTableName($field_storage2));
 
     // Deleted field.
-    $field_storage = FieldStorageConfig::create(array(
+    $field_storage = entity_create('field_storage_config', array(
       'entity_type' => 'some_entity_type',
       'field_name' => 'some_field_name',
       'type' => 'test_field',
diff --git a/core/modules/system/src/Tests/Form/ArbitraryRebuildTest.php b/core/modules/system/src/Tests/Form/ArbitraryRebuildTest.php
index 7cee618..09eba7b 100644
--- a/core/modules/system/src/Tests/Form/ArbitraryRebuildTest.php
+++ b/core/modules/system/src/Tests/Form/ArbitraryRebuildTest.php
@@ -7,9 +7,7 @@
 
 namespace Drupal\system\Tests\Form;
 
-use Drupal\field\Entity\FieldConfig;
 use Drupal\simpletest\WebTestBase;
-use Drupal\field\Entity\FieldStorageConfig;
 
 /**
  * Tests altering forms to be rebuilt so there are multiple steps.
@@ -29,19 +27,19 @@ protected function setUp() {
     parent::setUp();
 
     // Auto-create a field for testing.
-    FieldStorageConfig::create(array(
+    entity_create('field_storage_config', array(
       'entity_type' => 'user',
       'field_name' => 'test_multiple',
       'type' => 'text',
       'cardinality' => -1,
       'translatable' => FALSE,
     ))->save();
-    FieldConfig::create([
+    entity_create('field_config', array(
       'entity_type' => 'user',
       'field_name' => 'test_multiple',
       'bundle' => 'user',
       'label' => 'Test a multiple valued field',
-    ])->save();
+    ))->save();
     entity_get_form_display('user', 'user', 'register')
       ->setComponent('test_multiple', array(
         'type' => 'text_textfield',
diff --git a/core/modules/system/src/Tests/Form/FormTest.php b/core/modules/system/src/Tests/Form/FormTest.php
index 3e6821f..f0e5af0 100644
--- a/core/modules/system/src/Tests/Form/FormTest.php
+++ b/core/modules/system/src/Tests/Form/FormTest.php
@@ -16,7 +16,6 @@
 use Drupal\form_test\Form\FormTestDisabledElementsForm;
 use Drupal\simpletest\WebTestBase;
 use Drupal\user\RoleInterface;
-use Drupal\filter\Entity\FilterFormat;
 
 /**
  * Tests various form element validation mechanisms.
@@ -35,7 +34,7 @@ class FormTest extends WebTestBase {
   protected function setUp() {
     parent::setUp();
 
-    $filtered_html_format = FilterFormat::create(array(
+    $filtered_html_format = entity_create('filter_format', array(
       'format' => 'filtered_html',
       'name' => 'Filtered HTML',
     ));
diff --git a/core/modules/system/src/Tests/Form/RebuildTest.php b/core/modules/system/src/Tests/Form/RebuildTest.php
index 277b477..7674241 100644
--- a/core/modules/system/src/Tests/Form/RebuildTest.php
+++ b/core/modules/system/src/Tests/Form/RebuildTest.php
@@ -9,9 +9,7 @@
 
 use Drupal\Core\Field\FieldStorageDefinitionInterface;
 use Drupal\Core\Url;
-use Drupal\field\Entity\FieldConfig;
 use Drupal\simpletest\WebTestBase;
-use Drupal\field\Entity\FieldStorageConfig;
 
 /**
  * Tests functionality of \Drupal\Core\Form\FormBuilderInterface::rebuildForm().
@@ -75,17 +73,17 @@ function testRebuildPreservesValues() {
   function testPreserveFormActionAfterAJAX() {
     // Create a multi-valued field for 'page' nodes to use for Ajax testing.
     $field_name = 'field_ajax_test';
-    FieldStorageConfig::create(array(
+    entity_create('field_storage_config', array(
       'field_name' => $field_name,
       'entity_type' => 'node',
       'type' => 'text',
       'cardinality' => FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED,
     ))->save();
-    FieldConfig::create([
+    entity_create('field_config', array(
       'field_name' => $field_name,
       'entity_type' => 'node',
       'bundle' => 'page',
-    ])->save();
+    ))->save();
     entity_get_form_display('node', 'page', 'default')
       ->setComponent($field_name, array('type' => 'text_textfield'))
       ->save();
diff --git a/core/modules/system/src/Tests/Image/ToolkitGdTest.php b/core/modules/system/src/Tests/Image/ToolkitGdTest.php
index 1c61235..a731f5b 100644
--- a/core/modules/system/src/Tests/Image/ToolkitGdTest.php
+++ b/core/modules/system/src/Tests/Image/ToolkitGdTest.php
@@ -203,8 +203,8 @@ function testManipulations() {
         'rotate_5' => array(
           'function' => 'rotate',
           'arguments' => array('degrees' => 5, 'background' => '#FF00FF'), // Fuchsia background.
-          'width' => 41,
-          'height' => 23,
+          'width' => 42,
+          'height' => 24,
           'corners' => array_fill(0, 4, $this->fuchsia),
         ),
         'rotate_90' => array(
@@ -217,8 +217,8 @@ function testManipulations() {
         'rotate_transparent_5' => array(
           'function' => 'rotate',
           'arguments' => array('degrees' => 5),
-          'width' => 41,
-          'height' => 23,
+          'width' => 42,
+          'height' => 24,
           'corners' => array_fill(0, 4, $this->rotateTransparent),
         ),
         'rotate_transparent_90' => array(
@@ -289,6 +289,20 @@ function testManipulations() {
         $correct_dimensions_real = TRUE;
         $correct_dimensions_object = TRUE;
 
+        // PHP 5.5 GD bug: https://bugs.php.net/bug.php?id=65148. PHP 5.5 GD
+        // rotates differently then it did in PHP 5.4 resulting in different
+        // dimensions then what math teaches us. For the test images, the
+        // dimensions will be 1 pixel smaller in both dimensions (though other
+        // tests have shown a difference of 0 to 3 pixels in both dimensions.
+        // @todo: if and when the PHP bug gets solved, add an upper limit
+        //   version check.
+        // @todo: in [#1551686] the dimension calculations for rotation are
+        //   reworked. That issue should also check if these tests can be made
+        //   more robust.
+        if (version_compare(PHP_VERSION, '5.5', '>=') && $values['function'] === 'rotate' && $values['arguments']['degrees'] % 90 != 0) {
+          $values['height']--;
+          $values['width']--;
+        }
         if (imagesy($toolkit->getResource()) != $values['height'] || imagesx($toolkit->getResource()) != $values['width']) {
           $correct_dimensions_real = FALSE;
         }
diff --git a/core/modules/system/src/Tests/Image/ToolkitTest.php b/core/modules/system/src/Tests/Image/ToolkitTest.php
index 363fe08..ea5bd5f 100644
--- a/core/modules/system/src/Tests/Image/ToolkitTest.php
+++ b/core/modules/system/src/Tests/Image/ToolkitTest.php
@@ -21,7 +21,6 @@ function testGetAvailableToolkits() {
     $manager = $this->container->get('image.toolkit.manager');
     $toolkits = $manager->getAvailableToolkits();
     $this->assertTrue(isset($toolkits['test']), 'The working toolkit was returned.');
-    $this->assertTrue(isset($toolkits['test:derived_toolkit']), 'The derived toolkit was returned.');
     $this->assertFalse(isset($toolkits['broken']), 'The toolkit marked unavailable was not returned');
     $this->assertToolkitOperationsCalled(array());
   }
@@ -72,22 +71,4 @@ function testApplyNoParameters() {
     $this->assertEqual($calls['apply'][0][0], 'my_operation', "'my_operation' was passed correctly as operation");
     $this->assertEqual($calls['apply'][0][1], array(), 'passing no parameters was handled correctly');
   }
-
-  /**
-   * Tests image toolkit operations inheritance by derivative toolkits.
-   */
-  public function testDerivative() {
-    $toolkit_manager = $this->container->get('image.toolkit.manager');
-    $operation_manager = $this->container->get('image.toolkit.operation.manager');
-
-    $toolkit = $toolkit_manager->createInstance('test:derived_toolkit');
-
-    // Load an overwritten and an inherited operation.
-    $blur = $operation_manager->getToolkitOperation($toolkit, 'blur');
-    $invert = $operation_manager->getToolkitOperation($toolkit, 'invert');
-
-    $this->assertIdentical('foo_derived', $blur->getPluginId(), "'Blur' operation overwritten by derivative.");
-    $this->assertIdentical('bar', $invert->getPluginId(), '"Invert" operation inherited from base plugin.');
-  }
-
 }
diff --git a/core/modules/system/src/Tests/Installer/DistributionProfileTranslationQueryTest.php b/core/modules/system/src/Tests/Installer/DistributionProfileTranslationQueryTest.php
deleted file mode 100644
index 9f68995..0000000
--- a/core/modules/system/src/Tests/Installer/DistributionProfileTranslationQueryTest.php
+++ /dev/null
@@ -1,139 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\system\Tests\Installer\DistributionProfileTranslationQueryTest.
- */
-
-namespace Drupal\system\Tests\Installer;
-
-use Drupal\Component\Serialization\Yaml;
-use Drupal\simpletest\InstallerTestBase;
-
-/**
- * Tests distribution profile support with a 'langcode' query string.
- *
- * @group Installer
- *
- * @see \Drupal\system\Tests\Installer\DistributionProfileTranslationTest
- */
-class DistributionProfileTranslationQueryTest extends InstallerTestBase {
-
-  /**
-   * {@inheritdoc}
-   */
-  protected $langcode = 'de';
-
-  /**
-   * The distribution profile info.
-   *
-   * @var array
-   */
-  protected $info;
-
-  /**
-   * {@inheritdoc}
-   */
-  protected function setUp() {
-    $this->info = array(
-      'type' => 'profile',
-      'core' => \Drupal::CORE_COMPATIBILITY,
-      'name' => 'Distribution profile',
-      'distribution' => array(
-        'name' => 'My Distribution',
-        'langcode' => $this->langcode,
-        'install' => array(
-          'theme' => 'bartik',
-        ),
-      ),
-    );
-    // File API functions are not available yet.
-    $path = $this->siteDirectory . '/profiles/mydistro';
-    mkdir($path, 0777, TRUE);
-    file_put_contents("$path/mydistro.info.yml", Yaml::encode($this->info));
-
-    parent::setUp();
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  protected function visitInstaller() {
-    // Place a custom local translation in the translations directory.
-    mkdir(\Drupal::root() . '/' . $this->siteDirectory . '/files/translations', 0777, TRUE);
-    file_put_contents(\Drupal::root() . '/' . $this->siteDirectory . '/files/translations/drupal-8.0.0.de.po', $this->getPo('de'));
-    file_put_contents(\Drupal::root() . '/' . $this->siteDirectory . '/files/translations/drupal-8.0.0.fr.po', $this->getPo('fr'));
-
-    // Pass a different language code than the one set in the distribution
-    // profile. This distribution language should still be used.
-    // The unrouted URL assembler does not exist at this point, so we build the
-    // URL ourselves.
-    $this->drupalGet($GLOBALS['base_url'] . '/core/install.php' . '?langcode=fr');
-    // The language should have been automatically detected, all following
-    // screens should be translated already.
-    $elements = $this->xpath('//input[@type="submit"]/@value');
-    $this->assertEqual((string) current($elements), 'Save and continue de');
-    $this->translations['Save and continue'] = 'Save and continue de';
-
-    // Check the language direction.
-    $direction = (string) current($this->xpath('/html/@dir'));
-    $this->assertEqual($direction, 'ltr');
-
-    // Verify that the distribution name appears.
-    $this->assertRaw($this->info['distribution']['name']);
-    // Verify that the requested theme is used.
-    $this->assertRaw($this->info['distribution']['install']['theme']);
-    // Verify that the "Choose profile" step does not appear.
-    $this->assertNoText('profile');
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  protected function setUpLanguage() {
-    // This step is skipped, because the distribution profile uses a fixed
-    // language.
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  protected function setUpProfile() {
-    // This step is skipped, because there is a distribution profile.
-  }
-
-  /**
-   * Confirms that the installation succeeded.
-   */
-  public function testInstalled() {
-    $this->assertUrl('user/1');
-    $this->assertResponse(200);
-
-    // Confirm that we are logged-in after installation.
-    $this->assertText($this->rootUser->getDisplayName());
-
-    // Verify German was configured but not English.
-    $this->drupalGet('admin/config/regional/language');
-    $this->assertText('German');
-    $this->assertNoText('English');
-  }
-
-  /**
-   * Returns the string for the test .po file.
-   *
-   * @param string $langcode
-   *   The language code.
-   * @return string
-   *   Contents for the test .po file.
-   */
-  protected function getPo($langcode) {
-    return <<<ENDPO
-msgid ""
-msgstr ""
-
-msgid "Save and continue"
-msgstr "Save and continue $langcode"
-ENDPO;
-  }
-
-}
diff --git a/core/modules/system/src/Tests/Installer/DistributionProfileTranslationTest.php b/core/modules/system/src/Tests/Installer/DistributionProfileTranslationTest.php
deleted file mode 100644
index 830b1e8..0000000
--- a/core/modules/system/src/Tests/Installer/DistributionProfileTranslationTest.php
+++ /dev/null
@@ -1,135 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\system\Tests\Installer\DistributionProfileTranslationTest.
- */
-
-namespace Drupal\system\Tests\Installer;
-
-use Drupal\Component\Serialization\Yaml;
-use Drupal\simpletest\InstallerTestBase;
-
-/**
- * Tests distribution profile support.
- *
- * @group Installer
- *
- * @see \Drupal\system\Tests\Installer\DistributionProfileTest
- */
-class DistributionProfileTranslationTest extends InstallerTestBase {
-
-  /**
-   * {@inheritdoc}
-   */
-  protected $langcode = 'de';
-
-  /**
-   * The distribution profile info.
-   *
-   * @var array
-   */
-  protected $info;
-
-  /**
-   * {@inheritdoc}
-   */
-  protected function setUp() {
-    $this->info = array(
-      'type' => 'profile',
-      'core' => \Drupal::CORE_COMPATIBILITY,
-      'name' => 'Distribution profile',
-      'distribution' => array(
-        'name' => 'My Distribution',
-        'langcode' => $this->langcode,
-        'install' => array(
-          'theme' => 'bartik',
-        ),
-      ),
-    );
-    // File API functions are not available yet.
-    $path = $this->siteDirectory . '/profiles/mydistro';
-    mkdir($path, 0777, TRUE);
-    file_put_contents("$path/mydistro.info.yml", Yaml::encode($this->info));
-
-    parent::setUp();
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  protected function visitInstaller() {
-    // Place a custom local translation in the translations directory.
-    mkdir(\Drupal::root() . '/' . $this->siteDirectory . '/files/translations', 0777, TRUE);
-    file_put_contents(\Drupal::root() . '/' . $this->siteDirectory . '/files/translations/drupal-8.0.0.de.po', $this->getPo('de'));
-
-    parent::visitInstaller();
-
-    // The language should have been automatically detected, all following
-    // screens should be translated already.
-    $elements = $this->xpath('//input[@type="submit"]/@value');
-    $this->assertEqual((string) current($elements), 'Save and continue de');
-    $this->translations['Save and continue'] = 'Save and continue de';
-
-    // Check the language direction.
-    $direction = (string) current($this->xpath('/html/@dir'));
-    $this->assertEqual($direction, 'ltr');
-
-    // Verify that the distribution name appears.
-    $this->assertRaw($this->info['distribution']['name']);
-    // Verify that the requested theme is used.
-    $this->assertRaw($this->info['distribution']['install']['theme']);
-    // Verify that the "Choose profile" step does not appear.
-    $this->assertNoText('profile');
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  protected function setUpLanguage() {
-    // This step is skipped, because the distribution profile uses a fixed
-    // language.
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  protected function setUpProfile() {
-    // This step is skipped, because there is a distribution profile.
-  }
-
-  /**
-   * Confirms that the installation succeeded.
-   */
-  public function testInstalled() {
-    $this->assertUrl('user/1');
-    $this->assertResponse(200);
-
-    // Confirm that we are logged-in after installation.
-    $this->assertText($this->rootUser->getDisplayName());
-
-    // Verify German was configured but not English.
-    $this->drupalGet('admin/config/regional/language');
-    $this->assertText('German');
-    $this->assertNoText('English');
-  }
-
-  /**
-   * Returns the string for the test .po file.
-   *
-   * @param string $langcode
-   *   The language code.
-   * @return string
-   *   Contents for the test .po file.
-   */
-  protected function getPo($langcode) {
-    return <<<ENDPO
-msgid ""
-msgstr ""
-
-msgid "Save and continue"
-msgstr "Save and continue $langcode"
-ENDPO;
-  }
-
-}
diff --git a/core/modules/system/src/Tests/Installer/InstallerExistingInstallationTest.php b/core/modules/system/src/Tests/Installer/InstallerExistingInstallationTest.php
index bdae426..08198db 100644
--- a/core/modules/system/src/Tests/Installer/InstallerExistingInstallationTest.php
+++ b/core/modules/system/src/Tests/Installer/InstallerExistingInstallationTest.php
@@ -29,12 +29,12 @@ protected function setUp() {
    */
   public function testInstaller() {
     // Verify that Drupal can't be immediately reinstalled.
-    $this->visitInstaller();
+    $this->drupalGet($GLOBALS['base_url'] . '/core/install.php');
     $this->assertRaw('Drupal already installed');
 
     // Delete settings.php and attempt to reinstall again.
     unlink($this->siteDirectory . '/settings.php');
-    $this->visitInstaller();
+    $this->drupalGet($GLOBALS['base_url'] . '/core/install.php');
     $this->setUpLanguage();
     $this->setUpProfile();
     $this->setUpSettings();
diff --git a/core/modules/system/src/Tests/Installer/InstallerLanguagePageTest.php b/core/modules/system/src/Tests/Installer/InstallerLanguagePageTest.php
index 4d9383e..d469532 100644
--- a/core/modules/system/src/Tests/Installer/InstallerLanguagePageTest.php
+++ b/core/modules/system/src/Tests/Installer/InstallerLanguagePageTest.php
@@ -26,7 +26,7 @@ protected function setUpLanguage() {
     touch(\Drupal::root() . '/' . $this->siteDirectory . '/files/translations/drupal-8.0.0.xoxo.po');
 
     // Check that all predefined languages show up with their native names.
-    $this->visitInstaller();
+    $this->drupalGet($GLOBALS['base_url'] . '/core/install.php');
     foreach (LanguageManager::getStandardLanguageList() as $langcode => $names) {
       $this->assertOption('edit-langcode', $langcode);
       $this->assertRaw('>' . $names[1] . '<');
diff --git a/core/modules/system/src/Tests/Installer/InstallerTest.php b/core/modules/system/src/Tests/Installer/InstallerTest.php
index 5514f75..debb891 100644
--- a/core/modules/system/src/Tests/Installer/InstallerTest.php
+++ b/core/modules/system/src/Tests/Installer/InstallerTest.php
@@ -42,7 +42,7 @@ protected function setUpLanguage() {
     $this->assertRaw('<meta charset="utf-8" />');
 
     // Assert that the expected title is present.
-    $this->assertEqual('Choose language', $this->cssSelect('main h2')[0]);
+    $this->assertEqual('Choose language', $this->cssSelect('main h1')[0]);
 
     parent::setUpLanguage();
   }
@@ -52,7 +52,7 @@ protected function setUpLanguage() {
    */
   protected function setUpProfile() {
     // Assert that the expected title is present.
-    $this->assertEqual('Select an installation profile', $this->cssSelect('main h2')[0]);
+    $this->assertEqual('Select an installation profile', $this->cssSelect('main h1')[0]);
 
     parent::setUpProfile();
   }
@@ -62,7 +62,7 @@ protected function setUpProfile() {
    */
   protected function setUpSettings() {
     // Assert that the expected title is present.
-    $this->assertEqual('Database configuration', $this->cssSelect('main h2')[0]);
+    $this->assertEqual('Database configuration', $this->cssSelect('main h1')[0]);
 
     parent::setUpSettings();
   }
@@ -72,7 +72,7 @@ protected function setUpSettings() {
    */
   protected function setUpSite() {
     // Assert that the expected title is present.
-    $this->assertEqual('Configure site', $this->cssSelect('main h2')[0]);
+    $this->assertEqual('Configure site', $this->cssSelect('main h1')[0]);
 
     parent::setUpSite();
   }
diff --git a/core/modules/system/src/Tests/Installer/InstallerTranslationQueryTest.php b/core/modules/system/src/Tests/Installer/InstallerTranslationQueryTest.php
deleted file mode 100644
index dfa3d89..0000000
--- a/core/modules/system/src/Tests/Installer/InstallerTranslationQueryTest.php
+++ /dev/null
@@ -1,90 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\system\Tests\Installer\InstallerTranslationQueryTest.
- */
-
-namespace Drupal\system\Tests\Installer;
-
-use Drupal\simpletest\InstallerTestBase;
-
-/**
- * Installs Drupal in German and checks resulting site.
- *
- * @group Installer
- *
- * @see \Drupal\system\Tests\Installer\InstallerTranslationTest
- */
-class InstallerTranslationQueryTest extends InstallerTestBase {
-
-  /**
-   * Overrides the language code in which to install Drupal.
-   *
-   * @var string
-   */
-  protected $langcode = 'de';
-
-  /**
-   * {@inheritdoc}
-   */
-  protected function visitInstaller() {
-    // Place a custom local translation in the translations directory.
-    mkdir(\Drupal::root() . '/' . $this->siteDirectory . '/files/translations', 0777, TRUE);
-    file_put_contents(\Drupal::root() . '/' . $this->siteDirectory . '/files/translations/drupal-8.0.0.de.po', $this->getPo('de'));
-
-    // The unrouted URL assembler does not exist at this point, so we build the
-    // URL ourselves.
-    $this->drupalGet($GLOBALS['base_url'] . '/core/install.php' . '?langcode=' . $this->langcode);
-
-    // The language should have been automatically detected, all following
-    // screens should be translated already.
-    $elements = $this->xpath('//input[@type="submit"]/@value');
-    $this->assertEqual((string) current($elements), 'Save and continue de');
-    $this->translations['Save and continue'] = 'Save and continue de';
-
-    // Check the language direction.
-    $direction = (string) current($this->xpath('/html/@dir'));
-    $this->assertEqual($direction, 'ltr');
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  protected function setUpLanguage() {
-    // The language was was preset by passing a query parameter in the URL, so
-    // no explicit language selection is necessary.
-  }
-
-  /**
-   * Verifies the expected behaviors of the installation result.
-   */
-  public function testInstaller() {
-    $this->assertUrl('user/1');
-    $this->assertResponse(200);
-
-    // Verify German was configured but not English.
-    $this->drupalGet('admin/config/regional/language');
-    $this->assertText('German');
-    $this->assertNoText('English');
-  }
-
-  /**
-   * Returns the string for the test .po file.
-   *
-   * @param string $langcode
-   *   The language code.
-   * @return string
-   *   Contents for the test .po file.
-   */
-  protected function getPo($langcode) {
-    return <<<ENDPO
-msgid ""
-msgstr ""
-
-msgid "Save and continue"
-msgstr "Save and continue $langcode"
-ENDPO;
-  }
-
-}
diff --git a/core/modules/system/src/Tests/KeyValueStore/GarbageCollectionTest.php b/core/modules/system/src/Tests/KeyValueStore/GarbageCollectionTest.php
index 4a39c6f..7afcda7 100644
--- a/core/modules/system/src/Tests/KeyValueStore/GarbageCollectionTest.php
+++ b/core/modules/system/src/Tests/KeyValueStore/GarbageCollectionTest.php
@@ -30,7 +30,7 @@ protected function setUp() {
     parent::setUp();
 
     // These additional tables are necessary due to the call to system_cron().
-    $this->installSchema('system', array('key_value_expire'));
+    $this->installSchema('system', array('key_value_expire', 'flood', 'queue'));
   }
 
   /**
diff --git a/core/modules/system/src/Tests/KeyValueStore/KeyValueContentEntityStorageTest.php b/core/modules/system/src/Tests/KeyValueStore/KeyValueContentEntityStorageTest.php
index cd09af9..66fd3c2 100644
--- a/core/modules/system/src/Tests/KeyValueStore/KeyValueContentEntityStorageTest.php
+++ b/core/modules/system/src/Tests/KeyValueStore/KeyValueContentEntityStorageTest.php
@@ -10,7 +10,6 @@
 use Drupal\Core\Entity\EntityMalformedException;
 use Drupal\Core\Entity\EntityStorageException;
 use Drupal\simpletest\KernelTestBase;
-use Drupal\entity_test\Entity\EntityTestLabel;
 
 /**
  * Tests KeyValueEntityStorage for content entities.
@@ -40,7 +39,7 @@ protected function setUp() {
   function testCRUD() {
     $default_langcode = \Drupal::languageManager()->getDefaultLanguage()->getId();
     // Verify default properties on a newly created empty entity.
-    $empty = EntityTestLabel::create();
+    $empty = entity_create('entity_test_label');
     $this->assertIdentical($empty->id->value, NULL);
     $this->assertIdentical($empty->name->value, NULL);
     $this->assertTrue($empty->uuid->value);
@@ -74,7 +73,7 @@ function testCRUD() {
     }
 
     // Verify that an entity with an empty ID string is considered empty, too.
-    $empty_id = EntityTestLabel::create(array(
+    $empty_id = entity_create('entity_test_label', array(
       'id' => '',
     ));
     $this->assertIdentical($empty_id->isNew(), TRUE);
@@ -87,7 +86,7 @@ function testCRUD() {
     }
 
     // Verify properties on a newly created entity.
-    $entity_test = EntityTestLabel::create($expected = array(
+    $entity_test = entity_create('entity_test_label', $expected = array(
       'id' => $this->randomMachineName(),
       'name' => $this->randomString(),
     ));
@@ -130,7 +129,7 @@ function testCRUD() {
 
     // Ensure that creating an entity with the same id as an existing one is not
     // possible.
-    $same_id = EntityTestLabel::create(array(
+    $same_id = entity_create('entity_test_label', array(
       'id' => $entity_test->id(),
     ));
     $this->assertIdentical($same_id->isNew(), TRUE);
diff --git a/core/modules/system/src/Tests/Lock/LockUnitTest.php b/core/modules/system/src/Tests/Lock/LockUnitTest.php
index b726add..ec249c5 100644
--- a/core/modules/system/src/Tests/Lock/LockUnitTest.php
+++ b/core/modules/system/src/Tests/Lock/LockUnitTest.php
@@ -24,9 +24,17 @@ class LockUnitTest extends KernelTestBase {
    */
   protected $lock;
 
+  /**
+   * Modules to enable.
+   *
+   * @var array
+   */
+  public static $modules = array('system');
+
   protected function setUp() {
     parent::setUp();
     $this->lock = new DatabaseLockBackend($this->container->get('database'));
+    $this->installSchema('system', 'semaphore');
   }
 
   /**
diff --git a/core/modules/system/src/Tests/Module/ExperimentalModuleTest.php b/core/modules/system/src/Tests/Module/ExperimentalModuleTest.php
deleted file mode 100644
index 846e54b..0000000
--- a/core/modules/system/src/Tests/Module/ExperimentalModuleTest.php
+++ /dev/null
@@ -1,130 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\system\Tests\Module\ExperimentalModuleTest.
- */
-
-namespace Drupal\system\Tests\Module;
-
-use Drupal\simpletest\WebTestBase;
-
-/**
- * Tests the installation of modules.
- *
- * @group Module
- */
-class ExperimentalModuleTest extends WebTestBase {
-
-
-  /**
-   * The admin user.
-   *
-   * @var \Drupal\user\UserInterface
-   */
-  protected $adminUser;
-
-  /**
-   * {@inheritdoc}
-   */
-  protected function setUp() {
-    parent::setUp();
-    $this->adminUser = $this->drupalCreateUser(['access administration pages', 'administer modules']);
-    $this->drupalLogin($this->adminUser);
-  }
-
-  /**
-   * Tests installing experimental modules and dependencies in the UI.
-   */
-  public function testExperimentalConfirmForm() {
-
-    // First, test installing a non-experimental module with no dependencies.
-    // There should be no confirmation form and no experimental module warning.
-    $edit = [];
-    $edit["modules[Testing][test_page_test][enable]"] = TRUE;
-    $this->drupalPostForm('admin/modules', $edit, t('Install'));
-    $this->assertText('Module Test page has been enabled.');
-    $this->assertNoText('Experimental modules are provided for testing purposes only.');
-
-    // Uninstall the module.
-    \Drupal::service('module_installer')->uninstall(['test_page_test']);
-
-    // Next, test installing an experimental module with no dependencies.
-    // There should be a confirmation form with an experimental warning, but no
-    // list of dependencies.
-    $edit = [];
-    $edit["modules[Core (Experimental)][experimental_module_test][enable]"] = TRUE;
-    $this->drupalPostForm('admin/modules', $edit, 'Install');
-
-    // The module should not be enabled and there should be a warning and a
-    // list of the experimental modules with only this one.
-    $this->assertNoText('Experimental Test has been enabled.');
-    $this->assertText('Experimental modules are provided for testing purposes only.');
-    $this->assertText('The following modules are experimental: Experimental Test');
-
-    // There should be no message about enabling dependencies.
-    $this->assertNoText('You must enable');
-
-    // Enable the module and confirm that it worked.
-    $this->drupalPostForm(NULL, [], 'Continue');
-    $this->assertText('Experimental Test has been enabled.');
-
-    // Uninstall the module.
-    \Drupal::service('module_installer')->uninstall(['experimental_module_test']);
-
-    // Test enabling a module that is not itself experimental, but that depends
-    // on an experimental module.
-    $edit = [];
-    $edit["modules[Testing][experimental_module_dependency_test][enable]"] = TRUE;
-    $this->drupalPostForm('admin/modules', $edit, 'Install');
-
-    // The module should not be enabled and there should be a warning and a
-    // list of the experimental modules with only this one.
-    $this->assertNoText('2 modules have been enabled: Experimental Dependency Test, Experimental Test');
-    $this->assertText('Experimental modules are provided for testing purposes only.');
-
-    $this->assertText('The following modules are experimental: Experimental Test');
-
-    // Ensure the non-experimental module is not listed as experimental.
-    $this->assertNoText('The following modules are experimental: Experimental Test, Experimental Dependency Test');
-    $this->assertNoText('The following modules are experimental: Experimental Dependency Test');
-
-    // There should be a message about enabling dependencies.
-    $this->assertText('You must enable the Experimental Test module to install Experimental Dependency Test');
-
-    // Enable the module and confirm that it worked.
-    $this->drupalPostForm(NULL, [], 'Continue');
-    $this->assertText('2 modules have been enabled: Experimental Dependency Test, Experimental Test');
-
-    // Uninstall the modules.
-    \Drupal::service('module_installer')->uninstall(['experimental_module_test', 'experimental_module_dependency_test']);
-
-    // Finally, check both the module and its experimental dependency. There is
-    // still a warning about experimental modules, but no message about
-    // dependencies, since the user specifically enabled the dependency.
-    $edit = [];
-    $edit["modules[Core (Experimental)][experimental_module_test][enable]"] = TRUE;
-    $edit["modules[Testing][experimental_module_dependency_test][enable]"] = TRUE;
-    $this->drupalPostForm('admin/modules', $edit, 'Install');
-
-    // The module should not be enabled and there should be a warning and a
-    // list of the experimental modules with only this one.
-    $this->assertNoText('2 modules have been enabled: Experimental Dependency Test, Experimental Test');
-    $this->assertText('Experimental modules are provided for testing purposes only.');
-
-    $this->assertText('The following modules are experimental: Experimental Test');
-
-    // Ensure the non-experimental module is not listed as experimental.
-    $this->assertNoText('The following modules are experimental: Experimental Test, Experimental Dependency Test');
-    $this->assertNoText('The following modules are experimental: Experimental Dependency Test');
-
-    // There should be no message about enabling dependencies.
-    $this->assertNoText('You must enable');
-
-    // Enable the module and confirm that it worked.
-    $this->drupalPostForm(NULL, [], 'Continue');
-    $this->assertText('2 modules have been enabled: Experimental Test, Experimental Dependency Test');
-
-  }
-
-}
diff --git a/core/modules/system/src/Tests/Module/InstallUninstallTest.php b/core/modules/system/src/Tests/Module/InstallUninstallTest.php
index cfaa7e4..f50c68a 100644
--- a/core/modules/system/src/Tests/Module/InstallUninstallTest.php
+++ b/core/modules/system/src/Tests/Module/InstallUninstallTest.php
@@ -100,24 +100,9 @@ public function testInstallUninstall() {
       $edit["modules[$package][$name][enable]"] = TRUE;
       $this->drupalPostForm('admin/modules', $edit, t('Install'));
 
-      // Handle experimental modules, which require a confirmation screen.
-      if ($package == 'Core (Experimental)') {
-        $this->assertText('Are you sure you wish to enable experimental modules?');
-        if (count($modules_to_install) > 1) {
-          // When there are experimental modules, needed dependencies do not
-          // result in the same page title, but there will be expected text
-          // indicating they need to be enabled.
-          $this->assertText('You must enable');
-        }
-        $this->drupalPostForm(NULL, array(), t('Continue'));
-      }
       // Handle the case where modules were installed along with this one and
       // where we therefore hit a confirmation screen.
-      elseif (count($modules_to_install) > 1) {
-        // Verify that we are on the correct form and that the expected text
-        // about enabling dependencies appears.
-        $this->assertText('Some required modules must be enabled');
-        $this->assertText('You must enable');
+      if (count($modules_to_install) > 1) {
         $this->drupalPostForm(NULL, array(), t('Continue'));
       }
 
@@ -193,21 +178,10 @@ public function testInstallUninstall() {
     // - That enabling more than one module at the same time does not lead to
     //   any errors.
     $edit = array();
-    $experimental = FALSE;
     foreach ($all_modules as $name => $module) {
       $edit['modules[' . $module->info['package'] . '][' . $name . '][enable]'] = TRUE;
-      // Track whether there is at least one experimental module.
-      if ($module->info['package'] == 'Core (Experimental)') {
-        $experimental = TRUE;
-      }
     }
     $this->drupalPostForm('admin/modules', $edit, t('Install'));
-
-    // If there are experimental modules, click the confirm form.
-    if ($experimental) {
-      $this->assertText('Are you sure you wish to enable experimental modules?');
-      $this->drupalPostForm(NULL, array(), t('Continue'));
-    }
     $this->assertText(t('@count modules have been enabled: ', array('@count' => count($all_modules))), 'Modules status has been updated.');
   }
 
diff --git a/core/modules/system/src/Tests/Module/UninstallTest.php b/core/modules/system/src/Tests/Module/UninstallTest.php
index 4a32b10..253ea18 100644
--- a/core/modules/system/src/Tests/Module/UninstallTest.php
+++ b/core/modules/system/src/Tests/Module/UninstallTest.php
@@ -10,7 +10,6 @@
 use Drupal\Core\Cache\Cache;
 use Drupal\Component\Utility\SafeMarkup;
 use Drupal\Core\Entity\EntityMalformedException;
-use Drupal\node\Entity\NodeType;
 use Drupal\simpletest\WebTestBase;
 
 /**
@@ -47,7 +46,7 @@ function testUninstallPage() {
     $this->drupalLogin($account);
 
     // Create a node type.
-    $node_type = NodeType::create(['type' => 'uninstall_blocker', 'name' => 'Uninstall blocker']);
+    $node_type = entity_create('node_type', array('type' => 'uninstall_blocker', 'name' => 'Uninstall blocker'));
     // Create a dependency that can be fixed.
     $node_type->setThirdPartySetting('module_test', 'key', 'value');
     $node_type->save();
diff --git a/core/modules/system/src/Tests/Path/UrlAliasFixtures.php b/core/modules/system/src/Tests/Path/UrlAliasFixtures.php
index e0545e6..92438aa 100644
--- a/core/modules/system/src/Tests/Path/UrlAliasFixtures.php
+++ b/core/modules/system/src/Tests/Path/UrlAliasFixtures.php
@@ -8,7 +8,6 @@
 namespace Drupal\system\Tests\Path;
 
 use Drupal\Core\Database\Connection;
-use Drupal\Core\Path\AliasStorage;
 
 /**
  * Utility methods to generate sample data, database configuration, etc.
@@ -93,7 +92,7 @@ public function tableDefinition() {
     module_load_install('system');
     $schema = system_schema();
 
-    $tables['url_alias'] = AliasStorage::schemaDefinition();
+    $tables['url_alias'] = $schema['url_alias'];
     $tables['key_value'] = $schema['key_value'];
 
     return $tables;
diff --git a/core/modules/system/src/Tests/Plugin/Condition/RequestPathTest.php b/core/modules/system/src/Tests/Plugin/Condition/RequestPathTest.php
index 7a53844..5d80493 100644
--- a/core/modules/system/src/Tests/Plugin/Condition/RequestPathTest.php
+++ b/core/modules/system/src/Tests/Plugin/Condition/RequestPathTest.php
@@ -62,7 +62,7 @@ class RequestPathTest extends KernelTestBase {
   protected function setUp() {
     parent::setUp();
 
-    $this->installSchema('system', array('sequences'));
+    $this->installSchema('system', array('sequences', 'url_alias'));
 
     $this->pluginManager = $this->container->get('plugin.manager.condition');
 
diff --git a/core/modules/system/src/Tests/Plugin/ContextPluginTest.php b/core/modules/system/src/Tests/Plugin/ContextPluginTest.php
index 92be3e5..05c4c7e 100644
--- a/core/modules/system/src/Tests/Plugin/ContextPluginTest.php
+++ b/core/modules/system/src/Tests/Plugin/ContextPluginTest.php
@@ -12,7 +12,6 @@
 use Drupal\node\Entity\NodeType;
 use Drupal\plugin_test\Plugin\MockBlockManager;
 use Drupal\simpletest\KernelTestBase;
-use Drupal\user\Entity\User;
 
 /**
  * Tests that contexts are properly set and working within plugins.
@@ -73,7 +72,7 @@ function testContext() {
 
     // Set an appropriate context value and check to make sure its methods work
     // as expected.
-    $user = User::create(['name' => $name]);
+    $user = entity_create('user', array('name' => $name));
     $plugin->setContextValue('user', $user);
 
     $this->assertEqual($plugin->getContextValue('user')->getUsername(), $user->getUsername());
diff --git a/core/modules/system/src/Tests/Queue/QueueSerializationTest.php b/core/modules/system/src/Tests/Queue/QueueSerializationTest.php
index 4a35cce..638b3f5 100644
--- a/core/modules/system/src/Tests/Queue/QueueSerializationTest.php
+++ b/core/modules/system/src/Tests/Queue/QueueSerializationTest.php
@@ -81,7 +81,7 @@ public function submitForm(array &$form, FormStateInterface $form_state) {
    */
   protected function setUp() {
     parent::setUp();
-    $this->installSchema('system', ['key_value_expire', 'sequences']);
+    $this->installSchema('system', ['key_value_expire', 'sequences', 'queue']);
     $this->installEntitySchema('user');
     $this->queue = \Drupal::service('queue.database')->get('aggregator_refresh');
     $test_user = User::create(array(
diff --git a/core/modules/system/src/Tests/Queue/QueueTest.php b/core/modules/system/src/Tests/Queue/QueueTest.php
index a1ab45e..ab1b083 100644
--- a/core/modules/system/src/Tests/Queue/QueueTest.php
+++ b/core/modules/system/src/Tests/Queue/QueueTest.php
@@ -20,9 +20,17 @@
 class QueueTest extends KernelTestBase {
 
   /**
+   * The modules to enable.
+   *
+   * @var array
+   */
+  public static $modules = array('system');
+
+  /**
    * Tests the System queue.
    */
   public function testSystemQueue() {
+    $this->installSchema('system', 'queue');
     // Create two queues.
     $queue1 = new DatabaseQueue($this->randomMachineName(), Database::getConnection());
     $queue1->createQueue();
diff --git a/core/modules/system/src/Tests/Render/Element/TableTest.php b/core/modules/system/src/Tests/Render/Element/TableTest.php
index 7e90979..7d94cd9 100644
--- a/core/modules/system/src/Tests/Render/Element/TableTest.php
+++ b/core/modules/system/src/Tests/Render/Element/TableTest.php
@@ -98,7 +98,7 @@ function testThemeTableWithEmptyMessage() {
 
     // Enable the Classy theme.
     \Drupal::service('theme_handler')->install(['classy']);
-    \Drupal::service('theme_handler')->setDefault('classy');
+    $this->config('system.theme')->set('default', 'classy')->save();
 
     $this->render($table);
     $this->removeWhiteSpace();
diff --git a/core/modules/system/src/Tests/Routing/ContentNegotiationRoutingTest.php b/core/modules/system/src/Tests/Routing/ContentNegotiationRoutingTest.php
index 26cd4fe..98515b8 100644
--- a/core/modules/system/src/Tests/Routing/ContentNegotiationRoutingTest.php
+++ b/core/modules/system/src/Tests/Routing/ContentNegotiationRoutingTest.php
@@ -31,7 +31,7 @@ protected function setUp() {
     \Drupal::unsetContainer();
     parent::setUp();
 
-    $this->installSchema('system', ['router']);
+    $this->installSchema('system', ['router', 'url_alias']);
     \Drupal::service('router.builder')->rebuild();
   }
 
diff --git a/core/modules/system/src/Tests/Routing/DestinationTest.php b/core/modules/system/src/Tests/Routing/DestinationTest.php
index ce72f7b..a590d62 100644
--- a/core/modules/system/src/Tests/Routing/DestinationTest.php
+++ b/core/modules/system/src/Tests/Routing/DestinationTest.php
@@ -74,7 +74,7 @@ public function testDestination() {
 
     // Make sure that 404 pages do not populate $_GET['destination'] with
     // external URLs.
-    \Drupal::configFactory()->getEditable('system.site')->set('page.404', '/system-test/get-destination')->save();
+    \Drupal::configFactory()->getEditable('system.site')->set('page.404', 'system-test/get-destination')->save();
     $this->drupalGet('http://example.com', ['external' => FALSE]);
     $this->assertResponse(404);
     $this->assertIdentical(Url::fromRoute('<front>')->toString(), $this->getRawContent(), 'External URL is not allowed on 404 pages.');
diff --git a/core/modules/system/src/Tests/Routing/ExceptionHandlingTest.php b/core/modules/system/src/Tests/Routing/ExceptionHandlingTest.php
index 2115e8f..ee3b6eb 100644
--- a/core/modules/system/src/Tests/Routing/ExceptionHandlingTest.php
+++ b/core/modules/system/src/Tests/Routing/ExceptionHandlingTest.php
@@ -31,7 +31,6 @@ protected function setUp() {
     parent::setUp();
 
     $this->installSchema('system', ['router']);
-    $this->installEntitySchema('date_format');
     \Drupal::service('router.builder')->rebuild();
   }
 
@@ -100,42 +99,6 @@ public function testHtml404() {
   }
 
   /**
-   * Tests that the exception response is executed in the original context.
-   */
-  public function testExceptionResponseGeneratedForOriginalRequest() {
-    // Test with 404 path pointing to a route that uses '_controller'.
-    $response = $this->doTest404Route('/router_test/test25');
-    $this->assertTrue(strpos($response->getContent(), '/not-found') !== FALSE);
-
-    // Test with 404 path pointing to a route that uses '_form'.
-    $response = $this->doTest404Route('/router_test/test26');
-    $this->assertTrue(strpos($response->getContent(), '<form class="system-logging-settings"') !== FALSE);
-
-    // Test with 404 path pointing to a route that uses '_entity_form'.
-    $response = $this->doTest404Route('/router_test/test27');
-    $this->assertTrue(strpos($response->getContent(), '<form class="date-format-add-form date-format-form"') !== FALSE);
-  }
-
-  /**
-   * Sets the given path to use as the 404 page and triggers a 404.
-   *
-   * @param string $path
-   * @return \Drupal\Core\Render\HtmlResponse
-   *
-   * @see \Drupal\system\Tests\Routing\ExceptionHandlingTest::testExceptionResponseGeneratedForOriginalRequest()
-   */
-  protected function doTest404Route($path) {
-    $this->config('system.site')->set('page.404', $path)->save();
-
-    $request = Request::create('/not-found');
-    $request->setFormat('html', ['text/html']);
-
-    /** @var \Symfony\Component\HttpKernel\HttpKernelInterface $kernel */
-    $kernel = \Drupal::getContainer()->get('http_kernel');
-    return $kernel->handle($request)->prepare($request);
-  }
-
-  /**
    * Tests if exception backtraces are properly escaped when output to HTML.
    */
   public function testBacktraceEscaping() {
diff --git a/core/modules/system/src/Tests/Routing/RouteProviderTest.php b/core/modules/system/src/Tests/Routing/RouteProviderTest.php
index 056a37a..81c63b1 100644
--- a/core/modules/system/src/Tests/Routing/RouteProviderTest.php
+++ b/core/modules/system/src/Tests/Routing/RouteProviderTest.php
@@ -86,6 +86,8 @@ protected function setUp() {
     $this->cache = new MemoryBackend('data');
     $this->pathProcessor = \Drupal::service('path_processor_manager');
     $this->cacheTagsInvalidator = \Drupal::service('cache_tags.invalidator');
+
+    $this->installSchema('system', 'url_alias');
   }
 
   /**
diff --git a/core/modules/system/src/Tests/System/AccessDeniedTest.php b/core/modules/system/src/Tests/System/AccessDeniedTest.php
index 43090eb..b068802 100644
--- a/core/modules/system/src/Tests/System/AccessDeniedTest.php
+++ b/core/modules/system/src/Tests/System/AccessDeniedTest.php
@@ -44,14 +44,6 @@ function testAccessDenied() {
     $this->assertText(t('Access denied'), 'Found the default 403 page');
     $this->assertResponse(403);
 
-    // Ensure that users without permission are denied access and have the
-    // correct path information in drupalSettings.
-    $this->drupalLogin($this->createUser([]));
-    $this->drupalGet('admin', ['query' => ['foo' => 'bar']]);
-    $this->assertEqual($this->drupalSettings['path']['currentPath'], 'admin');
-    $this->assertEqual($this->drupalSettings['path']['currentPathIsAdmin'], TRUE);
-    $this->assertEqual($this->drupalSettings['path']['currentQuery'], ['foo' => 'bar']);
-
     $this->drupalLogin($this->adminUser);
 
     // Set a custom 404 page without a starting slash.
diff --git a/core/modules/system/src/Tests/System/DateTimeTest.php b/core/modules/system/src/Tests/System/DateTimeTest.php
index bb69dcf..b2a5d2f 100644
--- a/core/modules/system/src/Tests/System/DateTimeTest.php
+++ b/core/modules/system/src/Tests/System/DateTimeTest.php
@@ -7,7 +7,6 @@
 
 namespace Drupal\system\Tests\System;
 
-use Drupal\Core\Datetime\Entity\DateFormat;
 use Drupal\Core\Url;
 use Drupal\simpletest\WebTestBase;
 
@@ -136,7 +135,7 @@ function testDateFormatConfiguration() {
     $this->assertText($name, 'Custom date format appears in the date format list.');
     $this->assertText(t('Delete'), 'Delete link for custom date format appears.');
 
-    $date_format = DateFormat::create(array(
+    $date_format = entity_create('date_format', array(
       'id' => 'xss_short',
       'label' => 'XSS format',
       'pattern' => '\<\s\c\r\i\p\t\>\a\l\e\r\t\(\'\X\S\S\'\)\;\<\/\s\c\r\i\p\t\>',
diff --git a/core/modules/system/src/Tests/System/SitesDirectoryHardeningTest.php b/core/modules/system/src/Tests/System/SitesDirectoryHardeningTest.php
deleted file mode 100644
index 86ba0a2..0000000
--- a/core/modules/system/src/Tests/System/SitesDirectoryHardeningTest.php
+++ /dev/null
@@ -1,115 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\system\Tests\System\SitesDirectoryHardeningTest.
- */
-
-namespace Drupal\system\Tests\System;
-
-use Drupal\Component\Render\FormattableMarkup;
-use Drupal\Core\Site\Settings;
-use Drupal\Core\StringTranslation\StringTranslationTrait;
-use Drupal\simpletest\WebTestBase;
-
-/**
- * Tests Drupal permissions hardening of /sites subdirectories.
- *
- * @group system
- */
-class SitesDirectoryHardeningTest extends WebTestBase {
-  use StringTranslationTrait;
-
-  /**
-   * Tests the default behavior to restrict directory permissions is enforced.
-   *
-   * Checks both the the current sites directory and settings.php.
-   */
-  public function testSitesDirectoryHardening() {
-    $site_path = $this->kernel->getSitePath();
-    $settings_file = $this->settingsFile($site_path);
-
-    // First, we check based on what the initial install has set.
-    $this->assertTrue(drupal_verify_install_file($site_path, FILE_NOT_WRITABLE, 'dir'), new FormattableMarkup('Verified permissions for @file.', array('@file' => $site_path)));
-
-    // We intentionally don't check for settings.local.php as that file is
-    // not created by Drupal.
-    $this->assertTrue(drupal_verify_install_file($settings_file, FILE_EXIST|FILE_READABLE|FILE_NOT_WRITABLE), new FormattableMarkup('Verified permissions for @file.', array('@file' => $settings_file)));
-
-    $this->makeWritable($site_path);
-    $this->checkSystemRequirements();
-
-    $this->assertTrue(drupal_verify_install_file($site_path, FILE_NOT_WRITABLE, 'dir'), new FormattableMarkup('Verified permissions for @file after manual permissions change.', array('@file' => $site_path)));
-    $this->assertTrue(drupal_verify_install_file($settings_file, FILE_EXIST|FILE_READABLE|FILE_NOT_WRITABLE), new FormattableMarkup('Verified permissions for @file after manual permissions change.', array('@file' => $settings_file)));
-  }
-
-  /**
-   * Tests writable files remain writable when directory hardening is disabled.
-   */
-  public function testSitesDirectoryHardeningConfig() {
-    $site_path = $this->kernel->getSitePath();
-    $settings_file = $this->settingsFile($site_path);
-
-    // Disable permissions enforcement.
-    $settings = Settings::getAll();
-    $settings['skip_permissions_hardening'] = TRUE;
-    new Settings($settings);
-    $this->assertTrue(Settings::get('skip_permissions_hardening'), 'Able to set hardening to true');
-    $this->makeWritable($site_path);
-
-    // Manually trigger the requirements check.
-    $requirements = $this->checkSystemRequirements();
-    $this->assertEqual(REQUIREMENT_WARNING, $requirements['configuration_files']['severity'], 'Warning severity is properly set.');
-    $this->assertEqual($this->t('Protection disabled'), (string) $requirements['configuration_files']['description']['#context']['configuration_error_list']['#items'][0], 'Description is properly set.');
-
-    $this->assertTrue(is_writable($site_path), 'Site directory remains writable when automatically fixing permissions is disabled.');
-    $this->assertTrue(is_writable($settings_file), 'settings.php remains writable when automatically fixing permissions is disabled.');
-
-    // Re-enable permissions enforcement.
-    $settings = Settings::getAll();
-    $settings['skip_permissions_hardening'] = FALSE;
-    new Settings($settings);
-
-    // Manually trigger the requirements check.
-    $this->checkSystemRequirements();
-
-    $this->assertFalse(is_writable($site_path), 'Site directory is protected when automatically fixing permissions is enabled.');
-    $this->assertFalse(is_writable($settings_file), 'settings.php is protected when automatically fixing permissions is enabled.');
-  }
-
-  /**
-   * Checks system runtime requirements.
-   *
-   * @return array
-   *   An array of system requirements.
-   */
-  protected function checkSystemRequirements() {
-    module_load_install('system');
-    return system_requirements('runtime');
-  }
-
-  /**
-   * Makes the given path and settings file writable.
-   *
-   * @param string $site_path
-   *   The sites directory path, such as 'sites/default'.
-   */
-  protected function makeWritable($site_path) {
-    chmod($site_path, 0755);
-    chmod($this->settingsFile($site_path), 0644);
-  }
-
-  /**
-   * Returns the path to settings.php
-   *
-   * @param string $site_path
-   *   The sites subdirectory path.
-   *
-   * @return string
-   *   The path to settings.php.
-   */
-  protected function settingsFile($site_path) {
-    $settings_file = $site_path . '/settings.php';
-    return $settings_file;
-  }
-}
diff --git a/core/modules/system/src/Tests/System/TokenReplaceUnitTest.php b/core/modules/system/src/Tests/System/TokenReplaceUnitTest.php
index 64517b7..b8ac4f3 100644
--- a/core/modules/system/src/Tests/System/TokenReplaceUnitTest.php
+++ b/core/modules/system/src/Tests/System/TokenReplaceUnitTest.php
@@ -85,6 +85,8 @@ public function testClear() {
    * Tests the generation of all system site information tokens.
    */
   public function testSystemSiteTokenReplacement() {
+    // The use of the \Drupal::url() method requires the url_alias table to exist.
+    $this->installSchema('system', 'url_alias');
     $url_options = array(
       'absolute' => TRUE,
       'language' => $this->interfaceLanguage,
diff --git a/core/modules/system/src/Tests/Theme/EntityFilteringThemeTest.php b/core/modules/system/src/Tests/Theme/EntityFilteringThemeTest.php
index 9a658c7..ba366a3 100644
--- a/core/modules/system/src/Tests/Theme/EntityFilteringThemeTest.php
+++ b/core/modules/system/src/Tests/Theme/EntityFilteringThemeTest.php
@@ -12,7 +12,6 @@
 use Drupal\comment\CommentInterface;
 use Drupal\comment\Plugin\Field\FieldType\CommentItemInterface;
 use Drupal\simpletest\WebTestBase;
-use Drupal\comment\Entity\Comment;
 
 /**
  * Tests themed output for each entity type in all available themes to ensure
@@ -111,7 +110,7 @@ protected function setUp() {
     ));
 
     // Create a test comment on the test node.
-    $this->comment = Comment::create(array(
+    $this->comment = entity_create('comment', array(
       'entity_id' => $this->node->id(),
       'entity_type' => 'node',
       'field_name' => 'comment',
diff --git a/core/modules/system/src/Tests/Theme/FunctionsTest.php b/core/modules/system/src/Tests/Theme/FunctionsTest.php
index 028eb5a..5e31422 100644
--- a/core/modules/system/src/Tests/Theme/FunctionsTest.php
+++ b/core/modules/system/src/Tests/Theme/FunctionsTest.php
@@ -290,127 +290,6 @@ function testLinks() {
   }
 
   /**
-   * Tests links.html.twig using links with indexed keys.
-   */
-  function testIndexedKeyedLinks() {
-    // Turn off the query for the
-    // \Drupal\Core\Utility\LinkGeneratorInterface::generate() method to compare
-    // the active link correctly.
-    $original_query = \Drupal::request()->query->all();
-    \Drupal::request()->query->replace([]);
-    // Verify that empty variables produce no output.
-    $variables = [];
-    $expected = '';
-    $this->assertThemeOutput('links', $variables, $expected, 'Empty %callback generates no output.');
-
-    $variables = [];
-    $variables['heading'] = 'Some title';
-    $expected = '';
-    $this->assertThemeOutput('links', $variables, $expected, 'Empty %callback with heading generates no output.');
-
-    // Verify that a list of links is properly rendered.
-    $variables = [];
-    $variables['attributes'] = ['id' => 'somelinks'];
-    $variables['links'] = array(
-      array(
-        'title' => 'A <link>',
-        'url' => Url::fromUri('base:a/link'),
-      ),
-      array(
-        'title' => 'Plain "text"',
-      ),
-      array(
-        'title' => SafeMarkup::format('<span class="unescaped">@text</span>', array('@text' => 'potentially unsafe text that <should> be escaped')),
-      ),
-      array(
-        'title' => 'Front page',
-        'url' => Url::fromRoute('<front>'),
-      ),
-      array(
-        'title' => 'Test route',
-        'url' => Url::fromRoute('router_test.1'),
-      ),
-      array(
-        'title' => 'Query test route',
-        'url' => Url::fromRoute('router_test.1'),
-        'query' => array(
-          'key' => 'value',
-        )
-      ),
-    );
-
-    $expected_links = '';
-    $expected_links .= '<ul id="somelinks">';
-    $expected_links .= '<li><a href="' . Url::fromUri('base:a/link')->toString() . '">' . Html::escape('A <link>') . '</a></li>';
-    $expected_links .= '<li>' . Html::escape('Plain "text"') . '</li>';
-    $expected_links .= '<li><span class="unescaped">' . Html::escape('potentially unsafe text that <should> be escaped') . '</span></li>';
-    $expected_links .= '<li><a href="' . Url::fromRoute('<front>')->toString() . '">' . Html::escape('Front page') . '</a></li>';
-    $expected_links .= '<li><a href="' . \Drupal::urlGenerator()->generate('router_test.1') . '">' . Html::escape('Test route') . '</a></li>';
-    $query = ['key' => 'value'];
-    $expected_links .= '<li><a href="' . \Drupal::urlGenerator()->generate('router_test.1', $query) . '">' . Html::escape('Query test route') . '</a></li>';
-    $expected_links .= '</ul>';
-
-    // Verify that passing a string as heading works.
-    $variables['heading'] = 'Links heading';
-    $expected_heading = '<h2>Links heading</h2>';
-    $expected = $expected_heading . $expected_links;
-    $this->assertThemeOutput('links', $variables, $expected);
-
-    // Restore the original request's query.
-    \Drupal::request()->query->replace($original_query);
-
-    // Verify that passing an array as heading works (core support).
-    $variables['heading'] = [
-      'text' => 'Links heading',
-      'level' => 'h3',
-      'attributes' => ['class' => ['heading']],
-    ];
-    $expected_heading = '<h3 class="heading">Links heading</h3>';
-    $expected = $expected_heading . $expected_links;
-    $this->assertThemeOutput('links', $variables, $expected);
-
-    // Verify that passing attributes for the heading works.
-    $variables['heading'] = ['text' => 'Links heading', 'level' => 'h3', 'attributes' => ['id' => 'heading']];
-    $expected_heading = '<h3 id="heading">Links heading</h3>';
-    $expected = $expected_heading . $expected_links;
-    $this->assertThemeOutput('links', $variables, $expected);
-
-    // Verify that passing attributes for the links work.
-    $variables['links'][1]['attributes'] = [
-      'class' => ['a/class'],
-    ];
-    $expected_links = '';
-    $expected_links .= '<ul id="somelinks">';
-    $expected_links .= '<li><a href="' . Url::fromUri('base:a/link')->toString() . '">' . Html::escape('A <link>') . '</a></li>';
-    $expected_links .= '<li><span class="a/class">' . Html::escape('Plain "text"') . '</span></li>';
-    $expected_links .= '<li><span class="unescaped">' . Html::escape('potentially unsafe text that <should> be escaped') . '</span></li>';
-    $expected_links .= '<li><a href="' . Url::fromRoute('<front>')->toString() . '">' . Html::escape('Front page') . '</a></li>';
-    $expected_links .= '<li><a href="' . \Drupal::urlGenerator()->generate('router_test.1') . '">' . Html::escape('Test route') . '</a></li>';
-    $query = ['key' => 'value'];
-    $expected_links .= '<li><a href="' . \Drupal::urlGenerator()->generate('router_test.1', $query) . '">' . Html::escape('Query test route') . '</a></li>';
-    $expected_links .= '</ul>';
-    $expected = $expected_heading . $expected_links;
-    $this->assertThemeOutput('links', $variables, $expected);
-
-    // Verify the data- attributes for setting the "active" class on links.
-    \Drupal::currentUser()->setAccount(new UserSession(array('uid' => 1)));
-    $variables['set_active_class'] = TRUE;
-    $expected_links = '';
-    $expected_links .= '<ul id="somelinks">';
-    $expected_links .= '<li><a href="' . Url::fromUri('base:a/link')->toString() . '">' . Html::escape('A <link>') . '</a></li>';
-    $expected_links .= '<li><span class="a/class">' . Html::escape('Plain "text"') . '</span></li>';
-    $expected_links .= '<li><span class="unescaped">' . Html::escape('potentially unsafe text that <should> be escaped') . '</span></li>';
-    $expected_links .= '<li data-drupal-link-system-path="&lt;front&gt;"><a href="' . Url::fromRoute('<front>')->toString() . '" data-drupal-link-system-path="&lt;front&gt;">' . Html::escape('Front page') . '</a></li>';
-    $expected_links .= '<li data-drupal-link-system-path="router_test/test1"><a href="' . \Drupal::urlGenerator()->generate('router_test.1') . '" data-drupal-link-system-path="router_test/test1">' . Html::escape('Test route') . '</a></li>';
-    $query = ['key' => 'value'];
-    $encoded_query = Html::escape(Json::encode($query));
-    $expected_links .= '<li data-drupal-link-query="' . $encoded_query . '" data-drupal-link-system-path="router_test/test1"><a href="' . \Drupal::urlGenerator()->generate('router_test.1', $query) . '" data-drupal-link-query="' . $encoded_query . '" data-drupal-link-system-path="router_test/test1">' . Html::escape('Query test route') . '</a></li>';
-    $expected_links .= '</ul>';
-    $expected = $expected_heading . $expected_links;
-    $this->assertThemeOutput('links', $variables, $expected);
-  }
-
-  /**
    * Test the use of drupal_pre_render_links() on a nested array of links.
    */
   function testDrupalPreRenderLinks() {
diff --git a/core/modules/system/src/Tests/Theme/MessageTest.php b/core/modules/system/src/Tests/Theme/MessageTest.php
index 878d5bc..db27d2a 100644
--- a/core/modules/system/src/Tests/Theme/MessageTest.php
+++ b/core/modules/system/src/Tests/Theme/MessageTest.php
@@ -27,7 +27,7 @@ class MessageTest extends KernelTestBase {
   function testMessages() {
     // Enable the Classy theme.
     \Drupal::service('theme_handler')->install(['classy']);
-    \Drupal::service('theme_handler')->setDefault('classy');
+    $this->config('system.theme')->set('default', 'classy')->save();
 
     drupal_set_message('An error occurred', 'error');
     drupal_set_message('But then something nice happened');
diff --git a/core/modules/system/src/Tests/Theme/StableThemeTest.php b/core/modules/system/src/Tests/Theme/StableThemeTest.php
index 0df5c71..1f898ba 100644
--- a/core/modules/system/src/Tests/Theme/StableThemeTest.php
+++ b/core/modules/system/src/Tests/Theme/StableThemeTest.php
@@ -52,7 +52,7 @@ protected function setUp() {
    */
   public function testStableIsDefault() {
     $this->themeHandler->install(['test_stable']);
-    $this->themeHandler->setDefault('test_stable');
+    $this->config('system.theme')->set('default', 'test_stable')->save();
     $theme = $this->themeManager->getActiveTheme();
     /** @var \Drupal\Core\Theme\ActiveTheme $base_theme */
     $base_themes = $theme->getBaseThemes();
@@ -65,7 +65,7 @@ public function testStableIsDefault() {
    */
   public function testWildWest() {
     $this->themeHandler->install(['test_wild_west']);
-    $this->themeHandler->setDefault('test_wild_west');
+    $this->config('system.theme')->set('default', 'test_wild_west')->save();
     $theme = $this->themeManager->getActiveTheme();
     /** @var \Drupal\Core\Theme\ActiveTheme $base_theme */
     $base_themes = $theme->getBaseThemes();
diff --git a/core/modules/system/src/Tests/Theme/ThemeTest.php b/core/modules/system/src/Tests/Theme/ThemeTest.php
index 3d8b784..a84ef8f 100644
--- a/core/modules/system/src/Tests/Theme/ThemeTest.php
+++ b/core/modules/system/src/Tests/Theme/ThemeTest.php
@@ -175,7 +175,7 @@ function testCSSOverride() {
     $config->set('css.preprocess', 0);
     $config->save();
     $this->drupalGet('theme-test/suggestion');
-    $this->assertNoText('js.module.css', 'The theme\'s .info.yml file is able to override a module CSS file from being added to the page.');
+    $this->assertNoText('system.module.css', "The theme's .info.yml file is able to remove a module CSS file from being added to the page.");
 
     // Also test with aggregation enabled, simply ensuring no PHP errors are
     // triggered during drupal_build_css_cache() when a source file doesn't
diff --git a/core/modules/system/src/Tests/Theme/TwigDebugMarkupTest.php b/core/modules/system/src/Tests/Theme/TwigDebugMarkupTest.php
index c220dde..1b330d0 100644
--- a/core/modules/system/src/Tests/Theme/TwigDebugMarkupTest.php
+++ b/core/modules/system/src/Tests/Theme/TwigDebugMarkupTest.php
@@ -31,7 +31,7 @@ function testTwigDebugMarkup() {
     $renderer = $this->container->get('renderer');
     $extension = twig_extension();
     \Drupal::service('theme_handler')->install(array('test_theme'));
-    \Drupal::service('theme_handler')->setDefault('test_theme');
+    $this->config('system.theme')->set('default', 'test_theme')->save();
     $this->drupalCreateContentType(array('type' => 'page'));
     // Enable debug, rebuild the service container, and clear all caches.
     $parameters = $this->container->getParameter('twig.config');
diff --git a/core/modules/system/src/Tests/Theme/TwigTransTest.php b/core/modules/system/src/Tests/Theme/TwigTransTest.php
index 9eec247..867c4d5 100644
--- a/core/modules/system/src/Tests/Theme/TwigTransTest.php
+++ b/core/modules/system/src/Tests/Theme/TwigTransTest.php
@@ -54,7 +54,7 @@ protected function setUp() {
 
     // Setup test_theme.
     \Drupal::service('theme_handler')->install(array('test_theme'));
-    \Drupal::service('theme_handler')->setDefault('test_theme');
+    $this->config('system.theme')->set('default', 'test_theme')->save();
 
     // Create and log in as admin.
     $this->adminUser = $this->drupalCreateUser(array(
diff --git a/core/modules/system/src/Tests/TypedData/TypedDataTest.php b/core/modules/system/src/Tests/TypedData/TypedDataTest.php
index 8c24946..c6a7f1c 100644
--- a/core/modules/system/src/Tests/TypedData/TypedDataTest.php
+++ b/core/modules/system/src/Tests/TypedData/TypedDataTest.php
@@ -12,7 +12,6 @@
 use Drupal\Core\TypedData\ListDataDefinition;
 use Drupal\Core\TypedData\MapDataDefinition;
 use Drupal\Core\TypedData\TypedDataInterface;
-use Drupal\file\Entity\File;
 use Drupal\simpletest\KernelTestBase;
 use Drupal\Core\Datetime\DrupalDateTime;
 
@@ -248,7 +247,7 @@ public function testGetAndSet() {
     for ($i = 0; $i < 3; $i++){
       $path = "public://example_$i.png";
       file_unmanaged_copy(\Drupal::root() . '/core/misc/druplicon.png', $path);
-      $image = File::create(['uri' => $path]);
+      $image = entity_create('file', array('uri' => $path));
       $image->save();
       $files[] = $image;
     }
diff --git a/core/modules/system/src/Tests/Update/DbDumpTest.php b/core/modules/system/src/Tests/Update/DbDumpTest.php
index 230743d..7cd099b 100644
--- a/core/modules/system/src/Tests/Update/DbDumpTest.php
+++ b/core/modules/system/src/Tests/Update/DbDumpTest.php
@@ -90,7 +90,9 @@ protected function setUp() {
     // Create some schemas so our export contains tables.
     $this->installSchema('system', [
       'key_value_expire',
+      'semaphore',
       'sessions',
+      'url_alias',
     ]);
     $this->installSchema('dblog', ['watchdog']);
     $this->installEntitySchema('block_content');
@@ -111,9 +113,6 @@ protected function setUp() {
     $account = User::create(['mail' => 'q\'uote$dollar@example.com', 'name' => '$dollar']);
     $account->save();
 
-    // Create url_alias (this will create 'url_alias').
-    $this->container->get('path.alias_storage')->save('/user/' . $account->id(), '/user/example');
-
     // Create a cache table (this will create 'cache_discovery').
     \Drupal::cache('discovery')->set('test', $this->data);
 
@@ -126,14 +125,13 @@ protected function setUp() {
       'cachetags',
       'config',
       'cache_bootstrap',
-      'cache_data',
-      'cache_default',
       'cache_discovery',
       'cache_entity',
       'file_managed',
       'key_value_expire',
       'menu_link_content',
       'menu_link_content_data',
+      'semaphore',
       'sequences',
       'sessions',
       'url_alias',
diff --git a/core/modules/system/system.install b/core/modules/system/system.install
index 42c991e..afa5892 100644
--- a/core/modules/system/system.install
+++ b/core/modules/system/system.install
@@ -61,7 +61,7 @@ function system_requirements($phase) {
     if (!empty($experimental)) {
       $requirements['experimental'] = array(
         'title' => t('Experimental modules enabled'),
-        'value' => t('Experimental modules found: %module_list. <a href=":url">Experimental modules</a> are provided for testing purposes only. Use at your own risk.', array('%module_list' => implode(', ', $experimental), ':url' => 'https://www.drupal.org/core/experimental')),
+        'value' => t('Experimental modules found: %module_list. Experimental modules are provided for testing purposes only. Use at your own risk.', array('%module_list' => implode(', ', $experimental))),
         'severity' => REQUIREMENT_WARNING,
       );
     }
@@ -246,7 +246,7 @@ function system_requirements($phase) {
       $requirements['php_opcache'] = array(
         'value' => t('Not enabled'),
         'severity' => REQUIREMENT_WARNING,
-        'description' => t('PHP OPcode caching can improve your site\'s performance considerably. It is <strong>highly recommended</strong> to have <a href="http://php.net/manual/opcache.installation.php" target="_blank">OPcache</a> installed on your server.'),
+        'description' => t('PHP OPcode caching can improve your site\'s performance considerably. It is <strong>highly recommended</strong> to have <a href=":opcache_link" target="_blank">OPcache</a> installed on your server.', array(':opcache_link' => 'http://php.net/manual/en/opcache.installation.php')),
       );
     }
     else {
@@ -365,25 +365,12 @@ function system_requirements($phase) {
     else {
       $site_path = DrupalKernel::findSitePath(Request::createFromGlobals());
     }
-    // Allow system administrators to disable permissions hardening for the site
-    // directory. This allows additional files in the site directory to be
-    // updated when they are managed in a version control system.
-    if (Settings::get('skip_permissions_hardening')) {
-      $conf_errors[] = t('Protection disabled');
-      // If permissions hardening is disabled, then only show a warning for a
-      // writable file, as a reminder, rather than an error.
-      $file_protection_severity = REQUIREMENT_WARNING;
-    }
-    else {
-      // In normal operation, writable files or directories are an error.
-      $file_protection_severity = REQUIREMENT_ERROR;
-      if (!drupal_verify_install_file($site_path, FILE_NOT_WRITABLE, 'dir')) {
-        $conf_errors[] = t("The directory %file is not protected from modifications and poses a security risk. You must change the directory's permissions to be non-writable.", array('%file' => $site_path));
-      }
+    if (!drupal_verify_install_file($site_path, FILE_NOT_WRITABLE, 'dir')) {
+      $conf_errors[] = t("The directory %file is not protected from modifications and poses a security risk. You must change the directory's permissions to be non-writable.", array('%file' => $site_path));
     }
     foreach (array('settings.php', 'settings.local.php', 'services.yml') as $conf_file) {
       $full_path = $site_path . '/' . $conf_file;
-      if (file_exists($full_path) && (Settings::get('skip_permissions_hardening') || !drupal_verify_install_file($full_path, FILE_EXIST|FILE_READABLE|FILE_NOT_WRITABLE))) {
+      if (file_exists($full_path) && !drupal_verify_install_file($full_path, FILE_EXIST|FILE_READABLE|FILE_NOT_WRITABLE)) {
         $conf_errors[] = t("The file %file is not protected from modifications and poses a security risk. You must change the file's permissions to be non-writable.", array('%file' => $full_path));
       }
     }
@@ -406,7 +393,7 @@ function system_requirements($phase) {
       }
       $requirements['configuration_files'] = array(
         'value' => t('Not protected'),
-        'severity' => $file_protection_severity,
+        'severity' => REQUIREMENT_ERROR,
         'description' => $description,
       );
     }
@@ -854,6 +841,83 @@ function system_install() {
  * Implements hook_schema().
  */
 function system_schema() {
+  $schema['batch'] = array(
+    'description' => 'Stores details about batches (processes that run in multiple HTTP requests).',
+    'fields' => array(
+      'bid' => array(
+        'description' => 'Primary Key: Unique batch ID.',
+        // This is not a serial column, to allow both progressive and
+        // non-progressive batches. See batch_process().
+        'type' => 'int',
+        'unsigned' => TRUE,
+        'not null' => TRUE,
+      ),
+      'token' => array(
+        'description' => "A string token generated against the current user's session id and the batch id, used to ensure that only the user who submitted the batch can effectively access it.",
+        'type' => 'varchar_ascii',
+        'length' => 64,
+        'not null' => TRUE,
+      ),
+      'timestamp' => array(
+        'description' => 'A Unix timestamp indicating when this batch was submitted for processing. Stale batches are purged at cron time.',
+        'type' => 'int',
+        'not null' => TRUE,
+      ),
+      'batch' => array(
+        'description' => 'A serialized array containing the processing data for the batch.',
+        'type' => 'blob',
+        'not null' => FALSE,
+        'size' => 'big',
+      ),
+    ),
+    'primary key' => array('bid'),
+    'indexes' => array(
+      'token' => array('token'),
+    ),
+  );
+
+  $schema['flood'] = array(
+    'description' => 'Flood controls the threshold of events, such as the number of contact attempts.',
+    'fields' => array(
+      'fid' => array(
+        'description' => 'Unique flood event ID.',
+        'type' => 'serial',
+        'not null' => TRUE,
+      ),
+      'event' => array(
+        'description' => 'Name of event (e.g. contact).',
+        'type' => 'varchar_ascii',
+        'length' => 64,
+        'not null' => TRUE,
+        'default' => '',
+      ),
+      'identifier' => array(
+        'description' => 'Identifier of the visitor, such as an IP address or hostname.',
+        'type' => 'varchar_ascii',
+        'length' => 128,
+        'not null' => TRUE,
+        'default' => '',
+      ),
+      'timestamp' => array(
+        'description' => 'Timestamp of the event.',
+        'type' => 'int',
+        'not null' => TRUE,
+        'default' => 0,
+      ),
+      'expiration' => array(
+        'description' => 'Expiration timestamp. Expired events are purged on cron run.',
+        'type' => 'int',
+        'not null' => TRUE,
+        'default' => 0,
+      ),
+    ),
+    'primary key' => array('fid'),
+    'indexes' => array(
+      'allow' => array('event', 'identifier', 'timestamp'),
+      'purge' => array('expiration'),
+    ),
+  );
+
   $schema['key_value'] = array(
     'description' => 'Generic key-value storage table. See the state system for an example.',
     'fields' => array(
@@ -919,6 +983,49 @@ function system_schema() {
     ),
   );
 
+  $schema['queue'] = array(
+    'description' => 'Stores items in queues.',
+    'fields' => array(
+      'item_id' => array(
+        'type' => 'serial',
+        'unsigned' => TRUE,
+        'not null' => TRUE,
+        'description' => 'Primary Key: Unique item ID.',
+      ),
+      'name' => array(
+        'type' => 'varchar_ascii',
+        'length' => 255,
+        'not null' => TRUE,
+        'default' => '',
+        'description' => 'The queue name.',
+      ),
+      'data' => array(
+        'type' => 'blob',
+        'not null' => FALSE,
+        'size' => 'big',
+        'serialize' => TRUE,
+        'description' => 'The arbitrary data for the item.',
+      ),
+      'expire' => array(
+        'type' => 'int',
+        'not null' => TRUE,
+        'default' => 0,
+        'description' => 'Timestamp when the claim lease expires on the item.',
+      ),
+      'created' => array(
+        'type' => 'int',
+        'not null' => TRUE,
+        'default' => 0,
+        'description' => 'Timestamp when the item was created.',
+      ),
+    ),
+    'primary key' => array('item_id'),
+    'indexes' => array(
+      'name_created' => array('name', 'created'),
+      'expire' => array('expire'),
+    ),
+  );
+
   $schema['router'] = array(
     'description' => 'Maps paths to various callbacks (access, page and title)',
     'fields' => array(
@@ -968,6 +1075,37 @@ function system_schema() {
     'primary key' => array('name'),
   );
 
+  $schema['semaphore'] = array(
+    'description' => 'Table for holding semaphores, locks, flags, etc. that cannot be stored as state since they must not be cached.',
+    'fields' => array(
+      'name' => array(
+        'description' => 'Primary Key: Unique name.',
+        'type' => 'varchar_ascii',
+        'length' => 255,
+        'not null' => TRUE,
+        'default' => ''
+      ),
+      'value' => array(
+        'description' => 'A value for the semaphore.',
+        'type' => 'varchar_ascii',
+        'length' => 255,
+        'not null' => TRUE,
+        'default' => ''
+      ),
+      'expire' => array(
+        'description' => 'A Unix timestamp with microseconds indicating when the semaphore should expire.',
+        'type' => 'float',
+        'size' => 'big',
+        'not null' => TRUE
+      ),
+    ),
+    'indexes' => array(
+      'value' => array('value'),
+      'expire' => array('expire'),
+    ),
+    'primary key' => array('name'),
+  );
+
   $schema['sequences'] = array(
     'description' => 'Stores IDs.',
     'fields' => array(
@@ -1031,6 +1169,44 @@ function system_schema() {
     ),
   );
 
+  $schema['url_alias'] = array(
+    'description' => 'A list of URL aliases for Drupal paths; a user may visit either the source or destination path.',
+    'fields' => array(
+      'pid' => array(
+        'description' => 'A unique path alias identifier.',
+        'type' => 'serial',
+        'unsigned' => TRUE,
+        'not null' => TRUE,
+      ),
+      'source' => array(
+        'description' => 'The Drupal path this alias is for; e.g. node/12.',
+        'type' => 'varchar',
+        'length' => 255,
+        'not null' => TRUE,
+        'default' => '',
+      ),
+      'alias' => array(
+        'description' => 'The alias for this path; e.g. title-of-the-story.',
+        'type' => 'varchar',
+        'length' => 255,
+        'not null' => TRUE,
+        'default' => '',
+      ),
+      'langcode' => array(
+        'description' => "The language code this alias is for; if 'und', the alias will be used for unknown languages. Each Drupal path can have an alias for each supported language.",
+        'type' => 'varchar_ascii',
+        'length' => 12,
+        'not null' => TRUE,
+        'default' => '',
+      ),
+    ),
+    'primary key' => array('pid'),
+    'indexes' => array(
+      'alias_langcode_pid' => array('alias', 'langcode', 'pid'),
+      'source_langcode_pid' => array('source', 'langcode', 'pid'),
+    ),
+  );
+
   return $schema;
 }
 
diff --git a/core/modules/system/system.module b/core/modules/system/system.module
index 2572a39..b563d3c 100644
--- a/core/modules/system/system.module
+++ b/core/modules/system/system.module
@@ -9,7 +9,6 @@
 use Drupal\Component\Utility\UrlHelper;
 use Drupal\Core\Asset\AttachedAssetsInterface;
 use Drupal\Core\Cache\Cache;
-use Drupal\Core\Queue\QueueGarbageCollectionInterface;
 use Drupal\Core\Database\Query\AlterableInterface;
 use Drupal\Core\Extension\Extension;
 use Drupal\Core\Extension\ExtensionDiscovery;
@@ -18,7 +17,6 @@
 use Drupal\Core\PageCache\RequestPolicyInterface;
 use Drupal\Core\PhpStorage\PhpStorageFactory;
 use Drupal\Core\Routing\RouteMatchInterface;
-use Drupal\Core\Routing\StackedRouteMatchInterface;
 use Drupal\Core\Language\LanguageInterface;
 use Drupal\Core\Menu\MenuTreeParameters;
 use Drupal\Core\Extension\ModuleHandler;
@@ -648,9 +646,7 @@ function system_js_settings_build(&$settings, AttachedAssetsInterface $assets) {
  * as well as theme_token ajax state.
  */
 function system_js_settings_alter(&$settings, AttachedAssetsInterface $assets) {
-  // As this is being output in the final response always use the master
-  // request.
-  $request = \Drupal::requestStack()->getMasterRequest();
+  $request = \Drupal::request();
   $current_query = $request->query->all();
 
   // Let output path processors set a prefix.
@@ -660,12 +656,8 @@ function system_js_settings_alter(&$settings, AttachedAssetsInterface $assets) {
   $path_processor->processOutbound('/', $options);
   $pathPrefix = $options['prefix'];
 
-  $route_match = \Drupal::routeMatch();
-  if ($route_match instanceof StackedRouteMatchInterface) {
-    $route_match = $route_match->getMasterRouteMatch();
-  }
-  $current_path = $route_match->getRouteName() ? Url::fromRouteMatch($route_match)->getInternalPath() : '';
-  $current_path_is_admin = \Drupal::service('router.admin_context')->isAdminRoute($route_match->getRouteObject());
+  $current_path = \Drupal::routeMatch()->getRouteName() ? Url::fromRouteMatch(\Drupal::routeMatch())->getInternalPath() : '';
+  $current_path_is_admin = \Drupal::service('router.admin_context')->isAdminRoute();
   $path_settings = [
     'baseUrl' => $request->getBaseUrl() . '/',
     'pathPrefix' => $pathPrefix,
@@ -1069,6 +1061,21 @@ function system_rebuild_module_data() {
 }
 
 /**
+ * Returns an array of default theme features.
+ *
+ * @see \Drupal\Core\Extension\ThemeHandler::$defaultFeatures
+ */
+function _system_default_theme_features() {
+  return array(
+    'favicon',
+    'logo',
+    'node_user_picture',
+    'comment_user_picture',
+    'comment_user_verification',
+  );
+}
+
+/**
  * Get a list of available regions from a specified theme.
  *
  * @param \Drupal\Core\Extension\Extension|string $theme
@@ -1259,10 +1266,21 @@ function system_cron() {
     \Drupal::service('keyvalue.expirable.database')->garbageCollection();
   }
 
-  // Clean up any garbage in the queue service.
-  if (\Drupal::service('queue') instanceof QueueGarbageCollectionInterface) {
-    \Drupal::service('queue')->garbageCollection();
-  }
+  // Clean up the queue for failed batches.
+  db_delete('queue')
+    ->condition('created', REQUEST_TIME - 864000, '<')
+    ->condition('name', 'drupal_batch:%', 'LIKE')
+    ->execute();
+
+  // Reset expired items in the default queue implementation table. If that's
+  // not used, this will simply be a no-op.
+  db_update('queue')
+    ->fields(array(
+      'expire' => 0,
+    ))
+    ->condition('expire', 0, '<>')
+    ->condition('expire', REQUEST_TIME, '<')
+    ->execute();
 
   // Clean up PHP storage.
   PhpStorageFactory::get('container')->garbageCollection();
diff --git a/core/modules/system/system.routing.yml b/core/modules/system/system.routing.yml
index 38fa632..14204c8 100644
--- a/core/modules/system/system.routing.yml
+++ b/core/modules/system/system.routing.yml
@@ -273,14 +273,6 @@ system.modules_list_confirm:
   requirements:
     _permission: 'administer modules'
 
-system.modules_list_experimental_confirm:
-  path: '/admin/modules/list/confirm-experimental'
-  defaults:
-    _form: 'Drupal\system\Form\ModulesListExperimentalConfirmForm'
-    _title: 'Experimental modules'
-  requirements:
-    _permission: 'administer modules'
-
 system.theme_uninstall:
   path: '/admin/appearance/uninstall'
   defaults:
diff --git a/core/modules/system/templates/install-page.html.twig b/core/modules/system/templates/install-page.html.twig
index f6091fd..1d0e479 100644
--- a/core/modules/system/templates/install-page.html.twig
+++ b/core/modules/system/templates/install-page.html.twig
@@ -28,7 +28,7 @@
 
     <main role="main">
       {% if title %}
-        <h2>{{ title }}</h2>
+        <h1>{{ title }}</h1>
       {% endif %}
       {{ page.highlighted }}
       {{ page.content }}
diff --git a/core/modules/system/templates/links.html.twig b/core/modules/system/templates/links.html.twig
index 77e7260..86713b5 100644
--- a/core/modules/system/templates/links.html.twig
+++ b/core/modules/system/templates/links.html.twig
@@ -13,6 +13,7 @@
  *     to l() as its $options parameter.
  *   - attributes: (optional) HTML attributes for the anchor, or for the <span>
  *     tag if no 'href' is supplied.
+ *   - link_key: The link CSS class.
  * - heading: (optional) A heading to precede the links.
  *   - text: The heading text.
  *   - level: The heading level (e.g. 'h2', 'h3').
@@ -42,8 +43,8 @@
     {%- endif -%}
   {%- endif -%}
   <ul{{ attributes }}>
-    {%- for item in links -%}
-      <li{{ item.attributes }}>
+    {%- for key, item in links -%}
+      <li{{ item.attributes.addClass(key|clean_class) }}>
         {%- if item.link -%}
           {{ item.link }}
         {%- elseif item.text_attributes -%}
diff --git a/core/modules/system/tests/fixtures/update/drupal-8.broken_routing.php b/core/modules/system/tests/fixtures/update/drupal-8.broken_routing.php
index 7a83e87..3c5e9af 100644
--- a/core/modules/system/tests/fixtures/update/drupal-8.broken_routing.php
+++ b/core/modules/system/tests/fixtures/update/drupal-8.broken_routing.php
@@ -1,10 +1,5 @@
 <?php
 
-/**
- * @file
- * Test fixture.
- */
-
 use Drupal\Core\Database\Database;
 
 
diff --git a/core/modules/system/tests/fixtures/update/drupal-8.without_automated_cron.php b/core/modules/system/tests/fixtures/update/drupal-8.without_automated_cron.php
index 87b6355..81e4e72 100644
--- a/core/modules/system/tests/fixtures/update/drupal-8.without_automated_cron.php
+++ b/core/modules/system/tests/fixtures/update/drupal-8.without_automated_cron.php
@@ -1,10 +1,5 @@
 <?php
 
-/**
- * @file
- * Test fixture.
- */
-
 $connection = Drupal\Core\Database\Database::getConnection();
 $config = $connection;
 
diff --git a/core/modules/system/tests/modules/database_test/database_test.module b/core/modules/system/tests/modules/database_test/database_test.module
index 460480a..b5ee9c8 100644
--- a/core/modules/system/tests/modules/database_test/database_test.module
+++ b/core/modules/system/tests/modules/database_test/database_test.module
@@ -1,10 +1,5 @@
 <?php
 
-/**
- * @file
- * Database test module.
- */
-
 use Drupal\Core\Database\Query\AlterableInterface;
 
 /**
diff --git a/core/modules/system/tests/modules/entity_test/entity_test.install b/core/modules/system/tests/modules/entity_test/entity_test.install
index 5e3bcaa..a9ff423 100644
--- a/core/modules/system/tests/modules/entity_test/entity_test.install
+++ b/core/modules/system/tests/modules/entity_test/entity_test.install
@@ -6,8 +6,6 @@
  */
 
 use Drupal\system\Tests\Update\DbUpdatesTrait;
-use Drupal\field\Entity\FieldStorageConfig;
-use Drupal\field\Entity\FieldConfig;
 
 /**
  * Implements hook_install().
@@ -15,19 +13,19 @@
 function entity_test_install() {
   foreach (entity_test_entity_types() as $entity_type) {
     // Auto-create fields for testing.
-    FieldStorageConfig::create(array(
+    entity_create('field_storage_config', array(
       'entity_type' => $entity_type,
       'field_name' => 'field_test_text',
       'type' => 'text',
       'cardinality' => 1,
     ))->save();
-    FieldConfig::create([
+    entity_create('field_config', array(
       'entity_type' => $entity_type,
       'field_name' => 'field_test_text',
       'bundle' => $entity_type,
       'label' => 'Test text-field',
       'translatable' => FALSE,
-    ])->save();
+    ))->save();
 
     entity_get_form_display($entity_type, $entity_type, 'default')
       ->setComponent('field_test_text', array('type' => 'text_textfield'))
diff --git a/core/modules/system/tests/modules/entity_test/entity_test.module b/core/modules/system/tests/modules/entity_test/entity_test.module
index 668c81d..0eec45d 100644
--- a/core/modules/system/tests/modules/entity_test/entity_test.module
+++ b/core/modules/system/tests/modules/entity_test/entity_test.module
@@ -67,8 +67,6 @@ function entity_test_entity_types($filter = NULL) {
   }
   if ($filter === ENTITY_TEST_TYPES_ROUTING) {
     $types[] = 'entity_test_base_field_display';
-    $types[] = 'entity_test_string_id';
-    $types[] = 'entity_test_no_id';
   }
   $types[] = 'entity_test_mulrev';
   $types[] = 'entity_test_mulrev_changed';
diff --git a/core/modules/system/tests/modules/entity_test/entity_test.views.inc b/core/modules/system/tests/modules/entity_test/entity_test.views.inc
index 53d37da..d74af47 100644
--- a/core/modules/system/tests/modules/entity_test/entity_test.views.inc
+++ b/core/modules/system/tests/modules/entity_test/entity_test.views.inc
@@ -1,11 +1,6 @@
 <?php
 
 /**
- * @file
- * Include file for test module.
- */
-
-/**
  * Implements hook_views_data_alter().
  */
 function entity_test_views_data_alter(&$data) {
diff --git a/core/modules/system/tests/modules/entity_test/src/Controller/EntityTestController.php b/core/modules/system/tests/modules/entity_test/src/Controller/EntityTestController.php
index 51cc8bd..b44c7eb 100644
--- a/core/modules/system/tests/modules/entity_test/src/Controller/EntityTestController.php
+++ b/core/modules/system/tests/modules/entity_test/src/Controller/EntityTestController.php
@@ -45,6 +45,24 @@ public static function create(ContainerInterface $container) {
   }
 
   /**
+   * Displays the 'Add new entity_test' form.
+   *
+   * @param string $entity_type_id
+   *   Name of the entity type for which a create form should be displayed.
+   *
+   * @return array
+   *   The processed form for a new entity_test.
+   *
+   * @see \Drupal\entity_test\Routing\EntityTestRoutes::routes()
+   */
+  public function testAdd($entity_type_id) {
+    $entity = entity_create($entity_type_id, array());
+    $form = $this->entityFormBuilder()->getForm($entity);
+    $form['#title'] = $this->t('Create an @type', array('@type' => $entity_type_id));
+    return $form;
+  }
+
+  /**
    * Returns an empty page.
    *
    * @see \Drupal\entity_test\Routing\EntityTestRoutes::routes()
diff --git a/core/modules/system/tests/modules/entity_test/src/Entity/EntityTest.php b/core/modules/system/tests/modules/entity_test/src/Entity/EntityTest.php
index c5320e6..1197c2c 100644
--- a/core/modules/system/tests/modules/entity_test/src/Entity/EntityTest.php
+++ b/core/modules/system/tests/modules/entity_test/src/Entity/EntityTest.php
@@ -47,7 +47,6 @@
  *   },
  *   links = {
  *     "canonical" = "/entity_test/{entity_test}",
- *     "add-form" = "/entity_test/add",
  *     "edit-form" = "/entity_test/manage/{entity_test}/edit",
  *     "delete-form" = "/entity_test/delete/entity_test/{entity_test}",
  *   },
@@ -70,7 +69,21 @@ public static function preCreate(EntityStorageInterface $storage, array &$values
    * {@inheritdoc}
    */
   public static function baseFieldDefinitions(EntityTypeInterface $entity_type) {
-    $fields = parent::baseFieldDefinitions($entity_type);
+    $fields['id'] = BaseFieldDefinition::create('integer')
+      ->setLabel(t('ID'))
+      ->setDescription(t('The ID of the test entity.'))
+      ->setReadOnly(TRUE)
+      ->setSetting('unsigned', TRUE);
+
+    $fields['uuid'] = BaseFieldDefinition::create('uuid')
+      ->setLabel(t('UUID'))
+      ->setDescription(t('The UUID of the test entity.'))
+      ->setReadOnly(TRUE);
+
+    $fields['langcode'] = BaseFieldDefinition::create('language')
+      ->setLabel(t('Language code'))
+      ->setDescription(t('The language code of the test entity.'))
+      ->setTranslatable(TRUE);
 
     $fields['name'] = BaseFieldDefinition::create('string')
       ->setLabel(t('Name'))
@@ -87,6 +100,12 @@ public static function baseFieldDefinitions(EntityTypeInterface $entity_type) {
         'weight' => -5,
       ));
 
+    // @todo: Add allowed values validation.
+    $fields['type'] = BaseFieldDefinition::create('string')
+      ->setLabel(t('Type'))
+      ->setDescription(t('The bundle of the test entity.'))
+      ->setRequired(TRUE);
+
     $fields['created'] = BaseFieldDefinition::create('created')
       ->setLabel(t('Authored on'))
       ->setDescription(t('Time the entity was created'))
diff --git a/core/modules/system/tests/modules/entity_test/src/Entity/EntityTestBaseFieldDisplay.php b/core/modules/system/tests/modules/entity_test/src/Entity/EntityTestBaseFieldDisplay.php
index 4cc7cc3..d2f8378 100644
--- a/core/modules/system/tests/modules/entity_test/src/Entity/EntityTestBaseFieldDisplay.php
+++ b/core/modules/system/tests/modules/entity_test/src/Entity/EntityTestBaseFieldDisplay.php
@@ -33,12 +33,10 @@
  *     "id" = "id",
  *     "label" = "name",
  *     "uuid" = "uuid",
- *     "bundle" = "type",
- *     "langcode" = "langcode",
+ *     "bundle" = "type"
  *   },
  *   links = {
  *     "canonical" = "/entity_test_base_field_display/{entity_test_base_field_display}/edit",
- *     "add-form" = "/entity_test_base_field_display/add",
  *     "edit-form" = "/entity_test_base_field_display/manage/{entity_test_base_field_display}",
  *     "delete-form" = "/entity_test/delete/entity_test_base_field_display/{entity_test_base_field_display}/edit",
  *   },
diff --git a/core/modules/system/tests/modules/entity_test/src/Entity/EntityTestLabel.php b/core/modules/system/tests/modules/entity_test/src/Entity/EntityTestLabel.php
index 6d95066..1ff0264 100644
--- a/core/modules/system/tests/modules/entity_test/src/Entity/EntityTestLabel.php
+++ b/core/modules/system/tests/modules/entity_test/src/Entity/EntityTestLabel.php
@@ -20,11 +20,9 @@
  *   base_table = "entity_test",
  *   render_cache = FALSE,
  *   entity_keys = {
- *     "uuid" = "uuid",
  *     "id" = "id",
  *     "label" = "name",
- *     "bundle" = "type",
- *     "langcode" = "langcode",
+ *     "bundle" = "type"
  *   }
  * )
  */
diff --git a/core/modules/system/tests/modules/entity_test/src/Entity/EntityTestLabelCallback.php b/core/modules/system/tests/modules/entity_test/src/Entity/EntityTestLabelCallback.php
index 632ae0c..1088114 100644
--- a/core/modules/system/tests/modules/entity_test/src/Entity/EntityTestLabelCallback.php
+++ b/core/modules/system/tests/modules/entity_test/src/Entity/EntityTestLabelCallback.php
@@ -18,9 +18,7 @@
  *   label_callback = "entity_test_label_callback",
  *   entity_keys = {
  *     "id" = "id",
- *     "bundle" = "type",
- *     "uuid" = "uuid",
- *     "langcode" = "langcode",
+ *     "bundle" = "type"
  *   }
  * )
  */
diff --git a/core/modules/system/tests/modules/entity_test/src/Entity/EntityTestMulLangcodeKey.php b/core/modules/system/tests/modules/entity_test/src/Entity/EntityTestMulLangcodeKey.php
index b2eed9f..3f794e5 100644
--- a/core/modules/system/tests/modules/entity_test/src/Entity/EntityTestMulLangcodeKey.php
+++ b/core/modules/system/tests/modules/entity_test/src/Entity/EntityTestMulLangcodeKey.php
@@ -50,4 +50,14 @@
  */
 class EntityTestMulLangcodeKey extends EntityTest {
 
+  /**
+   * {@inheritdoc}
+   */
+  public static function baseFieldDefinitions(EntityTypeInterface $entity_type) {
+    $fields = parent::baseFieldDefinitions($entity_type);
+    $fields['custom_langcode_key'] = $fields['langcode'];
+    unset($fields['langcode']);
+    return $fields;
+  }
+
 }
diff --git a/core/modules/system/tests/modules/entity_test/src/Entity/EntityTestNoId.php b/core/modules/system/tests/modules/entity_test/src/Entity/EntityTestNoId.php
index bc0661e..a29c1e2 100644
--- a/core/modules/system/tests/modules/entity_test/src/Entity/EntityTestNoId.php
+++ b/core/modules/system/tests/modules/entity_test/src/Entity/EntityTestNoId.php
@@ -19,11 +19,7 @@
  *   entity_keys = {
  *     "bundle" = "type",
  *   },
- *   admin_permission = "administer entity_test content",
  *   field_ui_base_route = "entity.entity_test_no_id.admin_form",
- *   links = {
- *     "add-form" = "/entity_test_no_id/add",
- *   },
  * )
  */
 class EntityTestNoId extends EntityTest {
diff --git a/core/modules/system/tests/modules/entity_test/src/Entity/EntityTestStringId.php b/core/modules/system/tests/modules/entity_test/src/Entity/EntityTestStringId.php
index 41f793c..1f53e04 100644
--- a/core/modules/system/tests/modules/entity_test/src/Entity/EntityTestStringId.php
+++ b/core/modules/system/tests/modules/entity_test/src/Entity/EntityTestStringId.php
@@ -34,7 +34,6 @@
  *   },
  *   links = {
  *     "canonical" = "/entity_test_string_id/manage/{entity_test_string_id}",
- *     "add-form" = "/entity_test_string_id/add",
  *     "edit-form" = "/entity_test_string_id/manage/{entity_test_string_id}",
  *   },
  *   field_ui_base_route = "entity.entity_test_string_id.admin_form",
diff --git a/core/modules/system/tests/modules/entity_test/src/Entity/EntityTestViewBuilder.php b/core/modules/system/tests/modules/entity_test/src/Entity/EntityTestViewBuilder.php
index 7381587..bc83ceb 100644
--- a/core/modules/system/tests/modules/entity_test/src/Entity/EntityTestViewBuilder.php
+++ b/core/modules/system/tests/modules/entity_test/src/Entity/EntityTestViewBuilder.php
@@ -21,10 +21,8 @@
  *   render_cache = FALSE,
  *   entity_keys = {
  *     "id" = "id",
- *     "uuid" = "uuid",
  *     "label" = "name",
- *     "bundle" = "type",
- *     "langcode" = "langcode",
+ *     "bundle" = "type"
  *   }
  * )
  */
diff --git a/core/modules/system/tests/modules/entity_test/src/Routing/EntityTestRoutes.php b/core/modules/system/tests/modules/entity_test/src/Routing/EntityTestRoutes.php
index a8690b5..8992550 100644
--- a/core/modules/system/tests/modules/entity_test/src/Routing/EntityTestRoutes.php
+++ b/core/modules/system/tests/modules/entity_test/src/Routing/EntityTestRoutes.php
@@ -22,12 +22,14 @@ class EntityTestRoutes {
    */
   public function routes() {
     $types = entity_test_entity_types(ENTITY_TEST_TYPES_ROUTING);
+    $types[] = 'entity_test_string_id';
+    $types[] = 'entity_test_no_id';
 
     $routes = array();
     foreach ($types as $entity_type_id) {
       $routes["entity.$entity_type_id.add_form"] = new Route(
         "$entity_type_id/add",
-        array('_entity_form' => "$entity_type_id.default"),
+        array('_controller' => '\Drupal\entity_test\Controller\EntityTestController::testAdd', 'entity_type_id' => $entity_type_id),
         array('_permission' => 'administer entity_test content')
       );
 
diff --git a/core/modules/system/tests/modules/experimental_module_dependency_test/experimental_module_dependency_test.info.yml b/core/modules/system/tests/modules/experimental_module_dependency_test/experimental_module_dependency_test.info.yml
deleted file mode 100644
index 665417f..0000000
--- a/core/modules/system/tests/modules/experimental_module_dependency_test/experimental_module_dependency_test.info.yml
+++ /dev/null
@@ -1,8 +0,0 @@
-name: 'Experimental Dependency Test'
-type: module
-description: 'Module with a dependency in the experimental package.'
-package: Testing
-dependencies:
-  - experimental_module_test
-version: VERSION
-core: 8.x
diff --git a/core/modules/system/tests/modules/experimental_module_dependency_test/experimental_module_dependency_test.module b/core/modules/system/tests/modules/experimental_module_dependency_test/experimental_module_dependency_test.module
deleted file mode 100644
index 6136004..0000000
--- a/core/modules/system/tests/modules/experimental_module_dependency_test/experimental_module_dependency_test.module
+++ /dev/null
@@ -1,6 +0,0 @@
-<?php
-
-/**
- * @file
- * Tests dependencies on an experimental module.
- */
diff --git a/core/modules/system/tests/modules/experimental_module_test/experimental_module_test.info.yml b/core/modules/system/tests/modules/experimental_module_test/experimental_module_test.info.yml
deleted file mode 100644
index 6cf19cd..0000000
--- a/core/modules/system/tests/modules/experimental_module_test/experimental_module_test.info.yml
+++ /dev/null
@@ -1,6 +0,0 @@
-name: 'Experimental Test'
-type: module
-description: 'Module in the experimental package to test experimental functionality.'
-package: Core (Experimental)
-version: 8.y.x-unstable
-core: 8.x
diff --git a/core/modules/system/tests/modules/experimental_module_test/experimental_module_test.module b/core/modules/system/tests/modules/experimental_module_test/experimental_module_test.module
deleted file mode 100644
index ec3ae7f..0000000
--- a/core/modules/system/tests/modules/experimental_module_test/experimental_module_test.module
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-
-/**
- * @file
- * Experimental Test module to test the Core (Experimental) package.
- */
-
-use \Drupal\Core\Routing\RouteMatchInterface;
-
-/**
- * Implements hook_help().
- */
-function experimental_module_test_help($route_name, RouteMatchInterface $route_match) {
-
-  switch ($route_name) {
-    case 'help.page.experimental_module_test':
-      // Make the help text conform to core standards. See
-      // \Drupal\system\Tests\Module\InstallUninstallTest::assertHelp().
-      return t('The Experimental Test module is not done yet. It may eat your data, but you can read the <a href=":url">online documentation for the Experimental Test module</a>.', [':url' => 'http://www.example.com']);
-  }
-
-}
diff --git a/core/modules/system/tests/modules/image_test/src/Plugin/ImageToolkit/DerivedToolkit.php b/core/modules/system/tests/modules/image_test/src/Plugin/ImageToolkit/DerivedToolkit.php
deleted file mode 100644
index 2df5c2b..0000000
--- a/core/modules/system/tests/modules/image_test/src/Plugin/ImageToolkit/DerivedToolkit.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\image_test\Plugin\ImageToolkit\DerivedToolkit.
- */
-
-namespace Drupal\image_test\Plugin\ImageToolkit;
-
-/**
- * Provides a derivative of TestToolkit.
- *
- * @ImageToolkit(
- *   id = "test:derived_toolkit",
- *   title = @Translation("A dummy toolkit, derivative of 'test'.")
- * )
- */
-class DerivedToolkit extends TestToolkit { }
diff --git a/core/modules/system/tests/modules/image_test/src/Plugin/ImageToolkit/Operation/test/Bar.php b/core/modules/system/tests/modules/image_test/src/Plugin/ImageToolkit/Operation/test/Bar.php
deleted file mode 100644
index f3d41c9..0000000
--- a/core/modules/system/tests/modules/image_test/src/Plugin/ImageToolkit/Operation/test/Bar.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\image_test\Plugin\ImageToolkit\Operation\test\Bar
- */
-
-namespace Drupal\image_test\Plugin\ImageToolkit\Operation\test;
-
-/**
- * Builds an image toolkit operation.
- *
- * @ImageToolkitOperation(
- *   id = "bar",
- *   toolkit = "test",
- *   operation = "invert",
- *   label = @Translation("Invert"),
- *   description = @Translation("Bar.")
- * )
- */
-class Bar extends OperationBase { }
diff --git a/core/modules/system/tests/modules/image_test/src/Plugin/ImageToolkit/Operation/test/Foo.php b/core/modules/system/tests/modules/image_test/src/Plugin/ImageToolkit/Operation/test/Foo.php
deleted file mode 100644
index 1cf5e38..0000000
--- a/core/modules/system/tests/modules/image_test/src/Plugin/ImageToolkit/Operation/test/Foo.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\image_test\Plugin\ImageToolkit\Operation\test\Foo
- */
-
-namespace Drupal\image_test\Plugin\ImageToolkit\Operation\test;
-
-/**
- * Builds an image toolkit operation.
- *
- * @ImageToolkitOperation(
- *   id = "foo",
- *   toolkit = "test",
- *   operation = "blur",
- *   label = @Translation("Blur"),
- *   description = @Translation("Foo.")
- * )
- */
-class Foo extends OperationBase { }
diff --git a/core/modules/system/tests/modules/image_test/src/Plugin/ImageToolkit/Operation/test/FooDerived.php b/core/modules/system/tests/modules/image_test/src/Plugin/ImageToolkit/Operation/test/FooDerived.php
deleted file mode 100644
index 5d129a3..0000000
--- a/core/modules/system/tests/modules/image_test/src/Plugin/ImageToolkit/Operation/test/FooDerived.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\image_test\Plugin\ImageToolkit\Operation\test\FooDerived
- */
-
-namespace Drupal\image_test\Plugin\ImageToolkit\Operation\test;
-
-/**
- * Builds an image toolkit operation.
- *
- * @ImageToolkitOperation(
- *   id = "foo_derived",
- *   toolkit = "test:derived_toolkit",
- *   operation = "blur",
- *   label = @Translation("Blur Derived"),
- *   description = @Translation("Foo derived.")
- * )
- */
-class FooDerived extends OperationBase { }
diff --git a/core/modules/system/tests/modules/image_test/src/Plugin/ImageToolkit/Operation/test/OperationBase.php b/core/modules/system/tests/modules/image_test/src/Plugin/ImageToolkit/Operation/test/OperationBase.php
deleted file mode 100644
index 7dc395f..0000000
--- a/core/modules/system/tests/modules/image_test/src/Plugin/ImageToolkit/Operation/test/OperationBase.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\image_test\Plugin\ImageToolkit\Operation\test\OperationBase.
- */
-
-namespace Drupal\image_test\Plugin\ImageToolkit\Operation\test;
-
-use Drupal\Core\ImageToolkit\ImageToolkitOperationBase;
-
-/**
- * Provides a base class for test operations.
- */
-abstract class OperationBase extends ImageToolkitOperationBase {
-
-  /**
-   * {@inheritdoc}
-   */
-  public function arguments() {
-    return array();
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function execute(array $arguments) {
-    // Nothing to do.
-  }
-
-}
diff --git a/core/modules/system/tests/modules/menu_test/menu_test.links.action.yml b/core/modules/system/tests/modules/menu_test/menu_test.links.action.yml
index 3d90eb3..86768ee 100644
--- a/core/modules/system/tests/modules/menu_test/menu_test.links.action.yml
+++ b/core/modules/system/tests/modules/menu_test/menu_test.links.action.yml
@@ -14,8 +14,6 @@ menu_test.local_action5:
 menu_test.local_action.cache_check:
   route_name: menu_test.local_action5
   class: '\Drupal\menu_test\Plugin\Menu\LocalAction\TestLocalActionWithConfig'
-  cache_tags:
-    - config:menu_test.links.action
   appears_on:
     - menu_test.local_action6
 
diff --git a/core/modules/system/tests/modules/menu_test/src/Plugin/Menu/LocalAction/TestLocalActionWithConfig.php b/core/modules/system/tests/modules/menu_test/src/Plugin/Menu/LocalAction/TestLocalActionWithConfig.php
index 92632ef..1be1329 100644
--- a/core/modules/system/tests/modules/menu_test/src/Plugin/Menu/LocalAction/TestLocalActionWithConfig.php
+++ b/core/modules/system/tests/modules/menu_test/src/Plugin/Menu/LocalAction/TestLocalActionWithConfig.php
@@ -7,15 +7,38 @@
 
 namespace Drupal\menu_test\Plugin\Menu\LocalAction;
 
+use Drupal\Core\Cache\Cache;
+use Drupal\Core\Cache\CacheableDependencyInterface;
 use Drupal\Core\Config\Config;
 use Drupal\Core\Menu\LocalActionDefault;
 use Drupal\Core\Routing\RouteProviderInterface;
 use Symfony\Component\DependencyInjection\ContainerInterface;
 
 /**
- * Defines a test local action plugin class.
+ * Defines a test local action plugin class that has cache tags.
  */
-class TestLocalActionWithConfig extends LocalActionDefault {
+class TestLocalActionWithConfig extends LocalActionDefault implements CacheableDependencyInterface {
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getCacheContexts() {
+    return [];
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getCacheTags() {
+    return ['config:menu_test.links.action'];
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getCacheMaxAge() {
+    return Cache::PERMANENT;
+  }
 
   /**
    * @var \Drupal\Core\Config\Config
diff --git a/core/modules/system/tests/modules/module_required_test/module_required_test.module b/core/modules/system/tests/modules/module_required_test/module_required_test.module
index 6ca1759..fbb6f10 100644
--- a/core/modules/system/tests/modules/module_required_test/module_required_test.module
+++ b/core/modules/system/tests/modules/module_required_test/module_required_test.module
@@ -1,10 +1,5 @@
 <?php
 
-/**
- * @file
- * Test module.
- */
-
 use Drupal\Core\Extension\Extension;
 
 /**
diff --git a/core/modules/system/tests/modules/module_test/module_test.implementations.inc b/core/modules/system/tests/modules/module_test/module_test.implementations.inc
index c0f8a2a..a21f7ca 100644
--- a/core/modules/system/tests/modules/module_test/module_test.implementations.inc
+++ b/core/modules/system/tests/modules/module_test/module_test.implementations.inc
@@ -1,11 +1,6 @@
 <?php
 
 /**
- * @file
- * Include file for test module.
- */
-
-/**
  * Implements hook_altered_test_hook().
  *
  * @see module_test_module_implements_alter()
diff --git a/core/modules/system/tests/modules/module_test/module_test.module b/core/modules/system/tests/modules/module_test/module_test.module
index ab5a4fc..2d34293 100644
--- a/core/modules/system/tests/modules/module_test/module_test.module
+++ b/core/modules/system/tests/modules/module_test/module_test.module
@@ -1,10 +1,5 @@
 <?php
 
-/**
- * @file
- * Test module.
- */
-
 use Drupal\Core\Extension\Extension;
 
 /**
diff --git a/core/modules/system/tests/modules/module_test/module_test.post_update.php b/core/modules/system/tests/modules/module_test/module_test.post_update.php
index b3785fc..2226578 100644
--- a/core/modules/system/tests/modules/module_test/module_test.post_update.php
+++ b/core/modules/system/tests/modules/module_test/module_test.post_update.php
@@ -1,11 +1,6 @@
 <?php
 
 /**
- * @file
- * Post update functions for test module.
- */
-
-/**
  * Test post update function.
  */
 function module_test_post_update_test() {
diff --git a/core/modules/system/tests/modules/requirements1_test/requirements1_test.install b/core/modules/system/tests/modules/requirements1_test/requirements1_test.install
index c884893..80220b9 100644
--- a/core/modules/system/tests/modules/requirements1_test/requirements1_test.install
+++ b/core/modules/system/tests/modules/requirements1_test/requirements1_test.install
@@ -1,11 +1,6 @@
 <?php
 
 /**
- * @file
- * Install hooks for test module.
- */
-
-/**
  * Implements hook_requirements().
  */
 function requirements1_test_requirements($phase) {
diff --git a/core/modules/system/tests/modules/router_test_directory/router_test.routing.yml b/core/modules/system/tests/modules/router_test_directory/router_test.routing.yml
index ad2d418..e0c91dd 100644
--- a/core/modules/system/tests/modules/router_test_directory/router_test.routing.yml
+++ b/core/modules/system/tests/modules/router_test_directory/router_test.routing.yml
@@ -155,29 +155,6 @@ router_test.24:
   requirements:
     _access: 'TRUE'
 
-router_test.25:
-  path: '/router_test/test25'
-  defaults:
-    _controller: '\Drupal\router_test\TestControllers::test25'
-  requirements:
-    _access: 'TRUE'
-
-router_test.26:
-  path: '/router_test/test26'
-  defaults:
-    _form: 'Drupal\system\Form\LoggingForm'
-    _title: 'Cron'
-  requirements:
-    _access: 'TRUE'
-
-router_test.27:
-  path: '/router_test/test27'
-  defaults:
-    _entity_form: 'date_format.add'
-    _title: 'Add date format'
-  requirements:
-    _access: 'TRUE'
-
 router_test.hierarchy_parent:
   path: '/menu-test/parent'
   defaults:
diff --git a/core/modules/system/tests/modules/router_test_directory/src/TestControllers.php b/core/modules/system/tests/modules/router_test_directory/src/TestControllers.php
index d603de8..40fad0b 100644
--- a/core/modules/system/tests/modules/router_test_directory/src/TestControllers.php
+++ b/core/modules/system/tests/modules/router_test_directory/src/TestControllers.php
@@ -106,15 +106,6 @@ public function test24() {
     throw new \Exception('Escaped content: <p> <br> <h3>');
   }
 
-  public function test25() {
-    return [
-      '#cache' => [
-        'url',
-      ],
-      '#markup' => \Drupal::requestStack()->getCurrentRequest()->getUri(),
-    ];
-  }
-
   /**
    * Throws an exception.
    *
diff --git a/core/modules/system/tests/modules/session_test/session_test.module b/core/modules/system/tests/modules/session_test/session_test.module
index b3ceff8..6a08211 100644
--- a/core/modules/system/tests/modules/session_test/session_test.module
+++ b/core/modules/system/tests/modules/session_test/session_test.module
@@ -1,11 +1,6 @@
 <?php
 
 /**
- * @file
- * Test module.
- */
-
-/**
  * Implements hook_user_login().
  */
 function session_test_user_login($account) {
diff --git a/core/modules/system/tests/modules/system_test/src/Controller/SystemTestController.php b/core/modules/system/tests/modules/system_test/src/Controller/SystemTestController.php
index f171efd..1d8c7b6 100644
--- a/core/modules/system/tests/modules/system_test/src/Controller/SystemTestController.php
+++ b/core/modules/system/tests/modules/system_test/src/Controller/SystemTestController.php
@@ -251,7 +251,7 @@ public static function preRenderCacheTags($elements) {
    */
   public function authorizeInit($page_title) {
     $authorize_url = Url::fromUri('base:core/authorize.php', array('absolute' => TRUE))->toString();
-    system_authorized_init('system_test_authorize_run', __DIR__ . '/../../system_test.module', array(), $page_title);
+    system_authorized_init('system_test_authorize_run', drupal_get_path('module', 'system_test') . '/system_test.module', array(), $page_title);
     return new RedirectResponse($authorize_url);
   }
 
diff --git a/core/modules/system/tests/modules/system_test/system_test.module b/core/modules/system/tests/modules/system_test/system_test.module
index 04fa2da..eef3516 100644
--- a/core/modules/system/tests/modules/system_test/system_test.module
+++ b/core/modules/system/tests/modules/system_test/system_test.module
@@ -1,10 +1,5 @@
 <?php
 
-/**
- * @file
- * Test module.
- */
-
 use Drupal\Core\Extension\Extension;
 use Drupal\Core\Routing\RouteMatchInterface;
 
diff --git a/core/modules/system/tests/modules/theme_page_test/theme_page_test.module b/core/modules/system/tests/modules/theme_page_test/theme_page_test.module
index 89e2c57..7373fab 100644
--- a/core/modules/system/tests/modules/theme_page_test/theme_page_test.module
+++ b/core/modules/system/tests/modules/theme_page_test/theme_page_test.module
@@ -1,10 +1,5 @@
 <?php
 
-/**
- * @file
- * Test module.
- */
-
 use Drupal\Core\Extension\Extension;
 
 /**
diff --git a/core/modules/system/tests/modules/theme_test/theme_test.inc b/core/modules/system/tests/modules/theme_test/theme_test.inc
index 1e0a7a6..6cde683 100644
--- a/core/modules/system/tests/modules/theme_test/theme_test.inc
+++ b/core/modules/system/tests/modules/theme_test/theme_test.inc
@@ -1,11 +1,6 @@
 <?php
 
 /**
- * @file
- * Include file for test module.
- */
-
-/**
  * Returns HTML for the 'theme_test' theme hook used by tests.
  */
 function theme_theme_test($variables) {
diff --git a/core/modules/system/tests/modules/theme_test/theme_test.module b/core/modules/system/tests/modules/theme_test/theme_test.module
index 540185e..f64da1e 100644
--- a/core/modules/system/tests/modules/theme_test/theme_test.module
+++ b/core/modules/system/tests/modules/theme_test/theme_test.module
@@ -1,10 +1,5 @@
 <?php
 
-/**
- * @file
- * Test module.
- */
-
 use Drupal\Core\Extension\Extension;
 
 /**
diff --git a/core/modules/system/tests/modules/twig_theme_test/twig_theme_test.module b/core/modules/system/tests/modules/twig_theme_test/twig_theme_test.module
index 0d6bad8..cba0d5b 100644
--- a/core/modules/system/tests/modules/twig_theme_test/twig_theme_test.module
+++ b/core/modules/system/tests/modules/twig_theme_test/twig_theme_test.module
@@ -1,11 +1,6 @@
 <?php
 
 /**
- * @file
- * Test module.
- */
-
-/**
  * Implements hook_theme().
  */
 function twig_theme_test_theme($existing, $type, $theme, $path) {
diff --git a/core/modules/system/tests/modules/update_test_failing/update_test_failing.post_update.php b/core/modules/system/tests/modules/update_test_failing/update_test_failing.post_update.php
index 12b60f6..5e55ca3 100644
--- a/core/modules/system/tests/modules/update_test_failing/update_test_failing.post_update.php
+++ b/core/modules/system/tests/modules/update_test_failing/update_test_failing.post_update.php
@@ -1,11 +1,6 @@
 <?php
 
 /**
- * @file
- * Post update functions for test module.
- */
-
-/**
  * First update, should not be run since this module's update hooks fail.
  */
 function update_test_failing_post_update_first() {
diff --git a/core/modules/system/tests/modules/update_test_postupdate/update_test_postupdate.install b/core/modules/system/tests/modules/update_test_postupdate/update_test_postupdate.install
index 17158be..f754d94 100644
--- a/core/modules/system/tests/modules/update_test_postupdate/update_test_postupdate.install
+++ b/core/modules/system/tests/modules/update_test_postupdate/update_test_postupdate.install
@@ -1,11 +1,6 @@
 <?php
 
 /**
- * @file
- * Install hooks for test module.
- */
-
-/**
  * Normal update_N() function.
  */
 function update_test_postupdate_update_8001() {
diff --git a/core/modules/system/tests/modules/update_test_postupdate/update_test_postupdate.post_update.php b/core/modules/system/tests/modules/update_test_postupdate/update_test_postupdate.post_update.php
index cddad74..ece8b7e 100644
--- a/core/modules/system/tests/modules/update_test_postupdate/update_test_postupdate.post_update.php
+++ b/core/modules/system/tests/modules/update_test_postupdate/update_test_postupdate.post_update.php
@@ -1,11 +1,6 @@
 <?php
 
 /**
- * @file
- * Post update functions for test module.
- */
-
-/**
  * First update.
  */
 function update_test_postupdate_post_update_first() {
diff --git a/core/modules/system/tests/modules/url_alter_test/url_alter_test.install b/core/modules/system/tests/modules/url_alter_test/url_alter_test.install
index 0237a9e..edfa7f0 100644
--- a/core/modules/system/tests/modules/url_alter_test/url_alter_test.install
+++ b/core/modules/system/tests/modules/url_alter_test/url_alter_test.install
@@ -1,11 +1,6 @@
 <?php
 
 /**
- * @file
- * Install hooks for test module.
- */
-
-/**
  * Implements hook_install().
  */
 function url_alter_test_install() {
diff --git a/core/modules/system/tests/src/Kernel/Extension/ModuleHandlerTest.php b/core/modules/system/tests/src/Kernel/Extension/ModuleHandlerTest.php
index 3f8edd1..f0b650e 100644
--- a/core/modules/system/tests/src/Kernel/Extension/ModuleHandlerTest.php
+++ b/core/modules/system/tests/src/Kernel/Extension/ModuleHandlerTest.php
@@ -88,7 +88,7 @@ function testModuleList() {
    *   The expected values, sorted by weight and module name.
    * @param $condition
    */
-  protected function assertModuleList(array $expected_values, $condition) {
+  protected function assertModuleList(Array $expected_values, $condition) {
     $expected_values = array_values(array_unique($expected_values));
     $enabled_modules = array_keys($this->container->get('module_handler')->getModuleList());
     $this->assertEqual($expected_values, $enabled_modules, format_string('@condition: extension handler returns correct results', array('@condition' => $condition)));
diff --git a/core/modules/system/tests/src/Kernel/PathHooksTest.php b/core/modules/system/tests/src/Kernel/PathHooksTest.php
index 594a6fe..272875b 100644
--- a/core/modules/system/tests/src/Kernel/PathHooksTest.php
+++ b/core/modules/system/tests/src/Kernel/PathHooksTest.php
@@ -26,6 +26,8 @@ class PathHooksTest extends KernelTestBase {
    * Test system_path_*() correctly clears caches.
    */
   public function testPathHooks() {
+    $this->installSchema('system', ['url_alias']);
+
     $source = '/' . $this->randomMachineName();
     $alias = '/' . $this->randomMachineName();
 
diff --git a/core/modules/system/tests/src/Kernel/Scripts/DbImportCommandTest.php b/core/modules/system/tests/src/Kernel/Scripts/DbImportCommandTest.php
index 446d3d8..8cf23d5 100644
--- a/core/modules/system/tests/src/Kernel/Scripts/DbImportCommandTest.php
+++ b/core/modules/system/tests/src/Kernel/Scripts/DbImportCommandTest.php
@@ -42,6 +42,7 @@ class DbImportCommandTest extends KernelTestBase {
     'key_value_expire',
     'menu_link_content',
     'menu_link_content_data',
+    'semaphore',
     'sessions',
     'url_alias',
     'user__roles',
diff --git a/core/modules/system/tests/themes/test_basetheme/test_basetheme.theme b/core/modules/system/tests/themes/test_basetheme/test_basetheme.theme
index 42e543b..1467e49 100644
--- a/core/modules/system/tests/themes/test_basetheme/test_basetheme.theme
+++ b/core/modules/system/tests/themes/test_basetheme/test_basetheme.theme
@@ -4,7 +4,6 @@
  * @file
  * Add hooks for tests to use.
  */
-
 use Drupal\views\Plugin\views\cache\CachePluginBase;
 use Drupal\views\ViewExecutable;
 
diff --git a/core/modules/system/tests/themes/test_theme/test_theme.info.yml b/core/modules/system/tests/themes/test_theme/test_theme.info.yml
index 1c9745f..fca49c2 100644
--- a/core/modules/system/tests/themes/test_theme/test_theme.info.yml
+++ b/core/modules/system/tests/themes/test_theme/test_theme.info.yml
@@ -15,7 +15,7 @@ version: VERSION
 base theme: classy
 core: 8.x
 stylesheets-remove:
-  - '@system/css/js.module.css'
+  - '@system/css/system.module.css'
 libraries:
   - test_theme/global-styling
 libraries-override:
diff --git a/core/modules/system/tests/themes/test_theme_nyan_cat_engine/test_theme_nyan_cat_engine.theme b/core/modules/system/tests/themes/test_theme_nyan_cat_engine/test_theme_nyan_cat_engine.theme
index ee2748a..5b69a12 100644
--- a/core/modules/system/tests/themes/test_theme_nyan_cat_engine/test_theme_nyan_cat_engine.theme
+++ b/core/modules/system/tests/themes/test_theme_nyan_cat_engine/test_theme_nyan_cat_engine.theme
@@ -1,11 +1,6 @@
 <?php
 
 /**
- * @file
- * Test theme.
- */
-
-/**
  * Implements hook_preprocess_theme_test_template_test().
  */
 function test_theme_nyan_cat_engine_preprocess_theme_test_template_test(&$variables) {
diff --git a/core/modules/taxonomy/src/Entity/Vocabulary.php b/core/modules/taxonomy/src/Entity/Vocabulary.php
index b2a7dfc..5d6ae1d 100644
--- a/core/modules/taxonomy/src/Entity/Vocabulary.php
+++ b/core/modules/taxonomy/src/Entity/Vocabulary.php
@@ -20,7 +20,6 @@
  *   handlers = {
  *     "storage" = "Drupal\taxonomy\VocabularyStorage",
  *     "list_builder" = "Drupal\taxonomy\VocabularyListBuilder",
- *     "access" = "Drupal\taxonomy\VocabularyAccessControlHandler",
  *     "form" = {
  *       "default" = "Drupal\taxonomy\VocabularyForm",
  *       "reset" = "Drupal\taxonomy\Form\VocabularyResetForm",
diff --git a/core/modules/taxonomy/src/TermViewsData.php b/core/modules/taxonomy/src/TermViewsData.php
index 7108504..9a42a84 100644
--- a/core/modules/taxonomy/src/TermViewsData.php
+++ b/core/modules/taxonomy/src/TermViewsData.php
@@ -20,7 +20,7 @@ class TermViewsData extends EntityViewsData {
   public function getViewsData() {
     $data = parent::getViewsData();
 
-    $data['taxonomy_term_field_data']['table']['base']['help'] = $this->t('Taxonomy terms are attached to nodes.');
+    $data['taxonomy_term_field_data']['table']['base']['help'] = t('Taxonomy terms are attached to nodes.');
     $data['taxonomy_term_field_data']['table']['base']['access query tag'] = 'term_access';
     $data['taxonomy_term_field_data']['table']['wizard_id'] = 'taxonomy_term';
 
@@ -32,21 +32,21 @@ public function getViewsData() {
       ),
     );
 
-    $data['taxonomy_term_field_data']['tid']['help'] = $this->t('The tid of a taxonomy term.');
+    $data['taxonomy_term_field_data']['tid']['help'] = t('The tid of a taxonomy term.');
 
     $data['taxonomy_term_field_data']['tid']['argument']['id'] = 'taxonomy';
     $data['taxonomy_term_field_data']['tid']['argument']['name field'] = 'name';
     $data['taxonomy_term_field_data']['tid']['argument']['zero is null'] = TRUE;
 
     $data['taxonomy_term_field_data']['tid']['filter']['id'] = 'taxonomy_index_tid';
-    $data['taxonomy_term_field_data']['tid']['filter']['title'] = $this->t('Term');
-    $data['taxonomy_term_field_data']['tid']['filter']['help'] = $this->t('Taxonomy term chosen from autocomplete or select widget.');
+    $data['taxonomy_term_field_data']['tid']['filter']['title'] = t('Term');
+    $data['taxonomy_term_field_data']['tid']['filter']['help'] = t('Taxonomy term chosen from autocomplete or select widget.');
     $data['taxonomy_term_field_data']['tid']['filter']['hierarchy table'] = 'taxonomy_term_hierarchy';
     $data['taxonomy_term_field_data']['tid']['filter']['numeric'] = TRUE;
 
     $data['taxonomy_term_field_data']['tid_raw'] = array(
-      'title' => $this->t('Term ID'),
-      'help' => $this->t('The tid of a taxonomy term.'),
+      'title' => t('Term ID'),
+      'help' => t('The tid of a taxonomy term.'),
       'real field' => 'tid',
       'filter' => array(
         'id' => 'numeric',
@@ -56,9 +56,9 @@ public function getViewsData() {
 
     $data['taxonomy_term_field_data']['tid_representative'] = array(
       'relationship' => array(
-        'title' => $this->t('Representative node'),
-        'label'  => $this->t('Representative node'),
-        'help' => $this->t('Obtains a single representative node for each term, according to a chosen sort criterion.'),
+        'title' => t('Representative node'),
+        'label'  => t('Representative node'),
+        'help' => t('Obtains a single representative node for each term, according to a chosen sort criterion.'),
         'id' => 'groupwise_max',
         'relationship field' => 'tid',
         'outer field' => 'taxonomy_term_field_data.tid',
@@ -70,23 +70,23 @@ public function getViewsData() {
       ),
     );
 
-    $data['taxonomy_term_field_data']['vid']['help'] = $this->t('Filter the results of "Taxonomy: Term" to a particular vocabulary.');
-    $data['taxonomy_term_field_data']['vid']['field']['help'] = $this->t('The vocabulary name.');
+    $data['taxonomy_term_field_data']['vid']['help'] = t('Filter the results of "Taxonomy: Term" to a particular vocabulary.');
+    unset($data['taxonomy_term_field_data']['vid']['field']);
     unset($data['taxonomy_term_field_data']['vid']['argument']);
     unset($data['taxonomy_term_field_data']['vid']['sort']);
 
     $data['taxonomy_term_field_data']['name']['field']['id'] = 'term_name';
     $data['taxonomy_term_field_data']['name']['argument']['many to one'] = TRUE;
-    $data['taxonomy_term_field_data']['name']['argument']['empty field name'] = $this->t('Uncategorized');
+    $data['taxonomy_term_field_data']['name']['argument']['empty field name'] = t('Uncategorized');
 
     $data['taxonomy_term_field_data']['description__value']['field']['click sortable'] = FALSE;
 
-    $data['taxonomy_term_field_data']['changed']['title'] = $this->t('Updated date');
-    $data['taxonomy_term_field_data']['changed']['help'] = $this->t('The date the term was last updated.');
+    $data['taxonomy_term_field_data']['changed']['title'] = t('Updated date');
+    $data['taxonomy_term_field_data']['changed']['help'] = t('The date the term was last updated.');
 
     $data['taxonomy_term_field_data']['changed_fulldate'] = array(
-      'title' => $this->t('Updated date'),
-      'help' => $this->t('Date in the form of CCYYMMDD.'),
+      'title' => t('Updated date'),
+      'help' => t('Date in the form of CCYYMMDD.'),
       'argument' => array(
         'field' => 'changed',
         'id' => 'date_fulldate',
@@ -94,8 +94,8 @@ public function getViewsData() {
     );
 
     $data['taxonomy_term_field_data']['changed_year_month'] = array(
-      'title' => $this->t('Updated year + month'),
-      'help' => $this->t('Date in the form of YYYYMM.'),
+      'title' => t('Updated year + month'),
+      'help' => t('Date in the form of YYYYMM.'),
       'argument' => array(
         'field' => 'changed',
         'id' => 'date_year_month',
@@ -103,8 +103,8 @@ public function getViewsData() {
     );
 
     $data['taxonomy_term_field_data']['changed_year'] = array(
-      'title' => $this->t('Updated year'),
-      'help' => $this->t('Date in the form of YYYY.'),
+      'title' => t('Updated year'),
+      'help' => t('Date in the form of YYYY.'),
       'argument' => array(
         'field' => 'changed',
         'id' => 'date_year',
@@ -112,8 +112,8 @@ public function getViewsData() {
     );
 
     $data['taxonomy_term_field_data']['changed_month'] = array(
-      'title' => $this->t('Updated month'),
-      'help' => $this->t('Date in the form of MM (01 - 12).'),
+      'title' => t('Updated month'),
+      'help' => t('Date in the form of MM (01 - 12).'),
       'argument' => array(
         'field' => 'changed',
         'id' => 'date_month',
@@ -121,8 +121,8 @@ public function getViewsData() {
     );
 
     $data['taxonomy_term_field_data']['changed_day'] = array(
-      'title' => $this->t('Updated day'),
-      'help' => $this->t('Date in the form of DD (01 - 31).'),
+      'title' => t('Updated day'),
+      'help' => t('Date in the form of DD (01 - 31).'),
       'argument' => array(
         'field' => 'changed',
         'id' => 'date_day',
@@ -130,15 +130,15 @@ public function getViewsData() {
     );
 
     $data['taxonomy_term_field_data']['changed_week'] = array(
-      'title' => $this->t('Updated week'),
-      'help' => $this->t('Date in the form of WW (01 - 53).'),
+      'title' => t('Updated week'),
+      'help' => t('Date in the form of WW (01 - 53).'),
       'argument' => array(
         'field' => 'changed',
         'id' => 'date_week',
       ),
     );
 
-    $data['taxonomy_index']['table']['group']  = $this->t('Taxonomy term');
+    $data['taxonomy_index']['table']['group']  = t('Taxonomy term');
 
     $data['taxonomy_index']['table']['join'] = array(
       'taxonomy_term_field_data' => array(
@@ -158,13 +158,13 @@ public function getViewsData() {
     );
 
     $data['taxonomy_index']['nid'] = array(
-      'title' => $this->t('Content with term'),
-      'help' => $this->t('Relate all content tagged with a term.'),
+      'title' => t('Content with term'),
+      'help' => t('Relate all content tagged with a term.'),
       'relationship' => array(
         'id' => 'standard',
         'base' => 'node',
         'base field' => 'nid',
-        'label' => $this->t('node'),
+        'label' => t('node'),
         'skip base' => 'node',
       ),
     );
@@ -172,19 +172,19 @@ public function getViewsData() {
     // @todo This stuff needs to move to a node field since really it's all
     //   about nodes.
     $data['taxonomy_index']['tid'] = array(
-      'group' => $this->t('Content'),
-      'title' => $this->t('Has taxonomy term ID'),
-      'help' => $this->t('Display content if it has the selected taxonomy terms.'),
+      'group' => t('Content'),
+      'title' => t('Has taxonomy term ID'),
+      'help' => t('Display content if it has the selected taxonomy terms.'),
       'argument' => array(
         'id' => 'taxonomy_index_tid',
         'name table' => 'taxonomy_term_field_data',
         'name field' => 'name',
-        'empty field name' => $this->t('Uncategorized'),
+        'empty field name' => t('Uncategorized'),
         'numeric' => TRUE,
         'skip base' => 'taxonomy_term_field_data',
       ),
       'filter' => array(
-        'title' => $this->t('Has taxonomy term'),
+        'title' => t('Has taxonomy term'),
         'id' => 'taxonomy_index_tid',
         'hierarchy table' => 'taxonomy_term_hierarchy',
         'numeric' => TRUE,
@@ -194,32 +194,32 @@ public function getViewsData() {
     );
 
     $data['taxonomy_index']['status'] = [
-      'title' => $this->t('Publish status'),
-      'help' => $this->t('Whether or not the content related to a term is published.'),
+      'title' => t('Publish status'),
+      'help' => t('Whether or not the content related to a term is published.'),
       'filter' => [
         'id' => 'boolean',
-        'label' => $this->t('Published status'),
+        'label' => t('Published status'),
         'type' => 'yes-no',
       ],
     ];
 
     $data['taxonomy_index']['sticky'] = [
-      'title' => $this->t('Sticky status'),
-      'help' => $this->t('Whether or not the content related to a term is sticky.'),
+      'title' => t('Sticky status'),
+      'help' => t('Whether or not the content related to a term is sticky.'),
       'filter' => [
         'id' => 'boolean',
-        'label' => $this->t('Sticky status'),
+        'label' => t('Sticky status'),
         'type' => 'yes-no',
       ],
       'sort' => [
         'id' => 'standard',
-        'help' => $this->t('Whether or not the content related to a term is sticky. To list sticky content first, set this to descending.'),
+        'help' => t('Whether or not the content related to a term is sticky. To list sticky content first, set this to descending.'),
       ],
     ];
 
     $data['taxonomy_index']['created'] = [
-      'title' => $this->t('Post date'),
-      'help' => $this->t('The date the content related to a term was posted.'),
+      'title' => t('Post date'),
+      'help' => t('The date the content related to a term was posted.'),
       'sort' => [
         'id' => 'date'
       ],
@@ -228,7 +228,7 @@ public function getViewsData() {
       ],
     ];
 
-    $data['taxonomy_term_hierarchy']['table']['group']  = $this->t('Taxonomy term');
+    $data['taxonomy_term_hierarchy']['table']['group']  = t('Taxonomy term');
     $data['taxonomy_term_hierarchy']['table']['provider']  = 'taxonomy';
 
     $data['taxonomy_term_hierarchy']['table']['join'] = array(
@@ -245,20 +245,20 @@ public function getViewsData() {
     );
 
     $data['taxonomy_term_hierarchy']['parent'] = array(
-      'title' => $this->t('Parent term'),
-      'help' => $this->t('The parent term of the term. This can produce duplicate entries if you are using a vocabulary that allows multiple parents.'),
+      'title' => t('Parent term'),
+      'help' => t('The parent term of the term. This can produce duplicate entries if you are using a vocabulary that allows multiple parents.'),
       'relationship' => array(
         'base' => 'taxonomy_term_field_data',
         'field' => 'parent',
-        'label' => $this->t('Parent'),
+        'label' => t('Parent'),
         'id' => 'standard',
       ),
       'filter' => array(
-        'help' => $this->t('Filter the results of "Taxonomy: Term" by the parent pid.'),
+        'help' => t('Filter the results of "Taxonomy: Term" by the parent pid.'),
         'id' => 'numeric',
       ),
       'argument' => array(
-        'help' => $this->t('The parent term of the term.'),
+        'help' => t('The parent term of the term.'),
         'id' => 'taxonomy',
       ),
     );
diff --git a/core/modules/taxonomy/src/Tests/TaxonomyImageTest.php b/core/modules/taxonomy/src/Tests/TaxonomyImageTest.php
index faceca2..550c5f5 100644
--- a/core/modules/taxonomy/src/Tests/TaxonomyImageTest.php
+++ b/core/modules/taxonomy/src/Tests/TaxonomyImageTest.php
@@ -7,10 +7,8 @@
 
 namespace Drupal\taxonomy\Tests;
 
-use Drupal\field\Entity\FieldConfig;
 use Drupal\user\RoleInterface;
 use Drupal\file\Entity\File;
-use Drupal\field\Entity\FieldStorageConfig;
 
 /**
  * Tests access checks of private image fields.
@@ -43,7 +41,7 @@ protected function setUp() {
     // Add a field to the vocabulary.
     $entity_type = 'taxonomy_term';
     $name = 'field_test';
-    FieldStorageConfig::create(array(
+    entity_create('field_storage_config', array(
       'field_name' => $name,
       'entity_type' => $entity_type,
       'type' => 'image',
@@ -51,12 +49,12 @@ protected function setUp() {
         'uri_scheme' => 'private',
       ),
     ))->save();
-    FieldConfig::create([
+    entity_create('field_config', array(
       'field_name' => $name,
       'entity_type' => $entity_type,
       'bundle' => $this->vocabulary->id(),
       'settings' => array(),
-    ])->save();
+    ))->save();
     entity_get_display($entity_type, $this->vocabulary->id(), 'default')
       ->setComponent($name, array(
         'type' => 'image',
diff --git a/core/modules/taxonomy/src/Tests/Views/TaxonomyFieldFilterTest.php b/core/modules/taxonomy/src/Tests/Views/TaxonomyFieldFilterTest.php
index 23474b4..5dec796 100644
--- a/core/modules/taxonomy/src/Tests/Views/TaxonomyFieldFilterTest.php
+++ b/core/modules/taxonomy/src/Tests/Views/TaxonomyFieldFilterTest.php
@@ -8,12 +8,10 @@
 namespace Drupal\taxonomy\Tests\Views;
 
 use Drupal\Core\Language\LanguageInterface;
-use Drupal\field\Entity\FieldConfig;
 use Drupal\language\Entity\ConfigurableLanguage;
 use Drupal\views\Tests\ViewTestBase;
 use Drupal\views\Tests\ViewTestData;
 use Drupal\views\Views;
-use Drupal\field\Entity\FieldStorageConfig;
 
 /**
  * Tests taxonomy field filters with translations.
@@ -70,18 +68,18 @@ function setUp() {
     $this->vocabulary->save();
 
     // Add a translatable field to the vocabulary.
-    $field = FieldStorageConfig::create(array(
+    $field = entity_create('field_storage_config', array(
       'field_name' => 'field_foo',
       'entity_type' => 'taxonomy_term',
       'type' => 'text',
     ));
     $field->save();
-    FieldConfig::create([
+    entity_create('field_config', array(
       'field_name' => 'field_foo',
       'entity_type' => 'taxonomy_term',
       'label' => 'Foo',
       'bundle' => 'views_testing_tags',
-    ])->save();
+    ))->save();
 
     // Create term with translations.
     $taxonomy = $this->createTermWithProperties(array('name' => $this->termNames['en'], 'langcode' => 'en', 'description' => $this->termNames['en'], 'field_foo' => $this->termNames['en']));
diff --git a/core/modules/taxonomy/src/Tests/Views/TaxonomyFieldVidTest.php b/core/modules/taxonomy/src/Tests/Views/TaxonomyFieldVidTest.php
deleted file mode 100644
index f1ba681..0000000
--- a/core/modules/taxonomy/src/Tests/Views/TaxonomyFieldVidTest.php
+++ /dev/null
@@ -1,44 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\taxonomy\Tests\Views\TaxonomyFieldTidTest.
- */
-
-namespace Drupal\taxonomy\Tests\Views;
-
-use Drupal\Core\Render\RenderContext;
-use Drupal\views\Views;
-use Drupal\taxonomy\Entity\Vocabulary;
-
-/**
- * Tests the taxonomy term VID field handler.
- *
- * @group taxonomy
- */
-class TaxonomyFieldVidTest extends TaxonomyTestBase {
-
-  /**
-   * Views used by this test.
-   *
-   * @var array
-   */
-  public static $testViews = array('test_taxonomy_vid_field');
-
-  function testViewsHandlerVidField() {
-    /** @var \Drupal\Core\Render\RendererInterface $renderer */
-    $renderer = \Drupal::service('renderer');
-
-    $view = Views::getView('test_taxonomy_vid_field');
-    $this->executeView($view);
-
-    $actual = $renderer->executeInRenderContext(new RenderContext(), function () use ($view) {
-      return $view->field['vid']->advancedRender($view->result[0]);
-    });
-    $vocabulary = Vocabulary::load($this->term1->getVocabularyId());
-    $expected = $vocabulary->get('name');
-
-    $this->assertEqual($expected, $actual);
-  }
-
-}
diff --git a/core/modules/taxonomy/src/Tests/VocabularyCrudTest.php b/core/modules/taxonomy/src/Tests/VocabularyCrudTest.php
index d30bc3f..6596b8e 100644
--- a/core/modules/taxonomy/src/Tests/VocabularyCrudTest.php
+++ b/core/modules/taxonomy/src/Tests/VocabularyCrudTest.php
@@ -8,9 +8,7 @@
 namespace Drupal\taxonomy\Tests;
 
 use Drupal\Component\Utility\Unicode;
-use Drupal\field\Entity\FieldConfig;
 use Drupal\taxonomy\Entity\Vocabulary;
-use Drupal\field\Entity\FieldStorageConfig;
 
 /**
  * Tests loading, saving and deleting vocabularies.
@@ -156,14 +154,14 @@ function testUninstallReinstall() {
       'type' => 'text',
       'cardinality' => 4
     );
-    FieldStorageConfig::create($storage_definition)->save();
+    entity_create('field_storage_config', $storage_definition)->save();
     $field_definition = array(
       'field_name' => $field_name,
       'entity_type' => 'taxonomy_term',
       'bundle' => $this->vocabulary->id(),
       'label' => $this->randomMachineName() . '_label',
     );
-    FieldConfig::create($field_definition)->save();
+    entity_create('field_config', $field_definition)->save();
 
     // Remove the third party setting from the memory copy of the vocabulary.
     // We keep this invalid copy around while the taxonomy module is not even
@@ -180,7 +178,7 @@ function testUninstallReinstall() {
     // an instance of this field on the same bundle name should be successful.
     $this->vocabulary->enforceIsNew();
     $this->vocabulary->save();
-    FieldStorageConfig::create($storage_definition)->save();
-    FieldConfig::create($field_definition)->save();
+    entity_create('field_storage_config', $storage_definition)->save();
+    entity_create('field_config', $field_definition)->save();
   }
 }
diff --git a/core/modules/taxonomy/src/Tests/VocabularyTranslationTest.php b/core/modules/taxonomy/src/Tests/VocabularyTranslationTest.php
index b0e442e..4152135 100644
--- a/core/modules/taxonomy/src/Tests/VocabularyTranslationTest.php
+++ b/core/modules/taxonomy/src/Tests/VocabularyTranslationTest.php
@@ -4,7 +4,6 @@
  * @file
  * Contains \Drupal\taxonomy\Tests\VocabularyTranslationTest.
  */
-
 namespace Drupal\taxonomy\Tests;
 
 use Drupal\Component\Utility\Unicode;
diff --git a/core/modules/taxonomy/src/VocabularyAccessControlHandler.php b/core/modules/taxonomy/src/VocabularyAccessControlHandler.php
deleted file mode 100644
index 29289c6..0000000
--- a/core/modules/taxonomy/src/VocabularyAccessControlHandler.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\taxonomy\VocabularyAccessControlHandler.
- */
-
-namespace Drupal\taxonomy;
-
-use Drupal\Core\Access\AccessResult;
-use Drupal\Core\Entity\EntityAccessControlHandler;
-use Drupal\Core\Entity\EntityInterface;
-use Drupal\Core\Session\AccountInterface;
-
-/**
- * Defines the access control handler for the taxonomy vocabulary entity type.
- *
- * @see \Drupal\taxonomy\Entity\Vocabulary
- */
-class VocabularyAccessControlHandler extends EntityAccessControlHandler {
-
-  /**
-   * {@inheritdoc}
-   */
-  protected function checkAccess(EntityInterface $entity, $operation, AccountInterface $account) {
-    switch ($operation) {
-      case 'view':
-        return AccessResult::allowedIfHasPermission($account, 'access content');
-        break;
-
-      default:
-        return parent::checkAccess($entity, $operation, $account);
-        break;
-    }
-  }
-
-}
diff --git a/core/modules/taxonomy/tests/modules/taxonomy_test_views/test_views/views.view.test_taxonomy_vid_field.yml b/core/modules/taxonomy/tests/modules/taxonomy_test_views/test_views/views.view.test_taxonomy_vid_field.yml
deleted file mode 100644
index ec5ae2d..0000000
--- a/core/modules/taxonomy/tests/modules/taxonomy_test_views/test_views/views.view.test_taxonomy_vid_field.yml
+++ /dev/null
@@ -1,163 +0,0 @@
-langcode: en
-status: true
-dependencies:
-  module:
-    - taxonomy
-    - user
-id: test_taxonomy_vid_field
-label: test_taxonomy_vid_field
-module: views
-description: ''
-tag: ''
-base_table: taxonomy_term_field_data
-base_field: tid
-core: 8.x
-display:
-  default:
-    display_plugin: default
-    id: default
-    display_title: Master
-    position: 0
-    display_options:
-      access:
-        type: perm
-        options:
-          perm: 'access content'
-      cache:
-        type: tag
-        options: {  }
-      query:
-        type: views_query
-        options:
-          disable_sql_rewrite: false
-          distinct: false
-          replica: false
-          query_comment: ''
-          query_tags: {  }
-      exposed_form:
-        type: basic
-        options:
-          submit_button: Apply
-          reset_button: false
-          reset_button_label: Reset
-          exposed_sorts_label: 'Sort by'
-          expose_sort_order: true
-          sort_asc_label: Asc
-          sort_desc_label: Desc
-      pager:
-        type: full
-        options:
-          items_per_page: 10
-          offset: 0
-          id: 0
-          total_pages: null
-          expose:
-            items_per_page: false
-            items_per_page_label: 'Items per page'
-            items_per_page_options: '5, 10, 25, 50'
-            items_per_page_options_all: false
-            items_per_page_options_all_label: '- All -'
-            offset: false
-            offset_label: Offset
-          tags:
-            previous: '‹ Previous'
-            next: 'Next ›'
-            first: '« First'
-            last: 'Last »'
-          quantity: 9
-      style:
-        type: default
-        options:
-          grouping: {  }
-          row_class: ''
-          default_row_class: true
-          uses_fields: false
-      row:
-        type: fields
-        options:
-          inline: {  }
-          separator: ''
-          hide_empty: false
-          default_field_elements: true
-      fields:
-        vid:
-          id: vid
-          table: taxonomy_term_field_data
-          field: vid
-          relationship: none
-          group_type: group
-          admin_label: ''
-          label: ''
-          exclude: false
-          alter:
-            alter_text: false
-            text: ''
-            make_link: false
-            path: ''
-            absolute: false
-            external: false
-            replace_spaces: false
-            path_case: none
-            trim_whitespace: false
-            alt: ''
-            rel: ''
-            link_class: ''
-            prefix: ''
-            suffix: ''
-            target: ''
-            nl2br: false
-            max_length: 0
-            word_boundary: true
-            ellipsis: true
-            more_link: false
-            more_link_text: ''
-            more_link_path: ''
-            strip_tags: false
-            trim: false
-            preserve_tags: ''
-            html: false
-          element_type: ''
-          element_class: ''
-          element_label_type: ''
-          element_label_class: ''
-          element_label_colon: false
-          element_wrapper_type: ''
-          element_wrapper_class: ''
-          element_default_classes: true
-          empty: ''
-          hide_empty: false
-          empty_zero: false
-          hide_alter_empty: true
-          click_sort_column: target_id
-          type: entity_reference_label
-          settings:
-            link: false
-          group_column: target_id
-          group_columns: {  }
-          group_rows: true
-          delta_limit: 0
-          delta_offset: 0
-          delta_reversed: false
-          delta_first_last: false
-          multi_type: separator
-          separator: ', '
-          field_api_classes: false
-          entity_type: taxonomy_term
-          entity_field: vid
-          plugin_id: field
-      filters: {  }
-      sorts: {  }
-      header: {  }
-      footer: {  }
-      empty: {  }
-      relationships: {  }
-      arguments: {  }
-      display_extenders: {  }
-    cache_metadata:
-      max-age: -1
-      contexts:
-        - 'languages:language_content'
-        - 'languages:language_interface'
-        - url.query_args
-        - user.permissions
-      tags: {  }
diff --git a/core/modules/telephone/src/Tests/TelephoneFieldTest.php b/core/modules/telephone/src/Tests/TelephoneFieldTest.php
index 8928e8d..515d7e0 100644
--- a/core/modules/telephone/src/Tests/TelephoneFieldTest.php
+++ b/core/modules/telephone/src/Tests/TelephoneFieldTest.php
@@ -7,9 +7,7 @@
 
 namespace Drupal\telephone\Tests;
 
-use Drupal\field\Entity\FieldConfig;
 use Drupal\simpletest\WebTestBase;
-use Drupal\field\Entity\FieldStorageConfig;
 
 /**
  * Tests the creation of telephone fields.
@@ -52,17 +50,17 @@ protected function setUp() {
   function testTelephoneField() {
 
     // Add the telephone field to the article content type.
-    FieldStorageConfig::create(array(
+    entity_create('field_storage_config', array(
       'field_name' => 'field_telephone',
       'entity_type' => 'node',
       'type' => 'telephone',
     ))->save();
-    FieldConfig::create([
+    entity_create('field_config', array(
       'field_name' => 'field_telephone',
       'label' => 'Telephone Number',
       'entity_type' => 'node',
       'bundle' => 'article',
-    ])->save();
+    ))->save();
 
     entity_get_form_display('node', 'article', 'default')
       ->setComponent('field_telephone', array(
diff --git a/core/modules/telephone/src/Tests/TelephoneItemTest.php b/core/modules/telephone/src/Tests/TelephoneItemTest.php
index be0163f..42b7973 100644
--- a/core/modules/telephone/src/Tests/TelephoneItemTest.php
+++ b/core/modules/telephone/src/Tests/TelephoneItemTest.php
@@ -9,9 +9,7 @@
 
 use Drupal\Core\Field\FieldItemListInterface;
 use Drupal\Core\Field\FieldItemInterface;
-use Drupal\field\Entity\FieldConfig;
 use Drupal\field\Tests\FieldUnitTestBase;
-use Drupal\field\Entity\FieldStorageConfig;
 
 /**
  * Tests the new entity API for the telephone field type.
@@ -31,16 +29,16 @@ protected function setUp() {
     parent::setUp();
 
     // Create a telephone field storage and field for validation.
-    FieldStorageConfig::create(array(
+    entity_create('field_storage_config', array(
       'field_name' => 'field_test',
       'entity_type' => 'entity_test',
       'type' => 'telephone',
     ))->save();
-    FieldConfig::create([
+    entity_create('field_config', array(
       'entity_type' => 'entity_test',
       'field_name' => 'field_test',
       'bundle' => 'entity_test',
-    ])->save();
+    ))->save();
   }
 
   /**
diff --git a/core/modules/text/src/Plugin/Field/FieldFormatter/TextTrimmedFormatter.php b/core/modules/text/src/Plugin/Field/FieldFormatter/TextTrimmedFormatter.php
index 85abaf4..9cb3038 100644
--- a/core/modules/text/src/Plugin/Field/FieldFormatter/TextTrimmedFormatter.php
+++ b/core/modules/text/src/Plugin/Field/FieldFormatter/TextTrimmedFormatter.php
@@ -4,7 +4,6 @@
  * @file
  * Contains \Drupal\text\Plugin\Field\FieldFormatter\TextTrimmedFormatter.
  */
-
 namespace Drupal\text\Plugin\Field\FieldFormatter;
 
 use Drupal\Core\Field\FormatterBase;
diff --git a/core/modules/text/src/Tests/Formatter/TextFormatterTest.php b/core/modules/text/src/Tests/Formatter/TextFormatterTest.php
index ca44407..324f2cf 100644
--- a/core/modules/text/src/Tests/Formatter/TextFormatterTest.php
+++ b/core/modules/text/src/Tests/Formatter/TextFormatterTest.php
@@ -7,10 +7,8 @@
 
 namespace Drupal\text\Tests\Formatter;
 
-use Drupal\field\Entity\FieldConfig;
 use Drupal\filter\Entity\FilterFormat;
 use Drupal\system\Tests\Entity\EntityUnitTestBase;
-use Drupal\field\Entity\FieldStorageConfig;
 
 /**
  * Tests the text formatters functionality.
@@ -46,7 +44,7 @@ class TextFormatterTest extends EntityUnitTestBase {
   protected function setUp() {
     parent::setUp();
 
-    FilterFormat::create(array(
+    entity_create('filter_format', array(
       'format' => 'my_text_format',
       'name' => 'My text format',
       'filters' => array(
@@ -57,18 +55,18 @@ protected function setUp() {
       ),
     ))->save();
 
-    FieldStorageConfig::create(array(
+    entity_create('field_storage_config', array(
       'field_name' => 'formatted_text',
       'entity_type' => $this->entityType,
       'type' => 'text',
       'settings' => array(),
     ))->save();
-    FieldConfig::create([
+    entity_create('field_config', array(
       'entity_type' => $this->entityType,
       'bundle' => $this->bundle,
       'field_name' => 'formatted_text',
       'label' => 'Filtered text',
-    ])->save();
+    ))->save();
   }
 
   /**
diff --git a/core/modules/text/src/Tests/TextFieldTest.php b/core/modules/text/src/Tests/TextFieldTest.php
index 13df966..8279a6d 100644
--- a/core/modules/text/src/Tests/TextFieldTest.php
+++ b/core/modules/text/src/Tests/TextFieldTest.php
@@ -8,9 +8,7 @@
 namespace Drupal\text\Tests;
 
 use Drupal\Component\Utility\Unicode;
-use Drupal\field\Entity\FieldConfig;
 use Drupal\field\Tests\String\StringFieldTest;
-use Drupal\field\Entity\FieldStorageConfig;
 
 /**
  * Tests the creation of text fields.
@@ -41,7 +39,7 @@ function testTextFieldValidation() {
     // Create a field with settings to validate.
     $max_length = 3;
     $field_name = Unicode::strtolower($this->randomMachineName());
-    $field_storage = FieldStorageConfig::create(array(
+    $field_storage = entity_create('field_storage_config', array(
       'field_name' => $field_name,
       'entity_type' => 'entity_test',
       'type' => 'text',
@@ -50,10 +48,10 @@ function testTextFieldValidation() {
       )
     ));
     $field_storage->save();
-    FieldConfig::create([
+    entity_create('field_config', array(
       'field_storage' => $field_storage,
       'bundle' => 'entity_test',
-    ])->save();
+    ))->save();
 
     // Test validation with valid and invalid values.
     $entity = entity_create('entity_test');
@@ -75,32 +73,32 @@ function testTextFieldValidation() {
   function testRequiredLongTextWithFileUpload() {
     // Create a text field.
     $text_field_name = 'text_long';
-    $field_storage = FieldStorageConfig::create(array(
+    $field_storage = entity_create('field_storage_config', array(
       'field_name' => $text_field_name,
       'entity_type' => 'entity_test',
       'type' => 'text_with_summary',
     ));
     $field_storage->save();
-    FieldConfig::create([
+    entity_create('field_config', array(
       'field_storage' => $field_storage,
       'bundle' => 'entity_test',
       'label' => $this->randomMachineName() . '_label',
       'required' => TRUE,
-    ])->save();
+    ))->save();
 
     // Create a file field.
     $file_field_name = 'file_field';
-    $field_storage = FieldStorageConfig::create(array(
+    $field_storage = entity_create('field_storage_config', array(
       'field_name' => $file_field_name,
       'entity_type' => 'entity_test',
       'type' => 'file'
     ));
     $field_storage->save();
-    FieldConfig::create([
+    entity_create('field_config', array(
       'field_storage' => $field_storage,
       'bundle' => 'entity_test',
       'label' => $this->randomMachineName() . '_label',
-    ])->save();
+    ))->save();
 
     entity_get_form_display('entity_test', 'entity_test', 'default')
       ->setComponent($text_field_name, array(
@@ -153,17 +151,17 @@ function _testTextfieldWidgetsFormatted($field_type, $widget_type) {
 
     // Create a field.
     $field_name = Unicode::strtolower($this->randomMachineName());
-    $field_storage = FieldStorageConfig::create(array(
+    $field_storage = entity_create('field_storage_config', array(
       'field_name' => $field_name,
       'entity_type' => 'entity_test',
       'type' => $field_type
     ));
     $field_storage->save();
-    FieldConfig::create([
+    entity_create('field_config', array(
       'field_storage' => $field_storage,
       'bundle' => 'entity_test',
       'label' => $this->randomMachineName() . '_label',
-    ])->save();
+    ))->save();
     entity_get_form_display('entity_test', 'entity_test', 'default')
       ->setComponent($field_name, array(
         'type' => $widget_type,
diff --git a/core/modules/text/src/Tests/TextSummaryTest.php b/core/modules/text/src/Tests/TextSummaryTest.php
index c5431a8..7b1dfab 100644
--- a/core/modules/text/src/Tests/TextSummaryTest.php
+++ b/core/modules/text/src/Tests/TextSummaryTest.php
@@ -8,7 +8,6 @@
 namespace Drupal\text\Tests;
 
 use Drupal\simpletest\KernelTestBase;
-use Drupal\filter\Entity\FilterFormat;
 
 /**
  * Tests text_summary() with different strings and lengths.
@@ -22,6 +21,7 @@ class TextSummaryTest extends KernelTestBase {
   protected function setUp() {
     parent::setUp();
 
+    $this->installSchema('system', 'url_alias');
     $this->installConfig(array('text'));
   }
 
@@ -55,7 +55,7 @@ function testLongSentence() {
    * Test various summary length edge cases.
    */
   function testLength() {
-    FilterFormat::create(array(
+    entity_create('filter_format', array(
       'format' => 'autop',
       'filters' => array(
         'filter_autop' => array(
@@ -63,7 +63,7 @@ function testLength() {
         ),
       ),
     ))->save();
-    FilterFormat::create(array(
+    entity_create('filter_format', array(
       'format' => 'autop_correct',
       'filters' => array(
         'filter_autop' => array(
diff --git a/core/modules/text/src/Tests/TextWithSummaryItemTest.php b/core/modules/text/src/Tests/TextWithSummaryItemTest.php
index cf42cbe..e292ffd 100644
--- a/core/modules/text/src/Tests/TextWithSummaryItemTest.php
+++ b/core/modules/text/src/Tests/TextWithSummaryItemTest.php
@@ -9,10 +9,7 @@
 
 use Drupal\Core\Field\FieldItemListInterface;
 use Drupal\Core\Field\FieldItemInterface;
-use Drupal\field\Entity\FieldConfig;
 use Drupal\field\Tests\FieldUnitTestBase;
-use Drupal\field\Entity\FieldStorageConfig;
-use Drupal\filter\Entity\FilterFormat;
 
 /**
  * Tests using entity fields of the text summary field type.
@@ -50,7 +47,7 @@ protected function setUp() {
 
     // Create the necessary formats.
     $this->installConfig(array('filter'));
-    FilterFormat::create(array(
+    entity_create('filter_format', array(
       'format' => 'no_filters',
       'filters' => array(),
     ))->save();
@@ -101,7 +98,7 @@ public function testCrudAndUpdate() {
    */
   protected function createField($entity_type) {
     // Create a field .
-    $this->fieldStorage = FieldStorageConfig::create(array(
+    $this->fieldStorage = entity_create('field_storage_config', array(
       'field_name' => 'summary_field',
       'entity_type' => $entity_type,
       'type' => 'text_with_summary',
@@ -110,10 +107,10 @@ protected function createField($entity_type) {
       )
     ));
     $this->fieldStorage->save();
-    $this->field = FieldConfig::create([
+    $this->field = entity_create('field_config', array(
       'field_storage' => $this->fieldStorage,
       'bundle' => $entity_type,
-    ]);
+    ));
     $this->field->save();
   }
 
diff --git a/core/modules/toolbar/tests/modules/toolbar_disable_user_toolbar/toolbar_disable_user_toolbar.module b/core/modules/toolbar/tests/modules/toolbar_disable_user_toolbar/toolbar_disable_user_toolbar.module
index 27ce3e0..0678998 100644
--- a/core/modules/toolbar/tests/modules/toolbar_disable_user_toolbar/toolbar_disable_user_toolbar.module
+++ b/core/modules/toolbar/tests/modules/toolbar_disable_user_toolbar/toolbar_disable_user_toolbar.module
@@ -1,11 +1,6 @@
 <?php
 
 /**
- * @file
- * Test module.
- */
-
-/**
  * Implements hook_toolbar_alter().
  */
 function toolbar_disable_user_toolbar_toolbar_alter(&$items) {
diff --git a/core/modules/toolbar/toolbar.api.php b/core/modules/toolbar/toolbar.api.php
index b2d0409..bcddaf8 100644
--- a/core/modules/toolbar/toolbar.api.php
+++ b/core/modules/toolbar/toolbar.api.php
@@ -4,7 +4,6 @@
  * @file
  * Hooks provided by the toolbar module.
  */
-
 use Drupal\Core\Url;
 
 /**
diff --git a/core/modules/tour/src/Tests/TourTest.php b/core/modules/tour/src/Tests/TourTest.php
index cfa311b..7f656d3 100644
--- a/core/modules/tour/src/Tests/TourTest.php
+++ b/core/modules/tour/src/Tests/TourTest.php
@@ -8,7 +8,6 @@
 namespace Drupal\tour\Tests;
 
 use Drupal\language\Entity\ConfigurableLanguage;
-use Drupal\tour\Entity\Tour;
 
 /**
  * Tests the functionality of tour tips.
@@ -109,7 +108,7 @@ public function testTourFunctionality() {
     $this->assertNotEqual(count($elements), 1, 'Did not find English variant of tip 1.');
 
     // Programmatically create a tour for use through the remainder of the test.
-    $tour = Tour::create(array(
+    $tour = entity_create('tour', array(
       'id' => 'tour-entity-create-test-en',
       'label' => 'Tour test english',
       'langcode' => 'en',
diff --git a/core/modules/tracker/src/Tests/Views/TrackerTestBase.php b/core/modules/tracker/src/Tests/Views/TrackerTestBase.php
index 923fb0c..a8b36e8 100644
--- a/core/modules/tracker/src/Tests/Views/TrackerTestBase.php
+++ b/core/modules/tracker/src/Tests/Views/TrackerTestBase.php
@@ -11,7 +11,6 @@
 use Drupal\Core\Language\LanguageInterface;
 use Drupal\views\Tests\ViewTestBase;
 use Drupal\views\Tests\ViewTestData;
-use Drupal\comment\Entity\Comment;
 
 /**
  * Base class for all tracker tests.
@@ -61,7 +60,7 @@ protected function setUp() {
       'status' => 1,
     ));
 
-    $this->comment = Comment::create(array(
+    $this->comment = entity_create('comment', array(
       'entity_id' => $this->node->id(),
       'entity_type' => 'node',
       'field_name' => 'comment',
diff --git a/core/modules/update/src/Form/UpdateManagerInstall.php b/core/modules/update/src/Form/UpdateManagerInstall.php
index f47e3ee..28e0507 100644
--- a/core/modules/update/src/Form/UpdateManagerInstall.php
+++ b/core/modules/update/src/Form/UpdateManagerInstall.php
@@ -128,7 +128,7 @@ public function buildForm(array $form, FormStateInterface $form_state) {
    */
   public function validateForm(array &$form, FormStateInterface $form_state) {
     $uploaded_file = $this->getRequest()->files->get('files[project_upload]', NULL, TRUE);
-    if (!($form_state->getValue('project_url') xor !empty($uploaded_file))) {
+    if (!($form_state->getValue('project_url') XOR !empty($uploaded_file))) {
       $form_state->setErrorByName('project_url', $this->t('You must either provide a URL or upload an archive file to install.'));
     }
   }
@@ -245,7 +245,7 @@ public function submitForm(array &$form, FormStateInterface $form_state) {
       // The page title must be passed here to ensure it is initially used when
       // authorize.php loads for the first time with the FTP/SSH credentials
       // form.
-      system_authorized_init('update_authorize_run_install', __DIR__ . '/../../update.authorize.inc', $arguments, $this->t('Update manager'));
+      system_authorized_init('update_authorize_run_install', drupal_get_path('module', 'update') . '/update.authorize.inc', $arguments, $this->t('Update manager'));
       $form_state->setRedirectUrl(system_authorized_get_url());
     }
   }
diff --git a/core/modules/update/src/Form/UpdateReady.php b/core/modules/update/src/Form/UpdateReady.php
index d1298ca..d74d5c4 100644
--- a/core/modules/update/src/Form/UpdateReady.php
+++ b/core/modules/update/src/Form/UpdateReady.php
@@ -169,7 +169,7 @@ public function submitForm(array &$form, FormStateInterface $form_state) {
         // The page title must be passed here to ensure it is initially used
         // when authorize.php loads for the first time with the FTP/SSH
         // credentials form.
-        system_authorized_init('update_authorize_run_update', __DIR__ . '/../../update.authorize.inc', array($updates), $this->t('Update manager'));
+        system_authorized_init('update_authorize_run_update', drupal_get_path('module', 'update') . '/update.authorize.inc', array($updates), $this->t('Update manager'));
         $form_state->setRedirectUrl(system_authorized_get_url());
       }
     }
diff --git a/core/modules/update/src/Tests/UpdateCoreTest.php b/core/modules/update/src/Tests/UpdateCoreTest.php
index d76cfed..b105780 100644
--- a/core/modules/update/src/Tests/UpdateCoreTest.php
+++ b/core/modules/update/src/Tests/UpdateCoreTest.php
@@ -176,7 +176,7 @@ function testDatestampMismatch() {
     $system_info = array(
       '#all' => array(
         // We need to think we're running a -dev snapshot to see dates.
-        'version' => '8.1.0-dev',
+        'version' => '8.0.0-dev',
         'datestamp' => time(),
       ),
       'block' => array(
diff --git a/core/modules/update/src/Tests/UpdateUploadTest.php b/core/modules/update/src/Tests/UpdateUploadTest.php
index b9635e1..cad7d78 100644
--- a/core/modules/update/src/Tests/UpdateUploadTest.php
+++ b/core/modules/update/src/Tests/UpdateUploadTest.php
@@ -52,7 +52,7 @@ public function testUploadModule() {
     // Check to ensure an existing module can't be reinstalled. Also checks that
     // the archive was extracted since we can't know if the module is already
     // installed until after extraction.
-    $validArchiveFile = __DIR__ . '/../../tests/aaa_update_test.tar.gz';
+    $validArchiveFile = drupal_get_path('module', 'update') . '/tests/aaa_update_test.tar.gz';
     $edit = array(
       'files[project_upload]' => $validArchiveFile,
     );
@@ -65,7 +65,7 @@ public function testUploadModule() {
     $moduleUpdater = $updaters['module']['class'];
     $installedInfoFilePath = $this->container->get('update.root') . '/' . $moduleUpdater::getRootDirectoryRelativePath() . '/update_test_new_module/update_test_new_module.info.yml';
     $this->assertFalse(file_exists($installedInfoFilePath), 'The new module does not exist in the filesystem before it is installed with the Update Manager.');
-    $validArchiveFile = __DIR__ . '/../../tests/update_test_new_module/8.x-1.0/update_test_new_module.tar.gz';
+    $validArchiveFile = drupal_get_path('module', 'update') . '/tests/update_test_new_module/8.x-1.0/update_test_new_module.tar.gz';
     $edit = array(
       'files[project_upload]' => $validArchiveFile,
     );
diff --git a/core/modules/update/tests/modules/update_test/src/Controller/UpdateTestController.php b/core/modules/update/tests/modules/update_test/src/Controller/UpdateTestController.php
index b834bbe..600d8bf 100644
--- a/core/modules/update/tests/modules/update_test/src/Controller/UpdateTestController.php
+++ b/core/modules/update/tests/modules/update_test/src/Controller/UpdateTestController.php
@@ -68,7 +68,8 @@ public function updateTest($project_name, $version) {
       $availability_scenario = '#broken#';
     }
 
-    $file = __DIR__ . "/../../$project_name.$availability_scenario.xml";
+    $path = drupal_get_path('module', 'update_test');
+    $file = "$path/$project_name.$availability_scenario.xml";
     $headers = array('Content-Type' => 'text/xml; charset=utf-8');
     if (!is_file($file)) {
       // Return an empty response.
diff --git a/core/modules/update/tests/modules/update_test/update_test.module b/core/modules/update/tests/modules/update_test/update_test.module
index 04a77e9..f8de3cd 100644
--- a/core/modules/update/tests/modules/update_test/update_test.module
+++ b/core/modules/update/tests/modules/update_test/update_test.module
@@ -1,12 +1,12 @@
 <?php
 
+use Drupal\Core\Extension\Extension;
+
 /**
  * @file
  * Module for testing Update Manager functionality.
  */
 
-use Drupal\Core\Extension\Extension;
-
 /**
  * Implements hook_system_info_alter().
  *
diff --git a/core/modules/user/config/install/user.mail.yml b/core/modules/user/config/install/user.mail.yml
index 9f2ad67..f8e41ce 100644
--- a/core/modules/user/config/install/user.mail.yml
+++ b/core/modules/user/config/install/user.mail.yml
@@ -20,7 +20,7 @@ status_activated:
   body: "[user:display-name],\n\nYour account at [site:name] has been activated.\n\nYou may now log in by clicking this link or copying and pasting it into your browser:\n\n[user:one-time-login-url]\n\nThis link can only be used once to log in and will lead you to a page where you can set your password.\n\nAfter setting your password, you will be able to log in at [site:login-url] in the future using:\n\nusername: [user:account-name]\npassword: Your password\n\n--  [site:name] team"
   subject: 'Account details for [user:display-name] at [site:name] (approved)'
 status_blocked:
-  body: "[user:display-name],\n\nYour account on [site:name] has been blocked.\n\n--  [site:name] team"
+  body: "[user:display-name],\n\nYour account on [site:account-name] has been blocked.\n\n--  [site:name] team"
   subject: 'Account details for [user:display-name] at [site:name] (blocked)'
 status_canceled:
   body: "[user:display-name],\n\nYour account on [site:name] has been canceled.\n\n--  [site:name] team"
diff --git a/core/modules/user/images/icon-user-active.png b/core/modules/user/images/icon-user-active.png
new file mode 100644
index 0000000..3c9d73b
--- /dev/null
+++ b/core/modules/user/images/icon-user-active.png
@@ -0,0 +1,4 @@
+PNG
+
+   IHDR         Ĵl;   tEXtSoftware Adobe ImageReadyqe<  IDATxb`v߿@ ?߇6߿
+@|c q?ǅA2:OlllYp?aUH(f< )A˗/q #~ H"̑O@' ?F ^9޽. XсH> @AHHo߾m R% dho޼RTFW^|a  fH,	\<4  dd    IENDB`
\ No newline at end of file
diff --git a/core/modules/user/images/icon-user.png b/core/modules/user/images/icon-user.png
new file mode 100644
index 0000000..3c847c6
--- /dev/null
+++ b/core/modules/user/images/icon-user.png
@@ -0,0 +1,6 @@
+PNG
+
+   IHDR         Ĵl;   tEXtSoftware Adobe ImageReadyqe<  &IDATxb`j'O
+022 @l x' Ǐ+ d*`~ 46,|2@A$СC o'"8.
+O$0(JEdȈ5pipuu} @̀ #` 8`/ 7oEN$oR|}}?l^z5u@C3f@zChhW\ 40W$| Z>le@#%K@^O0f ZD0=
+`PC0  qW    IENDB`
\ No newline at end of file
diff --git a/core/modules/user/src/RegisterForm.php b/core/modules/user/src/RegisterForm.php
index 377b67c..d24a4b4 100644
--- a/core/modules/user/src/RegisterForm.php
+++ b/core/modules/user/src/RegisterForm.php
@@ -20,6 +20,13 @@ class RegisterForm extends AccountForm {
   /**
    * {@inheritdoc}
    */
+  public function __construct(EntityManagerInterface $entity_manager, LanguageManagerInterface $language_manager, QueryFactory $entity_query) {
+    parent::__construct($entity_manager, $language_manager, $entity_query);
+  }
+
+  /**
+   * {@inheritdoc}
+   */
   public function form(array $form, FormStateInterface $form_state) {
     $user = $this->currentUser();
     /** @var \Drupal\user\UserInterface $account */
diff --git a/core/modules/user/src/Tests/TempStoreDatabaseTest.php b/core/modules/user/src/Tests/TempStoreDatabaseTest.php
index 7d104df..6e4d837 100644
--- a/core/modules/user/src/Tests/TempStoreDatabaseTest.php
+++ b/core/modules/user/src/Tests/TempStoreDatabaseTest.php
@@ -61,7 +61,7 @@ protected function setUp() {
 
     // Install system tables to test the key/value storage without installing a
     // full Drupal environment.
-    $this->installSchema('system', array('key_value_expire'));
+    $this->installSchema('system', array('semaphore', 'key_value_expire'));
 
     // Create several objects for testing.
     for ($i = 0; $i <= 3; $i++) {
diff --git a/core/modules/user/src/Tests/Update/UserUpdateEmailToken.php b/core/modules/user/src/Tests/Update/UserUpdateEmailToken.php
deleted file mode 100644
index 3e1140b..0000000
--- a/core/modules/user/src/Tests/Update/UserUpdateEmailToken.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\user\Tests\Update\UserUpdateEmailToken.
- */
-
-namespace Drupal\user\Tests\Update;
-
-use Drupal\system\Tests\Update\UpdatePathTestBase;
-
-/**
- * Tests user email token upgrade path.
- *
- * @group Update
- */
-class UserUpdateEmailToken extends UpdatePathTestBase {
-
-  /**
-   * {@inheritdoc}
-   */
-  protected function setDatabaseDumpFiles() {
-    $this->databaseDumpFiles = [
-      __DIR__ . '/../../../../system/tests/fixtures/update/drupal-8.bare.standard.php.gz',
-      __DIR__ . '/../../../tests/fixtures/update/drupal-8.user-email-token-2587275.php',
-    ];
-  }
-
-  /**
-   * Tests that email token in status_blocked of user.mail is updated.
-   */
-  public function testEmailToken() {
-    $mail = \Drupal::config('user.mail')->get('status_blocked');
-    $this->assertTrue(strpos($mail['body'], '[site:account-name]'));
-    $this->runUpdates();
-    $mail = \Drupal::config('user.mail')->get('status_blocked');
-    $this->assertFalse(strpos($mail['body'], '[site:account-name]'));
-  }
-
-}
diff --git a/core/modules/user/src/Tests/UserAdminTest.php b/core/modules/user/src/Tests/UserAdminTest.php
index 595e0ae..cf942f9 100644
--- a/core/modules/user/src/Tests/UserAdminTest.php
+++ b/core/modules/user/src/Tests/UserAdminTest.php
@@ -28,7 +28,6 @@ class UserAdminTest extends WebTestBase {
    * Registers a user and deletes it.
    */
   function testUserAdmin() {
-    $config = $this->config('user.settings');
     $user_a = $this->drupalCreateUser();
     $user_a->name = 'User A';
     $user_a->mail = $this->randomMachineName() . '@example.com';
@@ -102,16 +101,11 @@ function testUserAdmin() {
     $edit = array();
     $edit['action'] = 'user_block_user_action';
     $edit['user_bulk_form[4]'] = TRUE;
-    $config
-      ->set('notify.status_blocked', TRUE)
-      ->save();
     $this->drupalPostForm('admin/people', $edit, t('Apply'), array(
       // Sort the table by username so that we know reliably which user will be
       // targeted with the blocking action.
       'query' => array('order' => 'name', 'sort' => 'asc')
     ));
-    $site_name = $this->config('system.site')->get('name');
-    $this->assertMailString('body', 'Your account on ' . $site_name . ' has been blocked.', 1, 'Blocked message found in the mail sent to user C.');
     $user_storage->resetCache(array($user_c->id()));
     $account = $user_storage->load($user_c->id());
     $this->assertTrue($account->isBlocked(), 'User C blocked');
diff --git a/core/modules/user/src/Tests/UserCacheTagsTest.php b/core/modules/user/src/Tests/UserCacheTagsTest.php
index 450f7bc..8bb2a6a 100644
--- a/core/modules/user/src/Tests/UserCacheTagsTest.php
+++ b/core/modules/user/src/Tests/UserCacheTagsTest.php
@@ -9,7 +9,6 @@
 
 use Drupal\system\Tests\Entity\EntityWithUriCacheTagsTestBase;
 use Drupal\user\Entity\Role;
-use Drupal\user\Entity\User;
 use Drupal\user\RoleInterface;
 
 /**
@@ -42,10 +41,10 @@ protected function setUp() {
    */
   protected function createEntity() {
     // Create a "Llama" user.
-    $user = User::create([
+    $user = entity_create('user', array(
       'name' => 'Llama',
       'status' => TRUE,
-    ]);
+    ));
     $user->save();
 
     return $user;
diff --git a/core/modules/user/src/Tests/UserCancelTest.php b/core/modules/user/src/Tests/UserCancelTest.php
index 3da7489..d3be1af 100644
--- a/core/modules/user/src/Tests/UserCancelTest.php
+++ b/core/modules/user/src/Tests/UserCancelTest.php
@@ -249,7 +249,7 @@ function testUserBlockUnpublish() {
     // Add a comment to the page.
     $comment_subject = $this->randomMachineName(8);
     $comment_body = $this->randomMachineName(8);
-    $comment = Comment::create(array(
+    $comment = entity_create('comment', array(
       'subject' => $comment_subject,
       'comment_body' => $comment_body,
       'entity_id' => $node->id(),
@@ -316,7 +316,7 @@ function testUserAnonymize() {
     // Add a comment to the page.
     $comment_subject = $this->randomMachineName(8);
     $comment_body = $this->randomMachineName(8);
-    $comment = Comment::create(array(
+    $comment = entity_create('comment', array(
       'subject' => $comment_subject,
       'comment_body' => $comment_body,
       'entity_id' => $node->id(),
diff --git a/core/modules/user/src/Tests/UserCreateTest.php b/core/modules/user/src/Tests/UserCreateTest.php
index 481c267..2674f09 100644
--- a/core/modules/user/src/Tests/UserCreateTest.php
+++ b/core/modules/user/src/Tests/UserCreateTest.php
@@ -7,9 +7,7 @@
 
 namespace Drupal\user\Tests;
 
-use Drupal\field\Entity\FieldConfig;
 use Drupal\simpletest\WebTestBase;
-use Drupal\field\Entity\FieldStorageConfig;
 
 /**
  * Tests the create user administration page.
@@ -38,7 +36,7 @@ public function testUserAdd() {
 
     // Create a field.
     $field_name = 'test_field';
-    FieldStorageConfig::create(array(
+    entity_create('field_storage_config', array(
       'field_name' => $field_name,
       'entity_type' => 'user',
       'module' => 'image',
@@ -51,7 +49,7 @@ public function testUserAdd() {
       ),
     ))->save();
 
-    FieldConfig::create([
+    entity_create('field_config', array(
       'field_name' => $field_name,
       'entity_type' => 'user',
       'label' => 'Picture',
@@ -67,7 +65,7 @@ public function testUserAdd() {
         'max_resolution' => '85x85',
         'min_resolution' => '',
       ),
-    ])->save();
+    ))->save();
 
     // Test user creation page for valid fields.
     $this->drupalGet('admin/people/create');
diff --git a/core/modules/user/src/Tests/UserEntityCallbacksTest.php b/core/modules/user/src/Tests/UserEntityCallbacksTest.php
index 2a2caaf..ce7726a 100644
--- a/core/modules/user/src/Tests/UserEntityCallbacksTest.php
+++ b/core/modules/user/src/Tests/UserEntityCallbacksTest.php
@@ -8,7 +8,6 @@
 namespace Drupal\user\Tests;
 
 use Drupal\simpletest\WebTestBase;
-use Drupal\user\Entity\User;
 
 /**
  * Tests specific parts of the user entity like the URI callback and the label
@@ -43,7 +42,7 @@ protected function setUp() {
     parent::setUp();
 
     $this->account = $this->drupalCreateUser();
-    $this->anonymous = User::create(['uid' => 0]);
+    $this->anonymous = entity_create('user', array('uid' => 0));
   }
 
   /**
diff --git a/core/modules/user/src/Tests/UserEntityReferenceTest.php b/core/modules/user/src/Tests/UserEntityReferenceTest.php
index 8e21255..65b92e5 100644
--- a/core/modules/user/src/Tests/UserEntityReferenceTest.php
+++ b/core/modules/user/src/Tests/UserEntityReferenceTest.php
@@ -10,7 +10,6 @@
 use Drupal\field\Tests\EntityReference\EntityReferenceTestTrait;
 use Drupal\field\Entity\FieldConfig;
 use Drupal\system\Tests\Entity\EntityUnitTestBase;
-use Drupal\user\Entity\Role;
 
 /**
  * Tests the user reference field functionality.
@@ -41,13 +40,13 @@ class UserEntityReferenceTest extends EntityUnitTestBase {
   protected function setUp() {
     parent::setUp();
 
-    $this->role1 = Role::create(array(
+    $this->role1 = entity_create('user_role', array(
       'id' => strtolower($this->randomMachineName(8)),
       'label' => $this->randomMachineName(8),
     ));
     $this->role1->save();
 
-    $this->role2 = Role::create(array(
+    $this->role2 = entity_create('user_role', array(
       'id' => strtolower($this->randomMachineName(8)),
       'label' => $this->randomMachineName(8),
     ));
diff --git a/core/modules/user/src/Tests/UserRegistrationTest.php b/core/modules/user/src/Tests/UserRegistrationTest.php
index bb6bbd7..1e16bc7 100644
--- a/core/modules/user/src/Tests/UserRegistrationTest.php
+++ b/core/modules/user/src/Tests/UserRegistrationTest.php
@@ -288,19 +288,19 @@ public function testUniqueFields() {
    */
   function testRegistrationWithUserFields() {
     // Create a field on 'user' entity type.
-    $field_storage = FieldStorageConfig::create(array(
+    $field_storage = entity_create('field_storage_config', array(
       'field_name' => 'test_user_field',
       'entity_type' => 'user',
       'type' => 'test_field',
       'cardinality' => 1,
     ));
     $field_storage->save();
-    $field = FieldConfig::create([
+    $field = entity_create('field_config', array(
       'field_storage' => $field_storage,
       'label' => 'Some user field',
       'bundle' => 'user',
       'required' => TRUE,
-    ]);
+    ));
     $field->save();
     entity_get_form_display('user', 'user', 'default')
       ->setComponent('test_user_field', array('type' => 'test_field_widget'))
diff --git a/core/modules/user/src/Tests/UserSaveTest.php b/core/modules/user/src/Tests/UserSaveTest.php
index b174341..2a4e7b1 100644
--- a/core/modules/user/src/Tests/UserSaveTest.php
+++ b/core/modules/user/src/Tests/UserSaveTest.php
@@ -32,13 +32,13 @@ function testUserImport() {
     $test_name = $this->randomMachineName();
 
     // Create the base user, based on drupalCreateUser().
-    $user = User::create([
+    $user = entity_create('user', array(
       'name' => $test_name,
       'uid' => $test_uid,
       'mail' => $test_name . '@example.com',
       'pass' => user_password(),
       'status' => 1,
-    ]);
+    ));
     $user->enforceIsNew();
     $user->save();
 
diff --git a/core/modules/user/src/Tests/UserValidationTest.php b/core/modules/user/src/Tests/UserValidationTest.php
index 54e0983..dfa8a21 100644
--- a/core/modules/user/src/Tests/UserValidationTest.php
+++ b/core/modules/user/src/Tests/UserValidationTest.php
@@ -91,10 +91,10 @@ function testValidation() {
     $this->assertEqual($violations[0]->getMessage(), t('The username %name is too long: it must be %max characters or less.', array('%name' => $name, '%max' => 60)));
 
     // Create a second test user to provoke a name collision.
-    $user2 = User::create([
+    $user2 = entity_create('user', array(
       'name' => 'existing',
       'mail' => 'existing@example.com',
-    ]);
+    ));
     $user2->save();
     $user->set('name', 'existing');
     $violations = $user->validate();
@@ -165,11 +165,11 @@ function testValidation() {
     Role::create(array('id' => 'role2'))->save();
 
     // Test cardinality of user roles.
-    $user = User::create([
+    $user = entity_create('user', array(
       'name' => 'role_test',
       'mail' => 'test@example.com',
       'roles' => array('role1', 'role2'),
-    ]);
+    ));
     $violations = $user->validate();
     $this->assertEqual(count($violations), 0);
 
diff --git a/core/modules/user/src/UserListBuilder.php b/core/modules/user/src/UserListBuilder.php
index f5abe38..5c4e988 100644
--- a/core/modules/user/src/UserListBuilder.php
+++ b/core/modules/user/src/UserListBuilder.php
@@ -7,7 +7,6 @@
 
 namespace Drupal\user;
 
-use Drupal\Core\Cache\CacheableMetadata;
 use Drupal\Core\Datetime\DateFormatterInterface;
 use Drupal\Core\Entity\EntityInterface;
 use Drupal\Core\Entity\EntityListBuilder;
@@ -152,19 +151,8 @@ public function buildRow(EntityInterface $entity) {
       '#theme' => 'item_list',
       '#items' => $users_roles,
     );
-    $options = [
-      'return_as_object' => TRUE,
-    ];
-    $row['member_for']['data'] = $this->dateFormatter->formatTimeDiffSince($entity->getCreatedTime(), $options)->toRenderable();
-    $last_access = $this->dateFormatter->formatTimeDiffSince($entity->getLastAccessedTime(), $options);
-
-    if ($entity->getLastAccessedTime()) {
-      $row['access']['data']['#markup'] = $last_access->getString();
-      CacheableMetadata::createFromObject($last_access)->applyTo($row['access']['data']);
-    }
-    else {
-      $row['access']['data']['#markup'] = t('never');
-    }
+    $row['member_for'] = $this->dateFormatter->formatTimeDiffSince($entity->getCreatedTime());
+    $row['access'] = $entity->getLastAccessedTime() ? $this->t('@time ago', array('@time' => $this->dateFormatter->formatTimeDiffSince($entity->getLastAccessedTime()))) : t('never');
     return $row + parent::buildRow($entity);
   }
 
diff --git a/core/modules/user/src/UserStorage.php b/core/modules/user/src/UserStorage.php
index ca877c3..d6a42f4 100644
--- a/core/modules/user/src/UserStorage.php
+++ b/core/modules/user/src/UserStorage.php
@@ -27,6 +27,49 @@
 class UserStorage extends SqlContentEntityStorage implements UserStorageInterface {
 
   /**
+   * Provides the password hashing service object.
+   *
+   * @var \Drupal\Core\Password\PasswordInterface
+   */
+  protected $password;
+
+  /**
+   * Constructs a new UserStorage object.
+   *
+   * @param \Drupal\Core\Entity\EntityTypeInterface $entity_type
+   *   The entity type definition.
+   * @param \Drupal\Core\Database\Connection $database
+   *   The database connection to be used.
+   * @param \Drupal\Core\Entity\EntityManagerInterface $entity_manager
+   *   The entity manager.
+   * @param \Drupal\Core\Cache\CacheBackendInterface $cache_backend
+   *   Cache backend instance to use.
+   * @param \Drupal\Core\Password\PasswordInterface $password
+   *   The password hashing service.
+   * @param \Drupal\Core\Language\LanguageManagerInterface $language_manager
+   *   The language manager.
+   */
+  public function __construct(EntityTypeInterface $entity_type, Connection $database, EntityManagerInterface $entity_manager, CacheBackendInterface $cache, PasswordInterface $password, LanguageManagerInterface $language_manager) {
+    parent::__construct($entity_type, $database, $entity_manager, $cache, $language_manager);
+
+    $this->password = $password;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public static function createInstance(ContainerInterface $container, EntityTypeInterface $entity_type) {
+    return new static(
+      $entity_type,
+      $container->get('database'),
+      $container->get('entity.manager'),
+      $container->get('cache.entity'),
+      $container->get('password'),
+      $container->get('language_manager')
+    );
+  }
+
+  /**
    * {@inheritdoc}
    */
   protected function doSaveFieldItems(ContentEntityInterface $entity, array $names = []) {
diff --git a/core/modules/user/src/UserViewsData.php b/core/modules/user/src/UserViewsData.php
index e31e5c5..c71b2ac 100644
--- a/core/modules/user/src/UserViewsData.php
+++ b/core/modules/user/src/UserViewsData.php
@@ -20,7 +20,7 @@ class UserViewsData extends EntityViewsData {
   public function getViewsData() {
     $data = parent::getViewsData();
 
-    $data['users_field_data']['table']['base']['help'] = $this->t('Users who have created accounts on your site.');
+    $data['users_field_data']['table']['base']['help'] = t('Users who have created accounts on your site.');
     $data['users_field_data']['table']['base']['access query tag'] = 'user_access';
 
     $data['users_field_data']['table']['wizard_id'] = 'user';
@@ -32,32 +32,31 @@ public function getViewsData() {
       'empty field name' => \Drupal::config('user.settings')->get('anonymous'),
     );
     $data['users_field_data']['uid']['filter']['id'] = 'user_name';
-    $data['users_field_data']['uid']['filter']['title'] = $this->t('Name (autocomplete)');
-    $data['users_field_data']['uid']['filter']['help'] = $this->t('The user or author name. Uses an autocomplete widget to find a user name, the actual filter uses the resulting user ID.');
+    $data['users_field_data']['uid']['filter']['title'] = t('Name');
     $data['users_field_data']['uid']['relationship'] = array(
-      'title' => $this->t('Content authored'),
-      'help' => $this->t('Relate content to the user who created it. This relationship will create one record for each content item created by the user.'),
+      'title' => t('Content authored'),
+      'help' => t('Relate content to the user who created it. This relationship will create one record for each content item created by the user.'),
       'id' => 'standard',
       'base' => 'node_field_data',
       'base field' => 'uid',
       'field' => 'uid',
-      'label' => $this->t('nodes'),
+      'label' => t('nodes'),
     );
 
     $data['users_field_data']['uid_raw'] = array(
-      'help' => $this->t('The raw numeric user ID.'),
+      'help' => t('The raw numeric user ID.'),
       'real field' => 'uid',
       'filter' => array(
-        'title' => $this->t('The user ID'),
+        'title' => t('The user ID'),
         'id' => 'numeric',
       ),
     );
 
     $data['users_field_data']['uid_representative'] = array(
       'relationship' => array(
-        'title' => $this->t('Representative node'),
-        'label'  => $this->t('Representative node'),
-        'help' => $this->t('Obtains a single representative node for each user, according to a chosen sort criterion.'),
+        'title' => t('Representative node'),
+        'label'  => t('Representative node'),
+        'help' => t('Obtains a single representative node for each user, according to a chosen sort criterion.'),
         'id' => 'groupwise_max',
         'relationship field' => 'uid',
         'outer field' => 'users_field_data.uid',
@@ -71,33 +70,33 @@ public function getViewsData() {
 
     $data['users']['uid_current'] = array(
       'real field' => 'uid',
-      'title' => $this->t('Current'),
-      'help' => $this->t('Filter the view to the currently logged in user.'),
+      'title' => t('Current'),
+      'help' => t('Filter the view to the currently logged in user.'),
       'filter' => array(
         'id' => 'user_current',
         'type' => 'yes-no',
       ),
     );
 
-    $data['users_field_data']['name']['help'] = $this->t('The user or author name.');
+    $data['users_field_data']['name']['help'] = t('The user or author name.');
     $data['users_field_data']['name']['field']['default_formatter'] = 'user_name';
-    $data['users_field_data']['name']['filter']['title'] = $this->t('Name (raw)');
-    $data['users_field_data']['name']['filter']['help'] = $this->t('The user or author name. This filter does not check if the user exists and allows partial matching. Does not use autocomplete.');
+    $data['users_field_data']['name']['filter']['title'] = t('Name (raw)');
+    $data['users_field_data']['name']['filter']['help'] = t('The user or author name. This filter does not check if the user exists and allows partial matching. Does not use autocomplete.');
 
     // Note that this field implements field level access control.
-    $data['users_field_data']['mail']['help'] = $this->t('Email address for a given user. This field is normally not shown to users, so be cautious when using it.');
+    $data['users_field_data']['mail']['help'] = t('Email address for a given user. This field is normally not shown to users, so be cautious when using it.');
 
-    $data['users_field_data']['langcode']['help'] = $this->t('Original language of the user information');
-    $data['users_field_data']['langcode']['help'] = $this->t('Language of the translation of user information');
+    $data['users_field_data']['langcode']['help'] = t('Original language of the user information');
+    $data['users_field_data']['langcode']['help'] = t('Language of the translation of user information');
 
-    $data['users_field_data']['preferred_langcode']['title'] = $this->t('Preferred language');
-    $data['users_field_data']['preferred_langcode']['help'] = $this->t('Preferred language of the user');
-    $data['users_field_data']['preferred_admin_langcode']['title'] = $this->t('Preferred admin language');
-    $data['users_field_data']['preferred_admin_langcode']['help'] = $this->t('Preferred administrative language of the user');
+    $data['users_field_data']['preferred_langcode']['title'] = t('Preferred language');
+    $data['users_field_data']['preferred_langcode']['help'] = t('Preferred language of the user');
+    $data['users_field_data']['preferred_admin_langcode']['title'] = t('Preferred admin language');
+    $data['users_field_data']['preferred_admin_langcode']['help'] = t('Preferred administrative language of the user');
 
     $data['users_field_data']['created_fulldate'] = array(
-      'title' => $this->t('Created date'),
-      'help' => $this->t('Date in the form of CCYYMMDD.'),
+      'title' => t('Created date'),
+      'help' => t('Date in the form of CCYYMMDD.'),
       'argument' => array(
         'field' => 'created',
         'id' => 'date_fulldate',
@@ -105,8 +104,8 @@ public function getViewsData() {
     );
 
     $data['users_field_data']['created_year_month'] = array(
-      'title' => $this->t('Created year + month'),
-      'help' => $this->t('Date in the form of YYYYMM.'),
+      'title' => t('Created year + month'),
+      'help' => t('Date in the form of YYYYMM.'),
       'argument' => array(
         'field' => 'created',
         'id' => 'date_year_month',
@@ -114,8 +113,8 @@ public function getViewsData() {
     );
 
     $data['users_field_data']['created_year'] = array(
-      'title' => $this->t('Created year'),
-      'help' => $this->t('Date in the form of YYYY.'),
+      'title' => t('Created year'),
+      'help' => t('Date in the form of YYYY.'),
       'argument' => array(
         'field' => 'created',
         'id' => 'date_year',
@@ -123,8 +122,8 @@ public function getViewsData() {
     );
 
     $data['users_field_data']['created_month'] = array(
-      'title' => $this->t('Created month'),
-      'help' => $this->t('Date in the form of MM (01 - 12).'),
+      'title' => t('Created month'),
+      'help' => t('Date in the form of MM (01 - 12).'),
       'argument' => array(
         'field' => 'created',
         'id' => 'date_month',
@@ -132,8 +131,8 @@ public function getViewsData() {
     );
 
     $data['users_field_data']['created_day'] = array(
-      'title' => $this->t('Created day'),
-      'help' => $this->t('Date in the form of DD (01 - 31).'),
+      'title' => t('Created day'),
+      'help' => t('Date in the form of DD (01 - 31).'),
       'argument' => array(
         'field' => 'created',
         'id' => 'date_day',
@@ -141,22 +140,22 @@ public function getViewsData() {
     );
 
     $data['users_field_data']['created_week'] = array(
-      'title' => $this->t('Created week'),
-      'help' => $this->t('Date in the form of WW (01 - 53).'),
+      'title' => t('Created week'),
+      'help' => t('Date in the form of WW (01 - 53).'),
       'argument' => array(
         'field' => 'created',
         'id' => 'date_week',
       ),
     );
 
-    $data['users_field_data']['status']['filter']['label'] = $this->t('Active');
+    $data['users_field_data']['status']['filter']['label'] = t('Active');
     $data['users_field_data']['status']['filter']['type'] = 'yes-no';
 
-    $data['users_field_data']['changed']['title'] = $this->t('Updated date');
+    $data['users_field_data']['changed']['title'] = t('Updated date');
 
     $data['users_field_data']['changed_fulldate'] = array(
-      'title' => $this->t('Updated date'),
-      'help' => $this->t('Date in the form of CCYYMMDD.'),
+      'title' => t('Updated date'),
+      'help' => t('Date in the form of CCYYMMDD.'),
       'argument' => array(
         'field' => 'changed',
         'id' => 'date_fulldate',
@@ -164,8 +163,8 @@ public function getViewsData() {
     );
 
     $data['users_field_data']['changed_year_month'] = array(
-      'title' => $this->t('Updated year + month'),
-      'help' => $this->t('Date in the form of YYYYMM.'),
+      'title' => t('Updated year + month'),
+      'help' => t('Date in the form of YYYYMM.'),
       'argument' => array(
         'field' => 'changed',
         'id' => 'date_year_month',
@@ -173,8 +172,8 @@ public function getViewsData() {
     );
 
     $data['users_field_data']['changed_year'] = array(
-      'title' => $this->t('Updated year'),
-      'help' => $this->t('Date in the form of YYYY.'),
+      'title' => t('Updated year'),
+      'help' => t('Date in the form of YYYY.'),
       'argument' => array(
         'field' => 'changed',
         'id' => 'date_year',
@@ -182,8 +181,8 @@ public function getViewsData() {
     );
 
     $data['users_field_data']['changed_month'] = array(
-      'title' => $this->t('Updated month'),
-      'help' => $this->t('Date in the form of MM (01 - 12).'),
+      'title' => t('Updated month'),
+      'help' => t('Date in the form of MM (01 - 12).'),
       'argument' => array(
         'field' => 'changed',
         'id' => 'date_month',
@@ -191,8 +190,8 @@ public function getViewsData() {
     );
 
     $data['users_field_data']['changed_day'] = array(
-      'title' => $this->t('Updated day'),
-      'help' => $this->t('Date in the form of DD (01 - 31).'),
+      'title' => t('Updated day'),
+      'help' => t('Date in the form of DD (01 - 31).'),
       'argument' => array(
         'field' => 'changed',
         'id' => 'date_day',
@@ -200,8 +199,8 @@ public function getViewsData() {
     );
 
     $data['users_field_data']['changed_week'] = array(
-      'title' => $this->t('Updated week'),
-      'help' => $this->t('Date in the form of WW (01 - 53).'),
+      'title' => t('Updated week'),
+      'help' => t('Date in the form of WW (01 - 53).'),
       'argument' => array(
         'field' => 'changed',
         'id' => 'date_week',
@@ -209,8 +208,8 @@ public function getViewsData() {
     );
 
     $data['users']['data'] = array(
-      'title' => $this->t('Data'),
-      'help' => $this->t('Provides access to the user data service.'),
+      'title' => t('Data'),
+      'help' => t('Provides access to the user data service.'),
       'real field' => 'uid',
       'field' => array(
         'id' => 'user_data',
@@ -218,14 +217,14 @@ public function getViewsData() {
     );
 
     $data['users']['user_bulk_form'] = array(
-      'title' => $this->t('Bulk update'),
-      'help' => $this->t('Add a form element that lets you run operations on multiple users.'),
+      'title' => t('Bulk update'),
+      'help' => t('Add a form element that lets you run operations on multiple users.'),
       'field' => array(
         'id' => 'user_bulk_form',
       ),
     );
 
-    $data['user__roles']['table']['group']  = $this->t('User');
+    $data['user__roles']['table']['group']  = t('User');
 
     $data['user__roles']['table']['join'] = array(
       'users_field_data' => array(
@@ -235,8 +234,8 @@ public function getViewsData() {
     );
 
     $data['user__roles']['roles_target_id'] = array(
-      'title' => $this->t('Roles'),
-      'help' => $this->t('Roles that a user belongs to.'),
+      'title' => t('Roles'),
+      'help' => t('Roles that a user belongs to.'),
       'field' => array(
         'id' => 'user_roles',
         'no group by' => TRUE,
@@ -249,15 +248,15 @@ public function getViewsData() {
         'id' => 'user__roles_rid',
         'name table' => 'role',
         'name field' => 'name',
-        'empty field name' => $this->t('No role'),
+        'empty field name' => t('No role'),
         'zero is null' => TRUE,
         'numeric' => TRUE,
       ),
     );
 
     $data['user__roles']['permission'] = array(
-      'title' => $this->t('Permission'),
-      'help' => $this->t('The user permissions.'),
+      'title' => t('Permission'),
+      'help' => t('The user permissions.'),
       'field' => array(
         'id' => 'user_permissions',
         'no group by' => TRUE,
diff --git a/core/modules/user/tests/fixtures/update/drupal-8.user-email-token-2587275.php b/core/modules/user/tests/fixtures/update/drupal-8.user-email-token-2587275.php
deleted file mode 100644
index 28dab8b..0000000
--- a/core/modules/user/tests/fixtures/update/drupal-8.user-email-token-2587275.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains database additions to drupal-8.bare.standard.php.gz for testing the
- * upgrade path of https://www.drupal.org/node/2587275.
- */
-
-use Drupal\Core\Database\Database;
-
-$connection = Database::getConnection();
-
-// Replace the user.mail configuration because the dump contains the right token
-// already.
-$connection->delete('config')->condition('name', 'user.mail')->execute();
-$connection->insert('config')
-->fields(array('collection', 'name', 'data'))
-->values(array(
-  'collection' => '',
-  'name' => 'user.mail',
-  'data' => "a:10:{s:14:\"cancel_confirm\";a:2:{s:4:\"body\";s:369:\"[user:name],\n\nA request to cancel your account has been made at [site:name].\n\nYou may now cancel your account on [site:url-brief] by clicking this link or copying and pasting it into your browser:\n\n[user:cancel-url]\n\nNOTE: The cancellation of your account is not reversible.\n\nThis link expires in one day and nothing will happen if it is not used.\n\n--  [site:name] team\";s:7:\"subject\";s:59:\"Account cancellation request for [user:name] at [site:name]\";}s:14:\"password_reset\";a:2:{s:4:\"body\";s:397:\"[user:name],\n\nA request to reset the password for your account has been made at [site:name].\n\nYou may now log in by clicking this link or copying and pasting it to your browser:\n\n[user:one-time-login-url]\n\nThis link can only be used once to log in and will lead you to a page where you can set your password. It expires after one day and nothing will happen if it's not used.\n\n--  [site:name] team\";s:7:\"subject\";s:60:\"Replacement login information for [user:name] at [site:name]\";}s:22:\"register_admin_created\";a:2:{s:4:\"body\";s:463:\"[user:name],\n\nA site administrator at [site:name] has created an account for you. You may now log in by clicking this link or copying and pasting it to your browser:\n\n[user:one-time-login-url]\n\nThis link can only be used once to log in and will lead you to a page where you can set your password.\n\nAfter setting your password, you will be able to log in at [site:login-url] in the future using:\n\nusername: [user:name]\npassword: Your password\n\n--  [site:name] team\";s:7:\"subject\";s:58:\"An administrator created an account for you at [site:name]\";}s:29:\"register_no_approval_required\";a:2:{s:4:\"body\";s:437:\"[user:name],\n\nThank you for registering at [site:name]. You may now log in by clicking this link or copying and pasting it to your browser:\n\n[user:one-time-login-url]\n\nThis link can only be used once to log in and will lead you to a page where you can set your password.\n\nAfter setting your password, you will be able to log in at [site:login-url] in the future using:\n\nusername: [user:name]\npassword: Your password\n\n--  [site:name] team\";s:7:\"subject\";s:46:\"Account details for [user:name] at [site:name]\";}s:25:\"register_pending_approval\";a:2:{s:4:\"body\";s:281:\"[user:name],\n\nThank you for registering at [site:name]. Your application for an account is currently pending approval. Once it has been approved, you will receive another email containing information about how to log in, set your password, and other details.\n\n\n--  [site:name] team\";s:7:\"subject\";s:71:\"Account details for [user:name] at [site:name] (pending admin approval)\";}s:31:\"register_pending_approval_admin\";a:2:{s:4:\"body\";s:56:\"[user:name] has applied for an account.\n\n[user:edit-url]\";s:7:\"subject\";s:71:\"Account details for [user:name] at [site:name] (pending admin approval)\";}s:16:\"status_activated\";a:2:{s:4:\"body\";s:446:\"[user:name],\n\nYour account at [site:name] has been activated.\n\nYou may now log in by clicking this link or copying and pasting it into your browser:\n\n[user:one-time-login-url]\n\nThis link can only be used once to log in and will lead you to a page where you can set your password.\n\nAfter setting your password, you will be able to log in at [site:login-url] in the future using:\n\nusername: [user:name]\npassword: Your password\n\n--  [site:name] team\";s:7:\"subject\";s:57:\"Account details for [user:name] at [site:name] (approved)\";}s:14:\"status_blocked\";a:2:{s:4:\"body\";s:89:\"[user:name],\n\nYour account on [site:account-name] has been blocked.\n\n--  [site:name] team\";s:7:\"subject\";s:56:\"Account details for [user:name] at [site:name] (blocked)\";}s:15:\"status_canceled\";a:2:{s:4:\"body\";s:82:\"[user:name],\n\nYour account on [site:name] has been canceled.\n\n--  [site:name] team\";s:7:\"subject\";s:57:\"Account details for [user:name] at [site:name] (canceled)\";}s:8:\"langcode\";s:2:\"en\";}"
-))->execute();
diff --git a/core/modules/user/user.install b/core/modules/user/user.install
index 7cc46ef..91a908e 100644
--- a/core/modules/user/user.install
+++ b/core/modules/user/user.install
@@ -85,25 +85,3 @@ function user_install() {
     ))
     ->save();
 }
-
-/**
- * @addtogroup updates-8.1.0-beta
- * @{
- */
-
-/**
- * Fix invalid token in the status_blocked email body.
- */
-function user_update_8100() {
-  $config_factory = \Drupal::configFactory();
-  $config = $config_factory->getEditable('user.mail');
-  $mail = $config->get('status_blocked');
-  if (strpos($mail['body'], '[site:account-name]') !== FALSE) {
-    $mail['body'] = str_replace('[site:account-name]', '[site:name]', $mail['body']);
-    $config->set('status_blocked', $mail)->save(TRUE);
-  }
-}
-
-/**
- * @} End of "addtogroup updates-8.1.0-beta".
- */
diff --git a/core/modules/user/user.module b/core/modules/user/user.module
index 0e9cedb..3d76074 100644
--- a/core/modules/user/user.module
+++ b/core/modules/user/user.module
@@ -1,10 +1,5 @@
 <?php
 
-/**
- * @file
- * Enables the user registration and login system.
- */
-
 use Drupal\Component\Utility\Crypt;
 use Drupal\Component\Render\PlainTextOutput;
 use Drupal\Component\Utility\Unicode;
@@ -18,13 +13,17 @@
 use Drupal\Core\Session\AnonymousUserSession;
 use Drupal\Core\Site\Settings;
 use Drupal\Core\Url;
-use Drupal\system\Entity\Action;
 use Drupal\user\Entity\Role;
 use Drupal\user\Entity\User;
 use Drupal\user\RoleInterface;
 use Drupal\user\UserInterface;
 
 /**
+ * @file
+ * Enables the user registration and login system.
+ */
+
+/**
  * Maximum length of username text field.
  *
  * Keep this under 191 characters so we can use a unique constraint in MySQL.
@@ -986,7 +985,7 @@ function user_user_role_insert(RoleInterface $role) {
 
   $add_id = 'user_add_role_action.' . $role->id();
   if (!entity_load('action', $add_id)) {
-    $action = Action::create(array(
+    $action = entity_create('action', array(
       'id' => $add_id,
       'type' => 'user',
       'label' => t('Add the @label role to the selected users', array('@label' => $role->label())),
@@ -999,7 +998,7 @@ function user_user_role_insert(RoleInterface $role) {
   }
   $remove_id = 'user_remove_role_action.' . $role->id();
   if (!entity_load('action', $remove_id)) {
-    $action = Action::create(array(
+    $action = entity_create('action', array(
       'id' => $remove_id,
       'type' => 'user',
       'label' => t('Remove the @label role from the selected users', array('@label' => $role->label())),
diff --git a/core/modules/views/config/schema/views.field.schema.yml b/core/modules/views/config/schema/views.field.schema.yml
index 562e8ca..58d4c0d 100644
--- a/core/modules/views/config/schema/views.field.schema.yml
+++ b/core/modules/views/config/schema/views.field.schema.yml
@@ -176,13 +176,6 @@ views.field.language:
       type: boolean
       label: 'Display in native language'
 
-views.field.rendered_entity:
-  type: views_field
-  label: 'Rendered entity'
-  mapping:
-    view_mode:
-      type: string
-      label: 'View mode'
 
 views.field.entity_link:
   type: views_field
diff --git a/core/modules/views/src/Annotation/ViewsPluginAnnotationBase.php b/core/modules/views/src/Annotation/ViewsPluginAnnotationBase.php
index 5c949a5..869cc69 100644
--- a/core/modules/views/src/Annotation/ViewsPluginAnnotationBase.php
+++ b/core/modules/views/src/Annotation/ViewsPluginAnnotationBase.php
@@ -16,6 +16,15 @@
 abstract class ViewsPluginAnnotationBase extends Plugin implements AnnotationInterface {
 
   /**
+   * A class to make the plugin derivative aware.
+   *
+   * @var string
+   *
+   * @see \Drupal\Component\Plugin\Discovery\DerivativeDiscoveryDecorator
+   */
+  public $derivative;
+
+  /**
    * Whether or not to register a theme function automatically.
    *
    * @var bool (optional)
diff --git a/core/modules/views/src/EntityViewsData.php b/core/modules/views/src/EntityViewsData.php
index 1ae5709..4dc23d8 100644
--- a/core/modules/views/src/EntityViewsData.php
+++ b/core/modules/views/src/EntityViewsData.php
@@ -182,16 +182,6 @@ public function getViewsData() {
       );
     }
 
-    if ($this->entityType->hasViewBuilderClass()) {
-      $data[$base_table]['rendered_entity'] = [
-        'field' => [
-          'title' => $this->t('Rendered entity'),
-          'help' => $this->t('Renders an entity in a view mode.'),
-          'id' => 'rendered_entity',
-        ],
-      ];
-    }
-
     // Setup relations to the revisions/property data.
     if ($data_table) {
       $data[$base_table]['table']['join'][$data_table] = [
diff --git a/core/modules/views/src/Form/ViewsForm.php b/core/modules/views/src/Form/ViewsForm.php
index fe27c8c..39ff499 100644
--- a/core/modules/views/src/Form/ViewsForm.php
+++ b/core/modules/views/src/Form/ViewsForm.php
@@ -66,13 +66,6 @@ class ViewsForm implements FormInterface, ContainerInjectionInterface {
   protected $viewDisplayId;
 
   /**
-   * The arguments passed to the active view.
-   *
-   * @var string[]
-   */
-  protected $viewArguments;
-
-  /**
    * Constructs a ViewsForm object.
    *
    * @param \Drupal\Core\DependencyInjection\ClassResolverInterface $class_resolver
@@ -85,60 +78,37 @@ class ViewsForm implements FormInterface, ContainerInjectionInterface {
    *   The ID of the view.
    * @param string $view_display_id
    *   The ID of the active view's display.
-   * @param string[] $view_args
-   *   The arguments passed to the active view.
    */
-  public function __construct(ClassResolverInterface $class_resolver, UrlGeneratorInterface $url_generator, RequestStack $requestStack, $view_id, $view_display_id, array $view_args) {
+  public function __construct(ClassResolverInterface $class_resolver, UrlGeneratorInterface $url_generator, RequestStack $requestStack, $view_id, $view_display_id) {
     $this->classResolver = $class_resolver;
     $this->urlGenerator = $url_generator;
     $this->requestStack = $requestStack;
     $this->viewId = $view_id;
     $this->viewDisplayId = $view_display_id;
-    $this->viewArguments = $view_args;
   }
 
   /**
    * {@inheritdoc}
    */
-  public static function create(ContainerInterface $container, $view_id = NULL, $view_display_id = NULL, array $view_args = NULL) {
+  public static function create(ContainerInterface $container, $view_id = NULL, $view_display_id = NULL) {
     return new static(
       $container->get('class_resolver'),
       $container->get('url_generator'),
       $container->get('request_stack'),
       $view_id,
-      $view_display_id,
-      $view_args
+      $view_display_id
     );
   }
 
   /**
-   * Returns a string for the form's base ID.
-   *
-   * @return string
-   *   The string identifying the form's base ID.
+   * {@inheritdoc}
    */
-  public function getBaseFormId() {
-    $parts = [
+  public function getFormId() {
+    $parts = array(
       'views_form',
       $this->viewId,
       $this->viewDisplayId,
-    ];
-
-    return implode('_', $parts);
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function getFormId() {
-    $parts = [
-      $this->getBaseFormId(),
-    ];
-
-    if (!empty($this->viewArguments)) {
-      // Append the passed arguments to ensure form uniqueness.
-      $parts = array_merge($parts, $this->viewArguments);
-    }
+    );
 
     return implode('_', $parts);
   }
@@ -153,9 +123,6 @@ public function buildForm(array $form, FormStateInterface $form_state, ViewExecu
     }
     $form_state->set(['step_controller', 'views_form_views_form'], 'Drupal\views\Form\ViewsFormMainForm');
 
-    // Add the base form ID.
-    $form_state->addBuildInfo('base_form_id', $this->getBaseFormId());
-
     $form = array();
 
     $query = $this->requestStack->getCurrentRequest()->query->all();
diff --git a/core/modules/views/src/Plugin/views/HandlerBase.php b/core/modules/views/src/Plugin/views/HandlerBase.php
index c3f6ca8..b5bb16d 100644
--- a/core/modules/views/src/Plugin/views/HandlerBase.php
+++ b/core/modules/views/src/Plugin/views/HandlerBase.php
@@ -50,6 +50,13 @@
   public $tableAlias;
 
   /**
+   * When a table has been moved this property is set.
+   *
+   * @var string
+   */
+  public $actualTable;
+
+  /**
    * The actual field in the database table, maybe different
    * on other kind of query plugins/special handlers.
    *
@@ -65,6 +72,13 @@
   public $field;
 
   /**
+   * When a field has been moved this property is set.
+   *
+   * @var string
+   */
+  public $actualField;
+
+  /**
    * The relationship used for this field.
    *
    * @var string
@@ -110,6 +124,15 @@ public function init(ViewExecutable $view, DisplayPluginBase $display, array &$o
     // we have to do a lookup because the type is singular but the
     // option is stored as the plural.
 
+    // If the 'moved to' keyword moved our handler, let's fix that now.
+    if (isset($this->actualTable)) {
+      $options['table'] = $this->actualTable;
+    }
+
+    if (isset($this->actualField)) {
+      $options['field'] = $this->actualField;
+    }
+
     $this->unpackOptions($this->options, $options);
 
     // This exist on most handlers, but not all. So they are still optional.
diff --git a/core/modules/views/src/Plugin/views/PluginBase.php b/core/modules/views/src/Plugin/views/PluginBase.php
index 3821230..462d53f 100644
--- a/core/modules/views/src/Plugin/views/PluginBase.php
+++ b/core/modules/views/src/Plugin/views/PluginBase.php
@@ -369,7 +369,7 @@ protected function viewsTokenReplace($text, $tokens) {
       if (strpos($token, '.') === FALSE) {
         // We need to validate tokens are valid Twig variables. Twig uses the
         // same variable naming rules as PHP.
-        // @see http://php.net/manual/language.variables.basics.php
+        // @see http://php.net/manual/en/language.variables.basics.php
         assert('preg_match(\'/^[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*$/\', $token) === 1', 'Tokens need to be valid Twig variables.');
         $twig_tokens[$token] = $replacement;
       }
diff --git a/core/modules/views/src/Plugin/views/area/Result.php b/core/modules/views/src/Plugin/views/area/Result.php
index 52b4e33..3079f0d 100644
--- a/core/modules/views/src/Plugin/views/area/Result.php
+++ b/core/modules/views/src/Plugin/views/area/Result.php
@@ -104,15 +104,11 @@ public function render($empty = FALSE) {
     }
     $current_record_count = ($end - $start) + 1;
     // Get the search information.
-    $replacements = [];
-    $replacements['@start'] = $start;
-    $replacements['@end'] = $end;
-    $replacements['@total'] = $total;
-    $replacements['@label'] = $label;
-    $replacements['@per_page'] = $per_page;
-    $replacements['@current_page'] = $current_page;
-    $replacements['@current_record_count'] = $current_record_count;
-    $replacements['@page_count'] = $page_count;
+    $items = array('start', 'end', 'total', 'label', 'per_page', 'current_page', 'current_record_count', 'page_count');
+    $replacements = array();
+    foreach ($items as $item) {
+      $replacements["@$item"] = ${$item};
+    }
     // Send the output.
     if (!empty($total)) {
       $output .= Xss::filterAdmin(str_replace(array_keys($replacements), array_values($replacements), $format));
diff --git a/core/modules/views/src/Plugin/views/display/DisplayPluginBase.php b/core/modules/views/src/Plugin/views/display/DisplayPluginBase.php
index 624e10e..1d18ee1 100644
--- a/core/modules/views/src/Plugin/views/display/DisplayPluginBase.php
+++ b/core/modules/views/src/Plugin/views/display/DisplayPluginBase.php
@@ -2195,7 +2195,7 @@ public function elementPreRender(array $element) {
         $output = $element['#empty'];
       }
 
-      $form_object = ViewsForm::create(\Drupal::getContainer(), $view->storage->id(), $view->current_display, $view->args);
+      $form_object = ViewsForm::create(\Drupal::getContainer(), $view->storage->id(), $view->current_display);
       $form = \Drupal::formBuilder()->getForm($form_object, $view, $output);
       // The form is requesting that all non-essential views elements be hidden,
       // usually because the rendered step is not a view result.
diff --git a/core/modules/views/src/Plugin/views/field/FieldPluginBase.php b/core/modules/views/src/Plugin/views/field/FieldPluginBase.php
index e4058ef..460621f 100644
--- a/core/modules/views/src/Plugin/views/field/FieldPluginBase.php
+++ b/core/modules/views/src/Plugin/views/field/FieldPluginBase.php
@@ -86,7 +86,7 @@
   public $original_value = NULL;
 
   /**
-   * Stores additional fields which get added to the query.
+   * Stores additional fields that get added to the query.
    *
    * The generated aliases are stored in $aliases.
    *
diff --git a/core/modules/views/src/Plugin/views/field/RenderedEntity.php b/core/modules/views/src/Plugin/views/field/RenderedEntity.php
deleted file mode 100644
index 21b8ae6..0000000
--- a/core/modules/views/src/Plugin/views/field/RenderedEntity.php
+++ /dev/null
@@ -1,213 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\views\Plugin\views\field\RenderedEntity.
- */
-
-namespace Drupal\views\Plugin\views\field;
-
-use Drupal\Core\Cache\CacheableDependencyInterface;
-use Drupal\Core\Entity\EntityManagerInterface;
-use Drupal\Core\Form\FormStateInterface;
-use Drupal\Core\Language\LanguageManagerInterface;
-use Drupal\views\Entity\Render\EntityTranslationRenderTrait;
-use Drupal\views\ResultRow;
-use Symfony\Component\DependencyInjection\ContainerInterface;
-use Drupal\Core\Cache\Cache;
-
-/**
- * Provides a field handler which renders an entity in a certain view mode.
- *
- * @ingroup views_field_handlers
- *
- * @ViewsField("rendered_entity")
- */
-class RenderedEntity extends FieldPluginBase implements CacheableDependencyInterface {
-
-  use EntityTranslationRenderTrait;
-
-  /**
-   * The entity manager.
-   *
-   * @var \Drupal\Core\Entity\EntityManagerInterface
-   */
-  protected $entityManager;
-
-  /**
-   * The language manager.
-   *
-   * @var \Drupal\Core\Language\LanguageManagerInterface
-   */
-  protected $languageManager;
-
-  /**
-   * Constructs a new RenderedEntity object.
-   *
-   * @param array $configuration
-   *   A configuration array containing information about the plugin instance.
-   * @param string $plugin_id
-   *   The plugin_id for the plugin instance.
-   * @param array $plugin_definition
-   *   The plugin implementation definition.
-   * @param \Drupal\Core\Entity\EntityManagerInterface $entity_manager
-   *    The entity manager.
-   * @param \Drupal\Core\Language\LanguageManagerInterface $language_manager
-   *   The language manager.
-   */
-  public function __construct(array $configuration, $plugin_id, array $plugin_definition, EntityManagerInterface $entity_manager, LanguageManagerInterface $language_manager) {
-    parent::__construct($configuration, $plugin_id, $plugin_definition);
-
-    $this->entityManager = $entity_manager;
-    $this->languageManager = $language_manager;
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
-    return new static(
-      $configuration,
-      $plugin_id,
-      $plugin_definition,
-      $container->get('entity.manager'),
-      $container->get('language_manager')
-    );
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function usesGroupBy() {
-    return FALSE;
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function defineOptions() {
-    $options = parent::defineOptions();
-    $options['view_mode'] = ['default' => 'default'];
-
-    return $options;
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function buildOptionsForm(&$form, FormStateInterface $form_state) {
-    parent::buildOptionsForm($form, $form_state);
-
-    $form['view_mode'] = [
-      '#type' => 'select',
-      '#options' => $this->entityManager->getViewModeOptions($this->getEntityTypeId()),
-      '#title' => $this->t('View mode'),
-      '#default_value' => $this->options['view_mode'],
-    ];
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function render(ResultRow $values) {
-    $entity = $this->getEntityTranslation($this->getEntity($values), $values);
-    $build = [];
-    if (isset($entity)) {
-      $access = $entity->access('view', NULL, TRUE);
-      $build['#access'] = $access;
-      if ($access->isAllowed()) {
-        $view_builder = $this->entityManager->getViewBuilder($this->getEntityTypeId());
-        $build += $view_builder->view($entity, $this->options['view_mode']);
-      }
-    }
-    return $build;
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function getCacheContexts() {
-    return [];
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function getCacheTags() {
-    $view_display_storage = $this->entityManager->getStorage('entity_view_display');
-    $view_displays = $view_display_storage->loadMultiple($view_display_storage
-      ->getQuery()
-      ->condition('targetEntityType', $this->getEntityTypeId())
-      ->execute());
-
-    $tags = [];
-    foreach ($view_displays as $view_display) {
-      $tags = array_merge($tags, $view_display->getCacheTags());
-    }
-    return $tags;
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function getCacheMaxAge() {
-    return Cache::PERMANENT;
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function query() {
-    // We purposefully do not call parent::query() because we do not want the
-    // default query behavior for Views fields. Instead, let the entity
-    // translation renderer provide the correct query behavior.
-    if ($this->languageManager->isMultilingual()) {
-      $this->getEntityTranslationRenderer()->query($this->query, $this->relationship);
-    }
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function getEntityTypeId() {
-    return $this->getEntityType();
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  protected function getEntityManager() {
-    return $this->entityManager;
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  protected function getLanguageManager() {
-    return $this->languageManager;
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  protected function getView() {
-    return $this->view;
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function calculateDependencies() {
-    $dependencies = parent::calculateDependencies();
-
-    $view_mode = $this->entityManager
-      ->getStorage('entity_view_mode')
-      ->load($this->getEntityTypeId() . '.' . $this->options['view_mode']);
-    if ($view_mode) {
-      $dependencies[$view_mode->getConfigDependencyKey()][] = $view_mode->getConfigDependencyName();
-    }
-
-    return $dependencies;
-  }
-
-}
diff --git a/core/modules/views/src/Plugin/views/filter/BooleanOperator.php b/core/modules/views/src/Plugin/views/filter/BooleanOperator.php
index a4cded4..e37ed31 100644
--- a/core/modules/views/src/Plugin/views/filter/BooleanOperator.php
+++ b/core/modules/views/src/Plugin/views/filter/BooleanOperator.php
@@ -76,14 +76,14 @@ protected function operators() {
     return array(
       '=' => array(
         'title' => $this->t('Is equal to'),
-        'method' => 'queryOpBoolean',
+        'method' => '_queryOperatorBoolean',
         'short' => $this->t('='),
         'values' => 1,
         'query_operator' => static::EQUAL,
       ),
       '!=' => array(
         'title' => $this->t('Is not equal to'),
-        'method' => 'queryOpBoolean',
+        'method' => '_queryOperatorBoolean',
         'short' => $this->t('!='),
         'values' => 1,
         'query_operator' => static::NOT_EQUAL,
@@ -226,15 +226,29 @@ public function query() {
   }
 
   /**
+   * Adds a where condition to the query for a boolean value. This function
+   * remains to prevent breaks in public-facing API's.
+   *
+   * @param string $field
+   *   The field name to add the where condition for.
+   */
+  protected function queryOpBoolean($field) {
+    $this->_queryOperatorBoolean($field, static::EQUAL);
+  }
+
+  /**
    * Adds a where condition to the query for a boolean value.
    *
    * @param string $field
    *   The field name to add the where condition for.
    * @param string $query_operator
-   *   (optional) Either static::EQUAL or static::NOT_EQUAL. Defaults to
-   *   static::EQUAL.
+   *   Either static::EQUAL or static::NOT_EQUAL.
+   *
+   * @internal
+   *   This method will be removed in 8.1.0 and is here to maintain backwards-
+   *   compatibility in 8.0.x releases.
    */
-  protected function queryOpBoolean($field, $query_operator = EQUAL) {
+  protected function _queryOperatorBoolean($field, $query_operator) {
     if (empty($this->value)) {
       if ($this->accept_null) {
         if ($query_operator == static::EQUAL) {
diff --git a/core/modules/views/src/Plugin/views/filter/FilterPluginBase.php b/core/modules/views/src/Plugin/views/filter/FilterPluginBase.php
index ba8096b..dade1df 100644
--- a/core/modules/views/src/Plugin/views/filter/FilterPluginBase.php
+++ b/core/modules/views/src/Plugin/views/filter/FilterPluginBase.php
@@ -614,7 +614,7 @@ public function buildExposeForm(&$form, FormStateInterface $form_state) {
       '#default_value' => $this->options['expose']['identifier'],
       '#title' => $this->t('Filter identifier'),
       '#size' => 40,
-      '#description' => $this->t('This will appear in the URL after the ? to identify this filter. Cannot be blank. Only letters, digits and the dot ("."), hyphen ("-"), underscore ("_"), and tilde ("~") characters are allowed.'),
+      '#description' => $this->t('This will appear in the URL after the ? to identify this filter. Cannot be blank.'),
     );
   }
 
@@ -623,7 +623,16 @@ public function buildExposeForm(&$form, FormStateInterface $form_state) {
    */
   public function validateExposeForm($form, FormStateInterface $form_state) {
     $identifier = $form_state->getValue(array('options', 'expose', 'identifier'));
-    $this->validateIdentifier($identifier, $form_state, $form['expose']['identifier']);
+    if (empty($identifier)) {
+      $form_state->setError($form['expose']['identifier'], $this->t('The identifier is required if the filter is exposed.'));
+    }
+    elseif ($identifier == 'value') {
+      $form_state->setError($form['expose']['identifier'], $this->t('This identifier is not allowed.'));
+    }
+
+    if (!$this->view->display_handler->isIdentifierUnique($form_state->get('id'), $identifier)) {
+      $form_state->setError($form['expose']['identifier'], $this->t('This identifier is used by another handler.'));
+    }
   }
 
   /**
@@ -632,7 +641,17 @@ public function validateExposeForm($form, FormStateInterface $form_state) {
   protected function buildGroupValidate($form, FormStateInterface $form_state) {
     if (!$form_state->isValueEmpty(array('options', 'group_info'))) {
       $identifier = $form_state->getValue(array('options', 'group_info', 'identifier'));
-      $this->validateIdentifier($identifier, $form_state, $form['group_info']['identifier']);
+      if (empty($identifier)) {
+        $form_state->setError($form['group_info']['identifier'], $this->t('The identifier is required if the filter is exposed.'));
+      }
+
+      elseif ($identifier == 'value') {
+        $form_state->setError($form['group_info']['identifier'], $this->t('This identifier is not allowed.'));
+      }
+
+      if (!$this->view->display_handler->isIdentifierUnique($form_state->get('id'), $identifier)) {
+        $form_state->setError($form['group_info']['identifier'], $this->t('This identifier is used by another handler.'));
+      }
     }
 
     if ($group_items = $form_state->getValue(array('options', 'group_info', 'group_items'))) {
@@ -662,42 +681,6 @@ protected function buildGroupValidate($form, FormStateInterface $form_state) {
   }
 
   /**
-   * Validates a filter identifier.
-   *
-   * Sets the form error if $form_state is passed or a error string if
-   * $form_state is not passed.
-   *
-   * @param string $identifier
-   *   The identifier to check.
-   * @param \Drupal\Core\Form\FormStateInterface $form_state
-   * @param array $form_group
-   *   The form element to set any errors on.
-   *
-   * @return string
-   */
-  protected function validateIdentifier($identifier, FormStateInterface $form_state = NULL, &$form_group = array()) {
-    $error = '';
-    if (empty($identifier)) {
-      $error = $this->t('The identifier is required if the filter is exposed.');
-    }
-    elseif ($identifier == 'value') {
-      $error = $this->t('This identifier is not allowed.');
-    }
-    elseif (preg_match('/[^a-zA-z0-9_~\.\-]/', $identifier)) {
-      $error = $this->t('This identifier has illegal characters.');
-    }
-
-    if ($form_state && !$this->view->display_handler->isIdentifierUnique($form_state->get('id'), $identifier)) {
-      $error = $this->t('This identifier is used by another handler.');
-    }
-
-    if (!empty($form_state) && !empty($error)) {
-      $form_state->setError($form_group, $error);
-    }
-    return $error;
-  }
-
-  /**
    * Save new group items, re-enumerates and remove groups marked to delete.
    */
   protected function buildGroupSubmit($form, FormStateInterface $form_state) {
@@ -885,7 +868,7 @@ protected function buildExposedFiltersGroupForm(&$form, FormStateInterface $form
       '#default_value' => $identifier,
       '#title' => $this->t('Filter identifier'),
       '#size' => 40,
-      '#description' => $this->t('This will appear in the URL after the ? to identify this filter. Cannot be blank. Only letters, digits and the dot ("."), hyphen ("-"), underscore ("_"), and tilde ("~") characters are allowed.'),
+      '#description' => $this->t('This will appear in the URL after the ? to identify this filter. Cannot be blank.'),
     );
     $form['group_info']['label'] = array(
       '#type' => 'textfield',
@@ -939,7 +922,7 @@ protected function buildExposedFiltersGroupForm(&$form, FormStateInterface $form
       '#default_value' => $identifier,
       '#title' => $this->t('Filter identifier'),
       '#size' => 40,
-      '#description' => $this->t('This will appear in the URL after the ? to identify this filter. Cannot be blank. Only letters, digits and the dot ("."), hyphen ("-"), underscore ("_"), and tilde ("~") characters are allowed.'),
+      '#description' => $this->t('This will appear in the URL after the ? to identify this filter. Cannot be blank.'),
     );
     $form['group_info']['label'] = array(
       '#type' => 'textfield',
@@ -1507,15 +1490,6 @@ public function getCacheTags() {
     return [];
   }
 
-  /**
-   * {@inheritdoc}
-   */
-  public function validate() {
-    if (!empty($this->options['exposed']) && $error = $this->validateIdentifier($this->options['expose']['identifier'])) {
-      return [$error];
-    }
-  }
-
 }
 
 /**
diff --git a/core/modules/views/src/Plugin/views/filter/InOperator.php b/core/modules/views/src/Plugin/views/filter/InOperator.php
index cfcde0e..042dca5 100644
--- a/core/modules/views/src/Plugin/views/filter/InOperator.php
+++ b/core/modules/views/src/Plugin/views/filter/InOperator.php
@@ -415,7 +415,7 @@ protected function opEmpty() {
 
   public function validate() {
     $this->getValueOptions();
-    $errors = parent::validate();
+    $errors = array();
 
     // If the operator is an operator which doesn't require a value, there is
     // no need for additional validation.
diff --git a/core/modules/views/src/Plugin/views/query/Sql.php b/core/modules/views/src/Plugin/views/query/Sql.php
index 25374c0..85356fc 100644
--- a/core/modules/views/src/Plugin/views/query/Sql.php
+++ b/core/modules/views/src/Plugin/views/query/Sql.php
@@ -1838,7 +1838,7 @@ public function getDateFormat($field, $format, $string_date = FALSE) {
 
         // SQLite does not have a ISO week substitution string, so it needs
         // special handling.
-        // @see http://wikipedia.org/wiki/ISO_week_date#Calculation
+        // @see http://en.wikipedia.org/wiki/ISO_week_date#Calculation
         // @see http://stackoverflow.com/a/15511864/1499564
         if ($format === '%W') {
           $expression = "((strftime('%j', date(strftime('%Y-%m-%d', $field" . $unixepoch . "), '-3 days', 'weekday 4')) - 1) / 7 + 1)";
diff --git a/core/modules/views/src/Plugin/views/relationship/GroupwiseMax.php b/core/modules/views/src/Plugin/views/relationship/GroupwiseMax.php
index 0aae903..52b1ff7 100644
--- a/core/modules/views/src/Plugin/views/relationship/GroupwiseMax.php
+++ b/core/modules/views/src/Plugin/views/relationship/GroupwiseMax.php
@@ -10,7 +10,6 @@
 use Drupal\Core\Database\Query\AlterableInterface;
 use Drupal\Core\Form\FormStateInterface;
 use Drupal\views\Views;
-use Drupal\views\Entity\View;
 
 /**
  * Relationship handler that allows a groupwise maximum of the linked in table.
@@ -157,7 +156,7 @@ public function buildOptionsForm(&$form, FormStateInterface $form_state) {
    * We use this to obtain our subquery SQL.
    */
   protected function getTemporaryView() {
-    $view = View::create(array('base_table' => $this->definition['base']));
+    $view = entity_create('view', array('base_table' => $this->definition['base']));
     $view->addDisplay('default');
     return $view->getExecutable();
   }
diff --git a/core/modules/views/src/Plugin/views/wizard/WizardPluginBase.php b/core/modules/views/src/Plugin/views/wizard/WizardPluginBase.php
index bb0aff8..95acc95 100644
--- a/core/modules/views/src/Plugin/views/wizard/WizardPluginBase.php
+++ b/core/modules/views/src/Plugin/views/wizard/WizardPluginBase.php
@@ -660,7 +660,7 @@ protected function instantiateView($form, FormStateInterface $form_state) {
       'langcode' => \Drupal::languageManager()->getDefaultLanguage()->getId(),
     );
 
-    $view = View::create($values);
+    $view = entity_create('view', $values);
 
     // Build all display options for this view.
     $display_options = $this->buildDisplayOptions($form, $form_state);
diff --git a/core/modules/views/src/Tests/DefaultViewsTest.php b/core/modules/views/src/Tests/DefaultViewsTest.php
index 12983f6..197d25e 100644
--- a/core/modules/views/src/Tests/DefaultViewsTest.php
+++ b/core/modules/views/src/Tests/DefaultViewsTest.php
@@ -15,7 +15,6 @@
 use Drupal\Core\Url;
 use Drupal\field\Tests\EntityReference\EntityReferenceTestTrait;
 use Drupal\views\Views;
-use Drupal\comment\Entity\Comment;
 
 /**
  * Tests the default views provided by views.
@@ -102,7 +101,7 @@ protected function setUp() {
         'entity_type' => 'node',
         'field_name' => 'comment'
       );
-      Comment::create($comment)->save();
+      entity_create('comment', $comment)->save();
     }
 
     // Some views, such as the "Who's Online" view, only return results if at
diff --git a/core/modules/views/src/Tests/Entity/FieldEntityTest.php b/core/modules/views/src/Tests/Entity/FieldEntityTest.php
index 1044dff..925ed10 100644
--- a/core/modules/views/src/Tests/Entity/FieldEntityTest.php
+++ b/core/modules/views/src/Tests/Entity/FieldEntityTest.php
@@ -8,11 +8,9 @@
 namespace Drupal\views\Tests\Entity;
 
 use Drupal\comment\Tests\CommentTestTrait;
-use Drupal\user\Entity\User;
 use Drupal\views\Tests\ViewTestBase;
 use Drupal\views\Tests\ViewTestData;
 use Drupal\views\Views;
-use Drupal\comment\Entity\Comment;
 
 /**
  * Tests the field plugin base integration with the entity system.
@@ -56,12 +54,12 @@ public function testGetEntity() {
     // The view is a view of comments, their nodes and their authors, so there
     // are three layers of entities.
 
-    $account = User::create(['name' => $this->randomMachineName(), 'bundle' => 'user']);
+    $account = entity_create('user', array('name' => $this->randomMachineName(), 'bundle' => 'user'));
     $account->save();
 
     $node = entity_create('node', array('uid' => $account->id(), 'type' => 'page', 'title' => $this->randomString()));
     $node->save();
-    $comment = Comment::create(array(
+    $comment = entity_create('comment', array(
       'uid' => $account->id(),
       'entity_id' => $node->id(),
       'entity_type' => 'node',
diff --git a/core/modules/views/src/Tests/Entity/ViewEntityDependenciesTest.php b/core/modules/views/src/Tests/Entity/ViewEntityDependenciesTest.php
index 5fbfb71..632be6a 100644
--- a/core/modules/views/src/Tests/Entity/ViewEntityDependenciesTest.php
+++ b/core/modules/views/src/Tests/Entity/ViewEntityDependenciesTest.php
@@ -8,13 +8,10 @@
 namespace Drupal\views\Tests\Entity;
 
 use Drupal\Component\Utility\Unicode;
-use Drupal\field\Entity\FieldConfig;
 use Drupal\field\Entity\FieldStorageConfig;
-use Drupal\node\Entity\NodeType;
 use Drupal\views\Tests\ViewTestData;
 use Drupal\views\Tests\ViewKernelTestBase;
 use Drupal\views\Views;
-use Drupal\comment\Entity\CommentType;
 
 /**
  * Tests the calculation of dependencies for views.
@@ -47,7 +44,7 @@ protected function setUp() {
     $this->installEntitySchema('node');
     $this->installConfig(array('field', 'node'));
 
-    $comment_type = CommentType::create(array(
+    $comment_type = entity_create('comment_type', array(
       'id' => 'comment',
       'label' => 'Comment settings',
       'description' => 'Comment settings',
@@ -55,18 +52,18 @@ protected function setUp() {
     ));
     $comment_type->save();
 
-    $content_type = NodeType::create([
+    $content_type = entity_create('node_type', array(
       'type' => $this->randomMachineName(),
       'name' => $this->randomString(),
-    ]);
+    ));
     $content_type->save();
-    $field_storage = FieldStorageConfig::create(array(
+    $field_storage = entity_create('field_storage_config', array(
       'field_name' => Unicode::strtolower($this->randomMachineName()),
       'entity_type' => 'node',
       'type' => 'comment',
     ));
     $field_storage->save();
-    FieldConfig::create([
+    entity_create('field_config', array(
       'field_storage' => $field_storage,
       'bundle' => $content_type->id(),
       'label' => $this->randomMachineName() . '_label',
@@ -74,13 +71,13 @@ protected function setUp() {
       'settings' => array(
         'comment_type' => $comment_type->id(),
       ),
-    ])->save();
-    FieldConfig::create([
+    ))->save();
+    entity_create('field_config', array(
       'field_storage' => FieldStorageConfig::loadByName('node', 'body'),
       'bundle' => $content_type->id(),
       'label' => $this->randomMachineName() . '_body',
       'settings' => array('display_summary' => TRUE),
-    ])->save();
+    ))->save();
 
     ViewTestData::createTestViews(get_class($this), array('views_test_config'));
   }
diff --git a/core/modules/views/src/Tests/FieldApiDataTest.php b/core/modules/views/src/Tests/FieldApiDataTest.php
index 68e1250..72ee0be 100644
--- a/core/modules/views/src/Tests/FieldApiDataTest.php
+++ b/core/modules/views/src/Tests/FieldApiDataTest.php
@@ -30,7 +30,7 @@ protected function setUp() {
       'bundle' => 'page',
       'label' => 'GiraffeA" label'
     );
-    FieldConfig::create($field)->save();
+    entity_create('field_config', $field)->save();
 
     // Attach the same field to a different bundle with a different label.
     $this->drupalCreateContentType(['type' => 'article']);
diff --git a/core/modules/views/src/Tests/Handler/ArgumentDateTest.php b/core/modules/views/src/Tests/Handler/ArgumentDateTest.php
index 7d96b27..d0939b1 100644
--- a/core/modules/views/src/Tests/Handler/ArgumentDateTest.php
+++ b/core/modules/views/src/Tests/Handler/ArgumentDateTest.php
@@ -175,7 +175,7 @@ public function testWeekHandler() {
     $view = Views::getView('test_argument_date');
     $view->setDisplay('embed_3');
     // Check the week calculation for a leap year.
-    // @see http://wikipedia.org/wiki/ISO_week_date#Calculation
+    // @see http://en.wikipedia.org/wiki/ISO_week_date#Calculation
     $this->executeView($view, array('39'));
     $expected = array();
     $expected[] = array('id' => 1);
@@ -184,7 +184,7 @@ public function testWeekHandler() {
 
     $view->setDisplay('embed_3');
     // Check the week calculation for the 29th of February in a leap year.
-    // @see http://wikipedia.org/wiki/ISO_week_date#Calculation
+    // @see http://en.wikipedia.org/wiki/ISO_week_date#Calculation
     $this->executeView($view, array('09'));
     $expected = array();
     $expected[] = array('id' => 2);
diff --git a/core/modules/views/src/Tests/Handler/FieldDateTest.php b/core/modules/views/src/Tests/Handler/FieldDateTest.php
index 525621f..004118f 100644
--- a/core/modules/views/src/Tests/Handler/FieldDateTest.php
+++ b/core/modules/views/src/Tests/Handler/FieldDateTest.php
@@ -80,7 +80,7 @@ public function testFieldDate() {
         'table' => 'views_test_data',
         'field' => 'created',
         'relationship' => 'none',
-        // ISO 8601 format, see http://php.net/manual/function.date.php
+        // ISO 8601 format @see http://php.net/manual/en/function.date.php
         'custom_date_format' => 'c',
       ),
       'destroyed' => array(
diff --git a/core/modules/views/src/Tests/Handler/FieldGroupRowsTest.php b/core/modules/views/src/Tests/Handler/FieldGroupRowsTest.php
index fa1a6aa..9cfd854 100644
--- a/core/modules/views/src/Tests/Handler/FieldGroupRowsTest.php
+++ b/core/modules/views/src/Tests/Handler/FieldGroupRowsTest.php
@@ -9,9 +9,7 @@
 
 use Drupal\Core\Field\FieldStorageDefinitionInterface;
 use Drupal\Core\Render\RenderContext;
-use Drupal\field\Entity\FieldConfig;
 use Drupal\views\Views;
-use Drupal\field\Entity\FieldStorageConfig;
 
 /**
  * Tests the "Display all values in the same row" setting.
@@ -50,7 +48,7 @@ protected function setUp() {
     $node_type = $this->drupalCreateContentType(array('type' => 'page', 'name' => 'Basic page'));
 
     // Create the unlimited text field.
-    $field_storage = FieldStorageConfig::create(array(
+    $field_storage = entity_create('field_storage_config', array(
         'field_name' => $this->fieldName,
         'entity_type' => 'node',
         'type' => 'text',
@@ -63,7 +61,7 @@ protected function setUp() {
       'field_storage' => $field_storage,
       'bundle' => $node_type->id(),
     );
-    FieldConfig::create($field)->save();
+    entity_create('field_config', $field)->save();
   }
 
   /**
diff --git a/core/modules/views/src/Tests/Handler/FieldRenderedEntityTest.php b/core/modules/views/src/Tests/Handler/FieldRenderedEntityTest.php
deleted file mode 100644
index 136a8e2..0000000
--- a/core/modules/views/src/Tests/Handler/FieldRenderedEntityTest.php
+++ /dev/null
@@ -1,201 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\views\Tests\Handler\FieldRenderedEntityTest.
- */
-
-namespace Drupal\views\Tests\Handler;
-
-use Drupal\Core\Entity\Entity\EntityViewDisplay;
-use Drupal\entity_test\Entity\EntityTest;
-use Drupal\field\Entity\FieldConfig;
-use Drupal\field\Entity\FieldStorageConfig;
-use Drupal\user\Entity\Role;
-use Drupal\user\Entity\User;
-use Drupal\views\Entity\View;
-use Drupal\views\Tests\ViewKernelTestBase;
-use Drupal\views\Views;
-use Drupal\Core\Entity\Entity\EntityViewMode;
-
-/**
- * Tests the core Drupal\views\Plugin\views\field\RenderedEntity handler.
- *
- * @group views
- */
-class FieldRenderedEntityTest extends ViewKernelTestBase {
-
-  /**
-   * Modules to enable.
-   *
-   * @var array
-   */
-  public static $modules = ['entity_test', 'field'];
-
-  /**
-   * Views used by this test.
-   *
-   * @var array
-   */
-  public static $testViews = ['test_field_entity_test_rendered'];
-
-  /**
-   * The logged in user.
-   *
-   * @var \Drupal\user\UserInterface
-   */
-  protected $user;
-
-  /**
-   * {@inheritdoc}
-   */
-  protected function setUpFixtures() {
-    $this->installEntitySchema('user');
-    $this->installEntitySchema('entity_test');
-    $this->installConfig(['entity_test']);
-
-    EntityViewMode::create([
-      'id' => 'entity_test.foobar',
-      'targetEntityType' => 'entity_test',
-      'status' => TRUE,
-      'enabled' => TRUE,
-      'label' => 'My view mode',
-    ])->save();
-
-    $display = EntityViewDisplay::create([
-      'targetEntityType' => 'entity_test',
-      'bundle' => 'entity_test',
-      'mode' => 'foobar',
-      'label' => 'My view mode',
-      'status' => TRUE,
-    ]);
-    $display->save();
-
-    $field_storage = FieldStorageConfig::create([
-      'field_name' => 'test_field',
-      'entity_type' => 'entity_test',
-      'type' => 'string',
-    ]);
-    $field_storage->save();
-
-    $field_config = FieldConfig::create([
-      'field_name' => 'test_field',
-      'entity_type' => 'entity_test',
-      'bundle' => 'entity_test',
-    ]);
-    $field_config->save();
-
-    // Create some test entities.
-    for ($i = 1; $i <= 3; $i++) {
-      EntityTest::create([
-        'name' => "Article title $i",
-        'test_field' => "Test $i",
-      ])->save();
-    }
-
-    $this->user = User::create([
-      'name' => 'test user',
-    ]);
-    $this->user->save();
-
-    parent::setUpFixtures();
-  }
-
-  /**
-   * Tests the default rendered entity output.
-   */
-  public function testRenderedEntityWithoutField() {
-    \Drupal::currentUser()->setAccount($this->user);
-
-    EntityViewDisplay::load('entity_test.entity_test.foobar')
-      ->removeComponent('test_field')
-      ->save();
-
-    $view = Views::getView('test_field_entity_test_rendered');
-    $build = [
-      '#type' => 'view',
-      '#name' => 'test_field_entity_test_rendered',
-      '#view' => $view,
-      '#display_id' => 'default',
-    ];
-    $renderer = \Drupal::service('renderer');
-    $renderer->renderPlain($build);
-    for ($i = 1; $i <= 3; $i++) {
-      $view_field = $view->style_plugin->getField($i - 1, 'rendered_entity');
-      $search_result = strpos($view_field, "Test $i") !== FALSE;
-      $this->assertFalse($search_result, "The text 'Test $i' not found in the view.");
-    }
-
-    $this->assertConfigDependencies($view->storage);
-    $this->assertCacheabilityMetadata($build);
-  }
-
-  /**
-   * Ensures that the expected cacheability metadata is applied.
-   *
-   * @param array $build
-   *   The render array
-   */
-  protected function assertCacheabilityMetadata($build) {
-    $this->assertEqual([
-      'config:core.entity_view_display.entity_test.entity_test.foobar',
-      'config:views.view.test_field_entity_test_rendered',
-      'entity_test:1',
-      'entity_test:2',
-      'entity_test:3',
-      'entity_test_list',
-      'entity_test_view',
-    ], $build['#cache']['tags']);
-
-    $this->assertEqual([
-      'entity_test_view_grants',
-      'languages:language_interface',
-      'theme',
-      'url.query_args',
-      'user.permissions',
-    ], $build['#cache']['contexts']);
-  }
-
-  /**
-   * Ensures that the config dependencies are calculated the right way.
-   *
-   * @param \Drupal\views\Entity\View $storage
-   */
-  protected function assertConfigDependencies(View $storage) {
-    $storage->calculateDependencies();
-    $this->assertEqual([
-      'config' => ['core.entity_view_mode.entity_test.foobar'],
-      'module' => ['entity_test'],
-    ], $storage->getDependencies());
-  }
-
-  /**
-   * Tests the rendered entity output with the test field configured to show.
-   */
-  public function testRenderedEntityWithField() {
-    \Drupal::currentUser()->setAccount($this->user);
-
-    // Show the test_field on the entity_test.entity_test.foobar view display.
-    EntityViewDisplay::load('entity_test.entity_test.foobar')->setComponent('test_field', ['type' => 'string', 'label' => 'above'])->save();
-
-    $view = Views::getView('test_field_entity_test_rendered');
-    $build = [
-      '#type' => 'view',
-      '#name' => 'test_field_entity_test_rendered',
-      '#view' => $view,
-      '#display_id' => 'default',
-    ];
-
-    $renderer = \Drupal::service('renderer');
-    $renderer->renderPlain($build);
-    for ($i = 1; $i <= 3; $i++) {
-      $view_field = $view->style_plugin->getField($i - 1, 'rendered_entity');
-      $search_result = strpos($view_field, "Test $i") !== FALSE;
-      $this->assertTrue($search_result, "The text 'Test $i' found in the view.");
-    }
-
-    $this->assertConfigDependencies($view->storage);
-    $this->assertCacheabilityMetadata($build);
-  }
-
-}
diff --git a/core/modules/views/src/Tests/Handler/FieldUrlTest.php b/core/modules/views/src/Tests/Handler/FieldUrlTest.php
index cc9ab60..d3451aa 100644
--- a/core/modules/views/src/Tests/Handler/FieldUrlTest.php
+++ b/core/modules/views/src/Tests/Handler/FieldUrlTest.php
@@ -27,6 +27,11 @@ class FieldUrlTest extends ViewKernelTestBase {
    */
   public static $testViews = array('test_view');
 
+  protected function setUp() {
+    parent::setUp();
+    $this->installSchema('system', 'url_alias');
+  }
+
   function viewsData() {
     $data = parent::viewsData();
     $data['views_test_data']['name']['field']['id'] = 'url';
diff --git a/core/modules/views/src/Tests/Handler/HandlerAllTest.php b/core/modules/views/src/Tests/Handler/HandlerAllTest.php
index 4c321a8..84579a8 100644
--- a/core/modules/views/src/Tests/Handler/HandlerAllTest.php
+++ b/core/modules/views/src/Tests/Handler/HandlerAllTest.php
@@ -11,7 +11,6 @@
 use Drupal\views\ViewExecutable;
 use Drupal\views\Plugin\views\HandlerBase;
 use Drupal\views\Plugin\views\filter\InOperator;
-use Drupal\views\Entity\View;
 
 /**
  * Tests instances of all handlers.
@@ -60,7 +59,7 @@ public function testHandlers() {
         continue;
       }
 
-      $view = View::create(array('base_table' => $base_table));
+      $view = entity_create('view', array('base_table' => $base_table));
       $view = $view->getExecutable();
 
       // @todo The groupwise relationship is currently broken.
diff --git a/core/modules/views/src/Tests/Handler/SortRandomTest.php b/core/modules/views/src/Tests/Handler/SortRandomTest.php
index 0fe29ac..9a9b5a6 100644
--- a/core/modules/views/src/Tests/Handler/SortRandomTest.php
+++ b/core/modules/views/src/Tests/Handler/SortRandomTest.php
@@ -34,7 +34,7 @@ class SortRandomTest extends ViewKernelTestBase {
    * of protons / electrons in the observable universe, also called the
    * eddington number.
    *
-   * @see http://wikipedia.org/wiki/Eddington_number
+   * @see http://en.wikipedia.org/wiki/Eddington_number
    */
   protected function dataSet() {
     $data = parent::dataSet();
diff --git a/core/modules/views/src/Tests/Plugin/BlockDependenciesTest.php b/core/modules/views/src/Tests/Plugin/BlockDependenciesTest.php
index 15863a7..6a5064c 100644
--- a/core/modules/views/src/Tests/Plugin/BlockDependenciesTest.php
+++ b/core/modules/views/src/Tests/Plugin/BlockDependenciesTest.php
@@ -8,7 +8,6 @@
 namespace Drupal\views\Tests\Plugin;
 
 use Drupal\views\Tests\ViewKernelTestBase;
-use Drupal\block\Entity\Block;
 
 /**
  * Tests views block config dependencies functionality.
@@ -107,7 +106,7 @@ protected function createBlock($plugin_id, array $settings = array()) {
       $values['visibility'][$id]['id'] = $id;
     }
     $values['settings'] = $settings;
-    $block = Block::create($values);
+    $block = entity_create('block', $values);
     $block->save();
     return $block;
   }
diff --git a/core/modules/views/src/Tests/Plugin/DisplayPageTest.php b/core/modules/views/src/Tests/Plugin/DisplayPageTest.php
index 17e0d02..7c7593d 100644
--- a/core/modules/views/src/Tests/Plugin/DisplayPageTest.php
+++ b/core/modules/views/src/Tests/Plugin/DisplayPageTest.php
@@ -44,6 +44,16 @@ class DisplayPageTest extends ViewKernelTestBase {
   protected $routerDumper;
 
   /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+
+    // Setup the needed tables in order to make the drupal router working.
+    $this->installSchema('system', array('url_alias'));
+  }
+
+  /**
    * Checks the behavior of the page for access denied/not found behaviors.
    */
   public function testPageResponses() {
diff --git a/core/modules/views/src/Tests/Plugin/DisplayTest.php b/core/modules/views/src/Tests/Plugin/DisplayTest.php
index 6626620..86ce6ff 100644
--- a/core/modules/views/src/Tests/Plugin/DisplayTest.php
+++ b/core/modules/views/src/Tests/Plugin/DisplayTest.php
@@ -8,7 +8,6 @@
 namespace Drupal\views\Tests\Plugin;
 
 use Drupal\language\Entity\ConfigurableLanguage;
-use Drupal\views\Entity\View;
 use Drupal\views\Views;
 use Drupal\views_test_data\Plugin\views\display\DisplayTest as DisplayTestPlugin;
 
@@ -231,7 +230,7 @@ public function testReadMore() {
     $this->assertTrue(empty($result), 'The more link is not shown when view has more records.');
 
     // Test the default value of use_more_always.
-    $view = View::create()->getExecutable();
+    $view = entity_create('view')->getExecutable();
     $this->assertTrue($view->getDisplay()->getOption('use_more_always'), 'Always display the more link by default.');
   }
 
diff --git a/core/modules/views/src/Tests/Plugin/ExposedFormTest.php b/core/modules/views/src/Tests/Plugin/ExposedFormTest.php
index 3634e23..1c520e0 100644
--- a/core/modules/views/src/Tests/Plugin/ExposedFormTest.php
+++ b/core/modules/views/src/Tests/Plugin/ExposedFormTest.php
@@ -85,69 +85,6 @@ public function testSubmitButton() {
   }
 
   /**
-   * Tests the exposed form with a non-standard identifier.
-   */
-  public function testExposedIdentifier() {
-    // Alter the identifier of the filter to a random string.
-    $view = Views::getView('test_exposed_form_buttons');
-    $view->setDisplay();
-    $identifier = 'new_identifier';
-    $view->displayHandlers->get('default')->overrideOption('filters', array(
-      'type' => [
-        'exposed' => TRUE,
-        'field' => 'type',
-        'id' => 'type',
-        'table' => 'node_field_data',
-        'plugin_id' => 'in_operator',
-        'entity_type' => 'node',
-        'entity_field' => 'type',
-        'expose' => [
-          'identifier' => $identifier,
-          'label' => 'Content: Type',
-          'operator_id' => 'type_op',
-          'reduce' => FALSE,
-          'description' => 'Exposed overridden description'
-        ],
-      ]
-    ));
-    $view->save();
-    $this->drupalGet('test_exposed_form_buttons', array('query' => array($identifier => 'article')));
-    $this->assertFieldById(Html::getId('edit-' . $identifier), 'article', "Article type filter set with new identifier.");
-
-    // Alter the identifier of the filter to a random string containing
-    // restricted characters.
-    $view = Views::getView('test_exposed_form_buttons');
-    $view->setDisplay();
-    $identifier = 'bad identifier';
-    $view->displayHandlers->get('default')->overrideOption('filters', array(
-      'type' => [
-        'exposed' =>  TRUE,
-        'field' => 'type',
-        'id' => 'type',
-        'table' => 'node_field_data',
-        'plugin_id' => 'in_operator',
-        'entity_type' => 'node',
-        'entity_field' => 'type',
-        'expose' => [
-          'identifier' => $identifier,
-          'label' => 'Content: Type',
-          'operator_id' => 'type_op',
-          'reduce' => FALSE,
-          'description' => 'Exposed overridden description'
-        ],
-      ]
-    ));
-    $this->executeView($view);
-
-    $errors = $view->validate();
-    $expected = [
-      'default' => ['This identifier has illegal characters.'],
-      'page_1' => ['This identifier has illegal characters.'],
-    ];
-    $this->assertEqual($errors, $expected);
-  }
-
-  /**
    * Tests whether the reset button works on an exposed form.
    */
   public function testResetButton() {
diff --git a/core/modules/views/src/Tests/Plugin/NumericFormatPluralTest.php b/core/modules/views/src/Tests/Plugin/NumericFormatPluralTest.php
index 8efa45a..8e75e4d 100644
--- a/core/modules/views/src/Tests/Plugin/NumericFormatPluralTest.php
+++ b/core/modules/views/src/Tests/Plugin/NumericFormatPluralTest.php
@@ -8,7 +8,6 @@
 namespace Drupal\views\Tests\Plugin;
 
 use Drupal\Component\Gettext\PoHeader;
-use Drupal\file\Entity\File;
 use Drupal\views\Tests\ViewTestBase;
 
 /**
@@ -145,7 +144,7 @@ function testNumericFormatPlural() {
    */
   protected function createFile() {
     // Create a new file entity.
-    $file = File::create([
+    $file = entity_create('file', array(
       'uid' => 1,
       'filename' => 'druplicon.txt',
       'uri' => 'public://druplicon.txt',
@@ -153,7 +152,7 @@ protected function createFile() {
       'created' => 1,
       'changed' => 1,
       'status' => FILE_STATUS_PERMANENT,
-    ]);
+    ));
     file_put_contents($file->getFileUri(), 'hello world');
 
     // Save it, inserting a new record.
diff --git a/core/modules/views/src/Tests/Plugin/RelationshipJoinTestBase.php b/core/modules/views/src/Tests/Plugin/RelationshipJoinTestBase.php
index 9954c08..d57fa27 100644
--- a/core/modules/views/src/Tests/Plugin/RelationshipJoinTestBase.php
+++ b/core/modules/views/src/Tests/Plugin/RelationshipJoinTestBase.php
@@ -7,7 +7,6 @@
 
 namespace Drupal\views\Tests\Plugin;
 
-use Drupal\user\Entity\User;
 use Drupal\views\Views;
 
 /**
@@ -39,7 +38,7 @@ protected function setUpFixtures() {
     parent::setUpFixtures();
 
     // Create a record for uid 1.
-    $this->rootUser = User::create(['name' => $this->randomMachineName()]);
+    $this->rootUser = entity_create('user', array('name' => $this->randomMachineName()));
     $this->rootUser->save();
 
     Views::viewsData()->clear();
diff --git a/core/modules/views/src/Tests/Plugin/RowRenderCacheTest.php b/core/modules/views/src/Tests/Plugin/RowRenderCacheTest.php
index 11d5799..c00d584 100644
--- a/core/modules/views/src/Tests/Plugin/RowRenderCacheTest.php
+++ b/core/modules/views/src/Tests/Plugin/RowRenderCacheTest.php
@@ -156,10 +156,11 @@ protected function doTestRenderedOutput(AccountInterface $account, $check_cache
       $expected = $access ? "<a href=\"$node_url/delete?destination=/\" hreflang=\"en\">delete</a>" : "";
       $output = $view->style_plugin->getField($index, 'delete_node');
       $this->assertEqual($output, $expected);
-      $expected = $access ? '  <div class="dropbutton-wrapper"><div class="dropbutton-widget"><ul class="dropbutton">' .
-        '<li><a href="' . $node_url . '/edit?destination=/" hreflang="en">Edit</a></li>' .
-        '<li><a href="' . $node_url . '/delete?destination=/" hreflang="en">Delete</a></li>' .
-        '</ul></div></div>' : '';
+
+      $expected = $access ? "  <div class=\"dropbutton-wrapper\"><div class=\"dropbutton-widget\"><ul class=\"dropbutton\">" .
+          "<li class=\"edit\"><a href=\"$node_url/edit?destination=/\" hreflang=\"en\">Edit</a></li>" .
+          "<li class=\"delete\"><a href=\"$node_url/delete?destination=/\" hreflang=\"en\">Delete</a></li>" .
+          "</ul></div></div>" : "";
       $output = $view->style_plugin->getField($index, 'operations');
       $this->assertEqual($output, $expected);
 
diff --git a/core/modules/views/src/Tests/TokenReplaceTest.php b/core/modules/views/src/Tests/TokenReplaceTest.php
index 85f9b88..149280f 100644
--- a/core/modules/views/src/Tests/TokenReplaceTest.php
+++ b/core/modules/views/src/Tests/TokenReplaceTest.php
@@ -28,6 +28,7 @@ class TokenReplaceTest extends ViewKernelTestBase {
 
   protected function setUp() {
     parent::setUp();
+    $this->installSchema('system', 'url_alias');
     $this->container->get('router.builder')->rebuild();
   }
 
diff --git a/core/modules/views/src/Tests/ViewExecutableTest.php b/core/modules/views/src/Tests/ViewExecutableTest.php
index e28f11d..e4f17b5 100644
--- a/core/modules/views/src/Tests/ViewExecutableTest.php
+++ b/core/modules/views/src/Tests/ViewExecutableTest.php
@@ -9,7 +9,6 @@
 
 use Drupal\comment\Tests\CommentTestTrait;
 use Drupal\Component\Utility\Xss;
-use Drupal\node\Entity\NodeType;
 use Drupal\views\Entity\View;
 use Drupal\views\Views;
 use Drupal\views\ViewExecutable;
@@ -88,10 +87,10 @@ protected function setUpFixtures() {
     $this->installSchema('comment', array('comment_entity_statistics'));
     $this->installConfig(array('system', 'field', 'node', 'comment'));
 
-    NodeType::create([
+    entity_create('node_type', array(
       'type' => 'page',
       'name' => 'Page',
-    ])->save();
+    ))->save();
     $this->addDefaultCommentField('node', 'page');
     parent::setUpFixtures();
 
diff --git a/core/modules/views/src/Tests/ViewStorageTest.php b/core/modules/views/src/Tests/ViewStorageTest.php
index 05d80ac..7728b1f 100644
--- a/core/modules/views/src/Tests/ViewStorageTest.php
+++ b/core/modules/views/src/Tests/ViewStorageTest.php
@@ -182,6 +182,10 @@ protected function displayTests() {
    * Tests the display related functions like getDisplaysList().
    */
   protected function displayMethodTests() {
+    // Enable the system module so the link generator can work using url_alias
+    // table.
+    $this->installSchema('system', 'url_alias');
+
     $config['display'] = array(
       'page_1' => array(
         'display_options' => array('path' => 'test'),
diff --git a/core/modules/views/src/Tests/ViewsFormMultipleTest.php b/core/modules/views/src/Tests/ViewsFormMultipleTest.php
deleted file mode 100644
index 2baa451..0000000
--- a/core/modules/views/src/Tests/ViewsFormMultipleTest.php
+++ /dev/null
@@ -1,65 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\views\Tests\ViewsFormMultipleTest.
- */
-
-namespace Drupal\views\Tests;
-
-/**
- * Tests a page with multiple Views forms.
- *
- * @group views
- */
-class ViewsFormMultipleTest extends ViewTestBase {
-
-  /**
-   * Views used by this test.
-   *
-   * @var array
-   */
-  public static $testViews = ['test_form_multiple'];
-
-  /**
-   * {@inheritdoc}
-   */
-  protected function setUp() {
-    parent::setUp();
-
-    $this->enableViewsTestModule();
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  protected function viewsData() {
-    $data = parent::viewsData();
-    $data['views_test_data']['field_form_button_test']['field'] = [
-      'title' => t('Button test'),
-      'help' => t('Adds a test form button.'),
-      'id' => 'field_form_button_test',
-    ];
-    return $data;
-  }
-
-
-  /**
-   * Tests the a page with multiple View forms in it.
-   */
-  public function testViewsFormMultiple() {
-    // Get the test page.
-    $this->drupalGet('views_test_form_multiple');
-
-    $this->assertText('Test base form ID with Views forms and arguments.');
-
-    // Submit the forms, validate argument returned in message set by handler.
-    // @note There is not a way to specify a specific index for a submit button. So
-    // the row index returned is always the last occurrence.
-    $this->drupalPostForm(NULL, [], t('Test Button'), [], [], 'views-form-test-form-multiple-default-arg2');
-    $this->assertText('The test button at row 4 for test_form_multiple (default) View with args: arg2 was submitted.');
-    $this->drupalPostForm(NULL, [], t('Test Button'), [], [], 'views-form-test-form-multiple-default-arg1');
-    $this->assertText('The test button at row 4 for test_form_multiple (default) View with args: arg1 was submitted.');
-  }
-
-}
diff --git a/core/modules/views/src/Tests/Wizard/TaggedWithTest.php b/core/modules/views/src/Tests/Wizard/TaggedWithTest.php
index 565c21e..a1d4df8 100644
--- a/core/modules/views/src/Tests/Wizard/TaggedWithTest.php
+++ b/core/modules/views/src/Tests/Wizard/TaggedWithTest.php
@@ -8,7 +8,6 @@
 namespace Drupal\views\Tests\Wizard;
 
 use Drupal\Core\Field\FieldStorageDefinitionInterface;
-use Drupal\field\Entity\FieldConfig;
 use Drupal\field\Tests\EntityReference\EntityReferenceTestTrait;
 
 /**
@@ -202,7 +201,7 @@ function testTaggedWithByNodeType() {
 
     // If we add an instance of the tagging field to the second node type, the
     // "tagged with" form element should not appear for it too.
-    FieldConfig::create([
+    entity_create('field_config', array(
       'field_name' => $this->tagFieldName,
       'entity_type' => 'node',
       'bundle' => $this->nodeTypeWithoutTags->id(),
@@ -215,7 +214,7 @@ function testTaggedWithByNodeType() {
           'auto_create' => TRUE,
         ),
       ),
-    ])->save();
+    ))->save();
     entity_get_form_display('node', $this->nodeTypeWithoutTags->id(), 'default')
       ->setComponent($this->tagFieldName, array(
         'type' => 'entity_reference_autocomplete_tags',
diff --git a/core/modules/views/tests/fixtures/update/argument-placeholder.php b/core/modules/views/tests/fixtures/update/argument-placeholder.php
index 525299c..9b7a6d9 100644
--- a/core/modules/views/tests/fixtures/update/argument-placeholder.php
+++ b/core/modules/views/tests/fixtures/update/argument-placeholder.php
@@ -1,10 +1,5 @@
 <?php
 
-/**
- * @file
- * Text fixture.
- */
-
 $connection = Drupal\Core\Database\Database::getConnection();
 
 $connection->insert('config')
diff --git a/core/modules/views/tests/fixtures/update/duplicate-field-handler.php b/core/modules/views/tests/fixtures/update/duplicate-field-handler.php
index 69aa8e8..2b78f12 100644
--- a/core/modules/views/tests/fixtures/update/duplicate-field-handler.php
+++ b/core/modules/views/tests/fixtures/update/duplicate-field-handler.php
@@ -1,10 +1,5 @@
 <?php
 
-/**
- * @file
- * Test fixture.
- */
-
 $connection = Drupal\Core\Database\Database::getConnection();
 
 $connection->insert('config')
diff --git a/core/modules/views/tests/modules/views_entity_test/views_entity_test.module b/core/modules/views/tests/modules/views_entity_test/views_entity_test.module
index a44fd97..f71a65b 100644
--- a/core/modules/views/tests/modules/views_entity_test/views_entity_test.module
+++ b/core/modules/views/tests/modules/views_entity_test/views_entity_test.module
@@ -4,7 +4,6 @@
  * @file
  * Contains main module functionality.
  */
-
 use Drupal\Core\Access\AccessResult;
 use Drupal\Core\Entity\EntityTypeInterface;
 use Drupal\Core\Field\BaseFieldDefinition;
diff --git a/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_field_entity_test_rendered.yml b/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_field_entity_test_rendered.yml
deleted file mode 100644
index 541ee96..0000000
--- a/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_field_entity_test_rendered.yml
+++ /dev/null
@@ -1,161 +0,0 @@
-langcode: en
-status: true
-dependencies:
-  module:
-    - entity_test
-    - user
-id: test_field_entity_test_rendered
-label: 'Test Rendered entity test'
-module: views
-description: ''
-tag: ''
-base_table: entity_test
-base_field: id
-core: 8.x
-display:
-  default:
-    display_plugin: default
-    id: default
-    display_title: Master
-    position: 0
-    display_options:
-      access:
-        type: none
-        options: {  }
-      cache:
-        type: none
-        options: {  }
-      query:
-        type: views_query
-        options:
-          disable_sql_rewrite: false
-          distinct: false
-          replica: false
-          query_comment: ''
-          query_tags: {  }
-      exposed_form:
-        type: basic
-        options:
-          submit_button: Apply
-          reset_button: false
-          reset_button_label: Reset
-          exposed_sorts_label: 'Sort by'
-          expose_sort_order: true
-          sort_asc_label: Asc
-          sort_desc_label: Desc
-      pager:
-        type: full
-        options:
-          items_per_page: 10
-          offset: 0
-          id: 0
-          total_pages: null
-          expose:
-            items_per_page: false
-            items_per_page_label: 'Items per page'
-            items_per_page_options: '5, 10, 25, 50'
-            items_per_page_options_all: false
-            items_per_page_options_all_label: '- All -'
-            offset: false
-            offset_label: Offset
-          tags:
-            previous: '‹ Previous'
-            next: 'Next ›'
-            first: '« First'
-            last: 'Last »'
-          quantity: 9
-      style:
-        type: default
-        options:
-          grouping: {  }
-          row_class: ''
-          default_row_class: true
-          uses_fields: false
-      row:
-        type: fields
-        options:
-          inline: {  }
-          separator: ''
-          hide_empty: false
-          default_field_elements: true
-      fields:
-        rendered_entity:
-          id: rendered_entity
-          table: entity_test
-          field: rendered_entity
-          relationship: none
-          group_type: group
-          admin_label: ''
-          label: ''
-          exclude: false
-          alter:
-            alter_text: false
-            text: ''
-            make_link: false
-            path: ''
-            absolute: false
-            external: false
-            replace_spaces: false
-            path_case: none
-            trim_whitespace: false
-            alt: ''
-            rel: ''
-            link_class: ''
-            prefix: ''
-            suffix: ''
-            target: ''
-            nl2br: false
-            max_length: 0
-            word_boundary: true
-            ellipsis: true
-            more_link: false
-            more_link_text: ''
-            more_link_path: ''
-            strip_tags: false
-            trim: false
-            preserve_tags: ''
-            html: false
-          element_type: ''
-          element_class: ''
-          element_label_type: ''
-          element_label_class: ''
-          element_label_colon: false
-          element_wrapper_type: ''
-          element_wrapper_class: ''
-          element_default_classes: true
-          empty: ''
-          hide_empty: false
-          empty_zero: false
-          hide_alter_empty: true
-          view_mode: foobar
-          entity_type: entity_test
-          plugin_id: rendered_entity
-      filters: {  }
-      sorts:
-        id:
-          id: id
-          table: entity_test
-          field: id
-          relationship: none
-          group_type: group
-          admin_label: ''
-          order: ASC
-          exposed: false
-          expose:
-            label: ''
-          entity_type: entity_test
-          entity_field: nid
-          plugin_id: standard
-      header: {  }
-      footer: {  }
-      empty: {  }
-      relationships: {  }
-      arguments: {  }
-      display_extenders: {  }
-    cache_metadata:
-      max-age: 0
-      contexts:
-        - 'languages:language_interface'
-        - url.query_args
-        - user.permissions
-      tags: { }
diff --git a/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_form_multiple.yml b/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_form_multiple.yml
deleted file mode 100644
index 138517c..0000000
--- a/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_form_multiple.yml
+++ /dev/null
@@ -1,130 +0,0 @@
-langcode: en
-status: true
-dependencies:
-  module:
-    - node
-id: test_form_multiple
-label: ''
-module: views
-description: ''
-tag: ''
-base_table: views_test_data
-base_field: nid
-core: 8.x
-display:
-  default:
-    display_plugin: default
-    display_title: Master
-    id: default
-    position: 0
-    display_options:
-      access:
-        type: none
-      cache:
-        type: tag
-        options: {  }
-      query:
-        type: views_query
-        options:
-          disable_sql_rewrite: false
-          distinct: false
-          replica: false
-          query_comment: ''
-          query_tags: {  }
-      pager:
-        options:
-          id: 0
-          items_per_page: 10
-          offset: 0
-        type: full
-      style:
-        type: table
-        options:
-          grouping: {  }
-          row_class: ''
-          default_row_class: true
-          override: true
-          sticky: false
-          caption: ''
-          summary: ''
-          description: ''
-          columns:
-            id: id
-            field_form_button_test: field_form_button_test
-          info:
-            field_form_button_test:
-              sortable: false
-              default_sort_order: asc
-              align: ''
-              separator: ''
-              empty_column: false
-              responsive: ''
-          default: '-1'
-          empty_table: false
-      row:
-        type: fields
-      fields:
-        id:
-          field: id
-          id: id
-          relationship: none
-          table: views_test_data
-          plugin_id: numeric
-        field_form_button_test:
-          id: field_form_button_test
-          table: views_test_data
-          field: field_form_button_test
-          relationship: none
-          group_type: group
-          admin_label: ''
-          label: 'Field form button test'
-          exclude: false
-          alter:
-            alter_text: false
-            text: ''
-            make_link: false
-            path: ''
-            absolute: false
-            external: false
-            replace_spaces: false
-            path_case: none
-            trim_whitespace: false
-            alt: ''
-            rel: ''
-            link_class: ''
-            prefix: ''
-            suffix: ''
-            target: ''
-            nl2br: false
-            max_length: 0
-            word_boundary: true
-            ellipsis: true
-            more_link: false
-            more_link_text: ''
-            more_link_path: ''
-            strip_tags: false
-            trim: false
-            preserve_tags: ''
-            html: false
-          element_type: ''
-          element_class: ''
-          element_label_type: ''
-          element_label_class: ''
-          element_label_colon: true
-          element_wrapper_type: ''
-          element_wrapper_class: ''
-          element_default_classes: true
-          empty: ''
-          hide_empty: false
-          empty_zero: false
-          hide_alter_empty: true
-          plugin_id: field_form_button_test
-      arguments:
-        'null':
-          default_action: default
-          default_argument_type: fixed
-          field: 'null'
-          id: 'null'
-          must_not_be: false
-          table: views
-          plugin_id: 'null'
diff --git a/core/modules/views/tests/modules/views_test_data/src/Controller/ViewsTestFormMultipleController.php b/core/modules/views/tests/modules/views_test_data/src/Controller/ViewsTestFormMultipleController.php
deleted file mode 100644
index 85cb0ad..0000000
--- a/core/modules/views/tests/modules/views_test_data/src/Controller/ViewsTestFormMultipleController.php
+++ /dev/null
@@ -1,44 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\views_test_data\Controller\ViewsTestFormMultipleController.
- */
-
-namespace Drupal\views_test_data\Controller;
-
-use Drupal\Core\Controller\ControllerBase;
-
-/**
- * Controller routines for views form multiple test routes.
- */
-class ViewsTestFormMultipleController extends ControllerBase {
-
-  /**
-   * Returns a test page having test_form_multiple view embedded twice.
-   */
-  public function testPage() {
-    $build = [
-      'view_arg1' => [
-        '#prefix' => '<div class="view-test-form-multiple-1">',
-        '#suffix' => '</div>',
-        '#type' => 'view',
-        '#name' => 'test_form_multiple',
-        '#display_id' => 'default',
-        '#arguments' => ['arg1'],
-        '#embed' => TRUE,
-      ],
-      'view_arg2' => [
-        '#prefix' => '<div class="view-test-form-multiple-2">',
-        '#suffix' => '</div>',
-        '#type' => 'view',
-        '#name' => 'test_form_multiple',
-        '#display_id' => 'default',
-        '#arguments' => ['arg2'],
-        '#embed' => TRUE,
-      ],
-    ];
-    return $build;
-  }
-
-}
diff --git a/core/modules/views/tests/modules/views_test_data/src/Plugin/views/field/FieldFormButtonTest.php b/core/modules/views/tests/modules/views_test_data/src/Plugin/views/field/FieldFormButtonTest.php
deleted file mode 100644
index 95a4a98..0000000
--- a/core/modules/views/tests/modules/views_test_data/src/Plugin/views/field/FieldFormButtonTest.php
+++ /dev/null
@@ -1,92 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\views_test_data\Plugin\views\field\FieldFormButtonTest.
- */
-
-namespace Drupal\views_test_data\Plugin\views\field;
-
-use Drupal\Core\Form\FormStateInterface;
-use Drupal\views\Plugin\views\field\FieldPluginBase;
-use Drupal\views\Plugin\views\field\UncacheableFieldHandlerTrait;
-use Drupal\views\ResultRow;
-
-/**
- * A handler to provide a field that is completely custom by the administrator.
- *
- * @ingroup views_field_handlers
- *
- * @ViewsField("field_form_button_test")
- */
-class FieldFormButtonTest extends FieldPluginBase {
-
-  use UncacheableFieldHandlerTrait;
-
-  /**
-   * {@inheritdoc}
-   */
-  public function getValue(ResultRow $row, $field = NULL) {
-    return '<!--form-item-' . $this->options['id'] . '--' . $row->index . '-->';
-  }
-
-  /**
-   * Form constructor for the views form.
-   *
-   * @param array $form
-   *   An associative array containing the structure of the form.
-   * @param \Drupal\Core\Form\FormStateInterface $form_state
-   *   The current state of the form.
-   */
-  public function viewsForm(&$form, FormStateInterface $form_state) {
-    // Make sure we do not accidentally cache this form.
-    $form['#cache']['max-age'] = 0;
-    // The view is empty, abort.
-    if (empty($this->view->result)) {
-      unset($form['actions']);
-      return;
-    }
-
-    $form[$this->options['id']]['#tree'] = TRUE;
-    foreach ($this->view->result as $row_index => $row) {
-      $form[$this->options['id']][$row_index] = [
-        '#type' => 'submit',
-        '#value' => t('Test Button'),
-        '#name' => 'test-button-' . $row_index,
-        '#test_button' => TRUE,
-        '#row_index' => $row_index,
-        '#attributes' => ['class' => ['test-button']],
-      ];
-    }
-  }
-
-  /**
-   * Submit handler for the views form.
-   *
-   * @param array $form
-   *   An associative array containing the structure of the form.
-   * @param \Drupal\Core\Form\FormStateInterface $form_state
-   *   The current state of the form.
-   */
-  public function viewsFormSubmit(&$form, FormStateInterface $form_state) {
-    $triggering_element = $form_state->getTriggeringElement();
-    if (!empty($triggering_element['#test_button'])) {
-      $row_index = $triggering_element['#row_index'];
-      $view_args = !empty($this->view->args) ? implode(', ', $this->view->args) : $this->t('no arguments');
-      drupal_set_message($this->t('The test button at row @row_index for @view_id (@display) View with args: @args was submitted.', [
-        '@display' => $this->view->current_display,
-        '@view_id' => $this->view->id(),
-        '@args' => $view_args,
-        '@row_index' => $row_index,
-      ]));
-    }
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function query() {
-    // Do nothing.
-  }
-
-}
diff --git a/core/modules/views/tests/modules/views_test_data/views_test_data.module b/core/modules/views/tests/modules/views_test_data/views_test_data.module
index f041651d..5853fd5 100644
--- a/core/modules/views/tests/modules/views_test_data/views_test_data.module
+++ b/core/modules/views/tests/modules/views_test_data/views_test_data.module
@@ -122,10 +122,3 @@ function views_test_data_test_pre_render_function($element) {
   $element['#markup'] = 'views_test_data_test_pre_render_function executed';
   return $element;
 }
-
-/**
- * Implements hook_form_BASE_FORM_ID_alter().
- */
-function views_test_data_form_views_form_test_form_multiple_default_alter(&$form, \Drupal\Core\Form\FormStateInterface $form_state, $form_id) {
-  drupal_set_message(t('Test base form ID with Views forms and arguments.'));
-}
diff --git a/core/modules/views/tests/modules/views_test_data/views_test_data.routing.yml b/core/modules/views/tests/modules/views_test_data/views_test_data.routing.yml
index cb0ad63..63d8ac8 100644
--- a/core/modules/views/tests/modules/views_test_data/views_test_data.routing.yml
+++ b/core/modules/views/tests/modules/views_test_data/views_test_data.routing.yml
@@ -11,11 +11,3 @@ views_test_data.element_embed:
     _form: '\Drupal\views_test_data\Form\ViewsTestDataElementEmbedForm'
   requirements:
     _access: 'TRUE'
-
-views_test_data.form_multiple:
-  path: '/views_test_form_multiple'
-  defaults:
-    _title: 'Test Views Form Multiple'
-    _controller: '\Drupal\views_test_data\Controller\ViewsTestFormMultipleController::testPage'
-  requirements:
-    _access: 'TRUE'
diff --git a/core/modules/views/tests/src/Unit/EntityViewsDataTest.php b/core/modules/views/tests/src/Unit/EntityViewsDataTest.php
index e6d8f9f..67771b5 100644
--- a/core/modules/views/tests/src/Unit/EntityViewsDataTest.php
+++ b/core/modules/views/tests/src/Unit/EntityViewsDataTest.php
@@ -94,7 +94,6 @@ protected function setUp() {
       'id' => 'entity_test',
       'label' => 'Entity test',
       'entity_keys' => [
-        'uuid' => 'uuid',
         'id' => 'id',
         'langcode' => 'langcode',
         'bundle' => 'type',
@@ -992,3 +991,4 @@ function t($string, array $args = []) {
     }
   }
 }
+
diff --git a/core/modules/views/tests/src/Unit/Plugin/area/ResultTest.php b/core/modules/views/tests/src/Unit/Plugin/area/ResultTest.php
index 0245e3f5..785028c 100644
--- a/core/modules/views/tests/src/Unit/Plugin/area/ResultTest.php
+++ b/core/modules/views/tests/src/Unit/Plugin/area/ResultTest.php
@@ -7,15 +7,9 @@
 
 namespace Drupal\Tests\views\Unit\Plugin\area;
 
-use Drupal\Core\Routing\RouteProviderInterface;
-use Drupal\Core\Session\AccountInterface;
 use Drupal\Tests\UnitTestCase;
-use Drupal\views\Entity\View;
-use Drupal\views\Plugin\views\pager\PagerPluginBase;
 use Drupal\views\ViewExecutable;
 use Drupal\views\Plugin\views\area\Result;
-use Drupal\views\ViewsData;
-use Prophecy\Argument;
 
 /**
  * @coversDefaultClass \Drupal\views\Plugin\views\area\Result
@@ -40,16 +34,22 @@ class ResultTest extends UnitTestCase {
   protected function setUp() {
     parent::setUp();
 
-    $storage = $this->prophesize(View::class);
-    $storage->label()->willReturn('ResultTest');
-    $storage->set(Argument::cetera())->willReturn(NULL);
-
-    $user = $this->prophesize(AccountInterface::class)->reveal();
-    $views_data = $this->prophesize(ViewsData::class)->reveal();
-    $route_provider = $this->prophesize(RouteProviderInterface::class)->reveal();
-    $this->view = new ViewExecutable($storage->reveal(), $user, $views_data, $route_provider);
-
-    $this->resultHandler = new Result([], 'result', []);
+    $storage = $this->getMockBuilder('Drupal\views\Entity\View')
+      ->disableOriginalConstructor()
+      ->setMethods(array('label'))
+      ->getMock();
+    $storage->expects($this->any())
+      ->method('label')
+      ->will($this->returnValue('ResultTest'));
+
+    $user = $this->getMock('Drupal\Core\Session\AccountInterface');
+    $views_data = $this->getMockBuilder('Drupal\views\ViewsData')
+      ->disableOriginalConstructor()
+      ->getMock();
+    $route_provider = $this->getMock('Drupal\Core\Routing\RouteProviderInterface');
+    $this->view = new ViewExecutable($storage, $user, $views_data, $route_provider);
+
+    $this->resultHandler = new Result(array(), 'result', array());
     $this->resultHandler->view = $this->view;
   }
 
@@ -121,15 +121,18 @@ public function providerTestResultArea() {
    *   The value to return from getItemsPerPage().
    */
   protected function setupViewPager($items_per_page = 0) {
-    $pager = $this->prophesize(PagerPluginBase::class);
-    $pager->getItemsPerPage()
-      ->willReturn($items_per_page)
-      ->shouldBeCalledTimes(1);
-    $pager->getCurrentPage()
-      ->willReturn(0)
-      ->shouldBeCalledTimes(1);
-
-    $this->view->pager = $pager->reveal();
+    $pager = $this->getMockBuilder('Drupal\views\Plugin\views\pager\PagerPluginBase')
+      ->disableOriginalConstructor()
+      ->setMethods(array('getItemsPerPage', 'getCurrentPage'))
+      ->getMock();
+    $pager->expects($this->once())
+      ->method('getItemsPerPage')
+      ->will($this->returnValue($items_per_page));
+    $pager->expects($this->once())
+      ->method('getCurrentPage')
+      ->will($this->returnValue(0));
+
+    $this->view->pager = $pager;
     $this->view->style_plugin = new \stdClass();
     $this->view->total_rows = 100;
     $this->view->result = array(1, 2, 3, 4, 5);
diff --git a/core/modules/views/views.install b/core/modules/views/views.install
index 37d03b6..d4af0ea 100644
--- a/core/modules/views/views.install
+++ b/core/modules/views/views.install
@@ -347,19 +347,3 @@ function views_update_8004() {
 /**
  * @} End of "addtogroup updates-8.0.x".
  */
-
-/**
- * @addtogroup updates-8.1.0
- * @{
- */
-
-/**
- * Clear views data cache.
- */
-function views_update_8005() {
-  // Empty update function to rebuild the views data.
-}
-
-/**
- * @} End of "addtogroup updates-8.1.0".
- */
diff --git a/core/modules/views_ui/images/arrow-active.png b/core/modules/views_ui/images/arrow-active.png
new file mode 100644
index 0000000..3bbd3c2
--- /dev/null
+++ b/core/modules/views_ui/images/arrow-active.png
@@ -0,0 +1,3 @@
+PNG
+
+   IHDR         ~   gAMA  OX2   tEXtSoftware Adobe ImageReadyqe<   EPLTEJJJRRRKKKLLLĺNNNdddOOOؓIIIgFN   zIDATxb bc0 AL      C  CTGL QFf1 0D *",@`@ L@] 2d@ `Ab@ 1l0 a	vЧ    IENDB`
\ No newline at end of file
diff --git a/core/modules/views_ui/images/close.png b/core/modules/views_ui/images/close.png
new file mode 100644
index 0000000..2af0da5
--- /dev/null
+++ b/core/modules/views_ui/images/close.png
@@ -0,0 +1,3 @@
+PNG
+
+   IHDR         a   tEXtSoftware Adobe ImageReadyqe<   IDATxڬSAȓg׊1F;Y"1eXǵF;tђLܱk?$3C)T Q&V-7/;tnap58S>dЩE:JdH?gd| \?    IENDB`
\ No newline at end of file
diff --git a/core/modules/views_ui/images/expanded-options.png b/core/modules/views_ui/images/expanded-options.png
new file mode 100644
index 0000000..b7b755c
--- /dev/null
+++ b/core/modules/views_ui/images/expanded-options.png
@@ -0,0 +1,3 @@
+PNG
+
+   IHDR         2   sBITO   IDAT10EmsLrs9+3s-YЪPU723 m7" DBڃ" |˲xѦiRW4M?Ǯs}|VQk=:tq43q,ܭ'u!"[}4    IENDB`
\ No newline at end of file
diff --git a/core/modules/views_ui/images/loading.gif b/core/modules/views_ui/images/loading.gif
new file mode 100644
index 0000000..2dbcd62
--- /dev/null
+++ b/core/modules/views_ui/images/loading.gif
@@ -0,0 +1,43 @@
+GIF89a0 0   ###'''(((---111555:::===CCCGGGKKKMMMQQQUUUZZZ^^^aaaggghhhmmmqqqwwwxxx{{{///333444>>>AAAEEEIIIOOORRRXXX```eeekkklllssszzz~~~&&&***,,,222666<<<JJJYYYrrrvvv|||...;;;HHHLLLPPPWWW\\\dddiii}}}%%%@@@DDDttt$$$+++777999]]]nnnuuuyyyFFFSSS___bbbppp)))                                                                                                                                                                                                                                                                  !NETSCAPE2.0   !-Made by Krasimira Nejcheva (www.loadinfo.net) ! 
+  ,    0 0  @pH,BApl: j vKf嚛X8kEz)Ï4wFD%}`%y	yP#/0)D3DG#0,C+}+B
+FD*k*D	ѽZƯ'CZؚ'NyҾ	Z0!M
+ѦNf< (Vra 5pEA(B@xxl;` ZD3̚HrQ÷p8HBH8"E"`P.PP0DMW@S Y/T @ p@@V^pPUDܸPp!maM-k!L㎜jp
+n 0HXfe+DO
+B B
+k!=1MUUs v=x y,T&L(!z6p` 7QoؿKw	q@,PX|&|X`t9Qy@ JIU 9E%@D | TO!  U %8MpP&и*<N@4@!Q4	B @Rs|c5!A6q ~A@_vЀu5	@h@A{F*K ! 
+  ,    0 0    56 JOOJCQ00TC;SQ<GGLT#4EAKTI8FJA57++$=CDARVVP94I,+MNϢSN	j@ŝ;'$=bhbJ4So W,AHb;46!a jtiE	' B@* 	Vp2@=(PrʍN=ܫT*G6R*%L &K@&)@ tQ	W߿) 
+4HHx;pcD'Mx1x>~@  1;d2 ;D@[ #/nҠ˪uW ٚhxHr·îݫWF?&9yk氅=x8<D%"I]6 '@$b@lPd@'9 ĉ<!!:T0ċC(Iyb0k@6x'=cID(n a:uJ ?(	c, FX4dIPv4HBlGA <YU@K(qi4TxV0YAhC6vmD=Չ ; D{G|z7Xث~J냆<kxl!5(Ew ;ѫ>Kj 7р.  ! 
+  ,    0 0   W WZZ<c##d<k,,+,k]'+,']W+We,eY`a[,d\cZci'jjJ;,_Wk0/#8ŎYcj'g8["СD4cwGh M|.ʡD: B&0NY:-0`xPP7t!|et3 ܳF̼GWt'Q3
+kmq4B"*PPƌL@8D.bbɒ"nW DWǅ 6ň2N5 1\
+n`hg$Oޢ56y̸ɂض
+1gxw\P[l"Fyg͟Cw#n徛_8^'`9m5Hٌ.Zc	yR~ p!e-&d-Ha,[< ? !Zt 9&	ab$
+r'(V;; A'2J."l '^&W4?$cl )X\L9ɕJfIbpa(]xC/8P$XL@)c^ Yx;,D8j	gAfJ@^z)^f8l$WJ(o  ;\c:_EEHЀE ! 
+  ,    0 0   HA W޼rÇcƌ8!j(
+?N$!#Ǔl҉?P,XAdKM*yOH-I;Ah!xEЛ	!O7'1&dA:$ 
+QB..q	O	UVrUrFIl'@k3RGŋ5`!N
+trf@y4]W47Lز%HF:Asf@w4jӸ>qP:z-	8Yܧ$+Cɩ4T(|ѓ`&,pۿOBQGw̡ZL!IWġ{`XA $TPTf1@M("wb}.!c$Rqr1x?DEI2ȤMōR" >b%_@2RD:n@r8! &6 
+9ys w(GXhLoa`7wr4LXQ@YqG
+)Gw*XL뮱A4jiȱ:;$ B-}hGr@`ȡJ;Cr]QGA,v0&ANzǭ pCWGms̑@A1u y(G_Jt2j3iuT,U;d u\AZAqlytD ! 
+  ,    0 0   HA h8ȰÆB!B3j$@ 5HD̀LtKQ9J /s`sOr2``JIS塂[|\8`F@6B!L@B̘0qdJ7ϖT	QRάlbUҥkv<Mx`F#YLw!B`XǂâY"͜7t !O}@1g 3":ڄ4.lQH6s7c< j<#	Y@rK#f<xe I&-{@_PQyt\!7 RD"+0X[T8>,  x+ Xh!-10`G=.B\B J% "F%b",~#(00Mb@th&
+#E*ڛ `i|$(L>EC!4$gp"^@iՑ~F é0p\F4PQF>)W>
+*]wƭ&[ڌG	ĢHF
+ji
+ў:FFQliĀ
+3;
+jH.{+
+.BU*:>4kA>ȩ,FlQ!7H#Hp7\@qCr'C<6@!ǐYʐG@B-҃A=P@ ! 
+  ,    0 0   H`AG =z䨡#JttNJwn ȱA9ƈcIǓ#)R$0:`RƘoDsaRdЀwzIIw<B9@ŋw^dul<<:Z	E<@+KJGF,xrqmJ`Bu!iNKz1CIr`#b3ёW=xZuI\윔A9sGRc#7$ΔtBtHt$ ͷtKd^8qrD"AWЃ820"&r2 Ʉ$B ~T!&+>'$(z ,v%5P#P Q.
+IG")>"^6NɖgؐfV0 <vE"	X@:	H	 $wh0F9*
+ c$S"t&wh# D&8x0X!U1UT
++t&xtZO: E'6|5Gj+6,kaBQxA0mtv@.5& drnEt4	VdB `&+IGp	'W'IB!O;EaxԀ&~pxBDWD9gS$XR$8<l"E0FH2QD\Azb'\=0o^II{ ! 
+  ,    0 0   HA `AxÇ4 A3D0j!>i@ǏG ɲ(崜	 ̏4H Orӣ5
+IhF,rD!ʁ9=p"?e Q7E9-CX{$8uX`ZրB5CjӪs r؋vB4VNv`Ea4Pڴ.$%܅G!40Ivc/~EѲAr{0֘]j H!/S5;|	5(s	FT?ܐ!Ƃn J`H|X`@fPHHX!ǒ%@" TS+2H}H c4jE8Ǝ0
+IFx(%(cif!b%2`_F !!YxQAHN	ȣxK]r	g!hPFal(+).h hAL`	2*F7.@B&C")/	Y:F{ls
+B@X0lIP	+0D&!D5a
+	T+n"|r@c~C
+
+4JB<e0j
+TnT 'BqzUh"GBbs{]02'hC=,0f5"$BfRö4 ! 
+  ,    0 0   HA ::ȰÆZ4h@Ë!Bdp:F2˂8>~L˛ v(sÅ#L)M
+h*  1XgH@NG_E#aY0Z^r5+)b&5ՆܺDp;ɷ1=
+Hp(aƍ>4k';YSFuCG^\MpU$nGk	jJT.i< (!K8<2@}Ztoy;>Cs&dD#C Â0p9R l0F4%R0`	Z8F  *xA@^x8.28~.fcJ<Ï@䅉DH=$I4y"W<СS(`he	zMe^y7za'Pm|^|F8eI$`g$ŢJ*f@ I'PQ(A@@&CpiBŨ	)pb"J	zĨxqi'g$e"&";Ey ,j `4\F-\@"A8 ĽM q@nj	'MpypoQ9t A4̰M8~A*!>4y1o񗸓DC927% C8M Bh@C`dH:"S@ ;
\ No newline at end of file
diff --git a/core/modules/views_ui/images/overridden.gif b/core/modules/views_ui/images/overridden.gif
new file mode 100644
index 0000000..b781191
--- /dev/null
+++ b/core/modules/views_ui/images/overridden.gif
@@ -0,0 +1,2 @@
+GIF89a	 	  赶Ƽ                                 !   ,    	 	  , %$	@1K#=A	 01
+D ;
\ No newline at end of file
diff --git a/core/modules/views_ui/images/status-active.gif b/core/modules/views_ui/images/status-active.gif
new file mode 100644
index 0000000..207e95c
--- /dev/null
+++ b/core/modules/views_ui/images/status-active.gif
@@ -0,0 +1,10 @@
+GIF89a       s{{5FZk؋ᵵｽ                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   !NETSCAPE2.0   !   ,       w @!` C4,@  1rذ@L`@&0xHrfCj\!g2=08f N\2Ď) 48և$*$` !   ,       ` 0aA *\( (p	z@ 
+=$`+HTiA(`  . p8
+00bOFoZ4hLQ\ !   ,       V pa`"ArX(Ѓ	N `:
+  CPD( E` B(g3#
+`pą> !   ,       a @!TH(PB  "0  ÄRЃ	 8p(Xdp0@b !8x$^T px!7*0  !   ,       b 0aA *\( (p``3^
+/ C(  `c N: Q 00@y@S3Appa@ !   ,       W pa`"A a' `Q   E	@.D 
+*	00A 66,w.`$I !   ,       ^ @ TH(PB  "0  Äx1C$pQ<2% PdPp` 0'4DXf	xr$ #/0Da !   ,       _ 0@ *\( (p``3^
+/ XA+Pq(A  
+XaL9q!2 !   ,       X pa`"A a' `Q <X@Dp G'  llH`NB ˒(:0  !   ,       b @!TH(PB  "0  ÄRx@ 	 8@ X)0$.$@6
+	XرD V0Cn<HT`@ !   ,       a 0aA *\( (p``#2xAb :  X 8@`Œ xP!B$n CƟ5l	Мv0  !   ,       X pa`"ArX '0,`@<< ,B bAMhX@ǅ<HSÅ0  ;
\ No newline at end of file
diff --git a/core/modules/views_ui/src/Tests/FilterUITest.php b/core/modules/views_ui/src/Tests/FilterUITest.php
index 6ed031b..1b1cc13 100644
--- a/core/modules/views_ui/src/Tests/FilterUITest.php
+++ b/core/modules/views_ui/src/Tests/FilterUITest.php
@@ -72,7 +72,7 @@ public function testFiltersUI() {
 
     $this->drupalGet('admin/structure/views/view/test_filter_groups');
 
-    $this->assertLink('Content: ID (= 1)', 0, 'Content: ID (= 1) link appears correctly.');
+    $this->assertLink('Content: Node ID (= 1)', 0, 'Content: Node ID (= 1) link appears correctly.');
 
     // Tests that we can create a new filter group from UI.
     $this->drupalGet('admin/structure/views/nojs/rearrange-filter/test_filter_groups/page');
@@ -95,33 +95,4 @@ public function testFiltersUI() {
     $this->assertNoRaw('<span>Group 3</span>', 'Group 3 has not been added yet.');
   }
 
-  /**
-   * Tests the identifier settings and restrictions.
-   */
-  public function testFilterIdentifier() {
-    $admin_user = $this->drupalCreateUser(array('administer views', 'administer site configuration'));
-    $this->drupalLogin($admin_user);
-    $path = 'admin/structure/views/nojs/handler/test_filter_in_operator_ui/default/filter/type';
-
-    // Set an empty identifier.
-    $edit = array(
-      'options[expose][identifier]' => '',
-    );
-    $this->drupalPostForm($path, $edit, t('Apply'));
-    $this->assertText('The identifier is required if the filter is exposed.');
-
-    // Set the identifier to 'value'.
-    $edit = array(
-      'options[expose][identifier]' => 'value',
-    );
-    $this->drupalPostForm($path, $edit, t('Apply'));
-    $this->assertText('This identifier is not allowed.');
-
-    // Set the identifier to a value with a restricted character.
-    $edit = array(
-      'options[expose][identifier]' => 'value value',
-    );
-    $this->drupalPostForm($path, $edit, t('Apply'));
-    $this->assertText('This identifier has illegal characters.');
-  }
 }
diff --git a/core/modules/views_ui/src/Tests/HandlerTest.php b/core/modules/views_ui/src/Tests/HandlerTest.php
index bc3e018..0394f10 100644
--- a/core/modules/views_ui/src/Tests/HandlerTest.php
+++ b/core/modules/views_ui/src/Tests/HandlerTest.php
@@ -245,9 +245,9 @@ public function testNoDuplicateFields() {
       $add_handler_url = 'admin/structure/views/nojs/add-handler/test_node_view/default/' . $handler_type;
       $this->drupalGet($add_handler_url);
 
-      $this->assertNoDuplicateField('ID', 'Content');
-      $this->assertNoDuplicateField('ID', 'Content revision');
-      $this->assertNoDuplicateField('Content type', 'Content');
+      $this->assertNoDuplicateField('Node ID', 'Content');
+      $this->assertNoDuplicateField('Node ID', 'Content revision');
+      $this->assertNoDuplicateField('Type', 'Content');
       $this->assertNoDuplicateField('UUID', 'Content');
       $this->assertNoDuplicateField('Revision ID', 'Content');
       $this->assertNoDuplicateField('Revision ID', 'Content revision');
diff --git a/core/modules/views_ui/src/Tests/TagTest.php b/core/modules/views_ui/src/Tests/TagTest.php
index ffb6077..b18ee98 100644
--- a/core/modules/views_ui/src/Tests/TagTest.php
+++ b/core/modules/views_ui/src/Tests/TagTest.php
@@ -10,7 +10,6 @@
 use Drupal\views\Tests\ViewKernelTestBase;
 use Drupal\views_ui\Controller\ViewsUIController;
 use Drupal\Component\Utility\Html;
-use Drupal\views\Entity\View;
 
 /**
  * Tests the views ui tagging functionality.
@@ -38,7 +37,7 @@ public function testViewsUiAutocompleteTag() {
       $suffix = $i % 2 ? 'odd' : 'even';
       $tag = 'autocomplete_tag_test_' . $suffix . $this->randomMachineName();
       $tags[] = $tag;
-      View::create(array('tag' => $tag, 'id' => $this->randomMachineName()))->save();
+      entity_create('view', array('tag' => $tag, 'id' => $this->randomMachineName()))->save();
     }
 
     // Make sure just ten results are returns.
diff --git a/core/phpcs.xml.dist b/core/phpcs.xml.dist
index cadf544..25abf71 100644
--- a/core/phpcs.xml.dist
+++ b/core/phpcs.xml.dist
@@ -19,6 +19,7 @@
     <exclude name="Drupal.Classes.UnusedUseStatement"/>
     <exclude name="Drupal.Commenting.ClassComment"/>
     <exclude name="Drupal.Commenting.DocComment"/>
+    <exclude name="Drupal.Commenting.FileComment"/>
     <exclude name="Drupal.Commenting.FunctionComment"/>
     <exclude name="Drupal.Commenting.HookComment"/>
     <exclude name="Drupal.Commenting.InlineComment"/>
diff --git a/core/profiles/standard/standard.install b/core/profiles/standard/standard.install
index 841c10b..744963a 100644
--- a/core/profiles/standard/standard.install
+++ b/core/profiles/standard/standard.install
@@ -6,7 +6,6 @@
 
 use Drupal\user\Entity\User;
 use Drupal\user\RoleInterface;
-use Drupal\shortcut\Entity\Shortcut;
 
 /**
  * Implements hook_install().
@@ -32,10 +31,6 @@ function standard_install() {
   $user->roles[] = 'administrator';
   $user->save();
 
-  // We install some menu links, so we have to rebuild the router, to ensure the
-  // menu links are valid.
-  \Drupal::service('router.builder')->rebuildIfNeeded();
-
   // Enable the Contact link in the footer menu.
   /** @var \Drupal\Core\Menu\MenuLinkManagerInterface $menu_link_manager */
   $menu_link_manager = \Drupal::service('plugin.manager.menu.link');
@@ -48,7 +43,7 @@ function standard_install() {
   user_role_grant_permissions(RoleInterface::AUTHENTICATED_ID, array('access shortcuts'));
 
   // Populate the default shortcut set.
-  $shortcut = Shortcut::create(array(
+  $shortcut = entity_create('shortcut', array(
     'shortcut_set' => 'default',
     'title' => t('Add content'),
     'weight' => -20,
@@ -56,7 +51,7 @@ function standard_install() {
   ));
   $shortcut->save();
 
-  $shortcut = Shortcut::create(array(
+  $shortcut = entity_create('shortcut', array(
     'shortcut_set' => 'default',
     'title' => t('All content'),
     'weight' => -19,
diff --git a/core/scripts/db-tools.php b/core/scripts/db-tools.php
index 476b422..316c62f 100644
--- a/core/scripts/db-tools.php
+++ b/core/scripts/db-tools.php
@@ -1,11 +1,6 @@
 #!/usr/bin/env php
 <?php
 
-/**
- * @file
- * A command line application to import a database generation script.
- */
-
 use Drupal\Core\Command\DbToolsApplication;
 use Drupal\Core\DrupalKernel;
 use Drupal\Core\Site\Settings;
diff --git a/core/scripts/dump-database-d8-mysql.php b/core/scripts/dump-database-d8-mysql.php
old mode 100644
new mode 100755
index 73f7b94..c4f7507
--- a/core/scripts/dump-database-d8-mysql.php
+++ b/core/scripts/dump-database-d8-mysql.php
@@ -1,11 +1,6 @@
 #!/usr/bin/env php
 <?php
 
-/**
- * @file
- * A command line application to dump a database to a generation script.
- */
-
 use Drupal\Core\Command\DbDumpApplication;
 use Drupal\Core\DrupalKernel;
 use Drupal\Core\Site\Settings;
diff --git a/core/scripts/generate-proxy-class.php b/core/scripts/generate-proxy-class.php
index 8eeb663..d5f0e43 100644
--- a/core/scripts/generate-proxy-class.php
+++ b/core/scripts/generate-proxy-class.php
@@ -1,11 +1,6 @@
 #!/usr/bin/env php
 <?php
 
-/**
- * @file
- * A command line application to generate proxy classes.
- */
-
 use Drupal\Core\Command\GenerateProxyClassApplication;
 use Drupal\Core\DrupalKernel;
 use Drupal\Core\ProxyBuilder\ProxyBuilder;
diff --git a/core/tests/Drupal/KernelTests/Core/Cache/CacheCollectorTest.php b/core/tests/Drupal/KernelTests/Core/Cache/CacheCollectorTest.php
index ff2bf6a..c05d630 100644
--- a/core/tests/Drupal/KernelTests/Core/Cache/CacheCollectorTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Cache/CacheCollectorTest.php
@@ -20,6 +20,19 @@ class CacheCollectorTest extends KernelTestBase {
   /**
    * {@inheritdoc}
    */
+  public static $modules = ['system'];
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+    $this->installSchema('system', ['semaphore']);
+  }
+
+  /**
+   * {@inheritdoc}
+   */
   public function register(ContainerBuilder $container) {
     parent::register($container);
     // Change container to database cache backends.
diff --git a/core/tests/Drupal/KernelTests/Core/Path/AliasStorageTest.php b/core/tests/Drupal/KernelTests/Core/Path/AliasStorageTest.php
index 17084f5..98180e3 100644
--- a/core/tests/Drupal/KernelTests/Core/Path/AliasStorageTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Path/AliasStorageTest.php
@@ -30,6 +30,7 @@ class AliasStorageTest extends KernelTestBase {
   protected function setUp() {
     parent::setUp();
 
+    $this->installSchema('system', 'url_alias');
     $this->storage = $this->container->get('path.alias_storage');
   }
 
diff --git a/core/tests/Drupal/KernelTests/RequestProcessing/RedirectOnExceptionTest.php b/core/tests/Drupal/KernelTests/RequestProcessing/RedirectOnExceptionTest.php
index f194d57..4c7a686 100644
--- a/core/tests/Drupal/KernelTests/RequestProcessing/RedirectOnExceptionTest.php
+++ b/core/tests/Drupal/KernelTests/RequestProcessing/RedirectOnExceptionTest.php
@@ -29,7 +29,7 @@ class RedirectOnExceptionTest extends KernelTestBase {
   protected function setUp() {
     parent::setUp();
 
-    $this->installSchema('system', ['router']);
+    $this->installSchema('system', ['router', 'url_alias']);
     \Drupal::service('router.builder')->rebuild();
   }
 
diff --git a/core/tests/Drupal/Tests/Component/Assertion/InspectorTest.php b/core/tests/Drupal/Tests/Component/Assertion/InspectorTest.php
index 6042b6f..9075128 100644
--- a/core/tests/Drupal/Tests/Component/Assertion/InspectorTest.php
+++ b/core/tests/Drupal/Tests/Component/Assertion/InspectorTest.php
@@ -11,7 +11,7 @@
 
 /**
  * @coversDefaultClass \Drupal\Component\Assertion\Inspector
- * @group Assertion
+ * @group Inspector
  */
 class InspectorTest extends PHPUnit_Framework_TestCase {
 
diff --git a/core/tests/Drupal/Tests/Component/Transliteration/PhpTransliterationTest.php b/core/tests/Drupal/Tests/Component/Transliteration/PhpTransliterationTest.php
index 470d255..de7f428 100644
--- a/core/tests/Drupal/Tests/Component/Transliteration/PhpTransliterationTest.php
+++ b/core/tests/Drupal/Tests/Component/Transliteration/PhpTransliterationTest.php
@@ -118,7 +118,7 @@ public function providerTestPhpTransliteration() {
     // http://www.unicode.org/charts/PDF/U1400.pdf
     $four_byte = html_entity_decode('&#x1411;', ENT_NOQUOTES, 'UTF-8');
     // These are two Gothic alphabet letters. See
-    // http://wikipedia.org/wiki/Gothic_alphabet
+    // http://en.wikipedia.org/wiki/Gothic_alphabet
     // They are not in our tables, but should at least give us '?' (unknown).
     $five_byte = html_entity_decode('&#x10330;&#x10338;', ENT_NOQUOTES, 'UTF-8');
 
diff --git a/core/tests/Drupal/Tests/Component/Utility/RectangleTest.php b/core/tests/Drupal/Tests/Component/Utility/RectangleTest.php
deleted file mode 100644
index bb01113..0000000
--- a/core/tests/Drupal/Tests/Component/Utility/RectangleTest.php
+++ /dev/null
@@ -1,4333 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\Tests\Component\Utility\RectangleTest.
- */
-
-namespace Drupal\Tests\Component\Utility;
-
-use Drupal\Component\Utility\Rectangle;
-use Drupal\Tests\UnitTestCase;
-
-/**
- * @coversDefaultClass \Drupal\Component\Utility\Rectangle
- * @group Image
- */
-class RectangleTest extends UnitTestCase {
-
-  /**
-   * Tests wrong rectangle width.
-   *
-   * @covers ::rotate
-   *
-   * @expectedException \InvalidArgumentException
-   */
-  public function testWrongWidth() {
-    $rect = new Rectangle(-40, 20);
-  }
-
-  /**
-   * Tests wrong rectangle height.
-   *
-   * @covers ::rotate
-   *
-   * @expectedException \InvalidArgumentException
-   */
-  public function testWrongHeight() {
-    $rect = new Rectangle(40, 0);
-  }
-
-  /**
-   * Tests getting rectangle dimensions after a rotation operation.
-   *
-   * @param int $width
-   *   The width of the rectangle.
-   * @param int $height
-   *   The height of the rectangle.
-   * @param float $angle
-   *   The angle for rotation.
-   * @param int $exp_width
-   *   The expected width of the rotated rectangle.
-   * @param int $exp_height
-   *   The expected height of the rotated rectangle.
-   *
-   * @covers ::rotate
-   * @covers ::getBoundingWidth
-   * @covers ::getBoundingHeight
-   *
-   * @dataProvider providerPhp55RotateDimensions
-   */
-  public function testRotateDimensions($width, $height, $angle, $exp_width, $exp_height) {
-    $rect = new Rectangle($width, $height);
-    $rect->rotate($angle);
-    $this->assertEquals($exp_width, $rect->getBoundingWidth());
-    $this->assertEquals($exp_height, $rect->getBoundingHeight());
-  }
-
-  /**
-   * Provides data for image dimension rotation tests.
-   *
-   * This dataset sample was generated by running on PHP 5.5 the function below
-   * - first, for all integer rotation angles (-360 to 360) on a rectangle
-   *   40x20;
-   * - second, for 500 random float rotation angle in the range -360 to 360 on
-   *   a rectangle 40x20;
-   * - third, on 1000 rectangles of random WxH rotated to a random float angle
-   *   in the range -360 to 360
-   * - fourth, on 2000 rectangles of random WxH rotated to a random integer
-   *   angle multiple of 30 degrees in the range -360 to 360 (which is the most
-   *   tricky case).
-   * Using the GD toolkit operations gives us true data coming from the GD
-   * library that can be used to match against the Rectangle class under test.
-   * @code
-   *   protected function rotateResults($width, $height, $angle, &$new_width, &$new_height) {
-   *     $image = \Drupal::service('image.factory')->get(NULL, 'gd');
-   *     $image->createNew($width, $height);
-   *     $old_res = $image->getToolkit()->getResource();
-   *     $image->rotate($angle);
-   *     $new_width = $image->getWidth();
-   *     $new_height = $image->getHeight();
-   *     if (is_resource($old_res)) {
-   *       imagedestroy($old_res);
-   *     }
-   *   }
-   * @endcode
-   *
-   * @return array[]
-   *   A simple array of simple arrays, each having the following elements:
-   *   - original image width
-   *   - original image height
-   *   - rotation angle in degrees
-   *   - expected image width after rotation
-   *   - expected image height after rotation
-   *
-   * @see testRotateDimensions()
-   */
-  public function providerPhp55RotateDimensions() {
-    return [
-      [ 40, 20, -360, 40, 20 ],
-      [ 40, 20, -359, 39, 20 ],
-      [ 40, 20, -358, 40, 21 ],
-      [ 40, 20, -357, 40, 22 ],
-      [ 40, 20, -356, 40, 22 ],
-      [ 40, 20, -355, 41, 23 ],
-      [ 40, 20, -354, 41, 24 ],
-      [ 40, 20, -353, 41, 24 ],
-      [ 40, 20, -352, 42, 25 ],
-      [ 40, 20, -351, 42, 26 ],
-      [ 40, 20, -350, 42, 26 ],
-      [ 40, 20, -349, 43, 27 ],
-      [ 40, 20, -348, 43, 28 ],
-      [ 40, 20, -347, 42, 27 ],
-      [ 40, 20, -346, 43, 28 ],
-      [ 40, 20, -345, 43, 29 ],
-      [ 40, 20, -344, 44, 30 ],
-      [ 40, 20, -343, 44, 30 ],
-      [ 40, 20, -342, 44, 31 ],
-      [ 40, 20, -341, 44, 32 ],
-      [ 40, 20, -340, 44, 32 ],
-      [ 40, 20, -339, 44, 33 ],
-      [ 40, 20, -338, 44, 33 ],
-      [ 40, 20, -337, 44, 33 ],
-      [ 40, 20, -336, 44, 34 ],
-      [ 40, 20, -335, 44, 34 ],
-      [ 40, 20, -334, 44, 35 ],
-      [ 40, 20, -333, 44, 36 ],
-      [ 40, 20, -332, 44, 36 ],
-      [ 40, 20, -331, 44, 36 ],
-      [ 40, 20, -330, 44, 36 ],
-      [ 40, 20, -329, 44, 37 ],
-      [ 40, 20, -328, 44, 38 ],
-      [ 40, 20, -327, 44, 38 ],
-      [ 40, 20, -326, 44, 39 ],
-      [ 40, 20, -325, 43, 38 ],
-      [ 40, 20, -324, 44, 39 ],
-      [ 40, 20, -323, 43, 40 ],
-      [ 40, 20, -322, 43, 40 ],
-      [ 40, 20, -321, 44, 41 ],
-      [ 40, 20, -320, 43, 40 ],
-      [ 40, 20, -319, 43, 41 ],
-      [ 40, 20, -318, 42, 41 ],
-      [ 40, 20, -317, 43, 42 ],
-      [ 40, 20, -316, 42, 41 ],
-      [ 40, 20, -315, 42, 42 ],
-      [ 40, 20, -314, 41, 42 ],
-      [ 40, 20, -313, 42, 43 ],
-      [ 40, 20, -312, 41, 42 ],
-      [ 40, 20, -311, 41, 43 ],
-      [ 40, 20, -310, 40, 43 ],
-      [ 40, 20, -309, 41, 44 ],
-      [ 40, 20, -308, 40, 43 ],
-      [ 40, 20, -307, 40, 43 ],
-      [ 40, 20, -306, 39, 44 ],
-      [ 40, 20, -305, 38, 43 ],
-      [ 40, 20, -304, 39, 44 ],
-      [ 40, 20, -303, 38, 44 ],
-      [ 40, 20, -302, 38, 44 ],
-      [ 40, 20, -301, 37, 44 ],
-      [ 40, 20, -300, 36, 44 ],
-      [ 40, 20, -299, 36, 44 ],
-      [ 40, 20, -298, 36, 44 ],
-      [ 40, 20, -297, 36, 44 ],
-      [ 40, 20, -296, 35, 44 ],
-      [ 40, 20, -295, 34, 44 ],
-      [ 40, 20, -294, 34, 44 ],
-      [ 40, 20, -293, 33, 44 ],
-      [ 40, 20, -292, 33, 44 ],
-      [ 40, 20, -291, 33, 44 ],
-      [ 40, 20, -290, 32, 44 ],
-      [ 40, 20, -289, 32, 44 ],
-      [ 40, 20, -288, 31, 44 ],
-      [ 40, 20, -287, 30, 44 ],
-      [ 40, 20, -286, 30, 44 ],
-      [ 40, 20, -285, 29, 43 ],
-      [ 40, 20, -284, 28, 43 ],
-      [ 40, 20, -283, 27, 42 ],
-      [ 40, 20, -282, 28, 43 ],
-      [ 40, 20, -281, 27, 43 ],
-      [ 40, 20, -280, 26, 42 ],
-      [ 40, 20, -279, 26, 42 ],
-      [ 40, 20, -278, 25, 42 ],
-      [ 40, 20, -277, 24, 41 ],
-      [ 40, 20, -276, 24, 41 ],
-      [ 40, 20, -275, 23, 41 ],
-      [ 40, 20, -274, 22, 40 ],
-      [ 40, 20, -273, 22, 40 ],
-      [ 40, 20, -272, 21, 40 ],
-      [ 40, 20, -271, 20, 39 ],
-      [ 40, 20, -270, 20, 40 ],
-      [ 40, 20, -269, 20, 39 ],
-      [ 40, 20, -268, 21, 39 ],
-      [ 40, 20, -267, 22, 39 ],
-      [ 40, 20, -266, 22, 39 ],
-      [ 40, 20, -265, 23, 40 ],
-      [ 40, 20, -264, 24, 40 ],
-      [ 40, 20, -263, 24, 40 ],
-      [ 40, 20, -262, 25, 41 ],
-      [ 40, 20, -261, 26, 41 ],
-      [ 40, 20, -260, 26, 41 ],
-      [ 40, 20, -259, 27, 42 ],
-      [ 40, 20, -258, 28, 42 ],
-      [ 40, 20, -257, 27, 41 ],
-      [ 40, 20, -256, 28, 42 ],
-      [ 40, 20, -255, 29, 42 ],
-      [ 40, 20, -254, 30, 43 ],
-      [ 40, 20, -253, 30, 43 ],
-      [ 40, 20, -252, 31, 43 ],
-      [ 40, 20, -251, 32, 43 ],
-      [ 40, 20, -250, 32, 43 ],
-      [ 40, 20, -249, 33, 43 ],
-      [ 40, 20, -248, 33, 43 ],
-      [ 40, 20, -247, 33, 43 ],
-      [ 40, 20, -246, 34, 43 ],
-      [ 40, 20, -245, 34, 43 ],
-      [ 40, 20, -244, 35, 43 ],
-      [ 40, 20, -243, 36, 43 ],
-      [ 40, 20, -242, 36, 43 ],
-      [ 40, 20, -241, 36, 43 ],
-      [ 40, 20, -240, 36, 43 ],
-      [ 40, 20, -239, 37, 43 ],
-      [ 40, 20, -238, 38, 43 ],
-      [ 40, 20, -237, 38, 43 ],
-      [ 40, 20, -236, 39, 43 ],
-      [ 40, 20, -235, 38, 42 ],
-      [ 40, 20, -234, 39, 43 ],
-      [ 40, 20, -233, 40, 42 ],
-      [ 40, 20, -232, 40, 42 ],
-      [ 40, 20, -231, 41, 43 ],
-      [ 40, 20, -230, 40, 42 ],
-      [ 40, 20, -229, 41, 42 ],
-      [ 40, 20, -228, 41, 41 ],
-      [ 40, 20, -227, 42, 42 ],
-      [ 40, 20, -226, 41, 41 ],
-      [ 40, 20, -225, 42, 41 ],
-      [ 40, 20, -224, 42, 40 ],
-      [ 40, 20, -223, 43, 41 ],
-      [ 40, 20, -222, 42, 40 ],
-      [ 40, 20, -221, 43, 40 ],
-      [ 40, 20, -220, 43, 39 ],
-      [ 40, 20, -219, 44, 40 ],
-      [ 40, 20, -218, 43, 39 ],
-      [ 40, 20, -217, 43, 39 ],
-      [ 40, 20, -216, 44, 38 ],
-      [ 40, 20, -215, 43, 37 ],
-      [ 40, 20, -214, 44, 38 ],
-      [ 40, 20, -213, 44, 37 ],
-      [ 40, 20, -212, 44, 37 ],
-      [ 40, 20, -211, 44, 36 ],
-      [ 40, 20, -210, 44, 35 ],
-      [ 40, 20, -209, 44, 35 ],
-      [ 40, 20, -208, 44, 35 ],
-      [ 40, 20, -207, 44, 35 ],
-      [ 40, 20, -206, 44, 34 ],
-      [ 40, 20, -205, 44, 33 ],
-      [ 40, 20, -204, 44, 33 ],
-      [ 40, 20, -203, 44, 32 ],
-      [ 40, 20, -202, 44, 32 ],
-      [ 40, 20, -201, 44, 32 ],
-      [ 40, 20, -200, 44, 31 ],
-      [ 40, 20, -199, 44, 31 ],
-      [ 40, 20, -198, 44, 30 ],
-      [ 40, 20, -197, 44, 29 ],
-      [ 40, 20, -196, 44, 29 ],
-      [ 40, 20, -195, 43, 28 ],
-      [ 40, 20, -194, 43, 27 ],
-      [ 40, 20, -193, 42, 26 ],
-      [ 40, 20, -192, 43, 27 ],
-      [ 40, 20, -191, 43, 26 ],
-      [ 40, 20, -190, 42, 25 ],
-      [ 40, 20, -189, 42, 25 ],
-      [ 40, 20, -188, 42, 24 ],
-      [ 40, 20, -187, 41, 23 ],
-      [ 40, 20, -186, 41, 23 ],
-      [ 40, 20, -185, 41, 22 ],
-      [ 40, 20, -184, 40, 21 ],
-      [ 40, 20, -183, 40, 21 ],
-      [ 40, 20, -182, 40, 20 ],
-      [ 40, 20, -181, 39, 19 ],
-      [ 40, 20, -180, 40, 20 ],
-      [ 40, 20, -179, 39, 19 ],
-      [ 40, 20, -178, 39, 20 ],
-      [ 40, 20, -177, 39, 21 ],
-      [ 40, 20, -176, 39, 21 ],
-      [ 40, 20, -175, 40, 22 ],
-      [ 40, 20, -174, 40, 23 ],
-      [ 40, 20, -173, 40, 23 ],
-      [ 40, 20, -172, 41, 24 ],
-      [ 40, 20, -171, 41, 25 ],
-      [ 40, 20, -170, 41, 25 ],
-      [ 40, 20, -169, 42, 26 ],
-      [ 40, 20, -168, 42, 27 ],
-      [ 40, 20, -167, 41, 26 ],
-      [ 40, 20, -166, 42, 27 ],
-      [ 40, 20, -165, 42, 28 ],
-      [ 40, 20, -164, 43, 29 ],
-      [ 40, 20, -163, 43, 29 ],
-      [ 40, 20, -162, 43, 30 ],
-      [ 40, 20, -161, 43, 31 ],
-      [ 40, 20, -160, 43, 31 ],
-      [ 40, 20, -159, 43, 32 ],
-      [ 40, 20, -158, 43, 32 ],
-      [ 40, 20, -157, 43, 32 ],
-      [ 40, 20, -156, 43, 33 ],
-      [ 40, 20, -155, 43, 33 ],
-      [ 40, 20, -154, 43, 34 ],
-      [ 40, 20, -153, 43, 35 ],
-      [ 40, 20, -152, 43, 35 ],
-      [ 40, 20, -151, 43, 35 ],
-      [ 40, 20, -150, 43, 36 ],
-      [ 40, 20, -149, 43, 36 ],
-      [ 40, 20, -148, 43, 37 ],
-      [ 40, 20, -147, 43, 37 ],
-      [ 40, 20, -146, 43, 38 ],
-      [ 40, 20, -145, 42, 37 ],
-      [ 40, 20, -144, 43, 38 ],
-      [ 40, 20, -143, 42, 39 ],
-      [ 40, 20, -142, 42, 39 ],
-      [ 40, 20, -141, 43, 40 ],
-      [ 40, 20, -140, 42, 39 ],
-      [ 40, 20, -139, 42, 40 ],
-      [ 40, 20, -138, 41, 40 ],
-      [ 40, 20, -137, 42, 41 ],
-      [ 40, 20, -136, 41, 40 ],
-      [ 40, 20, -135, 41, 41 ],
-      [ 40, 20, -134, 40, 41 ],
-      [ 40, 20, -133, 41, 42 ],
-      [ 40, 20, -132, 40, 41 ],
-      [ 40, 20, -131, 40, 42 ],
-      [ 40, 20, -130, 39, 42 ],
-      [ 40, 20, -129, 40, 43 ],
-      [ 40, 20, -128, 39, 42 ],
-      [ 40, 20, -127, 39, 42 ],
-      [ 40, 20, -126, 38, 43 ],
-      [ 40, 20, -125, 37, 42 ],
-      [ 40, 20, -124, 38, 43 ],
-      [ 40, 20, -123, 37, 43 ],
-      [ 40, 20, -122, 37, 43 ],
-      [ 40, 20, -121, 36, 43 ],
-      [ 40, 20, -120, 36, 43 ],
-      [ 40, 20, -119, 35, 43 ],
-      [ 40, 20, -118, 35, 43 ],
-      [ 40, 20, -117, 35, 43 ],
-      [ 40, 20, -116, 34, 43 ],
-      [ 40, 20, -115, 33, 43 ],
-      [ 40, 20, -114, 33, 43 ],
-      [ 40, 20, -113, 32, 43 ],
-      [ 40, 20, -112, 32, 43 ],
-      [ 40, 20, -111, 32, 43 ],
-      [ 40, 20, -110, 31, 43 ],
-      [ 40, 20, -109, 31, 43 ],
-      [ 40, 20, -108, 30, 43 ],
-      [ 40, 20, -107, 29, 43 ],
-      [ 40, 20, -106, 29, 43 ],
-      [ 40, 20, -105, 28, 42 ],
-      [ 40, 20, -104, 27, 42 ],
-      [ 40, 20, -103, 26, 41 ],
-      [ 40, 20, -102, 27, 42 ],
-      [ 40, 20, -101, 26, 42 ],
-      [ 40, 20, -100, 25, 41 ],
-      [ 40, 20, -99, 25, 41 ],
-      [ 40, 20, -98, 24, 41 ],
-      [ 40, 20, -97, 23, 40 ],
-      [ 40, 20, -96, 23, 40 ],
-      [ 40, 20, -95, 22, 40 ],
-      [ 40, 20, -94, 21, 39 ],
-      [ 40, 20, -93, 21, 39 ],
-      [ 40, 20, -92, 20, 39 ],
-      [ 40, 20, -91, 19, 39 ],
-      [ 40, 20, -90, 20, 40 ],
-      [ 40, 20, -89, 19, 39 ],
-      [ 40, 20, -88, 20, 40 ],
-      [ 40, 20, -87, 21, 40 ],
-      [ 40, 20, -86, 21, 40 ],
-      [ 40, 20, -85, 22, 41 ],
-      [ 40, 20, -84, 23, 41 ],
-      [ 40, 20, -83, 23, 41 ],
-      [ 40, 20, -82, 24, 42 ],
-      [ 40, 20, -81, 25, 42 ],
-      [ 40, 20, -80, 25, 42 ],
-      [ 40, 20, -79, 26, 43 ],
-      [ 40, 20, -78, 27, 43 ],
-      [ 40, 20, -77, 26, 42 ],
-      [ 40, 20, -76, 27, 43 ],
-      [ 40, 20, -75, 28, 43 ],
-      [ 40, 20, -74, 29, 44 ],
-      [ 40, 20, -73, 29, 44 ],
-      [ 40, 20, -72, 30, 44 ],
-      [ 40, 20, -71, 31, 44 ],
-      [ 40, 20, -70, 31, 44 ],
-      [ 40, 20, -69, 32, 44 ],
-      [ 40, 20, -68, 32, 44 ],
-      [ 40, 20, -67, 32, 44 ],
-      [ 40, 20, -66, 33, 44 ],
-      [ 40, 20, -65, 33, 44 ],
-      [ 40, 20, -64, 34, 44 ],
-      [ 40, 20, -63, 35, 44 ],
-      [ 40, 20, -62, 35, 44 ],
-      [ 40, 20, -61, 35, 44 ],
-      [ 40, 20, -60, 35, 44 ],
-      [ 40, 20, -59, 36, 44 ],
-      [ 40, 20, -58, 37, 44 ],
-      [ 40, 20, -57, 37, 44 ],
-      [ 40, 20, -56, 38, 44 ],
-      [ 40, 20, -55, 37, 43 ],
-      [ 40, 20, -54, 38, 44 ],
-      [ 40, 20, -53, 39, 43 ],
-      [ 40, 20, -52, 39, 43 ],
-      [ 40, 20, -51, 40, 44 ],
-      [ 40, 20, -50, 39, 43 ],
-      [ 40, 20, -49, 40, 43 ],
-      [ 40, 20, -48, 40, 42 ],
-      [ 40, 20, -47, 41, 43 ],
-      [ 40, 20, -46, 40, 42 ],
-      [ 40, 20, -45, 41, 42 ],
-      [ 40, 20, -44, 41, 41 ],
-      [ 40, 20, -43, 42, 42 ],
-      [ 40, 20, -42, 41, 41 ],
-      [ 40, 20, -41, 42, 41 ],
-      [ 40, 20, -40, 42, 40 ],
-      [ 40, 20, -39, 43, 41 ],
-      [ 40, 20, -38, 42, 40 ],
-      [ 40, 20, -37, 42, 40 ],
-      [ 40, 20, -36, 43, 39 ],
-      [ 40, 20, -35, 42, 38 ],
-      [ 40, 20, -34, 43, 39 ],
-      [ 40, 20, -33, 43, 38 ],
-      [ 40, 20, -32, 43, 38 ],
-      [ 40, 20, -31, 43, 37 ],
-      [ 40, 20, -30, 43, 37 ],
-      [ 40, 20, -29, 43, 36 ],
-      [ 40, 20, -28, 43, 36 ],
-      [ 40, 20, -27, 43, 36 ],
-      [ 40, 20, -26, 43, 35 ],
-      [ 40, 20, -25, 43, 34 ],
-      [ 40, 20, -24, 43, 34 ],
-      [ 40, 20, -23, 43, 33 ],
-      [ 40, 20, -22, 43, 33 ],
-      [ 40, 20, -21, 43, 33 ],
-      [ 40, 20, -20, 43, 32 ],
-      [ 40, 20, -19, 43, 32 ],
-      [ 40, 20, -18, 43, 31 ],
-      [ 40, 20, -17, 43, 30 ],
-      [ 40, 20, -16, 43, 30 ],
-      [ 40, 20, -15, 42, 29 ],
-      [ 40, 20, -14, 42, 28 ],
-      [ 40, 20, -13, 41, 27 ],
-      [ 40, 20, -12, 42, 28 ],
-      [ 40, 20, -11, 42, 27 ],
-      [ 40, 20, -10, 41, 26 ],
-      [ 40, 20, -9, 41, 26 ],
-      [ 40, 20, -8, 41, 25 ],
-      [ 40, 20, -7, 40, 24 ],
-      [ 40, 20, -6, 40, 24 ],
-      [ 40, 20, -5, 40, 23 ],
-      [ 40, 20, -4, 39, 22 ],
-      [ 40, 20, -3, 39, 22 ],
-      [ 40, 20, -2, 39, 21 ],
-      [ 40, 20, -1, 39, 20 ],
-      [ 40, 20, 0, 40, 20 ],
-      [ 40, 20, 1, 39, 20 ],
-      [ 40, 20, 2, 40, 21 ],
-      [ 40, 20, 3, 40, 22 ],
-      [ 40, 20, 4, 40, 22 ],
-      [ 40, 20, 5, 41, 23 ],
-      [ 40, 20, 6, 41, 24 ],
-      [ 40, 20, 7, 41, 24 ],
-      [ 40, 20, 8, 42, 25 ],
-      [ 40, 20, 9, 42, 26 ],
-      [ 40, 20, 10, 42, 26 ],
-      [ 40, 20, 11, 43, 27 ],
-      [ 40, 20, 12, 43, 28 ],
-      [ 40, 20, 13, 42, 27 ],
-      [ 40, 20, 14, 43, 28 ],
-      [ 40, 20, 15, 43, 29 ],
-      [ 40, 20, 16, 44, 30 ],
-      [ 40, 20, 17, 44, 30 ],
-      [ 40, 20, 18, 44, 31 ],
-      [ 40, 20, 19, 44, 32 ],
-      [ 40, 20, 20, 44, 32 ],
-      [ 40, 20, 21, 44, 33 ],
-      [ 40, 20, 22, 44, 33 ],
-      [ 40, 20, 23, 44, 33 ],
-      [ 40, 20, 24, 44, 34 ],
-      [ 40, 20, 25, 44, 34 ],
-      [ 40, 20, 26, 44, 35 ],
-      [ 40, 20, 27, 44, 36 ],
-      [ 40, 20, 28, 44, 36 ],
-      [ 40, 20, 29, 44, 36 ],
-      [ 40, 20, 30, 44, 36 ],
-      [ 40, 20, 31, 44, 37 ],
-      [ 40, 20, 32, 44, 38 ],
-      [ 40, 20, 33, 44, 38 ],
-      [ 40, 20, 34, 44, 39 ],
-      [ 40, 20, 35, 43, 38 ],
-      [ 40, 20, 36, 44, 39 ],
-      [ 40, 20, 37, 43, 40 ],
-      [ 40, 20, 38, 43, 40 ],
-      [ 40, 20, 39, 44, 41 ],
-      [ 40, 20, 40, 43, 40 ],
-      [ 40, 20, 41, 43, 41 ],
-      [ 40, 20, 42, 42, 41 ],
-      [ 40, 20, 43, 43, 42 ],
-      [ 40, 20, 44, 42, 41 ],
-      [ 40, 20, 45, 42, 42 ],
-      [ 40, 20, 46, 41, 42 ],
-      [ 40, 20, 47, 42, 43 ],
-      [ 40, 20, 48, 41, 42 ],
-      [ 40, 20, 49, 41, 43 ],
-      [ 40, 20, 50, 40, 43 ],
-      [ 40, 20, 51, 41, 44 ],
-      [ 40, 20, 52, 40, 43 ],
-      [ 40, 20, 53, 40, 43 ],
-      [ 40, 20, 54, 39, 44 ],
-      [ 40, 20, 55, 38, 43 ],
-      [ 40, 20, 56, 39, 44 ],
-      [ 40, 20, 57, 38, 44 ],
-      [ 40, 20, 58, 38, 44 ],
-      [ 40, 20, 59, 37, 44 ],
-      [ 40, 20, 60, 36, 44 ],
-      [ 40, 20, 61, 36, 44 ],
-      [ 40, 20, 62, 36, 44 ],
-      [ 40, 20, 63, 36, 44 ],
-      [ 40, 20, 64, 35, 44 ],
-      [ 40, 20, 65, 34, 44 ],
-      [ 40, 20, 66, 34, 44 ],
-      [ 40, 20, 67, 33, 44 ],
-      [ 40, 20, 68, 33, 44 ],
-      [ 40, 20, 69, 33, 44 ],
-      [ 40, 20, 70, 32, 44 ],
-      [ 40, 20, 71, 32, 44 ],
-      [ 40, 20, 72, 31, 44 ],
-      [ 40, 20, 73, 30, 44 ],
-      [ 40, 20, 74, 30, 44 ],
-      [ 40, 20, 75, 29, 43 ],
-      [ 40, 20, 76, 28, 43 ],
-      [ 40, 20, 77, 27, 42 ],
-      [ 40, 20, 78, 28, 43 ],
-      [ 40, 20, 79, 27, 43 ],
-      [ 40, 20, 80, 26, 42 ],
-      [ 40, 20, 81, 26, 42 ],
-      [ 40, 20, 82, 25, 42 ],
-      [ 40, 20, 83, 24, 41 ],
-      [ 40, 20, 84, 24, 41 ],
-      [ 40, 20, 85, 23, 41 ],
-      [ 40, 20, 86, 22, 40 ],
-      [ 40, 20, 87, 22, 40 ],
-      [ 40, 20, 88, 21, 40 ],
-      [ 40, 20, 89, 20, 39 ],
-      [ 40, 20, 90, 20, 40 ],
-      [ 40, 20, 91, 20, 39 ],
-      [ 40, 20, 92, 21, 39 ],
-      [ 40, 20, 93, 22, 39 ],
-      [ 40, 20, 94, 22, 39 ],
-      [ 40, 20, 95, 23, 40 ],
-      [ 40, 20, 96, 24, 40 ],
-      [ 40, 20, 97, 24, 40 ],
-      [ 40, 20, 98, 25, 41 ],
-      [ 40, 20, 99, 26, 41 ],
-      [ 40, 20, 100, 26, 41 ],
-      [ 40, 20, 101, 27, 42 ],
-      [ 40, 20, 102, 28, 42 ],
-      [ 40, 20, 103, 27, 41 ],
-      [ 40, 20, 104, 28, 42 ],
-      [ 40, 20, 105, 29, 42 ],
-      [ 40, 20, 106, 30, 43 ],
-      [ 40, 20, 107, 30, 43 ],
-      [ 40, 20, 108, 31, 43 ],
-      [ 40, 20, 109, 32, 43 ],
-      [ 40, 20, 110, 32, 43 ],
-      [ 40, 20, 111, 33, 43 ],
-      [ 40, 20, 112, 33, 43 ],
-      [ 40, 20, 113, 33, 43 ],
-      [ 40, 20, 114, 34, 43 ],
-      [ 40, 20, 115, 34, 43 ],
-      [ 40, 20, 116, 35, 43 ],
-      [ 40, 20, 117, 36, 43 ],
-      [ 40, 20, 118, 36, 43 ],
-      [ 40, 20, 119, 36, 43 ],
-      [ 40, 20, 120, 36, 43 ],
-      [ 40, 20, 121, 37, 43 ],
-      [ 40, 20, 122, 38, 43 ],
-      [ 40, 20, 123, 38, 43 ],
-      [ 40, 20, 124, 39, 43 ],
-      [ 40, 20, 125, 38, 42 ],
-      [ 40, 20, 126, 39, 43 ],
-      [ 40, 20, 127, 40, 42 ],
-      [ 40, 20, 128, 40, 42 ],
-      [ 40, 20, 129, 41, 43 ],
-      [ 40, 20, 130, 40, 42 ],
-      [ 40, 20, 131, 41, 42 ],
-      [ 40, 20, 132, 41, 41 ],
-      [ 40, 20, 133, 42, 42 ],
-      [ 40, 20, 134, 41, 41 ],
-      [ 40, 20, 135, 42, 41 ],
-      [ 40, 20, 136, 42, 40 ],
-      [ 40, 20, 137, 43, 41 ],
-      [ 40, 20, 138, 42, 40 ],
-      [ 40, 20, 139, 43, 40 ],
-      [ 40, 20, 140, 43, 39 ],
-      [ 40, 20, 141, 44, 40 ],
-      [ 40, 20, 142, 43, 39 ],
-      [ 40, 20, 143, 43, 39 ],
-      [ 40, 20, 144, 44, 38 ],
-      [ 40, 20, 145, 43, 37 ],
-      [ 40, 20, 146, 44, 38 ],
-      [ 40, 20, 147, 44, 37 ],
-      [ 40, 20, 148, 44, 37 ],
-      [ 40, 20, 149, 44, 36 ],
-      [ 40, 20, 150, 44, 35 ],
-      [ 40, 20, 151, 44, 35 ],
-      [ 40, 20, 152, 44, 35 ],
-      [ 40, 20, 153, 44, 35 ],
-      [ 40, 20, 154, 44, 34 ],
-      [ 40, 20, 155, 44, 33 ],
-      [ 40, 20, 156, 44, 33 ],
-      [ 40, 20, 157, 44, 32 ],
-      [ 40, 20, 158, 44, 32 ],
-      [ 40, 20, 159, 44, 32 ],
-      [ 40, 20, 160, 44, 31 ],
-      [ 40, 20, 161, 44, 31 ],
-      [ 40, 20, 162, 44, 30 ],
-      [ 40, 20, 163, 44, 29 ],
-      [ 40, 20, 164, 44, 29 ],
-      [ 40, 20, 165, 43, 28 ],
-      [ 40, 20, 166, 43, 27 ],
-      [ 40, 20, 167, 42, 26 ],
-      [ 40, 20, 168, 43, 27 ],
-      [ 40, 20, 169, 43, 26 ],
-      [ 40, 20, 170, 42, 25 ],
-      [ 40, 20, 171, 42, 25 ],
-      [ 40, 20, 172, 42, 24 ],
-      [ 40, 20, 173, 41, 23 ],
-      [ 40, 20, 174, 41, 23 ],
-      [ 40, 20, 175, 41, 22 ],
-      [ 40, 20, 176, 40, 21 ],
-      [ 40, 20, 177, 40, 21 ],
-      [ 40, 20, 178, 40, 20 ],
-      [ 40, 20, 179, 39, 19 ],
-      [ 40, 20, 180, 40, 20 ],
-      [ 40, 20, 181, 39, 19 ],
-      [ 40, 20, 182, 39, 20 ],
-      [ 40, 20, 183, 39, 21 ],
-      [ 40, 20, 184, 39, 21 ],
-      [ 40, 20, 185, 40, 22 ],
-      [ 40, 20, 186, 40, 23 ],
-      [ 40, 20, 187, 40, 23 ],
-      [ 40, 20, 188, 41, 24 ],
-      [ 40, 20, 189, 41, 25 ],
-      [ 40, 20, 190, 41, 25 ],
-      [ 40, 20, 191, 42, 26 ],
-      [ 40, 20, 192, 42, 27 ],
-      [ 40, 20, 193, 41, 26 ],
-      [ 40, 20, 194, 42, 27 ],
-      [ 40, 20, 195, 42, 28 ],
-      [ 40, 20, 196, 43, 29 ],
-      [ 40, 20, 197, 43, 29 ],
-      [ 40, 20, 198, 43, 30 ],
-      [ 40, 20, 199, 43, 31 ],
-      [ 40, 20, 200, 43, 31 ],
-      [ 40, 20, 201, 43, 32 ],
-      [ 40, 20, 202, 43, 32 ],
-      [ 40, 20, 203, 43, 32 ],
-      [ 40, 20, 204, 43, 33 ],
-      [ 40, 20, 205, 43, 33 ],
-      [ 40, 20, 206, 43, 34 ],
-      [ 40, 20, 207, 43, 35 ],
-      [ 40, 20, 208, 43, 35 ],
-      [ 40, 20, 209, 43, 35 ],
-      [ 40, 20, 210, 43, 36 ],
-      [ 40, 20, 211, 43, 36 ],
-      [ 40, 20, 212, 43, 37 ],
-      [ 40, 20, 213, 43, 37 ],
-      [ 40, 20, 214, 43, 38 ],
-      [ 40, 20, 215, 42, 37 ],
-      [ 40, 20, 216, 43, 38 ],
-      [ 40, 20, 217, 42, 39 ],
-      [ 40, 20, 218, 42, 39 ],
-      [ 40, 20, 219, 43, 40 ],
-      [ 40, 20, 220, 42, 39 ],
-      [ 40, 20, 221, 42, 40 ],
-      [ 40, 20, 222, 41, 40 ],
-      [ 40, 20, 223, 42, 41 ],
-      [ 40, 20, 224, 41, 40 ],
-      [ 40, 20, 225, 41, 41 ],
-      [ 40, 20, 226, 40, 41 ],
-      [ 40, 20, 227, 41, 42 ],
-      [ 40, 20, 228, 40, 41 ],
-      [ 40, 20, 229, 40, 42 ],
-      [ 40, 20, 230, 39, 42 ],
-      [ 40, 20, 231, 40, 43 ],
-      [ 40, 20, 232, 39, 42 ],
-      [ 40, 20, 233, 39, 42 ],
-      [ 40, 20, 234, 38, 43 ],
-      [ 40, 20, 235, 37, 42 ],
-      [ 40, 20, 236, 38, 43 ],
-      [ 40, 20, 237, 37, 43 ],
-      [ 40, 20, 238, 37, 43 ],
-      [ 40, 20, 239, 36, 43 ],
-      [ 40, 20, 240, 36, 43 ],
-      [ 40, 20, 241, 35, 43 ],
-      [ 40, 20, 242, 35, 43 ],
-      [ 40, 20, 243, 35, 43 ],
-      [ 40, 20, 244, 34, 43 ],
-      [ 40, 20, 245, 33, 43 ],
-      [ 40, 20, 246, 33, 43 ],
-      [ 40, 20, 247, 32, 43 ],
-      [ 40, 20, 248, 32, 43 ],
-      [ 40, 20, 249, 32, 43 ],
-      [ 40, 20, 250, 31, 43 ],
-      [ 40, 20, 251, 31, 43 ],
-      [ 40, 20, 252, 30, 43 ],
-      [ 40, 20, 253, 29, 43 ],
-      [ 40, 20, 254, 29, 43 ],
-      [ 40, 20, 255, 28, 42 ],
-      [ 40, 20, 256, 27, 42 ],
-      [ 40, 20, 257, 26, 41 ],
-      [ 40, 20, 258, 27, 42 ],
-      [ 40, 20, 259, 26, 42 ],
-      [ 40, 20, 260, 25, 41 ],
-      [ 40, 20, 261, 25, 41 ],
-      [ 40, 20, 262, 24, 41 ],
-      [ 40, 20, 263, 23, 40 ],
-      [ 40, 20, 264, 23, 40 ],
-      [ 40, 20, 265, 22, 40 ],
-      [ 40, 20, 266, 21, 39 ],
-      [ 40, 20, 267, 21, 39 ],
-      [ 40, 20, 268, 20, 39 ],
-      [ 40, 20, 269, 19, 39 ],
-      [ 40, 20, 270, 20, 40 ],
-      [ 40, 20, 271, 19, 39 ],
-      [ 40, 20, 272, 20, 40 ],
-      [ 40, 20, 273, 21, 40 ],
-      [ 40, 20, 274, 21, 40 ],
-      [ 40, 20, 275, 22, 41 ],
-      [ 40, 20, 276, 23, 41 ],
-      [ 40, 20, 277, 23, 41 ],
-      [ 40, 20, 278, 24, 42 ],
-      [ 40, 20, 279, 25, 42 ],
-      [ 40, 20, 280, 25, 42 ],
-      [ 40, 20, 281, 26, 43 ],
-      [ 40, 20, 282, 27, 43 ],
-      [ 40, 20, 283, 26, 42 ],
-      [ 40, 20, 284, 27, 43 ],
-      [ 40, 20, 285, 28, 43 ],
-      [ 40, 20, 286, 29, 44 ],
-      [ 40, 20, 287, 29, 44 ],
-      [ 40, 20, 288, 30, 44 ],
-      [ 40, 20, 289, 31, 44 ],
-      [ 40, 20, 290, 31, 44 ],
-      [ 40, 20, 291, 32, 44 ],
-      [ 40, 20, 292, 32, 44 ],
-      [ 40, 20, 293, 32, 44 ],
-      [ 40, 20, 294, 33, 44 ],
-      [ 40, 20, 295, 33, 44 ],
-      [ 40, 20, 296, 34, 44 ],
-      [ 40, 20, 297, 35, 44 ],
-      [ 40, 20, 298, 35, 44 ],
-      [ 40, 20, 299, 35, 44 ],
-      [ 40, 20, 300, 35, 44 ],
-      [ 40, 20, 301, 36, 44 ],
-      [ 40, 20, 302, 37, 44 ],
-      [ 40, 20, 303, 37, 44 ],
-      [ 40, 20, 304, 38, 44 ],
-      [ 40, 20, 305, 37, 43 ],
-      [ 40, 20, 306, 38, 44 ],
-      [ 40, 20, 307, 39, 43 ],
-      [ 40, 20, 308, 39, 43 ],
-      [ 40, 20, 309, 40, 44 ],
-      [ 40, 20, 310, 39, 43 ],
-      [ 40, 20, 311, 40, 43 ],
-      [ 40, 20, 312, 40, 42 ],
-      [ 40, 20, 313, 41, 43 ],
-      [ 40, 20, 314, 40, 42 ],
-      [ 40, 20, 315, 41, 42 ],
-      [ 40, 20, 316, 41, 41 ],
-      [ 40, 20, 317, 42, 42 ],
-      [ 40, 20, 318, 41, 41 ],
-      [ 40, 20, 319, 42, 41 ],
-      [ 40, 20, 320, 42, 40 ],
-      [ 40, 20, 321, 43, 41 ],
-      [ 40, 20, 322, 42, 40 ],
-      [ 40, 20, 323, 42, 40 ],
-      [ 40, 20, 324, 43, 39 ],
-      [ 40, 20, 325, 42, 38 ],
-      [ 40, 20, 326, 43, 39 ],
-      [ 40, 20, 327, 43, 38 ],
-      [ 40, 20, 328, 43, 38 ],
-      [ 40, 20, 329, 43, 37 ],
-      [ 40, 20, 330, 43, 37 ],
-      [ 40, 20, 331, 43, 36 ],
-      [ 40, 20, 332, 43, 36 ],
-      [ 40, 20, 333, 43, 36 ],
-      [ 40, 20, 334, 43, 35 ],
-      [ 40, 20, 335, 43, 34 ],
-      [ 40, 20, 336, 43, 34 ],
-      [ 40, 20, 337, 43, 33 ],
-      [ 40, 20, 338, 43, 33 ],
-      [ 40, 20, 339, 43, 33 ],
-      [ 40, 20, 340, 43, 32 ],
-      [ 40, 20, 341, 43, 32 ],
-      [ 40, 20, 342, 43, 31 ],
-      [ 40, 20, 343, 43, 30 ],
-      [ 40, 20, 344, 43, 30 ],
-      [ 40, 20, 345, 42, 29 ],
-      [ 40, 20, 346, 42, 28 ],
-      [ 40, 20, 347, 41, 27 ],
-      [ 40, 20, 348, 42, 28 ],
-      [ 40, 20, 349, 42, 27 ],
-      [ 40, 20, 350, 41, 26 ],
-      [ 40, 20, 351, 41, 26 ],
-      [ 40, 20, 352, 41, 25 ],
-      [ 40, 20, 353, 40, 24 ],
-      [ 40, 20, 354, 40, 24 ],
-      [ 40, 20, 355, 40, 23 ],
-      [ 40, 20, 356, 39, 22 ],
-      [ 40, 20, 357, 39, 22 ],
-      [ 40, 20, 358, 39, 21 ],
-      [ 40, 20, 359, 39, 20 ],
-      [ 40, 20, 360, 40, 20 ],
-      [ 40, 20, 110.1, 32, 43 ],
-      [ 40, 20, 344.9, 42, 29 ],
-      [ 40, 20, 142.85, 43, 39 ],
-      [ 40, 20, -106.52, 29, 43 ],
-      [ 40, 20, -295.78, 35, 45 ],
-      [ 40, 20, 287.58, 30, 44 ],
-      [ 40, 20, -3.62, 39, 22 ],
-      [ 40, 20, -33.96, 43, 39 ],
-      [ 40, 20, 136.46, 42, 40 ],
-      [ 40, 20, -293.72, 34, 44 ],
-      [ 40, 20, 10.71, 43, 27 ],
-      [ 40, 20, -80.02, 25, 42 ],
-      [ 40, 20, 258.53, 26, 42 ],
-      [ 40, 20, -110.41, 31, 43 ],
-      [ 40, 20, 340.87, 43, 32 ],
-      [ 40, 20, 347.4, 42, 28 ],
-      [ 40, 20, -277.97, 25, 42 ],
-      [ 40, 20, 126.74, 39, 43 ],
-      [ 40, 20, 70.99, 32, 44 ],
-      [ 40, 20, 57.54, 38, 44 ],
-      [ 40, 20, 251.66, 30, 42 ],
-      [ 40, 20, -91.15, 19, 39 ],
-      [ 40, 20, 164.92, 43, 28 ],
-      [ 40, 20, -27.14, 43, 36 ],
-      [ 40, 20, 230.28, 39, 42 ],
-      [ 40, 20, 271.37, 19, 39 ],
-      [ 40, 20, -207.19, 44, 35 ],
-      [ 40, 20, -58.19, 37, 44 ],
-      [ 40, 20, -339.34, 44, 33 ],
-      [ 40, 20, 352.45, 41, 25 ],
-      [ 40, 20, -245.62, 34, 43 ],
-      [ 40, 20, 130.77, 41, 42 ],
-      [ 40, 20, 337.34, 43, 33 ],
-      [ 40, 20, 257.24, 27, 42 ],
-      [ 40, 20, -335.75, 44, 34 ],
-      [ 40, 20, -318.44, 42, 41 ],
-      [ 40, 20, 184.82, 40, 22 ],
-      [ 40, 20, 20.64, 44, 33 ],
-      [ 40, 20, 7.6, 42, 25 ],
-      [ 40, 20, -38.72, 43, 41 ],
-      [ 40, 20, 86.92, 22, 40 ],
-      [ 40, 20, -341.69, 43, 31 ],
-      [ 40, 20, 241.26, 36, 44 ],
-      [ 40, 20, -14.56, 42, 29 ],
-      [ 40, 20, -92.1, 20, 39 ],
-      [ 40, 20, 222.12, 41, 40 ],
-      [ 40, 20, -27.16, 43, 36 ],
-      [ 40, 20, -10.06, 41, 26 ],
-      [ 40, 20, -11.15, 42, 27 ],
-      [ 40, 20, -316.18, 42, 41 ],
-      [ 40, 20, -312.53, 42, 43 ],
-      [ 40, 20, -119.49, 35, 43 ],
-      [ 40, 20, -47.32, 41, 43 ],
-      [ 40, 20, 212.4, 43, 37 ],
-      [ 40, 20, 213.37, 43, 38 ],
-      [ 40, 20, -177.05, 39, 21 ],
-      [ 40, 20, 123.76, 39, 43 ],
-      [ 40, 20, -353.82, 41, 24 ],
-      [ 40, 20, 124.76, 38, 42 ],
-      [ 40, 20, 144.43, 44, 38 ],
-      [ 40, 20, 358.63, 39, 20 ],
-      [ 40, 20, 239.15, 36, 43 ],
-      [ 40, 20, -84.81, 22, 41 ],
-      [ 40, 20, 335.97, 43, 34 ],
-      [ 40, 20, 136.38, 42, 40 ],
-      [ 40, 20, -60.55, 35, 44 ],
-      [ 40, 20, -342.47, 44, 31 ],
-      [ 40, 20, -38.8, 43, 41 ],
-      [ 40, 20, 320.09, 42, 40 ],
-      [ 40, 20, 25.13, 44, 34 ],
-      [ 40, 20, 282.48, 27, 43 ],
-      [ 40, 20, 47, 42, 43 ],
-      [ 40, 20, 43.45, 43, 42 ],
-      [ 40, 20, 163.73, 44, 29 ],
-      [ 40, 20, -327.56, 44, 38 ],
-      [ 40, 20, 311.35, 40, 43 ],
-      [ 40, 20, 25.85, 44, 35 ],
-      [ 40, 20, 5.28, 41, 23 ],
-      [ 40, 20, -58.72, 36, 44 ],
-      [ 40, 20, -345.3, 43, 29 ],
-      [ 40, 20, 49.11, 41, 43 ],
-      [ 40, 20, -11.25, 42, 27 ],
-      [ 40, 20, -104.78, 28, 42 ],
-      [ 40, 20, -358.22, 40, 21 ],
-      [ 40, 20, -158.86, 43, 32 ],
-      [ 40, 20, -251.42, 31, 42 ],
-      [ 40, 20, -175.27, 40, 22 ],
-      [ 40, 20, 324.91, 42, 38 ],
-      [ 40, 20, -245.24, 34, 43 ],
-      [ 40, 20, 309.5, 39, 43 ],
-      [ 40, 20, 109.34, 32, 43 ],
-      [ 40, 20, -246.61, 33, 43 ],
-      [ 40, 20, 188.64, 41, 25 ],
-      [ 40, 20, -335.47, 44, 34 ],
-      [ 40, 20, -270.64, 20, 39 ],
-      [ 40, 20, -34.98, 42, 38 ],
-      [ 40, 20, -36.02, 43, 39 ],
-      [ 40, 20, -253.11, 30, 43 ],
-      [ 40, 20, 286.22, 29, 44 ],
-      [ 40, 20, -75.94, 27, 43 ],
-      [ 40, 20, 132.03, 41, 41 ],
-      [ 40, 20, 208.69, 44, 36 ],
-      [ 40, 20, 331.07, 44, 37 ],
-      [ 40, 20, -184.53, 41, 22 ],
-      [ 40, 20, 12.42, 43, 28 ],
-      [ 40, 20, -356.5, 40, 22 ],
-      [ 40, 20, -233.19, 39, 43 ],
-      [ 40, 20, -321.73, 43, 40 ],
-      [ 40, 20, 8.78, 42, 26 ],
-      [ 40, 20, 68.1, 33, 44 ],
-      [ 40, 20, -307.02, 40, 43 ],
-      [ 40, 20, -302.11, 38, 44 ],
-      [ 40, 20, -303.15, 38, 44 ],
-      [ 40, 20, -51.8, 39, 43 ],
-      [ 40, 20, -300.33, 37, 44 ],
-      [ 40, 20, -102, 27, 42 ],
-      [ 40, 20, 56.78, 38, 44 ],
-      [ 40, 20, -115.59, 34, 44 ],
-      [ 40, 20, -137.09, 42, 41 ],
-      [ 40, 20, 171.55, 42, 24 ],
-      [ 40, 20, -166.1, 42, 27 ],
-      [ 40, 20, 332.25, 43, 36 ],
-      [ 40, 20, 284.95, 28, 43 ],
-      [ 40, 20, -337.46, 44, 33 ],
-      [ 40, 20, 356.79, 39, 22 ],
-      [ 40, 20, -345.7, 43, 28 ],
-      [ 40, 20, -12.44, 42, 28 ],
-      [ 40, 20, -39.24, 42, 40 ],
-      [ 40, 20, -238.81, 37, 43 ],
-      [ 40, 20, -86.22, 21, 40 ],
-      [ 40, 20, 244.83, 34, 44 ],
-      [ 40, 20, 253.22, 29, 43 ],
-      [ 40, 20, -237.53, 38, 43 ],
-      [ 40, 20, 215.89, 43, 38 ],
-      [ 40, 20, -291.31, 33, 44 ],
-      [ 40, 20, 134.89, 42, 41 ],
-      [ 40, 20, 219.39, 42, 39 ],
-      [ 40, 20, -164.5, 42, 28 ],
-      [ 40, 20, 173.17, 41, 23 ],
-      [ 40, 20, -131.83, 40, 41 ],
-      [ 40, 20, 263.61, 23, 40 ],
-      [ 40, 20, 226.15, 40, 41 ],
-      [ 40, 20, -73.94, 29, 44 ],
-      [ 40, 20, 320.47, 42, 40 ],
-      [ 40, 20, -185.65, 41, 22 ],
-      [ 40, 20, -14.26, 42, 28 ],
-      [ 40, 20, -141.54, 42, 39 ],
-      [ 40, 20, 231.14, 40, 43 ],
-      [ 40, 20, 230.15, 39, 42 ],
-      [ 40, 20, 81.38, 25, 42 ],
-      [ 40, 20, 42.68, 43, 42 ],
-      [ 40, 20, -295.95, 35, 44 ],
-      [ 40, 20, 53.63, 39, 44 ],
-      [ 40, 20, -32.37, 43, 38 ],
-      [ 40, 20, -273.41, 22, 40 ],
-      [ 40, 20, 50.41, 40, 43 ],
-      [ 40, 20, -18.07, 43, 31 ],
-      [ 40, 20, 74.16, 29, 43 ],
-      [ 40, 20, -348.83, 43, 27 ],
-      [ 40, 20, 103.13, 28, 42 ],
-      [ 40, 20, 347.94, 42, 28 ],
-      [ 40, 20, 256.01, 27, 42 ],
-      [ 40, 20, -3.66, 39, 22 ],
-      [ 40, 20, -249.59, 32, 43 ],
-      [ 40, 20, 111.89, 33, 43 ],
-      [ 40, 20, 65.03, 34, 44 ],
-      [ 40, 20, 245.3, 33, 43 ],
-      [ 40, 20, -28.72, 44, 37 ],
-      [ 40, 20, 260.54, 25, 41 ],
-      [ 40, 20, 58.47, 37, 44 ],
-      [ 40, 20, 199.45, 43, 31 ],
-      [ 40, 20, 164.15, 43, 28 ],
-      [ 40, 20, -75.38, 28, 43 ],
-      [ 40, 20, -234.49, 39, 43 ],
-      [ 40, 20, 124.61, 38, 42 ],
-      [ 40, 20, 98.97, 26, 41 ],
-      [ 40, 20, 111.25, 33, 43 ],
-      [ 40, 20, 343.08, 43, 30 ],
-      [ 40, 20, -29.9, 43, 36 ],
-      [ 40, 20, -18.6, 42, 31 ],
-      [ 40, 20, 64.45, 35, 45 ],
-      [ 40, 20, -347.22, 43, 28 ],
-      [ 40, 20, 45.46, 42, 42 ],
-      [ 40, 20, -241.93, 36, 43 ],
-      [ 40, 20, -19.59, 43, 32 ],
-      [ 40, 20, 132.05, 41, 41 ],
-      [ 40, 20, 168.49, 43, 26 ],
-      [ 40, 20, 322.34, 42, 40 ],
-      [ 40, 20, -153.79, 43, 34 ],
-      [ 40, 20, 179.66, 39, 19 ],
-      [ 40, 20, 65.47, 34, 44 ],
-      [ 40, 20, -165.85, 42, 27 ],
-      [ 40, 20, 75.66, 28, 43 ],
-      [ 40, 20, -298.19, 36, 44 ],
-      [ 40, 20, -55.44, 37, 43 ],
-      [ 40, 20, -172.45, 41, 24 ],
-      [ 40, 20, 126.84, 39, 43 ],
-      [ 40, 20, -170.14, 41, 25 ],
-      [ 40, 20, 158.84, 44, 32 ],
-      [ 40, 20, 27.38, 44, 36 ],
-      [ 40, 20, 248.33, 32, 43 ],
-      [ 40, 20, -1.71, 39, 21 ],
-      [ 40, 20, -168.47, 42, 26 ],
-      [ 40, 20, -187.06, 41, 23 ],
-      [ 40, 20, 123.8, 39, 43 ],
-      [ 40, 20, 316.15, 41, 41 ],
-      [ 40, 20, 271.92, 20, 40 ],
-      [ 40, 20, -124.95, 37, 42 ],
-      [ 40, 20, 299.22, 35, 44 ],
-      [ 40, 20, -117.99, 35, 43 ],
-      [ 40, 20, 216.46, 43, 38 ],
-      [ 40, 20, 3.67, 40, 22 ],
-      [ 40, 20, -105.2, 28, 42 ],
-      [ 40, 20, -98.09, 24, 41 ],
-      [ 40, 20, 121.74, 38, 44 ],
-      [ 40, 20, 235.21, 37, 42 ],
-      [ 40, 20, -326.05, 44, 39 ],
-      [ 40, 20, -69.77, 31, 44 ],
-      [ 40, 20, 197.55, 43, 30 ],
-      [ 40, 20, -119.83, 35, 43 ],
-      [ 40, 20, -250.11, 32, 43 ],
-      [ 40, 20, -96.99, 23, 40 ],
-      [ 40, 20, 74.32, 29, 43 ],
-      [ 40, 20, 185.56, 40, 22 ],
-      [ 40, 20, -35.18, 43, 39 ],
-      [ 40, 20, -341.13, 43, 31 ],
-      [ 40, 20, -346.9, 43, 28 ],
-      [ 40, 20, -268.34, 21, 39 ],
-      [ 40, 20, -151.26, 44, 36 ],
-      [ 40, 20, 171.95, 42, 24 ],
-      [ 40, 20, 119.05, 36, 43 ],
-      [ 40, 20, -262.94, 24, 40 ],
-      [ 40, 20, -189.77, 42, 25 ],
-      [ 40, 20, 310.58, 40, 43 ],
-      [ 40, 20, -89.99, 19, 39 ],
-      [ 40, 20, 294.04, 33, 44 ],
-      [ 40, 20, 266.72, 21, 39 ],
-      [ 40, 20, -178.07, 39, 20 ],
-      [ 40, 20, -190.92, 43, 26 ],
-      [ 40, 20, 205.94, 43, 34 ],
-      [ 40, 20, 63.94, 35, 44 ],
-      [ 40, 20, -334.47, 45, 35 ],
-      [ 40, 20, -150.4, 43, 35 ],
-      [ 40, 20, 318.74, 42, 41 ],
-      [ 40, 20, -72.56, 29, 44 ],
-      [ 40, 20, 331.35, 44, 37 ],
-      [ 40, 20, 193.95, 42, 27 ],
-      [ 40, 20, -38.6, 42, 40 ],
-      [ 40, 20, -98.43, 24, 41 ],
-      [ 40, 20, 31.49, 44, 37 ],
-      [ 40, 20, 201.57, 43, 32 ],
-      [ 40, 20, 11.46, 43, 27 ],
-      [ 40, 20, 294.51, 33, 44 ],
-      [ 40, 20, -84.11, 23, 41 ],
-      [ 40, 20, -162.99, 43, 29 ],
-      [ 40, 20, -100.68, 26, 42 ],
-      [ 40, 20, -65.23, 33, 44 ],
-      [ 40, 20, -149.88, 43, 36 ],
-      [ 40, 20, -9.01, 41, 26 ],
-      [ 40, 20, 143.51, 44, 38 ],
-      [ 40, 20, -337.94, 45, 34 ],
-      [ 40, 20, -249.97, 32, 43 ],
-      [ 40, 20, 240.58, 35, 43 ],
-      [ 40, 20, -167.7, 42, 27 ],
-      [ 40, 20, -299.39, 36, 44 ],
-      [ 40, 20, -209.42, 44, 35 ],
-      [ 40, 20, -233.67, 39, 43 ],
-      [ 40, 20, 327.34, 43, 38 ],
-      [ 40, 20, -27.49, 43, 36 ],
-      [ 40, 20, -64.59, 34, 45 ],
-      [ 40, 20, 173.27, 41, 23 ],
-      [ 40, 20, -323.55, 44, 39 ],
-      [ 40, 20, -39.05, 43, 41 ],
-      [ 40, 20, -337.14, 44, 33 ],
-      [ 40, 20, 355.2, 40, 23 ],
-      [ 40, 20, 248.4, 32, 43 ],
-      [ 40, 20, 354.22, 40, 24 ],
-      [ 40, 20, 189.14, 41, 25 ],
-      [ 40, 20, -150.21, 43, 35 ],
-      [ 40, 20, -104.22, 27, 42 ],
-      [ 40, 20, -139.37, 42, 40 ],
-      [ 40, 20, -308.64, 40, 43 ],
-      [ 40, 20, 267.25, 20, 39 ],
-      [ 40, 20, -204.87, 44, 33 ],
-      [ 40, 20, -32.74, 43, 38 ],
-      [ 40, 20, -255.74, 28, 42 ],
-      [ 40, 20, 54.45, 39, 44 ],
-      [ 40, 20, 262.03, 24, 41 ],
-      [ 40, 20, -45.61, 40, 42 ],
-      [ 40, 20, -314.56, 42, 42 ],
-      [ 40, 20, 45.53, 42, 42 ],
-      [ 40, 20, -23.54, 43, 33 ],
-      [ 40, 20, -204.53, 44, 33 ],
-      [ 40, 20, -73.9, 29, 44 ],
-      [ 40, 20, 168.76, 43, 26 ],
-      [ 40, 20, -143.92, 43, 38 ],
-      [ 40, 20, 76.69, 28, 43 ],
-      [ 40, 20, 295.09, 33, 44 ],
-      [ 40, 20, -176.59, 39, 21 ],
-      [ 40, 20, -310.8, 41, 43 ],
-      [ 40, 20, -129.5, 39, 42 ],
-      [ 40, 20, 356.69, 39, 22 ],
-      [ 40, 20, -274.35, 23, 41 ],
-      [ 40, 20, 191.45, 42, 26 ],
-      [ 40, 20, -340.45, 44, 32 ],
-      [ 40, 20, -279.15, 26, 42 ],
-      [ 40, 20, 79.84, 27, 43 ],
-      [ 40, 20, -346.24, 43, 28 ],
-      [ 40, 20, 269.99, 19, 39 ],
-      [ 40, 20, 289.64, 31, 44 ],
-      [ 40, 20, -90.45, 19, 39 ],
-      [ 40, 20, -229.38, 41, 42 ],
-      [ 40, 20, 341.01, 43, 32 ],
-      [ 40, 20, -183.2, 40, 21 ],
-      [ 40, 20, -74.25, 28, 43 ],
-      [ 40, 20, -51.74, 39, 43 ],
-      [ 40, 20, -78.93, 26, 43 ],
-      [ 40, 20, 340.21, 43, 32 ],
-      [ 40, 20, -149.72, 43, 36 ],
-      [ 40, 20, 235.46, 37, 42 ],
-      [ 40, 20, -334.36, 45, 35 ],
-      [ 40, 20, 255.82, 27, 42 ],
-      [ 40, 20, -148.08, 43, 37 ],
-      [ 40, 20, -178.88, 39, 19 ],
-      [ 40, 20, -178.08, 39, 20 ],
-      [ 40, 20, -339.33, 44, 33 ],
-      [ 40, 20, 37.2, 43, 40 ],
-      [ 40, 20, 258.61, 26, 42 ],
-      [ 40, 20, 315.77, 41, 41 ],
-      [ 40, 20, 220.62, 42, 40 ],
-      [ 40, 20, 307.81, 39, 43 ],
-      [ 40, 20, -173.74, 40, 23 ],
-      [ 40, 20, 217.3, 42, 39 ],
-      [ 40, 20, -326.54, 44, 39 ],
-      [ 40, 20, -342.29, 44, 31 ],
-      [ 40, 20, 236.86, 37, 43 ],
-      [ 40, 20, -245.68, 34, 43 ],
-      [ 40, 20, 97.55, 25, 41 ],
-      [ 40, 20, 250.62, 31, 43 ],
-      [ 40, 20, -335.69, 44, 34 ],
-      [ 40, 20, 27.19, 44, 36 ],
-      [ 40, 20, -199.84, 44, 31 ],
-      [ 40, 20, -205.07, 44, 33 ],
-      [ 40, 20, 8.19, 42, 25 ],
-      [ 40, 20, -23.03, 43, 33 ],
-      [ 40, 20, 80.68, 26, 42 ],
-      [ 40, 20, 316.45, 41, 41 ],
-      [ 40, 20, 258.04, 27, 42 ],
-      [ 40, 20, 60.89, 36, 44 ],
-      [ 40, 20, -193.27, 43, 27 ],
-      [ 40, 20, 133.49, 42, 42 ],
-      [ 40, 20, 86.53, 22, 40 ],
-      [ 40, 20, -297.46, 36, 44 ],
-      [ 40, 20, 345.41, 42, 29 ],
-      [ 40, 20, 267.65, 20, 39 ],
-      [ 40, 20, -115.54, 34, 44 ],
-      [ 40, 20, -353.92, 41, 24 ],
-      [ 40, 20, -55.15, 37, 43 ],
-      [ 40, 20, -216.94, 43, 39 ],
-      [ 40, 20, 321.85, 42, 40 ],
-      [ 40, 20, -194.53, 43, 28 ],
-      [ 40, 20, -269.13, 20, 39 ],
-      [ 40, 20, -211.89, 44, 37 ],
-      [ 40, 20, -337.23, 44, 33 ],
-      [ 40, 20, -235.66, 39, 43 ],
-      [ 40, 20, -194.18, 43, 27 ],
-      [ 40, 20, 259.63, 26, 42 ],
-      [ 40, 20, -121.34, 36, 43 ],
-      [ 40, 20, 263.37, 23, 40 ],
-      [ 40, 20, 150.24, 44, 35 ],
-      [ 40, 20, -97.02, 23, 40 ],
-      [ 40, 20, -69.44, 32, 44 ],
-      [ 40, 20, 310.41, 39, 43 ],
-      [ 40, 20, 57.91, 38, 44 ],
-      [ 40, 20, 298.75, 36, 45 ],
-      [ 40, 20, -72.63, 29, 44 ],
-      [ 40, 20, -221.41, 42, 40 ],
-      [ 40, 20, 255.19, 28, 42 ],
-      [ 40, 20, -174.6, 40, 22 ],
-      [ 40, 20, 199.48, 43, 31 ],
-      [ 40, 20, -298.08, 36, 44 ],
-      [ 40, 20, 318.9, 42, 41 ],
-      [ 40, 20, -73.99, 29, 44 ],
-      [ 40, 20, -235.54, 38, 42 ],
-      [ 40, 20, 304.31, 38, 44 ],
-      [ 40, 20, -166.34, 42, 27 ],
-      [ 40, 20, 8.92, 42, 26 ],
-      [ 40, 20, 310.39, 39, 43 ],
-      [ 40, 20, 138.52, 42, 40 ],
-      [ 40, 20, 151.99, 44, 35 ],
-      [ 40, 20, 272.24, 20, 40 ],
-      [ 40, 20, 303.99, 38, 44 ],
-      [ 40, 20, 242.87, 35, 43 ],
-      [ 40, 20, -299.66, 36, 44 ],
-      [ 40, 20, 326.77, 43, 38 ],
-      [ 40, 20, -352.79, 42, 25 ],
-      [ 40, 20, -133.84, 40, 41 ],
-      [ 40, 20, 226.39, 40, 41 ],
-      [ 40, 20, -114.12, 33, 43 ],
-      [ 40, 20, -230.47, 40, 42 ],
-      [ 40, 20, 16.63, 44, 30 ],
-      [ 40, 20, 148.86, 44, 36 ],
-      [ 40, 20, 60.09, 36, 44 ],
-      [ 40, 20, -32.96, 43, 38 ],
-      [ 40, 20, -153.24, 43, 35 ],
-      [ 40, 20, -1.16, 39, 20 ],
-      [ 40, 20, 254.41, 28, 42 ],
-      [ 40, 20, -14.65, 42, 29 ],
-      [ 40, 20, -105.97, 29, 43 ],
-      [ 40, 20, -280.19, 27, 43 ],
-      [ 40, 20, -175.17, 40, 22 ],
-      [ 40, 20, -44.05, 41, 41 ],
-      [ 40, 20, -321.29, 44, 41 ],
-      [ 40, 20, 110.85, 33, 43 ],
-      [ 40, 20, 80.41, 26, 42 ],
-      [ 40, 20, 343.02, 43, 30 ],
-      [ 40, 20, 304.51, 37, 43 ],
-      [ 40, 20, -270.67, 20, 39 ],
-      [ 40, 20, 293.41, 32, 44 ],
-      [ 40, 20, 83.02, 24, 41 ],
-      [ 40, 20, 241.33, 36, 44 ],
-      [ 40, 20, 205.64, 44, 34 ],
-      [ 40, 20, 27.01, 44, 36 ],
-      [ 40, 20, 124.19, 39, 43 ],
-      [ 40, 20, 265.98, 21, 39 ],
-      [ 40, 20, -6.23, 40, 24 ],
-      [ 40, 20, 131.41, 41, 41 ],
-      [ 40, 20, -227.86, 41, 41 ],
-      [ 40, 20, -139.85, 42, 39 ],
-      [ 40, 20, -342.72, 44, 30 ],
-      [ 40, 20, -98.33, 24, 41 ],
-      [ 40, 20, 236.79, 37, 43 ],
-      [ 40, 20, 166.14, 43, 27 ],
-      [ 40, 20, 321.77, 42, 40 ],
-      [ 40, 20, -156.18, 43, 33 ],
-      [ 40, 20, -347.1, 42, 27 ],
-      [ 40, 20, -39.4, 42, 40 ],
-      [ 40, 20, -261.77, 25, 41 ],
-      [ 40, 20, -1.74, 39, 21 ],
-      [ 40, 20, 214.63, 42, 37 ],
-      [ 40, 20, -181.95, 40, 20 ],
-      [ 40, 20, 183.09, 39, 21 ],
-      [ 40, 20, -189.43, 42, 25 ],
-      [ 40, 20, -143.24, 43, 38 ],
-      [ 40, 20, -66.07, 33, 44 ],
-      [ 40, 20, 250.99, 31, 43 ],
-      [ 40, 20, -160.22, 43, 31 ],
-      [ 40, 20, -121.56, 36, 43 ],
-      [ 40, 20, 340.33, 43, 32 ],
-      [ 40, 20, -226.82, 42, 42 ],
-      [ 40, 20, 321.46, 42, 40 ],
-      [ 40, 20, 221.65, 41, 40 ],
-      [ 40, 20, 338.83, 43, 33 ],
-      [ 40, 20, -11.53, 42, 27 ],
-      [ 40, 20, -14.16, 42, 28 ],
-      [ 40, 20, 244.81, 34, 44 ],
-      [ 40, 20, 342.24, 43, 31 ],
-      [ 40, 20, -242.76, 36, 43 ],
-      [ 40, 20, -343.06, 44, 30 ],
-      [ 40, 20, -157.61, 43, 32 ],
-      [ 40, 20, -225.48, 42, 41 ],
-      [ 40, 20, -81.38, 24, 42 ],
-      [ 40, 20, -280.83, 27, 43 ],
-      [ 40, 20, 300.67, 36, 44 ],
-      [ 40, 20, -119.62, 35, 43 ],
-      [ 40, 20, -77, 26, 42 ],
-      [ 40, 20, 313.57, 40, 42 ],
-      [ 40, 20, 200.99, 43, 32 ],
-      [ 40, 20, 21.23, 44, 33 ],
-      [ 40, 20, -48.18, 40, 42 ],
-      [ 40, 20, 55.62, 39, 44 ],
-      [ 40, 20, 199.29, 43, 31 ],
-      [ 40, 20, -225.09, 42, 41 ],
-      [ 40, 20, 226.2, 40, 41 ],
-      [ 40, 20, -303.96, 39, 44 ],
-      [ 40, 20, 68.84, 33, 44 ],
-      [ 40, 20, 117.18, 36, 43 ],
-      [ 40, 20, -104.18, 27, 42 ],
-      [ 40, 20, 307.29, 39, 43 ],
-      [ 40, 20, 97.5, 25, 41 ],
-      [ 40, 20, 29.01, 44, 36 ],
-      [ 40, 20, 268.74, 19, 39 ],
-      [ 40, 20, -40.85, 42, 41 ],
-      [ 40, 20, 7.83, 42, 25 ],
-      [ 40, 20, -102.79, 27, 42 ],
-      [ 40, 20, 304.99, 37, 43 ],
-      [ 40, 20, -107.37, 29, 43 ],
-      [ 40, 20, -120.56, 36, 43 ],
-      [ 40, 20, -297.78, 36, 44 ],
-      [ 40, 20, -90.42, 19, 39 ],
-      [ 40, 20, 81.84, 25, 42 ],
-      [ 40, 20, -163.25, 43, 29 ],
-      [ 40, 20, 188.2, 41, 24 ],
-      [ 40, 20, 161.02, 44, 31 ],
-      [ 40, 20, -222.59, 43, 41 ],
-      [ 40, 20, -291.42, 33, 44 ],
-      [ 40, 20, -275.99, 24, 41 ],
-      [ 40, 20, -269.03, 20, 39 ],
-      [ 40, 20, 269.58, 19, 39 ],
-      [ 40, 20, 105.25, 29, 42 ],
-      [ 573, 347, -55.47, 609, 669 ],
-      [ 765, 205, 0.58, 766, 212 ],
-      [ 351, 714, 256.41, 775, 508 ],
-      [ 276, 434, -74.59, 490, 381 ],
-      [ 146, 6, 293.24, 62, 136 ],
-      [ 512, 715, -174.13, 581, 762 ],
-      [ 853, 14, 95.45, 95, 849 ],
-      [ 457, 224, -76.35, 324, 497 ],
-      [ 174, 370, -7.76, 221, 390 ],
-      [ 294, 467, -98.19, 502, 357 ],
-      [ 955, 129, 227, 744, 785 ],
-      [ 364, 702, -301.62, 788, 677 ],
-      [ 877, 197, -353.05, 894, 302 ],
-      [ 730, 404, 53.02, 762, 826 ],
-      [ 112, 514, 58.24, 495, 366 ],
-      [ 17, 129, 8.44, 35, 130 ],
-      [ 281, 768, 20.87, 536, 818 ],
-      [ 929, 343, 230.05, 858, 931 ],
-      [ 308, 473, -143.37, 528, 562 ],
-      [ 809, 693, 294.19, 962, 1021 ],
-      [ 158, 641, -305.47, 613, 500 ],
-      [ 993, 146, 352.59, 1002, 273 ],
-      [ 52, 36, -182.82, 53, 37 ],
-      [ 61, 583, 195.61, 214, 576 ],
-      [ 649, 666, -43.4, 928, 929 ],
-      [ 220, 678, 77.36, 710, 362 ],
-      [ 744, 121, 77.35, 280, 751 ],
-      [ 261, 49, -321.61, 234, 200 ],
-      [ 77, 280, 121.51, 279, 210 ],
-      [ 385, 119, 50.72, 335, 373 ],
-      [ 291, 237, -68.73, 325, 357 ],
-      [ 369, 213, 67.7, 337, 422 ],
-      [ 358, 251, 100.59, 312, 396 ],
-      [ 610, 297, -73.68, 455, 668 ],
-      [ 376, 15, -169.68, 371, 81 ],
-      [ 827, 179, -254.18, 397, 843 ],
-      [ 425, 737, -141.29, 791, 839 ],
-      [ 23, 164, -95.58, 164, 37 ],
-      [ 77, 222, 166.62, 125, 232 ],
-      [ 762, 510, 277.54, 604, 822 ],
-      [ 322, 728, -221.02, 720, 759 ],
-      [ 736, 236, -22.05, 770, 495 ],
-      [ 321, 504, 212.83, 541, 597 ],
-      [ 976, 193, -229.44, 781, 865 ],
-      [ 359, 475, -215.81, 569, 594 ],
-      [ 630, 326, -48.07, 662, 686 ],
-      [ 780, 644, -77.76, 793, 899 ],
-      [ 67, 661, 75.98, 657, 225 ],
-      [ 443, 718, 283.2, 799, 595 ],
-      [ 168, 522, 40.53, 466, 506 ],
-      [ 51, 763, 2.14, 78, 763 ],
-      [ 249, 547, 222.59, 552, 570 ],
-      [ 729, 19, -25.54, 664, 331 ],
-      [ 520, 750, 154.94, 789, 898 ],
-      [ 706, 251, -120.38, 573, 735 ],
-      [ 911, 723, 185.11, 970, 800 ],
-      [ 330, 540, 68.77, 622, 503 ],
-      [ 732, 590, -32.05, 932, 888 ],
-      [ 328, 154, -78.98, 212, 350 ],
-      [ 219, 279, -310.49, 354, 347 ],
-      [ 788, 317, -315.86, 786, 775 ],
-      [ 279, 503, 196.18, 406, 559 ],
-      [ 84, 282, 213.32, 224, 281 ],
-      [ 559, 671, 196.16, 722, 798 ],
-      [ 268, 432, -288.99, 495, 394 ],
-      [ 609, 347, -331.79, 700, 593 ],
-      [ 360, 594, 173.57, 424, 629 ],
-      [ 970, 375, 5.79, 1003, 470 ],
-      [ 412, 620, 149.31, 670, 742 ],
-      [ 812, 16, -309.25, 525, 638 ],
-      [ 882, 606, -12.36, 990, 780 ],
-      [ 945, 47, -261.03, 193, 939 ],
-      [ 712, 110, 2.68, 716, 143 ],
-      [ 503, 529, -88.4, 542, 517 ],
-      [ 270, 730, 316.29, 698, 714 ],
-      [ 371, 418, -79.07, 479, 443 ],
-      [ 412, 687, -242.53, 800, 681 ],
-      [ 146, 646, 108.15, 659, 338 ],
-      [ 667, 187, -31.06, 666, 504 ],
-      [ 367, 27, -16.94, 358, 132 ],
-      [ 439, 689, -168.99, 561, 758 ],
-      [ 934, 629, -125.04, 1050, 1124 ],
-      [ 50, 395, -22.51, 196, 384 ],
-      [ 566, 4, -246.96, 225, 521 ],
-      [ 952, 206, -283.43, 421, 973 ],
-      [ 890, 484, 107.7, 731, 993 ],
-      [ 266, 25, 31.52, 239, 160 ],
-      [ 433, 134, -83.19, 183, 445 ],
-      [ 75, 634, 91.53, 636, 90 ],
-      [ 543, 140, 116.69, 368, 547 ],
-      [ 6, 469, 41.81, 317, 353 ],
-      [ 278, 401, -88.97, 404, 284 ],
-      [ 612, 439, 280.54, 542, 681 ],
-      [ 68, 95, 283.63, 107, 88 ],
-      [ 229, 41, -243.53, 139, 221 ],
-      [ 338, 708, 210.11, 646, 780 ],
-      [ 1003, 139, 232.72, 717, 881 ],
-      [ 536, 463, 357.89, 551, 482 ],
-      [ 930, 519, 231.4, 985, 1049 ],
-      [ 548, 157, -357.44, 554, 181 ],
-      [ 202, 162, 82.14, 187, 222 ],
-      [ 773, 370, -262.23, 471, 814 ],
-      [ 135, 61, 148.43, 147, 121 ],
-      [ 22, 112, 236.79, 105, 78 ],
-      [ 937, 283, 274.47, 354, 956 ],
-      [ 79, 536, 217.74, 389, 471 ],
-      [ 890, 520, 347.55, 980, 699 ],
-      [ 708, 154, 61.36, 474, 695 ],
-      [ 705, 82, -172.68, 708, 169 ],
-      [ 523, 493, -25.61, 683, 671 ],
-      [ 526, 644, 125.61, 830, 801 ],
-      [ 131, 455, -248, 471, 290 ],
-      [ 270, 556, -191.46, 374, 597 ],
-      [ 993, 572, -87.31, 616, 1018 ],
-      [ 818, 506, 177.51, 839, 540 ],
-      [ 696, 565, -40.43, 894, 881 ],
-      [ 494, 464, -273.43, 492, 521 ],
-      [ 476, 227, -129.96, 478, 509 ],
-      [ 52, 755, -53.22, 635, 493 ],
-      [ 318, 379, -311.68, 494, 489 ],
-      [ 794, 5, 291.36, 293, 741 ],
-      [ 460, 103, -2.3, 462, 121 ],
-      [ 619, 305, -201.62, 687, 511 ],
-      [ 859, 282, 333.95, 894, 630 ],
-      [ 223, 127, 88.01, 134, 226 ],
-      [ 987, 649, -102.96, 852, 1106 ],
-      [ 418, 251, 331.17, 486, 421 ],
-      [ 541, 608, -176.92, 572, 635 ],
-      [ 868, 646, -189.3, 960, 777 ],
-      [ 281, 116, 165.4, 300, 181 ],
-      [ 349, 711, 169.74, 470, 761 ],
-      [ 252, 288, 265.89, 304, 271 ],
-      [ 760, 752, -168.4, 894, 888 ],
-      [ 986, 628, 95.31, 716, 1038 ],
-      [ 949, 27, 213.8, 802, 548 ],
-      [ 562, 767, 101.53, 864, 702 ],
-      [ 927, 312, 336.26, 973, 659 ],
-      [ 886, 717, 185.51, 949, 798 ],
-      [ 123, 600, 70.64, 606, 315 ],
-      [ 365, 42, 178.97, 365, 47 ],
-      [ 89, 304, 124.91, 299, 245 ],
-      [ 842, 492, -325.96, 972, 879 ],
-      [ 708, 294, -341.61, 764, 502 ],
-      [ 981, 265, 246.51, 633, 1004 ],
-      [ 604, 208, 271.05, 218, 607 ],
-      [ 396, 629, 269.55, 631, 399 ],
-      [ 29, 556, -158.42, 229, 526 ],
-      [ 1019, 453, -206.3, 1114, 856 ],
-      [ 771, 544, 355.98, 806, 597 ],
-      [ 359, 50, -324.83, 322, 247 ],
-      [ 102, 116, -40.39, 151, 154 ],
-      [ 791, 747, -299.35, 1038, 1055 ],
-      [ 840, 510, -23.99, 973, 807 ],
-      [ 866, 477, 224.07, 953, 944 ],
-      [ 705, 162, -301.25, 503, 686 ],
-      [ 578, 459, 288.1, 614, 692 ],
-      [ 450, 481, 89.13, 487, 456 ],
-      [ 736, 476, -207, 871, 757 ],
-      [ 955, 286, 302.83, 756, 957 ],
-      [ 949, 555, 349.29, 1034, 721 ],
-      [ 999, 631, -262.23, 760, 1073 ],
-      [ 430, 457, -281.97, 536, 515 ],
-      [ 516, 318, 195.96, 582, 446 ],
-      [ 994, 199, -76.86, 418, 1012 ],
-      [ 800, 727, 74.89, 910, 962 ],
-      [ 884, 393, -215, 949, 828 ],
-      [ 782, 729, 235.01, 1044, 1057 ],
-      [ 397, 513, -38.84, 630, 648 ],
-      [ 614, 461, 228.97, 750, 765 ],
-      [ 533, 404, 29.07, 661, 611 ],
-      [ 518, 385, -99.58, 465, 573 ],
-      [ 657, 707, 327.94, 930, 947 ],
-      [ 768, 326, -94.35, 382, 789 ],
-      [ 534, 303, 91.98, 321, 542 ],
-      [ 937, 135, 53.41, 666, 832 ],
-      [ 532, 29, -299.01, 282, 479 ],
-      [ 738, 615, -335.72, 925, 864 ],
-      [ 560, 144, 144.86, 540, 439 ],
-      [ 1017, 604, -143.59, 1176, 1088 ],
-      [ 830, 236, 234.95, 668, 814 ],
-      [ 360, 624, -124.39, 717, 648 ],
-      [ 730, 348, -181.98, 741, 372 ],
-      [ 684, 155, 122.85, 501, 657 ],
-      [ 38, 555, -313.91, 426, 412 ],
-      [ 681, 490, -188.19, 744, 581 ],
-      [ 245, 120, -161.22, 269, 191 ],
-      [ 332, 673, -304.93, 742, 657 ],
-      [ 366, 325, -170.16, 415, 381 ],
-      [ 60, 319, -323.93, 236, 293 ],
-      [ 368, 173, -103.4, 252, 396 ],
-      [ 190, 443, -239.3, 478, 388 ],
-      [ 525, 222, 86.17, 257, 538 ],
-      [ 779, 735, 231.02, 1060, 1066 ],
-      [ 441, 763, 31.22, 772, 881 ],
-      [ 507, 506, -230.09, 713, 712 ],
-      [ 751, 689, -118.02, 959, 985 ],
-      [ 10, 170, -207.58, 87, 154 ],
-      [ 88, 444, 96.25, 450, 134 ],
-      [ 358, 489, -325.38, 572, 605 ],
-      [ 410, 765, -163.49, 609, 848 ],
-      [ 774, 139, 250.99, 382, 775 ],
-      [ 946, 533, -261.54, 666, 1012 ],
-      [ 557, 348, -293.13, 538, 649 ],
-      [ 373, 679, -298.13, 774, 648 ],
-      [ 930, 291, 175.45, 950, 362 ],
-      [ 90, 86, 101, 101, 103 ],
-      [ 435, 93, 259.53, 169, 443 ],
-      [ 651, 159, -44.7, 573, 570 ],
-      [ 276, 427, -306.82, 507, 476 ],
-      [ 325, 734, -310.41, 769, 723 ],
-      [ 605, 546, -180.54, 609, 550 ],
-      [ 450, 487, 318.4, 658, 662 ],
-      [ 590, 137, -75.57, 279, 605 ],
-      [ 685, 416, -159.6, 786, 627 ],
-      [ 773, 345, 112.41, 613, 845 ],
-      [ 511, 412, 192.27, 586, 510 ],
-      [ 142, 738, 278.75, 749, 252 ],
-      [ 1023, 458, -293.08, 822, 1121 ],
-      [ 448, 665, 106.65, 765, 619 ],
-      [ 523, 141, 74, 280, 541 ],
-      [ 594, 594, -134.45, 838, 839 ],
-      [ 849, 163, 322.03, 768, 650 ],
-      [ 790, 605, -270.42, 610, 793 ],
-      [ 171, 351, 119.26, 389, 320 ],
-      [ 456, 162, -277.76, 222, 473 ],
-      [ 103, 545, 108.48, 549, 269 ],
-      [ 889, 651, 79.93, 796, 989 ],
-      [ 773, 650, -210.99, 997, 954 ],
-      [ 868, 218, -308.01, 706, 817 ],
-      [ 508, 610, -176.53, 543, 638 ],
-      [ 101, 287, -340.03, 192, 304 ],
-      [ 422, 155, -187.53, 438, 208 ],
-      [ 368, 747, -340.56, 596, 826 ],
-      [ 496, 107, -12.25, 506, 210 ],
-      [ 153, 448, 139.26, 407, 437 ],
-      [ 270, 525, -70.57, 583, 429 ],
-      [ 936, 424, -180.74, 940, 435 ],
-      [ 538, 235, -291.72, 417, 586 ],
-      [ 750, 118, -88.21, 140, 753 ],
-      [ 824, 499, -237.04, 867, 961 ],
-      [ 61, 575, 31.41, 352, 522 ],
-      [ 89, 123, 176.59, 95, 127 ],
-      [ 335, 399, 156.89, 465, 497 ],
-      [ 362, 2, 256.74, 84, 352 ],
-      [ 857, 117, -43.45, 701, 674 ],
-      [ 543, 319, -271.27, 331, 549 ],
-      [ 955, 253, 125.56, 761, 922 ],
-      [ 186, 656, 345.76, 340, 681 ],
-      [ 283, 450, -263.73, 477, 329 ],
-      [ 669, 300, 203.75, 732, 543 ],
-      [ 844, 345, 22.18, 911, 637 ],
-      [ 377, 412, 137.13, 556, 557 ],
-      [ 116, 663, -209.4, 426, 633 ],
-      [ 851, 166, -207.8, 829, 542 ],
-      [ 704, 40, -98.81, 146, 700 ],
-      [ 130, 447, 199.8, 272, 464 ],
-      [ 257, 395, -283.5, 443, 341 ],
-      [ 947, 534, 331.25, 1086, 923 ],
-      [ 927, 745, 33.05, 1183, 1129 ],
-      [ 40, 479, 313.89, 371, 360 ],
-      [ 842, 343, -82.76, 445, 878 ],
-      [ 361, 626, 303.08, 721, 644 ],
-      [ 44, 712, 203.88, 327, 667 ],
-      [ 258, 582, 359.09, 265, 586 ],
-      [ 475, 342, -323.57, 585, 557 ],
-      [ 846, 439, 95.2, 513, 881 ],
-      [ 618, 631, -255.2, 767, 757 ],
-      [ 727, 573, 244.51, 828, 902 ],
-      [ 686, 500, 222.61, 842, 831 ],
-      [ 221, 530, -49.12, 544, 514 ],
-      [ 156, 392, 272.31, 397, 171 ],
-      [ 550, 663, 138.28, 851, 860 ],
-      [ 469, 696, 85.4, 731, 523 ],
-      [ 247, 121, -89.45, 122, 247 ],
-      [ 246, 477, 230.48, 523, 492 ],
-      [ 298, 343, -78.27, 395, 361 ],
-      [ 945, 39, -206.96, 860, 462 ],
-      [ 70, 584, 329.99, 351, 541 ],
-      [ 930, 330, 78.29, 511, 977 ],
-      [ 734, 496, -145.75, 884, 822 ],
-      [ 153, 612, 221.61, 519, 558 ],
-      [ 28, 256, 122.53, 231, 160 ],
-      [ 736, 608, 54.16, 923, 952 ],
-      [ 346, 25, 167.09, 343, 100 ],
-      [ 731, 209, -106.47, 406, 759 ],
-      [ 546, 431, 214.67, 693, 663 ],
-      [ 947, 372, 250.3, 668, 1015 ],
-      [ 141, 424, 76.93, 444, 233 ],
-      [ 98, 353, -334.21, 242, 360 ],
-      [ 721, 135, 129.95, 565, 638 ],
-      [ 2, 249, -16.73, 72, 238 ],
-      [ 829, 270, 223.01, 789, 761 ],
-      [ 492, 54, 72.23, 201, 484 ],
-      [ 57, 313, 94.83, 316, 81 ],
-      [ 806, 92, 289.88, 360, 788 ],
-      [ 143, 502, -26.17, 348, 514 ],
-      [ 960, 444, 321.87, 1028, 941 ],
-      [ 804, 549, -1.2, 813, 565 ],
-      [ 402, 622, 329.13, 663, 740 ],
-      [ 438, 395, -264.53, 434, 473 ],
-      [ 111, 396, -31.3, 299, 395 ],
-      [ 599, 250, 221.13, 614, 581 ],
-      [ 404, 618, 271.02, 624, 414 ],
-      [ 1019, 661, -156.22, 1198, 1014 ],
-      [ 642, 497, -70.04, 685, 773 ],
-      [ 542, 604, -319.97, 803, 810 ],
-      [ 1017, 555, 95.73, 653, 1065 ],
-      [ 963, 390, -109.91, 693, 1037 ],
-      [ 449, 691, -246.89, 812, 682 ],
-      [ 405, 251, 123.08, 431, 475 ],
-      [ 541, 334, -225.77, 616, 619 ],
-      [ 1008, 15, 8.18, 999, 158 ],
-      [ 811, 318, -132.55, 781, 811 ],
-      [ 684, 314, -233.79, 657, 735 ],
-      [ 974, 27, 231.55, 625, 778 ],
-      [ 363, 434, 76.98, 504, 451 ],
-      [ 420, 428, -122.82, 586, 583 ],
-      [ 44, 382, 242.46, 358, 215 ],
-      [ 399, 718, 169.72, 520, 776 ],
-      [ 560, 254, -315.23, 576, 574 ],
-      [ 223, 659, -2.44, 249, 667 ],
-      [ 414, 647, 11.35, 532, 715 ],
-      [ 938, 487, 309.16, 969, 1035 ],
-      [ 237, 232, -116.8, 312, 315 ],
-      [ 417, 194, -91.67, 205, 421 ],
-      [ 234, 466, 314.41, 495, 493 ],
-      [ 856, 12, -4.73, 853, 82 ],
-      [ 169, 45, 352.78, 172, 66 ],
-      [ 2, 344, 305.73, 279, 202 ],
-      [ 755, 764, -176.75, 795, 804 ],
-      [ 819, 163, -279.19, 291, 834 ],
-      [ 303, 473, 327.13, 510, 561 ],
-      [ 832, 408, 63.3, 737, 926 ],
-      [ 759, 586, 280.36, 711, 851 ],
-      [ 81, 130, -257.92, 143, 105 ],
-      [ 463, 305, 178.43, 470, 316 ],
-      [ 398, 179, 189.44, 420, 241 ],
-      [ 903, 305, 230.84, 805, 892 ],
-      [ 893, 306, -167.29, 937, 494 ],
-      [ 816, 104, -171.82, 821, 218 ],
-      [ 52, 718, -19.67, 289, 693 ],
-      [ 167, 177, -296.63, 232, 228 ],
-      [ 120, 32, 85.5, 41, 122 ],
-      [ 722, 601, -85.84, 650, 764 ],
-      [ 609, 662, 35.57, 880, 892 ],
-      [ 754, 240, 321.29, 737, 658 ],
-      [ 496, 538, -231.74, 729, 721 ],
-      [ 254, 447, 53.71, 510, 469 ],
-      [ 70, 348, 340.06, 183, 350 ],
-      [ 344, 192, -282.97, 264, 378 ],
-      [ 612, 231, -330.59, 646, 501 ],
-      [ 72, 356, -165.26, 159, 361 ],
-      [ 162, 446, -135.64, 426, 431 ],
-      [ 795, 219, -292.56, 507, 818 ],
-      [ 161, 676, 327.18, 500, 655 ],
-      [ 724, 473, -168.11, 804, 611 ],
-      [ 669, 77, 336.01, 641, 342 ],
-      [ 851, 267, 34.78, 850, 704 ],
-      [ 416, 319, -359.02, 420, 326 ],
-      [ 387, 576, -179.64, 389, 577 ],
-      [ 497, 267, 36.17, 559, 509 ],
-      [ 539, 320, -350.8, 583, 402 ],
-      [ 816, 441, 66.6, 729, 923 ],
-      [ 111, 269, 271.66, 271, 118 ],
-      [ 207, 390, 184.72, 237, 405 ],
-      [ 160, 164, -92.13, 168, 164 ],
-      [ 433, 666, -20.46, 637, 775 ],
-      [ 399, 536, 229.18, 665, 650 ],
-      [ 960, 79, -192.4, 954, 282 ],
-      [ 962, 369, 347.54, 1018, 567 ],
-      [ 194, 741, -122.85, 727, 563 ],
-      [ 758, 377, 176.79, 777, 417 ],
-      [ 771, 220, -130.18, 664, 730 ],
-      [ 353, 303, 121.74, 443, 458 ],
-      [ 228, 458, -233.29, 503, 455 ],
-      [ 1002, 577, -79.69, 746, 1088 ],
-      [ 359, 133, -176.18, 366, 155 ],
-      [ 842, 432, 325.52, 938, 832 ],
-      [ 656, 384, -320.92, 751, 711 ],
-      [ 895, 337, 24.6, 953, 678 ],
-      [ 877, 482, -0.9, 883, 495 ],
-      [ 190, 282, 351.99, 226, 305 ],
-      [ 954, 91, -162, 934, 380 ],
-      [ 256, 356, 121.52, 436, 403 ],
-      [ 942, 526, -170.02, 1017, 680 ],
-      [ 98, 510, -349.45, 189, 518 ],
-      [ 496, 11, -224.86, 359, 356 ],
-      [ 758, 642, 179.75, 760, 644 ],
-      [ 709, 366, -180.86, 713, 375 ],
-      [ 764, 269, 134.32, 725, 733 ],
-      [ 287, 158, -134.37, 312, 314 ],
-      [ 798, 300, 129.27, 737, 806 ],
-      [ 787, 247, 214.41, 788, 647 ],
-      [ 44, 439, -172.34, 101, 439 ],
-      [ 729, 377, 320.69, 802, 753 ],
-      [ 999, 450, 78.19, 644, 1069 ],
-      [ 1014, 54, 88.04, 88, 1015 ],
-      [ 183, 622, -30.22, 470, 629 ],
-      [ 950, 385, 312.59, 924, 960 ],
-      [ 181, 190, -155.94, 241, 245 ],
-      [ 884, 405, -8.25, 931, 527 ],
-      [ 181, 236, 272.79, 243, 191 ],
-      [ 877, 57, -216.03, 743, 560 ],
-      [ 670, 90, 195.13, 668, 260 ],
-      [ 937, 637, -172.02, 1014, 760 ],
-      [ 881, 618, 249.25, 889, 1041 ],
-      [ 480, 610, 299.25, 765, 716 ],
-      [ 93, 747, 161.79, 321, 738 ],
-      [ 562, 691, -197.6, 744, 827 ],
-      [ 495, 59, -19.85, 484, 223 ],
-      [ 785, 721, 359.66, 787, 725 ],
-      [ 261, 89, -139.99, 255, 234 ],
-      [ 137, 746, -86.8, 751, 178 ],
-      [ 342, 480, -2.77, 363, 495 ],
-      [ 107, 414, -126.38, 395, 331 ],
-      [ 375, 306, -267.64, 321, 386 ],
-      [ 217, 666, 304.01, 672, 552 ],
-      [ 131, 735, 283.69, 744, 301 ],
-      [ 873, 388, 211.15, 947, 782 ],
-      [ 80, 759, 265.54, 762, 137 ],
-      [ 564, 579, 221.17, 804, 806 ],
-      [ 563, 7, 303.67, 317, 472 ],
-      [ 876, 109, 282.32, 291, 878 ],
-      [ 241, 365, 11.53, 309, 406 ],
-      [ 749, 446, -321.05, 862, 817 ],
-      [ 57, 726, -34.7, 458, 629 ],
-      [ 188, 121, -131.26, 213, 220 ],
-      [ 109, 219, -162.69, 168, 240 ],
-      [ 1024, 105, 200.79, 993, 460 ],
-      [ 812, 165, 191.77, 827, 326 ],
-      [ 678, 587, 14.3, 801, 736 ],
-      [ 481, 241, 20.14, 534, 391 ],
-      [ 401, 130, 122.08, 322, 407 ],
-      [ 290, 310, -255.92, 371, 355 ],
-      [ 818, 103, 161.27, 807, 359 ],
-      [ 874, 145, 121.63, 581, 819 ],
-      [ 313, 286, 234.41, 414, 419 ],
-      [ 638, 367, -281.16, 483, 696 ],
-      [ 918, 367, -183.26, 937, 417 ],
-      [ 692, 208, -29.51, 703, 521 ],
-      [ 453, 716, -199.75, 668, 826 ],
-      [ 985, 309, 25.67, 1021, 705 ],
-      [ 502, 609, 146.76, 753, 783 ],
-      [ 163, 58, -283.29, 93, 171 ],
-      [ 311, 671, -187.24, 393, 704 ],
-      [ 29, 558, -51.47, 454, 370 ],
-      [ 714, 24, 216.39, 587, 441 ],
-      [ 535, 502, -159.67, 674, 655 ],
-      [ 647, 423, 184.07, 674, 466 ],
-      [ 899, 174, -341.28, 907, 453 ],
-      [ 345, 513, 329.85, 555, 617 ],
-      [ 573, 483, -101.39, 585, 655 ],
-      [ 97, 91, -251.33, 117, 119 ],
-      [ 818, 213, -197.64, 844, 449 ],
-      [ 927, 447, -288.8, 721, 1021 ],
-      [ 149, 468, 234.16, 465, 393 ],
-      [ 587, 235, 256.52, 364, 624 ],
-      [ 383, 636, 7.03, 458, 677 ],
-      [ 668, 353, -317, 729, 713 ],
-      [ 418, 258, -154.77, 487, 410 ],
-      [ 444, 516, 325.47, 656, 676 ],
-      [ 402, 178, 58.01, 363, 434 ],
-      [ 769, 250, 143.01, 764, 661 ],
-      [ 924, 95, 342.54, 909, 368 ],
-      [ 131, 22, 40.69, 113, 102 ],
-      [ 232, 133, -241.28, 228, 266 ],
-      [ 53, 573, -21.74, 260, 551 ],
-      [ 930, 92, -146.28, 823, 592 ],
-      [ 428, 593, 183.95, 466, 620 ],
-      [ 489, 138, -294.32, 327, 502 ],
-      [ 781, 471, 189.43, 846, 591 ],
-      [ 732, 4, 355.43, 729, 62 ],
-      [ 302, 580, -130.66, 635, 606 ],
-      [ 1018, 505, -42.07, 1092, 1057 ],
-      [ 993, 603, -22.08, 1146, 932 ],
-      [ 539, 8, 102.05, 120, 528 ],
-      [ 708, 48, -81.14, 155, 706 ],
-      [ 165, 745, 4.73, 225, 755 ],
-      [ 469, 298, -160.01, 541, 439 ],
-      [ 218, 664, -31.28, 530, 680 ],
-      [ 312, 482, -310.38, 569, 549 ],
-      [ 69, 262, -307.45, 249, 213 ],
-      [ 63, 489, 236.14, 440, 323 ],
-      [ 389, 484, -10.97, 472, 549 ],
-      [ 841, 460, -166.4, 924, 643 ],
-      [ 298, 96, -158.96, 311, 195 ],
-      [ 955, 626, -114.48, 964, 1127 ],
-      [ 327, 749, -136.45, 752, 767 ],
-      [ 846, 332, 142.16, 872, 779 ],
-      [ 107, 496, 44.36, 423, 429 ],
-      [ 574, 729, -224.62, 920, 921 ],
-      [ 645, 13, 20.69, 608, 239 ],
-      [ 719, 59, -241.73, 392, 660 ],
-      [ 543, 351, 211.16, 645, 579 ],
-      [ 16, 213, -78.13, 210, 59 ],
-      [ 291, 436, 11.09, 369, 483 ],
-      [ 577, 383, -122.45, 631, 691 ],
-      [ 926, 629, -140.49, 1113, 1073 ],
-      [ 220, 495, 170.69, 297, 522 ],
-      [ 934, 574, -84.97, 652, 980 ],
-      [ 485, 236, -121.77, 455, 535 ],
-      [ 678, 720, -110.28, 909, 884 ],
-      [ 195, 491, -55.09, 513, 440 ],
-      [ 363, 130, 273.14, 148, 369 ],
-      [ 152, 141, -247.66, 187, 193 ],
-      [ 553, 359, 160.46, 641, 521 ],
-      [ 56, 23, -200.49, 60, 40 ],
-      [ 394, 717, -331.63, 687, 818 ],
-      [ 706, 114, 131.79, 555, 601 ],
-      [ 437, 46, -50.28, 313, 365 ],
-      [ 828, 410, 170.92, 882, 534 ],
-      [ 143, 150, 124.98, 204, 202 ],
-      [ 498, 296, -135.53, 561, 558 ],
-      [ 932, 568, -14.46, 1043, 782 ],
-      [ 808, 681, 117.2, 975, 1028 ],
-      [ 968, 327, -266.95, 378, 982 ],
-      [ 684, 369, -245.86, 616, 774 ],
-      [ 911, 665, -294.01, 977, 1103 ],
-      [ 952, 426, -187.84, 1001, 550 ],
-      [ 627, 753, -145.19, 943, 974 ],
-      [ 44, 606, 238.3, 538, 354 ],
-      [ 799, 713, -342, 979, 924 ],
-      [ 464, 319, -65.38, 482, 554 ],
-      [ 784, 249, -253.58, 460, 821 ],
-      [ 251, 87, -335.43, 264, 183 ],
-      [ 930, 45, -29.07, 833, 490 ],
-      [ 38, 558, 316.6, 409, 431 ],
-      [ 200, 473, 219.12, 452, 492 ],
-      [ 294, 418, -102, 469, 373 ],
-      [ 539, 120, -116.07, 343, 536 ],
-      [ 845, 153, -268.05, 181, 848 ],
-      [ 672, 751, -319.72, 998, 1007 ],
-      [ 697, 331, -21.35, 769, 561 ],
-      [ 92, 151, 211.96, 157, 175 ],
-      [ 244, 339, 293.35, 406, 358 ],
-      [ 279, 267, 335.17, 364, 359 ],
-      [ 749, 296, 137.87, 754, 721 ],
-      [ 687, 446, -139.04, 809, 786 ],
-      [ 487, 666, 252.84, 778, 660 ],
-      [ 854, 302, -354.74, 878, 379 ],
-      [ 177, 167, -212.02, 239, 234 ],
-      [ 308, 670, -228.12, 704, 675 ],
-      [ 365, 425, 81.96, 472, 420 ],
-      [ 847, 494, 222.68, 956, 936 ],
-      [ 636, 676, -180.42, 640, 679 ],
-      [ 541, 116, 69.88, 295, 547 ],
-      [ 506, 678, 346.6, 648, 777 ],
-      [ 190, 425, 43.89, 431, 437 ],
-      [ 504, 22, -52.24, 324, 411 ],
-      [ 352, 662, 230.37, 733, 692 ],
-      [ 359, 27, -333.47, 333, 184 ],
-      [ 570, 257, 294.55, 469, 625 ],
-      [ 757, 530, -27.59, 914, 820 ],
-      [ 362, 397, -285.26, 478, 453 ],
-      [ 167, 106, 347.98, 184, 138 ],
-      [ 422, 511, -263.32, 557, 477 ],
-      [ 9, 122, -348.21, 33, 120 ],
-      [ 1014, 264, 49.91, 855, 945 ],
-      [ 565, 642, 70.15, 795, 749 ],
-      [ 1003, 138, -29.48, 940, 613 ],
-      [ 818, 407, -5.06, 849, 477 ],
-      [ 856, 66, 235.38, 539, 740 ],
-      [ 763, 634, 12.1, 879, 779 ],
-      [ 212, 137, -336.25, 249, 210 ],
-      [ 318, 262, -237.7, 390, 407 ],
-      [ 301, 578, 241.1, 650, 541 ],
-      [ 438, 584, 355.3, 483, 617 ],
-      [ 455, 577, -117.24, 720, 667 ],
-      [ 14, 232, -235.53, 198, 141 ],
-      [ 626, 216, -106.74, 386, 660 ],
-      [ 72, 61, 274.4, 65, 76 ],
-      [ 577, 702, 335.87, 812, 876 ],
-      [ 399, 506, 209.55, 596, 635 ],
-      [ 929, 665, 337.4, 1112, 971 ],
-      [ 962, 135, -137.9, 803, 743 ],
-      [ 112, 360, -316.76, 328, 338 ],
-      [ 967, 688, 230.71, 1143, 1183 ],
-      [ 961, 261, 51.08, 806, 911 ],
-      [ 282, 271, 268.25, 278, 288 ],
-      [ 459, 740, -250.03, 852, 683 ],
-      [ 819, 26, -193.37, 802, 213 ],
-      [ 697, 458, -255.25, 620, 790 ],
-      [ 663, 757, 218.88, 990, 1004 ],
-      [ 449, 685, 121.42, 819, 739 ],
-      [ 417, 639, 247.11, 750, 632 ],
-      [ 733, 723, -136.06, 1028, 1028 ],
-      [ 794, 680, -211.41, 1031, 992 ],
-      [ 610, 632, 32.85, 855, 861 ],
-      [ 171, 75, 286.64, 119, 184 ],
-      [ 40, 419, 260.1, 418, 110 ],
-      [ 197, 264, 283.76, 301, 254 ],
-      [ 434, 19, -7.45, 431, 75 ],
-      [ 583, 516, -18.13, 714, 671 ],
-      [ 382, 84, -96.2, 124, 387 ],
-      [ 43, 397, -217.9, 277, 338 ],
-      [ 906, 178, -260.93, 318, 921 ],
-      [ 201, 5, -344.2, 194, 59 ],
-      [ 412, 462, 247.6, 583, 555 ],
-      [ 971, 590, 317.22, 1112, 1092 ],
-      [ 866, 620, -10.88, 966, 772 ],
-      [ 724, 768, 236.57, 1038, 1026 ],
-      [ 616, 325, 253.97, 481, 681 ],
-      [ 93, 761, 17.18, 313, 754 ],
-      [ 580, 280, 95.75, 337, 604 ],
-      [ 955, 311, -252.94, 577, 1002 ],
-      [ 133, 223, -86.78, 229, 145 ],
-      [ 274, 373, -82.53, 404, 319 ],
-      [ 296, 682, 350.52, 402, 721 ],
-      [ 136, 641, 183.43, 172, 647 ],
-      [ 76, 523, 44.45, 420, 426 ],
-      [ 572, 298, 43.57, 619, 610 ],
-      [ 397, 759, 347.43, 551, 827 ],
-      [ 246, 61, 340.77, 251, 139 ],
-      [ 782, 495, -117.54, 799, 921 ],
-      [ 406, 443, 173.94, 450, 482 ],
-      [ 559, 542, -337.71, 723, 713 ],
-      [ 947, 747, 11.49, 1077, 920 ],
-      [ 318, 201, -69.91, 297, 367 ],
-      [ 304, 303, -189.04, 348, 345 ],
-      [ 53, 359, 300.74, 335, 229 ],
-      [ 628, 20, -140.49, 496, 413 ],
-      [ 178, 317, -148.96, 314, 362 ],
-      [ 161, 501, -92.13, 505, 178 ],
-      [ 133, 319, -348.12, 196, 339 ],
-      [ 478, 624, 66.87, 761, 684 ],
-      [ 213, 274, -145.07, 330, 345 ],
-      [ 245, 216, -164.86, 291, 271 ],
-      [ 773, 454, 23.31, 889, 722 ],
-      [ 162, 682, 307.04, 640, 540 ],
-      [ 405, 722, -76.47, 795, 562 ],
-      [ 321, 425, -58.1, 529, 497 ],
-      [ 633, 558, 238.73, 804, 830 ],
-      [ 933, 678, -12.03, 1052, 857 ],
-      [ 290, 10, 286.84, 93, 280 ],
-      [ 307, 368, 151.05, 446, 469 ],
-      [ 914, 527, -312.32, 1005, 1030 ],
-      [ 196, 711, -110.04, 734, 427 ],
-      [ 473, 522, 315.35, 702, 703 ],
-      [ 1019, 643, 234.38, 1115, 1201 ],
-      [ 943, 179, 190.45, 958, 346 ],
-      [ 322, 419, -131.97, 526, 518 ],
-      [ 752, 126, -329.31, 710, 491 ],
-      [ 579, 57, 305.87, 384, 502 ],
-      [ 50, 274, 314.31, 229, 226 ],
-      [ 970, 504, -61.53, 904, 1092 ],
-      [ 673, 422, -287.69, 606, 769 ],
-      [ 741, 568, -341.9, 880, 770 ],
-      [ 72, 155, 147.35, 144, 168 ],
-      [ 9, 150, 30.13, 82, 134 ],
-      [ 854, 89, 197.41, 840, 339 ],
-      [ 613, 331, -130.07, 646, 681 ],
-      [ 937, 126, -12.79, 940, 330 ],
-      [ 981, 560, 40.29, 1110, 1061 ],
-      [ 904, 598, 297.04, 942, 1077 ],
-      [ 839, 557, 49.32, 968, 999 ],
-      [ 239, 293, -275.98, 315, 268 ],
-      [ 342, 80, 256.08, 159, 349 ],
-      [ 368, 134, -319.39, 366, 341 ],
-      [ 66, 141, -179.05, 66, 141 ],
-      [ 620, 13, -95.86, 75, 616 ],
-      [ 389, 472, 213.71, 584, 607 ],
-      [ 716, 407, 331.54, 822, 699 ],
-      [ 186, 374, 136.35, 392, 398 ],
-      [ 755, 284, -23.86, 804, 565 ],
-      [ 666, 145, -222.27, 590, 553 ],
-      [ 224, 324, 52.16, 393, 375 ],
-      [ 343, 580, 127.12, 668, 622 ],
-      [ 196, 88, 252.56, 141, 211 ],
-      [ 253, 137, -336.17, 286, 227 ],
-      [ 511, 602, -324.69, 764, 786 ],
-      [ 886, 125, 117.44, 519, 843 ],
-      [ 678, 662, -221.74, 946, 944 ],
-      [ 638, 33, 128.46, 422, 519 ],
-      [ 320, 599, -326.1, 599, 675 ],
-      [ 798, 330, -191.1, 847, 476 ],
-      [ 994, 498, 111.94, 833, 1107 ],
-      [ 556, 755, -64.69, 919, 825 ],
-      [ 225, 133, 17.12, 254, 193 ],
-      [ 72, 323, 144.73, 245, 304 ],
-      [ 106, 706, -11.75, 246, 712 ],
-      [ 156, 602, 105.1, 621, 306 ],
-      [ 835, 343, 5.2, 862, 417 ],
-      [ 8, 53, 35.77, 37, 47 ],
-      [ 702, 292, -122.9, 625, 747 ],
-      [ 751, 122, 186.23, 758, 201 ],
-      [ 991, 99, -67.53, 468, 953 ],
-      [ 638, 516, -80.16, 616, 716 ],
-      [ 34, 684, 44.43, 503, 511 ],
-      [ 570, 737, 346.85, 722, 847 ],
-      [ 264, 48, 288.03, 126, 266 ],
-      [ 760, 165, 132.14, 631, 673 ],
-      [ 397, 23, -267.13, 42, 396 ],
-      [ 916, 28, -218.24, 736, 587 ],
-      [ 455, 555, 55.17, 715, 690 ],
-      [ 792, 349, 169.23, 843, 489 ],
-      [ 545, 324, 261.67, 398, 585 ],
-      [ 961, 34, 24.65, 887, 431 ],
-      [ 335, 60, -54.7, 241, 308 ],
-      [ 910, 487, -83.82, 580, 956 ],
-      [ 892, 685, -38.88, 1123, 1092 ],
-      [ 789, 486, 115.43, 777, 920 ],
-      [ 465, 15, 136.55, 347, 329 ],
-      [ 597, 702, 162.75, 778, 846 ],
-      [ 799, 275, -37.53, 800, 704 ],
-      [ 365, 101, 289.64, 216, 377 ],
-      [ 94, 510, -126.88, 463, 380 ],
-      [ 978, 462, -95.12, 546, 1014 ],
-      [ 501, 713, -39.78, 840, 868 ],
-      [ 936, 628, -303.76, 1042, 1127 ],
-      [ 304, 528, 337.71, 480, 604 ],
-      [ 761, 352, 72.83, 560, 831 ],
-      [ 413, 701, 86.73, 723, 452 ],
-      [ 95, 380, 24.59, 244, 385 ],
-      [ 839, 211, 282.2, 382, 865 ],
-      [ 274, 485, -343.38, 401, 543 ],
-      [ 173, 555, 134.13, 518, 509 ],
-      [ 505, 520, -152.84, 685, 692 ],
-      [ 882, 128, -204.43, 856, 480 ],
-      [ 313, 61, -336.21, 311, 182 ],
-      [ 393, 289, 158.67, 471, 410 ],
-      [ 361, 92, -231.78, 295, 339 ],
-      [ 977, 401, -295.42, 781, 1054 ],
-      [ 588, 472, 60.64, 699, 743 ],
-      [ 111, 333, 258.13, 347, 175 ],
-      [ 1, 538, -7.75, 72, 533 ],
-      [ 24, 668, -207.79, 332, 601 ],
-      [ 727, 278, 279.69, 395, 763 ],
-      [ 1022, 171, -320.66, 898, 779 ],
-      [ 219, 406, -263.54, 427, 262 ],
-      [ 253, 700, 7.25, 338, 725 ],
-      [ 991, 203, 92.81, 251, 998 ],
-      [ 149, 167, -251.44, 205, 193 ],
-      [ 241, 608, 191.06, 352, 642 ],
-      [ 839, 691, -216.96, 1085, 1055 ],
-      [ 694, 691, 287.01, 863, 865 ],
-      [ 171, 709, 192.56, 319, 728 ],
-      [ 388, 486, -267.17, 504, 410 ],
-      [ 273, 484, -107.27, 542, 403 ],
-      [ 329, 648, 272.46, 660, 356 ],
-      [ 466, 69, 208.26, 442, 280 ],
-      [ 989, 44, -322.16, 808, 641 ],
-      [ 609, 155, -165.97, 627, 296 ],
-      [ 763, 335, -316.43, 783, 768 ],
-      [ 523, 196, 331.05, 551, 425 ],
-      [ 726, 716, 258.65, 843, 851 ],
-      [ 623, 76, 203, 602, 312 ],
-      [ 384, 366, -61.76, 502, 511 ],
-      [ 516, 571, -328.46, 738, 756 ],
-      [ 876, 49, 278.47, 176, 873 ],
-      [ 751, 399, 342.82, 834, 602 ],
-      [ 536, 372, -336.75, 639, 553 ],
-      [ 589, 60, -191.98, 588, 180 ],
-      [ 865, 632, 121.69, 992, 1067 ],
-      [ 927, 256, 304.9, 739, 906 ],
-      [ 886, 32, 255.78, 247, 865 ],
-      [ 742, 499, 326.58, 893, 824 ],
-      [ 519, 19, -50.51, 344, 412 ],
-      [ 943, 406, -235.77, 866, 1006 ],
-      [ 988, 294, -189.88, 1023, 458 ],
-      [ 872, 89, 183.64, 875, 143 ],
-      [ 847, 491, -187.97, 906, 602 ],
-      [ 880, 164, -131.9, 708, 763 ],
-      [ 95, 45, -259.59, 61, 100 ],
-      [ 780, 740, -19.97, 985, 962 ],
-      [ 702, 636, 10, 801, 747 ],
-      [ 554, 424, -242.69, 631, 686 ],
-      [ 506, 45, -225.48, 386, 391 ],
-      [ 946, 752, 154.49, 1177, 1085 ],
-      [ 99, 724, -290.08, 713, 341 ],
-      [ 341, 610, -206.71, 578, 697 ],
-      [ 90, 477, 252.85, 481, 225 ],
-      [ 335, 368, -313.57, 497, 496 ],
-      [ 659, 440, -271.91, 461, 673 ],
-      [ 802, 257, -298.62, 610, 827 ],
-      [ 262, 15, 297.37, 132, 239 ],
-      [ 788, 430, -25.32, 895, 726 ],
-      [ 955, 41, 16.33, 928, 307 ],
-      [ 122, 750, 0.56, 128, 751 ],
-      [ 854, 56, -41.09, 679, 603 ],
-      [ 953, 312, -190.15, 993, 473 ],
-      [ 147, 379, 256.2, 402, 231 ],
-      [ 1019, 630, -118.81, 1042, 1195 ],
-      [ 61, 356, 292.86, 350, 194 ],
-      [ 186, 189, -187.11, 207, 210 ],
-      [ 274, 385, -173.82, 312, 411 ],
-      [ 184, 208, 228.5, 276, 274 ],
-      [ 660, 155, 266.41, 195, 667 ],
-      [ 172, 247, 249.42, 290, 247 ],
-      [ 684, 119, 301.76, 460, 644 ],
-      [ 114, 65, -126.46, 118, 129 ],
-      [ 356, 175, 228.43, 366, 381 ],
-      [ 208, 171, 98.43, 199, 229 ],
-      [ 551, 216, -288.35, 378, 590 ],
-      [ 456, 356, -111.48, 496, 553 ],
-      [ 701, 560, 249.07, 772, 853 ],
-      [ 966, 698, -276.73, 806, 1041 ],
-      [ 779, 425, -131.54, 833, 864 ],
-      [ 646, 554, 99.15, 649, 724 ],
-      [ 489, 299, 209.84, 572, 501 ],
-      [ 406, 384, 270.44, 386, 408 ],
-      [ 738, 650, -285.75, 826, 886 ],
-      [ 551, 38, -125.87, 352, 467 ],
-      [ 179, 451, 76.5, 480, 279 ],
-      [ 281, 24, -310.54, 200, 229 ],
-      [ 634, 550, 214.41, 833, 811 ],
-      [ 477, 506, 148.69, 670, 678 ],
-      [ 595, 322, -173, 628, 391 ],
-      [ 920, 38, 345.67, 899, 264 ],
-      [ 549, 404, -94.74, 447, 579 ],
-      [ 335, 708, 264.69, 735, 398 ],
-      [ 208, 494, 153.81, 404, 533 ],
-      [ 314, 138, 188.81, 330, 183 ],
-      [ 647, 272, -109.12, 467, 699 ],
-      [ 243, 482, -87.11, 492, 266 ],
-      [ 314, 190, -292.29, 295, 362 ],
-      [ 107, 547, 181.54, 120, 548 ],
-      [ 830, 225, -237.15, 639, 818 ],
-      [ 72, 146, -201.94, 121, 160 ],
-      [ 52, 557, 176.6, 84, 558 ],
-      [ 429, 41, 120.19, 250, 390 ],
-      [ 293, 196, -137.62, 347, 341 ],
-      [ 1024, 431, -8.38, 1075, 575 ],
-      [ 781, 147, 246.32, 447, 773 ],
-      [ 113, 330, -21.87, 226, 348 ],
-      [ 502, 564, 155.6, 690, 720 ],
-      [ 598, 644, -52.24, 874, 866 ],
-      [ 344, 498, 157.9, 505, 589 ],
-      [ 519, 552, 294.48, 716, 701 ],
-      [ 744, 590, 96.63, 671, 806 ],
-      [ 483, 144, 134.21, 439, 445 ],
-      [ 142, 363, 317.65, 348, 363 ],
-      [ 458, 363, 1.19, 465, 372 ],
-      [ 958, 180, 138.96, 840, 764 ],
-      [ 796, 265, -272.53, 300, 807 ],
-      [ 253, 641, 256.2, 681, 397 ],
-      [ 987, 321, 139.53, 958, 883 ],
-      [ 400, 578, -113.84, 689, 598 ],
-      [ 113, 199, -316.9, 218, 222 ],
-      [ 20, 756, 236.02, 637, 438 ],
-      [ 669, 350, -349.85, 720, 462 ],
-      [ 348, 456, -9.77, 418, 508 ],
-      [ 288, 31, 330.03, 263, 170 ],
-      [ 801, 749, -221.64, 1096, 1091 ],
-      [ 487, 578, 26.13, 692, 733 ],
-      [ 611, 768, -93.8, 805, 659 ],
-      [ 464, 739, 206.31, 742, 866 ],
-      [ 150, 271, 27.98, 259, 309 ],
-      [ 500, 355, 214.08, 612, 573 ],
-      [ 562, 370, 202.66, 660, 556 ],
-      [ 385, 103, -189.69, 396, 165 ],
-      [ 400, 364, 237.25, 521, 532 ],
-      [ 898, 579, 265.83, 641, 936 ],
-      [ 855, 412, 247.68, 704, 945 ],
-      [ 28, 8, 69.11, 16, 29 ],
-      [ 577, 467, 68.26, 647, 708 ],
-      [ 956, 46, 40.72, 754, 658 ],
-      [ 737, 158, 294.26, 445, 736 ],
-      [ 265, 533, -93.23, 545, 293 ],
-      [ 57, 186, 252.73, 193, 108 ],
-      [ 858, 475, 348.77, 933, 633 ],
-      [ 76, 6, -30.9, 67, 44 ],
-      [ 925, 679, -208.65, 1137, 1038 ],
-      [ 791, 552, 176.74, 820, 594 ],
-      [ 632, 573, 184.2, 671, 616 ],
-      [ 218, 237, -98.78, 266, 250 ],
-      [ 827, 186, -56.01, 615, 789 ],
-      [ 373, 738, 92.05, 751, 397 ],
-      [ 279, 169, -128.47, 304, 322 ],
-      [ 659, 211, 45.56, 612, 618 ],
-      [ 506, 86, -229.86, 392, 440 ],
-      [ 490, 143, -224.56, 449, 444 ],
-      [ 958, 68, -308.34, 647, 793 ],
-      [ 150, 661, 208.86, 449, 650 ],
-      [ 913, 367, 25.37, 981, 723 ],
-      [ 663, 530, 247.34, 743, 814 ],
-      [ 10, 381, -299.04, 337, 193 ],
-      [ 443, 661, -327.45, 729, 795 ],
-      [ 62, 102, -169.91, 78, 109 ],
-      [ 391, 596, 27.65, 623, 709 ],
-      [ 968, 207, 107.88, 494, 984 ],
-      [ 129, 574, 241.1, 564, 388 ],
-      [ 321, 524, 304.55, 613, 561 ],
-      [ 395, 636, 204.06, 618, 741 ],
-      [ 180, 553, -172.71, 247, 570 ],
-      [ 728, 281, 323.36, 751, 659 ],
-      [ 568, 289, -39.48, 621, 584 ],
-      [ 655, 620, -140.52, 898, 894 ],
-      [ 701, 666, -45.48, 965, 966 ],
-      [ 971, 191, -207.62, 949, 618 ],
-      [ 499, 149, -14.17, 518, 266 ],
-      [ 140, 245, -196.4, 203, 273 ],
-      [ 995, 485, 294.81, 856, 1107 ],
-      [ 916, 13, 170.8, 906, 158 ],
-      [ 694, 148, -31.69, 667, 490 ],
-      [ 961, 694, 231.56, 1140, 1182 ],
-      [ 908, 351, -218.24, 930, 837 ],
-      [ 340, 74, -357.1, 343, 91 ],
-      [ 652, 599, 267.04, 630, 681 ],
-      [ 76, 559, -274.31, 562, 117 ],
-      [ 293, 164, -135.55, 323, 321 ],
-      [ 784, 269, 93.44, 316, 797 ],
-      [ 1017, 247, -171.9, 1040, 387 ],
-      [ 924, 165, -159.9, 923, 471 ],
-      [ 655, 686, -21.69, 861, 879 ],
-      [ 98, 638, -91.92, 640, 117 ],
-      [ 939, 551, 236.78, 974, 1086 ],
-      [ 117, 38, 305.36, 97, 117 ],
-      [ 121, 527, 146.37, 392, 505 ],
-      [ 1013, 583, -50.09, 1095, 1151 ],
-      [ 111, 34, 103.63, 59, 114 ],
-      [ 430, 622, 355.41, 477, 654 ],
-      [ 51, 616, -133.67, 480, 460 ],
-      [ 318, 541, 20.97, 490, 618 ],
-      [ 603, 264, -56.65, 551, 648 ],
-      [ 60, 337, -179.21, 63, 336 ],
-      [ 441, 274, 336.64, 512, 426 ],
-      [ 266, 361, -348.6, 331, 406 ],
-      [ 189, 452, 144.59, 416, 476 ],
-      [ 909, 443, -29.3, 1008, 830 ],
-      [ 325, 526, 2.12, 343, 538 ],
-      [ 985, 80, -135.32, 755, 748 ],
-      [ 978, 118, -278.03, 253, 984 ],
-      [ 276, 356, 228.81, 448, 440 ],
-      [ 818, 40, -244.03, 394, 752 ],
-      [ 225, 85, 71.79, 151, 240 ],
-      [ 483, 416, 327.8, 629, 609 ],
-      [ 449, 615, -54.23, 760, 723 ],
-      [ 466, 756, -351.4, 573, 816 ],
-      [ 159, 669, 63.34, 669, 442 ],
-      [ 630, 145, -164.34, 644, 309 ],
-      [ 121, 115, -89.96, 114, 120 ],
-      [ 440, 80, 19.91, 440, 224 ],
-      [ 557, 287, 353.35, 585, 349 ],
-      [ 370, 132, -329.54, 385, 301 ],
-      [ 535, 301, -250.42, 463, 604 ],
-      [ 125, 663, 138.77, 531, 580 ],
-      [ 79, 231, -5.19, 98, 237 ],
-      [ 514, 580, -16.94, 659, 704 ],
-      [ 526, 699, -110.11, 835, 732 ],
-      [ 105, 403, 25.22, 266, 409 ],
-      [ 383, 493, 132.67, 621, 614 ],
-      [ 767, 55, 207.66, 704, 404 ],
-      [ 283, 472, -243.5, 548, 463 ],
-      [ 274, 749, -119.81, 785, 608 ],
-      [ 317, 382, 162.07, 419, 459 ],
-      [ 473, 476, 62.93, 639, 638 ],
-      [ 158, 535, 279.41, 552, 242 ],
-      [ 663, 152, 102.91, 296, 679 ],
-      [ 127, 547, 38.04, 437, 509 ],
-      [ 482, 625, -304.52, 788, 751 ],
-      [ 6, 143, 157.38, 60, 133 ],
-      [ 707, 718, 208.39, 961, 967 ],
-      [ 490, 162, -69.52, 322, 516 ],
-      [ 656, 367, -87.51, 394, 671 ],
-      [ 997, 605, 270.38, 610, 1000 ],
-      [ 716, 191, -4.08, 727, 241 ],
-      [ 293, 309, -223.07, 425, 425 ],
-      [ 179, 38, -80.84, 65, 182 ],
-      [ 837, 133, -288.78, 395, 835 ],
-      [ 379, 494, 296.46, 609, 559 ],
-      [ 458, 498, -289.49, 621, 597 ],
-      [ 170, 260, -336.57, 258, 306 ],
-      [ 978, 627, -184.85, 1027, 706 ],
-      [ 367, 351, 158.99, 468, 458 ],
-      [ 755, 330, 5.41, 782, 400 ],
-      [ 628, 99, 184.02, 632, 142 ],
-      [ 110, 319, -246.44, 335, 227 ],
-      [ 304, 452, -211.14, 494, 543 ],
-      [ 702, 312, -87.03, 347, 717 ],
-      [ 803, 596, -344.23, 934, 792 ],
-      [ 712, 171, 122.5, 526, 691 ],
-      [ 813, 298, -354.2, 838, 378 ],
-      [ 846, 263, 233.36, 714, 834 ],
-      [ 71, 539, -158.35, 263, 526 ],
-      [ 809, 337, 150.89, 870, 686 ],
-      [ 305, 39, 243.13, 171, 289 ],
-      [ 55, 121, -178.71, 56, 121 ],
-      [ 216, 349, 244.81, 406, 343 ],
-      [ 428, 106, -183.44, 433, 130 ],
-      [ 816, 708, -345.39, 968, 890 ],
-      [ 839, 474, -185.56, 881, 552 ],
-      [ 501, 315, 93.42, 343, 518 ],
-      [ 509, 181, 339.95, 539, 344 ],
-      [ 329, 234, 124.48, 379, 402 ],
-      [ 616, 73, -280.47, 183, 618 ],
-      [ 318, 301, -244.54, 408, 415 ],
-      [ 152, 342, -131.81, 355, 340 ],
-      [ 410, 504, 194.66, 523, 590 ],
-      [ 246, 56, 294.02, 150, 247 ],
-      [ 497, 668, 237.51, 828, 777 ],
-      [ 518, 529, -38.43, 733, 735 ],
-      [ 766, 136, 256.73, 306, 775 ],
-      [ 387, 517, -293.6, 628, 561 ],
-      [ 358, 763, -74.25, 830, 551 ],
-      [ 23, 457, -6.24, 71, 456 ],
-      [ 137, 695, 275.85, 703, 207 ],
-      [ 301, 41, -123.98, 201, 271 ],
-      [ 625, 348, 347.85, 682, 471 ],
-      [ 390, 532, -319.83, 641, 658 ],
-      [ 296, 137, 306, 283, 320 ],
-      [ 122, 525, 90, 525, 122 ],
-      [ 579, 331, 210, 666, 575 ],
-      [ 433, 621, -30, 684, 754 ],
-      [ 527, 121, -30, 516, 368 ],
-      [ 933, 138, -330, 877, 586 ],
-      [ 413, 240, 330, 476, 414 ],
-      [ 293, 466, -360, 293, 466 ],
-      [ 629, 166, -30, 626, 458 ],
-      [ 611, 458, -270, 458, 611 ],
-      [ 668, 680, -120, 922, 917 ],
-      [ 592, 3, -360, 592, 3 ],
-      [ 195, 438, -30, 386, 476 ],
-      [ 1003, 762, -180, 1003, 762 ],
-      [ 451, 389, -60, 561, 584 ],
-      [ 917, 320, 60, 735, 954 ],
-      [ 967, 629, 300, 1027, 1151 ],
-      [ 920, 80, 0, 920, 80 ],
-      [ 926, 551, 150, 1076, 938 ],
-      [ 372, 242, -150, 442, 395 ],
-      [ 526, 742, -240, 905, 825 ],
-      [ 862, 418, -210, 955, 791 ],
-      [ 873, 563, 210, 1037, 923 ],
-      [ 300, 547, 210, 532, 623 ],
-      [ 554, 117, -180, 554, 117 ],
-      [ 969, 36, 150, 857, 514 ],
-      [ 544, 761, 0, 544, 761 ],
-      [ 438, 683, 90, 683, 438 ],
-      [ 953, 609, -120, 1002, 1129 ],
-      [ 664, 120, 90, 120, 664 ],
-      [ 986, 514, 90, 514, 986 ],
-      [ 167, 392, -270, 392, 167 ],
-      [ 375, 279, 300, 428, 463 ],
-      [ 142, 503, 60, 506, 373 ],
-      [ 923, 151, 180, 923, 151 ],
-      [ 175, 109, 210, 205, 180 ],
-      [ 876, 517, 210, 1016, 885 ],
-      [ 368, 78, 120, 251, 356 ],
-      [ 990, 24, -30, 868, 516 ],
-      [ 299, 522, 90, 522, 299 ],
-      [ 954, 493, -150, 1072, 903 ],
-      [ 549, 618, 210, 783, 808 ],
-      [ 701, 130, -240, 463, 671 ],
-      [ 579, 236, 240, 492, 618 ],
-      [ 162, 160, -360, 162, 160 ],
-      [ 925, 291, -270, 291, 925 ],
-      [ 711, 180, 240, 510, 704 ],
-      [ 488, 455, 330, 649, 638 ],
-      [ 150, 429, 330, 343, 447 ],
-      [ 625, 653, 90, 653, 625 ],
-      [ 235, 600, -180, 235, 600 ],
-      [ 529, 244, -300, 475, 580 ],
-      [ 322, 1, -180, 322, 1 ],
-      [ 487, 435, 30, 638, 620 ],
-      [ 298, 556, 210, 535, 630 ],
-      [ 309, 482, -270, 482, 309 ],
-      [ 466, 246, -90, 246, 466 ],
-      [ 287, 612, 360, 287, 612 ],
-      [ 211, 724, 30, 544, 732 ],
-      [ 167, 425, -90, 425, 167 ],
-      [ 818, 600, -270, 600, 818 ],
-      [ 77, 229, -30, 180, 236 ],
-      [ 160, 470, -30, 372, 487 ],
-      [ 416, 67, -330, 393, 265 ],
-      [ 987, 289, 210, 998, 742 ],
-      [ 747, 521, -90, 521, 747 ],
-      [ 894, 101, 150, 824, 532 ],
-      [ 256, 316, 0, 256, 316 ],
-      [ 225, 474, -30, 430, 522 ],
-      [ 765, 599, -360, 765, 599 ],
-      [ 128, 444, 210, 331, 448 ],
-      [ 291, 502, -300, 580, 503 ],
-      [ 778, 621, 150, 983, 925 ],
-      [ 241, 165, 210, 290, 262 ],
-      [ 284, 137, -270, 137, 284 ],
-      [ 44, 697, 240, 625, 386 ],
-      [ 446, 599, 360, 446, 599 ],
-      [ 152, 23, -90, 23, 152 ],
-      [ 673, 191, 360, 673, 191 ],
-      [ 110, 764, 210, 476, 716 ],
-      [ 113, 92, -120, 135, 142 ],
-      [ 916, 309, -360, 916, 309 ],
-      [ 999, 124, 240, 605, 926 ],
-      [ 683, 305, -360, 683, 305 ],
-      [ 456, 517, -210, 652, 674 ],
-      [ 614, 550, -300, 782, 806 ],
-      [ 441, 116, 300, 319, 439 ],
-      [ 403, 230, 300, 399, 464 ],
-      [ 786, 734, -240, 1028, 1046 ],
-      [ 777, 48, -270, 48, 777 ],
-      [ 543, 133, -180, 543, 133 ],
-      [ 899, 52, 150, 804, 493 ],
-      [ 900, 32, 270, 32, 900 ],
-      [ 704, 544, -210, 881, 821 ],
-      [ 728, 118, 300, 464, 689 ],
-      [ 935, 577, 90, 577, 935 ],
-      [ 22, 140, 210, 88, 131 ],
-      [ 931, 441, -330, 1026, 847 ],
-      [ 846, 263, -360, 846, 263 ],
-      [ 1015, 77, -300, 574, 917 ],
-      [ 154, 484, -180, 154, 484 ],
-      [ 439, 390, -120, 556, 574 ],
-      [ 112, 297, -90, 297, 112 ],
-      [ 974, 56, -300, 534, 871 ],
-      [ 194, 602, -210, 469, 616 ],
-      [ 103, 535, 360, 103, 535 ],
-      [ 744, 551, -240, 848, 918 ],
-      [ 517, 481, 180, 517, 481 ],
-      [ 595, 348, -300, 598, 689 ],
-      [ 627, 341, -240, 608, 711 ],
-      [ 723, 456, 240, 755, 853 ],
-      [ 996, 17, -150, 870, 512 ],
-      [ 312, 101, 150, 320, 241 ],
-      [ 695, 63, 210, 632, 401 ],
-      [ 779, 208, 60, 569, 778 ],
-      [ 1018, 285, -180, 1018, 285 ],
-      [ 1003, 75, 360, 1003, 75 ],
-      [ 149, 462, 90, 462, 149 ],
-      [ 907, 140, -330, 855, 574 ],
-      [ 991, 610, 0, 991, 610 ],
-      [ 153, 384, -300, 409, 324 ],
-      [ 984, 363, -300, 805, 1033 ],
-      [ 287, 597, -180, 287, 597 ],
-      [ 1008, 350, -120, 806, 1046 ],
-      [ 780, 165, 60, 532, 757 ],
-      [ 331, 161, 360, 331, 161 ],
-      [ 594, 144, -330, 586, 421 ],
-      [ 568, 256, 120, 505, 618 ],
-      [ 160, 168, 270, 168, 160 ],
-      [ 214, 143, 90, 143, 214 ],
-      [ 722, 257, -270, 257, 722 ],
-      [ 813, 227, 90, 227, 813 ],
-      [ 926, 441, -90, 441, 926 ],
-      [ 149, 429, 240, 445, 343 ],
-      [ 480, 246, -330, 538, 452 ],
-      [ 64, 493, -180, 64, 493 ],
-      [ 26, 171, -30, 107, 161 ],
-      [ 87, 597, 210, 373, 559 ],
-      [ 764, 716, 360, 764, 716 ],
-      [ 602, 108, -240, 394, 574 ],
-      [ 229, 649, 0, 229, 649 ],
-      [ 367, 490, 240, 606, 561 ],
-      [ 989, 416, -90, 416, 989 ],
-      [ 357, 528, 330, 572, 635 ],
-      [ 190, 119, -180, 190, 119 ],
-      [ 243, 167, 300, 265, 293 ],
-      [ 510, 186, -270, 186, 510 ],
-      [ 968, 251, 300, 699, 963 ],
-      [ 743, 55, 240, 418, 670 ],
-      [ 741, 506, 360, 741, 506 ],
-      [ 928, 678, 240, 1050, 1141 ],
-      [ 434, 185, -30, 467, 377 ],
-      [ 241, 158, 360, 241, 158 ],
-      [ 636, 425, 150, 762, 684 ],
-      [ 578, 568, 240, 780, 783 ],
-      [ 847, 750, -330, 1108, 1073 ],
-      [ 750, 364, -150, 830, 689 ],
-      [ 880, 322, 90, 322, 880 ],
-      [ 780, 111, 150, 730, 484 ],
-      [ 610, 666, -120, 881, 860 ],
-      [ 584, 594, -210, 802, 804 ],
-      [ 398, 151, -30, 419, 330 ],
-      [ 864, 331, 120, 718, 912 ],
-      [ 861, 39, -210, 764, 463 ],
-      [ 536, 472, 360, 536, 472 ],
-      [ 370, 340, 330, 489, 479 ],
-      [ 425, 134, -60, 327, 435 ],
-      [ 728, 25, 240, 385, 642 ],
-      [ 341, 610, 360, 341, 610 ],
-      [ 27, 299, 270, 299, 27 ],
-      [ 388, 737, 90, 737, 388 ],
-      [ 628, 267, 240, 544, 676 ],
-      [ 90, 147, -180, 90, 147 ],
-      [ 785, 24, -150, 690, 412 ],
-      [ 1023, 426, 300, 879, 1098 ],
-      [ 994, 703, -120, 1105, 1211 ],
-      [ 939, 253, 30, 939, 688 ],
-      [ 344, 31, 60, 198, 312 ],
-      [ 179, 287, -120, 337, 298 ],
-      [ 160, 307, 180, 160, 307 ],
-      [ 6, 597, 150, 303, 518 ],
-      [ 643, 300, -330, 706, 581 ],
-      [ 456, 367, -210, 577, 544 ],
-      [ 710, 188, -180, 710, 188 ],
-      [ 1016, 187, 240, 669, 972 ],
-      [ 927, 164, 180, 927, 164 ],
-      [ 267, 99, -330, 280, 219 ],
-      [ 808, 357, -300, 712, 877 ],
-      [ 358, 491, -30, 555, 604 ],
-      [ 721, 611, 270, 611, 721 ],
-      [ 458, 615, 120, 761, 702 ],
-      [ 153, 328, -330, 296, 360 ],
-      [ 204, 670, 30, 511, 681 ],
-      [ 449, 434, 210, 604, 599 ],
-      [ 725, 428, -360, 725, 428 ],
-      [ 545, 355, -210, 648, 578 ],
-      [ 277, 554, -120, 617, 515 ],
-      [ 345, 392, 240, 510, 493 ],
-      [ 455, 660, -30, 723, 799 ],
-      [ 946, 432, -180, 946, 432 ],
-      [ 822, 7, -330, 714, 416 ],
-      [ 469, 122, -30, 466, 340 ],
-      [ 516, 274, -120, 494, 582 ],
-      [ 27, 611, 300, 541, 328 ],
-      [ 812, 386, -30, 895, 740 ],
-      [ 822, 27, 330, 724, 434 ],
-      [ 24, 234, 120, 214, 136 ],
-      [ 383, 492, -270, 492, 383 ],
-      [ 194, 65, -360, 194, 65 ],
-      [ 658, 7, 60, 334, 572 ],
-      [ 912, 623, 60, 995, 1100 ],
-      [ 961, 206, 180, 961, 206 ],
-      [ 424, 593, -300, 725, 663 ],
-      [ 778, 613, 300, 918, 979 ],
-      [ 687, 454, -60, 735, 821 ],
-      [ 142, 302, -60, 331, 273 ],
-      [ 69, 320, 180, 69, 320 ],
-      [ 734, 607, -90, 607, 734 ],
-      [ 898, 752, -30, 1152, 1100 ],
-      [ 916, 477, -30, 1031, 871 ],
-      [ 487, 393, -150, 617, 582 ],
-      [ 66, 346, 30, 230, 332 ],
-      [ 832, 663, -120, 989, 1051 ],
-      [ 938, 478, -300, 882, 1051 ],
-      [ 834, 225, 150, 834, 610 ],
-      [ 221, 331, -300, 397, 356 ],
-      [ 666, 382, 0, 666, 382 ],
-      [ 398, 165, -150, 426, 341 ],
-      [ 786, 70, -150, 714, 453 ],
-      [ 236, 757, 300, 772, 582 ],
-      [ 718, 353, -60, 663, 797 ],
-      [ 1006, 403, 270, 403, 1006 ],
-      [ 545, 258, 180, 545, 258 ],
-      [ 874, 193, -120, 603, 852 ],
-      [ 996, 51, 120, 541, 886 ],
-      [ 699, 216, -330, 713, 536 ],
-      [ 805, 715, 60, 1021, 1054 ],
-      [ 312, 245, 210, 392, 367 ],
-      [ 628, 66, 270, 66, 628 ],
-      [ 922, 242, 270, 242, 922 ],
-      [ 827, 12, -120, 422, 721 ],
-      [ 231, 766, 270, 766, 231 ],
-      [ 95, 407, -240, 399, 284 ],
-      [ 842, 294, -60, 674, 876 ],
-      [ 178, 272, 0, 178, 272 ],
-      [ 838, 28, 210, 738, 442 ],
-      [ 914, 631, 150, 1106, 1001 ],
-      [ 476, 97, -360, 476, 97 ],
-      [ 257, 567, -300, 619, 505 ],
-      [ 131, 490, -60, 488, 358 ],
-      [ 1013, 342, -60, 801, 1048 ],
-      [ 317, 515, -60, 603, 531 ],
-      [ 157, 585, 360, 157, 585 ],
-      [ 341, 448, -120, 557, 518 ],
-      [ 781, 581, 150, 966, 892 ],
-      [ 265, 441, 180, 265, 441 ],
-      [ 35, 359, 30, 209, 328 ],
-      [ 757, 716, 150, 1013, 997 ],
-      [ 782, 141, -60, 511, 747 ],
-      [ 893, 238, -330, 892, 652 ],
-      [ 302, 230, 0, 302, 230 ],
-      [ 752, 467, -240, 779, 883 ],
-      [ 174, 585, 330, 442, 594 ],
-      [ 138, 72, 0, 138, 72 ],
-      [ 492, 658, -180, 492, 658 ],
-      [ 185, 88, 270, 88, 185 ],
-      [ 939, 113, -150, 869, 566 ],
-      [ 487, 681, -180, 487, 681 ],
-      [ 163, 499, -60, 512, 390 ],
-      [ 594, 400, 180, 594, 400 ],
-      [ 655, 626, -360, 655, 626 ],
-      [ 148, 422, 120, 438, 338 ],
-      [ 325, 552, -60, 639, 557 ],
-      [ 259, 655, 0, 259, 655 ],
-      [ 789, 255, -120, 614, 810 ],
-      [ 46, 394, -30, 235, 364 ],
-      [ 915, 330, 90, 330, 915 ],
-      [ 214, 695, 0, 214, 695 ],
-      [ 466, 48, -270, 48, 466 ],
-      [ 906, 494, 120, 880, 1030 ],
-      [ 638, 217, 0, 638, 217 ],
-      [ 676, 327, -360, 676, 327 ],
-      [ 312, 571, 180, 312, 571 ],
-      [ 727, 765, 90, 765, 727 ],
-      [ 214, 588, 330, 478, 616 ],
-      [ 576, 622, -30, 808, 827 ],
-      [ 31, 540, 270, 540, 31 ],
-      [ 661, 701, 210, 922, 936 ],
-      [ 149, 282, 270, 282, 149 ],
-      [ 302, 193, 0, 302, 193 ],
-      [ 987, 671, 210, 1189, 1073 ],
-      [ 459, 410, -240, 584, 601 ],
-      [ 492, 644, 330, 747, 804 ],
-      [ 236, 421, 330, 414, 483 ],
-      [ 853, 581, 150, 1028, 928 ],
-      [ 785, 245, 0, 785, 245 ],
-      [ 217, 268, -210, 321, 339 ],
-      [ 90, 763, -300, 705, 458 ],
-      [ 888, 107, 0, 888, 107 ],
-      [ 726, 333, 180, 726, 333 ],
-      [ 198, 305, 90, 305, 198 ],
-      [ 983, 649, -270, 649, 983 ],
-      [ 155, 250, 360, 155, 250 ],
-      [ 89, 427, 30, 290, 414 ],
-      [ 17, 298, -150, 162, 265 ],
-      [ 729, 118, 90, 118, 729 ],
-      [ 223, 280, 330, 332, 353 ],
-      [ 436, 347, 330, 550, 519 ],
-      [ 558, 244, -300, 489, 605 ],
-      [ 32, 20, 0, 32, 20 ],
-      [ 787, 169, 300, 538, 765 ],
-      [ 387, 137, 180, 387, 137 ],
-      [ 534, 253, -330, 588, 485 ],
-      [ 514, 320, 90, 320, 514 ],
-      [ 31, 332, -360, 31, 332 ],
-      [ 321, 111, -240, 256, 331 ],
-      [ 936, 277, 30, 948, 707 ],
-      [ 884, 604, 360, 884, 604 ],
-      [ 825, 254, -150, 840, 631 ],
-      [ 907, 278, -120, 693, 923 ],
-      [ 408, 100, 30, 403, 290 ],
-      [ 315, 390, 180, 315, 390 ],
-      [ 62, 22, -330, 64, 49 ],
-      [ 141, 407, -30, 325, 422 ],
-      [ 789, 429, 300, 765, 897 ],
-      [ 808, 670, -330, 1034, 983 ],
-      [ 984, 603, -60, 1012, 1153 ],
-      [ 509, 498, -240, 685, 688 ],
-      [ 496, 349, 30, 603, 549 ],
-      [ 808, 260, 300, 627, 829 ],
-      [ 122, 566, -360, 122, 566 ],
-      [ 684, 33, 30, 608, 370 ],
-      [ 405, 79, 30, 389, 270 ],
-      [ 463, 185, -330, 492, 391 ],
-      [ 947, 8, 90, 8, 947 ],
-      [ 850, 614, 0, 850, 614 ],
-      [ 899, 584, -150, 1069, 954 ],
-      [ 294, 197, 330, 352, 318 ],
-      [ 493, 568, -90, 568, 493 ],
-      [ 7, 406, 180, 7, 406 ],
-      [ 914, 497, -30, 1039, 887 ],
-      [ 930, 242, 0, 930, 242 ],
-      [ 440, 546, 90, 546, 440 ],
-      [ 1002, 125, 270, 125, 1002 ],
-      [ 58, 67, 270, 67, 58 ],
-      [ 710, 703, 120, 963, 964 ],
-      [ 205, 609, -60, 628, 481 ],
-      [ 505, 61, 120, 305, 466 ],
-      [ 445, 431, -60, 594, 600 ],
-      [ 848, 435, 330, 951, 801 ],
-      [ 574, 352, 60, 591, 673 ],
-      [ 29, 281, 300, 256, 165 ],
-      [ 552, 611, 90, 611, 552 ],
-      [ 155, 594, 210, 430, 590 ],
-      [ 4, 637, 270, 637, 4 ],
-      [ 887, 401, 210, 968, 789 ],
-      [ 539, 555, 60, 750, 743 ],
-      [ 968, 165, 120, 626, 919 ],
-      [ 635, 498, -210, 798, 747 ],
-      [ 36, 366, 210, 213, 334 ],
-      [ 1001, 28, -210, 880, 523 ],
-      [ 580, 49, 60, 331, 526 ],
-      [ 481, 463, -90, 463, 481 ],
-      [ 85, 579, -240, 543, 361 ],
-      [ 878, 581, 360, 878, 581 ],
-      [ 735, 478, 0, 735, 478 ],
-      [ 506, 113, -210, 494, 349 ],
-      [ 64, 71, -30, 90, 93 ],
-      [ 728, 547, -300, 837, 903 ],
-      [ 941, 574, 60, 967, 1101 ],
-      [ 710, 556, 90, 556, 710 ],
-      [ 948, 223, 120, 666, 930 ],
-      [ 536, 583, -180, 536, 583 ],
-      [ 938, 646, -360, 938, 646 ],
-      [ 83, 536, 210, 338, 504 ],
-      [ 76, 319, -60, 312, 224 ],
-      [ 603, 698, 30, 871, 905 ],
-      [ 846, 746, 120, 1068, 1104 ],
-      [ 284, 523, -120, 594, 506 ],
-      [ 385, 461, -300, 591, 563 ],
-      [ 974, 225, 240, 681, 955 ],
-      [ 575, 167, -300, 432, 580 ],
-      [ 241, 569, 270, 569, 241 ],
-      [ 524, 504, 150, 705, 696 ],
-      [ 554, 566, -60, 765, 762 ],
-      [ 334, 622, 240, 705, 599 ],
-      [ 750, 306, 180, 750, 306 ],
-      [ 294, 172, 150, 340, 294 ],
-      [ 955, 385, -90, 385, 955 ],
-      [ 297, 673, 360, 297, 673 ],
-      [ 403, 635, -180, 403, 635 ],
-      [ 226, 298, 0, 226, 298 ],
-      [ 345, 478, -210, 537, 585 ],
-      [ 216, 103, 300, 195, 238 ],
-      [ 948, 518, 90, 518, 948 ],
-      [ 346, 768, -60, 836, 683 ],
-      [ 169, 562, 240, 570, 426 ],
-      [ 921, 14, -330, 804, 472 ],
-      [ 618, 730, 30, 900, 940 ],
-      [ 1013, 184, -60, 664, 969 ],
-      [ 998, 486, -180, 998, 486 ],
-      [ 257, 655, 120, 695, 548 ],
-      [ 764, 146, -180, 764, 146 ],
-      [ 1004, 308, -60, 767, 1023 ],
-      [ 892, 250, -330, 897, 662 ],
-      [ 510, 510, -330, 696, 696 ],
-      [ 956, 636, 240, 1028, 1144 ],
-      [ 787, 558, 240, 875, 959 ],
-      [ 846, 253, 210, 858, 641 ],
-      [ 395, 245, -360, 395, 245 ],
-      [ 840, 225, 120, 614, 838 ],
-      [ 83, 417, 0, 83, 417 ],
-      [ 746, 222, 150, 757, 563 ],
-      [ 1022, 206, -300, 688, 988 ],
-      [ 412, 107, -60, 297, 409 ],
-      [ 491, 489, -330, 669, 668 ],
-      [ 569, 438, 300, 662, 711 ],
-      [ 372, 260, 90, 260, 372 ],
-      [ 194, 126, 330, 230, 206 ],
-      [ 988, 422, -180, 988, 422 ],
-      [ 1003, 283, 60, 746, 1009 ],
-      [ 641, 345, -300, 619, 727 ],
-      [ 129, 136, -90, 136, 129 ],
-      [ 835, 134, 120, 533, 789 ],
-      [ 926, 443, 240, 846, 1022 ],
-      [ 326, 42, -30, 302, 199 ],
-      [ 405, 469, -360, 405, 469 ],
-      [ 307, 747, -120, 799, 638 ],
-      [ 952, 124, 0, 952, 124 ],
-      [ 911, 96, -330, 836, 538 ],
-      [ 171, 80, -60, 153, 188 ],
-      [ 754, 561, 270, 561, 754 ],
-      [ 868, 657, -330, 1079, 1002 ],
-      [ 254, 515, -210, 476, 571 ],
-      [ 937, 441, 240, 849, 1031 ],
-      [ 740, 685, 270, 685, 740 ],
-      [ 169, 220, -30, 255, 275 ],
-      [ 183, 449, -30, 382, 480 ],
-      [ 541, 395, 90, 395, 541 ],
-      [ 44, 310, 180, 44, 310 ],
-      [ 108, 438, 240, 432, 311 ],
-      [ 549, 235, 30, 592, 478 ],
-      [ 425, 118, -60, 313, 427 ],
-      [ 481, 308, -300, 507, 570 ],
-      [ 715, 243, 120, 567, 739 ],
-      [ 515, 29, 30, 460, 282 ],
-      [ 370, 156, 240, 319, 397 ],
-      [ 849, 292, -60, 676, 881 ],
-      [ 275, 698, 330, 586, 741 ],
-      [ 891, 731, -120, 1077, 1136 ],
-      [ 610, 43, 300, 340, 549 ],
-      [ 434, 455, -210, 602, 609 ],
-      [ 1006, 6, -90, 6, 1006 ],
-      [ 405, 366, 210, 532, 518 ],
-      [ 491, 134, -330, 492, 361 ],
-      [ 139, 520, -300, 519, 380 ],
-      [ 699, 29, -150, 619, 373 ],
-      [ 528, 665, 150, 789, 838 ],
-      [ 955, 103, 90, 103, 955 ],
-      [ 884, 3, 30, 766, 444 ],
-      [ 203, 460, 90, 460, 203 ],
-      [ 104, 17, -210, 98, 65 ],
-      [ 319, 3, -210, 277, 161 ],
-      [ 691, 307, 150, 751, 610 ],
-      [ 448, 674, 270, 674, 448 ],
-      [ 529, 10, 30, 463, 273 ],
-      [ 647, 535, 60, 786, 827 ],
-      [ 973, 162, -30, 922, 626 ],
-      [ 663, 110, 60, 426, 629 ],
-      [ 259, 5, 60, 133, 226 ],
-      [ 829, 157, -240, 550, 794 ],
-      [ 432, 235, -240, 419, 490 ],
-      [ 641, 473, -210, 791, 729 ],
-      [ 857, 223, 60, 621, 853 ],
-      [ 537, 559, -30, 744, 752 ],
-      [ 396, 187, 0, 396, 187 ],
-      [ 947, 672, -240, 1055, 1155 ],
-      [ 512, 633, -90, 633, 512 ],
-      [ 963, 362, 30, 1014, 795 ],
-      [ 527, 556, 30, 734, 745 ],
-      [ 95, 410, 180, 95, 410 ],
-      [ 274, 733, -330, 603, 771 ],
-      [ 476, 446, 120, 623, 634 ],
-      [ 681, 321, 330, 749, 618 ],
-      [ 271, 723, 150, 595, 760 ],
-      [ 759, 252, 330, 782, 597 ],
-      [ 236, 194, 240, 285, 300 ],
-      [ 426, 578, 90, 578, 426 ],
-      [ 831, 532, -300, 876, 985 ],
-      [ 358, 159, 240, 316, 389 ],
-      [ 915, 229, -120, 654, 906 ],
-      [ 657, 435, -150, 785, 704 ],
-      [ 711, 23, 300, 374, 626 ],
-      [ 371, 534, -150, 587, 646 ],
-      [ 327, 736, -180, 327, 736 ],
-      [ 4, 537, 60, 466, 271 ],
-      [ 953, 714, 240, 1093, 1181 ],
-      [ 749, 265, 60, 603, 780 ],
-      [ 365, 119, -180, 365, 119 ],
-      [ 464, 388, -30, 594, 568 ],
-      [ 280, 306, 210, 394, 404 ],
-      [ 641, 30, -120, 345, 569 ],
-      [ 956, 563, -90, 563, 956 ],
-      [ 840, 72, -330, 763, 481 ],
-      [ 128, 317, -360, 128, 317 ],
-      [ 379, 320, 150, 488, 465 ],
-      [ 966, 266, 120, 712, 968 ],
-      [ 786, 60, 360, 786, 60 ],
-      [ 352, 333, -270, 333, 352 ],
-      [ 626, 681, 120, 902, 881 ],
-      [ 87, 122, -330, 136, 149 ],
-      [ 878, 603, -300, 960, 1061 ],
-      [ 199, 551, 240, 575, 447 ],
-      [ 575, 413, 300, 644, 703 ],
-      [ 638, 509, -120, 759, 806 ],
-      [ 658, 25, 180, 658, 25 ],
-      [ 369, 749, -300, 833, 693 ],
-      [ 7, 570, -240, 497, 290 ],
-      [ 1022, 66, 60, 567, 918 ],
-      [ 147, 535, 0, 147, 535 ],
-      [ 812, 600, 120, 925, 1002 ],
-      [ 861, 490, -60, 853, 990 ],
-      [ 949, 640, -270, 640, 949 ],
-      [ 763, 303, 120, 643, 810 ],
-      [ 673, 13, -120, 346, 588 ],
-      [ 1006, 506, -90, 506, 1006 ],
-      [ 740, 14, -120, 381, 646 ],
-      [ 829, 19, -300, 430, 726 ],
-      [ 996, 17, -240, 512, 869 ],
-      [ 583, 127, 270, 127, 583 ],
-      [ 53, 736, 120, 663, 412 ],
-      [ 709, 613, -150, 920, 884 ],
-      [ 121, 556, -270, 556, 121 ],
-      [ 266, 360, 0, 266, 360 ],
-      [ 962, 96, 30, 881, 563 ],
-      [ 287, 82, -240, 214, 288 ],
-      [ 668, 637, -210, 896, 884 ],
-      [ 1024, 490, -210, 1131, 934 ],
-      [ 91, 468, -180, 91, 468 ],
-      [ 269, 137, -60, 252, 300 ],
-      [ 137, 177, -90, 177, 137 ],
-      [ 804, 708, -240, 1014, 1049 ],
-      [ 76, 30, 300, 62, 80 ],
-      [ 200, 229, -90, 229, 200 ],
-      [ 728, 182, 0, 728, 182 ],
-      [ 248, 397, 60, 467, 412 ],
-      [ 442, 130, -60, 332, 447 ],
-      [ 654, 130, -330, 631, 439 ],
-      [ 892, 197, 120, 616, 869 ],
-      [ 128, 399, 270, 399, 128 ],
-      [ 557, 501, -330, 732, 712 ],
-      [ 942, 335, -360, 942, 335 ],
-      [ 95, 392, -360, 95, 392 ],
-      [ 1014, 542, -120, 975, 1148 ],
-      [ 364, 320, 60, 458, 475 ],
-      [ 866, 505, -300, 869, 1001 ],
-      [ 453, 68, -180, 453, 68 ],
-      [ 888, 558, -60, 925, 1048 ],
-      [ 952, 459, 150, 1053, 872 ],
-      [ 616, 554, -210, 810, 786 ],
-      [ 462, 203, 270, 203, 462 ],
-      [ 543, 141, -150, 540, 392 ],
-      [ 544, 212, 240, 455, 576 ],
-      [ 585, 204, 0, 585, 204 ],
-      [ 931, 477, 330, 1044, 878 ],
-      [ 495, 358, 60, 557, 607 ],
-      [ 588, 697, 120, 897, 856 ],
-      [ 854, 594, -90, 594, 854 ],
-      [ 268, 540, 360, 268, 540 ],
-      [ 968, 234, 150, 955, 685 ],
-      [ 152, 580, 360, 152, 580 ],
-      [ 3, 219, -270, 219, 3 ],
-      [ 301, 627, -60, 692, 573 ],
-      [ 96, 297, 150, 231, 303 ],
-      [ 614, 227, -150, 644, 503 ],
-      [ 533, 598, 210, 759, 783 ],
-      [ 101, 271, 150, 222, 284 ],
-      [ 782, 143, -30, 748, 515 ],
-      [ 160, 344, -240, 377, 309 ],
-      [ 148, 301, -30, 278, 335 ],
-      [ 874, 415, -210, 963, 794 ],
-      [ 847, 417, 0, 847, 417 ],
-      [ 1007, 642, -120, 1058, 1192 ],
-      [ 426, 714, 150, 725, 829 ],
-      [ 117, 406, -360, 117, 406 ],
-      [ 443, 37, 210, 401, 252 ],
-      [ 222, 113, -270, 113, 222 ],
-      [ 928, 699, -120, 1068, 1152 ],
-      [ 378, 50, 210, 351, 231 ],
-      [ 548, 161, -270, 161, 548 ],
-      [ 4, 48, 150, 27, 42 ],
-      [ 233, 682, -180, 233, 682 ],
-      [ 754, 670, -330, 987, 956 ],
-      [ 61, 221, -360, 61, 221 ],
-      [ 789, 309, 30, 837, 662 ],
-      [ 795, 641, 60, 952, 1008 ],
-      [ 573, 39, 180, 573, 39 ],
-      [ 712, 734, 90, 734, 712 ],
-      [ 18, 250, 150, 140, 224 ],
-      [ 805, 660, 300, 973, 1027 ],
-      [ 968, 663, 360, 968, 663 ],
-      [ 661, 69, 270, 69, 661 ],
-      [ 908, 634, 180, 908, 634 ],
-      [ 986, 680, -360, 986, 680 ],
-      [ 992, 503, -60, 930, 1110 ],
-      [ 514, 331, -180, 514, 331 ],
-      [ 85, 760, -150, 452, 699 ],
-      [ 830, 526, -180, 830, 526 ],
-      [ 458, 539, 60, 695, 665 ],
-      [ 152, 374, -30, 317, 400 ],
-      [ 59, 332, -150, 216, 316 ],
-      [ 29, 59, -90, 59, 29 ],
-      [ 909, 740, -210, 1157, 1094 ],
-      [ 633, 711, -300, 932, 903 ],
-      [ 651, 686, 180, 651, 686 ],
-      [ 56, 303, -240, 289, 198 ],
-      [ 314, 366, -240, 473, 453 ],
-      [ 624, 220, 270, 220, 624 ],
-      [ 888, 563, 60, 931, 1050 ],
-      [ 459, 676, -330, 735, 814 ],
-      [ 911, 720, 0, 911, 720 ],
-      [ 197, 742, 30, 541, 741 ],
-      [ 599, 655, 30, 845, 866 ],
-      [ 823, 361, -30, 892, 724 ],
-      [ 929, 81, -120, 533, 844 ],
-      [ 681, 122, 180, 681, 122 ],
-      [ 874, 358, -210, 935, 745 ],
-      [ 31, 57, 0, 31, 57 ],
-      [ 914, 722, -210, 1152, 1080 ],
-      [ 468, 298, -300, 491, 554 ],
-      [ 520, 213, -330, 556, 443 ],
-      [ 1014, 360, -360, 1014, 360 ],
-      [ 563, 42, 270, 42, 563 ],
-      [ 73, 658, -120, 605, 391 ],
-      [ 530, 587, -60, 771, 751 ],
-      [ 877, 329, 60, 723, 923 ],
-      [ 604, 216, -330, 631, 488 ],
-      [ 818, 239, -270, 239, 818 ],
-      [ 302, 156, -330, 339, 285 ],
-      [ 534, 507, -30, 715, 706 ],
-      [ 644, 128, 180, 644, 128 ],
-      [ 690, 121, -210, 657, 448 ],
-      [ 699, 542, -180, 699, 542 ],
-      [ 557, 597, -300, 795, 780 ],
-      [ 896, 226, 270, 226, 896 ],
-      [ 318, 116, -150, 332, 258 ],
-      [ 926, 568, 60, 954, 1085 ],
-      [ 987, 414, 300, 851, 1061 ],
-      [ 98, 639, -300, 601, 403 ],
-      [ 173, 272, 180, 173, 272 ],
-      [ 644, 755, 330, 934, 976 ],
-      [ 375, 504, -300, 623, 576 ],
-      [ 585, 259, 210, 635, 515 ],
-      [ 851, 677, 60, 1011, 1074 ],
-      [ 970, 580, 270, 580, 970 ],
-      [ 846, 51, -360, 846, 51 ],
-      [ 136, 745, 180, 136, 745 ],
-      [ 737, 716, -150, 995, 987 ],
-      [ 632, 22, -300, 334, 558 ],
-      [ 734, 151, -30, 710, 498 ],
-      [ 488, 633, -30, 738, 792 ],
-      [ 412, 146, -300, 331, 429 ],
-      [ 497, 585, -30, 722, 755 ],
-      [ 280, 455, -120, 533, 469 ],
-      [ 857, 413, -330, 948, 786 ],
-      [ 712, 279, -270, 279, 712 ],
-      [ 719, 381, -300, 689, 812 ],
-      [ 460, 165, -330, 480, 372 ],
-      [ 751, 639, -330, 969, 928 ],
-      [ 870, 421, -180, 870, 421 ],
-      [ 327, 18, -300, 179, 292 ],
-      [ 790, 327, -150, 847, 677 ],
-      [ 900, 699, -330, 1128, 1054 ],
-      [ 330, 141, 90, 141, 330 ],
-      [ 663, 16, -240, 345, 581 ],
-      [ 744, 549, 30, 918, 846 ],
-      [ 892, 320, -360, 892, 320 ],
-      [ 1009, 664, -180, 1009, 664 ],
-      [ 33, 459, -330, 257, 414 ],
-      [ 108, 344, 90, 344, 108 ],
-      [ 385, 589, 120, 702, 626 ],
-      [ 481, 413, -330, 622, 598 ],
-      [ 771, 320, 360, 771, 320 ],
-      [ 817, 567, -240, 899, 989 ],
-      [ 444, 296, -240, 477, 531 ],
-      [ 622, 86, 300, 383, 581 ],
-      [ 148, 755, -150, 505, 727 ],
-      [ 181, 743, -240, 733, 526 ],
-      [ 434, 767, 210, 758, 880 ],
-      [ 514, 80, -210, 485, 324 ],
-      [ 131, 368, 360, 131, 368 ],
-      [ 796, 728, 30, 1053, 1027 ],
-      [ 872, 539, 330, 1024, 903 ],
-      [ 856, 383, 150, 932, 758 ],
-      [ 3, 716, -330, 360, 621 ],
-      [ 194, 414, -240, 455, 374 ],
-      [ 93, 525, -240, 501, 341 ],
-      [ 417, 660, -270, 660, 417 ],
-      [ 602, 218, -270, 218, 602 ],
-      [ 376, 603, -210, 626, 708 ],
-      [ 607, 701, 150, 875, 909 ],
-      [ 599, 529, 120, 757, 781 ],
-      [ 117, 415, -120, 416, 308 ],
-      [ 61, 289, 270, 289, 61 ],
-      [ 760, 291, 210, 803, 631 ],
-      [ 830, 436, -120, 792, 935 ],
-      [ 1013, 505, -360, 1013, 505 ],
-      [ 153, 50, 270, 50, 153 ],
-      [ 283, 501, -270, 501, 283 ],
-      [ 412, 15, 330, 363, 219 ],
-      [ 646, 469, 270, 469, 646 ],
-      [ 347, 150, 30, 375, 303 ],
-      [ 1019, 237, -330, 1000, 714 ],
-      [ 360, 283, -30, 452, 425 ],
-      [ 211, 85, 240, 178, 224 ],
-      [ 1016, 707, -90, 707, 1016 ],
-      [ 323, 698, -330, 628, 765 ],
-      [ 330, 44, -300, 202, 307 ],
-      [ 192, 256, 210, 293, 317 ],
-      [ 343, 564, 210, 578, 658 ],
-      [ 274, 281, -90, 281, 274 ],
-      [ 115, 541, 60, 526, 369 ],
-      [ 661, 537, 300, 794, 840 ],
-      [ 736, 38, -180, 736, 38 ],
-      [ 171, 196, -90, 196, 171 ],
-      [ 1018, 190, -150, 975, 673 ],
-      [ 397, 432, -210, 559, 571 ],
-      [ 450, 679, -180, 450, 679 ],
-      [ 568, 54, 60, 330, 518 ],
-      [ 330, 311, -120, 433, 440 ],
-      [ 111, 517, 150, 354, 502 ],
-      [ 517, 602, -90, 602, 517 ],
-      [ 99, 330, -300, 335, 250 ],
-      [ 1021, 113, -270, 113, 1021 ],
-      [ 271, 241, -90, 241, 271 ],
-      [ 657, 236, 120, 532, 685 ],
-      [ 961, 534, -210, 1099, 941 ],
-      [ 147, 103, -300, 162, 178 ],
-      [ 415, 529, -270, 529, 415 ],
-      [ 1023, 8, 60, 518, 889 ],
-      [ 335, 91, -210, 335, 245 ],
-      [ 20, 479, -360, 20, 479 ],
-      [ 426, 553, -30, 644, 692 ],
-      [ 523, 550, 60, 737, 727 ],
-      [ 671, 752, 300, 985, 957 ],
-      [ 55, 477, -210, 285, 439 ],
-      [ 715, 429, 300, 728, 833 ],
-      [ 927, 539, -330, 1071, 930 ],
-      [ 1018, 82, 180, 1018, 82 ],
-      [ 158, 81, 180, 158, 81 ],
-      [ 736, 332, 270, 332, 736 ],
-      [ 978, 347, 0, 978, 347 ],
-      [ 999, 666, -210, 1198, 1075 ],
-      [ 435, 290, 300, 467, 521 ],
-      [ 21, 25, 300, 31, 30 ],
-      [ 951, 66, 0, 951, 66 ],
-      [ 148, 602, -330, 429, 594 ],
-      [ 55, 528, 210, 310, 483 ],
-      [ 99, 524, 300, 502, 347 ],
-      [ 847, 642, 360, 847, 642 ],
-      [ 581, 425, -60, 657, 715 ],
-      [ 436, 390, 270, 390, 436 ],
-      [ 929, 371, 180, 929, 371 ],
-      [ 111, 697, -300, 659, 444 ],
-      [ 24, 712, -270, 712, 24 ],
-      [ 941, 657, -210, 1142, 1038 ],
-      [ 444, 768, -360, 444, 768 ],
-      [ 519, 41, 150, 469, 294 ],
-      [ 288, 115, -90, 115, 288 ],
-      [ 166, 749, -210, 517, 730 ],
-      [ 152, 417, 210, 339, 436 ],
-      [ 579, 744, -180, 579, 744 ],
-      [ 444, 673, 180, 444, 673 ],
-      [ 173, 755, 120, 740, 525 ],
-      [ 288, 5, 60, 147, 251 ],
-      [ 436, 710, -30, 731, 833 ],
-      [ 670, 275, -30, 717, 573 ],
-      [ 683, 664, 0, 683, 664 ],
-      [ 375, 111, 120, 283, 378 ],
-      [ 765, 236, 90, 236, 765 ],
-      [ 986, 349, -240, 794, 1026 ],
-      [ 749, 15, -270, 15, 749 ],
-      [ 8, 348, -360, 8, 348 ],
-      [ 786, 477, 360, 786, 477 ],
-      [ 443, 693, 360, 443, 693 ],
-      [ 26, 251, 330, 147, 230 ],
-      [ 483, 753, -180, 483, 753 ],
-      [ 940, 497, -270, 497, 940 ],
-      [ 426, 10, -150, 372, 221 ],
-      [ 64, 583, 60, 536, 346 ],
-      [ 701, 555, -330, 884, 831 ],
-      [ 870, 348, -330, 927, 735 ],
-      [ 1005, 354, 0, 1005, 354 ],
-      [ 1013, 175, -270, 175, 1013 ],
-      [ 1004, 507, -330, 1122, 940 ],
-      [ 1001, 526, -90, 526, 1001 ],
-      [ 921, 120, -120, 563, 856 ],
-      [ 183, 56, 360, 183, 56 ],
-      [ 329, 376, -360, 329, 376 ],
-      [ 623, 423, 210, 750, 676 ],
-      [ 207, 181, 0, 207, 181 ],
-      [ 256, 65, 330, 253, 184 ],
-      [ 324, 50, -60, 203, 305 ],
-      [ 855, 42, 90, 42, 855 ],
-      [ 998, 27, -150, 877, 521 ],
-      [ 16, 9, 360, 16, 9 ],
-      [ 392, 700, -270, 700, 392 ],
-      [ 749, 69, -240, 434, 681 ],
-      [ 743, 316, 150, 801, 644 ],
-      [ 749, 15, -210, 655, 386 ],
-      [ 509, 170, -30, 524, 401 ],
-      [ 1007, 362, 30, 1053, 817 ],
-      [ 945, 604, 90, 604, 945 ],
-      [ 331, 477, 120, 578, 523 ],
-      [ 973, 458, 150, 1071, 882 ],
-      [ 243, 469, 180, 243, 469 ],
-      [ 214, 763, 90, 763, 214 ],
-      [ 344, 557, 180, 344, 557 ],
-      [ 549, 345, -270, 345, 549 ],
-      [ 229, 139, -270, 139, 229 ],
-      [ 474, 520, -90, 520, 474 ],
-      [ 959, 506, 270, 506, 959 ],
-      [ 506, 447, 90, 447, 506 ],
-      [ 119, 694, -180, 119, 694 ],
-      [ 811, 656, 270, 656, 811 ],
-      [ 514, 70, -30, 479, 318 ],
-      [ 229, 230, -30, 312, 313 ],
-      [ 877, 487, -240, 860, 1001 ],
-      [ 592, 131, 90, 131, 592 ],
-      [ 727, 302, 240, 624, 779 ],
-      [ 882, 657, -30, 1091, 1010 ],
-      [ 240, 608, -270, 608, 240 ],
-      [ 78, 219, 150, 176, 227 ],
-      [ 722, 308, 90, 308, 722 ],
-      [ 977, 147, -30, 919, 615 ],
-      [ 818, 533, 60, 870, 974 ],
-      [ 261, 704, 270, 704, 261 ],
-      [ 721, 593, 0, 721, 593 ],
-      [ 898, 268, 120, 680, 910 ],
-      [ 510, 46, -330, 464, 294 ],
-      [ 307, 707, 300, 764, 618 ],
-      [ 796, 118, 150, 748, 498 ],
-      [ 935, 177, 360, 935, 177 ],
-      [ 646, 718, -90, 718, 646 ],
-      [ 258, 682, 60, 719, 564 ],
-      [ 744, 528, -180, 744, 528 ],
-      [ 298, 723, -240, 774, 618 ],
-      [ 158, 495, 360, 158, 495 ],
-      [ 668, 400, -150, 777, 679 ],
-      [ 327, 14, -90, 14, 327 ],
-      [ 389, 244, -150, 457, 404 ],
-      [ 302, 73, -30, 297, 214 ],
-      [ 1, 6, 120, 5, 2 ],
-      [ 1016, 490, 90, 490, 1016 ],
-      [ 392, 683, 0, 392, 683 ],
-      [ 989, 472, -240, 903, 1091 ],
-      [ 246, 695, -270, 695, 246 ],
-      [ 442, 46, 210, 404, 260 ],
-      [ 404, 547, -150, 622, 675 ],
-      [ 723, 24, -150, 637, 381 ],
-      [ 78, 315, 90, 315, 78 ],
-      [ 375, 540, 150, 594, 654 ],
-      [ 829, 541, 180, 829, 541 ],
-      [ 494, 534, -120, 708, 693 ],
-      [ 92, 60, -180, 92, 60 ],
-      [ 598, 33, 270, 33, 598 ],
-      [ 783, 218, 210, 786, 579 ],
-      [ 907, 549, 240, 927, 1059 ],
-      [ 667, 83, 30, 618, 405 ],
-      [ 960, 625, 60, 1020, 1143 ],
-      [ 247, 683, 360, 247, 683 ],
-      [ 883, 196, 120, 611, 861 ],
-      [ 590, 50, -90, 50, 590 ],
-      [ 305, 420, -330, 474, 516 ],
-      [ 672, 489, -270, 489, 672 ],
-      [ 924, 168, -240, 606, 883 ],
-      [ 782, 755, -30, 1054, 1045 ],
-      [ 542, 668, -240, 849, 802 ],
-      [ 363, 400, -150, 513, 526 ],
-      [ 912, 351, -300, 759, 964 ],
-      [ 467, 536, -360, 467, 536 ],
-      [ 442, 430, -180, 442, 430 ],
-      [ 112, 104, -120, 145, 147 ],
-      [ 503, 332, 270, 332, 503 ],
-      [ 581, 68, 0, 581, 68 ],
-      [ 739, 761, 180, 739, 761 ],
-      [ 941, 579, 150, 1103, 970 ],
-      [ 409, 217, 60, 392, 462 ],
-      [ 607, 489, -300, 726, 769 ],
-      [ 916, 404, 30, 995, 807 ],
-      [ 11, 754, -180, 11, 754 ],
-      [ 15, 317, 240, 281, 170 ],
-      [ 280, 401, 330, 442, 487 ],
-      [ 611, 10, -90, 10, 611 ],
-      [ 478, 446, -30, 635, 625 ],
-      [ 995, 232, -30, 976, 698 ],
-      [ 713, 169, -210, 701, 501 ],
-      [ 413, 475, 0, 413, 475 ],
-      [ 1002, 162, -270, 162, 1002 ],
-      [ 75, 81, 120, 107, 103 ],
-      [ 640, 89, 90, 89, 640 ],
-      [ 896, 100, -330, 825, 534 ],
-      [ 699, 310, 60, 617, 760 ],
-      [ 641, 768, 60, 985, 939 ],
-      [ 1, 358, -270, 358, 1 ],
-      [ 475, 336, -30, 578, 528 ],
-      [ 938, 103, 120, 557, 862 ],
-      [ 125, 412, -150, 313, 418 ],
-      [ 623, 395, 0, 623, 395 ],
-      [ 749, 450, 90, 450, 749 ],
-      [ 390, 162, 180, 390, 162 ],
-      [ 11, 66, 270, 66, 11 ],
-      [ 55, 590, -180, 55, 590 ],
-      [ 633, 302, -180, 633, 302 ],
-      [ 199, 303, 180, 199, 303 ],
-      [ 359, 659, -240, 750, 638 ],
-      [ 827, 595, -150, 1013, 927 ],
-      [ 496, 688, 240, 843, 772 ],
-      [ 799, 387, -120, 733, 884 ],
-      [ 293, 180, 330, 342, 302 ],
-      [ 920, 472, -270, 472, 920 ],
-      [ 640, 480, -210, 794, 734 ],
-      [ 493, 521, 360, 493, 521 ],
-      [ 759, 227, -90, 227, 759 ],
-      [ 1023, 376, 210, 1072, 836 ],
-      [ 741, 645, 90, 645, 741 ],
-      [ 906, 497, -60, 881, 1032 ],
-      [ 183, 101, -150, 208, 177 ],
-      [ 9, 700, 240, 609, 356 ],
-      [ 360, 152, -330, 387, 311 ],
-      [ 287, 73, 120, 206, 283 ],
-      [ 429, 553, -150, 647, 692 ],
-      [ 659, 154, 330, 646, 462 ],
-      [ 651, 723, -180, 651, 723 ],
-      [ 21, 722, 180, 21, 722 ],
-      [ 819, 509, 60, 850, 963 ],
-      [ 447, 420, -210, 597, 586 ],
-      [ 867, 557, -90, 557, 867 ],
-      [ 155, 563, -180, 155, 563 ],
-      [ 982, 64, -30, 881, 546 ],
-      [ 1, 279, 60, 242, 139 ],
-      [ 674, 600, -150, 882, 856 ],
-      [ 962, 326, 0, 962, 326 ],
-      [ 920, 46, -60, 498, 819 ],
-      [ 157, 61, -90, 61, 157 ],
-      [ 918, 675, -360, 918, 675 ],
-      [ 492, 242, 60, 455, 547 ],
-      [ 728, 124, -150, 691, 470 ],
-      [ 74, 240, -360, 74, 240 ],
-      [ 353, 208, -300, 356, 409 ],
-      [ 833, 209, -30, 825, 597 ],
-      [ 386, 714, -180, 386, 714 ],
-      [ 676, 667, 120, 915, 917 ],
-      [ 146, 588, 180, 146, 588 ],
-      [ 580, 705, 240, 900, 854 ],
-      [ 950, 626, 150, 1135, 1015 ],
-      [ 975, 226, -360, 975, 226 ],
-      [ 534, 4, -240, 269, 463 ],
-      [ 835, 59, 0, 835, 59 ],
-      [ 861, 323, 180, 861, 323 ],
-      [ 972, 179, -360, 972, 179 ],
-      [ 430, 469, 330, 606, 621 ],
-      [ 688, 207, 240, 522, 698 ],
-      [ 356, 316, 60, 451, 466 ],
-      [ 85, 751, 0, 85, 751 ],
-      [ 920, 695, -150, 1143, 1061 ],
-      [ 606, 658, 90, 658, 606 ],
-      [ 614, 290, 90, 290, 614 ],
-      [ 786, 148, 150, 754, 519 ],
-      [ 254, 26, -300, 149, 232 ],
-      [ 1022, 755, -120, 1164, 1262 ],
-      [ 20, 309, 330, 171, 278 ],
-      [ 994, 57, -210, 888, 544 ],
-      [ 807, 324, 90, 324, 807 ],
-      [ 381, 387, 90, 387, 381 ],
-      [ 894, 309, 0, 894, 309 ],
-      [ 193, 763, -90, 763, 193 ],
-      [ 817, 455, 180, 817, 455 ],
-      [ 421, 276, 330, 501, 449 ],
-      [ 102, 466, 360, 102, 466 ],
-      [ 213, 464, 330, 415, 508 ],
-      [ 562, 479, -120, 695, 725 ],
-      [ 512, 456, -60, 649, 671 ],
-      [ 737, 294, 270, 294, 737 ],
-      [ 359, 579, -120, 679, 599 ],
-      [ 982, 481, 180, 982, 481 ],
-      [ 483, 626, 180, 483, 626 ],
-      [ 861, 470, -120, 836, 979 ],
-      [ 601, 17, 150, 528, 314 ],
-      [ 538, 93, -150, 511, 349 ],
-      [ 509, 252, 300, 471, 566 ],
-      [ 462, 674, 30, 737, 814 ],
-      [ 827, 289, -270, 289, 827 ],
-      [ 242, 73, 0, 242, 73 ],
-      [ 89, 343, -180, 89, 343 ],
-      [ 451, 311, 300, 493, 545 ],
-      [ 200, 673, 150, 509, 681 ],
-      [ 965, 550, -150, 1109, 957 ],
-      [ 288, 232, -120, 344, 364 ],
-      [ 1003, 635, -30, 1185, 1051 ],
-      [ 290, 249, 210, 375, 360 ],
-      [ 196, 595, 120, 612, 465 ],
-      [ 740, 447, -360, 740, 447 ],
-      [ 868, 628, -270, 628, 868 ],
-      [ 363, 694, 60, 782, 661 ],
-      [ 629, 264, 360, 629, 264 ],
-      [ 512, 413, 270, 413, 512 ],
-      [ 204, 369, 60, 421, 360 ],
-      [ 522, 584, 270, 584, 522 ],
-      [ 862, 568, 150, 1030, 921 ],
-      [ 302, 17, -360, 302, 17 ],
-      [ 78, 164, 210, 148, 180 ],
-      [ 751, 718, -90, 718, 751 ],
-      [ 785, 601, -240, 912, 978 ],
-      [ 916, 105, -300, 548, 845 ],
-      [ 480, 577, -60, 738, 703 ],
-      [ 457, 192, 360, 457, 192 ],
-      [ 307, 345, -30, 437, 452 ],
-      [ 888, 736, -210, 1137, 1079 ],
-      [ 755, 615, 330, 960, 910 ],
-      [ 443, 73, 360, 443, 73 ],
-      [ 462, 131, -240, 343, 464 ],
-      [ 250, 694, -270, 694, 250 ],
-      [ 632, 514, 300, 759, 804 ],
-      [ 827, 433, -360, 827, 433 ],
-      [ 922, 25, 210, 810, 482 ],
-      [ 345, 367, -360, 345, 367 ],
-      [ 317, 597, 0, 317, 597 ],
-      [ 780, 495, -30, 922, 819 ],
-      [ 998, 293, -180, 998, 293 ],
-      [ 948, 625, -120, 1014, 1132 ],
-      [ 921, 203, 0, 921, 203 ],
-      [ 87, 390, -60, 380, 270 ],
-      [ 211, 96, -300, 188, 230 ],
-      [ 111, 716, 120, 675, 453 ],
-      [ 152, 639, 120, 628, 449 ],
-      [ 961, 130, -270, 130, 961 ],
-      [ 1001, 367, 330, 1049, 818 ],
-      [ 477, 183, 60, 396, 504 ],
-      [ 933, 163, 330, 889, 607 ],
-      [ 160, 106, 210, 190, 171 ],
-      [ 508, 28, -360, 508, 28 ],
-      [ 6, 93, 30, 51, 83 ],
-      [ 428, 251, 120, 430, 494 ],
-      [ 511, 334, 60, 544, 609 ],
-      [ 147, 448, -60, 460, 351 ],
-      [ 840, 400, 60, 765, 927 ],
-      [ 997, 383, -330, 1054, 830 ],
-      [ 926, 740, -150, 1170, 1103 ],
-      [ 490, 671, 30, 759, 825 ],
-      [ 442, 23, 120, 240, 392 ],
-      [ 203, 403, 150, 376, 449 ],
-      [ 234, 407, 240, 468, 405 ],
-      [ 785, 728, -270, 728, 785 ],
-      [ 439, 343, 60, 516, 551 ],
-      [ 23, 453, -270, 453, 23 ],
-      [ 459, 314, 120, 501, 553 ],
-      [ 42, 294, -240, 275, 182 ],
-      [ 115, 220, -270, 220, 115 ],
-      [ 431, 587, -360, 431, 587 ],
-      [ 965, 150, -330, 910, 612 ],
-      [ 615, 303, 60, 569, 683 ],
-      [ 303, 478, -300, 565, 501 ],
-      [ 114, 298, -330, 247, 314 ],
-      [ 260, 627, 0, 260, 627 ],
-      [ 851, 644, -330, 1058, 983 ],
-      [ 1014, 219, 0, 1014, 219 ],
-      [ 686, 251, 270, 251, 686 ],
-      [ 868, 336, -270, 336, 868 ],
-      [ 1011, 659, 300, 1075, 1204 ],
-      [ 1024, 615, -300, 1044, 1193 ],
-      [ 43, 307, 0, 43, 307 ],
-      [ 623, 534, -270, 534, 623 ],
-      [ 722, 619, 0, 722, 619 ],
-      [ 767, 46, -120, 422, 686 ],
-      [ 243, 684, -240, 713, 551 ],
-      [ 323, 676, -30, 616, 746 ],
-      [ 821, 423, 210, 922, 775 ],
-      [ 687, 305, -210, 746, 606 ],
-      [ 845, 295, -330, 878, 677 ],
-      [ 762, 295, 270, 295, 762 ],
-      [ 878, 327, -180, 878, 327 ],
-      [ 373, 26, 360, 373, 26 ],
-      [ 505, 567, 210, 720, 742 ],
-      [ 10, 374, 240, 328, 194 ],
-      [ 350, 556, 180, 350, 556 ],
-      [ 524, 30, 90, 30, 524 ],
-      [ 989, 645, -270, 645, 989 ],
-      [ 765, 392, 30, 858, 721 ],
-      [ 988, 257, 330, 983, 717 ],
-      [ 41, 60, -150, 64, 71 ],
-      [ 938, 718, 180, 938, 718 ],
-      [ 196, 230, 210, 283, 296 ],
-      [ 165, 608, 0, 165, 608 ],
-      [ 959, 615, 360, 959, 615 ],
-      [ 790, 109, 180, 790, 109 ],
-      [ 508, 502, 210, 689, 688 ],
-      [ 104, 475, 60, 462, 327 ],
-      [ 262, 281, -300, 373, 366 ],
-      [ 827, 253, -30, 842, 632 ],
-      [ 760, 284, 30, 800, 625 ],
-      [ 62, 219, -30, 162, 221 ],
-      [ 822, 365, 180, 822, 365 ],
-      [ 593, 488, 30, 757, 719 ],
-      [ 95, 439, -120, 426, 301 ],
-      [ 95, 263, 0, 95, 263 ],
-      [ 835, 644, -270, 644, 835 ],
-      [ 590, 722, 180, 590, 722 ],
-      [ 180, 150, -270, 150, 180 ],
-      [ 292, 2, -30, 252, 148 ],
-      [ 746, 571, 240, 867, 931 ],
-      [ 256, 617, -300, 661, 529 ],
-      [ 723, 466, 60, 765, 859 ],
-      [ 472, 142, -210, 479, 357 ],
-      [ 7, 213, 210, 112, 186 ],
-      [ 362, 284, -270, 284, 362 ],
-      [ 862, 141, 360, 862, 141 ],
-      [ 1006, 583, 300, 1006, 1162 ],
-      [ 760, 718, -300, 1001, 1017 ],
-      [ 887, 169, -300, 589, 852 ],
-      [ 326, 728, 270, 728, 326 ],
-      [ 144, 152, 120, 203, 199 ],
-      [ 252, 694, -180, 252, 694 ],
-      [ 846, 279, -60, 663, 871 ],
-      [ 43, 284, 150, 179, 266 ],
-      [ 848, 555, -300, 904, 1011 ],
-      [ 980, 433, -180, 980, 433 ],
-      [ 946, 419, -360, 946, 419 ],
-      [ 849, 221, 330, 845, 615 ],
-      [ 952, 117, -240, 576, 881 ],
-      [ 32, 361, -270, 361, 32 ],
-      [ 897, 469, -120, 853, 1010 ],
-      [ 536, 657, -210, 792, 835 ],
-      [ 795, 524, 60, 851, 950 ],
-      [ 219, 556, 330, 466, 591 ],
-      [ 950, 424, 120, 841, 1033 ],
-      [ 11, 390, -180, 11, 390 ],
-      [ 283, 331, 210, 410, 427 ],
-      [ 308, 199, -330, 365, 325 ],
-      [ 267, 145, -210, 303, 258 ],
-      [ 450, 168, 150, 473, 368 ],
-      [ 578, 73, -150, 536, 351 ],
-      [ 909, 474, -240, 864, 1023 ],
-      [ 115, 303, 270, 303, 115 ],
-      [ 717, 467, 60, 762, 853 ],
-      [ 673, 411, -300, 692, 787 ],
-      [ 344, 419, 90, 419, 344 ],
-      [ 592, 630, -330, 827, 841 ],
-      [ 374, 93, -150, 369, 267 ],
-      [ 450, 293, 0, 450, 293 ],
-      [ 681, 630, 150, 904, 885 ],
-      [ 369, 295, 240, 438, 466 ],
-      [ 681, 208, -60, 519, 693 ],
-      [ 846, 295, 240, 677, 879 ],
-      [ 684, 64, -60, 395, 624 ],
-      [ 238, 569, 360, 238, 569 ],
-      [ 357, 58, 0, 357, 58 ],
-      [ 994, 502, -120, 931, 1110 ],
-      [ 25, 14, -30, 27, 24 ],
-      [ 345, 351, 240, 475, 473 ],
-      [ 857, 93, 120, 509, 787 ],
-      [ 569, 370, -360, 569, 370 ],
-      [ 378, 112, -150, 382, 285 ],
-      [ 818, 747, 150, 1081, 1054 ],
-      [ 637, 491, 210, 796, 742 ],
-      [ 54, 669, 0, 54, 669 ],
-      [ 17, 169, 60, 154, 98 ],
-      [ 539, 146, -210, 539, 394 ],
-      [ 876, 164, -180, 876, 164 ],
-      [ 312, 422, 150, 481, 519 ],
-      [ 139, 297, 240, 325, 268 ],
-      [ 805, 723, -150, 1058, 1027 ],
-      [ 839, 238, -30, 844, 625 ],
-      [ 127, 83, -60, 134, 150 ],
-      [ 832, 561, -330, 1000, 901 ],
-      [ 597, 601, 330, 817, 818 ],
-      [ 96, 613, -240, 578, 388 ],
-      [ 696, 249, -120, 563, 726 ],
-      [ 941, 137, 60, 589, 882 ],
-      [ 180, 371, -300, 410, 340 ],
-      [ 911, 475, 0, 911, 475 ],
-      [ 743, 310, -30, 797, 639 ],
-      [ 42, 171, 180, 42, 171 ],
-      [ 515, 266, 270, 266, 515 ],
-      [ 959, 122, 60, 585, 891 ],
-      [ 9, 569, -90, 569, 9 ],
-      [ 975, 640, -240, 1041, 1163 ],
-      [ 117, 394, 0, 117, 394 ],
-      [ 477, 331, 120, 525, 577 ],
-      [ 31, 465, -270, 465, 31 ],
-      [ 148, 381, 210, 318, 403 ],
-      [ 660, 169, -240, 475, 654 ],
-      [ 87, 201, -90, 201, 87 ],
-      [ 855, 587, 180, 855, 587 ],
-      [ 710, 538, 300, 819, 883 ],
-      [ 288, 544, 90, 544, 288 ],
-      [ 665, 507, -30, 828, 771 ],
-      [ 836, 594, 360, 836, 594 ],
-      [ 314, 183, -60, 313, 362 ],
-      [ 997, 206, -360, 997, 206 ],
-      [ 126, 316, 0, 126, 316 ],
-      [ 912, 43, 180, 912, 43 ],
-      [ 62, 108, 360, 62, 108 ],
-      [ 464, 749, 180, 464, 749 ],
-      [ 197, 513, -30, 426, 542 ],
-      [ 91, 728, -240, 675, 441 ],
-      [ 743, 459, 240, 768, 872 ],
-      [ 201, 318, 60, 375, 333 ],
-      [ 183, 553, 240, 569, 434 ],
-      [ 605, 532, -300, 763, 789 ],
-      [ 623, 627, 0, 623, 627 ],
-      [ 123, 542, 60, 530, 377 ],
-      [ 873, 589, 150, 1050, 945 ],
-      [ 866, 169, 150, 833, 577 ],
-      [ 616, 316, -120, 581, 690 ],
-      [ 59, 384, -150, 242, 361 ],
-      [ 227, 173, 300, 262, 282 ],
-      [ 45, 323, -150, 199, 301 ],
-      [ 655, 460, -360, 655, 460 ],
-      [ 484, 145, 150, 491, 366 ],
-      [ 587, 611, 30, 813, 822 ],
-      [ 87, 704, -210, 427, 652 ],
-      [ 668, 590, -360, 668, 590 ],
-      [ 368, 471, -210, 553, 590 ],
-      [ 41, 165, 90, 165, 41 ],
-      [ 398, 209, -270, 209, 398 ],
-      [ 702, 379, -120, 678, 796 ],
-      [ 593, 412, 210, 718, 652 ],
-      [ 907, 135, -90, 135, 907 ],
-      [ 934, 498, 60, 897, 1057 ],
-      [ 646, 170, -120, 469, 643 ],
-      [ 168, 235, -180, 168, 235 ],
-      [ 413, 736, -330, 725, 843 ],
-      [ 419, 243, 120, 419, 482 ],
-      [ 648, 274, 270, 274, 648 ],
-      [ 274, 572, -270, 572, 274 ],
-      [ 411, 330, 90, 330, 411 ],
-      [ 778, 6, -240, 393, 675 ],
-      [ 551, 686, -120, 868, 819 ],
-      [ 936, 618, 360, 936, 618 ],
-      [ 490, 334, -210, 591, 532 ],
-      [ 858, 460, 30, 973, 826 ],
-      [ 115, 1, -30, 99, 58 ],
-      [ 159, 315, 210, 294, 351 ],
-      [ 830, 33, -270, 33, 830 ],
-      [ 696, 238, 300, 552, 721 ],
-      [ 841, 546, -120, 892, 1000 ],
-      [ 466, 362, -120, 546, 583 ],
-      [ 641, 7, -210, 558, 325 ],
-      [ 995, 708, -360, 995, 708 ],
-      [ 989, 307, -30, 1009, 760 ],
-      [ 185, 182, -330, 251, 250 ],
-      [ 717, 268, -330, 754, 590 ],
-      [ 183, 387, -30, 351, 426 ],
-      [ 995, 241, 0, 995, 241 ],
-      [ 124, 763, 240, 722, 488 ],
-      [ 15, 625, 30, 324, 548 ],
-      [ 345, 207, -360, 345, 207 ],
-      [ 683, 687, -360, 683, 687 ],
-      [ 910, 665, 330, 1120, 1031 ],
-      [ 938, 638, -120, 1021, 1130 ],
-      [ 385, 8, 60, 199, 337 ],
-      [ 445, 546, 300, 694, 658 ],
-      [ 506, 682, -60, 842, 779 ],
-      [ 986, 660, 180, 986, 660 ],
-      [ 485, 753, 180, 485, 753 ],
-      [ 302, 764, 30, 643, 812 ],
-      [ 846, 254, 240, 642, 858 ],
-      [ 847, 765, 150, 1115, 1085 ],
-      [ 857, 680, 60, 1017, 1082 ],
-      [ 786, 615, -90, 615, 786 ],
-      [ 100, 135, -60, 165, 153 ],
-      [ 681, 469, -300, 746, 823 ],
-      [ 595, 80, -360, 595, 80 ],
-      [ 1023, 51, 270, 51, 1023 ],
-      [ 749, 415, 270, 415, 749 ],
-      [ 467, 641, 240, 787, 724 ],
-      [ 1017, 507, -240, 947, 1132 ],
-      [ 819, 374, -240, 733, 895 ],
-      [ 511, 248, -330, 566, 470 ],
-      [ 66, 69, 270, 69, 66 ],
-      [ 469, 144, -360, 469, 144 ],
-      [ 883, 655, 90, 655, 883 ],
-      [ 1000, 332, 180, 1000, 332 ],
-      [ 1003, 331, 210, 1033, 787 ],
-      [ 861, 125, -120, 537, 807 ],
-      [ 697, 474, -240, 758, 839 ],
-      [ 528, 469, 240, 669, 691 ],
-      [ 696, 315, -150, 759, 620 ],
-      [ 860, 698, 120, 1033, 1092 ],
-      [ 906, 747, 180, 906, 747 ],
-      [ 747, 330, 300, 658, 811 ],
-      [ 768, 224, 210, 776, 577 ],
-      [ 389, 206, -210, 439, 371 ],
-      [ 116, 190, 90, 190, 116 ],
-      [ 935, 67, 210, 842, 524 ],
-      [ 259, 590, -60, 639, 519 ],
-      [ 437, 217, -360, 437, 217 ],
-      [ 265, 739, -60, 771, 598 ],
-      [ 592, 616, -120, 828, 819 ],
-      [ 225, 527, -150, 457, 567 ],
-      [ 974, 319, 180, 974, 319 ],
-      [ 891, 126, -360, 891, 126 ],
-      [ 656, 417, -150, 776, 688 ],
-      [ 864, 504, 30, 1000, 867 ],
-      [ 489, 437, 90, 437, 489 ],
-      [ 279, 630, -90, 630, 279 ],
-      [ 701, 190, 150, 702, 514 ],
-      [ 723, 388, 120, 697, 819 ],
-      [ 140, 64, -30, 152, 125 ],
-      [ 486, 233, -270, 233, 486 ],
-      [ 803, 195, 30, 792, 570 ],
-      [ 536, 95, 150, 511, 348 ],
-      [ 567, 587, -180, 567, 587 ],
-      [ 873, 466, 300, 839, 989 ],
-      [ 408, 65, -30, 385, 260 ],
-      [ 31, 274, -150, 162, 251 ],
-      [ 440, 31, 30, 396, 246 ],
-      [ 114, 573, -330, 384, 552 ],
-      [ 772, 678, -270, 678, 772 ],
-      [ 203, 274, -60, 337, 312 ],
-      [ 336, 108, 150, 344, 260 ],
-      [ 894, 510, 240, 888, 1028 ],
-      [ 594, 167, 60, 441, 597 ],
-      [ 850, 54, -240, 471, 762 ],
-      [ 753, 359, -180, 753, 359 ],
-      [ 214, 382, 90, 382, 214 ],
-      [ 514, 712, 120, 873, 800 ],
-      [ 43, 29, -60, 45, 51 ],
-      [ 89, 608, -150, 380, 570 ],
-      [ 219, 760, 90, 760, 219 ],
-      [ 659, 244, 210, 691, 539 ],
-      [ 334, 146, -30, 361, 293 ],
-      [ 134, 591, 120, 578, 410 ],
-      [ 717, 460, 180, 717, 460 ],
-      [ 896, 257, -240, 670, 902 ],
-      [ 137, 417, 150, 326, 428 ],
-      [ 767, 34, 90, 34, 767 ],
-      [ 414, 66, 120, 263, 390 ],
-      [ 825, 132, -30, 779, 526 ],
-      [ 91, 296, -60, 300, 226 ],
-      [ 745, 22, 180, 745, 22 ],
-      [ 520, 272, 330, 585, 496 ],
-      [ 974, 372, 150, 1029, 807 ],
-      [ 626, 141, -150, 612, 434 ],
-      [ 350, 45, 120, 213, 324 ],
-      [ 552, 147, -240, 402, 550 ],
-      [ 239, 722, -210, 567, 743 ],
-      [ 873, 265, -150, 888, 664 ],
-      [ 521, 115, 0, 521, 115 ],
-      [ 979, 183, 270, 183, 979 ],
-      [ 401, 741, 300, 841, 717 ],
-      [ 147, 363, -180, 147, 363 ],
-      [ 86, 325, 180, 86, 325 ],
-      [ 813, 26, 300, 428, 717 ],
-      [ 105, 288, 360, 105, 288 ],
-      [ 763, 702, -240, 989, 1010 ],
-      [ 952, 112, -300, 572, 880 ],
-      [ 163, 767, -30, 524, 745 ],
-      [ 485, 389, 90, 389, 485 ],
-      [ 983, 355, 240, 797, 1028 ],
-      [ 852, 655, 240, 992, 1064 ],
-      [ 749, 765, -180, 749, 765 ],
-      [ 1007, 61, 150, 902, 555 ],
-      [ 737, 671, 180, 737, 671 ],
-      [ 654, 749, -300, 975, 940 ],
-      [ 631, 553, -360, 631, 553 ],
-      [ 803, 498, -240, 832, 943 ],
-      [ 914, 620, -240, 993, 1100 ],
-      [ 353, 215, 120, 362, 411 ],
-      [ 968, 185, -270, 185, 968 ],
-      [ 803, 55, 360, 803, 55 ],
-      [ 601, 616, 360, 601, 616 ],
-      [ 882, 604, -330, 1065, 963 ],
-      [ 571, 388, 330, 687, 621 ],
-      [ 295, 111, 300, 242, 310 ],
-      [ 402, 583, 90, 583, 402 ],
-      [ 420, 417, -180, 420, 417 ],
-      [ 588, 334, -330, 676, 582 ],
-      [ 753, 598, -120, 893, 950 ],
-      [ 412, 556, 60, 687, 634 ],
-      [ 545, 390, 120, 610, 665 ],
-      [ 526, 72, -30, 490, 325 ],
-      [ 502, 733, -180, 502, 733 ],
-      [ 560, 393, 210, 680, 619 ],
-      [ 487, 613, 300, 773, 727 ],
-      [ 388, 146, 120, 319, 408 ],
-      [ 1, 461, -210, 230, 398 ],
-      [ 278, 133, 90, 133, 278 ],
-      [ 357, 698, -60, 781, 658 ],
-      [ 723, 238, -270, 238, 723 ],
-      [ 310, 646, 120, 713, 590 ],
-      [ 994, 272, 180, 994, 272 ],
-      [ 451, 649, 150, 714, 786 ],
-      [ 713, 300, -210, 767, 615 ],
-      [ 467, 665, -360, 467, 665 ],
-      [ 369, 187, -240, 346, 411 ],
-      [ 24, 188, 210, 113, 174 ],
-      [ 234, 396, 360, 234, 396 ],
-      [ 889, 663, 270, 663, 889 ],
-      [ 293, 437, -240, 524, 470 ],
-      [ 438, 669, -360, 438, 669 ],
-      [ 78, 646, -90, 646, 78 ],
-      [ 836, 216, -210, 831, 603 ],
-      [ 524, 750, 90, 750, 524 ],
-      [ 733, 332, -30, 799, 654 ],
-      [ 736, 608, 180, 736, 608 ],
-      [ 933, 626, 360, 933, 626 ],
-      [ 721, 33, -30, 640, 389 ],
-      [ 686, 699, -120, 947, 943 ],
-      [ 556, 151, 300, 407, 556 ],
-      [ 743, 479, 210, 882, 785 ],
-      [ 767, 537, 90, 537, 767 ],
-      [ 130, 396, 300, 406, 310 ],
-      [ 357, 20, 270, 20, 357 ],
-      [ 984, 570, -150, 1136, 985 ],
-      [ 449, 353, -300, 530, 564 ],
-      [ 164, 285, 300, 327, 284 ],
-      [ 127, 57, 330, 137, 112 ],
-      [ 618, 571, 270, 571, 618 ],
-      [ 968, 220, -330, 948, 674 ],
-      [ 875, 9, 150, 761, 444 ],
-      [ 649, 584, -90, 584, 649 ],
-      [ 258, 681, 300, 717, 563 ],
-      [ 155, 181, 330, 224, 234 ],
-      [ 27, 151, 120, 144, 97 ],
-      [ 340, 487, -270, 487, 340 ],
-      [ 441, 610, 0, 441, 610 ],
-      [ 350, 705, 60, 785, 655 ],
-      [ 303, 400, -150, 461, 496 ],
-      [ 164, 357, 60, 390, 320 ],
-      [ 225, 245, 90, 245, 225 ],
-      [ 924, 731, -90, 731, 924 ],
-      [ 291, 156, -180, 291, 156 ],
-      [ 184, 272, 0, 184, 272 ],
-      [ 103, 292, 150, 235, 303 ],
-      [ 782, 547, -150, 950, 864 ],
-      [ 906, 109, -300, 546, 838 ],
-      [ 387, 371, -360, 387, 371 ],
-      [ 966, 598, 30, 1135, 1000 ],
-      [ 259, 721, -360, 259, 721 ],
-      [ 868, 121, -120, 538, 811 ],
-      [ 464, 46, -180, 464, 46 ],
-      [ 838, 264, 0, 838, 264 ],
-      [ 72, 402, 240, 383, 262 ],
-      [ 570, 479, -210, 732, 698 ],
-      [ 244, 297, 330, 359, 379 ],
-      [ 567, 208, -330, 595, 463 ],
-      [ 679, 497, 30, 836, 769 ],
-      [ 706, 454, -120, 745, 837 ],
-      [ 242, 648, -180, 242, 648 ],
-      [ 253, 531, -60, 585, 484 ],
-      [ 589, 111, 0, 589, 111 ],
-      [ 876, 739, 240, 1077, 1127 ],
-      [ 346, 25, -120, 194, 311 ],
-      [ 178, 452, 360, 178, 452 ],
-      [ 399, 634, -120, 747, 661 ],
-      [ 324, 292, 90, 292, 324 ],
-      [ 394, 33, -180, 394, 33 ],
-      [ 959, 562, 270, 562, 959 ],
-      [ 272, 743, 150, 606, 777 ],
-      [ 547, 164, -90, 164, 547 ],
-      [ 982, 606, 30, 1153, 1015 ],
-      [ 455, 494, 0, 455, 494 ],
-      [ 279, 753, 30, 617, 791 ],
-      [ 638, 118, -270, 118, 638 ],
-      [ 610, 417, 330, 736, 666 ],
-      [ 977, 660, -120, 1059, 1175 ],
-      [ 597, 187, -90, 187, 597 ],
-      [ 880, 138, -300, 559, 831 ],
-      [ 743, 342, -330, 814, 667 ],
-      [ 445, 752, -150, 760, 872 ],
-      [ 854, 720, -330, 1099, 1050 ],
-      [ 387, 292, 150, 481, 445 ],
-      [ 905, 501, 150, 1033, 885 ],
-      [ 431, 211, 270, 211, 431 ],
-      [ 558, 668, -90, 668, 558 ],
-      [ 507, 633, -180, 507, 633 ],
-      [ 843, 312, 0, 843, 312 ],
-      [ 199, 203, 120, 275, 272 ],
-      [ 303, 760, -300, 809, 642 ],
-      [ 374, 325, -300, 467, 485 ],
-      [ 662, 198, -360, 662, 198 ],
-      [ 734, 488, -60, 788, 879 ],
-      [ 440, 398, -330, 580, 564 ],
-      [ 126, 721, -120, 686, 469 ],
-      [ 993, 371, -210, 1044, 816 ],
-      [ 367, 750, -360, 367, 750 ],
-      [ 621, 615, -60, 842, 844 ],
-      [ 100, 764, 150, 468, 710 ],
-      [ 787, 223, 150, 792, 585 ],
-      [ 906, 503, -300, 888, 1035 ],
-      [ 1001, 231, -90, 231, 1001 ],
-      [ 8, 13, -360, 8, 13 ],
-      [ 428, 343, 0, 428, 343 ],
-      [ 491, 436, -30, 642, 623 ],
-      [ 835, 412, 330, 928, 774 ],
-      [ 20, 687, 300, 603, 360 ],
-      [ 49, 385, 150, 234, 356 ],
-      [ 493, 460, 150, 656, 643 ],
-      [ 183, 282, 360, 183, 282 ],
-      [ 886, 193, 120, 609, 862 ],
-      [ 999, 175, 330, 952, 651 ],
-      [ 350, 181, 360, 350, 181 ],
-      [ 352, 502, -60, 609, 555 ],
-      [ 883, 102, 360, 883, 102 ],
-      [ 327, 728, 0, 327, 728 ],
-      [ 264, 743, -60, 773, 599 ],
-      [ 177, 11, 300, 97, 158 ],
-      [ 909, 380, 0, 909, 380 ],
-      [ 610, 517, 270, 517, 610 ],
-      [ 608, 413, -270, 413, 608 ],
-      [ 251, 394, -120, 465, 413 ],
-      [ 202, 656, 60, 668, 502 ],
-      [ 170, 152, -180, 170, 152 ],
-      [ 594, 46, -90, 46, 594 ],
-      [ 575, 290, -120, 537, 641 ],
-      [ 82, 488, -150, 314, 463 ],
-      [ 504, 620, -150, 745, 788 ],
-      [ 415, 533, 210, 625, 668 ],
-      [ 939, 222, -30, 923, 661 ],
-      [ 813, 678, -360, 813, 678 ],
-      [ 944, 98, 0, 944, 98 ],
-      [ 284, 249, -90, 249, 284 ],
-      [ 888, 377, 60, 769, 957 ],
-      [ 113, 54, 90, 54, 113 ],
-      [ 498, 485, -360, 498, 485 ],
-      [ 828, 546, 90, 546, 828 ],
-      [ 99, 156, -30, 162, 184 ],
-      [ 409, 467, -270, 467, 409 ],
-      [ 200, 403, -60, 447, 374 ],
-      [ 679, 244, -150, 709, 549 ],
-      [ 685, 184, -60, 500, 685 ],
-      [ 191, 396, 210, 362, 437 ],
-      [ 572, 294, -180, 572, 294 ],
-      [ 130, 378, -120, 391, 300 ],
-      [ 773, 751, 330, 1044, 1036 ],
-      [ 778, 604, 120, 911, 974 ],
-      [ 409, 678, 270, 678, 409 ],
-      [ 867, 216, -30, 857, 620 ],
-      [ 1010, 366, 360, 1010, 366 ],
-      [ 425, 107, -150, 421, 304 ],
-      [ 743, 620, 30, 953, 908 ],
-      [ 167, 763, -330, 525, 744 ],
-      [ 946, 424, -30, 1030, 840 ],
-      [ 179, 521, 330, 415, 540 ],
-      [ 507, 332, 300, 540, 605 ],
-      [ 457, 147, 150, 468, 354 ],
-      [ 110, 453, 60, 446, 321 ],
-      [ 994, 335, 270, 335, 994 ],
-      [ 453, 324, -120, 506, 553 ],
-      [ 448, 642, -30, 707, 780 ],
-      [ 768, 431, -150, 880, 756 ],
-      [ 307, 556, -150, 542, 634 ],
-      [ 374, 497, 240, 616, 571 ],
-      [ 831, 631, 0, 831, 631 ],
-      [ 768, 243, 330, 786, 594 ],
-      [ 683, 585, -270, 585, 683 ],
-      [ 377, 667, 150, 659, 765 ],
-      [ 976, 645, -270, 645, 976 ],
-      [ 838, 216, 60, 605, 833 ],
-      [ 163, 552, -60, 558, 417 ],
-      [ 654, 359, 360, 654, 359 ],
-      [ 947, 589, 150, 1114, 982 ],
-      [ 210, 101, -120, 191, 231 ],
-      [ 37, 724, -240, 645, 393 ],
-      [ 557, 532, -30, 747, 739 ],
-      [ 495, 276, -180, 495, 276 ],
-      [ 628, 558, -300, 796, 822 ],
-      [ 341, 522, 330, 555, 622 ],
-      [ 500, 382, -210, 624, 579 ],
-      [ 66, 503, 330, 308, 469 ],
-      [ 488, 225, -60, 437, 534 ],
-      [ 460, 168, -240, 374, 481 ],
-      [ 148, 325, -150, 290, 354 ],
-      [ 499, 352, -180, 499, 352 ],
-      [ 667, 2, 330, 577, 335 ],
-      [ 133, 373, -150, 301, 388 ],
-      [ 379, 76, -360, 379, 76 ],
-      [ 490, 332, 150, 590, 531 ],
-      [ 435, 706, -210, 729, 827 ],
-      [ 668, 755, 270, 755, 668 ],
-      [ 612, 353, -270, 353, 612 ],
-      [ 10, 697, -90, 697, 10 ],
-      [ 193, 40, 210, 186, 130 ],
-      [ 509, 414, -180, 509, 414 ],
-      [ 766, 146, -180, 766, 146 ],
-      [ 707, 245, 180, 707, 245 ],
-      [ 1016, 529, 240, 965, 1143 ],
-      [ 20, 128, -180, 20, 128 ],
-      [ 743, 454, -240, 764, 869 ],
-      [ 950, 187, -240, 636, 914 ],
-      [ 804, 646, 90, 646, 804 ],
-      [ 957, 653, 30, 1154, 1044 ],
-      [ 309, 30, 60, 180, 282 ],
-      [ 94, 411, -270, 411, 94 ],
-      [ 347, 217, -150, 408, 360 ],
-      [ 603, 747, 90, 747, 603 ],
-      [ 331, 741, -150, 656, 806 ],
-      [ 160, 755, 0, 160, 755 ],
-      [ 431, 544, -330, 645, 686 ],
-      [ 618, 488, -150, 778, 731 ],
-      [ 788, 323, -270, 323, 788 ],
-      [ 404, 272, -360, 404, 272 ],
-      [ 948, 504, -330, 1072, 909 ],
-      [ 522, 574, 60, 757, 739 ],
-      [ 648, 66, 270, 66, 648 ],
-      [ 967, 518, 240, 931, 1095 ],
-      [ 589, 766, 210, 892, 956 ],
-      [ 915, 118, 210, 850, 558 ],
-      [ 387, 441, 0, 387, 441 ],
-      [ 464, 136, -270, 136, 464 ],
-      [ 790, 727, 30, 1047, 1024 ],
-      [ 952, 262, 300, 701, 955 ],
-      [ 960, 204, 30, 933, 656 ],
-      [ 1008, 596, -150, 1169, 1019 ],
-      [ 579, 313, -90, 313, 579 ],
-      [ 438, 270, -330, 514, 452 ],
-      [ 270, 711, -330, 588, 750 ],
-      [ 64, 629, -210, 369, 575 ],
-      [ 865, 151, 210, 824, 562 ],
-      [ 343, 499, 330, 546, 603 ],
-      [ 471, 323, 300, 514, 568 ],
-      [ 5, 268, -180, 5, 268 ],
-      [ 926, 220, 0, 926, 220 ],
-      [ 470, 208, -150, 510, 414 ],
-      [ 778, 641, 150, 993, 942 ],
-      [ 150, 202, -330, 230, 249 ],
-      [ 212, 404, 360, 212, 404 ],
-      [ 270, 451, 210, 458, 525 ],
-      [ 485, 332, 360, 485, 332 ],
-      [ 262, 588, 90, 588, 262 ],
-      [ 220, 173, -330, 276, 259 ],
-      [ 124, 176, -60, 212, 195 ],
-      [ 375, 102, 150, 375, 274 ],
-      [ 898, 454, 330, 1003, 842 ],
-      [ 166, 269, 210, 277, 315 ],
-      [ 876, 381, -330, 948, 767 ],
-      [ 921, 540, 60, 928, 1067 ],
-      [ 891, 742, -240, 1088, 1141 ],
-      [ 674, 337, 60, 628, 751 ],
-      [ 659, 533, -90, 533, 659 ],
-      [ 284, 698, 60, 745, 594 ],
-      [ 339, 22, 240, 187, 303 ],
-      [ 750, 303, 330, 800, 637 ],
-      [ 431, 208, 30, 477, 395 ],
-      [ 388, 332, 300, 480, 502 ],
-      [ 176, 221, -90, 221, 176 ],
-      [ 231, 144, -300, 240, 272 ],
-      [ 824, 43, -330, 734, 448 ],
-      [ 995, 548, 0, 995, 548 ],
-      [ 582, 274, -240, 527, 640 ],
-      [ 953, 486, -300, 897, 1068 ],
-      [ 529, 740, -300, 905, 828 ],
-      [ 340, 535, 0, 340, 535 ],
-      [ 285, 90, 210, 290, 219 ],
-      [ 835, 380, -210, 913, 745 ],
-      [ 719, 512, 0, 719, 512 ],
-      [ 86, 685, 150, 416, 634 ],
-      [ 172, 535, 180, 172, 535 ],
-      [ 222, 512, -30, 447, 554 ],
-      [ 721, 180, 240, 515, 713 ],
-      [ 906, 127, -30, 847, 563 ],
-      [ 997, 523, -60, 950, 1124 ],
-      [ 94, 10, -300, 55, 86 ],
-      [ 617, 223, -210, 645, 500 ],
-      [ 393, 81, 150, 380, 265 ],
-      [ 612, 620, -90, 620, 612 ],
-      [ 100, 684, -180, 100, 684 ],
-      [ 804, 44, 360, 804, 44 ],
-      [ 540, 211, 90, 211, 540 ],
-      [ 1007, 751, 270, 751, 1007 ],
-      [ 815, 663, -360, 815, 663 ],
-      [ 247, 642, 150, 534, 678 ],
-      [ 665, 712, 180, 665, 712 ],
-      [ 771, 407, -360, 771, 407 ],
-      [ 995, 701, -300, 1104, 1211 ],
-      [ 702, 392, 330, 802, 690 ],
-      [ 67, 467, 240, 436, 291 ],
-      [ 343, 301, 270, 301, 343 ],
-      [ 308, 705, -270, 705, 308 ],
-      [ 955, 692, -270, 692, 955 ],
-      [ 817, 535, 360, 817, 535 ],
-      [ 847, 720, 240, 1046, 1092 ],
-      [ 551, 450, 180, 551, 450 ],
-      [ 267, 259, -180, 267, 259 ],
-      [ 279, 237, -240, 344, 358 ],
-      [ 400, 764, 150, 728, 860 ],
-      [ 322, 45, -150, 300, 199 ],
-      [ 131, 302, 150, 264, 326 ],
-      [ 1023, 533, 90, 533, 1023 ],
-      [ 147, 480, 0, 147, 480 ],
-      [ 271, 324, -210, 396, 415 ],
-      [ 255, 192, -270, 192, 255 ],
-      [ 71, 604, 180, 71, 604 ],
-      [ 835, 36, -330, 741, 448 ],
-      [ 93, 245, -90, 245, 93 ],
-      [ 286, 545, -90, 545, 286 ],
-      [ 1000, 17, -60, 513, 874 ],
-      [ 288, 115, 240, 243, 306 ],
-      [ 1000, 114, 0, 1000, 114 ],
-      [ 604, 223, -270, 223, 604 ],
-      [ 106, 427, 60, 422, 304 ],
-      [ 322, 618, 240, 695, 586 ],
-      [ 472, 670, 60, 815, 743 ],
-      [ 197, 528, 120, 555, 433 ],
-      [ 267, 597, 360, 267, 597 ],
-      [ 653, 43, 120, 363, 585 ],
-      [ 9, 25, 150, 19, 25 ],
-      [ 448, 240, 270, 240, 448 ],
-      [ 265, 222, 360, 265, 222 ],
-      [ 792, 674, -180, 792, 674 ],
-      [ 934, 753, 240, 1118, 1184 ],
-      [ 484, 226, 90, 226, 484 ],
-      [ 289, 580, 0, 289, 580 ],
-      [ 900, 727, -240, 1079, 1141 ],
-      [ 533, 159, 360, 533, 159 ],
-      [ 493, 649, -360, 493, 649 ],
-      [ 155, 655, -330, 461, 644 ],
-      [ 863, 223, -90, 223, 863 ],
-      [ 700, 421, 120, 714, 815 ],
-      [ 688, 247, 30, 718, 557 ],
-      [ 973, 179, 0, 973, 179 ],
-      [ 803, 542, 240, 869, 965 ],
-      [ 431, 758, 60, 871, 752 ],
-      [ 952, 665, 0, 952, 665 ],
-      [ 128, 297, 150, 258, 319 ],
-      [ 100, 666, 60, 626, 419 ],
-      [ 129, 14, -60, 75, 118 ],
-      [ 190, 661, 150, 494, 665 ],
-      [ 570, 417, -180, 570, 417 ],
-      [ 221, 165, 60, 253, 273 ],
-      [ 769, 126, 240, 492, 727 ],
-      [ 274, 728, 0, 274, 728 ],
-      [ 80, 282, 0, 80, 282 ],
-      [ 658, 228, -90, 228, 658 ],
-      [ 157, 324, 180, 157, 324 ],
-      [ 892, 399, 90, 399, 892 ],
-      [ 442, 495, 90, 495, 442 ],
-      [ 866, 637, 0, 866, 637 ],
-      [ 561, 296, -360, 561, 296 ],
-      [ 818, 461, -180, 818, 461 ],
-      [ 379, 270, -60, 422, 463 ],
-      [ 178, 475, -120, 499, 391 ],
-      [ 699, 535, 180, 699, 535 ],
-      [ 182, 260, -360, 182, 260 ],
-      [ 551, 378, -30, 665, 602 ],
-      [ 291, 278, 360, 291, 278 ],
-      [ 919, 609, 90, 609, 919 ],
-      [ 541, 490, -60, 693, 713 ],
-      [ 19, 143, 240, 132, 87 ],
-      [ 53, 756, -60, 680, 423 ],
-      [ 305, 272, 210, 399, 387 ],
-      [ 725, 405, -90, 405, 725 ],
-      [ 66, 161, -300, 171, 137 ],
-      [ 807, 297, -60, 659, 846 ],
-      [ 827, 710, 300, 1027, 1071 ],
-      [ 255, 160, -180, 255, 160 ],
-      [ 214, 81, -330, 225, 176 ],
-      [ 833, 487, 150, 964, 837 ],
-      [ 253, 501, 300, 559, 469 ],
-      [ 66, 540, 270, 540, 66 ],
-      [ 494, 1, -210, 427, 246 ],
-      [ 257, 544, 180, 257, 544 ],
-      [ 652, 593, 360, 652, 593 ],
-      [ 737, 430, -120, 739, 852 ],
-      [ 143, 282, -180, 143, 282 ],
-      [ 53, 472, -30, 280, 435 ],
-      [ 333, 633, 60, 714, 604 ],
-      [ 401, 489, -210, 591, 622 ],
-      [ 98, 678, 270, 678, 98 ],
-      [ 1009, 727, 60, 1134, 1236 ],
-      [ 879, 329, 60, 724, 925 ],
-      [ 87, 522, -180, 87, 522 ],
-      [ 858, 243, -330, 864, 638 ],
-      [ 819, 27, 90, 27, 819 ],
-      [ 151, 134, 360, 151, 134 ],
-      [ 429, 174, 60, 365, 458 ],
-      [ 921, 423, -60, 825, 1008 ],
-      [ 496, 724, -330, 791, 874 ],
-      [ 719, 29, 330, 636, 384 ],
-      [ 585, 17, 270, 17, 585 ],
-      [ 147, 676, -150, 464, 657 ],
-      [ 733, 740, 360, 733, 740 ],
-      [ 1020, 615, -150, 1190, 1042 ],
-      [ 48, 461, -120, 422, 271 ],
-      [ 672, 574, 0, 672, 574 ],
-      [ 647, 128, 180, 647, 128 ],
-      [ 227, 50, -150, 220, 155 ],
-      [ 651, 421, -210, 773, 689 ],
-      [ 701, 192, -180, 701, 192 ],
-      [ 631, 631, -150, 861, 860 ],
-      [ 506, 741, -240, 894, 807 ],
-      [ 820, 522, -270, 522, 820 ],
-      [ 805, 519, 330, 956, 851 ],
-      [ 89, 554, 30, 354, 524 ],
-      [ 432, 290, -180, 432, 290 ],
-      [ 953, 7, -60, 481, 828 ],
-      [ 680, 177, 0, 680, 177 ],
-      [ 972, 665, -330, 1173, 1061 ],
-      [ 179, 422, -150, 365, 453 ],
-      [ 448, 127, -270, 127, 448 ],
-      [ 738, 507, -300, 807, 892 ],
-      [ 905, 354, 210, 959, 758 ],
-      [ 10, 189, -30, 102, 169 ],
-      [ 959, 255, -240, 700, 956 ],
-      [ 474, 578, 30, 699, 737 ],
-      [ 755, 524, 30, 915, 831 ],
-      [ 181, 266, 210, 288, 319 ],
-      [ 698, 227, 120, 545, 716 ],
-      [ 751, 361, -240, 688, 829 ],
-      [ 37, 696, -120, 620, 379 ],
-      [ 163, 482, -360, 163, 482 ],
-      [ 252, 392, -30, 413, 465 ],
-      [ 13, 399, 150, 210, 351 ],
-      [ 465, 350, -330, 577, 535 ],
-      [ 631, 706, 240, 925, 898 ],
-      [ 159, 503, 0, 159, 503 ],
-      [ 719, 639, 240, 911, 941 ],
-      [ 491, 394, -270, 394, 491 ],
-      [ 123, 189, 60, 225, 200 ],
-      [ 318, 217, 0, 318, 217 ],
-      [ 682, 338, -270, 338, 682 ],
-      [ 697, 527, 90, 527, 697 ],
-      [ 159, 536, -270, 536, 159 ],
-      [ 896, 116, 90, 116, 896 ],
-      [ 949, 589, 30, 1115, 984 ],
-      [ 748, 708, -240, 986, 1000 ],
-      [ 222, 479, -360, 222, 479 ],
-      [ 50, 78, 30, 82, 92 ],
-      [ 180, 170, 210, 239, 236 ],
-      [ 790, 409, -330, 888, 748 ],
-      [ 280, 152, 0, 280, 152 ],
-      [ 411, 675, -240, 790, 691 ],
-      [ 41, 26, 270, 26, 41 ],
-      [ 202, 698, -360, 202, 698 ],
-      [ 829, 641, 210, 1037, 968 ],
-      [ 348, 433, 150, 517, 547 ],
-      [ 538, 599, -120, 787, 764 ],
-      [ 555, 636, -60, 827, 798 ],
-      [ 73, 2, 120, 38, 63 ],
-      [ 867, 594, -240, 947, 1046 ],
-      [ 925, 36, -90, 36, 925 ],
-      [ 409, 344, -180, 409, 344 ],
-      [ 595, 374, -150, 701, 620 ],
-      [ 470, 525, -210, 669, 688 ],
-      [ 499, 378, -330, 621, 576 ],
-      [ 289, 638, 90, 638, 289 ],
-      [ 1021, 273, -90, 273, 1021 ],
-      [ 343, 689, -210, 641, 767 ],
-      [ 793, 743, -210, 1057, 1038 ],
-      [ 445, 625, 360, 445, 625 ],
-      [ 641, 550, -360, 641, 550 ],
-      [ 16, 89, 0, 16, 89 ],
-      [ 289, 534, 360, 289, 534 ],
-      [ 596, 119, 120, 400, 574 ],
-      [ 808, 493, -270, 493, 808 ],
-      [ 850, 709, 360, 850, 709 ],
-      [ 445, 707, -120, 833, 738 ],
-      [ 838, 195, -210, 822, 586 ],
-      [ 30, 22, -240, 33, 35 ],
-      [ 249, 355, -360, 249, 355 ],
-      [ 235, 68, 150, 237, 175 ],
-      [ 269, 79, 240, 201, 271 ],
-      [ 761, 295, 30, 806, 635 ],
-      [ 726, 742, 150, 999, 1004 ],
-      [ 367, 580, -120, 684, 606 ],
-      [ 512, 449, -180, 512, 449 ],
-      [ 483, 15, -240, 254, 424 ],
-      [ 817, 643, -60, 964, 1028 ],
-      [ 22, 665, -30, 351, 587 ],
-      [ 217, 84, 300, 180, 229 ],
-      [ 221, 260, 360, 221, 260 ],
-      [ 958, 461, -300, 877, 1059 ],
-      [ 788, 263, 0, 788, 263 ],
-      [ 307, 40, -30, 284, 188 ],
-      [ 1007, 315, -210, 1029, 775 ],
-      [ 316, 698, 210, 621, 761 ],
-      [ 569, 292, 240, 536, 637 ],
-      [ 739, 137, 120, 488, 706 ],
-      [ 146, 153, 0, 146, 153 ],
-      [ 605, 315, 90, 315, 605 ],
-      [ 512, 480, 330, 682, 672 ],
-      [ 509, 430, 30, 655, 626 ],
-      [ 610, 253, 300, 522, 654 ],
-      [ 80, 483, 330, 310, 458 ],
-      [ 539, 470, -120, 675, 700 ],
-      [ 747, 707, -180, 747, 707 ],
-      [ 528, 365, 120, 579, 638 ],
-      [ 329, 151, 240, 294, 359 ],
-      [ 987, 260, -360, 987, 260 ],
-      [ 483, 713, -60, 857, 774 ],
-      [ 90, 329, -330, 241, 329 ],
-      [ 43, 710, 90, 710, 43 ],
-      [ 610, 400, 330, 727, 651 ],
-      [ 504, 460, 60, 649, 666 ],
-      [ 450, 96, -240, 307, 436 ],
-      [ 815, 655, -300, 974, 1032 ],
-      [ 63, 283, 60, 276, 195 ],
-      [ 724, 530, 210, 891, 820 ],
-      [ 542, 501, -300, 704, 719 ],
-      [ 563, 95, -360, 563, 95 ],
-      [ 1004, 162, -30, 949, 642 ],
-      [ 36, 194, -90, 194, 36 ],
-      [ 665, 652, 300, 896, 901 ],
-      [ 607, 261, 0, 607, 261 ],
-      [ 169, 598, 90, 598, 169 ],
-      [ 357, 441, 0, 357, 441 ],
-      [ 462, 488, 270, 488, 462 ],
-      [ 29, 263, 30, 156, 242 ],
-      [ 820, 669, -240, 988, 1043 ],
-      [ 934, 323, -150, 969, 746 ],
-      [ 974, 308, 30, 997, 753 ],
-      [ 429, 334, 210, 537, 502 ],
-      [ 830, 65, 90, 65, 830 ],
-      [ 739, 520, 360, 739, 520 ],
-      [ 237, 646, 180, 237, 646 ],
-      [ 885, 145, -120, 567, 838 ],
-      [ 359, 491, 330, 555, 604 ],
-      [ 210, 512, -150, 436, 547 ],
-      [ 767, 359, -240, 694, 842 ],
-      [ 967, 291, 60, 735, 982 ],
-      [ 270, 253, 360, 270, 253 ],
-      [ 813, 574, -60, 902, 991 ],
-      [ 589, 428, 0, 589, 428 ],
-      [ 210, 214, -240, 289, 287 ],
-      [ 179, 391, -360, 179, 391 ],
-      [ 944, 287, -210, 960, 719 ],
-      [ 249, 556, 270, 556, 249 ],
-      [ 204, 713, 0, 204, 713 ],
-      [ 509, 520, 360, 509, 520 ],
-      [ 682, 477, -90, 477, 682 ],
-      [ 262, 679, 150, 565, 717 ],
-      [ 251, 520, -60, 574, 477 ],
-      [ 686, 194, 360, 686, 194 ],
-      [ 182, 351, -180, 182, 351 ],
-      [ 371, 485, 210, 563, 604 ],
-      [ 396, 425, -270, 425, 396 ],
-      [ 614, 611, 270, 611, 614 ],
-      [ 461, 763, 240, 890, 780 ],
-      [ 991, 377, 0, 991, 377 ],
-      [ 974, 120, -300, 590, 903 ],
-      [ 320, 316, 360, 320, 316 ],
-      [ 3, 504, 120, 437, 253 ],
-      [ 451, 251, 300, 441, 515 ],
-      [ 444, 387, -90, 387, 444 ],
-      [ 723, 664, -360, 723, 664 ],
-      [ 498, 193, 30, 527, 415 ],
-      [ 656, 653, -120, 893, 894 ],
-      [ 529, 230, -120, 462, 572 ],
-      [ 329, 205, 240, 341, 386 ],
-      [ 821, 168, 360, 821, 168 ],
-      [ 925, 407, -90, 407, 925 ],
-      [ 909, 409, -330, 991, 808 ],
-      [ 562, 747, -90, 747, 562 ],
-      [ 473, 312, 300, 505, 565 ],
-      [ 852, 85, 180, 852, 85 ],
-      [ 852, 459, 360, 852, 459 ],
-      [ 394, 182, 270, 182, 394 ],
-      [ 750, 579, -270, 579, 750 ],
-      [ 74, 57, -60, 84, 92 ],
-      [ 924, 672, 90, 672, 924 ],
-      [ 910, 597, -270, 597, 910 ],
-      [ 292, 511, 150, 507, 587 ],
-      [ 346, 164, 120, 314, 380 ],
-      [ 734, 518, -330, 894, 815 ],
-      [ 613, 389, -240, 643, 723 ],
-      [ 353, 260, 210, 434, 400 ],
-      [ 349, 555, -360, 349, 555 ],
-      [ 191, 349, 210, 339, 396 ],
-      [ 340, 404, 240, 519, 495 ],
-      [ 762, 329, 150, 823, 664 ],
-      [ 383, 243, 0, 383, 243 ],
-      [ 546, 462, -270, 462, 546 ],
-      [ 229, 721, -90, 721, 229 ],
-      [ 908, 503, -330, 1037, 889 ],
-      [ 977, 194, 30, 943, 656 ],
-      [ 136, 458, 300, 463, 346 ],
-      [ 930, 720, 90, 720, 930 ],
-      [ 943, 95, -330, 863, 553 ],
-      [ 702, 349, 60, 652, 781 ],
-      [ 536, 152, -360, 536, 152 ],
-      [ 243, 439, -120, 500, 429 ],
-      [ 745, 80, 330, 684, 441 ],
-      [ 903, 251, 270, 251, 903 ],
-      [ 256, 164, 30, 303, 269 ],
-      [ 299, 129, 210, 322, 260 ],
-      [ 859, 230, -90, 230, 859 ],
-      [ 742, 160, -150, 721, 509 ],
-      [ 341, 98, -60, 254, 344 ],
-      [ 404, 624, 300, 740, 661 ],
-      [ 1006, 258, -300, 725, 1000 ],
-      [ 1021, 440, 120, 891, 1103 ],
-      [ 336, 230, 180, 336, 230 ],
-      [ 266, 139, -300, 252, 299 ],
-      [ 132, 331, -150, 279, 352 ],
-      [ 669, 554, -30, 855, 814 ],
-      [ 439, 430, 210, 594, 590 ],
-      [ 820, 219, 360, 820, 219 ],
-      [ 112, 474, -300, 465, 333 ],
-      [ 553, 8, 300, 282, 482 ],
-    ];
-  }
-
-}
diff --git a/core/tests/Drupal/Tests/Component/Utility/TimerTest.php b/core/tests/Drupal/Tests/Component/Utility/TimerTest.php
index 79e863f..cfb05dd 100644
--- a/core/tests/Drupal/Tests/Component/Utility/TimerTest.php
+++ b/core/tests/Drupal/Tests/Component/Utility/TimerTest.php
@@ -39,7 +39,7 @@ public function testTimer() {
 
     // Although we sleep for 5 milliseconds, we should test that at least 4 ms
     // have past because usleep() is not reliable on Windows. See
-    // http://php.net/manual/function.usleep.php for more information. The
+    // http://php.net/manual/en/function.usleep.php for more information. The
     // purpose of the test to validate that the Timer class can measure elapsed
     // time not the granularity of usleep() on a particular OS.
     $this->assertGreaterThanOrEqual(4, $value, 'Timer failed to measure at least 4 milliseconds of sleeping while running.');
diff --git a/core/tests/Drupal/Tests/ComposerIntegrationTest.php b/core/tests/Drupal/Tests/ComposerIntegrationTest.php
index 976606c..4557e94 100644
--- a/core/tests/Drupal/Tests/ComposerIntegrationTest.php
+++ b/core/tests/Drupal/Tests/ComposerIntegrationTest.php
@@ -49,7 +49,6 @@ protected function getPaths() {
     return [
       $this->root,
       $this->root . '/core',
-      $this->root . '/core/lib/Drupal/Component/Bridge',
       $this->root . '/core/lib/Drupal/Component/Gettext',
       $this->root . '/core/lib/Drupal/Component/Plugin',
       $this->root . '/core/lib/Drupal/Component/ProxyBuilder',
diff --git a/core/tests/Drupal/Tests/Core/Asset/CssCollectionGrouperUnitTest.php b/core/tests/Drupal/Tests/Core/Asset/CssCollectionGrouperUnitTest.php
index 0a35eec..209aa64 100644
--- a/core/tests/Drupal/Tests/Core/Asset/CssCollectionGrouperUnitTest.php
+++ b/core/tests/Drupal/Tests/Core/Asset/CssCollectionGrouperUnitTest.php
@@ -5,6 +5,7 @@
  * Contains \Drupal\Tests\Core\Asset\CssCollectionGrouperUnitTest.
  */
 
+
 namespace Drupal\Tests\Core\Asset;
 
 use Drupal\Core\Asset\CssCollectionGrouper;
@@ -45,15 +46,15 @@ function testGrouper() {
         'browsers' => array('IE' => TRUE, '!IE' => TRUE),
         'basename' => 'system.base.css',
       ),
-      'js.module.css' => array(
+      'system.theme.css' => array(
         'group' => -100,
         'type' => 'file',
         'weight' => 0.013,
         'media' => 'all',
         'preprocess' => TRUE,
-        'data' => 'core/modules/system/js.module.css',
+        'data' => 'core/modules/system/system.theme.css',
         'browsers' => array('IE' => TRUE, '!IE' => TRUE),
-        'basename' => 'js.module.css',
+        'basename' => 'system.theme.css',
       ),
       'jquery.ui.core.css' => array(
         'group' => -100,
@@ -119,7 +120,7 @@ function testGrouper() {
     $this->assertSame($group['preprocess'], TRUE);
     $this->assertSame(count($group['items']), 3);
     $this->assertContains($css_assets['system.base.css'], $group['items']);
-    $this->assertContains($css_assets['js.module.css'], $group['items']);
+    $this->assertContains($css_assets['system.theme.css'], $group['items']);
 
     // Check group 2.
     $group = $groups[1];
diff --git a/core/tests/Drupal/Tests/Core/Asset/CssCollectionRendererUnitTest.php b/core/tests/Drupal/Tests/Core/Asset/CssCollectionRendererUnitTest.php
index 29011e5..48a92ee 100644
--- a/core/tests/Drupal/Tests/Core/Asset/CssCollectionRendererUnitTest.php
+++ b/core/tests/Drupal/Tests/Core/Asset/CssCollectionRendererUnitTest.php
@@ -5,6 +5,7 @@
  * Contains \Drupal\Tests\Core\Asset\CssCollectionRendererUnitTest.
  */
 
+
 namespace {
 
 /**
diff --git a/core/tests/Drupal/Tests/Core/Asset/CssOptimizerUnitTest.php b/core/tests/Drupal/Tests/Core/Asset/CssOptimizerUnitTest.php
index d4cad06..5922bf1 100644
--- a/core/tests/Drupal/Tests/Core/Asset/CssOptimizerUnitTest.php
+++ b/core/tests/Drupal/Tests/Core/Asset/CssOptimizerUnitTest.php
@@ -5,6 +5,7 @@
  * Contains \Drupal\Tests\Core\Asset\CssOptimizerUnitTest.
  */
 
+
 namespace {
 
 /**
diff --git a/core/tests/Drupal/Tests/Core/Datetime/DateTest.php b/core/tests/Drupal/Tests/Core/Datetime/DateTest.php
index 9033e1d..10e9c70 100644
--- a/core/tests/Drupal/Tests/Core/Datetime/DateTest.php
+++ b/core/tests/Drupal/Tests/Core/Datetime/DateTest.php
@@ -8,7 +8,6 @@
 namespace Drupal\Tests\Core\Datetime;
 
 use Drupal\Core\Datetime\DateFormatter;
-use Drupal\Core\Datetime\FormattedDateDiff;
 use Drupal\Core\DependencyInjection\ContainerBuilder;
 use Drupal\Tests\UnitTestCase;
 use Symfony\Component\HttpFoundation\Request;
@@ -195,17 +194,11 @@ public function testFormatTimeDiffUntil() {
 
     // Mocks the formatDiff function of the dateformatter object.
     $this->dateFormatterStub
-      ->expects($this->at(0))
+      ->expects($this->any())
       ->method('formatDiff')
       ->with($timestamp, $request_time, $options)
       ->will($this->returnValue($expected));
 
-    $this->dateFormatterStub
-      ->expects($this->at(1))
-      ->method('formatDiff')
-      ->with($timestamp, $request_time, $options + ['return_as_object' => TRUE])
-      ->will($this->returnValue(new FormattedDateDiff('1 second', 1)));
-
     $request = Request::createFromGlobals();
     $request->server->set('REQUEST_TIME', $request_time);
     // Mocks a the request stack getting the current request.
@@ -214,9 +207,6 @@ public function testFormatTimeDiffUntil() {
       ->willReturn($request);
 
     $this->assertEquals($expected, $this->dateFormatterStub->formatTimeDiffSince($timestamp, $options));
-    $options['return_as_object'] = TRUE;
-    $expected_object = new FormattedDateDiff('1 second', 1);
-    $this->assertEquals($expected_object, $this->dateFormatterStub->formatTimeDiffSince($timestamp, $options));
   }
 
   /**
@@ -232,17 +222,11 @@ public function testFormatTimeDiffSince() {
 
     // Mocks the formatDiff function of the dateformatter object.
     $this->dateFormatterStub
-      ->expects($this->at(0))
+      ->expects($this->any())
       ->method('formatDiff')
       ->with($request_time, $timestamp, $options)
       ->will($this->returnValue($expected));
 
-    $this->dateFormatterStub
-      ->expects($this->at(1))
-      ->method('formatDiff')
-      ->with($request_time, $timestamp, $options + ['return_as_object' => TRUE])
-      ->will($this->returnValue(new FormattedDateDiff('1 second', 1)));
-
     $request = Request::createFromGlobals();
     $request->server->set('REQUEST_TIME', $request_time);
     // Mocks a the request stack getting the current request.
@@ -251,9 +235,6 @@ public function testFormatTimeDiffSince() {
       ->willReturn($request);
 
     $this->assertEquals($expected, $this->dateFormatterStub->formatTimeDiffUntil($timestamp, $options));
-    $options['return_as_object'] = TRUE;
-    $expected_object = new FormattedDateDiff('1 second', 1);
-    $this->assertEquals($expected_object, $this->dateFormatterStub->formatTimeDiffUntil($timestamp, $options));
   }
 
   /**
@@ -263,7 +244,7 @@ public function testFormatTimeDiffSince() {
    *
    * @covers ::formatDiff
    */
-  public function testformatDiff($expected, $max_age, $timestamp1, $timestamp2, $options = array()) {
+  public function testformatDiff($expected, $timestamp1, $timestamp2, $options = array()) {
 
     // Mocks a simple formatPlural implementation.
     $this->stringTranslation->expects($this->any())
@@ -282,10 +263,6 @@ public function testformatDiff($expected, $max_age, $timestamp1, $timestamp2, $o
       }));
 
     $this->assertEquals($expected, $this->dateFormatter->formatDiff($timestamp1, $timestamp2, $options));
-
-    $options['return_as_object'] = TRUE;
-    $expected_object = new FormattedDateDiff($expected, $max_age);
-    $this->assertEquals($expected_object, $this->dateFormatter->formatDiff($timestamp1, $timestamp2, $options));
   }
 
   /**
@@ -305,103 +282,103 @@ public function providerTestFormatDiff() {
 
     $data = array(
       // Checks for equal timestamps.
-      array('0 seconds', 0, $request_time, $request_time),
+      array('0 seconds', $request_time, $request_time),
 
       // Checks for seconds only.
-      array('1 second', 1, $this->createTimestamp('2013-12-11 10:09:07'), $request_time),
-      array('1 second', 1, $this->createTimestamp('2013-12-11 10:09:07'), $request_time),
-      array('1 second', 1, $this->createTimestamp('2013-12-11 10:09:07'), $request_time, $granularity_3 + $langcode_en),
-      array('1 second', 1, $this->createTimestamp('2013-12-11 10:09:07'), $request_time, $granularity_4 + $langcode_lolspeak),
-      array('2 seconds', 1, $this->createTimestamp('2013-12-11 10:09:06'), $request_time),
-      array('59 seconds', 1, $this->createTimestamp('2013-12-11 10:08:09'), $request_time),
-      array('59 seconds', 1, $this->createTimestamp('2013-12-11 10:08:09'), $request_time),
+      array('1 second', $this->createTimestamp('2013-12-11 10:09:07'), $request_time),
+      array('1 second', $this->createTimestamp('2013-12-11 10:09:07'), $request_time),
+      array('1 second', $this->createTimestamp('2013-12-11 10:09:07'), $request_time, $granularity_3 + $langcode_en),
+      array('1 second', $this->createTimestamp('2013-12-11 10:09:07'), $request_time, $granularity_4 + $langcode_lolspeak),
+      array('2 seconds', $this->createTimestamp('2013-12-11 10:09:06'), $request_time),
+      array('59 seconds', $this->createTimestamp('2013-12-11 10:08:09'), $request_time),
+      array('59 seconds', $this->createTimestamp('2013-12-11 10:08:09'), $request_time),
 
       // Checks for minutes and possibly seconds.
-      array('1 minute', 60, $this->createTimestamp('2013-12-11 10:08:08'), $request_time),
-      array('1 minute', 60, $this->createTimestamp('2013-12-11 10:08:08'), $request_time),
-      array('1 minute 1 second', 1, $this->createTimestamp('2013-12-11 10:08:07'), $request_time),
-      array('1 minute 59 seconds', 1, $this->createTimestamp('2013-12-11 10:07:09'), $request_time),
-      array('2 minutes', 60, $this->createTimestamp('2013-12-11 10:07:08'), $request_time),
-      array('2 minutes 1 second', 1, $this->createTimestamp('2013-12-11 10:07:07'), $request_time),
-      array('2 minutes 2 seconds', 1, $this->createTimestamp('2013-12-11 10:07:06'), $request_time),
-      array('2 minutes 2 seconds', 1, $this->createTimestamp('2013-12-11 10:07:06'), $request_time, $granularity_3),
-      array('2 minutes 2 seconds', 1, $this->createTimestamp('2013-12-11 10:07:06'), $request_time, $granularity_4),
-      array('30 minutes', 60, $this->createTimestamp('2013-12-11 09:39:08'), $request_time),
-      array('59 minutes 59 seconds', 1, $this->createTimestamp('2013-12-11 09:09:09'), $request_time),
-      array('59 minutes 59 seconds', 1, $this->createTimestamp('2013-12-11 09:09:09'), $request_time),
+      array('1 minute', $this->createTimestamp('2013-12-11 10:08:08'), $request_time),
+      array('1 minute', $this->createTimestamp('2013-12-11 10:08:08'), $request_time),
+      array('1 minute 1 second', $this->createTimestamp('2013-12-11 10:08:07'), $request_time),
+      array('1 minute 59 seconds', $this->createTimestamp('2013-12-11 10:07:09'), $request_time),
+      array('2 minutes', $this->createTimestamp('2013-12-11 10:07:08'), $request_time),
+      array('2 minutes 1 second', $this->createTimestamp('2013-12-11 10:07:07'), $request_time),
+      array('2 minutes 2 seconds', $this->createTimestamp('2013-12-11 10:07:06'), $request_time),
+      array('2 minutes 2 seconds', $this->createTimestamp('2013-12-11 10:07:06'), $request_time, $granularity_3),
+      array('2 minutes 2 seconds', $this->createTimestamp('2013-12-11 10:07:06'), $request_time, $granularity_4),
+      array('30 minutes', $this->createTimestamp('2013-12-11 09:39:08'), $request_time),
+      array('59 minutes 59 seconds', $this->createTimestamp('2013-12-11 09:09:09'), $request_time),
+      array('59 minutes 59 seconds', $this->createTimestamp('2013-12-11 09:09:09'), $request_time),
 
       // Checks for hours and possibly minutes or seconds.
-      array('1 hour', 3600, $this->createTimestamp('2013-12-11 09:09:08'), $request_time),
-      array('1 hour', 3600, $this->createTimestamp('2013-12-11 09:09:08'), $request_time),
-      array('1 hour', 3600, $this->createTimestamp('2013-12-11 09:09:07'), $request_time),
-      array('1 hour', 3600, $this->createTimestamp('2013-12-11 09:09:06'), $request_time),
-      array('1 hour 1 minute', 60, $this->createTimestamp('2013-12-11 09:08:08'), $request_time),
-      array('1 hour 1 minute 1 second', 1, $this->createTimestamp('2013-12-11 09:08:07'), $request_time, $granularity_3),
-      array('1 hour 1 minute 2 seconds', 1, $this->createTimestamp('2013-12-11 09:08:06'), $request_time, $granularity_4),
-      array('1 hour 30 minutes', 60, $this->createTimestamp('2013-12-11 08:39:08'), $request_time),
-      array('2 hours', 3600, $this->createTimestamp('2013-12-11 08:09:08'), $request_time),
-      array('23 hours 59 minutes', 60, $this->createTimestamp('2013-12-10 10:10:08'), $request_time),
+      array('1 hour', $this->createTimestamp('2013-12-11 09:09:08'), $request_time),
+      array('1 hour', $this->createTimestamp('2013-12-11 09:09:08'), $request_time),
+      array('1 hour', $this->createTimestamp('2013-12-11 09:09:07'), $request_time),
+      array('1 hour', $this->createTimestamp('2013-12-11 09:09:06'), $request_time),
+      array('1 hour 1 minute', $this->createTimestamp('2013-12-11 09:08:08'), $request_time),
+      array('1 hour 1 minute 1 second', $this->createTimestamp('2013-12-11 09:08:07'), $request_time, $granularity_3),
+      array('1 hour 1 minute 2 seconds', $this->createTimestamp('2013-12-11 09:08:06'), $request_time, $granularity_4),
+      array('1 hour 30 minutes', $this->createTimestamp('2013-12-11 08:39:08'), $request_time),
+      array('2 hours', $this->createTimestamp('2013-12-11 08:09:08'), $request_time),
+      array('23 hours 59 minutes', $this->createTimestamp('2013-12-10 10:10:08'), $request_time),
 
       // Checks for days and possibly hours, minutes or seconds.
-      array('1 day', 86400, $this->createTimestamp('2013-12-10 10:09:08'), $request_time),
-      array('1 day', 86400, $this->createTimestamp('2013-12-10 10:09:07'), $request_time),
-      array('1 day 1 hour', 3600, $this->createTimestamp('2013-12-10 09:09:08'), $request_time),
-      array('1 day 1 hour 1 minute', 60, $this->createTimestamp('2013-12-10 09:08:07'), $request_time, $granularity_3 + $langcode_en),
-      array('1 day 1 hour 1 minute 1 second', 1, $this->createTimestamp('2013-12-10 09:08:07'), $request_time, $granularity_4 + $langcode_lolspeak),
-      array('1 day 2 hours 2 minutes 2 seconds', 1, $this->createTimestamp('2013-12-10 08:07:06'), $request_time, $granularity_4),
-      array('2 days', 86400, $this->createTimestamp('2013-12-09 10:09:08'), $request_time),
-      array('2 days', 86400, $this->createTimestamp('2013-12-09 10:07:08'), $request_time),
-      array('2 days 2 hours', 3600, $this->createTimestamp('2013-12-09 08:09:08'), $request_time),
-      array('2 days 2 hours 2 minutes', 60, $this->createTimestamp('2013-12-09 08:07:06'), $request_time, $granularity_3 + $langcode_en),
-      array('2 days 2 hours 2 minutes 2 seconds', 1, $this->createTimestamp('2013-12-09 08:07:06'), $request_time, $granularity_4 + $langcode_lolspeak),
+      array('1 day', $this->createTimestamp('2013-12-10 10:09:08'), $request_time),
+      array('1 day', $this->createTimestamp('2013-12-10 10:09:07'), $request_time),
+      array('1 day 1 hour', $this->createTimestamp('2013-12-10 09:09:08'), $request_time),
+      array('1 day 1 hour 1 minute', $this->createTimestamp('2013-12-10 09:08:07'), $request_time, $granularity_3 + $langcode_en),
+      array('1 day 1 hour 1 minute 1 second', $this->createTimestamp('2013-12-10 09:08:07'), $request_time, $granularity_4 + $langcode_lolspeak),
+      array('1 day 2 hours 2 minutes 2 seconds', $this->createTimestamp('2013-12-10 08:07:06'), $request_time, $granularity_4),
+      array('2 days', $this->createTimestamp('2013-12-09 10:09:08'), $request_time),
+      array('2 days', $this->createTimestamp('2013-12-09 10:07:08'), $request_time),
+      array('2 days 2 hours', $this->createTimestamp('2013-12-09 08:09:08'), $request_time),
+      array('2 days 2 hours 2 minutes', $this->createTimestamp('2013-12-09 08:07:06'), $request_time, $granularity_3 + $langcode_en),
+      array('2 days 2 hours 2 minutes 2 seconds', $this->createTimestamp('2013-12-09 08:07:06'), $request_time, $granularity_4 + $langcode_lolspeak),
 
       // Checks for weeks and possibly days, hours, minutes or seconds.
-      array('1 week', 7 * 86400, $this->createTimestamp('2013-12-04 10:09:08'), $request_time),
-      array('1 week 1 day', 86400, $this->createTimestamp('2013-12-03 10:09:08'), $request_time),
-      array('2 weeks', 7 * 86400, $this->createTimestamp('2013-11-27 10:09:08'), $request_time),
-      array('2 weeks 2 days', 86400, $this->createTimestamp('2013-11-25 08:07:08'), $request_time),
-      array('2 weeks 2 days 2 hours 2 minutes', 60, $this->createTimestamp('2013-11-25 08:07:08'), $request_time, $granularity_4),
-      array('4 weeks', 7 * 86400, $this->createTimestamp('2013-11-13 10:09:08'), $request_time),
-      array('4 weeks 1 day', 86400, $this->createTimestamp('2013-11-12 10:09:08'), $request_time),
+      array('1 week', $this->createTimestamp('2013-12-04 10:09:08'), $request_time),
+      array('1 week 1 day', $this->createTimestamp('2013-12-03 10:09:08'), $request_time),
+      array('2 weeks', $this->createTimestamp('2013-11-27 10:09:08'), $request_time),
+      array('2 weeks 2 days', $this->createTimestamp('2013-11-25 08:07:08'), $request_time),
+      array('2 weeks 2 days 2 hours 2 minutes', $this->createTimestamp('2013-11-25 08:07:08'), $request_time, $granularity_4),
+      array('4 weeks', $this->createTimestamp('2013-11-13 10:09:08'), $request_time),
+      array('4 weeks 1 day', $this->createTimestamp('2013-11-12 10:09:08'), $request_time),
 
       // Checks for months and possibly days, hours, minutes or seconds.
-      array('1 month', 30 * 86400, $this->createTimestamp('2013-11-11 10:09:08'), $request_time),
-      array('1 month', 30 * 86400, $this->createTimestamp('2013-11-11 10:09:07'), $request_time),
-      array('1 month', 30 * 86400, $this->createTimestamp('2013-11-11 09:09:08'), $request_time),
-      array('1 month', 30 * 86400, $this->createTimestamp('2013-11-11 09:08:07'), $request_time, $granularity_3),
-      array('1 month', 30 * 86400, $this->createTimestamp('2013-11-11 09:08:07'), $request_time, $granularity_4),
-      array('1 month 4 weeks', 7 * 86400, $this->createTimestamp('2013-10-13 10:09:08'), $request_time),
-      array('1 month 4 weeks 1 day', 86400, $this->createTimestamp('2013-10-13 10:09:08'), $request_time, $granularity_3),
-      array('1 month 4 weeks', 7 * 86400, $this->createTimestamp('2013-10-12 10:09:08'), $request_time),
-      array('1 month 4 weeks 2 days', 86400, $this->createTimestamp('2013-10-12 10:09:08'), $request_time, $granularity_3),
-      array('2 months', 30 * 86400, $this->createTimestamp('2013-10-11 10:09:08'), $request_time),
-      array('2 months', 30 * 86400, $this->createTimestamp('2013-10-10 10:09:08'), $request_time),
-      array('2 months', 30 * 86400, $this->createTimestamp('2013-10-09 08:07:06'), $request_time),
-      array('2 months', 30 * 86400, $this->createTimestamp('2013-10-09 08:07:06'), $request_time, $granularity_3),
-      array('2 months', 30 * 86400, $this->createTimestamp('2013-10-09 08:07:06'), $request_time, $granularity_4),
-      array('6 months', 30 * 86400, $this->createTimestamp('2013-06-09 10:09:08'), $request_time),
-      array('11 months', 30 * 86400, $this->createTimestamp('2013-01-11 07:09:08'), $request_time),
-      array('11 months 4 weeks', 7 * 86400, $this->createTimestamp('2012-12-12 10:09:08'), $request_time),
-      array('11 months 4 weeks 2 days', 86400, $this->createTimestamp('2012-12-12 10:09:08'), $request_time, $granularity_3),
+      array('1 month', $this->createTimestamp('2013-11-11 10:09:08'), $request_time),
+      array('1 month', $this->createTimestamp('2013-11-11 10:09:07'), $request_time),
+      array('1 month', $this->createTimestamp('2013-11-11 09:09:08'), $request_time),
+      array('1 month', $this->createTimestamp('2013-11-11 09:08:07'), $request_time, $granularity_3),
+      array('1 month', $this->createTimestamp('2013-11-11 09:08:07'), $request_time, $granularity_4),
+      array('1 month 4 weeks', $this->createTimestamp('2013-10-13 10:09:08'), $request_time),
+      array('1 month 4 weeks 1 day', $this->createTimestamp('2013-10-13 10:09:08'), $request_time, $granularity_3),
+      array('1 month 4 weeks', $this->createTimestamp('2013-10-12 10:09:08'), $request_time),
+      array('1 month 4 weeks 2 days', $this->createTimestamp('2013-10-12 10:09:08'), $request_time, $granularity_3),
+      array('2 months', $this->createTimestamp('2013-10-11 10:09:08'), $request_time),
+      array('2 months', $this->createTimestamp('2013-10-10 10:09:08'), $request_time),
+      array('2 months', $this->createTimestamp('2013-10-09 08:07:06'), $request_time),
+      array('2 months', $this->createTimestamp('2013-10-09 08:07:06'), $request_time, $granularity_3),
+      array('2 months', $this->createTimestamp('2013-10-09 08:07:06'), $request_time, $granularity_4),
+      array('6 months', $this->createTimestamp('2013-06-09 10:09:08'), $request_time),
+      array('11 months', $this->createTimestamp('2013-01-11 07:09:08'), $request_time),
+      array('11 months 4 weeks', $this->createTimestamp('2012-12-12 10:09:08'), $request_time),
+      array('11 months 4 weeks 2 days', $this->createTimestamp('2012-12-12 10:09:08'), $request_time, $granularity_3),
 
       // Checks for years and possibly months, days, hours, minutes or seconds.
-      array('1 year', 365 * 86400, $this->createTimestamp('2012-12-11 10:09:08'), $request_time),
-      array('1 year', 365 * 86400, $this->createTimestamp('2012-12-11 10:08:08'), $request_time),
-      array('1 year', 365 * 86400, $this->createTimestamp('2012-12-10 10:09:08'), $request_time),
-      array('2 years', 365 * 86400, $this->createTimestamp('2011-12-11 10:09:08'), $request_time),
-      array('2 years', 365 * 86400, $this->createTimestamp('2011-12-11 10:07:08'), $request_time),
-      array('2 years', 365 * 86400, $this->createTimestamp('2011-12-09 10:09:08'), $request_time),
-      array('2 years 2 months', 30 * 86400, $this->createTimestamp('2011-10-09 08:07:06'), $request_time, $granularity_3),
-      array('2 years 2 months', 30 * 86400, $this->createTimestamp('2011-10-09 08:07:06'), $request_time, $granularity_4),
-      array('10 years', 365 * 86400, $this->createTimestamp('2003-12-11 10:09:08'), $request_time),
-      array('100 years', 365 * 86400, $this->createTimestamp('1913-12-11 10:09:08'), $request_time),
+      array('1 year', $this->createTimestamp('2012-12-11 10:09:08'), $request_time),
+      array('1 year', $this->createTimestamp('2012-12-11 10:08:08'), $request_time),
+      array('1 year', $this->createTimestamp('2012-12-10 10:09:08'), $request_time),
+      array('2 years', $this->createTimestamp('2011-12-11 10:09:08'), $request_time),
+      array('2 years', $this->createTimestamp('2011-12-11 10:07:08'), $request_time),
+      array('2 years', $this->createTimestamp('2011-12-09 10:09:08'), $request_time),
+      array('2 years 2 months', $this->createTimestamp('2011-10-09 08:07:06'), $request_time, $granularity_3),
+      array('2 years 2 months', $this->createTimestamp('2011-10-09 08:07:06'), $request_time, $granularity_4),
+      array('10 years', $this->createTimestamp('2003-12-11 10:09:08'), $request_time),
+      array('100 years', $this->createTimestamp('1913-12-11 10:09:08'), $request_time),
 
       // Checks the non-strict option vs. strict (default).
-      array('1 second', 1, $this->createTimestamp('2013-12-11 10:09:08'), $this->createTimestamp('2013-12-11 10:09:07'), $non_strict),
-      array('0 seconds', 0, $this->createTimestamp('2013-12-11 10:09:08'), $this->createTimestamp('2013-12-11 10:09:07')),
+      array('1 second', $this->createTimestamp('2013-12-11 10:09:08'), $this->createTimestamp('2013-12-11 10:09:07'), $non_strict),
+      array('0 seconds', $this->createTimestamp('2013-12-11 10:09:08'), $this->createTimestamp('2013-12-11 10:09:07')),
 
       // Checks granularity limit.
-      array('2 years 3 months 1 week', 7 * 86400, $this->createTimestamp('2011-08-30 11:15:57'), $request_time, $granularity_3),
+      array('2 years 3 months 1 week', $this->createTimestamp('2011-08-30 11:15:57'), $request_time, $granularity_3),
     );
 
     return $data;
diff --git a/core/tests/Drupal/Tests/Core/Entity/EntityFormTest.php b/core/tests/Drupal/Tests/Core/Entity/EntityFormTest.php
index b08f9f0..810bdd1 100644
--- a/core/tests/Drupal/Tests/Core/Entity/EntityFormTest.php
+++ b/core/tests/Drupal/Tests/Core/Entity/EntityFormTest.php
@@ -8,14 +8,8 @@
 namespace Drupal\Tests\Core\Entity;
 
 use Drupal\Core\Entity\EntityForm;
-use Drupal\Core\Entity\EntityInterface;
-use Drupal\Core\Entity\EntityStorageInterface;
-use Drupal\Core\Entity\EntityType;
-use Drupal\Core\Entity\EntityTypeManagerInterface;
 use Drupal\Core\Form\FormState;
-use Drupal\Core\Routing\RouteMatch;
 use Drupal\Tests\UnitTestCase;
-use Symfony\Component\Routing\Route;
 
 /**
  * @coversDefaultClass \Drupal\Core\Entity\EntityForm
@@ -31,20 +25,12 @@ class EntityFormTest extends UnitTestCase {
   protected $entityForm;
 
   /**
-   * A fake entity type used in the test.
-   *
-   * @var \Drupal\Core\Entity\EntityTypeInterface
-   */
-  protected $entityType;
-
-  /**
    * {@inheritdoc}
    */
   protected function setUp() {
     parent::setUp();
 
     $this->entityForm = new EntityForm();
-    $this->entityType = new EntityType(['id' => 'entity_test']);
   }
 
   /**
@@ -55,13 +41,17 @@ protected function setUp() {
    * @dataProvider providerTestFormIds
    */
   public function testFormId($expected, $definition) {
-    $this->entityType->set('entity_keys', ['bundle' => $definition['bundle']]);
+    $entity_type = $this->getMock('Drupal\Core\Entity\EntityTypeInterface');
+    $entity_type->expects($this->any())
+      ->method('hasKey')
+      ->with('bundle')
+      ->will($this->returnValue($definition['bundle']));
 
     $entity = $this->getMockForAbstractClass('Drupal\Core\Entity\Entity', array(array(), $definition['entity_type']), '', TRUE, TRUE, TRUE, array('getEntityType', 'bundle'));
 
     $entity->expects($this->any())
       ->method('getEntityType')
-      ->will($this->returnValue($this->entityType));
+      ->will($this->returnValue($entity_type));
     $entity->expects($this->any())
       ->method('bundle')
       ->will($this->returnValue($definition['bundle']));
@@ -133,115 +123,4 @@ public function testCopyFormValuesToEntity() {
     $this->assertNull($result->get('key_controlled_by_plugin_collection'));
   }
 
-  /**
-   * Tests EntityForm::getEntityFromRouteMatch() for edit and delete forms.
-   *
-   * @covers ::getEntityFromRouteMatch
-   */
-  public function testGetEntityFromRouteMatchEditDelete() {
-    $entity = $this->prophesize(EntityInterface::class)->reveal();
-    $id = $this->entityType->id();
-    $route_match = new RouteMatch(
-      'test_route',
-      new Route('/entity-test/manage/{' . $id . '}/edit'),
-      [$id => $entity],
-      [$id => 1]
-    );
-    $actual = $this->entityForm->getEntityFromRouteMatch($route_match, $id);
-    $this->assertEquals($entity, $actual);
-  }
-
-  /**
-   * Tests EntityForm::getEntityFromRouteMatch() for add forms without a bundle.
-   *
-   * @covers ::getEntityFromRouteMatch
-   */
-  public function testGetEntityFromRouteMatchAdd() {
-    $entity = $this->prophesize(EntityInterface::class)->reveal();
-    $this->setUpStorage()->create([])->willReturn($entity);
-    $route_match = new RouteMatch('test_route',  new Route('/entity-test/add'));
-    $actual = $this->entityForm->getEntityFromRouteMatch($route_match, $this->entityType->id());
-    $this->assertEquals($entity, $actual);
-  }
-
-  /**
-   * Tests EntityForm::getEntityFromRouteMatch() with a static bundle.
-   *
-   * @covers ::getEntityFromRouteMatch
-   */
-  public function testGetEntityFromRouteMatchAddStatic() {
-    $entity = $this->prophesize(EntityInterface::class)->reveal();
-    $bundle_key = 'bundle';
-    $bundle = 'test_bundle';
-    $this->entityType->set('entity_keys', ['bundle' => $bundle_key]);
-    $storage = $this->setUpStorage();
-
-    // Test without a bundle parameter in the route.
-    $storage->create([])->willReturn($entity);
-    $route_match = new RouteMatch('test_route',  new Route('/entity-test/add'));
-    $actual = $this->entityForm->getEntityFromRouteMatch($route_match, $this->entityType->id());
-    $this->assertEquals($entity, $actual);
-
-    // Test with a static bundle parameter.
-    $storage->create([$bundle_key => 'test_bundle'])->willReturn($entity);
-    $route_match = new RouteMatch(
-      'test_route',
-      new Route('/entity-test/add/{' . $bundle_key . '}'),
-      [$bundle_key => $bundle],
-      [$bundle_key => $bundle]
-    );
-    $actual = $this->entityForm->getEntityFromRouteMatch($route_match, $this->entityType->id());
-    $this->assertEquals($entity, $actual);
-  }
-
-  /**
-   * Tests EntityForm::getEntityFromRouteMatch() with a config entity bundle.
-   *
-   * @covers ::getEntityFromRouteMatch
-   */
-  public function testGetEntityFromRouteMatchAddEntity() {
-    $entity = $this->prophesize(EntityInterface::class)->reveal();
-    $bundle_entity_type_id = 'entity_test_bundle';
-    $bundle = 'test_entity_bundle';
-    $this->entityType->set('bundle_entity_type', $bundle_entity_type_id);
-    $storage = $this->setUpStorage();
-
-    // Test without a bundle parameter in the route.
-    $storage->create([])->willReturn($entity);
-    $route_match = new RouteMatch('test_route',  new Route('/entity-test/add'));
-    $actual = $this->entityForm->getEntityFromRouteMatch($route_match, $this->entityType->id());
-    $this->assertEquals($entity, $actual);
-
-    // Test with an entity bundle parameter.
-    $storage->create(['bundle' => $bundle])->willReturn($entity);
-    $bundle_entity = $this->prophesize(EntityInterface::class);
-    $bundle_entity->id()->willReturn('test_entity_bundle');
-    $route_match = new RouteMatch(
-      'test_route',
-      new Route('/entity-test/add/{entity_test_bundle}'),
-      [$bundle_entity_type_id => $bundle_entity->reveal()],
-      [$bundle_entity_type_id => $bundle]
-    );
-    $actual = $this->entityForm->getEntityFromRouteMatch($route_match, $this->entityType->id());
-    $this->assertEquals($entity, $actual);
-  }
-
-  /**
-   * Sets up the storage accessed via the entity type manager in the form.
-   *
-   * @return \Prophecy\Prophecy\ObjectProphecy
-   *   The storage prophecy.
-   */
-  protected function setUpStorage() {
-    $storage = $this->prophesize(EntityStorageInterface::class);
-
-    $entity_type_manager = $this->prophesize(EntityTypeManagerInterface::class);
-    $entity_type_manager->getDefinition($this->entityType->id())->willReturn($this->entityType);
-    $entity_type_manager->getStorage($this->entityType->id())->willReturn($storage->reveal());
-
-    $this->entityForm->setEntityTypeManager($entity_type_manager->reveal());
-
-    return $storage;
-  }
-
 }
diff --git a/core/tests/Drupal/Tests/Core/EventSubscriber/CustomPageExceptionHtmlSubscriberTest.php b/core/tests/Drupal/Tests/Core/EventSubscriber/CustomPageExceptionHtmlSubscriberTest.php
index cdcf5b4..a7efb7e 100644
--- a/core/tests/Drupal/Tests/Core/EventSubscriber/CustomPageExceptionHtmlSubscriberTest.php
+++ b/core/tests/Drupal/Tests/Core/EventSubscriber/CustomPageExceptionHtmlSubscriberTest.php
@@ -36,6 +36,13 @@ class CustomPageExceptionHtmlSubscriberTest extends UnitTestCase {
   protected $configFactory;
 
   /**
+   * The mocked alias manager.
+   *
+   * @var \Drupal\Core\Path\AliasManagerInterface|\PHPUnit_Framework_MockObject_MockObject
+   */
+  protected $aliasManager;
+
+  /**
    * The mocked logger.
    *
    * @var \Psr\Log\LoggerInterface
@@ -64,31 +71,21 @@ class CustomPageExceptionHtmlSubscriberTest extends UnitTestCase {
   protected $redirectDestination;
 
   /**
-   * The mocked access unaware router.
-   * @var \Symfony\Component\Routing\Matcher\UrlMatcherInterface|\PHPUnit_Framework_MockObject_MockObject
-   */
-  protected $accessUnawareRouter;
-
-  /**
    * {@inheritdoc}
    */
   protected function setUp() {
-    $this->configFactory = $this->getConfigFactoryStub(['system.site' => ['page.403' => '/access-denied-page', 'page.404' => '/not-found-page']]);
+    $this->configFactory = $this->getConfigFactoryStub(['system.site' => ['page.403' => 'access-denied-page', 'page.404' => 'not-found-page']]);
 
+    $this->aliasManager = $this->getMock('Drupal\Core\Path\AliasManagerInterface');
     $this->kernel = $this->getMock('Symfony\Component\HttpKernel\HttpKernelInterface');
     $this->logger = $this->getMock('Psr\Log\LoggerInterface');
     $this->redirectDestination = $this->getMock('\Drupal\Core\Routing\RedirectDestinationInterface');
+
     $this->redirectDestination->expects($this->any())
       ->method('getAsArray')
       ->willReturn(['destination' => 'test']);
-    $this->accessUnawareRouter = $this->getMock('Symfony\Component\Routing\Matcher\UrlMatcherInterface');
-    $this->accessUnawareRouter->expects($this->any())
-      ->method('match')
-      ->willReturn([
-        '_controller' => 'mocked',
-      ]);
 
-    $this->customPageSubscriber = new CustomPageExceptionHtmlSubscriber($this->configFactory, $this->kernel, $this->logger, $this->redirectDestination, $this->accessUnawareRouter);
+    $this->customPageSubscriber = new CustomPageExceptionHtmlSubscriber($this->configFactory, $this->aliasManager, $this->kernel, $this->logger, $this->redirectDestination);
 
     // You can't create an exception in PHP without throwing it. Store the
     // current error_log, and disable it temporarily.
@@ -103,9 +100,20 @@ protected function tearDown() {
   }
 
   /**
+   * Sets up an alias manager that does nothing.
+   */
+  protected function setupStubAliasManager() {
+    $this->aliasManager->expects($this->any())
+      ->method('getPathByAlias')
+      ->willReturnArgument(0);
+  }
+
+  /**
    * Tests onHandleException with a POST request.
    */
   public function testHandleWithPostRequest() {
+    $this->setupStubAliasManager();
+
     $request = Request::create('/test', 'POST', array('name' => 'druplicon', 'pass' => '12345'));
 
     $this->kernel->expects($this->once())->method('handle')->will($this->returnCallback(function (Request $request) {
@@ -125,6 +133,8 @@ public function testHandleWithPostRequest() {
    * Tests onHandleException with a GET request.
    */
   public function testHandleWithGetRequest() {
+    $this->setupStubAliasManager();
+
     $request = Request::create('/test', 'GET', array('name' => 'druplicon', 'pass' => '12345'));
 
     $this->kernel->expects($this->once())->method('handle')->will($this->returnCallback(function (Request $request) {
diff --git a/core/tests/Drupal/Tests/Core/EventSubscriber/DefaultExceptionSubscriberTest.php b/core/tests/Drupal/Tests/Core/EventSubscriber/DefaultExceptionSubscriberTest.php
deleted file mode 100644
index ffd8e92..0000000
--- a/core/tests/Drupal/Tests/Core/EventSubscriber/DefaultExceptionSubscriberTest.php
+++ /dev/null
@@ -1,45 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\Tests\Core\EventSubscriber\DefaultExceptionSubscriberTest.
- */
-
-namespace Drupal\Tests\Core\EventSubscriber;
-
-use Drupal\Core\EventSubscriber\DefaultExceptionSubscriber;
-use Drupal\Tests\UnitTestCase;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent;
-use Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException;
-use Symfony\Component\HttpKernel\HttpKernelInterface;
-
-/**
- * @coversDefaultClass \Drupal\Core\EventSubscriber\DefaultExceptionSubscriber
- * @group EventSubscriber
- */
-class DefaultExceptionSubscriberTest extends UnitTestCase {
-
-  /**
-   * @covers ::onException
-   * @covers ::onFormatUnknown
-   */
-  public function testOnExceptionWithUnknownFormat() {
-    $config_factory = $this->getConfigFactoryStub();
-
-    // Format 'bananas' requested, yet only 'json' allowed.
-    $kernel = $this->prophesize(HttpKernelInterface::class);
-    $request = Request::create('/test?_format=bananas');
-    $e = new MethodNotAllowedHttpException(['json'], 'test message');
-    $event = new GetResponseForExceptionEvent($kernel->reveal(), $request, 'GET', $e);
-    $subscriber = new DefaultExceptionSubscriber($config_factory);
-    $subscriber->onException($event);
-    $response = $event->getResponse();
-
-    $this->assertInstanceOf(Response::class, $response);
-    $this->assertEquals('test message', $response->getContent());
-    $this->assertEquals(405, $response->getStatusCode());
-  }
-
-}
diff --git a/core/tests/Drupal/Tests/Core/Extension/modules/module_handler_test/hook_include.inc b/core/tests/Drupal/Tests/Core/Extension/modules/module_handler_test/hook_include.inc
index 00c781d..3576f28 100644
--- a/core/tests/Drupal/Tests/Core/Extension/modules/module_handler_test/hook_include.inc
+++ b/core/tests/Drupal/Tests/Core/Extension/modules/module_handler_test/hook_include.inc
@@ -1,8 +1,3 @@
 <?php
 
-/**
- * @file
- * Include file for test module.
- */
-
 function module_handler_test_hook_include() {}
diff --git a/core/tests/Drupal/Tests/Core/Extension/modules/module_handler_test/module_handler_test.module b/core/tests/Drupal/Tests/Core/Extension/modules/module_handler_test/module_handler_test.module
index 18bf23c..3e36a10 100644
--- a/core/tests/Drupal/Tests/Core/Extension/modules/module_handler_test/module_handler_test.module
+++ b/core/tests/Drupal/Tests/Core/Extension/modules/module_handler_test/module_handler_test.module
@@ -1,11 +1,6 @@
 <?php
 
 /**
- * @file
- * Test module.
- */
-
-/**
  * Implements hook_hook_info().
  */
 function module_handler_test_hook_info() {
diff --git a/core/tests/Drupal/Tests/Core/Extension/modules/module_handler_test_added/module_handler_test_added.hook.inc b/core/tests/Drupal/Tests/Core/Extension/modules/module_handler_test_added/module_handler_test_added.hook.inc
index 718791b..6c8e0b8 100644
--- a/core/tests/Drupal/Tests/Core/Extension/modules/module_handler_test_added/module_handler_test_added.hook.inc
+++ b/core/tests/Drupal/Tests/Core/Extension/modules/module_handler_test_added/module_handler_test_added.hook.inc
@@ -1,8 +1,3 @@
 <?php
 
-/**
- * @file
- * Include file for test module.
- */
-
 function module_handler_test_added_hook($arg) { return $arg; }
diff --git a/core/tests/Drupal/Tests/Core/Extension/modules/module_handler_test_added/module_handler_test_added.module b/core/tests/Drupal/Tests/Core/Extension/modules/module_handler_test_added/module_handler_test_added.module
index 0a46c33..183e668 100644
--- a/core/tests/Drupal/Tests/Core/Extension/modules/module_handler_test_added/module_handler_test_added.module
+++ b/core/tests/Drupal/Tests/Core/Extension/modules/module_handler_test_added/module_handler_test_added.module
@@ -1,8 +1,4 @@
 <?php
 
-/**
- * @file
- * Test module.
- */
 
 function module_handler_test_added_helper($arg) { return $arg; }
diff --git a/core/tests/Drupal/Tests/Core/Extension/modules/module_handler_test_all1/module_handler_test_all1.module b/core/tests/Drupal/Tests/Core/Extension/modules/module_handler_test_all1/module_handler_test_all1.module
index 1555aec..ccb4ee9 100644
--- a/core/tests/Drupal/Tests/Core/Extension/modules/module_handler_test_all1/module_handler_test_all1.module
+++ b/core/tests/Drupal/Tests/Core/Extension/modules/module_handler_test_all1/module_handler_test_all1.module
@@ -1,9 +1,4 @@
 <?php
 
-/**
- * @file
- * Test module.
- */
-
 // return an array to test nested merge in invoke all.
 function module_handler_test_all1_hook($arg) { return array($arg); }
diff --git a/core/tests/Drupal/Tests/Core/Extension/modules/module_handler_test_all2/module_handler_test_all2.module b/core/tests/Drupal/Tests/Core/Extension/modules/module_handler_test_all2/module_handler_test_all2.module
index 9275ce3..48ce442 100644
--- a/core/tests/Drupal/Tests/Core/Extension/modules/module_handler_test_all2/module_handler_test_all2.module
+++ b/core/tests/Drupal/Tests/Core/Extension/modules/module_handler_test_all2/module_handler_test_all2.module
@@ -1,8 +1,3 @@
 <?php
 
-/**
- * @file
- * Test module.
- */
-
 function module_handler_test_all2_hook($arg) { return $arg; }
diff --git a/core/tests/Drupal/Tests/Core/Form/FormStateTest.php b/core/tests/Drupal/Tests/Core/Form/FormStateTest.php
index 23d7a00..24904e3 100644
--- a/core/tests/Drupal/Tests/Core/Form/FormStateTest.php
+++ b/core/tests/Drupal/Tests/Core/Form/FormStateTest.php
@@ -536,7 +536,7 @@ public function providerTestIsMethodType() {
    * @covers ::setTemporaryValue
    */
   public function testTemporaryValue() {
-    $form_state = new FormState();
+    $form_state = New FormState();
     $this->assertFalse($form_state->hasTemporaryValue('rainbow_sparkles'));
     $form_state->setTemporaryValue('rainbow_sparkles', 'yes please');
     $this->assertSame($form_state->getTemporaryValue('rainbow_sparkles'), 'yes please');
diff --git a/core/tests/Drupal/Tests/Core/Logger/LoggerChannelTest.php b/core/tests/Drupal/Tests/Core/Logger/LoggerChannelTest.php
index 6eebd80..dd34082 100644
--- a/core/tests/Drupal/Tests/Core/Logger/LoggerChannelTest.php
+++ b/core/tests/Drupal/Tests/Core/Logger/LoggerChannelTest.php
@@ -12,8 +12,6 @@
 use Drupal\Tests\UnitTestCase;
 use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\HttpFoundation\RequestStack;
-use Psr\Log\LoggerInterface;
-use Psr\Log\LoggerTrait;
 
 /**
  * @coversDefaultClass \Drupal\Core\Logger\LoggerChannel
@@ -57,21 +55,6 @@ public function testLog(callable $expected, Request $request = NULL, AccountInte
   }
 
   /**
-   * Tests LoggerChannel::log() recursion protection.
-   *
-   * @covers ::log
-   */
-  public function testLogRecursionProtection() {
-    $channel = new LoggerChannel('test');
-    $logger = $this->getMock('Psr\Log\LoggerInterface');
-    $logger->expects($this->exactly(LoggerChannel::MAX_CALL_DEPTH))
-      ->method('log');
-    $channel->addLogger($logger);
-    $channel->addLogger(new NaughtyRecursiveLogger($channel));
-    $channel->log(rand(0, 7), $this->randomMachineName());
-  }
-
-  /**
    * Tests LoggerChannel::addLoggers().
    *
    * @covers ::addLogger
@@ -146,19 +129,3 @@ function ($context) {
   }
 
 }
-
-class NaughtyRecursiveLogger implements LoggerInterface  {
-  use LoggerTrait;
-
-  protected $channel;
-  protected $message;
-
-  public function __construct(LoggerChannel $channel) {
-    $this->channel = $channel;
-  }
-
-  public function log($level, $message, array $context = []) {
-    $this->channel->log(rand(0, 7), $message, $context);
-  }
-}
-
diff --git a/core/tests/Drupal/Tests/Core/Menu/LocalActionManagerTest.php b/core/tests/Drupal/Tests/Core/Menu/LocalActionManagerTest.php
index 21c8839..c29799d 100644
--- a/core/tests/Drupal/Tests/Core/Menu/LocalActionManagerTest.php
+++ b/core/tests/Drupal/Tests/Core/Menu/LocalActionManagerTest.php
@@ -12,6 +12,7 @@
 use Drupal\Core\Access\AccessManagerInterface;
 use Drupal\Core\Access\AccessResult;
 use Drupal\Core\Access\AccessResultForbidden;
+use Drupal\Core\Cache\Cache;
 use Drupal\Core\Cache\CacheBackendInterface;
 use Drupal\Core\Extension\ModuleHandlerInterface;
 use Drupal\Core\Menu\LocalActionManager;
@@ -212,7 +213,10 @@ public function getActionsForRouteProvider() {
           '#cache' => array(
             'contexts' => array(),
             'tags' => array(),
-            'max-age' => 0,
+            // For back-compatibility in 8.0.x the max-age is Cache::PERMANENT
+            // instead of 0 for any class that does not implement
+            // \Drupal\Core\Cache\CacheableDependencyInterface.
+            'max-age' => Cache::PERMANENT,
           ),
         ),
       ),
@@ -254,7 +258,7 @@ public function getActionsForRouteProvider() {
           '#cache' => array(
             'contexts' => array(),
             'tags' => array(),
-            'max-age' => 0,
+            'max-age' => Cache::PERMANENT,
           ),
         ),
       ),
@@ -297,7 +301,7 @@ public function getActionsForRouteProvider() {
           '#cache' => array(
             'contexts' => array(),
             'tags' => array(),
-            'max-age' => 0,
+            'max-age' => Cache::PERMANENT,
           ),
         ),
         'plugin_id_2' => array(
@@ -312,7 +316,7 @@ public function getActionsForRouteProvider() {
           '#cache' => array(
             'contexts' => array(),
             'tags' => array(),
-            'max-age' => 0,
+            'max-age' => Cache::PERMANENT,
           ),
         ),
       ),
@@ -357,7 +361,7 @@ public function getActionsForRouteProvider() {
           '#cache' => array(
             'contexts' => array(),
             'tags' => array(),
-            'max-age' => 0,
+            'max-age' => Cache::PERMANENT,
           ),
         ),
         'plugin_id_2' => array(
@@ -372,7 +376,7 @@ public function getActionsForRouteProvider() {
           '#cache' => array(
             'contexts' => array(),
             'tags' => array(),
-            'max-age' => 0,
+            'max-age' => Cache::PERMANENT,
           ),
         ),
       ),
diff --git a/core/tests/Drupal/Tests/Core/Template/TwigSandboxTest.php b/core/tests/Drupal/Tests/Core/Template/TwigSandboxTest.php
index 7a3dd3a..d403db3 100644
--- a/core/tests/Drupal/Tests/Core/Template/TwigSandboxTest.php
+++ b/core/tests/Drupal/Tests/Core/Template/TwigSandboxTest.php
@@ -140,20 +140,6 @@ public function testEntitySafeMethods() {
     $this->assertEquals($result, 'testing', 'Sandbox policy allows get() to be called.');
   }
 
-  /**
-   * Tests that safe methods inside Url objects can be called.
-   */
-  public function testUrlSafeMethods() {
-    $url = $this->getMockBuilder('Drupal\Core\Url')
-      ->disableOriginalConstructor()
-      ->getMock();
-    $url->expects($this->once())
-      ->method('toString')
-      ->willReturn('http://kittens.cat/are/cute');
-    $result = $this->twig->render('{{ url.toString }}', ['url' => $url]);
-    $this->assertEquals($result, 'http://kittens.cat/are/cute', 'Sandbox policy allows toString() to be called.');
-  }
-
 }
 
 class TestAttribute extends Attribute {}
diff --git a/core/tests/Drupal/Tests/Core/Transliteration/PhpTransliterationTest.php b/core/tests/Drupal/Tests/Core/Transliteration/PhpTransliterationTest.php
index 9dc8388..6788011 100644
--- a/core/tests/Drupal/Tests/Core/Transliteration/PhpTransliterationTest.php
+++ b/core/tests/Drupal/Tests/Core/Transliteration/PhpTransliterationTest.php
@@ -50,7 +50,7 @@ public function testPhpTransliterationWithAlter($langcode, $original, $expected,
           // The default transliteration of Ä is A, but change it to Z for testing.
           $overrides[0xC4] = 'Z';
           // Also provide transliterations of two 5-byte characters from
-          // http://wikipedia.org/wiki/Gothic_alphabet.
+          // http://en.wikipedia.org/wiki/Gothic_alphabet.
           $overrides[0x10330] = 'A';
           $overrides[0x10338] = 'Th';
         }
@@ -73,7 +73,7 @@ public function providerTestPhpTransliterationWithAlter() {
     // Note that the 3-byte character is overridden by the 'kg' language.
     $two_byte = 'Ä Ö Ü Å Ø äöüåøhello';
     // These are two Gothic alphabet letters. See
-    // http://wikipedia.org/wiki/Gothic_alphabet
+    // http://en.wikipedia.org/wiki/Gothic_alphabet
     // They are not in our tables, but should at least give us '?' (unknown).
     $five_byte = html_entity_decode('&#x10330;&#x10338;', ENT_NOQUOTES, 'UTF-8');
     // Five-byte characters do not work in MySQL, so make a printable version.
diff --git a/core/themes/bartik/bartik.info.yml b/core/themes/bartik/bartik.info.yml
index c072de2..a74f90c 100644
--- a/core/themes/bartik/bartik.info.yml
+++ b/core/themes/bartik/bartik.info.yml
@@ -11,7 +11,6 @@ ckeditor_stylesheets:
   - css/base/elements.css
   - css/components/captions.css
   - css/components/table.css
-  - css/components/text-formatted.css
 regions:
   header: Header
   primary_menu: 'Primary menu'
diff --git a/core/themes/bartik/bartik.libraries.yml b/core/themes/bartik/bartik.libraries.yml
index 3bbecd9..fd82367 100644
--- a/core/themes/bartik/bartik.libraries.yml
+++ b/core/themes/bartik/bartik.libraries.yml
@@ -44,7 +44,6 @@ global-styling:
       css/components/table.css: {}
       css/components/tablesort-indicator.css: {}
       css/components/tabs.css: {}
-      css/components/text-formatted.css: {}
       css/components/toolbar.css: {}
       css/components/featured-bottom.css: {}
       css/components/password-suggestions.css: {}
diff --git a/core/themes/bartik/css/components/main-content.css b/core/themes/bartik/css/components/main-content.css
index 58f5190..2d17822 100644
--- a/core/themes/bartik/css/components/main-content.css
+++ b/core/themes/bartik/css/components/main-content.css
@@ -49,3 +49,17 @@
   }
 }
 
+/**
+ * @todo Decide if we want to keep this.
+ * It should be in layout.css but it would be
+ * overridden there by block.css.
+ */
+.region-content ul,
+.region-content ol {
+  margin: 1em 0;
+  padding: 0 0 0.25em 15px; /* LTR */
+}
+[dir="rtl"] .region-content ul,
+[dir="rtl"] .region-content ol {
+  padding: 0 15px 0.25em 0;
+}
diff --git a/core/themes/bartik/css/components/text-formatted.css b/core/themes/bartik/css/components/text-formatted.css
deleted file mode 100644
index f302e7b..0000000
--- a/core/themes/bartik/css/components/text-formatted.css
+++ /dev/null
@@ -1,15 +0,0 @@
-/**
- * @file
- *
- * Visual styles for Bartik's text-formatted component.
- */
-
-.text-formatted ul,
-.text-formatted ol {
-  margin: 1em 0;
-  padding: 0 0 0.25em 15px; /* LTR */
-}
-[dir="rtl"] .text-formatted ul,
-[dir="rtl"] .text-formatted ol {
-  padding: 0 15px 0.25em 0;
-}
diff --git a/core/themes/classy/classy.info.yml b/core/themes/classy/classy.info.yml
index 34b07b5..007c566 100644
--- a/core/themes/classy/classy.info.yml
+++ b/core/themes/classy/classy.info.yml
@@ -19,5 +19,3 @@ libraries-extend:
     - classy/dialog
   file/drupal.file:
     - classy/file
-  core/drupal.progress:
-    - classy/progress
diff --git a/core/themes/classy/templates/content/links--node.html.twig b/core/themes/classy/templates/content/links--node.html.twig
index a7b91e7..f4c3d72 100644
--- a/core/themes/classy/templates/content/links--node.html.twig
+++ b/core/themes/classy/templates/content/links--node.html.twig
@@ -13,6 +13,7 @@
  *     to l() as its $options parameter.
  *   - attributes: (optional) HTML attributes for the anchor, or for the <span>
  *     tag if no 'href' is supplied.
+ *   - link_key: The link CSS class.
  * - heading: (optional) A heading to precede the links.
  *   - text: The heading text.
  *   - level: The heading level (e.g. 'h2', 'h3').
diff --git a/core/themes/classy/templates/navigation/links.html.twig b/core/themes/classy/templates/navigation/links.html.twig
index c1bff6b..f82f41a 100644
--- a/core/themes/classy/templates/navigation/links.html.twig
+++ b/core/themes/classy/templates/navigation/links.html.twig
@@ -13,6 +13,7 @@
  *     to l() as its $options parameter.
  *   - attributes: (optional) HTML attributes for the anchor, or for the <span>
  *     tag if no 'href' is supplied.
+ *   - link_key: The link CSS class.
  * - heading: (optional) A heading to precede the links.
  *   - text: The heading text.
  *   - level: The heading level (e.g. 'h2', 'h3').
@@ -40,8 +41,8 @@
     {%- endif -%}
   {%- endif -%}
   <ul{{ attributes }}>
-    {%- for item in links -%}
-      <li{{ item.attributes }}>
+    {%- for key, item in links -%}
+      <li{{ item.attributes.addClass(key|clean_class) }}>
         {%- if item.link -%}
           {{ item.link }}
         {%- elseif item.text_attributes -%}
diff --git a/core/themes/seven/css/base/elements.css b/core/themes/seven/css/base/elements.css
index 6644cea..76fcc4c 100644
--- a/core/themes/seven/css/base/elements.css
+++ b/core/themes/seven/css/base/elements.css
@@ -166,9 +166,9 @@ details summary {
   padding-bottom: 0.5em;
 }
 details summary:focus {
+  border-top: 3px solid #0074bd;
   outline: none;
-}
-details summary:focus,
-details summary:hover {
+  color: #0074bd;
+  margin-top: -3px;
   text-decoration: underline;
 }
diff --git a/core/themes/seven/css/components/vertical-tabs.css b/core/themes/seven/css/components/vertical-tabs.css
index 34b5a52..e3bd0eb 100644
--- a/core/themes/seven/css/components/vertical-tabs.css
+++ b/core/themes/seven/css/components/vertical-tabs.css
@@ -45,6 +45,9 @@
 .vertical-tabs__menu-item:active {
   z-index: 2;
 }
+.vertical-tabs__menu-item.is-selected:focus {
+  outline: none;
+}
 .vertical-tabs__menu-item a {
   display: block;
   padding: 10px 15px 15px;
@@ -61,24 +64,19 @@
 .vertical-tabs__menu-item a:focus {
   background: #fcfcfa;
   text-shadow: none;
-}
-.vertical-tabs__menu-item a:focus {
-  outline: none;
-}
-.vertical-tabs__menu-item a:focus .vertical-tabs__menu-item-title {
-  text-decoration: underline;
-}
-.vertical-tabs__menu-item a:active .vertical-tabs__menu-item-title,
-.vertical-tabs__menu-item.is-selected a:focus .vertical-tabs__menu-item-title {
   text-decoration: none;
 }
 .vertical-tabs__menu-item.is-selected a {
   color: #004f80;
+  border-left: 4px solid #0074bd; /* LTR */
   padding-left: 11px; /* LTR */
   border-bottom: none;
+  outline: none;
   text-decoration: none;
 }
 [dir=rtl] .vertical-tabs__menu-item.is-selected a {
+  border-left: 0;
+  border-right: 4px solid #0074bd;
   padding-left: 15px;
   padding-right: 11px;
 }
diff --git a/core/themes/seven/seven.info.yml b/core/themes/seven/seven.info.yml
index cc9ddd7..699c963 100644
--- a/core/themes/seven/seven.info.yml
+++ b/core/themes/seven/seven.info.yml
@@ -28,8 +28,6 @@ libraries-extend:
     - seven/vertical-tabs
   core/jquery.ui:
     - seven/seven.jquery.ui
-  tour/tour-styling:
-    - seven/tour-styling
 quickedit_stylesheets:
   - css/components/quickedit.css
 regions:
diff --git a/core/themes/seven/seven.libraries.yml b/core/themes/seven/seven.libraries.yml
index a5b6d8a..cec9887 100644
--- a/core/themes/seven/seven.libraries.yml
+++ b/core/themes/seven/seven.libraries.yml
@@ -29,6 +29,7 @@ global-styling:
       css/components/tablesort-indicator.css: {}
       css/components/system-status-report.css: {}
       css/components/tabs.css: {}
+      css/components/tour.theme.css: {}
       css/components/views-ui.css: {}
     layout:
       css/layout/layout.css: {}
@@ -92,9 +93,3 @@ seven.drupal.dialog:
   css:
     theme:
       css/components/dialog.css: {}
-
-tour-styling:
-  version: VERSION
-  css:
-    theme:
-      css/components/tour.theme.css: {}
diff --git a/core/themes/seven/templates/install-page.html.twig b/core/themes/seven/templates/install-page.html.twig
index f1335a8..2ada24d 100644
--- a/core/themes/seven/templates/install-page.html.twig
+++ b/core/themes/seven/templates/install-page.html.twig
@@ -30,7 +30,7 @@
 
   <main role="main">
     {% if title %}
-      <h2 class="heading-a">{{ title }}</h2>
+      <h1>{{ title }}</h1>
     {% endif %}
     {{ page.highlighted }}
     {{ page.content }}
diff --git a/core/themes/stable/stable.theme b/core/themes/stable/stable.theme
deleted file mode 100644
index 456a4ad..0000000
--- a/core/themes/stable/stable.theme
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-
-/**
- * @file
- * Functions to support theming in the Stable theme.
- */
-
-use Drupal\Component\Utility\Html;
-
-/**
- * Implements template_preprocess_links().
- */
-function stable_preprocess_links(&$variables) {
-  // @deprecated in Drupal 8.0.x and will be removed before 9.0.0. This feature
-  // of adding a class based on the associative key can cause CSS class name
-  // conflicts.
-  if (!empty($variables['links'])) {
-    foreach ($variables['links'] as $key => $value) {
-      if (!is_numeric($key)) {
-        $class = Html::getClass($key);
-        $variables['links'][$key]['attributes']->addClass($class);
-      }
-    }
-  }
-}
diff --git a/core/themes/stable/templates/admin/block-list.html.twig b/core/themes/stable/templates/admin/block-list.html.twig
new file mode 100644
index 0000000..0da7e94
--- /dev/null
+++ b/core/themes/stable/templates/admin/block-list.html.twig
@@ -0,0 +1,21 @@
+{#
+/**
+ * @file
+ * Two column template for the block add/edit form.
+ *
+ * This template will be used when a block edit form specifies 'block_edit_form'
+ * as its #theme callback.  Otherwise, by default, block add/edit forms will be
+ * themed by form.html.twig.
+ *
+ * Available variables:
+ * - form: The block add/edit form.
+ */
+#}
+<div class="layout-block-list clearfix">
+  <div class="layout-region block-list-primary">
+    {{ form|without('place_blocks') }}
+  </div>
+  <div class="layout-region block-list-secondary">
+    {{ form.place_blocks }}
+  </div>
+</div>
diff --git a/core/themes/stable/templates/navigation/links.html.twig b/core/themes/stable/templates/navigation/links.html.twig
index c1bff6b..f82f41a 100644
--- a/core/themes/stable/templates/navigation/links.html.twig
+++ b/core/themes/stable/templates/navigation/links.html.twig
@@ -13,6 +13,7 @@
  *     to l() as its $options parameter.
  *   - attributes: (optional) HTML attributes for the anchor, or for the <span>
  *     tag if no 'href' is supplied.
+ *   - link_key: The link CSS class.
  * - heading: (optional) A heading to precede the links.
  *   - text: The heading text.
  *   - level: The heading level (e.g. 'h2', 'h3').
@@ -40,8 +41,8 @@
     {%- endif -%}
   {%- endif -%}
   <ul{{ attributes }}>
-    {%- for item in links -%}
-      <li{{ item.attributes }}>
+    {%- for key, item in links -%}
+      <li{{ item.attributes.addClass(key|clean_class) }}>
         {%- if item.link -%}
           {{ item.link }}
         {%- elseif item.text_attributes -%}
diff --git a/sites/example.settings.local.php b/sites/example.settings.local.php
index c3347ad..dfcc244 100644
--- a/sites/example.settings.local.php
+++ b/sites/example.settings.local.php
@@ -93,15 +93,3 @@
  * using these parameters in a request to rebuild.php.
  */
 $settings['rebuild_access'] = TRUE;
-
-/**
- * Skip file system permissions hardening.
- *
- * The system module will periodically check the permissions of your site's
- * site directory to ensure that it is not writable by the website user. For
- * sites that are managed with a version control system, this can cause problems
- * when files in that directory such as settings.php are updated, because the
- * user pulling in the changes won't have permissions to modify files in the
- * directory.
- */
-$settings['skip_permissions_hardening'] = TRUE;
diff --git a/vendor/composer/autoload_files.php b/vendor/composer/autoload_files.php
index 9a2fb75..0e9136e 100644
--- a/vendor/composer/autoload_files.php
+++ b/vendor/composer/autoload_files.php
@@ -9,6 +9,5 @@
     'c964ee0ededf28c96ebd9db5099ef910' => $vendorDir . '/guzzlehttp/promises/src/functions_include.php',
     'a0edc8309cc5e1d60e3047b5df6b7052' => $vendorDir . '/guzzlehttp/psr7/src/functions_include.php',
     '37a3dc5111fe8f707ab4c132ef1dbc62' => $vendorDir . '/guzzlehttp/guzzle/src/functions_include.php',
-    '5255c38a0faeba867671b61dfda6d864' => $vendorDir . '/paragonie/random_compat/lib/random.php',
     '454414594637b9dd94a19af83f56f1a2' => $baseDir . '/core/lib/Drupal.php',
 );
diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json
index 1db6cbc..38b3a3d 100644
--- a/vendor/composer/installed.json
+++ b/vendor/composer/installed.json
@@ -3800,56 +3800,6 @@
         ]
     },
     {
-        "name": "paragonie/random_compat",
-        "version": "1.1.1",
-        "version_normalized": "1.1.1.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/paragonie/random_compat.git",
-            "reference": "a208865a5aeffc2dbbef2a5b3409887272d93f32"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/paragonie/random_compat/zipball/a208865a5aeffc2dbbef2a5b3409887272d93f32",
-            "reference": "a208865a5aeffc2dbbef2a5b3409887272d93f32",
-            "shasum": ""
-        },
-        "require": {
-            "php": ">=5.2.0"
-        },
-        "require-dev": {
-            "phpunit/phpunit": "4.*|5.*"
-        },
-        "suggest": {
-            "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes."
-        },
-        "time": "2015-12-01 02:52:15",
-        "type": "library",
-        "installation-source": "dist",
-        "autoload": {
-            "files": [
-                "lib/random.php"
-            ]
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "MIT"
-        ],
-        "authors": [
-            {
-                "name": "Paragon Initiative Enterprises",
-                "email": "security@paragonie.com",
-                "homepage": "https://paragonie.com"
-            }
-        ],
-        "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7",
-        "keywords": [
-            "csprng",
-            "pseudorandom",
-            "random"
-        ]
-    },
-    {
         "name": "jcalderonzumba/gastonjs",
         "version": "v1.0.2",
         "version_normalized": "1.0.2.0",
diff --git a/vendor/paragonie/random_compat/.scrutinizer.yml b/vendor/paragonie/random_compat/.scrutinizer.yml
deleted file mode 100644
index a2f32ea..0000000
--- a/vendor/paragonie/random_compat/.scrutinizer.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-checks:
-    php:
-        code_rating: true
-        duplication: false
\ No newline at end of file
diff --git a/vendor/paragonie/random_compat/.travis.yml b/vendor/paragonie/random_compat/.travis.yml
deleted file mode 100644
index 43ec127..0000000
--- a/vendor/paragonie/random_compat/.travis.yml
+++ /dev/null
@@ -1,26 +0,0 @@
-language: php
-php:
-
-- "7.0"
-- "5.6"
-- "5.5"
-- "5.4"
-- "5.3"
-- "hhvm"
-
-
-sudo: false
-
-matrix:
-    fast_finish: true
-    allow_failures:
-      - php: "hhvm"
-
-install:
-
-- composer install
-- composer self-update
-- composer update
-- chmod +x ./phpunit.sh
-
-script: ./phpunit.sh travis
diff --git a/vendor/paragonie/random_compat/ERRATA.md b/vendor/paragonie/random_compat/ERRATA.md
deleted file mode 100644
index 9c0ef9f..0000000
--- a/vendor/paragonie/random_compat/ERRATA.md
+++ /dev/null
@@ -1,40 +0,0 @@
-## Errata (Design Decisions)
-
-### Reasoning Behind the Order of Preferred Random Data Sources
-
-The order is:
-
- 1. `libsodium if available`
- 2. `fread() /dev/urandom if available`
- 3. `mcrypt_create_iv($bytes, MCRYPT_CREATE_IV)`
- 4. `COM('CAPICOM.Utilities.1')->GetRandom()`
- 5. `openssl_random_pseudo_bytes()`
-
-If libsodium is available, we get random data from it. This is the preferred
-method on all OSes, but libsodium is not very widely installed, so other
-fallbacks are available.
-
-Next, we read `/dev/urandom` (if it exists). This is the preferred file to read
-for random data for cryptographic purposes for BSD and Linux.
-
-Despite [strongly urging people not to use mcrypt in their projects](https://paragonie.com/blog/2015/05/if-you-re-typing-word-mcrypt-into-your-code-you-re-doing-it-wrong),
-because libmcrypt is abandonware and the API puts too much responsibility on the
-implementor, we prioritize `mcrypt_create_iv()` with `MCRYPT_DEV_URANDOM` above
-the remaining implementations.
-
-The reason is simple: `mcrypt_create_iv()` is part of PHP's `ext/mcrypt` code,
-and is not part `libmcrypt`. It actually does the right thing:
-
- * On Unix-based operating systems, it reads from `/dev/urandom`, which is the
-   sane and correct thing to do.
- * On Windows, it reads from `CryptGenRandom`, which is an exclusively Windows
-   way to get random bytes.
-
-If we're on Windows and don't have access to `mcrypt`, we use `CAPICOM.Utilities.1`.
-
-Finally, we use `openssl_random_pseudo_bytes()` **as a last resort**, due to
-[PHP bug #70014](https://bugs.php.net/bug.php?id=70014). Internally, this 
-function calls `RAND_pseudo_bytes()`, which has been [deprecated](https://github.com/paragonie/random_compat/issues/5)
-by the OpenSSL team. Furthermore, [it might silently return weak random data](https://github.com/paragonie/random_compat/issues/6#issuecomment-119564973)
-if it is called before OpenSSL's **userspace** CSPRNG is seeded. Also, 
-[you want the OS CSPRNG, not a userspace CSPRNG](http://sockpuppet.org/blog/2014/02/25/safely-generate-random-numbers/).
diff --git a/vendor/paragonie/random_compat/LICENSE b/vendor/paragonie/random_compat/LICENSE
deleted file mode 100644
index 45c7017..0000000
--- a/vendor/paragonie/random_compat/LICENSE
+++ /dev/null
@@ -1,22 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2015 Paragon Initiative Enterprises
-
-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/paragonie/random_compat/README.md b/vendor/paragonie/random_compat/README.md
deleted file mode 100644
index ed5b1d8..0000000
--- a/vendor/paragonie/random_compat/README.md
+++ /dev/null
@@ -1,149 +0,0 @@
-# random_compat
-
-[![Build Status](https://travis-ci.org/paragonie/random_compat.svg?branch=master)](https://travis-ci.org/paragonie/random_compat)
-[![Scrutinizer](https://scrutinizer-ci.com/g/paragonie/random_compat/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/paragonie/random_compat)
-
-PHP 5.x polyfill for `random_bytes()` and `random_int()` created and maintained
-by [Paragon Initiative Enterprises](https://paragonie.com).
-
-Although this library *should* function in earlier versions of PHP, we will only
-consider issues relevant to [supported PHP versions](https://secure.php.net/supported-versions.php).
-**If you are using an unsupported version of PHP, please upgrade as soon as possible.**
-
-## Important
-
-Although this library has been examined by some security experts in the PHP 
-community, there will always be a chance that we overlooked something. Please 
-ask your favorite trusted hackers to hammer it for implementation errors and
-bugs before even thinking about deploying it in production.
-
-**Do not use the master branch, use a [stable release](https://github.com/paragonie/random_compat/releases/latest).**
-
-For the background of this library, please refer to our blog post on 
-[Generating Random Integers and Strings in PHP](https://paragonie.com/blog/2015/07/how-safely-generate-random-strings-and-integers-in-php).
-
-### Usability Notice
-
-If PHP cannot safely generate random data, this library will throw an `Exception`.
-It will never fall back to insecure random data. If this keeps happening, upgrade
-to a newer version of PHP immediately.
-
-## Usage
-
-This library exposes the [CSPRNG functions added in PHP 7](https://secure.php.net/manual/en/ref.csprng.php)
-for use in PHP 5 projects. Their behavior should be identical.
-
-### Generate a string of random bytes
-
-```php
-try {
-    $string = random_bytes(32);
-} catch (TypeError $e) {
-    // Well, it's an integer, so this IS unexpected.
-    die("An unexpected error has occurred"); 
-} catch (Error $e) {
-    // This is also unexpected because 32 is a reasonable integer.
-    die("An unexpected error has occurred");
-} catch (Exception $e) {
-    // If you get this message, the CSPRNG failed hard.
-    die("Could not generate a random string. Is our OS secure?");
-}
-
-var_dump(bin2hex($string));
-// string(64) "5787c41ae124b3b9363b7825104f8bc8cf27c4c3036573e5f0d4a91ad2eeac6f"
-```
-
-### Generate a random integer between two given integers (inclusive)
-
-```php
-try {
-    $int = random_int(0,255);
-
-} catch (TypeError $e) {
-    // Well, it's an integer, so this IS unexpected.
-    die("An unexpected error has occurred"); 
-} catch (Error $e) {
-    // This is also unexpected because 0 and 255 are both reasonable integers.
-    die("An unexpected error has occurred");
-} catch (Exception $e) {
-    // If you get this message, the CSPRNG failed hard.
-    die("Could not generate a random string. Is our OS secure?");
-}
-
-var_dump($int);
-// int(47)
-```
-
-### Exception handling
-
-When handling exceptions and errors you must account for differences between
-PHP 5 and PHP7.
-
-The differences:
-
-* Catching `Error` works, so long as it is caught before `Exception`.
-* Catching `Exception` has different behavior, without previously catching `Error`.
-* There is *no* portable way to catch all errors/exceptions.
-
-#### Our recommendation
-
-**Always** catch `Error` before `Exception`.
-
-#### Example
-
-```php
-try {
-    return random_int(1, $userInput);
-} catch (TypeError $e) {
-    // This is okay, so long as `Error` is caught before `Exception`.
-    throw new Exception('Please enter a number!');
-} catch (Error $e) {
-    // This is required, if you do not need to do anything just rethrow.
-    throw $e;
-} catch (Exception $e) {
-    // This is optional and maybe omitted if you do not want to handle errors
-    // during generation.
-    throw new InternalServerErrorException(
-        'Oops, our server is bust and cannot generate any random data.',
-        500,
-        $e
-    );
-}
-```
-
-## Contributors
-
-This project would not be anywhere near as excellent as it is today if it 
-weren't for the contributions of the following individuals:
-
-* [@AndrewCarterUK (Andrew Carter)](https://github.com/AndrewCarterUK)
-* [@asgrim (James Titcumb)](https://github.com/asgrim)
-* [@CodesInChaos (Christian Winnerlein)](https://github.com/CodesInChaos)
-* [@chriscct7 (Chris Christoff)](https://github.com/chriscct7)
-* [@cs278 (Chris Smith)](https://github.com/cs278)
-* [@cweagans (Cameron Eagans)](https://github.com/cweagans)
-* [@dd32 (Dion Hulse)](https://github.com/dd32)
-* [@geggleto (Glenn Eggleton)](https://github.com/geggleto)
-* [@ircmaxell (Anthony Ferrara)](https://github.com/ircmaxell)
-* [@jedisct1 (Frank Denis)](https://github.com/jedisct1)
-* [@juliangut (Julián Gutiérrez)](https://github.com/juliangut)
-* [@kelunik (Niklas Keller)](https://github.com/kelunik)
-* [@lt (Leigh)](https://github.com/lt)
-* [@MasonM (Mason Malone)](https://github.com/MasonM)
-* [@mmeyer2k (Michael M)](https://github.com/mmeyer2k)
-* [@narfbg (Andrey Andreev)](https://github.com/narfbg)
-* [@nicolas-grekas (Nicolas Grekas)](https://github.com/nicolas-grekas)
-* [@oittaa](https://github.com/oittaa)
-* [@redragonx (Stephen Chavez)](https://github.com/redragonx)
-* [@rchouinard (Ryan Chouinard)](https://github.com/rchouinard)
-* [@SammyK (Sammy Kaye Powers)](https://github.com/SammyK)
-* [@scottchiefbaker (Scott Baker)](https://github.com/scottchiefbaker)
-* [@skyosev (Stoyan Kyosev)](https://github.com/skyosev)
-* [@stof (Christophe Coevoet)](https://github.com/stof)
-* [@teohhanhui (Teoh Han Hui)](https://github.com/teohhanhui)
-* [@tom-- (Tom Worster)](https://github.com/tom--)
-* [@tsyr2ko](https://github.com/tsyr2ko)
-* [@trowski (Aaron Piotrowski)](https://github.com/trowski)
-* [@twistor (Chris Lepannen)](https://github.com/twistor)
-* [@voku (Lars Moelleken)](https://github.com/voku)
-* [@xabbuh (Christian Flothmann)](https://github.com/xabbuh)
diff --git a/vendor/paragonie/random_compat/SECURITY.md b/vendor/paragonie/random_compat/SECURITY.md
deleted file mode 100644
index 8f731b3..0000000
--- a/vendor/paragonie/random_compat/SECURITY.md
+++ /dev/null
@@ -1,108 +0,0 @@
-# An Invitation to Security Researchers
-
-Every company says they take security "very seriously." Rather than bore anyone 
-with banal boilerplate, here are some quick answers followed by detailed
-elaboration. If you have any questions about our policies, please email them to
-`scott@paragonie.com`.
-
-## Quick Answers
-
-* There is no compulsion to disclose vulnerabilities privately, but we 
-  appreciate a head's up.
-* `security@paragonie.com` will get your reports to the right person. Our GPG 
-  fingerprint, should you decide to encrypt your report, is 
-  `7F52 D5C6 1D12 55C7 3136  2E82 6B97 A1C2 8264 04DA`.
-
-* **YES**, we will reward security researchers who disclose vulnerabilities in
-  our software.
-* In most cases, **No Proof-of-Concept Required.**
-
-## How to Report a Security Bug to Paragon Initiative Enterprises
-
-### There is no compulsion to disclose privately.
-
-We believe vulnerability disclosure style is a personal choice and enjoy working
-with a diverse community. We understand and appreciate the importance of Full 
-Disclosure in the history and practice of security research.
-
-We would *like* to know about high-severity bugs before they become public
-knowledge, so we can fix them in a timely manner, but **we do not believe in 
-threatening researchers or trying to enforce vulnerability embargoes**.
-
-Ultimately, if you discover a security-affecting vulnerability, what you do with
-it is your choice. We would like to work with people, and to celebrate and 
-reward their skill, experience, and dedication. We appreciate being informed of
-our mistakes so we can learn from them and build a better product. Our goal is
-to empower the community.
-
-### Where to Send Security Vulnerabilities
-
-Our security email address is `security@paragonie.com`. Also feel free to open a
-new issue on Github if you want to disclose publicly.
-
-```
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: GnuPG
-
-mQENBFUgwRUBCADcIpqNwyYc5UmY/tpx1sF/rQ3knR1YNXYZThzFV+Gmqhp1fDH5
-qBs9foh1xwI6O7knWmQngnf/nBumI3x6xj7PuOdEZUh2FwCG/VWnglW8rKmoHzHA
-ivjiu9SLnPIPAgHSHeh2XD7q3Ndm3nenbjAiRFNl2iXcwA2cTQp9Mmfw9vVcw0G0
-z1o0G3s8cC8ZS6flFySIervvfSRWj7A1acI5eE3+AH/qXJRdEJ+9J8OB65p1JMfk
-6+fWgOB1XZxMpz70S0rW6IX38WDSRhEK2fXyZJAJjyt+YGuzjZySNSoQR/V6vNYn
-syrNPCJ2i5CgZQxAkyBBcr7koV9RIhPRzct/ABEBAAG0IVNlY3VyaXR5IDxzZWN1
-cml0eUBwYXJhZ29uaWUuY29tPokBOQQTAQIAIwUCVSDBFQIbAwcLCQgHAwIBBhUI
-AgkKCwQWAgMBAh4BAheAAAoJEGuXocKCZATat2YIAIoejNFEQ2c1iaOEtSuB7Pn/
-WLbsDsHNLDKOV+UnfaCjv/vL7D+5NMChFCi2frde/NQb2TsjqmIH+V+XbnJtlrXD
-Vj7yvMVal+Jqjwj7v4eOEWcKVcFZk+9cfUgh7t92T2BMX58RpgZF0IQZ6Z1R3FfC
-9Ub4X6ykW+te1q0/4CoRycniwmlQi6iGSr99LQ5pfJq2Qlmz/luTZ0UX0h575T7d
-cp2T1sX/zFRk/fHeANWSksipdDBjAXR7NMnYZgw2HghEdFk/xRDY7K1NRWNZBf05
-WrMHmh6AIVJiWZvI175URxEe268hh+wThBhXQHMhFNJM1qPIuzb4WogxM3UUD7m5
-AQ0EVSDBFQEIALNkpzSuJsHAHh79sc0AYWztdUe2MzyofQbbOnOCpWZebYsC3EXU
-335fIg59k0m6f+O7GmEZzzIv5v0i99GS1R8CJm6FvhGqtH8ZqmOGbc71WdJSiNVE
-0kpQoJlVzRbig6ZyyjzrggbM1eh5OXOk5pw4+23FFEdw7JWU0HJS2o71r1hwp05Z
-vy21kcUEobz/WWQQyGS0Neo7PJn+9KS6wOxXul/UE0jct/5f7KLMdWMJ1VgniQmm
-hjvkHLPSICteqCI04RfcmMseW9gueHQXeUu1SNIvsWa2MhxjeBej3pDnrZWszKwy
-gF45GO9/v4tkIXNMy5J1AtOyRgQ3IUMqp8EAEQEAAYkBHwQYAQIACQUCVSDBFQIb
-DAAKCRBrl6HCgmQE2jnIB/4/xFz8InpM7eybnBOAir3uGcYfs3DOmaKn7qWVtGzv
-rKpQPYnVtlU2i6Z5UO4c4jDLT/8Xm1UDz3Lxvqt4xCaDwJvBZexU5BMK8l5DvOzH
-6o6P2L1UDu6BvmPXpVZz7/qUhOnyf8VQg/dAtYF4/ax19giNUpI5j5o5mX5w80Rx
-qSXV9NdSL4fdjeG1g/xXv2luhoV53T1bsycI3wjk/x5tV+M2KVhZBvvuOm/zhJje
-oLWp0saaESkGXIXqurj6gZoujJvSvzl0n9F9VwqMEizDUfrXgtD1siQGhP0sVC6q
-ha+F/SAEJ0jEquM4TfKWWU2S5V5vgPPpIQSYRnhQW4b1
-=xJPW
------END PGP PUBLIC KEY BLOCK-----
-```
-
-### We Will Reward Security Researchers
-
-**This process has not been formalized; nor have dollar amounts been 
-discussed.**
-
-However, if you report a valid security-affecting bug, we will compensate you
-for the time spent finding the vulnerability and reward you for being a good
-neighbor.
-
-#### What does a "valid" bug mean?
-
-There are two sides to this:
-
-1. Some have spammed projects with invalid bug reports hoping to collect
-   bounties for pressing a button and running an automated analysis tool. This
-   is not cool.
-2. There is a potential for the developers of a project to declare all security
-   bug reports as invalid to save money.
-
-Our team members have an established history of reporting vulnerabilities to
-large open source projects. **We aren't in the business of ripping people off.**
-When in doubt, our policy is to err on the side of generosity.
-
-### No Proof-of-Concept Required
-
-We might ask for one if we feel we do not understand some of the details 
-pertaining to a specific vulnerability. We certainly appreciate them if you 
-include them in your report, but we believe **the burden lies with the developer
-to prove their software *is* secure** rather than with the researcher to prove
-that it isn't.
-
-In our experience, most bugs are simpler to fix than they are to exploit.
-
diff --git a/vendor/paragonie/random_compat/composer.json b/vendor/paragonie/random_compat/composer.json
deleted file mode 100644
index d363f4c..0000000
--- a/vendor/paragonie/random_compat/composer.json
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-    "name":         "paragonie/random_compat",
-    "description":  "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7",
-    "keywords": [
-            "csprng",
-            "random",
-            "pseudorandom"
-        ],
-    "license":      "MIT",
-    "type":         "library",
-    "authors": [
-            {
-                "name":     "Paragon Initiative Enterprises",
-                "email":    "security@paragonie.com",
-                "homepage": "https://paragonie.com"
-            }
-        ],
-    "support": {
-        "issues":   "https://github.com/paragonie/random_compat/issues",
-        "email":    "info@paragonie.com",
-        "source":   "https://github.com/paragonie/random_compat"
-    },
-    "require": {
-        "php": ">=5.2.0"
-    },
-    "require-dev": {
-        "phpunit/phpunit": "4.*|5.*"
-    },
-    "suggest": {
-        "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes."
-    },
-    "autoload": {
-        "files": ["lib/random.php"]
-    }
-}
diff --git a/vendor/paragonie/random_compat/lib/byte_safe_strings.php b/vendor/paragonie/random_compat/lib/byte_safe_strings.php
deleted file mode 100644
index a3cc90b..0000000
--- a/vendor/paragonie/random_compat/lib/byte_safe_strings.php
+++ /dev/null
@@ -1,160 +0,0 @@
-<?php
-/**
- * Random_* Compatibility Library
- * for using the new PHP 7 random_* API in PHP 5 projects
- *
- * The MIT License (MIT)
- *
- * Copyright (c) 2015 Paragon Initiative Enterprises
- *
- * 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.
- */
-
-if (!function_exists('RandomCompat_strlen')) {
-    if (
-        defined('MB_OVERLOAD_STRING') &&
-        ini_get('mbstring.func_overload') & MB_OVERLOAD_STRING
-    ) {
-        /**
-         * strlen() implementation that isn't brittle to mbstring.func_overload
-         *
-         * This version uses mb_strlen() in '8bit' mode to treat strings as raw
-         * binary rather than UTF-8, ISO-8859-1, etc
-         *
-         * @param string $binary_string
-         *
-         * @throws TypeError
-         *
-         * @return int
-         */
-        function RandomCompat_strlen($binary_string)
-        {
-            if (!is_string($binary_string)) {
-                throw new TypeError(
-                    'RandomCompat_strlen() expects a string'
-                );
-            }
-            return mb_strlen($binary_string, '8bit');
-        }
-    } else {
-        /**
-         * strlen() implementation that isn't brittle to mbstring.func_overload
-         *
-         * This version just used the default strlen()
-         *
-         * @param string $binary_string
-         *
-         * @throws TypeError
-         *
-         * @return int
-         */
-        function RandomCompat_strlen($binary_string)
-        {
-            if (!is_string($binary_string)) {
-                throw new TypeError(
-                    'RandomCompat_strlen() expects a string'
-                );
-            }
-            return strlen($binary_string);
-        }
-    }
-}
-
-if (!function_exists('RandomCompat_substr')) {
-    if (
-        defined('MB_OVERLOAD_STRING') &&
-        ini_get('mbstring.func_overload') & MB_OVERLOAD_STRING
-    ) {
-        /**
-         * substr() implementation that isn't brittle to mbstring.func_overload
-         *
-         * This version uses mb_substr() in '8bit' mode to treat strings as raw
-         * binary rather than UTF-8, ISO-8859-1, etc
-         *
-         * @param string $binary_string
-         * @param int $start
-         * @param int $length (optional)
-         *
-         * @throws TypeError
-         *
-         * @return string
-         */
-        function RandomCompat_substr($binary_string, $start, $length = null)
-        {
-            if (!is_string($binary_string)) {
-                throw new TypeError(
-                    'RandomCompat_substr(): First argument should be a string'
-                );
-            }
-            if (!is_int($start)) {
-                throw new TypeError(
-                    'RandomCompat_substr(): Second argument should be an integer'
-                );
-            }
-            if ($length === null) {
-                /**
-                 * mb_substr($str, 0, NULL, '8bit') returns an empty string on
-                 * PHP 5.3, so we have to find the length ourselves.
-                 */
-                $length = RandomCompat_strlen($length) - $start;
-            } elseif (!is_int($length)) {
-                throw new TypeError(
-                    'RandomCompat_substr(): Third argument should be an integer, or omitted'
-                );
-            }
-            return mb_substr($binary_string, $start, $length, '8bit');
-        }
-    } else {
-        /**
-         * substr() implementation that isn't brittle to mbstring.func_overload
-         *
-         * This version just uses the default substr()
-         *
-         * @param string $binary_string
-         * @param int $start
-         * @param int $length (optional)
-         *
-         * @throws TypeError
-         *
-         * @return string
-         */
-        function RandomCompat_substr($binary_string, $start, $length = null)
-        {
-            if (!is_string($binary_string)) {
-                throw new TypeError(
-                    'RandomCompat_substr(): First argument should be a string'
-                );
-            }
-            if (!is_int($start)) {
-                throw new TypeError(
-                    'RandomCompat_substr(): Second argument should be an integer'
-                );
-            }
-            if ($length !== null) {
-                if (!is_int($length)) {
-                    throw new TypeError(
-                        'RandomCompat_substr(): Third argument should be an integer, or omitted'
-                    );
-                }
-                return substr($binary_string, $start, $length);
-            }
-            return substr($binary_string, $start);
-        }
-    }
-}
diff --git a/vendor/paragonie/random_compat/lib/cast_to_int.php b/vendor/paragonie/random_compat/lib/cast_to_int.php
deleted file mode 100644
index 474ce64..0000000
--- a/vendor/paragonie/random_compat/lib/cast_to_int.php
+++ /dev/null
@@ -1,64 +0,0 @@
-<?php
-/**
- * Random_* Compatibility Library
- * for using the new PHP 7 random_* API in PHP 5 projects
- *
- * The MIT License (MIT)
- *
- * Copyright (c) 2015 Paragon Initiative Enterprises
- *
- * 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.
- */
-
-if (!function_exists('RandomCompat_intval')) {
-    
-    /**
-     * Cast to an integer if we can, safely.
-     * 
-     * If you pass it a float in the range (~PHP_INT_MAX, PHP_INT_MAX)
-     * (non-inclusive), it will sanely cast it to an int. If you it's equal to
-     * ~PHP_INT_MAX or PHP_INT_MAX, we let it fail as not an integer. Floats 
-     * lose precision, so the <= and => operators might accidentally let a float
-     * through.
-     * 
-     * @param numeric $number The number we want to convert to an int
-     * @param boolean $fail_open Set to true to not throw an exception
-     * 
-     * @return int (or float if $fail_open)
-     */
-    function RandomCompat_intval($number, $fail_open = false)
-    {
-        if (is_numeric($number)) {
-            $number += 0;
-        }
-        if (
-            is_float($number) &&
-            $number > ~PHP_INT_MAX &&
-            $number < PHP_INT_MAX
-        ) {
-            $number = (int) $number;
-        }
-        if (is_int($number) || $fail_open) {
-            return $number;
-        }
-        throw new TypeError(
-            'Expected an integer.'
-        );
-    }
-}
diff --git a/vendor/paragonie/random_compat/lib/error_polyfill.php b/vendor/paragonie/random_compat/lib/error_polyfill.php
deleted file mode 100644
index 57cfefd..0000000
--- a/vendor/paragonie/random_compat/lib/error_polyfill.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-/**
- * Random_* Compatibility Library 
- * for using the new PHP 7 random_* API in PHP 5 projects
- * 
- * The MIT License (MIT)
- * 
- * Copyright (c) 2015 Paragon Initiative Enterprises
- * 
- * 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.
- */
-
-if (!class_exists('Error', false)) {
-    // We can't really avoid making this extend Exception in PHP 5.
-    class Error extends Exception
-    {
-        
-    }
-}
-
-if (!class_exists('TypeError', false)) {
-    class TypeError extends Error
-    {
-        
-    }
-}
diff --git a/vendor/paragonie/random_compat/lib/random.php b/vendor/paragonie/random_compat/lib/random.php
deleted file mode 100644
index d1f7555..0000000
--- a/vendor/paragonie/random_compat/lib/random.php
+++ /dev/null
@@ -1,137 +0,0 @@
-<?php
-/**
- * Random_* Compatibility Library 
- * for using the new PHP 7 random_* API in PHP 5 projects
- * 
- * The MIT License (MIT)
- * 
- * Copyright (c) 2015 Paragon Initiative Enterprises
- * 
- * 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.
- */
-
-if (!defined('PHP_VERSION_ID')) {
-    // This constant was introduced in PHP 5.2.7
-    $RandomCompatversion = explode('.', PHP_VERSION);
-    define('PHP_VERSION_ID', ($RandomCompatversion[0] * 10000 + $RandomCompatversion[1] * 100 + $RandomCompatversion[2]));
-    $RandomCompatversion = null;
-}
-if (PHP_VERSION_ID < 70000) {
-    if (!defined('RANDOM_COMPAT_READ_BUFFER')) {
-        define('RANDOM_COMPAT_READ_BUFFER', 8);
-    }
-    $RandomCompatDIR = dirname(__FILE__);
-    require_once $RandomCompatDIR.'/byte_safe_strings.php';
-    require_once $RandomCompatDIR.'/cast_to_int.php';
-    require_once $RandomCompatDIR.'/error_polyfill.php';
-    if (!function_exists('random_bytes')) {
-        /**
-         * PHP 5.2.0 - 5.6.x way to implement random_bytes()
-         * 
-         * We use conditional statements here to define the function in accordance
-         * to the operating environment. It's a micro-optimization.
-         * 
-         * In order of preference:
-         *   1. Use libsodium if available.
-         *   2. fread() /dev/urandom if available (never on Windows)
-         *   3. mcrypt_create_iv($bytes, MCRYPT_CREATE_IV)
-         *   4. COM('CAPICOM.Utilities.1')->GetRandom()
-         *   5. openssl_random_pseudo_bytes() (absolute last resort)
-         * 
-         * See ERRATA.md for our reasoning behind this particular order
-         */
-        if (extension_loaded('libsodium')) {
-            // See random_bytes_libsodium.php
-            require_once $RandomCompatDIR.'/random_bytes_libsodium.php';
-        }
-        if (
-            !function_exists('random_bytes') && 
-            DIRECTORY_SEPARATOR === '/' &&
-            @is_readable('/dev/urandom')
-        ) {
-            // DIRECTORY_SEPARATOR === '/' on Unix-like OSes -- this is a fast
-            // way to exclude Windows.
-            // 
-            // Error suppression on is_readable() in case of an open_basedir or 
-            // safe_mode failure. All we care about is whether or not we can 
-            // read it at this point. If the PHP environment is going to panic 
-            // over trying to see if the file can be read in the first place,
-            // that is not helpful to us here.
-            
-            // See random_bytes_dev_urandom.php
-            require_once $RandomCompatDIR.'/random_bytes_dev_urandom.php';
-        }
-        if (
-            !function_exists('random_bytes') &&
-            PHP_VERSION_ID >= 50307 &&
-            extension_loaded('mcrypt')
-        ) {
-            // See random_bytes_mcrypt.php
-            require_once $RandomCompatDIR.'/random_bytes_mcrypt.php';
-        }
-        if (
-            !function_exists('random_bytes') && 
-            extension_loaded('com_dotnet') &&
-            class_exists('COM')
-        ) {
-            try {
-                $RandomCompatCOMtest = new COM('CAPICOM.Utilities.1');
-                if (method_exists($RandomCompatCOMtest, 'GetRandom')) {
-                    // See random_bytes_com_dotnet.php
-                    require_once $RandomCompatDIR.'/random_bytes_com_dotnet.php';
-                }
-            } catch (com_exception $e) {
-                // Don't try to use it.
-            }
-            $RandomCompatCOMtest = null;
-        }
-        if (
-            !function_exists('random_bytes') && 
-            extension_loaded('openssl') &&
-            (
-                // Unix-like with PHP >= 5.3.0 or
-                (
-                    DIRECTORY_SEPARATOR === '/' &&
-                    PHP_VERSION_ID >= 50300
-                ) ||
-                // Windows with PHP >= 5.4.1
-                PHP_VERSION_ID >= 50401
-            )
-        ) {
-            // See random_bytes_openssl.php
-            require_once $RandomCompatDIR.'/random_bytes_openssl.php';
-        }
-        if (!function_exists('random_bytes')) {
-            /**
-             * We don't have any more options, so let's throw an exception right now
-             * and hope the developer won't let it fail silently.
-             */
-            function random_bytes()
-            {
-                throw new Exception(
-                    'There is no suitable CSPRNG installed on your system'
-                );
-            }
-        }
-    }
-    if (!function_exists('random_int')) {
-        require_once $RandomCompatDIR.'/random_int.php';
-    }
-    $RandomCompatDIR = null;
-}
diff --git a/vendor/paragonie/random_compat/lib/random_bytes_com_dotnet.php b/vendor/paragonie/random_compat/lib/random_bytes_com_dotnet.php
deleted file mode 100644
index 0a781f4..0000000
--- a/vendor/paragonie/random_compat/lib/random_bytes_com_dotnet.php
+++ /dev/null
@@ -1,77 +0,0 @@
-<?php
-/**
- * Random_* Compatibility Library 
- * for using the new PHP 7 random_* API in PHP 5 projects
- * 
- * The MIT License (MIT)
- * 
- * Copyright (c) 2015 Paragon Initiative Enterprises
- * 
- * 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.
- */
-
-/**
- * Windows with PHP < 5.3.0 will not have the function
- * openssl_random_pseudo_bytes() available, so let's use
- * CAPICOM to work around this deficiency.
- * 
- * @param int $bytes
- * 
- * @throws Exception
- * 
- * @return string
- */
-function random_bytes($bytes)
-{
-    try {
-        $bytes = RandomCompat_intval($bytes);
-    } catch (TypeError $ex) {
-        throw new TypeError(
-            'random_bytes(): $bytes must be an integer'
-        );
-    }
-    if ($bytes < 1) {
-        throw new Error(
-            'Length must be greater than 0'
-        );
-    }
-    $buf = '';
-    $util = new COM('CAPICOM.Utilities.1');
-    $execCount = 0;
-    /**
-     * Let's not let it loop forever. If we run N times and fail to
-     * get N bytes of random data, then CAPICOM has failed us.
-     */
-    do {
-        $buf .= base64_decode($util->GetRandom($bytes, 0));
-        if (RandomCompat_strlen($buf) >= $bytes) {
-            /**
-             * Return our random entropy buffer here:
-             */
-            return RandomCompat_substr($buf, 0, $bytes);
-        }
-        ++$execCount; 
-    } while ($execCount < $bytes);
-    /**
-     * If we reach here, PHP has failed us.
-     */
-    throw new Exception(
-        'Could not gather sufficient random data'
-    );
-}
diff --git a/vendor/paragonie/random_compat/lib/random_bytes_dev_urandom.php b/vendor/paragonie/random_compat/lib/random_bytes_dev_urandom.php
deleted file mode 100644
index 5d07104..0000000
--- a/vendor/paragonie/random_compat/lib/random_bytes_dev_urandom.php
+++ /dev/null
@@ -1,142 +0,0 @@
-<?php
-/**
- * Random_* Compatibility Library 
- * for using the new PHP 7 random_* API in PHP 5 projects
- * 
- * The MIT License (MIT)
- * 
- * Copyright (c) 2015 Paragon Initiative Enterprises
- * 
- * 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.
- */
-
-if (!defined('RANDOM_COMPAT_READ_BUFFER')) {
-    define('RANDOM_COMPAT_READ_BUFFER', 8);
-}
-
-/**
- * Unless open_basedir is enabled, use /dev/urandom for
- * random numbers in accordance with best practices
- * 
- * Why we use /dev/urandom and not /dev/random
- * @ref http://sockpuppet.org/blog/2014/02/25/safely-generate-random-numbers
- * 
- * @param int $bytes
- * 
- * @throws Exception
- * 
- * @return string
- */
-function random_bytes($bytes)
-{
-    static $fp = null;
-    /**
-     * This block should only be run once
-     */
-    if (empty($fp)) {
-        /**
-         * We use /dev/urandom if it is a char device.
-         * We never fall back to /dev/random
-         */
-        $fp = fopen('/dev/urandom', 'rb');
-        if (!empty($fp)) {
-            $st = fstat($fp);
-            if (($st['mode'] & 0170000) !== 020000) {
-                fclose($fp);
-                $fp = false;
-            }
-        }
-        if (!empty($fp)) {
-            /**
-             * stream_set_read_buffer() does not exist in HHVM
-             * 
-             * If we don't set the stream's read buffer to 0, PHP will
-             * internally buffer 8192 bytes, which can waste entropy
-             * 
-             * stream_set_read_buffer returns 0 on success
-             */
-            if (function_exists('stream_set_read_buffer')) {
-                stream_set_read_buffer($fp, RANDOM_COMPAT_READ_BUFFER);
-            }
-            if (function_exists('stream_set_chunk_size')) {
-                stream_set_chunk_size($fp, RANDOM_COMPAT_READ_BUFFER);
-            }
-        }
-    }
-    try {
-        $bytes = RandomCompat_intval($bytes);
-    } catch (TypeError $ex) {
-        throw new TypeError(
-            'random_bytes(): $bytes must be an integer'
-        );
-    }
-    if ($bytes < 1) {
-        throw new Error(
-            'Length must be greater than 0'
-        );
-    }
-    /**
-     * This if() block only runs if we managed to open a file handle
-     * 
-     * It does not belong in an else {} block, because the above 
-     * if (empty($fp)) line is logic that should only be run once per
-     * page load.
-     */
-    if (!empty($fp)) {
-        $remaining = $bytes;
-        $buf = '';
-        /**
-         * We use fread() in a loop to protect against partial reads
-         */
-        do {
-            $read = fread($fp, $remaining); 
-            if ($read === false) {
-                /**
-                 * We cannot safely read from the file. Exit the
-                 * do-while loop and trigger the exception condition
-                 */
-                $buf = false;
-                break;
-            }
-            /**
-             * Decrease the number of bytes returned from remaining
-             */
-            $remaining -= RandomCompat_strlen($read);
-            $buf .= $read;
-        } while ($remaining > 0);
-        
-        /**
-         * Is our result valid?
-         */
-        if ($buf !== false) {
-            if (RandomCompat_strlen($buf) === $bytes) {
-                /**
-                 * Return our random entropy buffer here:
-                 */
-                return $buf;
-            }
-        }
-    }
-    /**
-     * If we reach here, PHP has failed us.
-     */
-    throw new Exception(
-        'Error reading from source device'
-    );
-}
diff --git a/vendor/paragonie/random_compat/lib/random_bytes_libsodium.php b/vendor/paragonie/random_compat/lib/random_bytes_libsodium.php
deleted file mode 100644
index 938cac9..0000000
--- a/vendor/paragonie/random_compat/lib/random_bytes_libsodium.php
+++ /dev/null
@@ -1,84 +0,0 @@
-<?php
-/**
- * Random_* Compatibility Library 
- * for using the new PHP 7 random_* API in PHP 5 projects
- * 
- * The MIT License (MIT)
- * 
- * Copyright (c) 2015 Paragon Initiative Enterprises
- * 
- * 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.
- */
-
-/**
- * If the libsodium PHP extension is loaded, we'll use it above any other
- * solution.
- *
- * libsodium-php project:
- * @ref https://github.com/jedisct1/libsodium-php
- *
- * @param int $bytes
- *
- * @throws Exception
- *
- * @return string
- */
-function random_bytes($bytes)
-{
-    try {
-        $bytes = RandomCompat_intval($bytes);
-    } catch (TypeError $ex) {
-        throw new TypeError(
-            'random_bytes(): $bytes must be an integer'
-        );
-    }
-    if ($bytes < 1) {
-        throw new Error(
-            'Length must be greater than 0'
-        );
-    }
-    /**
-     * \Sodium\randombytes_buf() doesn't allow more than 2147483647 bytes to be
-     * generated in one invocation.
-     */
-    if ($bytes > 2147483647) {
-        $buf = '';
-        for ($i = 0; $i < $bytes; $i += 1073741824) {
-            $n = ($bytes - $i) > 1073741824
-                ? 1073741824
-                : $bytes - $i;
-            $buf .= \Sodium\randombytes_buf($n);
-        }
-    } else {
-        $buf = \Sodium\randombytes_buf($bytes);
-    }
-
-    if ($buf !== false) {
-        if (RandomCompat_strlen($buf) === $bytes) {
-            return $buf;
-        }
-    }
-
-    /**
-     * If we reach here, PHP has failed us.
-     */
-    throw new Exception(
-        'Could not gather sufficient random data'
-    );
-}
diff --git a/vendor/paragonie/random_compat/lib/random_bytes_mcrypt.php b/vendor/paragonie/random_compat/lib/random_bytes_mcrypt.php
deleted file mode 100644
index 5a1b688..0000000
--- a/vendor/paragonie/random_compat/lib/random_bytes_mcrypt.php
+++ /dev/null
@@ -1,72 +0,0 @@
-<?php
-/**
- * Random_* Compatibility Library 
- * for using the new PHP 7 random_* API in PHP 5 projects
- * 
- * The MIT License (MIT)
- * 
- * Copyright (c) 2015 Paragon Initiative Enterprises
- * 
- * 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.
- */
-
-
-/**
- * Powered by ext/mcrypt (and thankfully NOT libmcrypt)
- * 
- * @ref https://bugs.php.net/bug.php?id=55169
- * @ref https://github.com/php/php-src/blob/c568ffe5171d942161fc8dda066bce844bdef676/ext/mcrypt/mcrypt.c#L1321-L1386
- * 
- * @param int $bytes
- * 
- * @throws Exception
- * 
- * @return string
- */
-function random_bytes($bytes)
-{
-    try {
-        $bytes = RandomCompat_intval($bytes);
-    } catch (TypeError $ex) {
-        throw new TypeError(
-            'random_bytes(): $bytes must be an integer'
-        );
-    }
-    if ($bytes < 1) {
-        throw new Error(
-            'Length must be greater than 0'
-        );
-    }
-
-    $buf = @mcrypt_create_iv($bytes, MCRYPT_DEV_URANDOM);
-    if ($buf !== false) {
-        if (RandomCompat_strlen($buf) === $bytes) {
-            /**
-             * Return our random entropy buffer here:
-             */
-            return $buf;
-        }
-    }
-    /**
-     * If we reach here, PHP has failed us.
-     */
-    throw new Exception(
-        'Could not gather sufficient random data'
-    );
-}
diff --git a/vendor/paragonie/random_compat/lib/random_bytes_openssl.php b/vendor/paragonie/random_compat/lib/random_bytes_openssl.php
deleted file mode 100644
index 3e12d3d..0000000
--- a/vendor/paragonie/random_compat/lib/random_bytes_openssl.php
+++ /dev/null
@@ -1,76 +0,0 @@
-<?php
-/**
- * Random_* Compatibility Library 
- * for using the new PHP 7 random_* API in PHP 5 projects
- * 
- * The MIT License (MIT)
- * 
- * Copyright (c) 2015 Paragon Initiative Enterprises
- * 
- * 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.
- */
-
-/**
- * Since openssl_random_pseudo_bytes() uses openssl's 
- * RAND_pseudo_bytes() API, which has been marked as deprecated by the
- * OpenSSL team, this is our last resort before failure.
- * 
- * @ref https://www.openssl.org/docs/crypto/RAND_bytes.html
- * 
- * @param int $bytes
- * 
- * @throws Exception
- * 
- * @return string
- */
-function random_bytes($bytes)
-{
-    try {
-        $bytes = RandomCompat_intval($bytes);
-    } catch (TypeError $ex) {
-        throw new TypeError(
-            'random_bytes(): $bytes must be an integer'
-        );
-    }
-    if ($bytes < 1) {
-        throw new Error(
-            'Length must be greater than 0'
-        );
-    }
-    $secure = true;
-    /**
-     * $secure is passed by reference. If it's set to false, fail. Note
-     * that this will only return false if this function fails to return
-     * any data.
-     * 
-     * @ref https://github.com/paragonie/random_compat/issues/6#issuecomment-119564973
-     */
-    $buf = openssl_random_pseudo_bytes($bytes, $secure);
-    if ($buf !== false && $secure) {
-        if (RandomCompat_strlen($buf) === $bytes) {
-            return $buf;
-        }
-    }
-    /**
-     * If we reach here, PHP has failed us.
-     */
-    throw new Exception(
-        'Could not gather sufficient random data'
-    );
-}
diff --git a/vendor/paragonie/random_compat/lib/random_int.php b/vendor/paragonie/random_compat/lib/random_int.php
deleted file mode 100644
index 6c91dbc..0000000
--- a/vendor/paragonie/random_compat/lib/random_int.php
+++ /dev/null
@@ -1,185 +0,0 @@
-<?php
-/**
- * Random_* Compatibility Library 
- * for using the new PHP 7 random_* API in PHP 5 projects
- * 
- * The MIT License (MIT)
- * 
- * Copyright (c) 2015 Paragon Initiative Enterprises
- * 
- * 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.
- */
-
-/**
- * Fetch a random integer between $min and $max inclusive
- * 
- * @param int $min
- * @param int $max
- * 
- * @throws Exception
- * 
- * @return int
- */
-function random_int($min, $max)
-{
-    /**
-     * Type and input logic checks
-     * 
-     * If you pass it a float in the range (~PHP_INT_MAX, PHP_INT_MAX)
-     * (non-inclusive), it will sanely cast it to an int. If you it's equal to
-     * ~PHP_INT_MAX or PHP_INT_MAX, we let it fail as not an integer. Floats 
-     * lose precision, so the <= and => operators might accidentally let a float
-     * through.
-     */
-    
-    try {
-        $min = RandomCompat_intval($min);
-    } catch (TypeError $ex) {
-        throw new TypeError(
-            'random_int(): $min must be an integer'
-        );
-    }
-    try {
-        $max = RandomCompat_intval($max);
-    } catch (TypeError $ex) {
-        throw new TypeError(
-            'random_int(): $max must be an integer'
-        );
-    }
-    
-    /**
-     * Now that we've verified our weak typing system has given us an integer,
-     * let's validate the logic then we can move forward with generating random
-     * integers along a given range.
-     */
-    if ($min > $max) {
-        throw new Error(
-            'Minimum value must be less than or equal to the maximum value'
-        );
-    }
-    if ($max === $min) {
-        return $min;
-    }
-
-    /**
-     * Initialize variables to 0
-     * 
-     * We want to store:
-     * $bytes => the number of random bytes we need
-     * $mask => an integer bitmask (for use with the &) operator
-     *          so we can minimize the number of discards
-     */
-    $attempts = $bits = $bytes = $mask = $valueShift = 0;
-
-    /**
-     * At this point, $range is a positive number greater than 0. It might
-     * overflow, however, if $max - $min > PHP_INT_MAX. PHP will cast it to
-     * a float and we will lose some precision.
-     */
-    $range = $max - $min;
-
-    /**
-     * Test for integer overflow:
-     */
-    if (!is_int($range)) {
-        /**
-         * Still safely calculate wider ranges.
-         * Provided by @CodesInChaos, @oittaa
-         * 
-         * @ref https://gist.github.com/CodesInChaos/03f9ea0b58e8b2b8d435
-         * 
-         * We use ~0 as a mask in this case because it generates all 1s
-         * 
-         * @ref https://eval.in/400356 (32-bit)
-         * @ref http://3v4l.org/XX9r5  (64-bit)
-         */
-        $bytes = PHP_INT_SIZE;
-        $mask = ~0;
-    } else {
-        /**
-         * $bits is effectively ceil(log($range, 2)) without dealing with 
-         * type juggling
-         */
-        while ($range > 0) {
-            if ($bits % 8 === 0) {
-               ++$bytes;
-            }
-            ++$bits;
-            $range >>= 1;
-            $mask = $mask << 1 | 1;
-        }
-        $valueShift = $min;
-    }
-
-    /**
-     * Now that we have our parameters set up, let's begin generating
-     * random integers until one falls between $min and $max
-     */
-    do {
-        /**
-         * The rejection probability is at most 0.5, so this corresponds
-         * to a failure probability of 2^-128 for a working RNG
-         */
-        if ($attempts > 128) {
-            throw new Exception(
-                'random_int: RNG is broken - too many rejections'
-            );
-        }
-
-        /**
-         * Let's grab the necessary number of random bytes
-         */
-        $randomByteString = random_bytes($bytes);
-        if ($randomByteString === false) {
-            throw new Exception(
-                'Random number generator failure'
-            );
-        }
-
-        /**
-         * Let's turn $randomByteString into an integer
-         * 
-         * This uses bitwise operators (<< and |) to build an integer
-         * out of the values extracted from ord()
-         * 
-         * Example: [9F] | [6D] | [32] | [0C] =>
-         *   159 + 27904 + 3276800 + 201326592 =>
-         *   204631455
-         */
-        $val = 0;
-        for ($i = 0; $i < $bytes; ++$i) {
-            $val |= ord($randomByteString[$i]) << ($i * 8);
-        }
-
-        /**
-         * Apply mask
-         */
-        $val &= $mask;
-        $val += $valueShift;
-
-        ++$attempts;
-        /**
-         * If $val overflows to a floating point number,
-         * ... or is larger than $max,
-         * ... or smaller than $min,
-         * then try again.
-         */
-    } while (!is_int($val) || $val > $max || $val < $min);
-    return (int) $val;
-}
diff --git a/vendor/paragonie/random_compat/phpunit.sh b/vendor/paragonie/random_compat/phpunit.sh
deleted file mode 100755
index c4c6a9f..0000000
--- a/vendor/paragonie/random_compat/phpunit.sh
+++ /dev/null
@@ -1,62 +0,0 @@
-#!/usr/bin/env bash
-
-if [ "$1" == 'full' ]; then
-    fulltest=1
-elif [ "$1" == 'each' ]; then
-    testeach=1
-else
-    fulltest=0
-fi
-
-PHP_VERSION=$(php -r "echo PHP_VERSION_ID;")
-
-echo
-echo -e "\033[33mBegin Unit Testing\033[0m"
-# Run the testing suite
-echo "Basic test suite:"
-php vendor/bin/phpunit tests/unit
-if [ $? -ne 0 ]; then
-    # Test failure
-    exit 1
-fi
-echo "With open_basedir enabled:"
-php -d open_basedir=`pwd` vendor/bin/phpunit tests/unit
-if [ $? -ne 0 ]; then
-    # Test failure
-    exit 1
-fi
-echo "With open_basedir enabled, allowing /dev:"
-php -d open_basedir=`pwd`:/dev vendor/bin/phpunit tests/unit
-if [ $? -ne 0 ]; then
-    # Test failure
-    exit 1
-fi
-echo "With mbstring.func_overload enabled:"
-php -d mbstring.func_overload=7 vendor/bin/phpunit tests/unit
-if [ $? -ne 0 ]; then
-    # Test failure
-    exit 1
-fi
-
-if [[ "$testeach" == "1" ]]; then
-    echo "    CAPICOM:"
-    php vendor/bin/phpunit --bootstrap tests/specific/capicom.php tests/unit
-    echo "    /dev/urandom:"
-    php vendor/bin/phpunit --bootstrap tests/specific/dev_urandom.php tests/unit
-    echo "    libsodium:"
-    php vendor/bin/phpunit --bootstrap tests/specific/libsodium.php tests/unit
-    echo "    mcrypt:"
-    php vendor/bin/phpunit --bootstrap tests/specific/mcrypt.php tests/unit
-    echo "    openssl:"
-    php vendor/bin/phpunit --bootstrap tests/specific/openssl.php tests/unit
-fi
-
-# Should we perform full statistical analyses?
-if [[ "$fulltest" == "1" ]]; then
-    php vendor/bin/phpunit tests/full
-    if [ $? -ne 0 ]; then
-        # Test failure
-        exit 1
-    fi
-fi
-
diff --git a/vendor/paragonie/random_compat/phpunit.xml.dist b/vendor/paragonie/random_compat/phpunit.xml.dist
deleted file mode 100644
index b4697d3..0000000
--- a/vendor/paragonie/random_compat/phpunit.xml.dist
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<phpunit backupGlobals="true"
-         backupStaticAttributes="false"
-         bootstrap="lib/random.php"
-         colors="true"
-         convertErrorsToExceptions="true"
-         convertNoticesToExceptions="true"
-         convertWarningsToExceptions="true"
-         processIsolation="false"
-         stopOnError="false"
-         stopOnFailure="false"
-         syntaxCheck="true"
->
-    <testsuites>
-        <testsuite name="Unit">
-            <directory>tests/unit</directory>
-        </testsuite>
-    </testsuites>
-    <testsuites>
-        <testsuite name="Random Compat Test Suite">
-            <directory suffix="Test.php">./tests/unit</directory>
-        </testsuite>
-    </testsuites>
-    <filter>
-        <whitelist processUncoveredFilesFromWhitelist="true">
-            <directory suffix=".php">./lib</directory>
-        </whitelist>
-    </filter>
-</phpunit>
\ No newline at end of file
diff --git a/vendor/symfony/validator/Resources/translations/validators.af.xlf b/vendor/symfony/validator/Resources/translations/validators.af.xlf
new file mode 100644
index 0000000..177bb00
--- /dev/null
+++ b/vendor/symfony/validator/Resources/translations/validators.af.xlf
@@ -0,0 +1,227 @@
+<?xml version="1.0"?>
+<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
+    <file source-language="en" datatype="plaintext" original="file.ext">
+        <body>
+            <trans-unit id="1">
+                <source>This value should be false.</source>
+                <target>Hierdie waarde moet vals wees.</target>
+            </trans-unit>
+            <trans-unit id="2">
+                <source>This value should be true.</source>
+                <target>Hierdie waarde moet waar wees.</target>
+            </trans-unit>
+            <trans-unit id="3">
+                <source>This value should be of type {{ type }}.</source>
+                <target>Hierdie waarde moet van die soort {{type}} wees.</target>
+            </trans-unit>
+            <trans-unit id="4">
+                <source>This value should be blank.</source>
+                <target>Hierdie waarde moet leeg wees.</target>
+            </trans-unit>
+            <trans-unit id="5">
+                <source>The value you selected is not a valid choice.</source>
+                <target>Die waarde wat jy gekies het is nie 'n geldige keuse nie.</target>
+            </trans-unit>
+            <trans-unit id="6">
+                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
+                <target>Jy moet ten minste {{ limit }} kies.|Jy moet ten minste {{ limit }} keuses kies.</target>
+            </trans-unit>
+            <trans-unit id="7">
+                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
+                <target>Jy moet by die meeste {{ limit }} keuse kies.|Jy moet by die meeste {{ limit }} keuses kies.</target>
+            </trans-unit>
+            <trans-unit id="8">
+                <source>One or more of the given values is invalid.</source>
+                <target>Een of meer van die gegewe waardes is ongeldig.</target>
+            </trans-unit>
+            <trans-unit id="9">
+                <source>This field was not expected.</source>
+                <target>Die veld is nie verwag nie.</target>
+            </trans-unit>
+            <trans-unit id="10">
+                <source>This field is missing.</source>
+                <target>Hierdie veld ontbreek.</target>
+            </trans-unit>
+            <trans-unit id="11">
+                <source>This value is not a valid date.</source>
+                <target>Hierdie waarde is nie 'n geldige datum nie.</target>
+            </trans-unit>
+            <trans-unit id="12">
+                <source>This value is not a valid datetime.</source>
+                <target>Hierdie waarde is nie 'n geldige datum en tyd nie.</target>
+            </trans-unit>
+            <trans-unit id="13">
+                <source>This value is not a valid email address.</source>
+                <target>Hierdie waarde is nie 'n geldige e-pos adres nie.</target>
+            </trans-unit>
+            <trans-unit id="14">
+                <source>The file could not be found.</source>
+                <target>Die lêer kon nie gevind word nie.</target>
+            </trans-unit>
+            <trans-unit id="15">
+                <source>The file is not readable.</source>
+                <target>Die lêer kan nie gelees word nie.</target>
+            </trans-unit>
+            <trans-unit id="16">
+                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>Die lêer is te groot ({{ size }} {{ suffix }}). Toegelaat maksimum grootte is {{ limit }} {{ suffix }}.</target>
+            </trans-unit>
+            <trans-unit id="17">
+                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
+                <target>Die MIME-tipe van die lêer is ongeldig ({{ type }}). Toegelaat MIME-tipes is {{ types }}.</target>
+            </trans-unit>
+            <trans-unit id="18">
+                <source>This value should be {{ limit }} or less.</source>
+                <target>Hierdie waarde moet {{ limit }} of minder wees.</target>
+            </trans-unit>
+            <trans-unit id="19">
+                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
+                <target>Hierdie waarde is te lank. Dit moet {{ limit }} karakter of minder wees.|Hierdie waarde is te lank. Dit moet {{ limit }} karakters of minder wees.</target>
+            </trans-unit>
+            <trans-unit id="20">
+                <source>This value should be {{ limit }} or more.</source>
+                <target>Hierdie waarde moet {{ limit }} of meer wees.</target>
+            </trans-unit>
+            <trans-unit id="21">
+                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
+                <target>Hierdie waarde is te kort. Dit moet {{ limit }} karakter of meer wees.|Hierdie waarde is te kort. Dit moet {{ limit }} karakters of meer wees.</target>
+            </trans-unit>
+            <trans-unit id="22">
+                <source>This value should not be blank.</source>
+                <target>Hierdie waarde moet nie leeg wees nie.</target>
+            </trans-unit>
+            <trans-unit id="23">
+                <source>This value should not be null.</source>
+                <target>Hierdie waarde moet nie nul wees nie.</target>
+            </trans-unit>
+            <trans-unit id="24">
+                <source>This value should be null.</source>
+                <target>Hierdie waarde moet nul wees.</target>
+            </trans-unit>
+            <trans-unit id="25">
+                <source>This value is not valid.</source>
+                <target>Hierdie waarde is nie geldig nie.</target>
+            </trans-unit>
+            <trans-unit id="26">
+                <source>This value is not a valid time.</source>
+                <target>Hierdie waarde is nie 'n geldige tyd nie.</target>
+            </trans-unit>
+            <trans-unit id="27">
+                <source>This value is not a valid URL.</source>
+                <target>Hierdie waarde is nie 'n geldige URL nie.</target>
+            </trans-unit>
+            <trans-unit id="31">
+                <source>The two values should be equal.</source>
+                <target>Die twee waardes moet gelyk wees.</target>
+            </trans-unit>
+            <trans-unit id="32">
+                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>Die lêer is te groot. Toegelaat maksimum grootte is {{ limit }} {{ suffix }}.</target>
+            </trans-unit>
+            <trans-unit id="33">
+                <source>The file is too large.</source>
+                <target>Die lêer is te groot.</target>
+            </trans-unit>
+            <trans-unit id="34">
+                <source>The file could not be uploaded.</source>
+                <target>Die lêer kan nie opgelaai word nie.</target>
+            </trans-unit>
+            <trans-unit id="35">
+                <source>This value should be a valid number.</source>
+                <target>Hierdie waarde moet 'n geldige nommer wees.</target>
+            </trans-unit>
+            <trans-unit id="36">
+                <source>This file is not a valid image.</source>
+                <target>Hierdie lêer is nie 'n geldige beeld nie.</target>
+            </trans-unit>
+            <trans-unit id="37">
+                <source>This is not a valid IP address.</source>
+                <target>Hierdie is nie 'n geldige IP-adres nie.</target>
+            </trans-unit>
+            <trans-unit id="38">
+                <source>This value is not a valid language.</source>
+                <target>Hierdie waarde is nie 'n geldige taal nie.</target>
+            </trans-unit>
+            <trans-unit id="39">
+                <source>This value is not a valid locale.</source>
+                <target>Hierdie waarde is nie 'n geldige land instelling nie.</target>
+            </trans-unit>
+            <trans-unit id="40">
+                <source>This value is not a valid country.</source>
+                <target>Hierdie waarde is nie 'n geldige land nie.</target>
+            </trans-unit>
+            <trans-unit id="41">
+                <source>This value is already used.</source>
+                <target>Hierdie waarde word reeds gebruik.</target>
+            </trans-unit>
+            <trans-unit id="42">
+                <source>The size of the image could not be detected.</source>
+                <target>Die grootte van die beeld kon nie opgespoor word nie.</target>
+            </trans-unit>
+            <trans-unit id="43">
+                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
+                <target>Die beeld breedte is te groot ({{ width }}px). Toegelaat maksimum breedte is {{ max_width }}px.</target>
+            </trans-unit>
+            <trans-unit id="44">
+                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
+                <target>Die beeld breedte is te klein ({{ width }}px). Minimum breedte verwag is {{ min_width }}px.</target>
+            </trans-unit>
+            <trans-unit id="45">
+                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
+                <target>Die beeld hoogte is te groot ({{ height }}px). Toegelaat maksimum hoogte is {{ max_height }}px.</target>
+            </trans-unit>
+            <trans-unit id="46">
+                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
+                <target>Die beeld hoogte is te klein ({{ height }}px). Minimum hoogte verwag is {{ min_height }}px.</target>
+            </trans-unit>
+            <trans-unit id="47">
+                <source>This value should be the user's current password.</source>
+                <target>Hierdie waarde moet die huidige wagwoord van die gebruiker wees.</target>
+            </trans-unit>
+            <trans-unit id="48">
+                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
+                <target>Hierdie waarde moet presies {{ limit }} karakter wees.|Hierdie waarde moet presies {{ limit }} karakters wees.</target>
+            </trans-unit>
+            <trans-unit id="49">
+                <source>The file was only partially uploaded.</source>
+                <target>Die lêer is slegs gedeeltelik opgelaai.</target>
+            </trans-unit>
+            <trans-unit id="50">
+                <source>No file was uploaded.</source>
+                <target>Geen lêer is opgelaai nie.</target>
+            </trans-unit>
+            <trans-unit id="51">
+                <source>No temporary folder was configured in php.ini.</source>
+                <target>Geen tydelike lêer is ingestel in php.ini nie.</target>
+            </trans-unit>
+            <trans-unit id="52">
+                <source>Cannot write temporary file to disk.</source>
+                <target>Kan nie tydelike lêer skryf op skyf nie.</target>
+            </trans-unit>
+            <trans-unit id="53">
+                <source>A PHP extension caused the upload to fail.</source>
+                <target>'n PHP-uitbreiding veroorsaak die oplaai van die lêer om te misluk.</target>
+            </trans-unit>
+            <trans-unit id="54">
+                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
+                <target>Hierdie versameling moet {{ limit }} element of meer bevat.|Hierdie versameling moet {{ limit }} elemente of meer bevat.</target>
+            </trans-unit>
+            <trans-unit id="55">
+                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
+                <target>Hierdie versameling moet {{ limit }} element of minder bevat.|Hierdie versameling moet {{ limit }} elemente of meer bevat.</target>
+            </trans-unit>
+            <trans-unit id="56">
+                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
+                <target>Hierdie versameling moet presies {{ limit }} element bevat.|Hierdie versameling moet presies {{ limit }} elemente bevat.</target>
+            </trans-unit>
+            <trans-unit id="57">
+                <source>Invalid card number.</source>
+                <target>Ongeldige kredietkaart nommer.</target>
+            </trans-unit>
+            <trans-unit id="58">
+                <source>Unsupported card type or invalid card number.</source>
+                <target>Nie-ondersteunde tipe kaart of ongeldige kredietkaart nommer.</target>
+            </trans-unit>
+        </body>
+    </file>
+</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.ar.xlf b/vendor/symfony/validator/Resources/translations/validators.ar.xlf
new file mode 100644
index 0000000..4950e0c
--- /dev/null
+++ b/vendor/symfony/validator/Resources/translations/validators.ar.xlf
@@ -0,0 +1,315 @@
+<?xml version="1.0"?>
+<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
+    <file source-language="en" datatype="plaintext" original="file.ext">
+        <body>
+            <trans-unit id="1">
+                <source>This value should be false.</source>
+                <target>هذه القيمة يجب أن تكون خاطئة.</target>
+            </trans-unit>
+            <trans-unit id="2">
+                <source>This value should be true.</source>
+                <target>هذه القيمة يجب أن تكون حقيقية.</target>
+            </trans-unit>
+            <trans-unit id="3">
+                <source>This value should be of type {{ type }}.</source>
+                <target>هذه القيمة يجب ان تكون من نوع {{ type }}.</target>
+            </trans-unit>
+            <trans-unit id="4">
+                <source>This value should be blank.</source>
+                <target>هذه القيمة يجب ان تكون فارغة.</target>
+            </trans-unit>
+            <trans-unit id="5">
+                <source>The value you selected is not a valid choice.</source>
+                <target>القيمة المختارة ليست خيارا صحيحا.</target>
+            </trans-unit>
+            <trans-unit id="6">
+                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
+                <target>يجب ان تختار {{ limit }} اختيار على الاقل.|يجب ان تختار {{ limit }} اختيار على الاقل.|يجب ان تختار {{ limit }} اختيارات على الاقل.|يجب ان تختار {{ limit }} اختيار على الاقل.|يجب ان تختار {{ limit }} اختيار على الاقل.|يجب ان تختار {{ limit }} اختيار على الاقل.</target>
+            </trans-unit>
+            <trans-unit id="7">
+                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
+                <target>يجب ان تختار {{ limit }} اختيار على الاكثر.|يجب ان تختار {{ limit }} اختيار على الاكثر.|يجب ان تختار {{ limit }} اختيارات على الاكثر.|يجب ان تختار {{ limit }} اختيار على الاكثر.|يجب ان تختار {{ limit }} اختيار على الاكثر.|يجب ان تختار {{ limit }} اختيار على الاكثر.</target>
+            </trans-unit>
+            <trans-unit id="8">
+                <source>One or more of the given values is invalid.</source>
+                <target>واحد أو أكثر من القيم المعطاه خاطئ.</target>
+            </trans-unit>
+            <trans-unit id="9">
+                <source>This field was not expected.</source>
+                <target>لم يكن من المتوقع هذا المجال.</target>
+            </trans-unit>
+            <trans-unit id="10">
+                <source>This field is missing.</source>
+                <target>هذا المجال مفقود.</target>
+            </trans-unit>
+            <trans-unit id="11">
+                <source>This value is not a valid date.</source>
+                <target>هذه القيمة ليست تاريخا صالحا.</target>
+            </trans-unit>
+            <trans-unit id="12">
+                <source>This value is not a valid datetime.</source>
+                <target>هذه القيمة ليست تاريخا و وقتا صالحا.</target>
+            </trans-unit>
+            <trans-unit id="13">
+                <source>This value is not a valid email address.</source>
+                <target>هذه القيمة ليست عنوان بريد إلكتروني صحيح.</target>
+            </trans-unit>
+            <trans-unit id="14">
+                <source>The file could not be found.</source>
+                <target>لا يمكن العثور على الملف.</target>
+            </trans-unit>
+            <trans-unit id="15">
+                <source>The file is not readable.</source>
+                <target>الملف غير قابل للقراءة.</target>
+            </trans-unit>
+            <trans-unit id="16">
+                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>الملف كبير جدا ({{ size }} {{ suffix }}).اقصى مساحه مسموح بها ({{ limit }} {{ suffix }}).</target>
+            </trans-unit>
+            <trans-unit id="17">
+                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
+                <target>نوع الملف غير صحيح ({{ type }}). الانواع المسموح بها هى {{ types }}.</target>
+            </trans-unit>
+            <trans-unit id="18">
+                <source>This value should be {{ limit }} or less.</source>
+                <target>هذه القيمة يجب ان تكون {{ limit }} او اقل.</target>
+            </trans-unit>
+            <trans-unit id="19">
+                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
+                <target>هذه القيمة طويلة جدا. يجب ان تكون {{ limit }} حرف او اقل.|هذه القيمة طويلة جدا. يجب ان تكون {{ limit }} حرف او اقل.|هذه القيمة طويلة جدا. يجب ان تكون {{ limit }} حروف او اقل.|هذه القيمة طويلة جدا. يجب ان تكون {{ limit }} حرف او اقل.|هذه القيمة طويلة جدا. يجب ان تكون {{ limit }} حرف او اقل.|هذه القيمة طويلة جدا. يجب ان تكون {{ limit }} حرف او اقل.</target>
+            </trans-unit>
+            <trans-unit id="20">
+                <source>This value should be {{ limit }} or more.</source>
+                <target>هذه القيمة يجب ان تكون {{ limit }} او اكثر.</target>
+            </trans-unit>
+            <trans-unit id="21">
+                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
+                <target>هذه القيمة قصيرة جدا. يجب ان تكون {{ limit }} حرف او اكثر.|هذه القيمة قصيرة جدا. يجب ان تكون {{ limit }} حرف او اكثر.|هذه القيمة قصيرة جدا. يجب ان تكون {{ limit }} حروف او اكثر.|هذه القيمة قصيرة جدا. يجب ان تكون {{ limit }} حرف او اكثر.|هذه القيمة قصيرة جدا. يجب ان تكون {{ limit }} حرف او اكثر.|هذه القيمة قصيرة جدا. يجب ان تكون {{ limit }} حرف او اكثر.</target>
+            </trans-unit>
+            <trans-unit id="22">
+                <source>This value should not be blank.</source>
+                <target>هذه القيمة يجب الا تكون فارغة.</target>
+            </trans-unit>
+            <trans-unit id="23">
+                <source>This value should not be null.</source>
+                <target>هذه القيمة يجب الا تكون فارغة.</target>
+            </trans-unit>
+            <trans-unit id="24">
+                <source>This value should be null.</source>
+                <target>هذه القيمة يجب ان تكون فارغة.</target>
+            </trans-unit>
+            <trans-unit id="25">
+                <source>This value is not valid.</source>
+                <target>هذه القيمة غير صحيحة.</target>
+            </trans-unit>
+            <trans-unit id="26">
+                <source>This value is not a valid time.</source>
+                <target>هذه القيمة ليست وقت صحيح.</target>
+            </trans-unit>
+            <trans-unit id="27">
+                <source>This value is not a valid URL.</source>
+                <target>هذه القيمة ليست رابط الكترونى صحيح.</target>
+            </trans-unit>
+            <trans-unit id="31">
+                <source>The two values should be equal.</source>
+                <target>القيمتان يجب ان تكونا متساويتان.</target>
+            </trans-unit>
+            <trans-unit id="32">
+                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>الملف كبير جدا. اقصى مساحه مسموح بها {{ limit }} {{ suffix }}.</target>
+            </trans-unit>
+            <trans-unit id="33">
+                <source>The file is too large.</source>
+                <target>الملف كبير جدا.</target>
+            </trans-unit>
+            <trans-unit id="34">
+                <source>The file could not be uploaded.</source>
+                <target>لم استطع استقبال الملف.</target>
+            </trans-unit>
+            <trans-unit id="35">
+                <source>This value should be a valid number.</source>
+                <target>هذه القيمة يجب ان تكون رقم.</target>
+            </trans-unit>
+            <trans-unit id="36">
+                <source>This file is not a valid image.</source>
+                <target>هذا الملف ليس صورة صحيحة.</target>
+            </trans-unit>
+            <trans-unit id="37">
+                <source>This is not a valid IP address.</source>
+                <target>هذه القيمة ليست عنوان رقمى صحيح.</target>
+            </trans-unit>
+            <trans-unit id="38">
+                <source>This value is not a valid language.</source>
+                <target>هذه القيمة ليست لغة صحيحة.</target>
+            </trans-unit>
+            <trans-unit id="39">
+                <source>This value is not a valid locale.</source>
+                <target>هذه القيمة ليست موقع صحيح.</target>
+            </trans-unit>
+            <trans-unit id="40">
+                <source>This value is not a valid country.</source>
+                <target>هذه القيمة ليست بلدا صالحا.</target>
+            </trans-unit>
+            <trans-unit id="41">
+                <source>This value is already used.</source>
+                <target>هذه القيمة مستخدمة بالفعل.</target>
+            </trans-unit>
+            <trans-unit id="42">
+                <source>The size of the image could not be detected.</source>
+                <target>لم استطع معرفة حجم الصورة.</target>
+            </trans-unit>
+            <trans-unit id="43">
+                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
+                <target>عرض الصورة كبير جدا ({{ width }}px). اقصى عرض مسموح به هو{{ max_width }}px.</target>
+            </trans-unit>
+            <trans-unit id="44">
+                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
+                <target>عرض الصورة صغير جدا ({{ width }}px). اقل عرض مسموح به هو{{ min_width }}px.</target>
+            </trans-unit>
+            <trans-unit id="45">
+                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
+                <target>طول الصورة كبير جدا ({{ height }}px). اقصى طول مسموح به هو{{ max_height }}px.</target>
+            </trans-unit>
+            <trans-unit id="46">
+                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
+                <target>طول الصورة صغير جدا ({{ height }}px). اقل طول مسموح به هو{{ min_height }}px.</target>
+            </trans-unit>
+            <trans-unit id="47">
+                <source>This value should be the user's current password.</source>
+                <target>هذه القيمة يجب ان تكون كلمة سر المستخدم الحالية.</target>
+            </trans-unit>
+            <trans-unit id="48">
+                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
+                <target>هذه القيمة يجب ان تحتوى على {{ limit }} حرف فقط.|هذه القيمة يجب ان تحتوى على {{ limit }} حرف فقط.|هذه القيمة يجب ان تحتوى على {{ limit }} حروف فقط.|هذه القيمة يجب ان تحتوى على {{ limit }} حرف فقط.|هذه القيمة يجب ان تحتوى على {{ limit }} حرف فقط.|هذه القيمة يجب ان تحتوى على {{ limit }} حرف فقط.</target>
+            </trans-unit>
+            <trans-unit id="49">
+                <source>The file was only partially uploaded.</source>
+                <target>تم استقبال جزء من الملف فقط.</target>
+            </trans-unit>
+            <trans-unit id="50">
+                <source>No file was uploaded.</source>
+                <target>لم يتم ارسال اى ملف.</target>
+            </trans-unit>
+            <trans-unit id="51">
+                <source>No temporary folder was configured in php.ini.</source>
+                <target>لم يتم تهيئة حافظة مؤقتة فى ملف php.ini.</target>
+            </trans-unit>
+            <trans-unit id="52">
+                <source>Cannot write temporary file to disk.</source>
+                <target>لم استطع كتابة الملف المؤقت.</target>
+            </trans-unit>
+            <trans-unit id="53">
+                <source>A PHP extension caused the upload to fail.</source>
+                <target>احد اضافات PHP تسببت فى فشل استقبال الملف.</target>
+            </trans-unit>
+            <trans-unit id="54">
+                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
+                <target>هذه المجموعة يجب ان تحتوى على {{ limit }} عنصر او اكثر.|هذه المجموعة يجب ان تحتوى على {{ limit }} عنصر او اكثر.|هذه المجموعة يجب ان تحتوى على {{ limit }} عناصر او اكثر.|هذه المجموعة يجب ان تحتوى على {{ limit }} عنصر او اكثر.|هذه المجموعة يجب ان تحتوى على {{ limit }} عنصر او اكثر.|هذه المجموعة يجب ان تحتوى على {{ limit }} عنصر او اكثر.</target>
+            </trans-unit>
+            <trans-unit id="55">
+                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
+                <target>هذه المجموعة يجب ان تحتوى على {{ limit }} عنصر او اقل.|هذه المجموعة يجب ان تحتوى على {{ limit }} عنصر او اقل.|هذه المجموعة يجب ان تحتوى على {{ limit }} عناصر او اقل.|هذه المجموعة يجب ان تحتوى على {{ limit }} عنصر او اقل.|هذه المجموعة يجب ان تحتوى على {{ limit }} عنصر او اقل.|هذه المجموعة يجب ان تحتوى على {{ limit }} عنصر او اقل.</target>
+            </trans-unit>
+            <trans-unit id="56">
+                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
+                <target>هذه المجموعة يجب ان تحتوى على {{ limit }} عنصر فقط.|هذه المجموعة يجب ان تحتوى على {{ limit }} عنصر فقط.|هذه المجموعة يجب ان تحتوى على {{ limit }} عناصر فقط.|هذه المجموعة يجب ان تحتوى على {{ limit }} عنصر فقط.|هذه المجموعة يجب ان تحتوى على {{ limit }} عنصر فقط.|هذه المجموعة يجب ان تحتوى على {{ limit }} عنصر فقط.</target>
+            </trans-unit>
+            <trans-unit id="57">
+                <source>Invalid card number.</source>
+                <target>رقم البطاقه غير صحيح.</target>
+            </trans-unit>
+            <trans-unit id="58">
+                <source>Unsupported card type or invalid card number.</source>
+                <target>نوع البطاقه غير مدعوم او الرقم غير صحيح.</target>
+            </trans-unit>
+            <trans-unit id="59">
+                <source>This is not a valid International Bank Account Number (IBAN).</source>
+                <target>الرقم IBAN (رقم الحساب المصرفي الدولي) الذي تم إدخاله غير صالح.</target>
+            </trans-unit>
+            <trans-unit id="60">
+                <source>This value is not a valid ISBN-10.</source>
+                <target>هذه القيمة ليست ISBN-10 صالحة.</target>
+            </trans-unit>
+            <trans-unit id="61">
+                <source>This value is not a valid ISBN-13.</source>
+                <target>هذه القيمة ليست ISBN-13 صالحة.</target>
+            </trans-unit>
+            <trans-unit id="62">
+                <source>This value is neither a valid ISBN-10 nor a valid ISBN-13.</source>
+                <target>هذه القيمة ليست ISBN-10 صالحة ولا ISBN-13 صالحة.</target>
+            </trans-unit>
+            <trans-unit id="63">
+                <source>This value is not a valid ISSN.</source>
+                <target>هذه القيمة ليست ISSN صالحة.</target>
+            </trans-unit>
+            <trans-unit id="64">
+                <source>This value is not a valid currency.</source>
+                <target>العُملة غير صحيحة.</target>
+            </trans-unit>
+            <trans-unit id="65">
+                <source>This value should be equal to {{ compared_value }}.</source>
+                <target>القيمة يجب ان تساوي {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="66">
+                <source>This value should be greater than {{ compared_value }}.</source>
+                <target>القيمة يجب ان تكون اعلي من {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="67">
+                <source>This value should be greater than or equal to {{ compared_value }}.</source>
+                <target>القيمة يجب ان تكون مساوية او اعلي من {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="68">
+                <source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
+                <target>القيمة يجب ان تطابق {{ compared_value_type }} {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="69">
+                <source>This value should be less than {{ compared_value }}.</source>
+                <target>القيمة يجب ان تكون اقل من {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="70">
+                <source>This value should be less than or equal to {{ compared_value }}.</source>
+                <target>القيمة يجب ان تساوي او تقل عن {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="71">
+                <source>This value should not be equal to {{ compared_value }}.</source>
+                <target>القيمة يجب ان لا تساوي {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="72">
+                <source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
+                <target>القيمة يجب ان لا تطابق {{ compared_value_type }} {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="73">
+                <source>The image ratio is too big ({{ ratio }}). Allowed maximum ratio is {{ max_ratio }}.</source>
+                <target>نسبة العرض على الارتفاع للصورة كبيرة جدا ({{ ratio }}). الحد الأقصى للنسبة المسموح به هو {{ max_ratio }}.</target>
+            </trans-unit>
+            <trans-unit id="74">
+                <source>The image ratio is too small ({{ ratio }}). Minimum ratio expected is {{ min_ratio }}.</source>
+                <target>نسبة العرض على الارتفاع للصورة صغيرة جدا ({{ ratio }}). الحد الأدنى للنسبة المسموح به هو {{ max_ratio }}.</target>
+            </trans-unit>
+            <trans-unit id="75">
+                <source>The image is square ({{ width }}x{{ height }}px). Square images are not allowed.</source>
+                <target>الصورة مربعة ({{ width }}x{{ height }}px). الصور المربعة غير مسموح بها.</target>
+            </trans-unit>
+            <trans-unit id="76">
+                <source>The image is landscape oriented ({{ width }}x{{ height }}px). Landscape oriented images are not allowed.</source>
+                <target>الصورة في وضع أفقي ({{ width }}x{{ height }}px). الصور في وضع أفقي غير مسموح بها.</target>
+            </trans-unit>
+            <trans-unit id="77">
+                <source>The image is portrait oriented ({{ width }}x{{ height }}px). Portrait oriented images are not allowed.</source>
+                <target>الصورة في وضع عمودي ({{ width }}x{{ height }}px). الصور في وضع عمودي غير مسموح بها.</target>
+            </trans-unit>
+            <trans-unit id="78">
+                <source>An empty file is not allowed.</source>
+                <target>ملف فارغ غير مسموح به.</target>
+            </trans-unit>
+            <trans-unit id="79">
+                <source>The host could not be resolved.</source>
+                <target>يتعذر الإتصال بالنطاق.</target>
+            </trans-unit>
+            <trans-unit id="80">
+                <source>This value does not match the expected {{ charset }} charset.</source>
+                <target>هذه القيمة غير متطابقة مع صيغة التحويل {{ charset }}.</target>
+            </trans-unit>
+        </body>
+    </file>
+</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.az.xlf b/vendor/symfony/validator/Resources/translations/validators.az.xlf
new file mode 100644
index 0000000..add868c
--- /dev/null
+++ b/vendor/symfony/validator/Resources/translations/validators.az.xlf
@@ -0,0 +1,227 @@
+<?xml version="1.0"?>
+<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
+    <file source-language="en" datatype="plaintext" original="file.ext">
+        <body>
+            <trans-unit id="1">
+                <source>This value should be false.</source>
+                <target>Bu dəyər false olmalıdır.</target>
+            </trans-unit>
+            <trans-unit id="2">
+                <source>This value should be true.</source>
+                <target>Bu dəyər true olmalıdır.</target>
+            </trans-unit>
+            <trans-unit id="3">
+                <source>This value should be of type {{ type }}.</source>
+                <target>Bu dəyərin tipi {{ type }} olmalıdır.</target>
+            </trans-unit>
+            <trans-unit id="4">
+                <source>This value should be blank.</source>
+                <target>Bu dəyər boş olmalıdır.</target>
+            </trans-unit>
+            <trans-unit id="5">
+                <source>The value you selected is not a valid choice.</source>
+                <target>Seçdiyiniz dəyər düzgün bir seçim değil.</target>
+            </trans-unit>
+            <trans-unit id="6">
+                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
+                <target>Ən az {{ limit }} seçim qeyd edilməlidir.</target>
+            </trans-unit>
+            <trans-unit id="7">
+                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
+                <target>Ən çox {{ limit }} seçim qeyd edilməlidir.</target>
+            </trans-unit>
+            <trans-unit id="8">
+                <source>One or more of the given values is invalid.</source>
+                <target>Təqdim edilən dəyərlərdən bir və ya bir neçəsi yanlışdır.</target>
+            </trans-unit>
+            <trans-unit id="9">
+                <source>This field was not expected.</source>
+                <target>Bu sahə gözlənilmirdi.</target>
+            </trans-unit>
+            <trans-unit id="10">
+                <source>This field is missing.</source>
+                <target>Bu sahə əksikdir.</target>
+            </trans-unit>
+            <trans-unit id="11">
+                <source>This value is not a valid date.</source>
+                <target>Bu dəyər düzgün bir tarix deyil.</target>
+            </trans-unit>
+            <trans-unit id="12">
+                <source>This value is not a valid datetime.</source>
+                <target>Bu dəyər düzgün bir tarixsaat deyil.</target>
+            </trans-unit>
+            <trans-unit id="13">
+                <source>This value is not a valid email address.</source>
+                <target>Bu dəyər düzgün bir e-poçt adresi deyil.</target>
+            </trans-unit>
+            <trans-unit id="14">
+                <source>The file could not be found.</source>
+                <target>Fayl tapılmadı.</target>
+            </trans-unit>
+            <trans-unit id="15">
+                <source>The file is not readable.</source>
+                <target>Fayl oxunabilən deyil.</target>
+            </trans-unit>
+            <trans-unit id="16">
+                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>Fayl çox böyükdür ({{ size }} {{ suffix }}). İcazə verilən maksimum fayl ölçüsü {{ limit }} {{ suffix }}.</target>
+            </trans-unit>
+            <trans-unit id="17">
+                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
+                <target>Faylın mime tipi yanlışdr ({{ type }}). İcazə verilən mime tipləri {{ types }}.</target>
+            </trans-unit>
+            <trans-unit id="18">
+                <source>This value should be {{ limit }} or less.</source>
+                <target>Bu dəyər {{ limit }} və ya altında olmalıdır.</target>
+            </trans-unit>
+            <trans-unit id="19">
+                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
+                <target>Bu dəyər çox uzundur. {{ limit }} və ya daha az simvol olmalıdır.</target>
+            </trans-unit>
+            <trans-unit id="20">
+                <source>This value should be {{ limit }} or more.</source>
+                <target>Bu dəyər {{ limit }} veya daha fazla olmalıdır.</target>
+            </trans-unit>
+            <trans-unit id="21">
+                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
+                <target>Bu dəyər çox qısadır. {{ limit }} və ya daha çox simvol olmalıdır.</target>
+            </trans-unit>
+            <trans-unit id="22">
+                <source>This value should not be blank.</source>
+                <target>Bu dəyər boş olmamalıdır.</target>
+            </trans-unit>
+            <trans-unit id="23">
+                <source>This value should not be null.</source>
+                <target>Bu dəyər boş olmamalıdır.</target>
+            </trans-unit>
+            <trans-unit id="24">
+                <source>This value should be null.</source>
+                <target>Bu dəyər boş olmamalıdır.</target>
+            </trans-unit>
+            <trans-unit id="25">
+                <source>This value is not valid.</source>
+                <target>Bu dəyər doğru deyil.</target>
+            </trans-unit>
+            <trans-unit id="26">
+                <source>This value is not a valid time.</source>
+                <target>Bu dəyər doğru bir saat deyil.</target>
+            </trans-unit>
+            <trans-unit id="27">
+                <source>This value is not a valid URL.</source>
+                <target>Bu dəyər doğru bir URL değil.</target>
+            </trans-unit>
+            <trans-unit id="31">
+                <source>The two values should be equal.</source>
+                <target>İki dəyər eyni olmalıdır.</target>
+            </trans-unit>
+            <trans-unit id="32">
+                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>Fayl çox böyükdür. İcazə verilən ən böyük fayl ölçüsü {{ limit }} {{ suffix }}.</target>
+            </trans-unit>
+            <trans-unit id="33">
+                <source>The file is too large.</source>
+                <target>Fayl çox böyükdür.</target>
+            </trans-unit>
+            <trans-unit id="34">
+                <source>The file could not be uploaded.</source>
+                <target>Fayl yüklənəbilmir.</target>
+            </trans-unit>
+            <trans-unit id="35">
+                <source>This value should be a valid number.</source>
+                <target>Bu dəyər rəqəm olmalıdır.</target>
+            </trans-unit>
+            <trans-unit id="36">
+                <source>This file is not a valid image.</source>
+                <target>Bu fayl düzgün bir şəkil deyil.</target>
+            </trans-unit>
+            <trans-unit id="37">
+                <source>This is not a valid IP address.</source>
+                <target>Bu düzgün bir IP adresi deyil.</target>
+            </trans-unit>
+            <trans-unit id="38">
+                <source>This value is not a valid language.</source>
+                <target>Bu dəyər düzgün bir dil deyil.</target>
+            </trans-unit>
+            <trans-unit id="39">
+                <source>This value is not a valid locale.</source>
+                <target>Bu dəyər düzgün bir dil deyil.</target>
+            </trans-unit>
+            <trans-unit id="40">
+                <source>This value is not a valid country.</source>
+                <target>Bu dəyər düzgün bir ölkə deyil.</target>
+            </trans-unit>
+            <trans-unit id="41">
+                <source>This value is already used.</source>
+                <target>Bu dəyər hal-hazırda istifadədədir.</target>
+            </trans-unit>
+            <trans-unit id="42">
+                <source>The size of the image could not be detected.</source>
+                <target>Şəklin ölçüsü hesablana bilmir.</target>
+            </trans-unit>
+            <trans-unit id="43">
+                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
+                <target>Şəklin genişliyi çox böyükdür ({{ width }}px). İcazə verilən ən böyük genişlik {{ max_width }}px.</target>
+            </trans-unit>
+            <trans-unit id="44">
+                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
+                <target>Şəklin genişliyi çox kiçikdir ({{ width }}px). Ən az {{ min_width }}px olmalıdır.</target>
+            </trans-unit>
+            <trans-unit id="45">
+                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
+                <target>Şəklin yüksəkliyi çox böyükdür ({{ height }}px). İcazə verilən ən böyük yüksəklik {{ max_height }}px.</target>
+            </trans-unit>
+            <trans-unit id="46">
+                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
+                <target>Şəklin yüksəkliyi çox kiçikdir ({{ height }}px). Ən az {{ min_height }}px olmalıdır.</target>
+            </trans-unit>
+            <trans-unit id="47">
+                <source>This value should be the user's current password.</source>
+                <target>Bu dəyər istifadəçinin hazırkı parolu olmalıdır.</target>
+            </trans-unit>
+            <trans-unit id="48">
+                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
+                <target>Bu dəyər tam olaraq {{ limit }} simvol olmaldır.</target>
+            </trans-unit>
+            <trans-unit id="49">
+                <source>The file was only partially uploaded.</source>
+                <target>Fayl qismən yükləndi.</target>
+            </trans-unit>
+            <trans-unit id="50">
+                <source>No file was uploaded.</source>
+                <target>Fayl yüklənmədi.</target>
+            </trans-unit>
+            <trans-unit id="51">
+                <source>No temporary folder was configured in php.ini.</source>
+                <target>php.ini'də müvəqqəti qovluq quraşdırılmayıb.</target>
+            </trans-unit>
+            <trans-unit id="52">
+                <source>Cannot write temporary file to disk.</source>
+                <target>Müvəqqəti fayl diskə yazıla bilmir.</target>
+            </trans-unit>
+            <trans-unit id="53">
+                <source>A PHP extension caused the upload to fail.</source>
+                <target>Bir PHP əlavəsi faylın yüklənməsinə mane oldu.</target>
+            </trans-unit>
+            <trans-unit id="54">
+                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
+                <target>Bu kolleksiyada {{ limit }} və ya daha çox element olmalıdır.</target>
+            </trans-unit>
+            <trans-unit id="55">
+                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
+                <target>Bu kolleksiyada {{ limit }} və ya daha az element olmalıdır.</target>
+            </trans-unit>
+            <trans-unit id="56">
+                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
+                <target>Bu kolleksiyada tam olaraq {{ limit }} element olmalıdır.</target>
+            </trans-unit>
+            <trans-unit id="57">
+                <source>Invalid card number.</source>
+                <target>Yanlış kart nömrəsi.</target>
+            </trans-unit>
+            <trans-unit id="58">
+                <source>Unsupported card type or invalid card number.</source>
+                <target>Dəstəklənməyən kart tipi və ya yanlış kart nömrəsi.</target>
+            </trans-unit>
+        </body>
+    </file>
+</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.bg.xlf b/vendor/symfony/validator/Resources/translations/validators.bg.xlf
new file mode 100644
index 0000000..7c5da55
--- /dev/null
+++ b/vendor/symfony/validator/Resources/translations/validators.bg.xlf
@@ -0,0 +1,283 @@
+<?xml version="1.0"?>
+<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
+    <file source-language="en" datatype="plaintext" original="file.ext">
+        <body>
+            <trans-unit id="1">
+                <source>This value should be false.</source>
+                <target>Стойността трябва да бъде лъжа (false).</target>
+            </trans-unit>
+            <trans-unit id="2">
+                <source>This value should be true.</source>
+                <target>Стойността трябва да бъде истина (true).</target>
+            </trans-unit>
+            <trans-unit id="3">
+                <source>This value should be of type {{ type }}.</source>
+                <target>Стойността трябва да бъде от тип {{ type }}.</target>
+            </trans-unit>
+            <trans-unit id="4">
+                <source>This value should be blank.</source>
+                <target>Стойността трябва да бъде празна.</target>
+            </trans-unit>
+            <trans-unit id="5">
+                <source>The value you selected is not a valid choice.</source>
+                <target>Избраната стойност е невалидна.</target>
+            </trans-unit>
+            <trans-unit id="6">
+                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
+                <target>Трябва да изберете поне {{ limit }} опция.|Трябва да изберете поне {{ limit }} опции.</target>
+            </trans-unit>
+            <trans-unit id="7">
+                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
+                <target>Трябва да изберете най-много {{ limit }} опция.|Трябва да изберете най-много {{ limit }} опции.</target>
+            </trans-unit>
+            <trans-unit id="8">
+                <source>One or more of the given values is invalid.</source>
+                <target>Една или повече от зададените стойности е невалидна.</target>
+            </trans-unit>
+            <trans-unit id="9">
+                <source>This field was not expected.</source>
+                <target>Това поле не се е очаквало.</target>
+            </trans-unit>
+            <trans-unit id="10">
+                <source>This field is missing.</source>
+                <target>Това поле липсва.</target>
+            </trans-unit>
+            <trans-unit id="11">
+                <source>This value is not a valid date.</source>
+                <target>Стойността не е валидна дата (date).</target>
+            </trans-unit>
+            <trans-unit id="12">
+                <source>This value is not a valid datetime.</source>
+                <target>Стойността не е валидна дата (datetime).</target>
+            </trans-unit>
+            <trans-unit id="13">
+                <source>This value is not a valid email address.</source>
+                <target>Стойността не е валиден email адрес.</target>
+            </trans-unit>
+            <trans-unit id="14">
+                <source>The file could not be found.</source>
+                <target>Файлът не беше открит.</target>
+            </trans-unit>
+            <trans-unit id="15">
+                <source>The file is not readable.</source>
+                <target>Файлът не може да бъде прочетен.</target>
+            </trans-unit>
+            <trans-unit id="16">
+                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>Файлът е твърде голям ({{ size }} {{ suffix }}). Максималният размер е {{ limit }} {{ suffix }}.</target>
+            </trans-unit>
+            <trans-unit id="17">
+                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
+                <target>Майм типа на файла е невалиден ({{ type }}). Разрешени майм типове са {{ types }}.</target>
+            </trans-unit>
+            <trans-unit id="18">
+                <source>This value should be {{ limit }} or less.</source>
+                <target>Стойността трябва да бъде {{ limit }} или по-малко.</target>
+            </trans-unit>
+            <trans-unit id="19">
+                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
+                <target>Стойността е твърде дълга. Трябва да съдържа най-много {{ limit }} символ.|Стойността е твърде дълга. Трябва да съдържа най-много {{ limit }} символа.</target>
+            </trans-unit>
+            <trans-unit id="20">
+                <source>This value should be {{ limit }} or more.</source>
+                <target>Стойността трябва да бъде {{ limit }} или повече.</target>
+            </trans-unit>
+            <trans-unit id="21">
+                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
+                <target>Стойността е твърде кратка. Трябва да съдържа поне {{ limit }} символ.|Стойността е твърде кратка. Трябва да съдържа поне {{ limit }} символа.</target>
+            </trans-unit>
+            <trans-unit id="22">
+                <source>This value should not be blank.</source>
+                <target>Стойността не трябва да бъде празна.</target>
+            </trans-unit>
+            <trans-unit id="23">
+                <source>This value should not be null.</source>
+                <target>Стойността не трябва да бъде null.</target>
+            </trans-unit>
+            <trans-unit id="24">
+                <source>This value should be null.</source>
+                <target>Стойността трябва да бъде null.</target>
+            </trans-unit>
+            <trans-unit id="25">
+                <source>This value is not valid.</source>
+                <target>Стойността не е валидна.</target>
+            </trans-unit>
+            <trans-unit id="26">
+                <source>This value is not a valid time.</source>
+                <target>Стойността не е валидно време (time).</target>
+            </trans-unit>
+            <trans-unit id="27">
+                <source>This value is not a valid URL.</source>
+                <target>Стойността не е валиден URL.</target>
+            </trans-unit>
+            <trans-unit id="31">
+                <source>The two values should be equal.</source>
+                <target>Двете стойности трябва да бъдат равни.</target>
+            </trans-unit>
+            <trans-unit id="32">
+                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>Файлът е твърде голям. Разрешеният максимален размер е {{ limit }} {{ suffix }}.</target>
+            </trans-unit>
+            <trans-unit id="33">
+                <source>The file is too large.</source>
+                <target>Файлът е твърде голям.</target>
+            </trans-unit>
+            <trans-unit id="34">
+                <source>The file could not be uploaded.</source>
+                <target>Файлът не може да бъде качен.</target>
+            </trans-unit>
+            <trans-unit id="35">
+                <source>This value should be a valid number.</source>
+                <target>Стойността трябва да бъде валиден номер.</target>
+            </trans-unit>
+            <trans-unit id="36">
+                <source>This file is not a valid image.</source>
+                <target>Файлът не е валидно изображение.</target>
+            </trans-unit>
+            <trans-unit id="37">
+                <source>This is not a valid IP address.</source>
+                <target>Това не е валиден IP адрес.</target>
+            </trans-unit>
+            <trans-unit id="38">
+                <source>This value is not a valid language.</source>
+                <target>Стойността не е валиден език.</target>
+            </trans-unit>
+            <trans-unit id="39">
+                <source>This value is not a valid locale.</source>
+                <target>Стойността не е валидна локализация.</target>
+            </trans-unit>
+            <trans-unit id="40">
+                <source>This value is not a valid country.</source>
+                <target>Стойността не е валидна държава.</target>
+            </trans-unit>
+            <trans-unit id="41">
+                <source>This value is already used.</source>
+                <target>Стойността вече е в употреба.</target>
+            </trans-unit>
+            <trans-unit id="42">
+                <source>The size of the image could not be detected.</source>
+                <target>Размера на изображението не може да бъде определен.</target>
+            </trans-unit>
+            <trans-unit id="43">
+                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
+                <target>Изображението е твърде широко ({{ width }}px). Широчината трябва да бъде максимум {{ max_width }}px.</target>
+            </trans-unit>
+            <trans-unit id="44">
+                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
+                <target>Изображението е с твърде малка широчина ({{ width }}px). Широчината трябва да бъде минимум {{ min_width }}px.</target>
+            </trans-unit>
+            <trans-unit id="45">
+                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
+                <target>Изображението е с твърде голяма височина ({{ height }}px). Височината трябва да бъде максимум {{ max_height }}px.</target>
+            </trans-unit>
+            <trans-unit id="46">
+                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
+                <target>Изображението е с твърде малка височина ({{ height }}px). Височина трябва да бъде минимум {{ min_height }}px.</target>
+            </trans-unit>
+            <trans-unit id="47">
+                <source>This value should be the user's current password.</source>
+                <target>Стойността трябва да бъде текущата потребителска парола.</target>
+            </trans-unit>
+            <trans-unit id="48">
+                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
+                <target>Стойността трябва да бъде точно {{ limit }} символ.|Стойността трябва да бъде точно {{ limit }} символа.</target>
+            </trans-unit>
+            <trans-unit id="49">
+                <source>The file was only partially uploaded.</source>
+                <target>Файлът е качен частично.</target>
+            </trans-unit>
+            <trans-unit id="50">
+                <source>No file was uploaded.</source>
+                <target>Файлът не беше качен.</target>
+            </trans-unit>
+            <trans-unit id="51">
+                <source>No temporary folder was configured in php.ini.</source>
+                <target>Не е посочена директория за временни файлове в php.ini.</target>
+            </trans-unit>
+            <trans-unit id="52">
+                <source>Cannot write temporary file to disk.</source>
+                <target>Не може да запише временен файл на диска.</target>
+            </trans-unit>
+            <trans-unit id="53">
+                <source>A PHP extension caused the upload to fail.</source>
+                <target>PHP разширение предизвика прекъсване на качването.</target>
+            </trans-unit>
+            <trans-unit id="54">
+                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
+                <target>Колекцията трябва да съдържа поне {{ limit }} елемент.|Колекцията трябва да съдържа поне {{ limit }} елемента.</target>
+            </trans-unit>
+            <trans-unit id="55">
+                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
+                <target>Колекцията трябва да съдържа най-много {{ limit }} елемент.|Колекцията трябва да съдържа най-много {{ limit }} елемента.</target>
+            </trans-unit>
+            <trans-unit id="56">
+                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
+                <target>Колекцията трябва да съдържа точно {{ limit }} елемент.|Колекцията трябва да съдържа точно {{ limit }} елемента.</target>
+            </trans-unit>
+            <trans-unit id="57">
+                <source>Invalid card number.</source>
+                <target>Невалиден номер на картата.</target>
+            </trans-unit>
+            <trans-unit id="58">
+                <source>Unsupported card type or invalid card number.</source>
+                <target>Неподдържан тип карта или невалиден номер на картата.</target>
+            </trans-unit>
+            <trans-unit id="59">
+                <source>This is not a valid International Bank Account Number (IBAN).</source>
+                <target>Невалиден Международен номер на банкова сметка (IBAN).</target>
+            </trans-unit>
+            <trans-unit id="60">
+                <source>This value is not a valid ISBN-10.</source>
+                <target>Невалиден ISBN-10.</target>
+            </trans-unit>
+            <trans-unit id="61">
+                <source>This value is not a valid ISBN-13.</source>
+                <target>Невалиден ISBN-13.</target>
+            </trans-unit>
+            <trans-unit id="62">
+                <source>This value is neither a valid ISBN-10 nor a valid ISBN-13.</source>
+                <target>Невалидна стойност както за ISBN-10, така и за ISBN-13 .</target>
+            </trans-unit>
+            <trans-unit id="63">
+                <source>This value is not a valid ISSN.</source>
+                <target>Невалиден Международен стандартен сериен номер (ISSN).</target>
+            </trans-unit>
+            <trans-unit id="64">
+                <source>This value is not a valid currency.</source>
+                <target>Невалидна валута.</target>
+            </trans-unit>
+            <trans-unit id="65">
+                <source>This value should be equal to {{ compared_value }}.</source>
+                <target>Стойността трябва да бъде равна на {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="66">
+                <source>This value should be greater than {{ compared_value }}.</source>
+                <target>Стойността трябва да бъде по-голяма от {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="67">
+                <source>This value should be greater than or equal to {{ compared_value }}.</source>
+                <target>Стойността трябва да бъде по-голяма или равна на {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="68">
+                <source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
+                <target>Стойността трябва да бъде идентична с {{ compared_value_type }} {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="69">
+                <source>This value should be less than {{ compared_value }}.</source>
+                <target>Стойността трябва да бъде по-малка {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="70">
+                <source>This value should be less than or equal to {{ compared_value }}.</source>
+                <target>Стойността трябва да бъде по-малка или равна на {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="71">
+                <source>This value should not be equal to {{ compared_value }}.</source>
+                <target>Стойността не трябва да бъде равна на {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="72">
+                <source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
+                <target>Стойността не трябва да бъде идентична с {{ compared_value_type }} {{ compared_value }}.</target>
+            </trans-unit>
+        </body>
+    </file>
+</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.ca.xlf b/vendor/symfony/validator/Resources/translations/validators.ca.xlf
new file mode 100644
index 0000000..85b6970
--- /dev/null
+++ b/vendor/symfony/validator/Resources/translations/validators.ca.xlf
@@ -0,0 +1,307 @@
+<?xml version="1.0"?>
+<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
+    <file source-language="en" datatype="plaintext" original="file.ext">
+        <body>
+            <trans-unit id="1">
+                <source>This value should be false.</source>
+                <target>Aquest valor hauria de ser fals.</target>
+            </trans-unit>
+            <trans-unit id="2">
+                <source>This value should be true.</source>
+                <target>Aquest valor hauria de ser cert.</target>
+            </trans-unit>
+            <trans-unit id="3">
+                <source>This value should be of type {{ type }}.</source>
+                <target>Aquest valor hauria de ser del tipus {{ type }}.</target>
+            </trans-unit>
+            <trans-unit id="4">
+                <source>This value should be blank.</source>
+                <target>Aquest valor hauria d'estar buit.</target>
+            </trans-unit>
+            <trans-unit id="5">
+                <source>The value you selected is not a valid choice.</source>
+                <target>El valor seleccionat no és una opció vàlida.</target>
+            </trans-unit>
+            <trans-unit id="6">
+                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
+                <target>Ha de seleccionar almenys {{ limit }} opció.|Ha de seleccionar almenys {{ limit }} opcions.</target>
+            </trans-unit>
+            <trans-unit id="7">
+                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
+                <target>Ha de seleccionar com a màxim {{ limit }} opció.|Ha de seleccionar com a màxim {{ limit }} opcions.</target>
+            </trans-unit>
+            <trans-unit id="8">
+                <source>One or more of the given values is invalid.</source>
+                <target>Un o més dels valors facilitats són incorrectes.</target>
+            </trans-unit>
+            <trans-unit id="9">
+                <source>This field was not expected.</source>
+                <target>Aquest camp no s'esperava.</target>
+            </trans-unit>
+            <trans-unit id="10">
+                <source>This field is missing.</source>
+                <target>Aquest camp està desaparegut.</target>
+            </trans-unit>
+            <trans-unit id="11">
+                <source>This value is not a valid date.</source>
+                <target>Aquest valor no és una data vàlida.</target>
+            </trans-unit>
+            <trans-unit id="12">
+                <source>This value is not a valid datetime.</source>
+                <target>Aquest valor no és una data i hora vàlida.</target>
+            </trans-unit>
+            <trans-unit id="13">
+                <source>This value is not a valid email address.</source>
+                <target>Aquest valor no és una adreça d'email vàlida.</target>
+            </trans-unit>
+            <trans-unit id="14">
+                <source>The file could not be found.</source>
+                <target>No s'ha pogut trobar l'arxiu.</target>
+            </trans-unit>
+            <trans-unit id="15">
+                <source>The file is not readable.</source>
+                <target>No es pot llegir l'arxiu.</target>
+            </trans-unit>
+            <trans-unit id="16">
+                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>L'arxiu és massa gran ({{ size }} {{ suffix }}). La grandària màxima permesa és {{ limit }} {{ suffix }}.</target>
+            </trans-unit>
+            <trans-unit id="17">
+                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
+                <target>El tipus mime de l'arxiu no és vàlid ({{ type }}). Els tipus mime vàlids són {{ types }}.</target>
+            </trans-unit>
+            <trans-unit id="18">
+                <source>This value should be {{ limit }} or less.</source>
+                <target>Aquest valor hauria de ser {{ limit }} o menys.</target>
+            </trans-unit>
+            <trans-unit id="19">
+                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
+                <target>Aquest valor és massa llarg. Hauria de tenir {{ limit }} caràcter o menys.|Aquest valor és massa llarg. Hauria de tenir {{ limit }} caràcters o menys.</target>
+            </trans-unit>
+            <trans-unit id="20">
+                <source>This value should be {{ limit }} or more.</source>
+                <target>Aquest valor hauria de ser {{ limit }} o més.</target>
+            </trans-unit>
+            <trans-unit id="21">
+                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
+                <target>Aquest valor és massa curt. Hauria de tenir {{ limit }} caràcters o més.</target>
+            </trans-unit>
+            <trans-unit id="22">
+                <source>This value should not be blank.</source>
+                <target>Aquest valor no hauria d'estar buit.</target>
+            </trans-unit>
+            <trans-unit id="23">
+                <source>This value should not be null.</source>
+                <target>Aquest valor no hauria de ser null.</target>
+            </trans-unit>
+            <trans-unit id="24">
+                <source>This value should be null.</source>
+                <target>Aquest valor hauria de ser null.</target>
+            </trans-unit>
+            <trans-unit id="25">
+                <source>This value is not valid.</source>
+                <target>Aquest valor no és vàlid.</target>
+            </trans-unit>
+            <trans-unit id="26">
+                <source>This value is not a valid time.</source>
+                <target>Aquest valor no és una hora vàlida.</target>
+            </trans-unit>
+            <trans-unit id="27">
+                <source>This value is not a valid URL.</source>
+                <target>Aquest valor no és una URL vàlida.</target>
+            </trans-unit>
+            <trans-unit id="31">
+                <source>The two values should be equal.</source>
+                <target>Els dos valors haurien de ser iguals.</target>
+            </trans-unit>
+            <trans-unit id="32">
+                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>L'arxiu és massa gran. El tamany màxim permés és {{ limit }} {{ suffix }}.</target>
+            </trans-unit>
+            <trans-unit id="33">
+                <source>The file is too large.</source>
+                <target>L'arxiu és massa gran.</target>
+            </trans-unit>
+            <trans-unit id="34">
+                <source>The file could not be uploaded.</source>
+                <target>No es pot pujar l'arxiu.</target>
+            </trans-unit>
+            <trans-unit id="35">
+                <source>This value should be a valid number.</source>
+                <target>Aquest valor hauria de ser un nombre vàlid.</target>
+            </trans-unit>
+            <trans-unit id="36">
+                <source>This file is not a valid image.</source>
+                <target>L'arxiu no és una imatge vàlida.</target>
+            </trans-unit>
+            <trans-unit id="37">
+                <source>This is not a valid IP address.</source>
+                <target>Això no és una adreça IP vàlida.</target>
+            </trans-unit>
+            <trans-unit id="38">
+                <source>This value is not a valid language.</source>
+                <target>Aquest valor no és un idioma vàlid.</target>
+            </trans-unit>
+            <trans-unit id="39">
+                <source>This value is not a valid locale.</source>
+                <target>Aquest valor no és una localització vàlida.</target>
+            </trans-unit>
+            <trans-unit id="40">
+                <source>This value is not a valid country.</source>
+                <target>Aquest valor no és un país vàlid.</target>
+            </trans-unit>
+            <trans-unit id="41">
+                <source>This value is already used.</source>
+                <target>Aquest valor ja s'ha utilitzat.</target>
+            </trans-unit>
+            <trans-unit id="42">
+                <source>The size of the image could not be detected.</source>
+                <target>No s'ha pogut determinar la grandària de la imatge.</target>
+            </trans-unit>
+            <trans-unit id="43">
+                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
+                <target>L'amplària de la imatge és massa gran ({{ width }}px). L'amplària màxima permesa són {{ max_width }}px.</target>
+            </trans-unit>
+            <trans-unit id="44">
+                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
+                <target>L'amplària de la imatge és massa petita ({{ width }}px). L'amplària mínima requerida són {{ min_width }}px.</target>
+            </trans-unit>
+            <trans-unit id="45">
+                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
+                <target>L'altura de la imatge és massa gran ({{ height }}px). L'altura màxima permesa són {{ max_height }}px.</target>
+            </trans-unit>
+            <trans-unit id="46">
+                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
+                <target>L'altura de la imatge és massa petita ({{ height }}px). L'altura mínima requerida són {{ min_height }}px.</target>
+            </trans-unit>
+            <trans-unit id="47">
+                <source>This value should be the user's current password.</source>
+                <target>Aquest valor hauria de ser la contrasenya actual de l'usuari.</target>
+            </trans-unit>
+            <trans-unit id="48">
+                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
+                <target>Aquest valor hauria de tenir exactament {{ limit }} caràcter.|Aquest valor hauria de tenir exactament {{ limit }} caràcters.</target>
+            </trans-unit>
+            <trans-unit id="49">
+                <source>The file was only partially uploaded.</source>
+                <target>L'arxiu va ser només pujat parcialment.</target>
+            </trans-unit>
+            <trans-unit id="50">
+                <source>No file was uploaded.</source>
+                <target>Cap arxiu va ser pujat.</target>
+            </trans-unit>
+            <trans-unit id="51">
+                <source>No temporary folder was configured in php.ini.</source>
+                <target>Cap carpeta temporal va ser configurada en php.ini.</target>
+            </trans-unit>
+            <trans-unit id="52">
+                <source>Cannot write temporary file to disk.</source>
+                <target>No es va poder escriure l'arxiu temporal en el disc.</target>
+            </trans-unit>
+            <trans-unit id="53">
+                <source>A PHP extension caused the upload to fail.</source>
+                <target>Una extensió de PHP va fer que la pujada fallara.</target>
+            </trans-unit>
+            <trans-unit id="54">
+                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
+                <target>Aquesta col·lecció ha de contenir {{ limit }} element o més.|Aquesta col·lecció ha de contenir {{ limit }} elements o més.</target>
+            </trans-unit>
+            <trans-unit id="55">
+                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
+                <target>Aquesta col·lecció ha de contenir {{ limit }} element o menys.|Aquesta col·lecció ha de contenir {{ limit }} elements o menys.</target>
+            </trans-unit>
+            <trans-unit id="56">
+                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
+                <target>Aquesta col·lecció ha de contenir exactament {{ limit }} element.|Aquesta col·lecció ha de contenir exactament {{ limit }} elements.</target>
+            </trans-unit>
+            <trans-unit id="57">
+                <source>Invalid card number.</source>
+                <target>Número de targeta invàlid.</target>
+            </trans-unit>
+            <trans-unit id="58">
+                <source>Unsupported card type or invalid card number.</source>
+                <target>Tipus de targeta no suportada o número de targeta invàlid.</target>
+            </trans-unit>
+            <trans-unit id="59">
+                <source>This is not a valid International Bank Account Number (IBAN).</source>
+                <target>Això no és un nombre de compte bancari internacional (IBAN) vàlid.</target>
+            </trans-unit>
+            <trans-unit id="60">
+                <source>This value is not a valid ISBN-10.</source>
+                <target>Aquest valor no és un ISBN-10 vàlid.</target>
+            </trans-unit>
+            <trans-unit id="61">
+                <source>This value is not a valid ISBN-13.</source>
+                <target>Aquest valor no és un ISBN-13 vàlid.</target>
+            </trans-unit>
+            <trans-unit id="62">
+                <source>This value is neither a valid ISBN-10 nor a valid ISBN-13.</source>
+                <target>Aquest valor no és ni un ISBN-10 vàlid ni un ISBN-13 vàlid.</target>
+            </trans-unit>
+            <trans-unit id="63">
+                <source>This value is not a valid ISSN.</source>
+                <target>Aquest valor no és un ISSN vàlid.</target>
+            </trans-unit>
+            <trans-unit id="64">
+                <source>This value is not a valid currency.</source>
+                <target>Aquest valor no és una divisa vàlida.</target>
+            </trans-unit>
+            <trans-unit id="65">
+                <source>This value should be equal to {{ compared_value }}.</source>
+                <target>Aquest valor hauria de ser igual a {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="66">
+                <source>This value should be greater than {{ compared_value }}.</source>
+                <target>Aquest valor hauria de ser més gran a {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="67">
+                <source>This value should be greater than or equal to {{ compared_value }}.</source>
+                <target>Aquest valor hauria de ser major o igual a {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="68">
+                <source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
+                <target>Aquest valor hauria de ser idèntic a {{ compared_value_type }} {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="69">
+                <source>This value should be less than {{ compared_value }}.</source>
+                <target>Aquest valor hauria de ser menor a {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="70">
+                <source>This value should be less than or equal to {{ compared_value }}.</source>
+                <target>Aquest valor hauria de ser menor o igual a {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="71">
+                <source>This value should not be equal to {{ compared_value }}.</source>
+                <target>Aquest valor no hauria de ser igual a {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="72">
+                <source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
+                <target>Aquest valor no hauria de idèntic a {{ compared_value_type }} {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="73">
+                <source>The image ratio is too big ({{ ratio }}). Allowed maximum ratio is {{ max_ratio }}.</source>
+                <target>La proporció de l'imatge és massa gran ({{ ratio }}). La màxima proporció permesa és {{ max_ratio }}.</target>
+            </trans-unit>
+            <trans-unit id="74">
+                <source>The image ratio is too small ({{ ratio }}). Minimum ratio expected is {{ min_ratio }}.</source>
+                <target>La proporció de l'imatge és massa petita ({{ ratio }}). La mínima proporció permesa és {{ max_ratio }}.</target>
+            </trans-unit>
+            <trans-unit id="75">
+                <source>The image is square ({{ width }}x{{ height }}px). Square images are not allowed.</source>
+                <target>L'imatge és quadrada({{ width }}x{{ height }}px). Les imatges quadrades no estan permeses.</target>
+            </trans-unit>
+            <trans-unit id="76">
+                <source>The image is landscape oriented ({{ width }}x{{ height }}px). Landscape oriented images are not allowed.</source>
+                <target>L'imatge està orientada horitzontalment ({{ width }}x{{ height }}px). Les imatges orientades horitzontalment no estan permeses.</target>
+            </trans-unit>
+            <trans-unit id="77">
+                <source>The image is portrait oriented ({{ width }}x{{ height }}px). Portrait oriented images are not allowed.</source>
+                <target>L'imatge està orientada verticalment ({{ width }}x{{ height }}px). Les imatges orientades verticalment no estan permeses.</target>
+            </trans-unit>
+            <trans-unit id="78">
+                <source>An empty file is not allowed.</source>
+                <target>No està permès un fixter buit.</target>
+            </trans-unit>
+        </body>
+    </file>
+</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.cs.xlf b/vendor/symfony/validator/Resources/translations/validators.cs.xlf
new file mode 100644
index 0000000..2ae47b2
--- /dev/null
+++ b/vendor/symfony/validator/Resources/translations/validators.cs.xlf
@@ -0,0 +1,307 @@
+<?xml version="1.0"?>
+<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
+    <file source-language="en" datatype="plaintext" original="file.ext">
+        <body>
+            <trans-unit id="1">
+                <source>This value should be false.</source>
+                <target>Tato hodnota musí být nepravdivá (false).</target>
+            </trans-unit>
+            <trans-unit id="2">
+                <source>This value should be true.</source>
+                <target>Tato hodnota musí být pravdivá (true).</target>
+            </trans-unit>
+            <trans-unit id="3">
+                <source>This value should be of type {{ type }}.</source>
+                <target>Tato hodnota musí být typu {{ type }}.</target>
+            </trans-unit>
+            <trans-unit id="4">
+                <source>This value should be blank.</source>
+                <target>Tato hodnota musí být prázdná.</target>
+            </trans-unit>
+            <trans-unit id="5">
+                <source>The value you selected is not a valid choice.</source>
+                <target>Vybraná hodnota není platnou možností.</target>
+            </trans-unit>
+            <trans-unit id="6">
+                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
+                <target>Musí být vybrána nejméně {{ limit }} možnost.|Musí být vybrány nejméně {{ limit }} možnosti.|Musí být vybráno nejméně {{ limit }} možností.</target>
+            </trans-unit>
+            <trans-unit id="7">
+                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
+                <target>Musí být vybrána maximálně {{ limit }} možnost.|Musí být vybrány maximálně {{ limit }} možnosti.|Musí být vybráno maximálně {{ limit }} možností.</target>
+            </trans-unit>
+            <trans-unit id="8">
+                <source>One or more of the given values is invalid.</source>
+                <target>Některé z uvedených hodnot jsou neplatné.</target>
+            </trans-unit>
+            <trans-unit id="9">
+                <source>This field was not expected.</source>
+                <target>Toto pole nebyla očekávána.</target>
+            </trans-unit>
+            <trans-unit id="10">
+                <source>This field is missing.</source>
+                <target>Toto pole chybí.</target>
+            </trans-unit>
+            <trans-unit id="11">
+                <source>This value is not a valid date.</source>
+                <target>Tato hodnota není platné datum.</target>
+            </trans-unit>
+            <trans-unit id="12">
+                <source>This value is not a valid datetime.</source>
+                <target>Tato hodnota není platné datum s časovým údajem.</target>
+            </trans-unit>
+            <trans-unit id="13">
+                <source>This value is not a valid email address.</source>
+                <target>Tato hodnota není platná e-mailová adresa.</target>
+            </trans-unit>
+            <trans-unit id="14">
+                <source>The file could not be found.</source>
+                <target>Soubor nebyl nalezen.</target>
+            </trans-unit>
+            <trans-unit id="15">
+                <source>The file is not readable.</source>
+                <target>Soubor je nečitelný.</target>
+            </trans-unit>
+            <trans-unit id="16">
+                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>Soubor je příliš velký ({{ size }} {{ suffix }}). Maximální povolená velikost souboru je {{ limit }} {{ suffix }}.</target>
+            </trans-unit>
+            <trans-unit id="17">
+                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
+                <target>Neplatný mime typ souboru ({{ type }}). Povolené mime typy souborů jsou {{ types }}.</target>
+            </trans-unit>
+            <trans-unit id="18">
+                <source>This value should be {{ limit }} or less.</source>
+                <target>Tato hodnota musí být {{ limit }} nebo méně.</target>
+            </trans-unit>
+            <trans-unit id="19">
+                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
+                <target>Tato hodnota je příliš dlouhá. Musí obsahovat maximálně {{ limit }} znak.|Tato hodnota je příliš dlouhá. Musí obsahovat maximálně {{ limit }} znaky.|Tato hodnota je příliš dlouhá. Musí obsahovat maximálně {{ limit }} znaků.</target>
+            </trans-unit>
+            <trans-unit id="20">
+                <source>This value should be {{ limit }} or more.</source>
+                <target>Tato hodnota musí být {{ limit }} nebo více.</target>
+            </trans-unit>
+            <trans-unit id="21">
+                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
+                <target>Tato hodnota je příliš krátká. Musí obsahovat minimálně {{ limit }} znak.|Tato hodnota je příliš krátká. Musí obsahovat minimálně {{ limit }} znaky.|Tato hodnota je příliš krátká. Musí obsahovat minimálně {{ limit }} znaků.</target>
+            </trans-unit>
+            <trans-unit id="22">
+                <source>This value should not be blank.</source>
+                <target>Tato hodnota nesmí být prázdná.</target>
+            </trans-unit>
+            <trans-unit id="23">
+                <source>This value should not be null.</source>
+                <target>Tato hodnota nesmí být null.</target>
+            </trans-unit>
+            <trans-unit id="24">
+                <source>This value should be null.</source>
+                <target>Tato hodnota musí být null.</target>
+            </trans-unit>
+            <trans-unit id="25">
+                <source>This value is not valid.</source>
+                <target>Tato hodnota není platná.</target>
+            </trans-unit>
+            <trans-unit id="26">
+                <source>This value is not a valid time.</source>
+                <target>Tato hodnota není platný časový údaj.</target>
+            </trans-unit>
+            <trans-unit id="27">
+                <source>This value is not a valid URL.</source>
+                <target>Tato hodnota není platná URL adresa.</target>
+            </trans-unit>
+            <trans-unit id="31">
+                <source>The two values should be equal.</source>
+                <target>Tyto dvě hodnoty musí být stejné.</target>
+            </trans-unit>
+            <trans-unit id="32">
+                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>Soubor je příliš velký. Maximální povolená velikost souboru je {{ limit }} {{ suffix }}.</target>
+            </trans-unit>
+            <trans-unit id="33">
+                <source>The file is too large.</source>
+                <target>Soubor je příliš velký.</target>
+            </trans-unit>
+            <trans-unit id="34">
+                <source>The file could not be uploaded.</source>
+                <target>Soubor se nepodařilo nahrát.</target>
+            </trans-unit>
+            <trans-unit id="35">
+                <source>This value should be a valid number.</source>
+                <target>Tato hodnota musí být číslo.</target>
+            </trans-unit>
+            <trans-unit id="36">
+                <source>This file is not a valid image.</source>
+                <target>Tento soubor není obrázek.</target>
+            </trans-unit>
+            <trans-unit id="37">
+                <source>This is not a valid IP address.</source>
+                <target>Toto není platná IP adresa.</target>
+            </trans-unit>
+            <trans-unit id="38">
+                <source>This value is not a valid language.</source>
+                <target>Tento jazyk neexistuje.</target>
+            </trans-unit>
+            <trans-unit id="39">
+                <source>This value is not a valid locale.</source>
+                <target>Tato lokalizace neexistuje.</target>
+            </trans-unit>
+            <trans-unit id="40">
+                <source>This value is not a valid country.</source>
+                <target>Tato země neexistuje.</target>
+            </trans-unit>
+            <trans-unit id="41">
+                <source>This value is already used.</source>
+                <target>Tato hodnota je již používána.</target>
+            </trans-unit>
+            <trans-unit id="42">
+                <source>The size of the image could not be detected.</source>
+                <target>Nepodařily se zjistit rozměry obrázku.</target>
+            </trans-unit>
+            <trans-unit id="43">
+                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
+                <target>Obrázek je příliš široký ({{ width }}px). Maximální povolená šířka obrázku je {{ max_width }}px.</target>
+            </trans-unit>
+            <trans-unit id="44">
+                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
+                <target>Obrázek je příliš úzký ({{ width }}px). Minimální šířka musí být {{ min_width }}px.</target>
+            </trans-unit>
+            <trans-unit id="45">
+                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
+                <target>Obrázek je příliš vysoký ({{ height }}px). Maximální povolená výška obrázku je {{ max_height }}px.</target>
+            </trans-unit>
+            <trans-unit id="46">
+                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
+                <target>Obrázek je příliš nízký ({{ height }}px). Minimální výška obrázku musí být {{ min_height }}px.</target>
+            </trans-unit>
+            <trans-unit id="47">
+                <source>This value should be the user's current password.</source>
+                <target>Tato hodnota musí být aktuální heslo uživatele.</target>
+            </trans-unit>
+            <trans-unit id="48">
+                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
+                <target>Tato hodnota musí mít přesně {{ limit }} znak.|Tato hodnota musí mít přesně {{ limit }} znaky.|Tato hodnota musí mít přesně {{ limit }} znaků.</target>
+            </trans-unit>
+            <trans-unit id="49">
+                <source>The file was only partially uploaded.</source>
+                <target>Byla nahrána jen část souboru.</target>
+            </trans-unit>
+            <trans-unit id="50">
+                <source>No file was uploaded.</source>
+                <target>Žádný soubor nebyl nahrán.</target>
+            </trans-unit>
+            <trans-unit id="51">
+                <source>No temporary folder was configured in php.ini.</source>
+                <target>V php.ini není nastavena cesta k adresáři pro dočasné soubory.</target>
+            </trans-unit>
+            <trans-unit id="52">
+                <source>Cannot write temporary file to disk.</source>
+                <target>Dočasný soubor se nepodařilo zapsat na disk.</target>
+            </trans-unit>
+            <trans-unit id="53">
+                <source>A PHP extension caused the upload to fail.</source>
+                <target>Rozšíření PHP zabránilo nahrání souboru.</target>
+            </trans-unit>
+            <trans-unit id="54">
+                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
+                <target>Tato kolekce musí obsahovat minimálně {{ limit }} prvek.|Tato kolekce musí obsahovat minimálně {{ limit }} prvky.|Tato kolekce musí obsahovat minimálně {{ limit }} prvků.</target>
+            </trans-unit>
+            <trans-unit id="55">
+                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
+                <target>Tato kolekce musí obsahovat maximálně {{ limit }} prvek.|Tato kolekce musí obsahovat maximálně {{ limit }} prvky.|Tato kolekce musí obsahovat maximálně {{ limit }} prvků.</target>
+            </trans-unit>
+            <trans-unit id="56">
+                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
+                <target>Tato kolekce musí obsahovat přesně {{ limit }} prvek.|Tato kolekce musí obsahovat přesně {{ limit }} prvky.|Tato kolekce musí obsahovat přesně {{ limit }} prvků.</target>
+            </trans-unit>
+            <trans-unit id="57">
+                <source>Invalid card number.</source>
+                <target>Neplatné číslo karty.</target>
+            </trans-unit>
+            <trans-unit id="58">
+                <source>Unsupported card type or invalid card number.</source>
+                <target>Nepodporovaný typ karty nebo neplatné číslo karty.</target>
+            </trans-unit>
+            <trans-unit id="59">
+                <source>This is not a valid International Bank Account Number (IBAN).</source>
+                <target>Toto je neplatný IBAN.</target>
+            </trans-unit>
+            <trans-unit id="60">
+                <source>This value is not a valid ISBN-10.</source>
+                <target>Tato hodnota není platné ISBN-10.</target>
+            </trans-unit>
+            <trans-unit id="61">
+                <source>This value is not a valid ISBN-13.</source>
+                <target>Tato hodnota není platné ISBN-13.</target>
+            </trans-unit>
+            <trans-unit id="62">
+                <source>This value is neither a valid ISBN-10 nor a valid ISBN-13.</source>
+                <target>Tato hodnota není platné ISBN-10 ani ISBN-13.</target>
+            </trans-unit>
+            <trans-unit id="63">
+                <source>This value is not a valid ISSN.</source>
+                <target>Tato hodnota není platné ISSN.</target>
+            </trans-unit>
+            <trans-unit id="64">
+                <source>This value is not a valid currency.</source>
+                <target>Tato měna neexistuje.</target>
+            </trans-unit>
+            <trans-unit id="65">
+                <source>This value should be equal to {{ compared_value }}.</source>
+                <target>Tato hodnota musí být rovna {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="66">
+                <source>This value should be greater than {{ compared_value }}.</source>
+                <target>Tato hodnota musí být větší než {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="67">
+                <source>This value should be greater than or equal to {{ compared_value }}.</source>
+                <target>Tato hodnota musí být větší nebo rovna {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="68">
+                <source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
+                <target>Tato hodnota musí být typu {{ compared_value_type }} a zároveň musí být rovna {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="69">
+                <source>This value should be less than {{ compared_value }}.</source>
+                <target>Tato hodnota musí být menší než {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="70">
+                <source>This value should be less than or equal to {{ compared_value }}.</source>
+                <target>Tato hodnota musí být menší nebo rovna {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="71">
+                <source>This value should not be equal to {{ compared_value }}.</source>
+                <target>Tato hodnota nesmí být rovna {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="72">
+                <source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
+                <target>Tato hodnota nesmí být typu {{ compared_value_type }} a zároveň nesmí být rovna {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="73">
+                <source>The image ratio is too big ({{ ratio }}). Allowed maximum ratio is {{ max_ratio }}.</source>
+                <target>Poměr stran obrázku je příliš velký ({{ ratio }}). Maximální povolený poměr stran obrázku je {{ max_ratio }}.</target>
+            </trans-unit>
+            <trans-unit id="74">
+                <source>The image ratio is too small ({{ ratio }}). Minimum ratio expected is {{ min_ratio }}.</source>
+                <target>Poměr stran obrázku je příliš malý ({{ ratio }}). Minimální povolený poměr stran obrázku je {{ min_ratio }}.</target>
+            </trans-unit>
+            <trans-unit id="75">
+                <source>The image is square ({{ width }}x{{ height }}px). Square images are not allowed.</source>
+                <target>Strany obrázku jsou čtvercové ({{ width }}x{{ height }}px). Čtvercové obrázky nejsou povolené.</target>
+            </trans-unit>
+            <trans-unit id="76">
+                <source>The image is landscape oriented ({{ width }}x{{ height }}px). Landscape oriented images are not allowed.</source>
+                <target>Obrázek je orientovaný na šířku ({{ width }}x{{ height }}px). Obrázky orientované na šířku nejsou povolené.</target>
+            </trans-unit>
+            <trans-unit id="77">
+                <source>The image is portrait oriented ({{ width }}x{{ height }}px). Portrait oriented images are not allowed.</source>
+                <target>Obrázek je orientovaný na výšku ({{ width }}x{{ height }}px). Obrázky orientované na výšku nejsou povolené.</target>
+            </trans-unit>
+            <trans-unit id="78">
+                <source>An empty file is not allowed.</source>
+                <target>Soubor nesmí být prázdný.</target>
+            </trans-unit>
+        </body>
+    </file>
+</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.cy.xlf b/vendor/symfony/validator/Resources/translations/validators.cy.xlf
new file mode 100644
index 0000000..da7cb9a
--- /dev/null
+++ b/vendor/symfony/validator/Resources/translations/validators.cy.xlf
@@ -0,0 +1,227 @@
+<?xml version="1.0"?>
+<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
+    <file source-language="en" datatype="plaintext" original="file.ext">
+        <body>
+            <trans-unit id="1">
+                <source>This value should be false.</source>
+                <target>Dylid bod y gwerth hwn yn ffug.</target>
+            </trans-unit>
+            <trans-unit id="2">
+                <source>This value should be true.</source>
+                <target>Dylid bod y gwerth hwn yn wir.</target>
+            </trans-unit>
+            <trans-unit id="3">
+                <source>This value should be of type {{ type }}.</source>
+                <target>Dylid bod y gwerth hwn bod o fath {{ type }}.</target>
+            </trans-unit>
+            <trans-unit id="4">
+                <source>This value should be blank.</source>
+                <target>Dylid bod y gwerth hwn yn wag.</target>
+            </trans-unit>
+            <trans-unit id="5">
+                <source>The value you selected is not a valid choice.</source>
+                <target>Nid yw'r gwerth â ddewiswyd yn ddilys.</target>
+            </trans-unit>
+            <trans-unit id="6">
+                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
+                <target>Rhaid dewis o leiaf {{ limit }} opsiwn.</target>
+            </trans-unit>
+            <trans-unit id="7">
+                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
+                <target>Rhaid dewis dim mwy na {{ limit }} opsiwn.</target>
+            </trans-unit>
+            <trans-unit id="8">
+                <source>One or more of the given values is invalid.</source>
+                <target>Mae un neu fwy o'r gwerthoedd a roddwyd yn annilys.</target>
+            </trans-unit>
+            <trans-unit id="9">
+                <source>This field was not expected.</source>
+                <target>Nid oedd disgwyl y maes hwn.</target>
+            </trans-unit>
+            <trans-unit id="10">
+                <source>This field is missing.</source>
+                <target>Mae'r maes hwn ar goll.</target>
+            </trans-unit>
+            <trans-unit id="11">
+                <source>This value is not a valid date.</source>
+                <target>Nid yw'r gwerth yn ddyddiad dilys.</target>
+            </trans-unit>
+            <trans-unit id="12">
+                <source>This value is not a valid datetime.</source>
+                <target>Nid yw'r gwerth yn datetime dilys.</target>
+            </trans-unit>
+            <trans-unit id="13">
+                <source>This value is not a valid email address.</source>
+                <target>Nid yw'r gwerth yn gyfeiriad ebost dilys.</target>
+            </trans-unit>
+            <trans-unit id="14">
+                <source>The file could not be found.</source>
+                <target>Ni ddarganfyddwyd y ffeil.</target>
+            </trans-unit>
+            <trans-unit id="15">
+                <source>The file is not readable.</source>
+                <target>Ni ellir darllen y ffeil.</target>
+            </trans-unit>
+            <trans-unit id="16">
+                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>Mae'r ffeil yn rhy fawr ({{ size }} {{ suffix }}). Yr uchafswm â ganiateir yw {{ limit }} {{ suffix }}.</target>
+            </trans-unit>
+            <trans-unit id="17">
+                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
+                <target>Nid yw math mime y ffeil yn ddilys ({{ type }}). Dyma'r mathau â ganiateir {{ types }}.</target>
+            </trans-unit>
+            <trans-unit id="18">
+                <source>This value should be {{ limit }} or less.</source>
+                <target>Dylai'r gwerth hwn fod yn {{ limit }} neu lai.</target>
+            </trans-unit>
+            <trans-unit id="19">
+                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
+                <target>Mae'r gwerth hwn rhy hir. Dylai gynnwys {{ limit }} nodyn cyfrifiadurol neu lai.</target>
+            </trans-unit>
+            <trans-unit id="20">
+                <source>This value should be {{ limit }} or more.</source>
+                <target>Dylai'r gwerth hwn fod yn {{ limit }} neu fwy.</target>
+            </trans-unit>
+            <trans-unit id="21">
+                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
+                <target>Mae'r gwerth hwn yn rhy fyr. Dylai gynnwys {{ limit }} nodyn cyfrifiadurol neu fwy.</target>
+            </trans-unit>
+            <trans-unit id="22">
+                <source>This value should not be blank.</source>
+                <target>Ni ddylai'r gwerth hwn fod yn wag.</target>
+            </trans-unit>
+            <trans-unit id="23">
+                <source>This value should not be null.</source>
+                <target>Ni ddylai'r gwerth hwn fod yn null.</target>
+            </trans-unit>
+            <trans-unit id="24">
+                <source>This value should be null.</source>
+                <target>Dylai'r gwerth fod yn null.</target>
+            </trans-unit>
+            <trans-unit id="25">
+                <source>This value is not valid.</source>
+                <target>Nid yw'r gwerth hwn yn ddilys.</target>
+            </trans-unit>
+            <trans-unit id="26">
+                <source>This value is not a valid time.</source>
+                <target>Nid yw'r gwerth hwn yn amser dilys.</target>
+            </trans-unit>
+            <trans-unit id="27">
+                <source>This value is not a valid URL.</source>
+                <target>Nid yw'r gwerth hwn yn URL dilys.</target>
+            </trans-unit>
+            <trans-unit id="31">
+                <source>The two values should be equal.</source>
+                <target>Rhaid i'r ddau werth fod yn gyfystyr a'u gilydd.</target>
+            </trans-unit>
+            <trans-unit id="32">
+                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>Mae'r ffeil yn rhy fawr. Yr uchafswm â ganiateir yw {{ limit }} {{ suffix }}.</target>
+            </trans-unit>
+            <trans-unit id="33">
+                <source>The file is too large.</source>
+                <target>Mae'r ffeil yn rhy fawr.</target>
+            </trans-unit>
+            <trans-unit id="34">
+                <source>The file could not be uploaded.</source>
+                <target>Methwyd ag uwchlwytho'r ffeil.</target>
+            </trans-unit>
+            <trans-unit id="35">
+                <source>This value should be a valid number.</source>
+                <target>Dylai'r gwerth hwn fod yn rif dilys.</target>
+            </trans-unit>
+            <trans-unit id="36">
+                <source>This file is not a valid image.</source>
+                <target>Nid yw'r ffeil hon yn ddelwedd dilys.</target>
+            </trans-unit>
+            <trans-unit id="37">
+                <source>This is not a valid IP address.</source>
+                <target>Nid yw hwn yn gyfeiriad IP dilys.</target>
+            </trans-unit>
+            <trans-unit id="38">
+                <source>This value is not a valid language.</source>
+                <target>Nid yw'r gwerth hwn yn iaith ddilys.</target>
+            </trans-unit>
+            <trans-unit id="39">
+                <source>This value is not a valid locale.</source>
+                <target>Nid yw'r gwerth hwn yn locale dilys.</target>
+            </trans-unit>
+            <trans-unit id="40">
+                <source>This value is not a valid country.</source>
+                <target>Nid yw'r gwerth hwn yn wlad dilys.</target>
+            </trans-unit>
+            <trans-unit id="41">
+                <source>This value is already used.</source>
+                <target>Mae'r gwerth hwn eisoes yn cael ei ddefnyddio.</target>
+            </trans-unit>
+            <trans-unit id="42">
+                <source>The size of the image could not be detected.</source>
+                <target>Methwyd â darganfod maint y ddelwedd.</target>
+            </trans-unit>
+            <trans-unit id="43">
+                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
+                <target>Mae lled y ddelwedd yn rhy fawr ({{ width }}px). Y lled mwyaf â ganiateir yw {{ max_width }}px.</target>
+            </trans-unit>
+            <trans-unit id="44">
+                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
+                <target>Mae lled y ddelwedd yn rhy fach ({{ width }}px). Y lled lleiaf â ganiateir yw {{ min_width }}px.</target>
+            </trans-unit>
+            <trans-unit id="45">
+                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
+                <target>Mae uchder y ddelwedd yn rhy fawr ({{ width }}px). Yr uchder mwyaf â ganiateir yw {{ max_height }}px.</target>
+            </trans-unit>
+            <trans-unit id="46">
+                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
+                <target>Mae uchder y ddelwedd yn rhy fach ({{ width }}px). Yr uchder lleiaf â ganiateir yw {{ min_height }}px.</target>
+            </trans-unit>
+            <trans-unit id="47">
+                <source>This value should be the user's current password.</source>
+                <target>Dylaid bod y gwerth hwn yn gyfrinair presenol y defnyddiwr.</target>
+            </trans-unit>
+            <trans-unit id="48">
+                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
+                <target>Dylai'r gwerth hwn fod yn union {{ limit }} nodyn cyfrifiadurol o hyd.</target>
+            </trans-unit>
+            <trans-unit id="49">
+                <source>The file was only partially uploaded.</source>
+                <target>Dim ond rhan o'r ffeil ag uwchlwythwyd.</target>
+            </trans-unit>
+            <trans-unit id="50">
+                <source>No file was uploaded.</source>
+                <target>Ni uwchlwythwyd unrhyw ffeil.</target>
+            </trans-unit>
+            <trans-unit id="51">
+                <source>No temporary folder was configured in php.ini.</source>
+                <target>Nid oes ffolder dros-dro wedi'i gosod yn php.ini.</target>
+            </trans-unit>
+            <trans-unit id="52">
+                <source>Cannot write temporary file to disk.</source>
+                <target>Methwyd ag ysgrifennu'r ffeil dros-dro ar ddisg.</target>
+            </trans-unit>
+            <trans-unit id="53">
+                <source>A PHP extension caused the upload to fail.</source>
+                <target>Methwyd ag uwchlwytho oherwydd ategyn PHP.</target>
+            </trans-unit>
+            <trans-unit id="54">
+                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
+                <target>Dylai'r casgliad hwn gynnwys {{ limit }} elfen neu fwy.</target>
+            </trans-unit>
+            <trans-unit id="55">
+                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
+                <target>Dylai'r casgliad hwn gynnwys {{ limit }} elfen neu lai.</target>
+            </trans-unit>
+            <trans-unit id="56">
+                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
+                <target>Dylai'r casgliad hwn gynnwys union {{ limit }} elfen.</target>
+            </trans-unit>
+            <trans-unit id="57">
+                <source>Invalid card number.</source>
+                <target>Nid oedd rhif y cerdyn yn ddilys.</target>
+            </trans-unit>
+            <trans-unit id="58">
+                <source>Unsupported card type or invalid card number.</source>
+                <target>Unai ni dderbynir y math yna o gerdyn, neu nid yw rhif y cerdyn yn ddilys.</target>
+            </trans-unit>
+        </body>
+    </file>
+</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.da.xlf b/vendor/symfony/validator/Resources/translations/validators.da.xlf
new file mode 100644
index 0000000..14e479a
--- /dev/null
+++ b/vendor/symfony/validator/Resources/translations/validators.da.xlf
@@ -0,0 +1,247 @@
+<?xml version="1.0"?>
+<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
+    <file source-language="en" datatype="plaintext" original="file.ext">
+        <body>
+            <trans-unit id="1">
+                <source>This value should be false.</source>
+                <target>Værdien skal være falsk.</target>
+            </trans-unit>
+            <trans-unit id="2">
+                <source>This value should be true.</source>
+                <target>Værdien skal være sand.</target>
+            </trans-unit>
+            <trans-unit id="3">
+                <source>This value should be of type {{ type }}.</source>
+                <target>Værdien skal være af typen {{ type }}.</target>
+            </trans-unit>
+            <trans-unit id="4">
+                <source>This value should be blank.</source>
+                <target>Værdien skal være blank.</target>
+            </trans-unit>
+            <trans-unit id="5">
+                <source>The value you selected is not a valid choice.</source>
+                <target>Værdien skal være en af de givne muligheder.</target>
+            </trans-unit>
+            <trans-unit id="6">
+                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
+                <target>Du skal vælge mindst {{ limit }} muligheder.</target>
+            </trans-unit>
+            <trans-unit id="7">
+                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
+                <target>Du kan højest vælge {{ limit }} muligheder.</target>
+            </trans-unit>
+            <trans-unit id="8">
+                <source>One or more of the given values is invalid.</source>
+                <target>En eller flere af de oplyste værdier er ugyldige.</target>
+            </trans-unit>
+            <trans-unit id="9">
+                <source>This field was not expected.</source>
+                <target>Feltet blev ikke forventet.</target>
+            </trans-unit>
+            <trans-unit id="10">
+                <source>This field is missing.</source>
+                <target>Dette felt er mangler.</target>
+            </trans-unit>
+            <trans-unit id="11">
+                <source>This value is not a valid date.</source>
+                <target>Værdien er ikke en gyldig dato.</target>
+            </trans-unit>
+            <trans-unit id="12">
+                <source>This value is not a valid datetime.</source>
+                <target>Værdien er ikke en gyldig dato og tid.</target>
+            </trans-unit>
+            <trans-unit id="13">
+                <source>This value is not a valid email address.</source>
+                <target>Værdien er ikke en gyldig e-mail adresse.</target>
+            </trans-unit>
+            <trans-unit id="14">
+                <source>The file could not be found.</source>
+                <target>Filen kunne ikke findes.</target>
+            </trans-unit>
+            <trans-unit id="15">
+                <source>The file is not readable.</source>
+                <target>Filen kan ikke læses.</target>
+            </trans-unit>
+            <trans-unit id="16">
+                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>Filen er for stor ({{ size }} {{ suffix }}). Tilladte maksimale størrelse {{ limit }} {{ suffix }}.</target>
+            </trans-unit>
+            <trans-unit id="17">
+                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
+                <target>Mimetypen af filen er ugyldig ({{ type }}). Tilladte mimetyper er {{ types }}.</target>
+            </trans-unit>
+            <trans-unit id="18">
+                <source>This value should be {{ limit }} or less.</source>
+                <target>Værdien skal være {{ limit }} eller mindre.</target>
+            </trans-unit>
+            <trans-unit id="19">
+                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
+                <target>Værdien er for lang. Den skal have {{ limit }} bogstaver eller mindre.</target>
+            </trans-unit>
+            <trans-unit id="20">
+                <source>This value should be {{ limit }} or more.</source>
+                <target>Værdien skal være {{ limit }} eller mere.</target>
+            </trans-unit>
+            <trans-unit id="21">
+                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
+                <target>Værdien er for kort. Den skal have {{ limit }} tegn eller flere.</target>
+            </trans-unit>
+            <trans-unit id="22">
+                <source>This value should not be blank.</source>
+                <target>Værdien må ikke være blank.</target>
+            </trans-unit>
+            <trans-unit id="23">
+                <source>This value should not be null.</source>
+                <target>Værdien må ikke være tom (null).</target>
+            </trans-unit>
+            <trans-unit id="24">
+                <source>This value should be null.</source>
+                <target>Værdien skal være tom (null).</target>
+            </trans-unit>
+            <trans-unit id="25">
+                <source>This value is not valid.</source>
+                <target>Værdien er ikke gyldig.</target>
+            </trans-unit>
+            <trans-unit id="26">
+                <source>This value is not a valid time.</source>
+                <target>Værdien er ikke en gyldig tid.</target>
+            </trans-unit>
+            <trans-unit id="27">
+                <source>This value is not a valid URL.</source>
+                <target>Værdien er ikke en gyldig URL.</target>
+            </trans-unit>
+            <trans-unit id="31">
+                <source>The two values should be equal.</source>
+                <target>De to værdier skal være ens.</target>
+            </trans-unit>
+            <trans-unit id="32">
+                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>Filen er for stor. Den maksimale størrelse er {{ limit }} {{ suffix }}.</target>
+            </trans-unit>
+            <trans-unit id="33">
+                <source>The file is too large.</source>
+                <target>Filen er for stor.</target>
+            </trans-unit>
+            <trans-unit id="34">
+                <source>The file could not be uploaded.</source>
+                <target>Filen kunne ikke blive uploadet.</target>
+            </trans-unit>
+            <trans-unit id="35">
+                <source>This value should be a valid number.</source>
+                <target>Værdien skal være et gyldigt tal.</target>
+            </trans-unit>
+            <trans-unit id="36">
+                <source>This file is not a valid image.</source>
+                <target>Filen er ikke gyldigt billede.</target>
+            </trans-unit>
+            <trans-unit id="37">
+                <source>This is not a valid IP address.</source>
+                <target>Dette er ikke en gyldig IP adresse.</target>
+            </trans-unit>
+            <trans-unit id="38">
+                <source>This value is not a valid language.</source>
+                <target>Værdien er ikke et gyldigt sprog.</target>
+            </trans-unit>
+            <trans-unit id="39">
+                <source>This value is not a valid locale.</source>
+                <target>Værdien er ikke en gyldig lokalitet.</target>
+            </trans-unit>
+            <trans-unit id="40">
+                <source>This value is not a valid country.</source>
+                <target>Værdien er ikke et gyldigt land.</target>
+            </trans-unit>
+            <trans-unit id="41">
+                <source>This value is already used.</source>
+                <target>Værdien er allerede i brug.</target>
+            </trans-unit>
+            <trans-unit id="42">
+                <source>The size of the image could not be detected.</source>
+                <target>Størrelsen på billedet kunne ikke detekteres.</target>
+            </trans-unit>
+            <trans-unit id="43">
+                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
+                <target>Billedbredden er for stor ({{ width }}px). Tilladt maksimumsbredde er {{ max_width }}px.</target>
+            </trans-unit>
+            <trans-unit id="44">
+                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
+                <target>Billedebredden er for lille ({{ width }}px). Forventet minimumshøjde er {{ min_width }}px.</target>
+            </trans-unit>
+            <trans-unit id="45">
+                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
+                <target>Billedhøjden er for stor ({{ height }}px). Tilladt maksimumshøjde er {{ max_height }}px.</target>
+            </trans-unit>
+            <trans-unit id="46">
+                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
+                <target>Billedhøjden er for lille ({{ height }}px). Forventet minimumshøjde er {{ min_height }}px.</target>
+            </trans-unit>
+            <trans-unit id="47">
+                <source>This value should be the user's current password.</source>
+                <target>Værdien skal være brugerens nuværende password.</target>
+            </trans-unit>
+            <trans-unit id="48">
+                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
+                <target>Værdien skal have præcis {{ limit }} tegn.</target>
+            </trans-unit>
+            <trans-unit id="49">
+                <source>The file was only partially uploaded.</source>
+                <target>Filen var kun delvis uploadet.</target>
+            </trans-unit>
+            <trans-unit id="50">
+                <source>No file was uploaded.</source>
+                <target>Ingen fil blev uploadet.</target>
+            </trans-unit>
+            <trans-unit id="51">
+                <source>No temporary folder was configured in php.ini.</source>
+                <target>Ingen midlertidig mappe er konfigureret i php.ini.</target>
+            </trans-unit>
+            <trans-unit id="52">
+                <source>Cannot write temporary file to disk.</source>
+                <target>Kan ikke skrive midlertidig fil til disk.</target>
+            </trans-unit>
+            <trans-unit id="53">
+                <source>A PHP extension caused the upload to fail.</source>
+                <target>En PHP udvidelse forårsagede fejl i upload.</target>
+            </trans-unit>
+            <trans-unit id="54">
+                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
+                <target>Denne samling skal indeholde {{ limit }} element eller flere.|Denne samling skal indeholde {{ limit }} elementer eller flere.</target>
+            </trans-unit>
+            <trans-unit id="55">
+                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
+                <target>Denne samling skal indeholde {{ limit }} element eller mindre.|Denne samling skal indeholde {{ limit }} elementer eller mindre.</target>
+            </trans-unit>
+            <trans-unit id="56">
+                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
+                <target>Denne samling skal indeholde præcis {{ limit }} element.|Denne samling skal indeholde præcis {{ limit }} elementer.</target>
+            </trans-unit>
+            <trans-unit id="57">
+                <source>Invalid card number.</source>
+                <target>Ugyldigt kortnummer.</target>
+            </trans-unit>
+            <trans-unit id="58">
+                <source>Unsupported card type or invalid card number.</source>
+                <target>Ikke-understøttet korttype eller ugyldigt kortnummer.</target>
+            </trans-unit>
+            <trans-unit id="59">
+                <source>This is not a valid International Bank Account Number (IBAN).</source>
+                <target>Det er ikke en gyldig International Bank Account Number (IBAN).</target>
+            </trans-unit>
+            <trans-unit id="60">
+                <source>This value is not a valid ISBN-10.</source>
+                <target>Værdien er ikke en gyldig ISBN-10.</target>
+            </trans-unit>
+            <trans-unit id="61">
+                <source>This value is not a valid ISBN-13.</source>
+                <target>Værdien er ikke en gyldig ISBN-13.</target>
+            </trans-unit>
+            <trans-unit id="62">
+                <source>This value is neither a valid ISBN-10 nor a valid ISBN-13.</source>
+                <target>Værdien er hverken en gyldig ISBN-10 eller en gyldig ISBN-13.</target>
+            </trans-unit>
+            <trans-unit id="63">
+                <source>This value is not a valid ISSN.</source>
+                <target>Værdien er ikke en gyldig ISSN.</target>
+            </trans-unit>
+        </body>
+    </file>
+</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.de.xlf b/vendor/symfony/validator/Resources/translations/validators.de.xlf
new file mode 100644
index 0000000..105f2fb
--- /dev/null
+++ b/vendor/symfony/validator/Resources/translations/validators.de.xlf
@@ -0,0 +1,315 @@
+<?xml version="1.0"?>
+<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
+    <file source-language="en" datatype="plaintext" original="file.ext">
+        <body>
+            <trans-unit id="1">
+                <source>This value should be false.</source>
+                <target>Dieser Wert sollte false sein.</target>
+            </trans-unit>
+            <trans-unit id="2">
+                <source>This value should be true.</source>
+                <target>Dieser Wert sollte true sein.</target>
+            </trans-unit>
+            <trans-unit id="3">
+                <source>This value should be of type {{ type }}.</source>
+                <target>Dieser Wert sollte vom Typ {{ type }} sein.</target>
+            </trans-unit>
+            <trans-unit id="4">
+                <source>This value should be blank.</source>
+                <target>Dieser Wert sollte leer sein.</target>
+            </trans-unit>
+            <trans-unit id="5">
+                <source>The value you selected is not a valid choice.</source>
+                <target>Sie haben einen ungültigen Wert ausgewählt.</target>
+            </trans-unit>
+            <trans-unit id="6">
+                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
+                <target>Sie müssen mindestens {{ limit }} Möglichkeit wählen.|Sie müssen mindestens {{ limit }} Möglichkeiten wählen.</target>
+            </trans-unit>
+            <trans-unit id="7">
+                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
+                <target>Sie dürfen höchstens {{ limit }} Möglichkeit wählen.|Sie dürfen höchstens {{ limit }} Möglichkeiten wählen.</target>
+            </trans-unit>
+            <trans-unit id="8">
+                <source>One or more of the given values is invalid.</source>
+                <target>Einer oder mehrere der angegebenen Werte sind ungültig.</target>
+            </trans-unit>
+            <trans-unit id="9">
+                <source>This field was not expected.</source>
+                <target>Dieses Feld wurde nicht erwartet.</target>
+            </trans-unit>
+            <trans-unit id="10">
+                <source>This field is missing.</source>
+                <target>Dieses Feld fehlt.</target>
+            </trans-unit>
+            <trans-unit id="11">
+                <source>This value is not a valid date.</source>
+                <target>Dieser Wert entspricht keiner gültigen Datumsangabe.</target>
+            </trans-unit>
+            <trans-unit id="12">
+                <source>This value is not a valid datetime.</source>
+                <target>Dieser Wert entspricht keiner gültigen Datums- und Zeitangabe.</target>
+            </trans-unit>
+            <trans-unit id="13">
+                <source>This value is not a valid email address.</source>
+                <target>Dieser Wert ist keine gültige E-Mail-Adresse.</target>
+            </trans-unit>
+            <trans-unit id="14">
+                <source>The file could not be found.</source>
+                <target>Die Datei wurde nicht gefunden.</target>
+            </trans-unit>
+            <trans-unit id="15">
+                <source>The file is not readable.</source>
+                <target>Die Datei ist nicht lesbar.</target>
+            </trans-unit>
+            <trans-unit id="16">
+                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>Die Datei ist zu groß ({{ size }} {{ suffix }}). Die maximal zulässige Größe beträgt {{ limit }} {{ suffix }}.</target>
+            </trans-unit>
+            <trans-unit id="17">
+                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
+                <target>Der Dateityp ist ungültig ({{ type }}). Erlaubte Dateitypen sind {{ types }}.</target>
+            </trans-unit>
+            <trans-unit id="18">
+                <source>This value should be {{ limit }} or less.</source>
+                <target>Dieser Wert sollte kleiner oder gleich {{ limit }} sein.</target>
+            </trans-unit>
+            <trans-unit id="19">
+                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
+                <target>Diese Zeichenkette ist zu lang. Sie sollte höchstens {{ limit }} Zeichen haben.|Diese Zeichenkette ist zu lang. Sie sollte höchstens {{ limit }} Zeichen haben.</target>
+            </trans-unit>
+            <trans-unit id="20">
+                <source>This value should be {{ limit }} or more.</source>
+                <target>Dieser Wert sollte größer oder gleich {{ limit }} sein.</target>
+            </trans-unit>
+            <trans-unit id="21">
+                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
+                <target>Diese Zeichenkette ist zu kurz. Sie sollte mindestens {{ limit }} Zeichen haben.|Diese Zeichenkette ist zu kurz. Sie sollte mindestens {{ limit }} Zeichen haben.</target>
+            </trans-unit>
+            <trans-unit id="22">
+                <source>This value should not be blank.</source>
+                <target>Dieser Wert sollte nicht leer sein.</target>
+            </trans-unit>
+            <trans-unit id="23">
+                <source>This value should not be null.</source>
+                <target>Dieser Wert sollte nicht null sein.</target>
+            </trans-unit>
+            <trans-unit id="24">
+                <source>This value should be null.</source>
+                <target>Dieser Wert sollte null sein.</target>
+            </trans-unit>
+            <trans-unit id="25">
+                <source>This value is not valid.</source>
+                <target>Dieser Wert ist nicht gültig.</target>
+            </trans-unit>
+            <trans-unit id="26">
+                <source>This value is not a valid time.</source>
+                <target>Dieser Wert entspricht keiner gültigen Zeitangabe.</target>
+            </trans-unit>
+            <trans-unit id="27">
+                <source>This value is not a valid URL.</source>
+                <target>Dieser Wert ist keine gültige URL.</target>
+            </trans-unit>
+            <trans-unit id="31">
+                <source>The two values should be equal.</source>
+                <target>Die beiden Werte sollten identisch sein.</target>
+            </trans-unit>
+            <trans-unit id="32">
+                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>Die Datei ist zu groß. Die maximal zulässige Größe beträgt {{ limit }} {{ suffix }}.</target>
+            </trans-unit>
+            <trans-unit id="33">
+                <source>The file is too large.</source>
+                <target>Die Datei ist zu groß.</target>
+            </trans-unit>
+            <trans-unit id="34">
+                <source>The file could not be uploaded.</source>
+                <target>Die Datei konnte nicht hochgeladen werden.</target>
+            </trans-unit>
+            <trans-unit id="35">
+                <source>This value should be a valid number.</source>
+                <target>Dieser Wert sollte eine gültige Zahl sein.</target>
+            </trans-unit>
+            <trans-unit id="36">
+                <source>This file is not a valid image.</source>
+                <target>Diese Datei ist kein gültiges Bild.</target>
+            </trans-unit>
+            <trans-unit id="37">
+                <source>This is not a valid IP address.</source>
+                <target>Dies ist keine gültige IP-Adresse.</target>
+            </trans-unit>
+            <trans-unit id="38">
+                <source>This value is not a valid language.</source>
+                <target>Dieser Wert entspricht keiner gültigen Sprache.</target>
+            </trans-unit>
+            <trans-unit id="39">
+                <source>This value is not a valid locale.</source>
+                <target>Dieser Wert entspricht keinem gültigen Gebietsschema.</target>
+            </trans-unit>
+            <trans-unit id="40">
+                <source>This value is not a valid country.</source>
+                <target>Dieser Wert entspricht keinem gültigen Land.</target>
+            </trans-unit>
+            <trans-unit id="41">
+                <source>This value is already used.</source>
+                <target>Dieser Wert wird bereits verwendet.</target>
+            </trans-unit>
+            <trans-unit id="42">
+                <source>The size of the image could not be detected.</source>
+                <target>Die Größe des Bildes konnte nicht ermittelt werden.</target>
+            </trans-unit>
+            <trans-unit id="43">
+                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
+                <target>Die Bildbreite ist zu groß ({{ width }}px). Die maximal zulässige Breite beträgt {{ max_width }}px.</target>
+            </trans-unit>
+            <trans-unit id="44">
+                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
+                <target>Die Bildbreite ist zu gering ({{ width }}px). Die erwartete Mindestbreite beträgt {{ min_width }}px.</target>
+            </trans-unit>
+            <trans-unit id="45">
+                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
+                <target>Die Bildhöhe ist zu groß ({{ height }}px). Die maximal zulässige Höhe beträgt {{ max_height }}px.</target>
+            </trans-unit>
+            <trans-unit id="46">
+                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
+                <target>Die Bildhöhe ist zu gering ({{ height }}px). Die erwartete Mindesthöhe beträgt {{ min_height }}px.</target>
+            </trans-unit>
+            <trans-unit id="47">
+                <source>This value should be the user's current password.</source>
+                <target>Dieser Wert sollte dem aktuellen Benutzerpasswort entsprechen.</target>
+            </trans-unit>
+            <trans-unit id="48">
+                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
+                <target>Dieser Wert sollte genau {{ limit }} Zeichen lang sein.|Dieser Wert sollte genau {{ limit }} Zeichen lang sein.</target>
+            </trans-unit>
+            <trans-unit id="49">
+                <source>The file was only partially uploaded.</source>
+                <target>Die Datei wurde nur teilweise hochgeladen.</target>
+            </trans-unit>
+            <trans-unit id="50">
+                <source>No file was uploaded.</source>
+                <target>Es wurde keine Datei hochgeladen.</target>
+            </trans-unit>
+            <trans-unit id="51">
+                <source>No temporary folder was configured in php.ini.</source>
+                <target>Es wurde kein temporärer Ordner in der php.ini konfiguriert.</target>
+            </trans-unit>
+            <trans-unit id="52">
+                <source>Cannot write temporary file to disk.</source>
+                <target>Kann die temporäre Datei nicht speichern.</target>
+            </trans-unit>
+            <trans-unit id="53">
+                <source>A PHP extension caused the upload to fail.</source>
+                <target>Eine PHP-Erweiterung verhinderte den Upload.</target>
+            </trans-unit>
+            <trans-unit id="54">
+                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
+                <target>Diese Sammlung sollte {{ limit }} oder mehr Elemente beinhalten.|Diese Sammlung sollte {{ limit }} oder mehr Elemente beinhalten.</target>
+            </trans-unit>
+            <trans-unit id="55">
+                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
+                <target>Diese Sammlung sollte {{ limit }} oder weniger Elemente beinhalten.|Diese Sammlung sollte {{ limit }} oder weniger Elemente beinhalten.</target>
+            </trans-unit>
+            <trans-unit id="56">
+                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
+                <target>Diese Sammlung sollte genau {{ limit }} Element beinhalten.|Diese Sammlung sollte genau {{ limit }} Elemente beinhalten.</target>
+            </trans-unit>
+            <trans-unit id="57">
+                <source>Invalid card number.</source>
+                <target>Ungültige Kartennummer.</target>
+            </trans-unit>
+            <trans-unit id="58">
+                <source>Unsupported card type or invalid card number.</source>
+                <target>Nicht unterstützer Kartentyp oder ungültige Kartennummer.</target>
+            </trans-unit>
+            <trans-unit id="59">
+                <source>This is not a valid International Bank Account Number (IBAN).</source>
+                <target>Dieser Wert ist keine gültige internationale Bankkontonummer (IBAN).</target>
+            </trans-unit>
+            <trans-unit id="60">
+                <source>This value is not a valid ISBN-10.</source>
+                <target>Dieser Wert entspricht keiner gültigen ISBN-10.</target>
+            </trans-unit>
+            <trans-unit id="61">
+                <source>This value is not a valid ISBN-13.</source>
+                <target>Dieser Wert entspricht keiner gültigen ISBN-13.</target>
+            </trans-unit>
+            <trans-unit id="62">
+                <source>This value is neither a valid ISBN-10 nor a valid ISBN-13.</source>
+                <target>Dieser Wert ist weder eine gültige ISBN-10 noch eine gültige ISBN-13.</target>
+            </trans-unit>
+            <trans-unit id="63">
+                <source>This value is not a valid ISSN.</source>
+                <target>Dieser Wert ist keine gültige ISSN.</target>
+            </trans-unit>
+            <trans-unit id="64">
+                <source>This value is not a valid currency.</source>
+                <target>Dieser Wert ist keine gültige Währung.</target>
+            </trans-unit>
+            <trans-unit id="65">
+                <source>This value should be equal to {{ compared_value }}.</source>
+                <target>Dieser Wert sollte gleich {{ compared_value }} sein.</target>
+            </trans-unit>
+            <trans-unit id="66">
+                <source>This value should be greater than {{ compared_value }}.</source>
+                <target>Dieser Wert sollte größer als {{ compared_value }} sein.</target>
+            </trans-unit>
+            <trans-unit id="67">
+                <source>This value should be greater than or equal to {{ compared_value }}.</source>
+                <target>Dieser Wert sollte größer oder gleich {{ compared_value }} sein.</target>
+            </trans-unit>
+            <trans-unit id="68">
+                <source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
+                <target>Dieser Wert sollte identisch sein mit {{ compared_value_type }} {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="69">
+                <source>This value should be less than {{ compared_value }}.</source>
+                <target>Dieser Wert sollte kleiner als {{ compared_value }} sein.</target>
+            </trans-unit>
+            <trans-unit id="70">
+                <source>This value should be less than or equal to {{ compared_value }}.</source>
+                <target>Dieser Wert sollte kleiner oder gleich {{ compared_value }} sein.</target>
+            </trans-unit>
+            <trans-unit id="71">
+                <source>This value should not be equal to {{ compared_value }}.</source>
+                <target>Dieser Wert sollte nicht {{ compared_value }} sein.</target>
+            </trans-unit>
+            <trans-unit id="72">
+                <source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
+                <target>Dieser Wert sollte nicht identisch sein mit {{ compared_value_type }} {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="73">
+                <source>The image ratio is too big ({{ ratio }}). Allowed maximum ratio is {{ max_ratio }}.</source>
+                <target>Das Seitenverhältnis des Bildes ist zu groß ({{ ratio }}). Der erlaubte Maximalwert ist {{ max_ratio }}.</target>
+            </trans-unit>
+            <trans-unit id="74">
+                <source>The image ratio is too small ({{ ratio }}). Minimum ratio expected is {{ min_ratio }}.</source>
+                <target>Das Seitenverhältnis des Bildes ist zu klein ({{ ratio }}). Der erwartete Minimalwert ist {{ min_ratio }}.</target>
+            </trans-unit>
+            <trans-unit id="75">
+                <source>The image is square ({{ width }}x{{ height }}px). Square images are not allowed.</source>
+                <target>Das Bild ist quadratisch ({{ width }}x{{ height }}px). Quadratische Bilder sind nicht erlaubt.</target>
+            </trans-unit>
+            <trans-unit id="76">
+                <source>The image is landscape oriented ({{ width }}x{{ height }}px). Landscape oriented images are not allowed.</source>
+                <target>Das Bild ist im Querformat ({{ width }}x{{ height }}px). Bilder im Querformat sind nicht erlaubt.</target>
+            </trans-unit>
+            <trans-unit id="77">
+                <source>The image is portrait oriented ({{ width }}x{{ height }}px). Portrait oriented images are not allowed.</source>
+                <target>Das Bild ist im Hochformat ({{ width }}x{{ height }}px). Bilder im Hochformat sind nicht erlaubt.</target>
+            </trans-unit>
+            <trans-unit id="78">
+                <source>An empty file is not allowed.</source>
+                <target>Eine leere Datei ist nicht erlaubt.</target>
+            </trans-unit>
+            <trans-unit id="79">
+                <source>The host could not be resolved.</source>
+                <target>Der Hostname konnte nicht aufgelöst werden.</target>
+            </trans-unit>
+            <trans-unit id="80">
+                <source>This value does not match the expected {{ charset }} charset.</source>
+                <target>Dieser Wert entspricht nicht dem erwarteten Zeichensatz {{ charset }}.</target>
+            </trans-unit>
+        </body>
+    </file>
+</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.el.xlf b/vendor/symfony/validator/Resources/translations/validators.el.xlf
new file mode 100644
index 0000000..4fa0d42
--- /dev/null
+++ b/vendor/symfony/validator/Resources/translations/validators.el.xlf
@@ -0,0 +1,283 @@
+<?xml version="1.0"?>
+<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
+    <file source-language="en" datatype="plaintext" original="file.ext">
+        <body>
+            <trans-unit id="1">
+                <source>This value should be false.</source>
+                <target>Αυτή η τιμή πρέπει να είναι ψευδής.</target>
+            </trans-unit>
+            <trans-unit id="2">
+                <source>This value should be true.</source>
+                <target>Αυτή η τιμή πρέπει να είναι αληθής.</target>
+            </trans-unit>
+            <trans-unit id="3">
+                <source>This value should be of type {{ type }}.</source>
+                <target>Αυτή η τιμή πρέπει να είναι τύπου {{ type }}.</target>
+            </trans-unit>
+            <trans-unit id="4">
+                <source>This value should be blank.</source>
+                <target>Αυτή η τιμή πρέπει να είναι κενή.</target>
+            </trans-unit>
+            <trans-unit id="5">
+                <source>The value you selected is not a valid choice.</source>
+                <target>Η τιμή που επιλέχθηκε δεν αντιστοιχεί σε έγκυρη επιλογή.</target>
+            </trans-unit>
+            <trans-unit id="6">
+                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
+                <target>Πρέπει να επιλέξετε τουλάχιστον {{ limit }} επιλογή.|Πρέπει να επιλέξετε τουλάχιστον {{ limit }} επιλογές.</target>
+            </trans-unit>
+            <trans-unit id="7">
+                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
+                <target>Πρέπει να επιλέξετε το πολύ {{ limit }} επιλογή.|Πρέπει να επιλέξετε το πολύ {{ limit }} επιλογές.</target>
+            </trans-unit>
+            <trans-unit id="8">
+                <source>One or more of the given values is invalid.</source>
+                <target>Μια ή περισσότερες τιμές δεν είναι έγκυρες.</target>
+            </trans-unit>
+            <trans-unit id="9">
+                <source>This field was not expected.</source>
+                <target>Αυτό το πεδίο δεν ήταν αναμενόμενο.</target>
+            </trans-unit>
+            <trans-unit id="10">
+                <source>This field is missing.</source>
+                <target>Λείπει αυτό το πεδίο.</target>
+            </trans-unit>
+            <trans-unit id="11">
+                <source>This value is not a valid date.</source>
+                <target>Η τιμή δεν αντιστοιχεί σε έγκυρη ημερομηνία.</target>
+            </trans-unit>
+            <trans-unit id="12">
+                <source>This value is not a valid datetime.</source>
+                <target>Η τιμή δεν αντιστοιχεί σε έγκυρη ημερομηνία και ώρα.</target>
+            </trans-unit>
+            <trans-unit id="13">
+                <source>This value is not a valid email address.</source>
+                <target>Η τιμή δεν αντιστοιχεί σε έγκυρο email.</target>
+            </trans-unit>
+            <trans-unit id="14">
+                <source>The file could not be found.</source>
+                <target>Το αρχείο δε μπορεί να βρεθεί.</target>
+            </trans-unit>
+            <trans-unit id="15">
+                <source>The file is not readable.</source>
+                <target>Το αρχείο δεν είναι αναγνώσιμο.</target>
+            </trans-unit>
+            <trans-unit id="16">
+                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>Το αρχείο είναι πολύ μεγάλο ({{ size }} {{ suffix }}). Το μέγιστο επιτρεπτό μέγεθος είναι {{ limit }} {{ suffix }}.</target>
+            </trans-unit>
+            <trans-unit id="17">
+                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
+                <target>Ο τύπος mime του αρχείου δεν είναι έγκυρος ({{ type }}). Οι έγκρυοι τύποι mime είναι {{ types }}.</target>
+            </trans-unit>
+            <trans-unit id="18">
+                <source>This value should be {{ limit }} or less.</source>
+                <target>Αυτή η τιμή θα έπρεπε να είναι {{ limit }} ή λιγότερο.</target>
+            </trans-unit>
+            <trans-unit id="19">
+                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
+                <target>Αυτή η τιμή είναι πολύ μεγάλη. Θα έπρεπε να έχει {{ limit }} χαρακτήρα ή λιγότερο.|Αυτή η τιμή είναι πολύ μεγάλη. Θα έπρεπε να έχει {{ limit }} χαρακτήρες ή λιγότερο.</target>
+            </trans-unit>
+            <trans-unit id="20">
+                <source>This value should be {{ limit }} or more.</source>
+                <target>Αυτή η τιμή θα έπρεπε να είναι {{ limit }} ή περισσότερο.</target>
+            </trans-unit>
+            <trans-unit id="21">
+                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
+                <target>Αυτή η τιμή είναι πολύ μικρή. Θα έπρεπε να έχει {{ limit }} χαρακτήρα ή περισσότερο.|Αυτή η τιμή είναι πολύ μικρή. Θα έπρεπε να έχει {{ limit }} χαρακτήρες ή περισσότερο.</target>
+            </trans-unit>
+            <trans-unit id="22">
+                <source>This value should not be blank.</source>
+                <target>Αυτή η τιμή δεν πρέπει να είναι κενή.</target>
+            </trans-unit>
+            <trans-unit id="23">
+                <source>This value should not be null.</source>
+                <target>Αυτή η τιμή δεν πρέπει να είναι μηδενική.</target>
+            </trans-unit>
+            <trans-unit id="24">
+                <source>This value should be null.</source>
+                <target>Αυτή η τιμή πρέπει να είναι μηδενική.</target>
+            </trans-unit>
+            <trans-unit id="25">
+                <source>This value is not valid.</source>
+                <target>Αυτή η τιμή δεν είναι έκγυρη.</target>
+            </trans-unit>
+            <trans-unit id="26">
+                <source>This value is not a valid time.</source>
+                <target>Αυτή η τιμή δεν αντιστοιχεί σε έγκυρη ώρα.</target>
+            </trans-unit>
+            <trans-unit id="27">
+                <source>This value is not a valid URL.</source>
+                <target>Αυτή η τιμή δεν αντιστοιχεί σε έγκυρο URL.</target>
+            </trans-unit>
+            <trans-unit id="31">
+                <source>The two values should be equal.</source>
+                <target>Οι δύο τιμές θα πρέπει να είναι ίδιες.</target>
+            </trans-unit>
+            <trans-unit id="32">
+                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>Το αρχείο είναι πολύ μεγάλο. Το μέγιστο επιτρεπτό μέγεθος είναι {{ limit }} {{ suffix }}.</target>
+            </trans-unit>
+            <trans-unit id="33">
+                <source>The file is too large.</source>
+                <target>Το αρχείο είναι πολύ μεγάλο.</target>
+            </trans-unit>
+            <trans-unit id="34">
+                <source>The file could not be uploaded.</source>
+                <target>Το αρχείο δε μπορεί να ανέβει.</target>
+            </trans-unit>
+            <trans-unit id="35">
+                <source>This value should be a valid number.</source>
+                <target>Αυτή η τιμή θα πρέπει να είναι ένας έγκυρος αριθμός.</target>
+            </trans-unit>
+            <trans-unit id="36">
+                <source>This file is not a valid image.</source>
+                <target>Το αρχείο δεν αποτελεί έγκυρη εικόνα.</target>
+            </trans-unit>
+            <trans-unit id="37">
+                <source>This is not a valid IP address.</source>
+                <target>Αυτό δεν είναι μια έκγυρη διεύθυνση IP.</target>
+            </trans-unit>
+            <trans-unit id="38">
+                <source>This value is not a valid language.</source>
+                <target>Αυτή η τιμή δεν αντιστοιχεί σε μια έκγυρη γλώσσα.</target>
+            </trans-unit>
+            <trans-unit id="39">
+                <source>This value is not a valid locale.</source>
+                <target>Αυτή η τιμή δεν αντιστοιχεί σε έκγυρο κωδικό τοποθεσίας.</target>
+            </trans-unit>
+            <trans-unit id="40">
+                <source>This value is not a valid country.</source>
+                <target>Αυτή η τιμή δεν αντιστοιχεί σε μια έκγυρη χώρα.</target>
+            </trans-unit>
+            <trans-unit id="41">
+                <source>This value is already used.</source>
+                <target>Αυτή η τιμή χρησιμοποιείται ήδη.</target>
+            </trans-unit>
+            <trans-unit id="42">
+                <source>The size of the image could not be detected.</source>
+                <target>Το μέγεθος της εικόνας δεν ήταν δυνατό να ανιχνευθεί.</target>
+            </trans-unit>
+            <trans-unit id="43">
+                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
+                <target>Το πλάτος της εικόνας είναι πολύ μεγάλο ({{ width }}px). Το μέγιστο επιτρεπτό πλάτος είναι {{ max_width }}px.</target>
+            </trans-unit>
+            <trans-unit id="44">
+                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
+                <target>Το πλάτος της εικόνας είναι πολύ μικρό ({{ width }}px). Το ελάχιστο επιτρεπτό πλάτος είναι {{ min_width }}px.</target>
+            </trans-unit>
+            <trans-unit id="45">
+                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
+                <target>Το ύψος της εικόνας είναι πολύ μεγάλο ({{ height }}px). Το μέγιστο επιτρεπτό ύψος είναι {{ max_height }}px.</target>
+            </trans-unit>
+            <trans-unit id="46">
+                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
+                <target>Το ύψος της εικόνας είναι πολύ μικρό ({{ height }}px). Το ελάχιστο επιτρεπτό ύψος είναι {{ min_height }}px.</target>
+            </trans-unit>
+            <trans-unit id="47">
+                <source>This value should be the user's current password.</source>
+                <target>Αυτή η τιμή θα έπρεπε να είναι ο τρέχων κωδικός.</target>
+            </trans-unit>
+            <trans-unit id="48">
+                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
+                <target>Αυτή η τιμή θα έπρεπε να έχει ακριβώς {{ limit }} χαρακτήρα.|Αυτή η τιμή θα έπρεπε να έχει ακριβώς {{ limit }} χαρακτήρες.</target>
+            </trans-unit>
+            <trans-unit id="49">
+                <source>The file was only partially uploaded.</source>
+                <target>Το αρχείο δεν ανέβηκε ολόκληρο.</target>
+            </trans-unit>
+            <trans-unit id="50">
+                <source>No file was uploaded.</source>
+                <target>Δεν ανέβηκε κανένα αρχείο.</target>
+            </trans-unit>
+            <trans-unit id="51">
+                <source>No temporary folder was configured in php.ini.</source>
+                <target>Κανένας προσωρινός φάκελος δεν έχει ρυθμιστεί στο php.ini.</target>
+            </trans-unit>
+            <trans-unit id="52">
+                <source>Cannot write temporary file to disk.</source>
+                <target>Αδυναμία εγγραφής προσωρινού αρχείου στο δίσκο.</target>
+            </trans-unit>
+            <trans-unit id="53">
+                <source>A PHP extension caused the upload to fail.</source>
+                <target>Μια επέκταση PHP προκάλεσε αδυναμία ανεβάσματος.</target>
+            </trans-unit>
+            <trans-unit id="54">
+                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
+                <target>Αυτή η συλλογή θα πρέπει να περιέχει {{ limit }} στοιχείο ή περισσότερα.|Αυτή η συλλογή θα πρέπει να περιέχει {{ limit }} στοιχεία ή περισσότερα.</target>
+            </trans-unit>
+            <trans-unit id="55">
+                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
+                <target>Αυτή η συλλογή θα πρέπει να περιέχει {{ limit }} στοιχείo ή λιγότερα.|Αυτή η συλλογή θα πρέπει να περιέχει {{ limit }} στοιχεία ή λιγότερα.</target>
+            </trans-unit>
+            <trans-unit id="56">
+                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
+                <target>Αυτή η συλλογή θα πρέπει να περιέχει ακριβώς {{ limit }} στοιχείo.|Αυτή η συλλογή θα πρέπει να περιέχει ακριβώς {{ limit }} στοιχεία.</target>
+            </trans-unit>
+            <trans-unit id="57">
+                <source>Invalid card number.</source>
+                <target>Μη έγκυρος αριθμός κάρτας.</target>
+            </trans-unit>
+            <trans-unit id="58">
+                <source>Unsupported card type or invalid card number.</source>
+                <target>Μη υποστηριζόμενος τύπος κάρτας ή μη έγκυρος αριθμός κάρτας.</target>
+            </trans-unit>
+            <trans-unit id="59">
+                <source>This is not a valid International Bank Account Number (IBAN).</source>
+                <target>Αυτό δεν αντιστοιχεί σε έκγυρο διεθνή αριθμό τραπεζικού λογαριασμού (IBAN).</target>
+            </trans-unit>
+            <trans-unit id="60">
+                <source>This value is not a valid ISBN-10.</source>
+                <target>Αυτό δεν είναι έγκυρος κωδικός ISBN-10.</target>
+            </trans-unit>
+            <trans-unit id="61">
+                <source>This value is not a valid ISBN-13.</source>
+                <target>Αυτό δεν είναι έγκυρος κωδικός ISBN-13.</target>
+            </trans-unit>
+            <trans-unit id="62">
+                <source>This value is neither a valid ISBN-10 nor a valid ISBN-13.</source>
+                <target>Αυτό δεν είναι ούτε έγκυρος κωδικός ISBN-10 ούτε έγκυρος κωδικός ISBN-13.</target>
+            </trans-unit>
+            <trans-unit id="63">
+                <source>This value is not a valid ISSN.</source>
+                <target>Αυτό δεν είναι έγκυρος κωδικός ISSN.</target>
+            </trans-unit>
+            <trans-unit id="64">
+                <source>This value is not a valid currency.</source>
+                <target>Αυτό δεν αντιστοιχεί σε έγκυρο νόμισμα.</target>
+            </trans-unit>
+            <trans-unit id="65">
+                <source>This value should be equal to {{ compared_value }}.</source>
+                <target>Αυτή η τιμή θα πρέπει να είναι ίση με {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="66">
+                <source>This value should be greater than {{ compared_value }}.</source>
+                <target>Αυτή η τιμή θα πρέπει να είναι μεγαλύτερη από {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="67">
+                <source>This value should be greater than or equal to {{ compared_value }}.</source>
+                <target>Αυτή η τιμή θα πρέπει να είναι μεγαλύτερη ή ίση με {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="68">
+                <source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
+                <target>Αυτή η τιμή θα πρέπει να είναι πανομοιότυπη με {{ compared_value_type }} {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="69">
+                <source>This value should be less than {{ compared_value }}.</source>
+                <target>Αυτή η τιμή θα πρέπει να είναι μικρότερη από {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="70">
+                <source>This value should be less than or equal to {{ compared_value }}.</source>
+                <target>Αυτή η τιμή θα πρέπει να είναι μικρότερη ή ίση με {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="71">
+                <source>This value should not be equal to {{ compared_value }}.</source>
+                <target>Αυτή η τιμή δεν θα πρέπει να είναι ίση με {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="72">
+                <source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
+                <target>Αυτή η τιμή δεν πρέπει να είναι πανομοιότυπη με {{ compared_value_type }} {{ compared_value }}.</target>
+            </trans-unit>
+        </body>
+    </file>
+</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.en.xlf b/vendor/symfony/validator/Resources/translations/validators.en.xlf
new file mode 100644
index 0000000..e666c79
--- /dev/null
+++ b/vendor/symfony/validator/Resources/translations/validators.en.xlf
@@ -0,0 +1,315 @@
+<?xml version="1.0"?>
+<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
+    <file source-language="en" datatype="plaintext" original="file.ext">
+        <body>
+            <trans-unit id="1">
+                <source>This value should be false.</source>
+                <target>This value should be false.</target>
+            </trans-unit>
+            <trans-unit id="2">
+                <source>This value should be true.</source>
+                <target>This value should be true.</target>
+            </trans-unit>
+            <trans-unit id="3">
+                <source>This value should be of type {{ type }}.</source>
+                <target>This value should be of type {{ type }}.</target>
+            </trans-unit>
+            <trans-unit id="4">
+                <source>This value should be blank.</source>
+                <target>This value should be blank.</target>
+            </trans-unit>
+            <trans-unit id="5">
+                <source>The value you selected is not a valid choice.</source>
+                <target>The value you selected is not a valid choice.</target>
+            </trans-unit>
+            <trans-unit id="6">
+                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
+                <target>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</target>
+            </trans-unit>
+            <trans-unit id="7">
+                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
+                <target>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</target>
+            </trans-unit>
+            <trans-unit id="8">
+                <source>One or more of the given values is invalid.</source>
+                <target>One or more of the given values is invalid.</target>
+            </trans-unit>
+            <trans-unit id="9">
+                <source>This field was not expected.</source>
+                <target>This field was not expected.</target>
+            </trans-unit>
+            <trans-unit id="10">
+                <source>This field is missing.</source>
+                <target>This field is missing.</target>
+            </trans-unit>
+            <trans-unit id="11">
+                <source>This value is not a valid date.</source>
+                <target>This value is not a valid date.</target>
+            </trans-unit>
+            <trans-unit id="12">
+                <source>This value is not a valid datetime.</source>
+                <target>This value is not a valid datetime.</target>
+            </trans-unit>
+            <trans-unit id="13">
+                <source>This value is not a valid email address.</source>
+                <target>This value is not a valid email address.</target>
+            </trans-unit>
+            <trans-unit id="14">
+                <source>The file could not be found.</source>
+                <target>The file could not be found.</target>
+            </trans-unit>
+            <trans-unit id="15">
+                <source>The file is not readable.</source>
+                <target>The file is not readable.</target>
+            </trans-unit>
+            <trans-unit id="16">
+                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</target>
+            </trans-unit>
+            <trans-unit id="17">
+                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
+                <target>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</target>
+            </trans-unit>
+            <trans-unit id="18">
+                <source>This value should be {{ limit }} or less.</source>
+                <target>This value should be {{ limit }} or less.</target>
+            </trans-unit>
+            <trans-unit id="19">
+                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
+                <target>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</target>
+            </trans-unit>
+            <trans-unit id="20">
+                <source>This value should be {{ limit }} or more.</source>
+                <target>This value should be {{ limit }} or more.</target>
+            </trans-unit>
+            <trans-unit id="21">
+                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
+                <target>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</target>
+            </trans-unit>
+            <trans-unit id="22">
+                <source>This value should not be blank.</source>
+                <target>This value should not be blank.</target>
+            </trans-unit>
+            <trans-unit id="23">
+                <source>This value should not be null.</source>
+                <target>This value should not be null.</target>
+            </trans-unit>
+            <trans-unit id="24">
+                <source>This value should be null.</source>
+                <target>This value should be null.</target>
+            </trans-unit>
+            <trans-unit id="25">
+                <source>This value is not valid.</source>
+                <target>This value is not valid.</target>
+            </trans-unit>
+            <trans-unit id="26">
+                <source>This value is not a valid time.</source>
+                <target>This value is not a valid time.</target>
+            </trans-unit>
+            <trans-unit id="27">
+                <source>This value is not a valid URL.</source>
+                <target>This value is not a valid URL.</target>
+            </trans-unit>
+            <trans-unit id="31">
+                <source>The two values should be equal.</source>
+                <target>The two values should be equal.</target>
+            </trans-unit>
+            <trans-unit id="32">
+                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</target>
+            </trans-unit>
+            <trans-unit id="33">
+                <source>The file is too large.</source>
+                <target>The file is too large.</target>
+            </trans-unit>
+            <trans-unit id="34">
+                <source>The file could not be uploaded.</source>
+                <target>The file could not be uploaded.</target>
+            </trans-unit>
+            <trans-unit id="35">
+                <source>This value should be a valid number.</source>
+                <target>This value should be a valid number.</target>
+            </trans-unit>
+            <trans-unit id="36">
+                <source>This file is not a valid image.</source>
+                <target>This file is not a valid image.</target>
+            </trans-unit>
+            <trans-unit id="37">
+                <source>This is not a valid IP address.</source>
+                <target>This is not a valid IP address.</target>
+            </trans-unit>
+            <trans-unit id="38">
+                <source>This value is not a valid language.</source>
+                <target>This value is not a valid language.</target>
+            </trans-unit>
+            <trans-unit id="39">
+                <source>This value is not a valid locale.</source>
+                <target>This value is not a valid locale.</target>
+            </trans-unit>
+            <trans-unit id="40">
+                <source>This value is not a valid country.</source>
+                <target>This value is not a valid country.</target>
+            </trans-unit>
+            <trans-unit id="41">
+                <source>This value is already used.</source>
+                <target>This value is already used.</target>
+            </trans-unit>
+            <trans-unit id="42">
+                <source>The size of the image could not be detected.</source>
+                <target>The size of the image could not be detected.</target>
+            </trans-unit>
+            <trans-unit id="43">
+                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
+                <target>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</target>
+            </trans-unit>
+            <trans-unit id="44">
+                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
+                <target>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</target>
+            </trans-unit>
+            <trans-unit id="45">
+                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
+                <target>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</target>
+            </trans-unit>
+            <trans-unit id="46">
+                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
+                <target>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</target>
+            </trans-unit>
+            <trans-unit id="47">
+                <source>This value should be the user's current password.</source>
+                <target>This value should be the user's current password.</target>
+            </trans-unit>
+            <trans-unit id="48">
+                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
+                <target>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</target>
+            </trans-unit>
+            <trans-unit id="49">
+                <source>The file was only partially uploaded.</source>
+                <target>The file was only partially uploaded.</target>
+            </trans-unit>
+            <trans-unit id="50">
+                <source>No file was uploaded.</source>
+                <target>No file was uploaded.</target>
+            </trans-unit>
+            <trans-unit id="51">
+                <source>No temporary folder was configured in php.ini.</source>
+                <target>No temporary folder was configured in php.ini.</target>
+            </trans-unit>
+            <trans-unit id="52">
+                <source>Cannot write temporary file to disk.</source>
+                <target>Cannot write temporary file to disk.</target>
+            </trans-unit>
+            <trans-unit id="53">
+                <source>A PHP extension caused the upload to fail.</source>
+                <target>A PHP extension caused the upload to fail.</target>
+            </trans-unit>
+            <trans-unit id="54">
+                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
+                <target>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</target>
+            </trans-unit>
+            <trans-unit id="55">
+                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
+                <target>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</target>
+            </trans-unit>
+            <trans-unit id="56">
+                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
+                <target>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</target>
+            </trans-unit>
+            <trans-unit id="57">
+                <source>Invalid card number.</source>
+                <target>Invalid card number.</target>
+            </trans-unit>
+            <trans-unit id="58">
+                <source>Unsupported card type or invalid card number.</source>
+                <target>Unsupported card type or invalid card number.</target>
+            </trans-unit>
+            <trans-unit id="59">
+                <source>This is not a valid International Bank Account Number (IBAN).</source>
+                <target>This is not a valid International Bank Account Number (IBAN).</target>
+            </trans-unit>
+            <trans-unit id="60">
+                <source>This value is not a valid ISBN-10.</source>
+                <target>This value is not a valid ISBN-10.</target>
+            </trans-unit>
+            <trans-unit id="61">
+                <source>This value is not a valid ISBN-13.</source>
+                <target>This value is not a valid ISBN-13.</target>
+            </trans-unit>
+            <trans-unit id="62">
+                <source>This value is neither a valid ISBN-10 nor a valid ISBN-13.</source>
+                <target>This value is neither a valid ISBN-10 nor a valid ISBN-13.</target>
+            </trans-unit>
+            <trans-unit id="63">
+                <source>This value is not a valid ISSN.</source>
+                <target>This value is not a valid ISSN.</target>
+            </trans-unit>
+            <trans-unit id="64">
+                <source>This value is not a valid currency.</source>
+                <target>This value is not a valid currency.</target>
+            </trans-unit>
+            <trans-unit id="65">
+                <source>This value should be equal to {{ compared_value }}.</source>
+                <target>This value should be equal to {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="66">
+                <source>This value should be greater than {{ compared_value }}.</source>
+                <target>This value should be greater than {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="67">
+                <source>This value should be greater than or equal to {{ compared_value }}.</source>
+                <target>This value should be greater than or equal to {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="68">
+                <source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
+                <target>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="69">
+                <source>This value should be less than {{ compared_value }}.</source>
+                <target>This value should be less than {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="70">
+                <source>This value should be less than or equal to {{ compared_value }}.</source>
+                <target>This value should be less than or equal to {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="71">
+                <source>This value should not be equal to {{ compared_value }}.</source>
+                <target>This value should not be equal to {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="72">
+                <source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
+                <target>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="73">
+                <source>The image ratio is too big ({{ ratio }}). Allowed maximum ratio is {{ max_ratio }}.</source>
+                <target>The image ratio is too big ({{ ratio }}). Allowed maximum ratio is {{ max_ratio }}.</target>
+            </trans-unit>
+            <trans-unit id="74">
+                <source>The image ratio is too small ({{ ratio }}). Minimum ratio expected is {{ min_ratio }}.</source>
+                <target>The image ratio is too small ({{ ratio }}). Minimum ratio expected is {{ min_ratio }}.</target>
+            </trans-unit>
+            <trans-unit id="75">
+                <source>The image is square ({{ width }}x{{ height }}px). Square images are not allowed.</source>
+                <target>The image is square ({{ width }}x{{ height }}px). Square images are not allowed.</target>
+            </trans-unit>
+            <trans-unit id="76">
+                <source>The image is landscape oriented ({{ width }}x{{ height }}px). Landscape oriented images are not allowed.</source>
+                <target>The image is landscape oriented ({{ width }}x{{ height }}px). Landscape oriented images are not allowed.</target>
+            </trans-unit>
+            <trans-unit id="77">
+                <source>The image is portrait oriented ({{ width }}x{{ height }}px). Portrait oriented images are not allowed.</source>
+                <target>The image is portrait oriented ({{ width }}x{{ height }}px). Portrait oriented images are not allowed.</target>
+            </trans-unit>
+            <trans-unit id="78">
+                <source>An empty file is not allowed.</source>
+                <target>An empty file is not allowed.</target>
+            </trans-unit>
+            <trans-unit id="79">
+                <source>The host could not be resolved.</source>
+                <target>The host could not be resolved.</target>
+            </trans-unit>
+            <trans-unit id="80">
+                <source>This value does not match the expected {{ charset }} charset.</source>
+                <target>This value does not match the expected {{ charset }} charset.</target>
+            </trans-unit>
+        </body>
+    </file>
+</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.es.xlf b/vendor/symfony/validator/Resources/translations/validators.es.xlf
new file mode 100644
index 0000000..d874573
--- /dev/null
+++ b/vendor/symfony/validator/Resources/translations/validators.es.xlf
@@ -0,0 +1,315 @@
+<?xml version="1.0"?>
+<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
+    <file source-language="en" datatype="plaintext" original="file.ext">
+        <body>
+            <trans-unit id="1">
+                <source>This value should be false.</source>
+                <target>Este valor debería ser falso.</target>
+            </trans-unit>
+            <trans-unit id="2">
+                <source>This value should be true.</source>
+                <target>Este valor debería ser verdadero.</target>
+            </trans-unit>
+            <trans-unit id="3">
+                <source>This value should be of type {{ type }}.</source>
+                <target>Este valor debería ser de tipo {{ type }}.</target>
+            </trans-unit>
+            <trans-unit id="4">
+                <source>This value should be blank.</source>
+                <target>Este valor debería estar vacío.</target>
+            </trans-unit>
+            <trans-unit id="5">
+                <source>The value you selected is not a valid choice.</source>
+                <target>El valor seleccionado no es una opción válida.</target>
+            </trans-unit>
+            <trans-unit id="6">
+                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
+                <target>Debe seleccionar al menos {{ limit }} opción.|Debe seleccionar al menos {{ limit }} opciones.</target>
+            </trans-unit>
+            <trans-unit id="7">
+                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
+                <target>Debe seleccionar como máximo {{ limit }} opción.|Debe seleccionar como máximo {{ limit }} opciones.</target>
+            </trans-unit>
+            <trans-unit id="8">
+                <source>One or more of the given values is invalid.</source>
+                <target>Uno o más de los valores indicados no son válidos.</target>
+            </trans-unit>
+            <trans-unit id="9">
+                <source>This field was not expected.</source>
+                <target>Este campo no se esperaba.</target>
+            </trans-unit>
+            <trans-unit id="10">
+                <source>This field is missing.</source>
+                <target>Este campo está desaparecido.</target>
+            </trans-unit>
+            <trans-unit id="11">
+                <source>This value is not a valid date.</source>
+                <target>Este valor no es una fecha válida.</target>
+            </trans-unit>
+            <trans-unit id="12">
+                <source>This value is not a valid datetime.</source>
+                <target>Este valor no es una fecha y hora válidas.</target>
+            </trans-unit>
+            <trans-unit id="13">
+                <source>This value is not a valid email address.</source>
+                <target>Este valor no es una dirección de email válida.</target>
+            </trans-unit>
+            <trans-unit id="14">
+                <source>The file could not be found.</source>
+                <target>No se pudo encontrar el archivo.</target>
+            </trans-unit>
+            <trans-unit id="15">
+                <source>The file is not readable.</source>
+                <target>No se puede leer el archivo.</target>
+            </trans-unit>
+            <trans-unit id="16">
+                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>El archivo es demasiado grande ({{ size }} {{ suffix }}). El tamaño máximo permitido es {{ limit }} {{ suffix }}.</target>
+            </trans-unit>
+            <trans-unit id="17">
+                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
+                <target>El tipo mime del archivo no es válido ({{ type }}). Los tipos mime válidos son {{ types }}.</target>
+            </trans-unit>
+            <trans-unit id="18">
+                <source>This value should be {{ limit }} or less.</source>
+                <target>Este valor debería ser {{ limit }} o menos.</target>
+            </trans-unit>
+            <trans-unit id="19">
+                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
+                <target>Este valor es demasiado largo. Debería tener {{ limit }} carácter o menos.|Este valor es demasiado largo. Debería tener {{ limit }} caracteres o menos.</target>
+            </trans-unit>
+            <trans-unit id="20">
+                <source>This value should be {{ limit }} or more.</source>
+                <target>Este valor debería ser {{ limit }} o más.</target>
+            </trans-unit>
+            <trans-unit id="21">
+                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
+                <target>Este valor es demasiado corto. Debería tener {{ limit }} carácter o más.|Este valor es demasiado corto. Debería tener {{ limit }} caracteres o más.</target>
+            </trans-unit>
+            <trans-unit id="22">
+                <source>This value should not be blank.</source>
+                <target>Este valor no debería estar vacío.</target>
+            </trans-unit>
+            <trans-unit id="23">
+                <source>This value should not be null.</source>
+                <target>Este valor no debería ser nulo.</target>
+            </trans-unit>
+            <trans-unit id="24">
+                <source>This value should be null.</source>
+                <target>Este valor debería ser nulo.</target>
+            </trans-unit>
+            <trans-unit id="25">
+                <source>This value is not valid.</source>
+                <target>Este valor no es válido.</target>
+            </trans-unit>
+            <trans-unit id="26">
+                <source>This value is not a valid time.</source>
+                <target>Este valor no es una hora válida.</target>
+            </trans-unit>
+            <trans-unit id="27">
+                <source>This value is not a valid URL.</source>
+                <target>Este valor no es una URL válida.</target>
+            </trans-unit>
+            <trans-unit id="31">
+                <source>The two values should be equal.</source>
+                <target>Los dos valores deberían ser iguales.</target>
+            </trans-unit>
+            <trans-unit id="32">
+                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>El archivo es demasiado grande. El tamaño máximo permitido es {{ limit }} {{ suffix }}.</target>
+            </trans-unit>
+            <trans-unit id="33">
+                <source>The file is too large.</source>
+                <target>El archivo es demasiado grande.</target>
+            </trans-unit>
+            <trans-unit id="34">
+                <source>The file could not be uploaded.</source>
+                <target>No se pudo subir el archivo.</target>
+            </trans-unit>
+            <trans-unit id="35">
+                <source>This value should be a valid number.</source>
+                <target>Este valor debería ser un número válido.</target>
+            </trans-unit>
+            <trans-unit id="36">
+                <source>This file is not a valid image.</source>
+                <target>El archivo no es una imagen válida.</target>
+            </trans-unit>
+            <trans-unit id="37">
+                <source>This is not a valid IP address.</source>
+                <target>Esto no es una dirección IP válida.</target>
+            </trans-unit>
+            <trans-unit id="38">
+                <source>This value is not a valid language.</source>
+                <target>Este valor no es un idioma válido.</target>
+            </trans-unit>
+            <trans-unit id="39">
+                <source>This value is not a valid locale.</source>
+                <target>Este valor no es una localización válida.</target>
+            </trans-unit>
+            <trans-unit id="40">
+                <source>This value is not a valid country.</source>
+                <target>Este valor no es un país válido.</target>
+            </trans-unit>
+            <trans-unit id="41">
+                <source>This value is already used.</source>
+                <target>Este valor ya se ha utilizado.</target>
+            </trans-unit>
+            <trans-unit id="42">
+                <source>The size of the image could not be detected.</source>
+                <target>No se pudo determinar el tamaño de la imagen.</target>
+            </trans-unit>
+            <trans-unit id="43">
+                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
+                <target>El ancho de la imagen es demasiado grande ({{ width }}px). El ancho máximo permitido es de {{ max_width }}px.</target>
+            </trans-unit>
+            <trans-unit id="44">
+                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
+                <target>El ancho de la imagen es demasiado pequeño ({{ width }}px). El ancho mínimo requerido es {{ min_width }}px.</target>
+            </trans-unit>
+            <trans-unit id="45">
+                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
+                <target>La altura de la imagen es demasiado grande ({{ height }}px). La altura máxima permitida es de {{ max_height }}px.</target>
+            </trans-unit>
+            <trans-unit id="46">
+                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
+                <target>La altura de la imagen es demasiado pequeña ({{ height }}px). La altura mínima requerida es de {{ min_height }}px.</target>
+            </trans-unit>
+            <trans-unit id="47">
+                <source>This value should be the user's current password.</source>
+                <target>Este valor debería ser la contraseña actual del usuario.</target>
+            </trans-unit>
+            <trans-unit id="48">
+                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
+                <target>Este valor debería tener exactamente {{ limit }} carácter.|Este valor debería tener exactamente {{ limit }} caracteres.</target>
+            </trans-unit>
+            <trans-unit id="49">
+                <source>The file was only partially uploaded.</source>
+                <target>El archivo fue sólo subido parcialmente.</target>
+            </trans-unit>
+            <trans-unit id="50">
+                <source>No file was uploaded.</source>
+                <target>Ningún archivo fue subido.</target>
+            </trans-unit>
+            <trans-unit id="51">
+                <source>No temporary folder was configured in php.ini.</source>
+                <target>Ninguna carpeta temporal fue configurada en php.ini.</target>
+            </trans-unit>
+            <trans-unit id="52">
+                <source>Cannot write temporary file to disk.</source>
+                <target>No se pudo escribir el archivo temporal en el disco.</target>
+            </trans-unit>
+            <trans-unit id="53">
+                <source>A PHP extension caused the upload to fail.</source>
+                <target>Una extensión de PHP hizo que la subida fallara.</target>
+            </trans-unit>
+            <trans-unit id="54">
+                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
+                <target>Esta colección debe contener {{ limit }} elemento o más.|Esta colección debe contener {{ limit }} elementos o más.</target>
+            </trans-unit>
+            <trans-unit id="55">
+                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
+                <target>Esta colección debe contener {{ limit }} elemento o menos.|Esta colección debe contener {{ limit }} elementos o menos.</target>
+            </trans-unit>
+            <trans-unit id="56">
+                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
+                <target>Esta colección debe contener exactamente {{ limit }} elemento.|Esta colección debe contener exactamente {{ limit }} elementos.</target>
+            </trans-unit>
+            <trans-unit id="57">
+                <source>Invalid card number.</source>
+                <target>Número de tarjeta inválido.</target>
+            </trans-unit>
+            <trans-unit id="58">
+                <source>Unsupported card type or invalid card number.</source>
+                <target>Tipo de tarjeta no soportado o número de tarjeta inválido.</target>
+            </trans-unit>
+            <trans-unit id="59">
+                <source>This is not a valid International Bank Account Number (IBAN).</source>
+                <target>Esto no es un International Bank Account Number (IBAN) válido.</target>
+            </trans-unit>
+            <trans-unit id="60">
+                <source>This value is not a valid ISBN-10.</source>
+                <target>Este valor no es un ISBN-10 válido.</target>
+            </trans-unit>
+            <trans-unit id="61">
+                <source>This value is not a valid ISBN-13.</source>
+                <target>Este valor no es un ISBN-13 válido.</target>
+            </trans-unit>
+            <trans-unit id="62">
+                <source>This value is neither a valid ISBN-10 nor a valid ISBN-13.</source>
+                <target>Este valor no es ni un ISBN-10 válido ni un ISBN-13 válido.</target>
+            </trans-unit>
+            <trans-unit id="63">
+                <source>This value is not a valid ISSN.</source>
+                <target>Este valor no es un ISSN válido.</target>
+            </trans-unit>
+            <trans-unit id="64">
+                <source>This value is not a valid currency.</source>
+                <target>Este valor no es una divisa válida.</target>
+            </trans-unit>
+            <trans-unit id="65">
+                <source>This value should be equal to {{ compared_value }}.</source>
+                <target>Este valor debería ser igual que {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="66">
+                <source>This value should be greater than {{ compared_value }}.</source>
+                <target>Este valor debería ser mayor que {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="67">
+                <source>This value should be greater than or equal to {{ compared_value }}.</source>
+                <target>Este valor debería ser mayor o igual que {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="68">
+                <source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
+                <target>Este valor debería ser idéntico a {{ compared_value_type }} {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="69">
+                <source>This value should be less than {{ compared_value }}.</source>
+                <target>Este valor debería ser menor que {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="70">
+                <source>This value should be less than or equal to {{ compared_value }}.</source>
+                <target>Este valor debería ser menor o igual que {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="71">
+                <source>This value should not be equal to {{ compared_value }}.</source>
+                <target>Este valor debería ser distinto de {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="72">
+                <source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
+                <target>Este valor no debería ser idéntico a {{ compared_value_type }} {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="73">
+                <source>The image ratio is too big ({{ ratio }}). Allowed maximum ratio is {{ max_ratio }}.</source>
+                <target>La proporción de la imagen es demasiado grande ({{ ratio }}). La máxima proporción permitida es {{ max_ratio }}.</target>
+            </trans-unit>
+            <trans-unit id="74">
+                <source>The image ratio is too small ({{ ratio }}). Minimum ratio expected is {{ min_ratio }}.</source>
+                <target>La proporción de la imagen es demasiado pequeña ({{ ratio }}). La mínima proporción permitida es {{ min_ratio }}.</target>
+            </trans-unit>
+            <trans-unit id="75">
+                <source>The image is square ({{ width }}x{{ height }}px). Square images are not allowed.</source>
+                <target>La imagen es cuadrada ({{ width }}x{{ height }}px). Las imágenes cuadradas no están permitidas.</target>
+            </trans-unit>
+            <trans-unit id="76">
+                <source>The image is landscape oriented ({{ width }}x{{ height }}px). Landscape oriented images are not allowed.</source>
+                <target>La imagen está orientada horizontalmente ({{ width }}x{{ height }}px). Las imágenes orientadas horizontalmente no están permitidas.</target>
+            </trans-unit>
+            <trans-unit id="77">
+                <source>The image is portrait oriented ({{ width }}x{{ height }}px). Portrait oriented images are not allowed.</source>
+                <target>La imagen está orientada verticalmente ({{ width }}x{{ height }}px). Las imágenes orientadas verticalmente no están permitidas.</target>
+            </trans-unit>
+            <trans-unit id="78">
+                <source>An empty file is not allowed.</source>
+                <target>No está permitido un archivo vacío.</target>
+            </trans-unit>
+            <trans-unit id="79">
+                <source>The host could not be resolved.</source>
+                <target>No se puede resolver el host.</target>
+            </trans-unit>
+            <trans-unit id="80">
+                <source>This value does not match the expected {{ charset }} charset.</source>
+                <target>La codificación de caracteres para este valor debería ser {{ charset }}.</target>
+            </trans-unit>
+        </body>
+    </file>
+</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.et.xlf b/vendor/symfony/validator/Resources/translations/validators.et.xlf
new file mode 100644
index 0000000..d047c8b
--- /dev/null
+++ b/vendor/symfony/validator/Resources/translations/validators.et.xlf
@@ -0,0 +1,283 @@
+<?xml version='1.0'?>
+<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
+    <file source-language="en" datatype="plaintext" original="file.ext">
+        <body>
+            <trans-unit id="1">
+                <source>This value should be false.</source>
+                <target>Väärtus peaks olema väär.</target>
+            </trans-unit>
+            <trans-unit id="2">
+                <source>This value should be true.</source>
+                <target>Väärtus peaks oleme tõene.</target>
+            </trans-unit>
+            <trans-unit id="3">
+                <source>This value should be of type {{ type }}.</source>
+                <target>Väärtus peaks olema {{ type }}-tüüpi.</target>
+            </trans-unit>
+            <trans-unit id="4">
+                <source>This value should be blank.</source>
+                <target>Väärtus peaks olema tühi.</target>
+            </trans-unit>
+            <trans-unit id="5">
+                <source>The value you selected is not a valid choice.</source>
+                <target>Väärtus peaks olema üks etteantud valikutest.</target>
+            </trans-unit>
+            <trans-unit id="6">
+                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
+                <target>Valima peaks vähemalt {{ limit }} valikut.</target>
+            </trans-unit>
+            <trans-unit id="7">
+                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
+                <target>Valima peaks mitte rohkem kui  {{ limit }} valikut.</target>
+            </trans-unit>
+            <trans-unit id="8">
+                <source>One or more of the given values is invalid.</source>
+                <target>One or more of the given values is invalid.</target>
+            </trans-unit>
+            <trans-unit id="9">
+                <source>This field was not expected.</source>
+                <target>See väli ei oodatud.</target>
+            </trans-unit>
+            <trans-unit id="10">
+                <source>This field is missing.</source>
+                <target>See väli on puudu.</target>
+            </trans-unit>
+            <trans-unit id="11">
+                <source>This value is not a valid date.</source>
+                <target>Väärtus pole korrektne kuupäev.</target>
+            </trans-unit>
+            <trans-unit id="12">
+                <source>This value is not a valid datetime.</source>
+                <target>Väärtus pole korrektne kuupäev ja kellaeg.</target>
+            </trans-unit>
+            <trans-unit id="13">
+                <source>This value is not a valid email address.</source>
+                <target>Väärtus pole korrektne e-maili aadress.</target>
+            </trans-unit>
+            <trans-unit id="14">
+                <source>The file could not be found.</source>
+                <target>Faili ei leita.</target>
+            </trans-unit>
+            <trans-unit id="15">
+                <source>The file is not readable.</source>
+                <target>Fail ei ole loetav.</target>
+            </trans-unit>
+            <trans-unit id="16">
+                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>Fail on liiga suur ({{ size }} {{ suffix }}). Suurim lubatud suurus on {{ limit }} {{ suffix }}.</target>
+            </trans-unit>
+            <trans-unit id="17">
+                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
+                <target>Faili sisutüüp on vigane ({{ type }}). Lubatud sisutüübid on {{ types }}.</target>
+            </trans-unit>
+            <trans-unit id="18">
+                <source>This value should be {{ limit }} or less.</source>
+                <target>Väärtus peaks olema {{ limit }} või vähem.</target>
+            </trans-unit>
+            <trans-unit id="19">
+                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
+                <target>Väärtus on liiga pikk. Pikkus peaks olema {{ limit }} tähemärki või vähem.</target>
+            </trans-unit>
+            <trans-unit id="20">
+                <source>This value should be {{ limit }} or more.</source>
+                <target>Väärtus peaks olema {{ limit }} või rohkem.</target>
+            </trans-unit>
+            <trans-unit id="21">
+                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
+                <target>Väärtus on liiga lühike. Pikkus peaks  olema {{ limit }} tähemärki või rohkem.</target>
+            </trans-unit>
+            <trans-unit id="22">
+                <source>This value should not be blank.</source>
+                <target>Väärtus ei tohiks olla tühi.</target>
+            </trans-unit>
+            <trans-unit id="23">
+                <source>This value should not be null.</source>
+                <target>Väärtus ei tohiks olla 'null'.</target>
+            </trans-unit>
+            <trans-unit id="24">
+                <source>This value should be null.</source>
+                <target>Väärtus peaks olema 'null'.</target>
+            </trans-unit>
+            <trans-unit id="25">
+                <source>This value is not valid.</source>
+                <target>Väärtus on vigane.</target>
+            </trans-unit>
+            <trans-unit id="26">
+                <source>This value is not a valid time.</source>
+                <target>Väärtus pole korrektne aeg.</target>
+            </trans-unit>
+            <trans-unit id="27">
+                <source>This value is not a valid URL.</source>
+                <target>Väärtus pole korrektne URL.</target>
+            </trans-unit>
+            <trans-unit id="31">
+                <source>The two values should be equal.</source>
+                <target>Väärtused peaksid olema võrdsed.</target>
+            </trans-unit>
+            <trans-unit id="32">
+                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>Fail on liiga suur. Maksimaalne lubatud suurus on {{ limit }} {{ suffix }}.</target>
+            </trans-unit>
+            <trans-unit id="33">
+                <source>The file is too large.</source>
+                <target>Fail on liiga suur.</target>
+            </trans-unit>
+            <trans-unit id="34">
+                <source>The file could not be uploaded.</source>
+                <target>Faili ei saa üles laadida.</target>
+            </trans-unit>
+            <trans-unit id="35">
+                <source>This value should be a valid number.</source>
+                <target>Väärtus peaks olema korrektne number.</target>
+            </trans-unit>
+            <trans-unit id="36">
+                <source>This file is not a valid image.</source>
+                <target>Fail ei ole korrektne pilt.</target>
+            </trans-unit>
+            <trans-unit id="37">
+                <source>This is not a valid IP address.</source>
+                <target>IP aadress pole korrektne.</target>
+            </trans-unit>
+            <trans-unit id="38">
+                <source>This value is not a valid language.</source>
+                <target>Väärtus pole korrektne keel.</target>
+            </trans-unit>
+            <trans-unit id="39">
+                <source>This value is not a valid locale.</source>
+                <target>Väärtus pole korrektne asukohakeel.</target>
+            </trans-unit>
+            <trans-unit id="40">
+                <source>This value is not a valid country.</source>
+                <target>Väärtus pole olemasolev riik.</target>
+            </trans-unit>
+            <trans-unit id="41">
+                <source>This value is already used.</source>
+                <target>Väärtust on juba kasutatud.</target>
+            </trans-unit>
+            <trans-unit id="42">
+                <source>The size of the image could not be detected.</source>
+                <target>Pildi suurust polnud võimalik tuvastada.</target>
+            </trans-unit>
+            <trans-unit id="43">
+                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
+                <target>Pilt on liiga lai ({{ width }}px). Suurim lubatud laius on {{ max_width }}px.</target>
+            </trans-unit>
+            <trans-unit id="44">
+                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
+                <target>Pilt on liiga kitsas ({{ width }}px). Vähim lubatud laius on {{ min_width }}px.</target>
+            </trans-unit>
+            <trans-unit id="45">
+                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
+                <target>Pilt on liiga pikk ({{ height }}px). Lubatud suurim pikkus on {{ max_height }}px.</target>
+            </trans-unit>
+            <trans-unit id="46">
+                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
+                <target>Pilt pole piisavalt pikk ({{ height }}px). Lubatud vähim pikkus on {{ min_height }}px.</target>
+            </trans-unit>
+            <trans-unit id="47">
+                <source>This value should be the user's current password.</source>
+                <target>Väärtus peaks olema kasutaja kehtiv salasõna.</target>
+            </trans-unit>
+            <trans-unit id="48">
+                <source>This value should have exactly {{ limit }} characters.</source>
+                <target>Väärtus peaks olema täpselt {{ limit }} tähemärk pikk.|Väärtus peaks olema täpselt {{ limit }} tähemärki pikk.</target>
+            </trans-unit>
+            <trans-unit id="49">
+                <source>The file was only partially uploaded.</source>
+                <target>Fail ei laetud täielikult üles.</target>
+            </trans-unit>
+            <trans-unit id="50">
+                <source>No file was uploaded.</source>
+                <target>Ühtegi faili ei laetud üles.</target>
+            </trans-unit>
+            <trans-unit id="51">
+                <source>No temporary folder was configured in php.ini.</source>
+                <target>Ühtegi ajutist kausta polnud php.ini-s seadistatud.</target>
+            </trans-unit>
+            <trans-unit id="52">
+                <source>Cannot write temporary file to disk.</source>
+                <target>Ajutist faili ei saa kettale kirjutada.</target>
+            </trans-unit>
+            <trans-unit id="53">
+                <source>A PHP extension caused the upload to fail.</source>
+                <target>PHP laiendi tõttu ebaõnnestus faili üleslaadimine.</target>
+            </trans-unit>
+            <trans-unit id="54">
+                <source>This collection should contain {{ limit }} elements or more.</source>
+                <target>Kogumikus peaks olema vähemalt {{ limit }} element.|Kogumikus peaks olema vähemalt {{ limit }} elementi.</target>
+            </trans-unit>
+            <trans-unit id="55">
+                <source>This collection should contain {{ limit }} elements or less.</source>
+                <target>Kogumikus peaks olema ülimalt {{ limit }} element.|Kogumikus peaks olema ülimalt {{ limit }} elementi.</target>
+            </trans-unit>
+            <trans-unit id="56">
+                <source>This collection should contain exactly {{ limit }} elements.</source>
+                <target>Kogumikus peaks olema täpselt {{ limit }} element.|Kogumikus peaks olema täpselt {{ limit }}|elementi.</target>
+            </trans-unit>
+            <trans-unit id="57">
+                <source>Invalid card number.</source>
+                <target>Vigane kaardi number.</target>
+            </trans-unit>
+            <trans-unit id="58">
+                <source>Unsupported card type or invalid card number.</source>
+                <target>Kaardi tüüpi ei toetata või kaardi number on vigane.</target>
+            </trans-unit>
+            <trans-unit id="59">
+                <source>This is not a valid International Bank Account Number (IBAN).</source>
+                <target>Väärtus pole korrektne IBAN-number.</target>
+            </trans-unit>
+            <trans-unit id="60">
+                <source>This value is not a valid ISBN-10.</source>
+                <target>Väärtus pole korrektne ISBN-10.</target>
+            </trans-unit>
+            <trans-unit id="61">
+                <source>This value is not a valid ISBN-13.</source>
+                <target>Väärtus pole korrektne ISBN-13.</target>
+            </trans-unit>
+            <trans-unit id="62">
+                <source>This value is neither a valid ISBN-10 nor a valid ISBN-13.</source>
+                <target>Väärtus pole korrektne ISBN-10 ega ISBN-13.</target>
+            </trans-unit>
+            <trans-unit id="63">
+                <source>This value is not a valid ISSN.</source>
+                <target>Väärtus pole korrektne ISSN.</target>
+            </trans-unit>
+            <trans-unit id="64">
+                <source>This value is not a valid currency.</source>
+                <target>Väärtus pole korrektne valuuta.</target>
+            </trans-unit>
+            <trans-unit id="65">
+                <source>This value should be equal to {{ compared_value }}.</source>
+                <target>Väärtus peaks olema võrdne {{ compared_value }}-ga.</target>
+            </trans-unit>
+            <trans-unit id="66">
+                <source>This value should be greater than {{ compared_value }}.</source>
+                <target>Väärtus peaks olema suurem kui {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="67">
+                <source>This value should be greater than or equal to {{ compared_value }}.</source>
+                <target>Väärtus peaks olema suurem kui või võrduma {{ compared_value }}-ga.</target>
+            </trans-unit>
+            <trans-unit id="68">
+                <source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
+                <target>Väärtus peaks olema identne väärtusega {{ compared_value_type }} {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="69">
+                <source>This value should be less than {{ compared_value }}.</source>
+                <target>Väärtus peaks olema väiksem kui {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="70">
+                <source>This value should be less than or equal to {{ compared_value }}.</source>
+                <target>Väärtus peaks olema väiksem kui või võrduma {{ compared_value }}-ga.</target>
+            </trans-unit>
+            <trans-unit id="71">
+                <source>This value should not be equal to {{ compared_value }}.</source>
+                <target>Väärtus ei tohiks võrduda {{ compared_value }}-ga.</target>
+            </trans-unit>
+            <trans-unit id="72">
+                <source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
+                <target>Väärtus ei tohiks olla identne väärtusega {{ compared_value_type }} {{ compared_value }}.</target>
+            </trans-unit>
+        </body>
+    </file>
+</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.eu.xlf b/vendor/symfony/validator/Resources/translations/validators.eu.xlf
new file mode 100644
index 0000000..b2edefd
--- /dev/null
+++ b/vendor/symfony/validator/Resources/translations/validators.eu.xlf
@@ -0,0 +1,283 @@
+<?xml version="1.0"?>
+<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
+    <file source-language="en" datatype="plaintext" original="file.ext">
+        <body>
+            <trans-unit id="1">
+                <source>This value should be false.</source>
+                <target>Balio hau faltsua izan beharko litzateke.</target>
+            </trans-unit>
+            <trans-unit id="2">
+                <source>This value should be true.</source>
+                <target>Balio hau egia izan beharko litzateke.</target>
+            </trans-unit>
+            <trans-unit id="3">
+                <source>This value should be of type {{ type }}.</source>
+                <target>Balio hau {{ type }} motakoa izan beharko litzateke.</target>
+            </trans-unit>
+            <trans-unit id="4">
+                <source>This value should be blank.</source>
+                <target>Balio hau hutsik egon beharko litzateke.</target>
+            </trans-unit>
+            <trans-unit id="5">
+                <source>The value you selected is not a valid choice.</source>
+                <target>Hautatu duzun balioa ez da aukera egoki bat.</target>
+            </trans-unit>
+            <trans-unit id="6">
+                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
+                <target>Gutxienez aukera {{ limit }} hautatu behar duzu.|Gutxienez {{ limit }} aukera hautatu behar dituzu.</target>
+            </trans-unit>
+            <trans-unit id="7">
+                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
+                <target>Gehienez aukera {{ limit }} hautatu behar duzu.|Gehienez {{ limit }} aukera hautatu behar dituzu.</target>
+            </trans-unit>
+            <trans-unit id="8">
+                <source>One or more of the given values is invalid.</source>
+                <target>Emandako balioetatik gutxienez bat ez da egokia.</target>
+            </trans-unit>
+            <trans-unit id="9">
+                <source>This field was not expected.</source>
+                <target>Eremu hau ez zen espero.</target>
+            </trans-unit>
+            <trans-unit id="10">
+                <source>This field is missing.</source>
+                <target>Eremu hau falta da.</target>
+            </trans-unit>
+            <trans-unit id="11">
+                <source>This value is not a valid date.</source>
+                <target>Balio hau ez da data egoki bat.</target>
+            </trans-unit>
+            <trans-unit id="12">
+                <source>This value is not a valid datetime.</source>
+                <target>Balio hau ez da data-ordu egoki bat.</target>
+            </trans-unit>
+            <trans-unit id="13">
+                <source>This value is not a valid email address.</source>
+                <target>Balio hau ez da posta elektroniko egoki bat.</target>
+            </trans-unit>
+            <trans-unit id="14">
+                <source>The file could not be found.</source>
+                <target>Ezin izan da fitxategia aurkitu.</target>
+            </trans-unit>
+            <trans-unit id="15">
+                <source>The file is not readable.</source>
+                <target>Fitxategia ez da irakurgarria.</target>
+            </trans-unit>
+            <trans-unit id="16">
+                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>Fitxategia handiegia da ({{ size }} {{ suffix }}). Baimendutako tamaina handiena {{ limit }} {{ suffix }} da.</target>
+            </trans-unit>
+            <trans-unit id="17">
+                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
+                <target>Fitxategiaren mime mota ez da egokia ({{ type }}). Hauek dira baimendutako mime motak: {{ types }}.</target>
+            </trans-unit>
+            <trans-unit id="18">
+                <source>This value should be {{ limit }} or less.</source>
+                <target>Balio hau gehienez {{ limit }} izan beharko litzateke.</target>
+            </trans-unit>
+            <trans-unit id="19">
+                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
+                <target>Balio hau luzeegia da. Gehienez karaktere {{ limit }} eduki beharko luke.|Balio hau luzeegia da. Gehienez {{ limit }} karaktere eduki beharko lituzke.</target>
+            </trans-unit>
+            <trans-unit id="20">
+                <source>This value should be {{ limit }} or more.</source>
+                <target>Balio hau gutxienez {{ limit }} izan beharko litzateke.</target>
+            </trans-unit>
+            <trans-unit id="21">
+                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
+                <target>Balio hau motzegia da. Karaktere {{ limit }} gutxienez eduki beharko luke.|Balio hau motzegia da. Gutxienez {{ limit }} karaktere eduki beharko lituzke.</target>
+            </trans-unit>
+            <trans-unit id="22">
+                <source>This value should not be blank.</source>
+                <target>Balio hau ez litzateke hutsik egon behar.</target>
+            </trans-unit>
+            <trans-unit id="23">
+                <source>This value should not be null.</source>
+                <target>Balio hau ez litzateke nulua izan behar.</target>
+            </trans-unit>
+            <trans-unit id="24">
+                <source>This value should be null.</source>
+                <target>Balio hau nulua izan beharko litzateke.</target>
+            </trans-unit>
+            <trans-unit id="25">
+                <source>This value is not valid.</source>
+                <target>Balio hau ez da egokia.</target>
+            </trans-unit>
+            <trans-unit id="26">
+                <source>This value is not a valid time.</source>
+                <target>Balio hau ez da ordu egoki bat.</target>
+           </trans-unit>
+            <trans-unit id="27">
+                <source>This value is not a valid URL.</source>
+                <target>Balio hau ez da baliabideen kokatzaile uniforme (URL) egoki bat.</target>
+            </trans-unit>
+            <trans-unit id="31">
+                <source>The two values should be equal.</source>
+                <target>Bi balioak berdinak izan beharko lirateke.</target>
+            </trans-unit>
+            <trans-unit id="32">
+                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>Fitxategia handiegia da. Baimendutako tamaina handiena {{ limit }} {{ suffix }} da.</target>
+            </trans-unit>
+            <trans-unit id="33">
+                <source>The file is too large.</source>
+                <target>Fitxategia handiegia da.</target>
+            </trans-unit>
+            <trans-unit id="34">
+                <source>The file could not be uploaded.</source>
+                <target>Ezin izan da fitxategia igo.</target>
+            </trans-unit>
+            <trans-unit id="35">
+                <source>This value should be a valid number.</source>
+                <target>Balio hau zenbaki egoki bat izan beharko litzateke.</target>
+            </trans-unit>
+            <trans-unit id="36">
+                <source>This file is not a valid image.</source>
+                <target>Fitxategi hau ez da irudi egoki bat.</target>
+            </trans-unit>
+            <trans-unit id="37">
+                <source>This is not a valid IP address.</source>
+                <target>Honako hau ez da IP helbide egoki bat.</target>
+            </trans-unit>
+            <trans-unit id="38">
+                <source>This value is not a valid language.</source>
+                <target>Balio hau ez da hizkuntza egoki bat.</target>
+            </trans-unit>
+            <trans-unit id="39">
+                <source>This value is not a valid locale.</source>
+                <target>Balio hau ez da kokapen egoki bat.</target>
+            </trans-unit>
+            <trans-unit id="40">
+                <source>This value is not a valid country.</source>
+                <target>Balio hau ez da herrialde egoki bat.</target>
+            </trans-unit>
+            <trans-unit id="41">
+                <source>This value is already used.</source>
+                <target>Balio hau jadanik erabilia izan da.</target>
+            </trans-unit>
+            <trans-unit id="42">
+                <source>The size of the image could not be detected.</source>
+                <target>Ezin izan da irudiaren tamaina detektatu.</target>
+            </trans-unit>
+            <trans-unit id="43">
+                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
+                <target>Irudiaren zabalera handiegia da ({{ width }}px). Onartutako gehienezko zabalera {{ max_width }}px dira.</target>
+            </trans-unit>
+            <trans-unit id="44">
+                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
+                <target>Irudiaren zabalera txikiegia da ({{ width }}px). Onartutako gutxieneko zabalera {{ min_width }}px dira.</target>
+            </trans-unit>
+            <trans-unit id="45">
+                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
+                <target>Irudiaren altuera handiegia da ({{ height }}px). Onartutako gehienezko altuera {{ max_height }}px dira.</target>
+            </trans-unit>
+            <trans-unit id="46">
+                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
+                <target>Irudiaren altuera txikiegia da ({{ height }}px). Onartutako gutxieneko altuera {{ min_height }}px dira.</target>
+            </trans-unit>
+            <trans-unit id="47">
+                <source>This value should be the user's current password.</source>
+                <target>Balio hau uneko erabiltzailearen pasahitza izan beharko litzateke.</target>
+            </trans-unit>
+            <trans-unit id="48">
+                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
+                <target>Balio honek zehazki karaktere {{ limit }} izan beharko luke.|Balio honek zehazki {{ limit }} karaktere izan beharko lituzke.</target>
+            </trans-unit>
+            <trans-unit id="49">
+                <source>The file was only partially uploaded.</source>
+                <target>Fitxategiaren zati bat bakarrik igo da.</target>
+            </trans-unit>
+            <trans-unit id="50">
+                <source>No file was uploaded.</source>
+                <target>Ez da fitxategirik igo.</target>
+            </trans-unit>
+            <trans-unit id="51">
+                <source>No temporary folder was configured in php.ini.</source>
+                <target>Ez da aldi baterako karpetarik konfiguratu php.ini fitxategian.</target>
+            </trans-unit>
+            <trans-unit id="52">
+                <source>Cannot write temporary file to disk.</source>
+                <target>Ezin izan da aldi baterako fitxategia diskoan idatzi.</target>
+            </trans-unit>
+            <trans-unit id="53">
+                <source>A PHP extension caused the upload to fail.</source>
+                <target>PHP luzapen batek igoeraren hutsa eragin du.</target>
+            </trans-unit>
+            <trans-unit id="54">
+                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
+                <target>Bilduma honek gutxienez elementu {{ limit }} eduki beharko luke.|Bilduma honek gutxienez {{ limit }} elementu eduki beharko lituzke.</target>
+            </trans-unit>
+            <trans-unit id="55">
+                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
+                <target>Bilduma honek gehienez elementu {{ limit }} eduki beharko luke.|Bilduma honek gehienez {{ limit }} elementu eduki beharko lituzke.</target>
+            </trans-unit>
+            <trans-unit id="56">
+                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
+                <target>Bilduma honek zehazki elementu {{ limit }} eduki beharko luke.|Bilduma honek zehazki {{ limit }} elementu eduki beharko lituzke.</target>
+            </trans-unit>
+            <trans-unit id="57">
+                <source>Invalid card number.</source>
+                <target>Txartel zenbaki baliogabea.</target>
+            </trans-unit>
+            <trans-unit id="58">
+                <source>Unsupported card type or invalid card number.</source>
+                <target>Txartel mota onartezina edo txartel zenbaki baliogabea.</target>
+            </trans-unit>
+            <trans-unit id="59">
+                <source>This is not a valid International Bank Account Number (IBAN).</source>
+                <target>Hau ez da baliozko banku internazionaleko kontu zenbaki (IBAN) bat.</target>
+            </trans-unit>
+            <trans-unit id="60">
+                <source>This value is not a valid ISBN-10.</source>
+                <target>Balio hau ez da onartutako ISBN-10 bat.</target>
+            </trans-unit>
+            <trans-unit id="61">
+                <source>This value is not a valid ISBN-13.</source>
+                <target>Balio hau ez da onartutako ISBN-13 bat.</target>
+            </trans-unit>
+            <trans-unit id="62">
+                <source>This value is neither a valid ISBN-10 nor a valid ISBN-13.</source>
+                <target>Balio hau ez da onartutako ISBN-10 edo ISBN-13 bat.</target>
+            </trans-unit>
+            <trans-unit id="63">
+                <source>This value is not a valid ISSN.</source>
+                <target>Balio hau ez da onartutako ISSN bat.</target>
+            </trans-unit>
+            <trans-unit id="64">
+                <source>This value is not a valid currency.</source>
+                <target>Balio hau ez da baliozko moneta bat.</target>
+            </trans-unit>
+            <trans-unit id="65">
+                <source>This value should be equal to {{ compared_value }}.</source>
+                <target>Balio hau {{ compared_value }}-(r)en berbera izan beharko litzateke.</target>
+            </trans-unit>
+            <trans-unit id="66">
+                <source>This value should be greater than {{ compared_value }}.</source>
+                <target>Balio hau {{ compared_value }} baino handiagoa izan beharko litzateke.</target>
+            </trans-unit>
+            <trans-unit id="67">
+                <source>This value should be greater than or equal to {{ compared_value }}.</source>
+                <target>Balio hau {{ compared_value }}-(r)en berdina edota handiagoa izan beharko litzateke.</target>
+            </trans-unit>
+            <trans-unit id="68">
+                <source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
+                <target>Balio hau {{ compared_value_type }} {{ compared_value }}-(r)en berbera izan beharko litzateke.</target>
+            </trans-unit>
+            <trans-unit id="69">
+                <source>This value should be less than {{ compared_value }}.</source>
+                <target>Balio hau {{ compared_value }} baino txikiagoa izan beharko litzateke.</target>
+            </trans-unit>
+            <trans-unit id="70">
+                <source>This value should be less than or equal to {{ compared_value }}.</source>
+                <target>Balio hau {{ compared_value }}-(r)en berdina edota txikiagoa izan beharko litzateke.</target>
+            </trans-unit>
+            <trans-unit id="71">
+                <source>This value should not be equal to {{ compared_value }}.</source>
+                <target>Balio hau ez litzateke {{ compared_value }}-(r)en berdina izan behar.</target>
+            </trans-unit>
+            <trans-unit id="72">
+                <source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
+                <target>Balio hau ez litzateke {{ compared_value_type }} {{ compared_value }}-(r)en berbera izan behar.</target>
+            </trans-unit>
+        </body>
+    </file>
+</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.fa.xlf b/vendor/symfony/validator/Resources/translations/validators.fa.xlf
new file mode 100644
index 0000000..98b4bd6
--- /dev/null
+++ b/vendor/symfony/validator/Resources/translations/validators.fa.xlf
@@ -0,0 +1,283 @@
+<?xml version="1.0"?>
+<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
+    <file source-language="en" datatype="plaintext" original="file.ext">
+        <body>
+            <trans-unit id="1">
+                <source>This value should be false.</source>
+                <target state="needs-review-translation">این مقدار باید نادرست(False) باشد.</target>
+            </trans-unit>
+            <trans-unit id="2">
+                <source>This value should be true.</source>
+                <target>این مقدار باید درست(True) باشد.</target>
+            </trans-unit>
+            <trans-unit id="3">
+                <source>This value should be of type {{ type }}.</source>
+                <target>این مقدار باید از نوع {{ type }} باشد.</target>
+            </trans-unit>
+            <trans-unit id="4">
+                <source>This value should be blank.</source>
+                <target>این فیلد باید خالی باشد.</target>
+            </trans-unit>
+            <trans-unit id="5">
+                <source>The value you selected is not a valid choice.</source>
+                <target>گزینه انتخابی معتبر نیست.</target>
+            </trans-unit>
+            <trans-unit id="6">
+                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
+                <target>باید حداقل {{ limit }} گزینه انتخاب کنید.|باید حداقل {{ limit }} گزینه انتخاب کنید.</target>
+            </trans-unit>
+            <trans-unit id="7">
+                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
+                <target>حداکثر {{ limit }} گزینه می توانید انتخاب کنید.|حداکثر {{ limit }} گزینه می توانید انتخاب کنید.</target>
+            </trans-unit>
+            <trans-unit id="8">
+                <source>One or more of the given values is invalid.</source>
+                <target>یک یا چند مقدار نامعتبر وجود دارد.</target>
+            </trans-unit>
+            <trans-unit id="9">
+                <source>The fields {{ fields }} were not expected.</source>
+                <target>فیلدهای {{ fields }} اضافی هستند.</target>
+            </trans-unit>
+            <trans-unit id="10">
+                <source>The fields {{ fields }} are missing.</source>
+                <target>فیلدهای {{ fields }} کم هستند.</target>
+            </trans-unit>
+            <trans-unit id="11">
+                <source>This value is not a valid date.</source>
+                <target>این مقدار یک تاریخ معتبر نیست.</target>
+            </trans-unit>
+            <trans-unit id="12">
+                <source>This value is not a valid datetime.</source>
+                <target>این مقدار یک تاریخ و زمان معتبر نیست.</target>
+            </trans-unit>
+            <trans-unit id="13">
+                <source>This value is not a valid email address.</source>
+                <target>این یک رایانامه معتبر نیست.</target>
+            </trans-unit>
+            <trans-unit id="14">
+                <source>The file could not be found.</source>
+                <target>فایل پیدا نشد.</target>
+            </trans-unit>
+            <trans-unit id="15">
+                <source>The file is not readable.</source>
+                <target>فایل قابلیت خواندن ندارد.</target>
+            </trans-unit>
+            <trans-unit id="16">
+                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>فایل بیش از اندازه بزرگ است({{ size }} {{ suffix }}). حداکثر اندازه مجاز برابر {{ limit }} {{ suffix }} است.</target>
+            </trans-unit>
+            <trans-unit id="17">
+                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
+                <target>این نوع فایل مجاز نیست({{ type }}). نوع های مجاز {{ types }} هستند.</target>
+            </trans-unit>
+            <trans-unit id="18">
+                <source>This value should be {{ limit }} or less.</source>
+                <target>این مقدار باید کوچکتر یا مساوی {{ limit }} باشد.</target>
+            </trans-unit>
+            <trans-unit id="19">
+                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
+                <target>بسیار طولانی است.حداکثر تعداد حروف مجاز برابر {{ limit }} است.|بسیار طولانی است.حداکثر تعداد حروف مجاز برابر {{ limit }} است.</target>
+            </trans-unit>
+            <trans-unit id="20">
+                <source>This value should be {{ limit }} or more.</source>
+                <target>این مقدار باید برابر و یا بیشتر از {{ limit }} باشد.</target>
+            </trans-unit>
+            <trans-unit id="21">
+                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
+                <target>بسیار کوتاه است.تعداد حروف باید حداقل {{ limit }} باشد.|بسیار کوتاه است.تعداد حروف باید حداقل {{ limit }} باشد.</target>
+            </trans-unit>
+            <trans-unit id="22">
+                <source>This value should not be blank.</source>
+                <target>این مقدار نباید تهی باشد.</target>
+            </trans-unit>
+            <trans-unit id="23">
+                <source>This value should not be null.</source>
+                <target>باید مقداری داشته باشد..</target>
+            </trans-unit>
+            <trans-unit id="24">
+                <source>This value should be null.</source>
+                <target>نباید مقداری داشته باشد.</target>
+            </trans-unit>
+            <trans-unit id="25">
+                <source>This value is not valid.</source>
+                <target>این مقدار معتبر نیست.</target>
+            </trans-unit>
+            <trans-unit id="26">
+                <source>This value is not a valid time.</source>
+                <target>این مقدار یک زمان صحیح نیست.</target>
+            </trans-unit>
+            <trans-unit id="27">
+                <source>This value is not a valid URL.</source>
+                <target>این یک URL معتبر نیست.</target>
+            </trans-unit>
+            <trans-unit id="31">
+                <source>The two values should be equal.</source>
+                <target>دو مقدار باید برابر باشند.</target>
+            </trans-unit>
+            <trans-unit id="32">
+                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>فایل بیش از اندازه بزرگ است. حداکثر اندازه مجاز برابر {{ limit }} {{ suffix }} است.</target>
+            </trans-unit>
+            <trans-unit id="33">
+                <source>The file is too large.</source>
+                <target>فایل بیش از اندازه بزرگ است.</target>
+            </trans-unit>
+            <trans-unit id="34">
+                <source>The file could not be uploaded.</source>
+                <target>بارگذاری فایل با شکست مواجه شد.</target>
+            </trans-unit>
+            <trans-unit id="35">
+                <source>This value should be a valid number.</source>
+                <target>این مقدار باید یک عدد معتبر باشد.</target>
+            </trans-unit>
+            <trans-unit id="36">
+                <source>This file is not a valid image.</source>
+                <target>این فایل یک تصویر نیست.</target>
+            </trans-unit>
+            <trans-unit id="37">
+                <source>This is not a valid IP address.</source>
+                <target>این مقدار یک IP معتبر نیست.</target>
+            </trans-unit>
+            <trans-unit id="38">
+                <source>This value is not a valid language.</source>
+                <target>این مقدار یک زبان صحیح نیست.</target>
+            </trans-unit>
+            <trans-unit id="39">
+                <source>This value is not a valid locale.</source>
+                <target>این مقدار یک محل صحیح نیست.</target>
+            </trans-unit>
+            <trans-unit id="40">
+                <source>This value is not a valid country.</source>
+                <target>این مقدار یک کشور صحیح نیست.</target>
+            </trans-unit>
+            <trans-unit id="41">
+                <source>This value is already used.</source>
+                <target>این مقدار قبلا مورد استفاده قرار گرفته است.</target>
+            </trans-unit>
+            <trans-unit id="42">
+                <source>The size of the image could not be detected.</source>
+                <target>اندازه تصویر قابل شناسایی نیست.</target>
+            </trans-unit>
+            <trans-unit id="43">
+                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
+                <target>طول تصویر بسیار بزرگ است ({{ width }}px). بشینه طول مجاز {{ max_width }}px است.</target>
+            </trans-unit>
+            <trans-unit id="44">
+                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
+                <target>طول تصویر بسیار کوچک است ({{ width }}px). کمینه طول موردنظر {{ min_width }}px است.</target>
+            </trans-unit>
+            <trans-unit id="45">
+                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
+                <target>ارتفاع تصویر بسیار بزرگ است ({{ height }}px). بشینه ارتفاع مجاز {{ max_height }}px است.</target>
+            </trans-unit>
+            <trans-unit id="46">
+                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
+                <target>ارتفاع تصویر بسیار کوچک است ({{ height }}px). کمینه ارتفاع موردنظر {{ min_height }}px است.</target>
+            </trans-unit>
+            <trans-unit id="47">
+                <source>This value should be the user's current password.</source>
+                <target>این مقدار می بایست کلمه عبور کنونی کاربر باشد.</target>
+            </trans-unit>
+            <trans-unit id="48">
+                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
+                <target> این مقدار می بایست دقیقا {{ limit }} کاراکتر داشته باشد.| این مقدار می بایست دقیقا {{ limit }} کاراکتر داشته باشد.</target>
+            </trans-unit>
+            <trans-unit id="49">
+                <source>The file was only partially uploaded.</source>
+                <target>فایل به صورت جزیی بارگذاری شده است.</target>
+            </trans-unit>
+            <trans-unit id="50">
+                <source>No file was uploaded.</source>
+                <target>هیچ فایلی بارگذاری نشد.</target>
+            </trans-unit>
+            <trans-unit id="51">
+                <source>No temporary folder was configured in php.ini.</source>
+                <target>فولدر موقت در php.ini پیکربندی نشده است.</target>
+            </trans-unit>
+            <trans-unit id="52">
+                <source>Cannot write temporary file to disk.</source>
+                <target>فایل موقت را نمی توان در دیسک نوشت.</target>
+            </trans-unit>
+            <trans-unit id="53">
+                <source>A PHP extension caused the upload to fail.</source>
+                <target>اکستنشن PHP موجب شد که بارگذاری فایل با شکست مواجه شود.</target>
+            </trans-unit>
+            <trans-unit id="54">
+                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
+                <target>این مجموعه می بایست دارای {{ limit }} عنصر یا بیشتر باشد.|این مجموعه می بایست دارای {{ limit }} عنصر یا بیشتر باشد.</target>
+            </trans-unit>
+            <trans-unit id="55">
+                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
+                <target>این مجموعه می بایست دارای حداقل {{ limit }} عنصر یا کمتر باشد.|این مجموعه می بایست دارای {{ limit }} عنصر یا کمتر باشد.</target>
+            </trans-unit>
+            <trans-unit id="56">
+                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
+                <target>این مجموعه می بایست به طور دقیق دارا {{ limit }} عنصر باشد.|این مجموعه می بایست به طور دقیق دارای {{ limit }} قلم باشد.</target>
+            </trans-unit>
+            <trans-unit id="57">
+                <source>Invalid card number.</source>
+                <target>شماره کارت نامعتبر است.</target>
+            </trans-unit>
+            <trans-unit id="58">
+                <source>Unsupported card type or invalid card number.</source>
+                <target>نوع کارت پشتیبانی نمی شود یا شماره کارت نامعتبر است.</target>
+            </trans-unit>
+            <trans-unit id="59">
+                <source>This is not a valid International Bank Account Number (IBAN).</source>
+                <target>این یک شماره حساب بین المللی بانک (IBAN) درست نیست.</target>
+            </trans-unit>
+            <trans-unit id="60">
+                <source>This value is not a valid ISBN-10.</source>
+                <target>این مقدار یک ISBN-10 درست نیست.</target>
+            </trans-unit>
+            <trans-unit id="61">
+                <source>This value is not a valid ISBN-13.</source>
+                <target>این مقدار یک ISBN-13 درست نیست.</target>
+            </trans-unit>
+            <trans-unit id="62">
+                <source>This value is neither a valid ISBN-10 nor a valid ISBN-13.</source>
+                <target>این مقدار یک ISBN-10 درست یا ISBN-13 درست نیست.</target>
+            </trans-unit>
+            <trans-unit id="63">
+                <source>This value is not a valid ISSN.</source>
+                <target>این مقدار یک ISSN درست نیست.</target>
+            </trans-unit>
+            <trans-unit id="64">
+                <source>This value is not a valid currency.</source>
+                <target>این مقدار یک یکای پول درست نیست.</target>
+            </trans-unit>
+            <trans-unit id="65">
+                <source>This value should be equal to {{ compared_value }}.</source>
+                <target>این مقدار باید برابر با {{ compared_value }} باشد.</target>
+            </trans-unit>
+            <trans-unit id="66">
+                <source>This value should be greater than {{ compared_value }}.</source>
+                <target>این مقدار باید از {{ compared_value }} بیشتر باشد.</target>
+            </trans-unit>
+            <trans-unit id="67">
+                <source>This value should be greater than or equal to {{ compared_value }}.</source>
+                <target>این مقدار باید بزرگتر یا مساوی با {{ compared_value }} باشد.</target>
+            </trans-unit>
+            <trans-unit id="68">
+                <source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
+                <target>این مقدار باید با {{ compared_value_type }} {{ compared_value }} یکی باشد.</target>
+            </trans-unit>
+            <trans-unit id="69">
+                <source>This value should be less than {{ compared_value }}.</source>
+                <target>این مقدار باید کمتر از {{ compared_value }} باشد.</target>
+            </trans-unit>
+            <trans-unit id="70">
+                <source>This value should be less than or equal to {{ compared_value }}.</source>
+                <target>این مقدار باید کمتر یا مساوی با {{ compared_value }} باشد.</target>
+            </trans-unit>
+            <trans-unit id="71">
+                <source>This value should not be equal to {{ compared_value }}.</source>
+                <target>این مقدار نباید با {{ compared_value }} برابر باشد.</target>
+            </trans-unit>
+            <trans-unit id="72">
+                <source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
+                <target>این مقدار نباید {{ compared_value_type }} {{ compared_value }} یکی باشد.</target>
+            </trans-unit>
+        </body>
+    </file>
+</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.fi.xlf b/vendor/symfony/validator/Resources/translations/validators.fi.xlf
new file mode 100644
index 0000000..3f5a07e
--- /dev/null
+++ b/vendor/symfony/validator/Resources/translations/validators.fi.xlf
@@ -0,0 +1,227 @@
+<?xml version="1.0"?>
+<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
+    <file source-language="en" datatype="plaintext" original="file.ext">
+        <body>
+            <trans-unit id="1">
+                <source>This value should be false.</source>
+                <target>Arvon tulee olla epätosi.</target>
+            </trans-unit>
+            <trans-unit id="2">
+                <source>This value should be true.</source>
+                <target>Arvon tulee olla tosi.</target>
+            </trans-unit>
+            <trans-unit id="3">
+                <source>This value should be of type {{ type }}.</source>
+                <target>Arvon tulee olla tyyppiä {{ type }}.</target>
+            </trans-unit>
+            <trans-unit id="4">
+                <source>This value should be blank.</source>
+                <target>Arvon tulee olla tyhjä.</target>
+            </trans-unit>
+            <trans-unit id="5">
+                <source>The value you selected is not a valid choice.</source>
+                <target>Arvon tulee olla yksi annetuista vaihtoehdoista.</target>
+            </trans-unit>
+            <trans-unit id="6">
+                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
+                <target>Sinun tulee valita vähintään {{ limit }} vaihtoehtoa.</target>
+            </trans-unit>
+            <trans-unit id="7">
+                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
+                <target>Sinun tulee valitan enintään {{ limit }} vaihtoehtoa.</target>
+            </trans-unit>
+            <trans-unit id="8">
+                <source>One or more of the given values is invalid.</source>
+                <target>Yksi tai useampi annetuista arvoista on virheellinen.</target>
+            </trans-unit>
+            <trans-unit id="9">
+                <source>This field was not expected.</source>
+                <target>Tässä kentässä ei odotettu.</target>
+            </trans-unit>
+            <trans-unit id="10">
+                <source>This field is missing.</source>
+                <target>Tämä kenttä puuttuu.</target>
+            </trans-unit>
+            <trans-unit id="11">
+                <source>This value is not a valid date.</source>
+                <target>Annettu arvo ei ole kelvollinen päivämäärä.</target>
+            </trans-unit>
+            <trans-unit id="12">
+                <source>This value is not a valid datetime.</source>
+                <target>Annettu arvo ei ole kelvollinen päivämäärä ja kellonaika.</target>
+            </trans-unit>
+            <trans-unit id="13">
+                <source>This value is not a valid email address.</source>
+                <target>Annettu arvo ei ole kelvollinen sähköpostiosoite.</target>
+            </trans-unit>
+            <trans-unit id="14">
+                <source>The file could not be found.</source>
+                <target>Tiedostoa ei löydy.</target>
+            </trans-unit>
+            <trans-unit id="15">
+                <source>The file is not readable.</source>
+                <target>Tiedostoa ei voida lukea.</target>
+            </trans-unit>
+            <trans-unit id="16">
+                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>Tiedostonkoko ({{ size }} {{ suffix }}) on liian iso. Suurin sallittu tiedostonkoko on {{ limit }} {{ suffix }}.</target>
+            </trans-unit>
+            <trans-unit id="17">
+                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
+                <target>Tiedostotyyppi ({{ type }}) on virheellinen. Sallittuja tiedostotyyppejä ovat {{ types }}.</target>
+            </trans-unit>
+            <trans-unit id="18">
+                <source>This value should be {{ limit }} or less.</source>
+                <target>Arvon tulee olla {{ limit }} tai vähemmän.</target>
+            </trans-unit>
+            <trans-unit id="19">
+                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
+                <target>Liian pitkä syöte. Syöte saa olla enintään {{ limit }} merkkiä.</target>
+            </trans-unit>
+            <trans-unit id="20">
+                <source>This value should be {{ limit }} or more.</source>
+                <target>Arvon tulee olla {{ limit }} tai enemmän.</target>
+            </trans-unit>
+            <trans-unit id="21">
+                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
+                <target>Liian lyhyt syöte. Syötteen tulee olla vähintään {{ limit }} merkkiä.</target>
+            </trans-unit>
+            <trans-unit id="22">
+                <source>This value should not be blank.</source>
+                <target>Kenttä ei voi olla tyhjä.</target>
+            </trans-unit>
+            <trans-unit id="23">
+                <source>This value should not be null.</source>
+                <target>Syöte ei voi olla null.</target>
+            </trans-unit>
+            <trans-unit id="24">
+                <source>This value should be null.</source>
+                <target>Syötteen tulee olla null.</target>
+            </trans-unit>
+            <trans-unit id="25">
+                <source>This value is not valid.</source>
+                <target>Virheellinen arvo.</target>
+            </trans-unit>
+            <trans-unit id="26">
+                <source>This value is not a valid time.</source>
+                <target>Annettu arvo ei ole kelvollinen kellonaika.</target>
+            </trans-unit>
+            <trans-unit id="27">
+                <source>This value is not a valid URL.</source>
+                <target>Annettu arvo ei ole kelvollinen URL-osoite.</target>
+            </trans-unit>
+            <trans-unit id="31">
+                <source>The two values should be equal.</source>
+                <target>Kahden annetun arvon tulee olla samat.</target>
+            </trans-unit>
+            <trans-unit id="32">
+                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>Annettu tiedosto on liian iso. Suurin sallittu tiedostokoko on {{ limit }} {{ suffix }}.</target>
+            </trans-unit>
+            <trans-unit id="33">
+                <source>The file is too large.</source>
+                <target>Tiedosto on liian iso.</target>
+            </trans-unit>
+            <trans-unit id="34">
+                <source>The file could not be uploaded.</source>
+                <target>Tiedoston siirto epäonnistui.</target>
+            </trans-unit>
+            <trans-unit id="35">
+                <source>This value should be a valid number.</source>
+                <target>Tämän arvon tulee olla numero.</target>
+            </trans-unit>
+            <trans-unit id="36">
+                <source>This file is not a valid image.</source>
+                <target>Tämä tiedosto ei ole kelvollinen kuva.</target>
+            </trans-unit>
+            <trans-unit id="37">
+                <source>This is not a valid IP address.</source>
+                <target>Tämä ei ole kelvollinen IP-osoite.</target>
+            </trans-unit>
+            <trans-unit id="38">
+                <source>This value is not a valid language.</source>
+                <target>Tämä arvo ei ole kelvollinen kieli.</target>
+            </trans-unit>
+            <trans-unit id="39">
+                <source>This value is not a valid locale.</source>
+                <target>Tämä arvo ei ole kelvollinen kieli- ja alueasetus (locale).</target>
+            </trans-unit>
+            <trans-unit id="40">
+                <source>This value is not a valid country.</source>
+                <target>Tämä arvo ei ole kelvollinen maa.</target>
+            </trans-unit>
+            <trans-unit id="41">
+                <source>This value is already used.</source>
+                <target>Tämä arvo on jo käytetty.</target>
+            </trans-unit>
+            <trans-unit id="42">
+                <source>The size of the image could not be detected.</source>
+                <target>Kuvan kokoa ei voitu tunnistaa.</target>
+            </trans-unit>
+            <trans-unit id="43">
+                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
+                <target>Kuva on liian leveä ({{ width }}px). Sallittu maksimileveys on {{ max_width }}px.</target>
+            </trans-unit>
+            <trans-unit id="44">
+                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
+                <target>Kuva on liian kapea ({{ width }}px). Leveyden tulisi olla vähintään {{ min_width }}px.</target>
+            </trans-unit>
+            <trans-unit id="45">
+                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
+                <target>Kuva on liian korkea ({{ width }}px). Sallittu maksimikorkeus on {{ max_width }}px.</target>
+            </trans-unit>
+            <trans-unit id="46">
+                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
+                <target>Kuva on liian matala ({{ height }}px). Korkeuden tulisi olla vähintään {{ min_height }}px.</target>
+            </trans-unit>
+            <trans-unit id="47">
+                <source>This value should be the user's current password.</source>
+                <target>Tämän arvon tulisi olla käyttäjän tämänhetkinen salasana.</target>
+            </trans-unit>
+            <trans-unit id="48">
+                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
+                <target>Tämän arvon tulisi olla tasan yhden merkin pituinen.|Tämän arvon tulisi olla tasan {{ limit }} merkkiä pitkä.</target>
+            </trans-unit>
+            <trans-unit id="49">
+                <source>The file was only partially uploaded.</source>
+                <target>Tiedosto ladattiin vain osittain.</target>
+            </trans-unit>
+            <trans-unit id="50">
+                <source>No file was uploaded.</source>
+                <target>Tiedostoa ei ladattu.</target>
+            </trans-unit>
+            <trans-unit id="51">
+                <source>No temporary folder was configured in php.ini.</source>
+                <target>Väliaikaishakemistoa ei ole asetettu php.ini -tiedostoon.</target>
+            </trans-unit>
+            <trans-unit id="52">
+                <source>Cannot write temporary file to disk.</source>
+                <target>Väliaikaistiedostoa ei voitu kirjoittaa levylle.</target>
+            </trans-unit>
+            <trans-unit id="53">
+                <source>A PHP extension caused the upload to fail.</source>
+                <target>PHP-laajennoksen vuoksi tiedoston lataus epäonnistui.</target>
+            </trans-unit>
+            <trans-unit id="54">
+                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
+                <target>Tässä ryhmässä tulisi olla yksi tai useampi elementti.|Tässä ryhmässä tulisi olla vähintään {{ limit }} elementtiä.</target>
+            </trans-unit>
+            <trans-unit id="55">
+                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
+                <target>Tässä ryhmässä tulisi olla enintään yksi elementti.|Tässä ryhmässä tulisi olla enintään {{ limit }} elementtiä.</target>
+            </trans-unit>
+            <trans-unit id="56">
+                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
+                <target>Tässä ryhmässä tulisi olla tasan yksi elementti.|Tässä ryhmässä tulisi olla enintään {{ limit }} elementtiä.</target>
+            </trans-unit>
+            <trans-unit id="57">
+                <source>Invalid card number.</source>
+                <target>Virheellinen korttinumero.</target>
+            </trans-unit>
+            <trans-unit id="58">
+                <source>Unsupported card type or invalid card number.</source>
+                <target>Tätä korttityyppiä ei tueta tai korttinumero on virheellinen.</target>
+            </trans-unit>
+        </body>
+    </file>
+</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.fr.xlf b/vendor/symfony/validator/Resources/translations/validators.fr.xlf
new file mode 100644
index 0000000..b50ecbc
--- /dev/null
+++ b/vendor/symfony/validator/Resources/translations/validators.fr.xlf
@@ -0,0 +1,315 @@
+<?xml version="1.0"?>
+<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
+    <file source-language="en" datatype="plaintext" original="file.ext">
+        <body>
+            <trans-unit id="1">
+                <source>This value should be false.</source>
+                <target>Cette valeur doit être fausse.</target>
+            </trans-unit>
+            <trans-unit id="2">
+                <source>This value should be true.</source>
+                <target>Cette valeur doit être vraie.</target>
+            </trans-unit>
+            <trans-unit id="3">
+                <source>This value should be of type {{ type }}.</source>
+                <target>Cette valeur doit être de type {{ type }}.</target>
+            </trans-unit>
+            <trans-unit id="4">
+                <source>This value should be blank.</source>
+                <target>Cette valeur doit être vide.</target>
+            </trans-unit>
+            <trans-unit id="5">
+                <source>The value you selected is not a valid choice.</source>
+                <target>Cette valeur doit être l'un des choix proposés.</target>
+            </trans-unit>
+            <trans-unit id="6">
+                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
+                <target>Vous devez sélectionner au moins {{ limit }} choix.|Vous devez sélectionner au moins {{ limit }} choix.</target>
+            </trans-unit>
+            <trans-unit id="7">
+                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
+                <target>Vous devez sélectionner au maximum {{ limit }} choix.|Vous devez sélectionner au maximum {{ limit }} choix.</target>
+            </trans-unit>
+            <trans-unit id="8">
+                <source>One or more of the given values is invalid.</source>
+                <target>Une ou plusieurs des valeurs soumises sont invalides.</target>
+            </trans-unit>
+            <trans-unit id="9">
+                <source>This field was not expected.</source>
+                <target>Ce champ n'a pas été prévu.</target>
+            </trans-unit>
+            <trans-unit id="10">
+                <source>This field is missing.</source>
+                <target>Ce champ est manquant.</target>
+            </trans-unit>
+            <trans-unit id="11">
+                <source>This value is not a valid date.</source>
+                <target>Cette valeur n'est pas une date valide.</target>
+            </trans-unit>
+            <trans-unit id="12">
+                <source>This value is not a valid datetime.</source>
+                <target>Cette valeur n'est pas une date valide.</target>
+            </trans-unit>
+            <trans-unit id="13">
+                <source>This value is not a valid email address.</source>
+                <target>Cette valeur n'est pas une adresse email valide.</target>
+            </trans-unit>
+            <trans-unit id="14">
+                <source>The file could not be found.</source>
+                <target>Le fichier n'a pas été trouvé.</target>
+            </trans-unit>
+            <trans-unit id="15">
+                <source>The file is not readable.</source>
+                <target>Le fichier n'est pas lisible.</target>
+            </trans-unit>
+            <trans-unit id="16">
+                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>Le fichier est trop volumineux ({{ size }} {{ suffix }}). Sa taille ne doit pas dépasser {{ limit }} {{ suffix }}.</target>
+            </trans-unit>
+            <trans-unit id="17">
+                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
+                <target>Le type du fichier est invalide ({{ type }}). Les types autorisés sont {{ types }}.</target>
+            </trans-unit>
+            <trans-unit id="18">
+                <source>This value should be {{ limit }} or less.</source>
+                <target>Cette valeur doit être inférieure ou égale à {{ limit }}.</target>
+            </trans-unit>
+            <trans-unit id="19">
+                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
+                <target>Cette chaine est trop longue. Elle doit avoir au maximum {{ limit }} caractère.|Cette chaine est trop longue. Elle doit avoir au maximum {{ limit }} caractères.</target>
+            </trans-unit>
+            <trans-unit id="20">
+                <source>This value should be {{ limit }} or more.</source>
+                <target>Cette valeur doit être supérieure ou égale à {{ limit }}.</target>
+            </trans-unit>
+            <trans-unit id="21">
+                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
+                <target>Cette chaine est trop courte. Elle doit avoir au minimum {{ limit }} caractère.|Cette chaine est trop courte. Elle doit avoir au minimum {{ limit }} caractères.</target>
+            </trans-unit>
+            <trans-unit id="22">
+                <source>This value should not be blank.</source>
+                <target>Cette valeur ne doit pas être vide.</target>
+            </trans-unit>
+            <trans-unit id="23">
+                <source>This value should not be null.</source>
+                <target>Cette valeur ne doit pas être nulle.</target>
+            </trans-unit>
+            <trans-unit id="24">
+                <source>This value should be null.</source>
+                <target>Cette valeur doit être nulle.</target>
+            </trans-unit>
+            <trans-unit id="25">
+                <source>This value is not valid.</source>
+                <target>Cette valeur n'est pas valide.</target>
+            </trans-unit>
+            <trans-unit id="26">
+                <source>This value is not a valid time.</source>
+                <target>Cette valeur n'est pas une heure valide.</target>
+            </trans-unit>
+            <trans-unit id="27">
+                <source>This value is not a valid URL.</source>
+                <target>Cette valeur n'est pas une URL valide.</target>
+            </trans-unit>
+            <trans-unit id="31">
+                <source>The two values should be equal.</source>
+                <target>Les deux valeurs doivent être identiques.</target>
+            </trans-unit>
+            <trans-unit id="32">
+                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>Le fichier est trop volumineux. Sa taille ne doit pas dépasser {{ limit }} {{ suffix }}.</target>
+            </trans-unit>
+            <trans-unit id="33">
+                <source>The file is too large.</source>
+                <target>Le fichier est trop volumineux.</target>
+            </trans-unit>
+            <trans-unit id="34">
+                <source>The file could not be uploaded.</source>
+                <target>Le téléchargement de ce fichier est impossible.</target>
+            </trans-unit>
+            <trans-unit id="35">
+                <source>This value should be a valid number.</source>
+                <target>Cette valeur doit être un nombre.</target>
+            </trans-unit>
+            <trans-unit id="36">
+                <source>This file is not a valid image.</source>
+                <target>Ce fichier n'est pas une image valide.</target>
+            </trans-unit>
+            <trans-unit id="37">
+                <source>This is not a valid IP address.</source>
+                <target>Cette adresse IP n'est pas valide.</target>
+            </trans-unit>
+            <trans-unit id="38">
+                <source>This value is not a valid language.</source>
+                <target>Cette langue n'est pas valide.</target>
+            </trans-unit>
+            <trans-unit id="39">
+                <source>This value is not a valid locale.</source>
+                <target>Ce paramètre régional n'est pas valide.</target>
+            </trans-unit>
+            <trans-unit id="40">
+                <source>This value is not a valid country.</source>
+                <target>Ce pays n'est pas valide.</target>
+            </trans-unit>
+            <trans-unit id="41">
+                <source>This value is already used.</source>
+                <target>Cette valeur est déjà utilisée.</target>
+            </trans-unit>
+            <trans-unit id="42">
+                <source>The size of the image could not be detected.</source>
+                <target>La taille de l'image n'a pas pu être détectée.</target>
+            </trans-unit>
+            <trans-unit id="43">
+                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
+                <target>La largeur de l'image est trop grande ({{ width }}px). La largeur maximale autorisée est de {{ max_width }}px.</target>
+            </trans-unit>
+            <trans-unit id="44">
+                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
+                <target>La largeur de l'image est trop petite ({{ width }}px). La largeur minimale attendue est de {{ min_width }}px.</target>
+            </trans-unit>
+            <trans-unit id="45">
+                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
+                <target>La hauteur de l'image est trop grande ({{ height }}px). La hauteur maximale autorisée est de {{ max_height }}px.</target>
+            </trans-unit>
+            <trans-unit id="46">
+                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
+                <target>La hauteur de l'image est trop petite ({{ height }}px). La hauteur minimale attendue est de {{ min_height }}px.</target>
+            </trans-unit>
+            <trans-unit id="47">
+                <source>This value should be the user's current password.</source>
+                <target>Cette valeur doit être le mot de passe actuel de l'utilisateur.</target>
+            </trans-unit>
+            <trans-unit id="48">
+                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
+                <target>Cette chaine doit avoir exactement {{ limit }} caractère.|Cette chaine doit avoir exactement {{ limit }} caractères.</target>
+            </trans-unit>
+            <trans-unit id="49">
+                <source>The file was only partially uploaded.</source>
+                <target>Le fichier a été partiellement transféré.</target>
+            </trans-unit>
+            <trans-unit id="50">
+                <source>No file was uploaded.</source>
+                <target>Aucun fichier n'a été transféré.</target>
+            </trans-unit>
+            <trans-unit id="51">
+                <source>No temporary folder was configured in php.ini.</source>
+                <target>Aucun répertoire temporaire n'a été configuré dans le php.ini.</target>
+            </trans-unit>
+            <trans-unit id="52">
+                <source>Cannot write temporary file to disk.</source>
+                <target>Impossible d'écrire le fichier temporaire sur le disque.</target>
+            </trans-unit>
+            <trans-unit id="53">
+                <source>A PHP extension caused the upload to fail.</source>
+                <target>Une extension PHP a empêché le transfert du fichier.</target>
+            </trans-unit>
+            <trans-unit id="54">
+                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
+                <target>Cette collection doit contenir {{ limit }} élément ou plus.|Cette collection doit contenir {{ limit }} éléments ou plus.</target>
+            </trans-unit>
+            <trans-unit id="55">
+                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
+                <target>Cette collection doit contenir {{ limit }} élément ou moins.|Cette collection doit contenir {{ limit }} éléments ou moins.</target>
+            </trans-unit>
+            <trans-unit id="56">
+                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
+                <target>Cette collection doit contenir exactement {{ limit }} élément.|Cette collection doit contenir exactement {{ limit }} éléments.</target>
+            </trans-unit>
+            <trans-unit id="57">
+                <source>Invalid card number.</source>
+                <target>Numéro de carte invalide.</target>
+            </trans-unit>
+            <trans-unit id="58">
+                <source>Unsupported card type or invalid card number.</source>
+                <target>Type de carte non supporté ou numéro invalide.</target>
+            </trans-unit>
+            <trans-unit id="59">
+                <source>This is not a valid International Bank Account Number (IBAN).</source>
+                <target>Le numéro IBAN (International Bank Account Number) saisi n'est pas valide.</target>
+            </trans-unit>
+            <trans-unit id="60">
+                <source>This value is not a valid ISBN-10.</source>
+                <target>Cette valeur n'est pas un code ISBN-10 valide.</target>
+            </trans-unit>
+            <trans-unit id="61">
+                <source>This value is not a valid ISBN-13.</source>
+                <target>Cette valeur n'est pas un code ISBN-13 valide.</target>
+            </trans-unit>
+            <trans-unit id="62">
+                <source>This value is neither a valid ISBN-10 nor a valid ISBN-13.</source>
+                <target>Cette valeur n'est ni un code ISBN-10, ni un code ISBN-13 valide.</target>
+            </trans-unit>
+            <trans-unit id="63">
+                <source>This value is not a valid ISSN.</source>
+                <target>Cette valeur n'est pas un code ISSN valide.</target>
+            </trans-unit>
+            <trans-unit id="64">
+                <source>This value is not a valid currency.</source>
+                <target>Cette valeur n'est pas une devise valide.</target>
+            </trans-unit>
+            <trans-unit id="65">
+                <source>This value should be equal to {{ compared_value }}.</source>
+                <target>Cette valeur doit être égale à {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="66">
+                <source>This value should be greater than {{ compared_value }}.</source>
+                <target>Cette valeur doit être supérieure à {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="67">
+                <source>This value should be greater than or equal to {{ compared_value }}.</source>
+                <target>Cette valeur doit être supérieure ou égale à {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="68">
+                <source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
+                <target>Cette valeur doit être identique à {{ compared_value_type }} {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="69">
+                <source>This value should be less than {{ compared_value }}.</source>
+                <target>Cette valeur doit être inférieure à {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="70">
+                <source>This value should be less than or equal to {{ compared_value }}.</source>
+                <target>Cette valeur doit être inférieure ou égale à {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="71">
+                <source>This value should not be equal to {{ compared_value }}.</source>
+                <target>Cette valeur ne doit pas être égale à {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="72">
+                <source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
+                <target>Cette valeur ne doit pas être identique à {{ compared_value_type }} {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="73">
+                <source>The image ratio is too big ({{ ratio }}). Allowed maximum ratio is {{ max_ratio }}.</source>
+                <target>Le rapport largeur/hauteur de l'image est trop grand ({{ ratio }}). Le rapport maximal autorisé est {{ max_ratio }}.</target>
+            </trans-unit>
+            <trans-unit id="74">
+                <source>The image ratio is too small ({{ ratio }}). Minimum ratio expected is {{ min_ratio }}.</source>
+                <target>Le rapport largeur/hauteur de l'image est trop petit ({{ ratio }}). Le rapport minimal attendu est {{ min_ratio }}.</target>
+            </trans-unit>
+            <trans-unit id="75">
+                <source>The image is square ({{ width }}x{{ height }}px). Square images are not allowed.</source>
+                <target>L'image est carrée ({{ width }}x{{ height }}px). Les images carrées ne sont pas autorisées.</target>
+            </trans-unit>
+            <trans-unit id="76">
+                <source>The image is landscape oriented ({{ width }}x{{ height }}px). Landscape oriented images are not allowed.</source>
+                <target>L'image est au format paysage ({{ width }}x{{ height }}px). Les images au format paysage ne sont pas autorisées.</target>
+            </trans-unit>
+            <trans-unit id="77">
+                <source>The image is portrait oriented ({{ width }}x{{ height }}px). Portrait oriented images are not allowed.</source>
+                <target>L'image est au format portrait ({{ width }}x{{ height }}px). Les images au format portrait ne sont pas autorisées.</target>
+            </trans-unit>
+            <trans-unit id="78">
+                <source>An empty file is not allowed.</source>
+                <target>Un fichier vide n'est pas autorisé.</target>
+            </trans-unit>
+            <trans-unit id="79">
+                <source>The host could not be resolved.</source>
+                <target>Le nom de domaine n'a pas pu être résolu.</target>
+            </trans-unit>
+            <trans-unit id="80">
+                <source>This value does not match the expected {{ charset }} charset.</source>
+                <target>Cette valeur ne correspond pas au jeu de caractères {{ charset }} attendu.</target>
+            </trans-unit>
+        </body>
+    </file>
+</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.gl.xlf b/vendor/symfony/validator/Resources/translations/validators.gl.xlf
new file mode 100644
index 0000000..1d0cc13
--- /dev/null
+++ b/vendor/symfony/validator/Resources/translations/validators.gl.xlf
@@ -0,0 +1,315 @@
+<?xml version="1.0"?>
+<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
+    <file source-language="en" datatype="plaintext" original="file.ext">
+        <body>
+            <trans-unit id="1">
+                <source>This value should be false.</source>
+                <target>Este valor debería ser falso.</target>
+            </trans-unit>
+            <trans-unit id="2">
+                <source>This value should be true.</source>
+                <target>Este valor debería ser verdadeiro.</target>
+            </trans-unit>
+            <trans-unit id="3">
+                <source>This value should be of type {{ type }}.</source>
+                <target>Este valor debería ser de tipo {{ type }}.</target>
+            </trans-unit>
+            <trans-unit id="4">
+                <source>This value should be blank.</source>
+                <target>Este valor debería estar baleiro.</target>
+            </trans-unit>
+            <trans-unit id="5">
+                <source>The value you selected is not a valid choice.</source>
+                <target>O valor seleccionado non é unha opción válida.</target>
+            </trans-unit>
+            <trans-unit id="6">
+                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
+                <target>Debe seleccionar polo menos {{ limit }} opción.|Debe seleccionar polo menos {{ limit }} opcions.</target>
+            </trans-unit>
+            <trans-unit id="7">
+                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
+                <target>Debe seleccionar como máximo {{ limit }} opción.|Debe seleccionar como máximo {{ limit }} opcions.</target>
+            </trans-unit>
+            <trans-unit id="8">
+                <source>One or more of the given values is invalid.</source>
+                <target>Un ou máis dos valores indicados non son válidos.</target>
+            </trans-unit>
+            <trans-unit id="9">
+                <source>This field was not expected.</source>
+                <target>Este campo non era esperado.</target>
+            </trans-unit>
+            <trans-unit id="10">
+                <source>This field is missing.</source>
+                <target>Este campo falta.</target>
+            </trans-unit>
+            <trans-unit id="11">
+                <source>This value is not a valid date.</source>
+                <target>Este valor non é unha data válida.</target>
+            </trans-unit>
+            <trans-unit id="12">
+                <source>This value is not a valid datetime.</source>
+                <target>Este valor non é unha data e hora válidas.</target>
+            </trans-unit>
+            <trans-unit id="13">
+                <source>This value is not a valid email address.</source>
+                <target>Este valor non é unha dirección de correo electrónico válida.</target>
+            </trans-unit>
+            <trans-unit id="14">
+                <source>The file could not be found.</source>
+                <target>Non se puido atopar o arquivo.</target>
+            </trans-unit>
+            <trans-unit id="15">
+                <source>The file is not readable.</source>
+                <target>O arquivo non se pode ler.</target>
+            </trans-unit>
+            <trans-unit id="16">
+                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>O arquivo é demasiado grande ({{ size }} {{ suffix }}). O tamaño máximo permitido é {{ limit }} {{ suffix }}.</target>
+            </trans-unit>
+            <trans-unit id="17">
+                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
+                <target>O tipo mime do arquivo non é válido ({{ type }}). Os tipos mime válidos son {{ types }}.</target>
+            </trans-unit>
+            <trans-unit id="18">
+                <source>This value should be {{ limit }} or less.</source>
+                <target>Este valor debería ser {{ limit }} ou menos.</target>
+            </trans-unit>
+            <trans-unit id="19">
+                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
+                <target>Este valor é demasiado longo. Debería ter {{ limit }} carácter ou menos.|Este valor é demasiado longo. Debería ter {{ limit }} caracteres ou menos.</target>
+            </trans-unit>
+            <trans-unit id="20">
+                <source>This value should be {{ limit }} or more.</source>
+                <target>Este valor debería ser {{ limit }} ou máis.</target>
+            </trans-unit>
+            <trans-unit id="21">
+                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
+                <target>Este valor é demasiado curto. Debería ter {{ limit }} carácter ou máis.|Este valor é demasiado corto. Debería ter {{ limit }} caracteres ou máis.</target>
+            </trans-unit>
+            <trans-unit id="22">
+                <source>This value should not be blank.</source>
+                <target>Este valor non debería estar baleiro.</target>
+            </trans-unit>
+            <trans-unit id="23">
+                <source>This value should not be null.</source>
+                <target>Este valor non debería ser null.</target>
+            </trans-unit>
+            <trans-unit id="24">
+                <source>This value should be null.</source>
+                <target>Este valor debería ser null.</target>
+            </trans-unit>
+            <trans-unit id="25">
+                <source>This value is not valid.</source>
+                <target>Este valor non é válido.</target>
+            </trans-unit>
+            <trans-unit id="26">
+                <source>This value is not a valid time.</source>
+                <target>Este valor non é unha hora válida.</target>
+            </trans-unit>
+            <trans-unit id="27">
+                <source>This value is not a valid URL.</source>
+                <target>Este valor non é unha URL válida.</target>
+            </trans-unit>
+            <trans-unit id="31">
+                <source>The two values should be equal.</source>
+                <target>Os dous valores deberían ser iguais.</target>
+            </trans-unit>
+            <trans-unit id="32">
+                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>O arquivo é demasiado grande. O tamaño máximo permitido é {{ limit }} {{ suffix }}.</target>
+            </trans-unit>
+            <trans-unit id="33">
+                <source>The file is too large.</source>
+                <target>O arquivo é demasiado grande.</target>
+            </trans-unit>
+            <trans-unit id="34">
+                <source>The file could not be uploaded.</source>
+                <target>No se puido cargar o arquivo.</target>
+            </trans-unit>
+            <trans-unit id="35">
+                <source>This value should be a valid number.</source>
+                <target>Este valor debería ser un número válido.</target>
+            </trans-unit>
+            <trans-unit id="36">
+                <source>This file is not a valid image.</source>
+                <target>O arquivo non é unha imaxe válida.</target>
+            </trans-unit>
+            <trans-unit id="37">
+                <source>This is not a valid IP address.</source>
+                <target>Isto non é unha dirección IP válida.</target>
+            </trans-unit>
+            <trans-unit id="38">
+                <source>This value is not a valid language.</source>
+                <target>Este valor non é un idioma válido.</target>
+            </trans-unit>
+            <trans-unit id="39">
+                <source>This value is not a valid locale.</source>
+                <target>Este valor non é unha localización válida.</target>
+            </trans-unit>
+            <trans-unit id="40">
+                <source>This value is not a valid country.</source>
+                <target>Este valor non é un país válido.</target>
+            </trans-unit>
+            <trans-unit id="41">
+                <source>This value is already used.</source>
+                <target>Este valor xa está a ser empregado.</target>
+            </trans-unit>
+            <trans-unit id="42">
+                <source>The size of the image could not be detected.</source>
+                <target>Non se puido determinar o tamaño da imaxe.</target>
+            </trans-unit>
+            <trans-unit id="43">
+                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
+                <target>A largura da imaxe é demasiado grande ({{ width }}px). A largura máxima permitida son {{ max_width }}px.</target>
+            </trans-unit>
+            <trans-unit id="44">
+                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
+                <target>A largura da imaxe é demasiado pequena ({{ width }}px). A largura mínima requerida son {{ min_width }}px.</target>
+            </trans-unit>
+            <trans-unit id="45">
+                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
+                <target>A altura da imaxe é demasiado grande ({{ height }}px). A altura máxima permitida son {{ max_height }}px.</target>
+            </trans-unit>
+            <trans-unit id="46">
+                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
+                <target>A altura da imaxe é demasiado pequena ({{ height }}px). A altura mínima requerida son {{ min_height }}px.</target>
+            </trans-unit>
+            <trans-unit id="47">
+                <source>This value should be the user's current password.</source>
+                <target>Este valor debería ser a contrasinal actual do usuario.</target>
+            </trans-unit>
+            <trans-unit id="48">
+                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
+                <target>Este valor debería ter exactamente {{ limit }} carácter.|Este valor debería ter exactamente {{ limit }} caracteres.</target>
+            </trans-unit>
+            <trans-unit id="49">
+                <source>The file was only partially uploaded.</source>
+                <target>O arquivo foi só subido parcialmente.</target>
+            </trans-unit>
+            <trans-unit id="50">
+                <source>No file was uploaded.</source>
+                <target>Non se subiu ningún arquivo.</target>
+            </trans-unit>
+            <trans-unit id="51">
+                <source>No temporary folder was configured in php.ini.</source>
+                <target>Ningunha carpeta temporal foi configurada en php.ini.</target>
+            </trans-unit>
+            <trans-unit id="52">
+                <source>Cannot write temporary file to disk.</source>
+                <target>Non se puido escribir o arquivo temporal no disco.</target>
+            </trans-unit>
+            <trans-unit id="53">
+                <source>A PHP extension caused the upload to fail.</source>
+                <target>Unha extensión de PHP provocou que a subida fallara.</target>
+            </trans-unit>
+            <trans-unit id="54">
+                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
+                <target>Esta colección debe conter {{ limit }} elemento ou máis.|Esta colección debe conter {{ limit }} elementos ou máis.</target>
+            </trans-unit>
+            <trans-unit id="55">
+                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
+                <target>Esta colección debe conter {{ limit }} elemento ou menos.|Esta colección debe conter {{ limit }} elementos ou menos.</target>
+            </trans-unit>
+            <trans-unit id="56">
+                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
+                <target>Esta colección debe conter exactamente {{ limit }} elemento.|Esta colección debe conter exactamente {{ limit }} elementos.</target>
+            </trans-unit>
+            <trans-unit id="57">
+                <source>Invalid card number.</source>
+                <target>Número de tarxeta non válido.</target>
+            </trans-unit>
+            <trans-unit id="58">
+                <source>Unsupported card type or invalid card number.</source>
+                <target>Tipo de tarxeta non soportado ou número de tarxeta non válido.</target>
+            </trans-unit>
+            <trans-unit id="59">
+                <source>This is not a valid International Bank Account Number (IBAN).</source>
+                <target>Este valor non é un International Bank Account Number (IBAN) válido.</target>
+            </trans-unit>
+            <trans-unit id="60">
+                <source>This value is not a valid ISBN-10.</source>
+                <target>Este valor non é un ISBN-10 válido.</target>
+            </trans-unit>
+            <trans-unit id="61">
+                <source>This value is not a valid ISBN-13.</source>
+                <target>Este valor non é un ISBN-13 válido.</target>
+            </trans-unit>
+            <trans-unit id="62">
+                <source>This value is neither a valid ISBN-10 nor a valid ISBN-13.</source>
+                <target>Este valor non é nin un ISBN-10 válido nin un ISBN-13 válido.</target>
+            </trans-unit>
+            <trans-unit id="63">
+                <source>This value is not a valid ISSN.</source>
+                <target>Este valor non é un ISSN válido.</target>
+            </trans-unit>
+            <trans-unit id="64">
+                <source>This value is not a valid currency.</source>
+                <target>Este valor non é unha moeda válida.</target>
+            </trans-unit>
+            <trans-unit id="65">
+                <source>This value should be equal to {{ compared_value }}.</source>
+                <target>Este valor debería ser igual a {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="66">
+                <source>This value should be greater than {{ compared_value }}.</source>
+                <target>Este valor debería ser maior que {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="67">
+                <source>This value should be greater than or equal to {{ compared_value }}.</source>
+                <target>Este valor debería ser maior ou igual que {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="68">
+                <source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
+                <target>Este valor debería ser identico a {{ compared_value_type }} {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="69">
+                <source>This value should be less than {{ compared_value }}.</source>
+                <target>Este valor debería ser menor que {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="70">
+                <source>This value should be less than or equal to {{ compared_value }}.</source>
+                <target>Este valor debería ser menor ou igual que {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="71">
+                <source>This value should not be equal to {{ compared_value }}.</source>
+                <target>Este valor non debería ser igual a {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="72">
+                <source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
+                <target>Este valor non debería ser identico a {{ compared_value_type }} {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="73">
+                <source>The image ratio is too big ({{ ratio }}). Allowed maximum ratio is {{ max_ratio }}.</source>
+                <target>A proporción da imaxe é demasiado grande ({{ ratio }}). A proporción máxima permitida é {{ max_ratio }}.</target>
+            </trans-unit>
+            <trans-unit id="74">
+                <source>The image ratio is too small ({{ ratio }}). Minimum ratio expected is {{ min_ratio }}.</source>
+                <target>A proporción da é demasiado pequena ({{ ratio }}). A proporción mínima permitida é {{ min_ratio }}.</target>
+            </trans-unit>
+            <trans-unit id="75">
+                <source>The image is square ({{ width }}x{{ height }}px). Square images are not allowed.</source>
+                <target>A imaxe é cadrada ({{ width }}x{{ height }}px). As imáxenes cadradas non están permitidas.</target>
+            </trans-unit>
+            <trans-unit id="76">
+                <source>The image is landscape oriented ({{ width }}x{{ height }}px). Landscape oriented images are not allowed.</source>
+                <target>A imaxe está orientada horizontalmente ({{ width }}x{{ height }}px). As imáxenes orientadas horizontalmente non están permitidas.</target>
+            </trans-unit>
+            <trans-unit id="77">
+                <source>The image is portrait oriented ({{ width }}x{{ height }}px). Portrait oriented images are not allowed.</source>
+                <target>A imaxe está orientada verticalmente ({{ width }}x{{ height }}px). As imáxenes orientadas verticalmente non están permitidas.</target>
+            </trans-unit>
+            <trans-unit id="78">
+                <source>An empty file is not allowed.</source>
+                <target>Non está permitido un arquivo baleiro.</target>
+            </trans-unit>
+            <trans-unit id="79">
+                <source>The host could not be resolved.</source>
+                <target>Non se puido resolver o host.</target>
+            </trans-unit>
+            <trans-unit id="80">
+                <source>This value does not match the expected {{ charset }} charset.</source>
+                <target>A codificación de caracteres para este valor debería ser {{ charset }}.</target>
+            </trans-unit>
+        </body>
+    </file>
+</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.he.xlf b/vendor/symfony/validator/Resources/translations/validators.he.xlf
new file mode 100644
index 0000000..6510514
--- /dev/null
+++ b/vendor/symfony/validator/Resources/translations/validators.he.xlf
@@ -0,0 +1,307 @@
+<?xml version="1.0"?>
+<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
+    <file source-language="en" datatype="plaintext" original="file.ext">
+        <body>
+            <trans-unit id="1">
+                <source>This value should be false.</source>
+                <target>הערך צריך להיות שקר.</target>
+            </trans-unit>
+            <trans-unit id="2">
+                <source>This value should be true.</source>
+                <target>הערך צריך להיות אמת.</target>
+            </trans-unit>
+            <trans-unit id="3">
+                <source>This value should be of type {{ type }}.</source>
+                <target>הערך צריך להיות מסוג {{ type }}.</target>
+            </trans-unit>
+            <trans-unit id="4">
+                <source>This value should be blank.</source>
+                <target>הערך צריך להיות ריק.</target>
+            </trans-unit>
+            <trans-unit id="5">
+                <source>The value you selected is not a valid choice.</source>
+                <target>הערך שבחרת אינו חוקי.</target>
+            </trans-unit>
+            <trans-unit id="6">
+                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
+                <target>אתה צריך לבחור לפחות {{ limit }} אפשרויות.|אתה צריך לבחור לפחות {{ limit }} אפשרויות.</target>
+            </trans-unit>
+            <trans-unit id="7">
+                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
+                <target>אתה צריך לבחור לכל היותר {{ limit }} אפשרויות.|אתה צריך לבחור לכל היותר {{ limit }} אפשרויות.</target>
+            </trans-unit>
+            <trans-unit id="8">
+                <source>One or more of the given values is invalid.</source>
+                <target>אחד או יותר מהערכים אינו חוקי.</target>
+            </trans-unit>
+            <trans-unit id="9">
+                <source>This field was not expected.</source>
+                <target>שדה זה לא היה צפוי</target>
+            </trans-unit>
+            <trans-unit id="10">
+                <source>This field is missing.</source>
+                <target>שדה זה חסר.</target>
+            </trans-unit>
+            <trans-unit id="11">
+                <source>This value is not a valid date.</source>
+                <target>הערך אינו תאריך חוקי.</target>
+            </trans-unit>
+            <trans-unit id="12">
+                <source>This value is not a valid datetime.</source>
+                <target>הערך אינו תאריך ושעה חוקיים.</target>
+            </trans-unit>
+            <trans-unit id="13">
+                <source>This value is not a valid email address.</source>
+                <target>כתובת המייל אינה תקינה.</target>
+            </trans-unit>
+            <trans-unit id="14">
+                <source>The file could not be found.</source>
+                <target>הקובץ לא נמצא.</target>
+            </trans-unit>
+            <trans-unit id="15">
+                <source>The file is not readable.</source>
+                <target>לא ניתן לקרוא את הקובץ.</target>
+            </trans-unit>
+            <trans-unit id="16">
+                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>הקובץ גדול מדי ({{ size }} {{ suffix }}). הגודל המרבי המותר הוא {{ limit }} {{ suffix }}.</target>
+            </trans-unit>
+            <trans-unit id="17">
+                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
+                <target>סוג MIME של הקובץ אינו חוקי ({{ type }}). מותרים סוגי MIME {{ types }}.</target>
+            </trans-unit>
+            <trans-unit id="18">
+                <source>This value should be {{ limit }} or less.</source>
+                <target>הערך צריל להכיל {{ limit }} תווים לכל היותר.</target>
+            </trans-unit>
+            <trans-unit id="19">
+                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
+                <target>הערך ארוך מידי. הוא צריך להכיל {{ limit }} תווים לכל היותר.|הערך ארוך מידי. הוא צריך להכיל {{ limit }} תווים לכל היותר.</target>
+            </trans-unit>
+            <trans-unit id="20">
+                <source>This value should be {{ limit }} or more.</source>
+                <target>הערך צריך להכיל {{ limit }} תווים לפחות.</target>
+            </trans-unit>
+            <trans-unit id="21">
+                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
+                <target>הערך קצר מידיץ הוא צריך להכיל {{ limit }} תווים לפחות.|הערך קצר מידיץ הוא צריך להכיל {{ limit }} תווים לפחות.</target>
+            </trans-unit>
+            <trans-unit id="22">
+                <source>This value should not be blank.</source>
+                <target>הערך לא אמור להיות ריק.</target>
+            </trans-unit>
+            <trans-unit id="23">
+                <source>This value should not be null.</source>
+                <target>הערך לא אמור להיות ריק.</target>
+            </trans-unit>
+            <trans-unit id="24">
+                <source>This value should be null.</source>
+                <target>הערך צריך להיות ריק.</target>
+            </trans-unit>
+            <trans-unit id="25">
+                <source>This value is not valid.</source>
+                <target>הערך אינו חוקי.</target>
+            </trans-unit>
+            <trans-unit id="26">
+                <source>This value is not a valid time.</source>
+                <target>הערך אינו זמן תקין.</target>
+            </trans-unit>
+            <trans-unit id="27">
+                <source>This value is not a valid URL.</source>
+                <target>זאת אינה כתובת אתר תקינה.</target>
+            </trans-unit>
+            <trans-unit id="31">
+                <source>The two values should be equal.</source>
+                <target>שני הערכים צריכים להיות שווים.</target>
+            </trans-unit>
+            <trans-unit id="32">
+                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>הקובץ גדול מדי. הגודל המרבי המותר הוא {{ limit }} {{ suffix }}.</target>
+            </trans-unit>
+            <trans-unit id="33">
+                <source>The file is too large.</source>
+                <target>הקובץ גדול מדי.</target>
+            </trans-unit>
+            <trans-unit id="34">
+                <source>The file could not be uploaded.</source>
+                <target>לא ניתן לעלות את הקובץ.</target>
+            </trans-unit>
+            <trans-unit id="35">
+                <source>This value should be a valid number.</source>
+                <target>הערך צריך להיות מספר חוקי.</target>
+            </trans-unit>
+            <trans-unit id="36">
+                <source>This file is not a valid image.</source>
+                <target>הקובץ הזה אינו תמונה תקינה.</target>
+            </trans-unit>
+            <trans-unit id="37">
+                <source>This is not a valid IP address.</source>
+                <target>זו אינה כתובת IP חוקית.</target>
+            </trans-unit>
+            <trans-unit id="38">
+                <source>This value is not a valid language.</source>
+                <target>הערך אינו שפה חוקית.</target>
+            </trans-unit>
+            <trans-unit id="39">
+                <source>This value is not a valid locale.</source>
+                <target>הערך אינו אזור תקף.</target>
+            </trans-unit>
+            <trans-unit id="40">
+                <source>This value is not a valid country.</source>
+                <target>הערך אינו ארץ חוקית.</target>
+            </trans-unit>
+            <trans-unit id="41">
+                <source>This value is already used.</source>
+                <target>הערך כבר בשימוש.</target>
+            </trans-unit>
+            <trans-unit id="42">
+                <source>The size of the image could not be detected.</source>
+                <target>לא ניתן לקבוע את גודל התמונה.</target>
+            </trans-unit>
+            <trans-unit id="43">
+                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
+                <target>רוחב התמונה גדול מדי ({{ width }}px). הרוחב המקסימלי הוא {{ max_width }}px.</target>
+            </trans-unit>
+            <trans-unit id="44">
+                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
+                <target>רוחב התמונה קטן מדי ({{ width }}px). הרוחב המינימלי הוא {{ min_width }}px.</target>
+            </trans-unit>
+            <trans-unit id="45">
+                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
+                <target>גובה התמונה גדול מדי ({{ height }}px). הגובה המקסימלי הוא {{ max_height }}px.</target>
+            </trans-unit>
+            <trans-unit id="46">
+                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
+                <target>גובה התמונה קטן מדי ({{ height }}px). הגובה המינימלי הוא {{ min_height }}px.</target>
+            </trans-unit>
+            <trans-unit id="47">
+                <source>This value should be the user's current password.</source>
+                <target>הערך צריך להיות סיסמת המשתמש הנוכחי.</target>
+            </trans-unit>
+            <trans-unit id="48">
+                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
+                <target>הערך צריך להיות בדיוק {{ limit }} תווים.|הערך צריך להיות בדיוק {{ limit }} תווים.</target>
+            </trans-unit>
+            <trans-unit id="49">
+                <source>The file was only partially uploaded.</source>
+                <target>הקובץ הועלה באופן חלקי.</target>
+            </trans-unit>
+            <trans-unit id="50">
+                <source>No file was uploaded.</source>
+                <target>הקובץ לא הועלה.</target>
+            </trans-unit>
+            <trans-unit id="51">
+                <source>No temporary folder was configured in php.ini.</source>
+                <target>לא הוגדרה תיקייה זמנית ב php.ini.</target>
+            </trans-unit>
+            <trans-unit id="52">
+                <source>Cannot write temporary file to disk.</source>
+                <target>לא ניתן לכתוב קובץ זמני לדיסק.</target>
+            </trans-unit>
+            <trans-unit id="53">
+                <source>A PHP extension caused the upload to fail.</source>
+                <target>סיומת PHP גרם להעלאה להיכשל.</target>
+            </trans-unit>
+            <trans-unit id="54">
+                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
+                <target>האוסף אמור להכיל {{ limit }} אלמנטים או יותר.|האוסף אמור להכיל {{ limit }} אלמנטים או יותר.</target>
+            </trans-unit>
+            <trans-unit id="55">
+                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
+                <target>האוסף אמור להכיל {{ limit }} אלמנטים או פחות.|האוסף אמור להכיל {{ limit }} אלמנטים או פחות.</target>
+            </trans-unit>
+            <trans-unit id="56">
+                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
+                <target>האוסף צריך להכיל בדיוק {{ limit }} אלמנטים.|האוסף צריך להכיל בדיוק {{ limit }} אלמנטים.</target>
+            </trans-unit>
+            <trans-unit id="57">
+                <source>Invalid card number.</source>
+                <target>מספר הכרטיס אינו חוקי.</target>
+            </trans-unit>
+            <trans-unit id="58">
+                <source>Unsupported card type or invalid card number.</source>
+                <target>סוג הכרטיס אינו נתמך או לא חוקי.</target>
+            </trans-unit>
+            <trans-unit id="59">
+                <source>This is not a valid International Bank Account Number (IBAN).</source>
+                <target>This is not a valid International Bank Account Number (IBAN).</target>
+            </trans-unit>
+            <trans-unit id="60">
+                <source>This value is not a valid ISBN-10.</source>
+                <target>This value is not a valid ISBN-10.</target>
+            </trans-unit>
+            <trans-unit id="61">
+                <source>This value is not a valid ISBN-13.</source>
+                <target>This value is not a valid ISBN-13.</target>
+            </trans-unit>
+            <trans-unit id="62">
+                <source>This value is neither a valid ISBN-10 nor a valid ISBN-13.</source>
+                <target>This value is neither a valid ISBN-10 nor a valid ISBN-13.</target>
+            </trans-unit>
+            <trans-unit id="63">
+                <source>This value is not a valid ISSN.</source>
+                <target>This value is not a valid ISSN.</target>
+            </trans-unit>
+            <trans-unit id="64">
+                <source>This value is not a valid currency.</source>
+                <target>This value is not a valid currency.</target>
+            </trans-unit>
+            <trans-unit id="65">
+                <source>This value should be equal to {{ compared_value }}.</source>
+                <target>This value should be equal to {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="66">
+                <source>This value should be greater than {{ compared_value }}.</source>
+                <target>This value should be greater than {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="67">
+                <source>This value should be greater than or equal to {{ compared_value }}.</source>
+                <target>This value should be greater than or equal to {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="68">
+                <source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
+                <target>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="69">
+                <source>This value should be less than {{ compared_value }}.</source>
+                <target>This value should be less than {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="70">
+                <source>This value should be less than or equal to {{ compared_value }}.</source>
+                <target>This value should be less than or equal to {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="71">
+                <source>This value should not be equal to {{ compared_value }}.</source>
+                <target>This value should not be equal to {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="72">
+                <source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
+                <target>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="73">
+                <source>The image ratio is too big ({{ ratio }}). Allowed maximum ratio is {{ max_ratio }}.</source>
+                <target>The image ratio is too big ({{ ratio }}). Allowed maximum ratio is {{ max_ratio }}.</target>
+            </trans-unit>
+            <trans-unit id="74">
+                <source>The image ratio is too small ({{ ratio }}). Minimum ratio expected is {{ min_ratio }}.</source>
+                <target>The image ratio is too small ({{ ratio }}). Minimum ratio expected is {{ min_ratio }}.</target>
+            </trans-unit>
+            <trans-unit id="75">
+                <source>The image is square ({{ width }}x{{ height }}px). Square images are not allowed.</source>
+                <target>The image is square ({{ width }}x{{ height }}px). Square images are not allowed.</target>
+            </trans-unit>
+            <trans-unit id="76">
+                <source>The image is landscape oriented ({{ width }}x{{ height }}px). Landscape oriented images are not allowed.</source>
+                <target>The image is landscape oriented ({{ width }}x{{ height }}px). Landscape oriented images are not allowed.</target>
+            </trans-unit>
+            <trans-unit id="77">
+                <source>The image is portrait oriented ({{ width }}x{{ height }}px). Portrait oriented images are not allowed.</source>
+                <target>The image is portrait oriented ({{ width }}x{{ height }}px). Portrait oriented images are not allowed.</target>
+            </trans-unit>
+            <trans-unit id="78">
+                <source>An empty file is not allowed.</source>
+                <target>An empty file is not allowed.</target>
+            </trans-unit>
+        </body>
+    </file>
+</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.hr.xlf b/vendor/symfony/validator/Resources/translations/validators.hr.xlf
new file mode 100644
index 0000000..a11e825
--- /dev/null
+++ b/vendor/symfony/validator/Resources/translations/validators.hr.xlf
@@ -0,0 +1,283 @@
+<?xml version="1.0"?>
+<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
+    <file source-language="en" datatype="plaintext" original="file.ext">
+        <body>
+            <trans-unit id="1">
+                <source>This value should be false.</source>
+                <target>Ova vrijednost treba biti netočna (false).</target>
+            </trans-unit>
+            <trans-unit id="2">
+                <source>This value should be true.</source>
+                <target>Ova vrijednost treba biti točna (true).</target>
+            </trans-unit>
+            <trans-unit id="3">
+                <source>This value should be of type {{ type }}.</source>
+                <target>Ova vrijednost treba biti tipa {{ type }}.</target>
+            </trans-unit>
+            <trans-unit id="4">
+                <source>This value should be blank.</source>
+                <target>Ova vrijednost treba biti prazna.</target>
+            </trans-unit>
+            <trans-unit id="5">
+                <source>The value you selected is not a valid choice.</source>
+                <target>Ova vrijednost treba biti jedna od ponuđenih.</target>
+            </trans-unit>
+            <trans-unit id="6">
+                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
+                <target>Izaberite barem {{ limit }} mogućnosti.</target>
+            </trans-unit>
+            <trans-unit id="7">
+                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
+                <target>Izaberite najviše {{ limit }} mogućnosti.</target>
+            </trans-unit>
+            <trans-unit id="8">
+                <source>One or more of the given values is invalid.</source>
+                <target>Jedna ili više danih vrijednosti nije ispravna.</target>
+            </trans-unit>
+            <trans-unit id="9">
+                <source>This field was not expected.</source>
+                <target>Ovo polje nije očekivalo.</target>
+            </trans-unit>
+            <trans-unit id="10">
+                <source>This field is missing.</source>
+                <target>Ovo polje nedostaje.</target>
+            </trans-unit>
+            <trans-unit id="11">
+                <source>This value is not a valid date.</source>
+                <target>Ova vrijednost nije ispravan datum.</target>
+            </trans-unit>
+            <trans-unit id="12">
+                <source>This value is not a valid datetime.</source>
+                <target>Ova vrijednost nije ispravan datum-vrijeme.</target>
+            </trans-unit>
+            <trans-unit id="13">
+                <source>This value is not a valid email address.</source>
+                <target>Ova vrijednost nije ispravna e-mail adresa.</target>
+            </trans-unit>
+            <trans-unit id="14">
+                <source>The file could not be found.</source>
+                <target>Datoteka ne može biti pronađena.</target>
+            </trans-unit>
+            <trans-unit id="15">
+                <source>The file is not readable.</source>
+                <target>Datoteka nije čitljiva.</target>
+            </trans-unit>
+            <trans-unit id="16">
+                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>Datoteka je prevelika ({{ size }} {{ suffix }}). Najveća dozvoljena veličina je {{ limit }} {{ suffix }}.</target>
+            </trans-unit>
+            <trans-unit id="17">
+                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
+                <target>Mime tip datoteke nije ispravan ({{ type }}). Dozvoljeni mime tipovi su {{ types }}.</target>
+            </trans-unit>
+            <trans-unit id="18">
+                <source>This value should be {{ limit }} or less.</source>
+                <target>Ova vrijednost treba biti {{ limit }} ili manje.</target>
+            </trans-unit>
+            <trans-unit id="19">
+                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
+                <target>Ova vrijednost je predugačka. Treba imati {{ limit }} znakova ili manje.</target>
+            </trans-unit>
+            <trans-unit id="20">
+                <source>This value should be {{ limit }} or more.</source>
+                <target>Ova vrijednost treba biti {{ limit }} ili više.</target>
+            </trans-unit>
+            <trans-unit id="21">
+                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
+                <target>Ova vrijednost je prekratka. Treba imati {{ limit }} znakova ili više.</target>
+            </trans-unit>
+            <trans-unit id="22">
+                <source>This value should not be blank.</source>
+                <target>Ova vrijednost ne smije biti prazna.</target>
+            </trans-unit>
+            <trans-unit id="23">
+                <source>This value should not be null.</source>
+                <target>Ova vrijednost ne smije biti null.</target>
+            </trans-unit>
+            <trans-unit id="24">
+                <source>This value should be null.</source>
+                <target>Ova vrijednost treba biti null.</target>
+            </trans-unit>
+            <trans-unit id="25">
+                <source>This value is not valid.</source>
+                <target>Ova vrijednost nije ispravna.</target>
+            </trans-unit>
+            <trans-unit id="26">
+                <source>This value is not a valid time.</source>
+                <target>Ova vrijednost nije ispravno vrijeme.</target>
+            </trans-unit>
+            <trans-unit id="27">
+                <source>This value is not a valid URL.</source>
+                <target>Ova vrijednost nije ispravan URL.</target>
+            </trans-unit>
+            <trans-unit id="31">
+                <source>The two values should be equal.</source>
+                <target>Obje vrijednosti trebaju biti jednake.</target>
+            </trans-unit>
+            <trans-unit id="32">
+                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>Ova datoteka je prevelika. Najveća dozvoljena veličina je {{ limit }} {{ suffix }}.</target>
+            </trans-unit>
+            <trans-unit id="33">
+                <source>The file is too large.</source>
+                <target>Ova datoteka je prevelika.</target>
+            </trans-unit>
+            <trans-unit id="34">
+                <source>The file could not be uploaded.</source>
+                <target>Ova datoteka ne može biti prenesena.</target>
+            </trans-unit>
+            <trans-unit id="35">
+                <source>This value should be a valid number.</source>
+                <target>Ova vrijednost treba biti ispravan broj.</target>
+            </trans-unit>
+            <trans-unit id="36">
+                <source>This file is not a valid image.</source>
+                <target>Ova datoteka nije ispravna slika.</target>
+            </trans-unit>
+            <trans-unit id="37">
+                <source>This is not a valid IP address.</source>
+                <target>Ovo nije ispravna IP adresa.</target>
+            </trans-unit>
+            <trans-unit id="38">
+                <source>This value is not a valid language.</source>
+                <target>Ova vrijednost nije ispravan jezik.</target>
+            </trans-unit>
+            <trans-unit id="39">
+                <source>This value is not a valid locale.</source>
+                <target>Ova vrijednost nije ispravana regionalna oznaka.</target>
+            </trans-unit>
+            <trans-unit id="40">
+                <source>This value is not a valid country.</source>
+                <target>Ova vrijednost nije ispravna zemlja.</target>
+            </trans-unit>
+            <trans-unit id="41">
+                <source>This value is already used.</source>
+                <target>Ova vrijednost je već iskorištena.</target>
+            </trans-unit>
+            <trans-unit id="42">
+                <source>The size of the image could not be detected.</source>
+                <target>Veličina slike se ne može odrediti.</target>
+            </trans-unit>
+            <trans-unit id="43">
+                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
+                <target>Širina slike je prevelika ({{ width }}px). Najveća dozvoljena širina je {{ max_width }}px.</target>
+            </trans-unit>
+            <trans-unit id="44">
+                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
+                <target>Širina slike je premala ({{ width }}px). Najmanja dozvoljena širina je {{ min_width }}px.</target>
+            </trans-unit>
+            <trans-unit id="45">
+                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
+                <target>Visina slike je prevelika ({{ height }}px). Najveća dozvoljena visina je {{ max_height }}px.</target>
+            </trans-unit>
+            <trans-unit id="46">
+                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
+                <target>Visina slike je premala ({{ height }}px). Najmanja dozvoljena visina je {{ min_height }}px.</target>
+            </trans-unit>
+            <trans-unit id="47">
+                <source>This value should be the user's current password.</source>
+                <target>Ova vrijednost treba biti trenutna korisnička lozinka.</target>
+            </trans-unit>
+            <trans-unit id="48">
+                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
+                <target>Ova vrijednost treba imati točno {{ limit }} znakova.</target>
+            </trans-unit>
+            <trans-unit id="49">
+                <source>The file was only partially uploaded.</source>
+                <target>Datoteka je samo djelomično prenesena.</target>
+            </trans-unit>
+            <trans-unit id="50">
+                <source>No file was uploaded.</source>
+                <target>Niti jedna datoteka nije prenesena.</target>
+            </trans-unit>
+            <trans-unit id="51">
+                <source>No temporary folder was configured in php.ini.</source>
+                <target>U php.ini datoteci nije konfiguriran privremeni folder.</target>
+            </trans-unit>
+            <trans-unit id="52">
+                <source>Cannot write temporary file to disk.</source>
+                <target>Ne mogu zapisati privremenu datoteku na disk.</target>
+            </trans-unit>
+            <trans-unit id="53">
+                <source>A PHP extension caused the upload to fail.</source>
+                <target>Prijenos datoteke nije uspio zbog PHP ekstenzije.</target>
+            </trans-unit>
+            <trans-unit id="54">
+                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
+                <target>Ova kolekcija treba sadržavati {{ limit }} ili više elemenata.|Ova kolekcija treba sadržavati {{ limit }} ili više elemenata.|Ova kolekcija treba sadržavati {{ limit }} ili više elemenata.</target>
+            </trans-unit>
+            <trans-unit id="55">
+                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
+                <target>Ova kolekcija treba sadržavati {{ limit }} ili manje elemenata.|Ova kolekcija treba sadržavati {{ limit }} ili manje elemenata.|Ova kolekcija treba sadržavati {{ limit }} ili manje elemenata.</target>
+            </trans-unit>
+            <trans-unit id="56">
+                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
+                <target>Ova kolekcija treba sadržavati točno {{ limit }} element.|Ova kolekcija treba sadržavati točno {{ limit }} elementa.|Ova kolekcija treba sadržavati točno {{ limit }} elemenata.</target>
+            </trans-unit>
+            <trans-unit id="57">
+                <source>Invalid card number.</source>
+                <target>Neispravan broj kartice.</target>
+            </trans-unit>
+            <trans-unit id="58">
+                <source>Unsupported card type or invalid card number.</source>
+                <target>Neispravan broj kartice ili tip kartice nije podržan.</target>
+            </trans-unit>
+            <trans-unit id="59">
+                <source>This is not a valid International Bank Account Number (IBAN).</source>
+                <target>Ova vrijednost nije ispravan međunarodni broj bankovnog računa (IBAN).</target>
+            </trans-unit>
+            <trans-unit id="60">
+                <source>This value is not a valid ISBN-10.</source>
+                <target>Ova vrijednost nije ispravan ISBN-10.</target>
+            </trans-unit>
+            <trans-unit id="61">
+                <source>This value is not a valid ISBN-13.</source>
+                <target>Ova vrijednost nije ispravan ISBN-13.</target>
+            </trans-unit>
+            <trans-unit id="62">
+                <source>This value is neither a valid ISBN-10 nor a valid ISBN-13.</source>
+                <target>Ova vrijednost nije ispravan ISBN-10 niti ISBN-13.</target>
+            </trans-unit>
+            <trans-unit id="63">
+                <source>This value is not a valid ISSN.</source>
+                <target>Ova vrijednost nije ispravan ISSN.</target>
+            </trans-unit>
+            <trans-unit id="64">
+                <source>This value is not a valid currency.</source>
+                <target>Ova vrijednost nije ispravna valuta.</target>
+            </trans-unit>
+            <trans-unit id="65">
+                <source>This value should be equal to {{ compared_value }}.</source>
+                <target>Ova vrijednost bi trebala biti jednaka {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="66">
+                <source>This value should be greater than {{ compared_value }}.</source>
+                <target>Ova vrijednost bi trebala biti veća od {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="67">
+                <source>This value should be greater than or equal to {{ compared_value }}.</source>
+                <target>Ova vrijednost bi trebala biti veća ili jednaka od {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="68">
+                <source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
+                <target>Ova vrijednost bi trebala biti {{ compared_value_type }} {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="69">
+                <source>This value should be less than {{ compared_value }}.</source>
+                <target>Ova vrijednost bi trebala biti manja od {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="70">
+                <source>This value should be less than or equal to {{ compared_value }}.</source>
+                <target>Ova vrijednost bi trebala biti manja ili jednaka {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="71">
+                <source>This value should not be equal to {{ compared_value }}.</source>
+                <target>Ova vrijednost ne bi trebala biti {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="72">
+                <source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
+                <target>Ova vrijednost ne bi trebala biti {{ compared_value_type }} {{ compared_value }}.</target>
+            </trans-unit>
+        </body>
+    </file>
+</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.hu.xlf b/vendor/symfony/validator/Resources/translations/validators.hu.xlf
new file mode 100644
index 0000000..a972c02
--- /dev/null
+++ b/vendor/symfony/validator/Resources/translations/validators.hu.xlf
@@ -0,0 +1,315 @@
+<?xml version="1.0"?>
+<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
+    <file source-language="en" datatype="plaintext" original="file.ext">
+        <body>
+            <trans-unit id="1">
+                <source>This value should be false.</source>
+                <target>Ennek az értéknek hamisnak kell lennie.</target>
+            </trans-unit>
+            <trans-unit id="2">
+                <source>This value should be true.</source>
+                <target>Ennek az értéknek igaznak kell lennie.</target>
+            </trans-unit>
+            <trans-unit id="3">
+                <source>This value should be of type {{ type }}.</source>
+                <target>Ennek az értéknek {{ type }} típusúnak kell lennie.</target>
+            </trans-unit>
+            <trans-unit id="4">
+                <source>This value should be blank.</source>
+                <target>Ennek az értéknek üresnek kell lennie.</target>
+            </trans-unit>
+            <trans-unit id="5">
+                <source>The value you selected is not a valid choice.</source>
+                <target>A választott érték érvénytelen.</target>
+            </trans-unit>
+            <trans-unit id="6">
+                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
+                <target>Legalább {{ limit }} értéket kell kiválasztani.|Legalább {{ limit }} értéket kell kiválasztani.</target>
+            </trans-unit>
+            <trans-unit id="7">
+                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
+                <target>Legfeljebb {{ limit }} értéket lehet kiválasztani.|Legfeljebb {{ limit }} értéket lehet kiválasztani.</target>
+            </trans-unit>
+            <trans-unit id="8">
+                <source>One or more of the given values is invalid.</source>
+                <target>A megadott értékek közül legalább egy érvénytelen.</target>
+            </trans-unit>
+            <trans-unit id="9">
+                <source>This field was not expected.</source>
+                <target>Nem várt mező.</target>
+            </trans-unit>
+            <trans-unit id="10">
+                <source>This field is missing.</source>
+                <target>Ez a mező hiányzik.</target>
+            </trans-unit>
+            <trans-unit id="11">
+                <source>This value is not a valid date.</source>
+                <target>Ez az érték nem egy érvényes dátum.</target>
+            </trans-unit>
+            <trans-unit id="12">
+                <source>This value is not a valid datetime.</source>
+                <target>Ez az érték nem egy érvényes időpont.</target>
+            </trans-unit>
+            <trans-unit id="13">
+                <source>This value is not a valid email address.</source>
+                <target>Ez az érték nem egy érvényes e-mail cím.</target>
+            </trans-unit>
+            <trans-unit id="14">
+                <source>The file could not be found.</source>
+                <target>A fájl nem található.</target>
+            </trans-unit>
+            <trans-unit id="15">
+                <source>The file is not readable.</source>
+                <target>A fájl nem olvasható.</target>
+            </trans-unit>
+            <trans-unit id="16">
+                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>A fájl túl nagy ({{ size }} {{ suffix }}). A legnagyobb megengedett méret {{ limit }} {{ suffix }}.</target>
+            </trans-unit>
+            <trans-unit id="17">
+                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
+                <target>A fájl MIME típusa érvénytelen ({{ type }}). Az engedélyezett MIME típusok: {{ types }}.</target>
+            </trans-unit>
+            <trans-unit id="18">
+                <source>This value should be {{ limit }} or less.</source>
+                <target>Ez az érték legfeljebb {{ limit }} lehet.</target>
+            </trans-unit>
+            <trans-unit id="19">
+                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
+                <target>Ez az érték túl hosszú. Legfeljebb {{ limit }} karaktert tartalmazhat.|Ez az érték túl hosszú. Legfeljebb {{ limit }} karaktert tartalmazhat.</target>
+            </trans-unit>
+            <trans-unit id="20">
+                <source>This value should be {{ limit }} or more.</source>
+                <target>Ez az érték legalább {{ limit }} kell, hogy legyen.</target>
+            </trans-unit>
+            <trans-unit id="21">
+                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
+                <target>Ez az érték túl rövid. Legalább {{ limit }} karaktert kell tartalmaznia.|Ez az érték túl rövid. Legalább {{ limit }} karaktert kell tartalmaznia.</target>
+            </trans-unit>
+            <trans-unit id="22">
+                <source>This value should not be blank.</source>
+                <target>Ez az érték nem lehet üres.</target>
+            </trans-unit>
+            <trans-unit id="23">
+                <source>This value should not be null.</source>
+                <target>Ez az érték nem lehet null.</target>
+            </trans-unit>
+            <trans-unit id="24">
+                <source>This value should be null.</source>
+                <target>Ennek az értéknek nullnak kell lennie.</target>
+            </trans-unit>
+            <trans-unit id="25">
+                <source>This value is not valid.</source>
+                <target>Ez az érték nem érvényes.</target>
+            </trans-unit>
+            <trans-unit id="26">
+                <source>This value is not a valid time.</source>
+                <target>Ez az érték nem egy érvényes időpont.</target>
+            </trans-unit>
+            <trans-unit id="27">
+                <source>This value is not a valid URL.</source>
+                <target>Ez az érték nem egy érvényes URL.</target>
+            </trans-unit>
+            <trans-unit id="31">
+                <source>The two values should be equal.</source>
+                <target>A két értéknek azonosnak kell lennie.</target>
+            </trans-unit>
+            <trans-unit id="32">
+                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>A fájl túl nagy. A megengedett maximális méret: {{ limit }} {{ suffix }}.</target>
+            </trans-unit>
+            <trans-unit id="33">
+                <source>The file is too large.</source>
+                <target>A fájl túl nagy.</target>
+            </trans-unit>
+            <trans-unit id="34">
+                <source>The file could not be uploaded.</source>
+                <target>A fájl nem tölthető fel.</target>
+            </trans-unit>
+            <trans-unit id="35">
+                <source>This value should be a valid number.</source>
+                <target>Ennek az értéknek érvényes számnak kell lennie.</target>
+            </trans-unit>
+            <trans-unit id="36">
+                <source>This file is not a valid image.</source>
+                <target>Ez a fájl nem egy érvényes kép.</target>
+            </trans-unit>
+            <trans-unit id="37">
+                <source>This is not a valid IP address.</source>
+                <target>Ez az érték nem egy érvényes IP cím.</target>
+            </trans-unit>
+            <trans-unit id="38">
+                <source>This value is not a valid language.</source>
+                <target>Ez az érték nem egy érvényes nyelv.</target>
+            </trans-unit>
+            <trans-unit id="39">
+                <source>This value is not a valid locale.</source>
+                <target>Ez az érték nem egy érvényes területi beállítás.</target>
+            </trans-unit>
+            <trans-unit id="40">
+                <source>This value is not a valid country.</source>
+                <target>Ez az érték nem egy érvényes ország.</target>
+            </trans-unit>
+            <trans-unit id="41">
+                <source>This value is already used.</source>
+                <target>Ez az érték már használatban van.</target>
+            </trans-unit>
+            <trans-unit id="42">
+                <source>The size of the image could not be detected.</source>
+                <target>A kép méretét nem lehet megállapítani.</target>
+            </trans-unit>
+            <trans-unit id="43">
+                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
+                <target>A kép szélessége túl nagy ({{ width }}px). A megengedett legnagyobb szélesség {{ max_width }}px.</target>
+            </trans-unit>
+            <trans-unit id="44">
+                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
+                <target>A kép szélessége túl kicsi ({{ width }}px). Az elvárt legkisebb szélesség {{ min_width }}px.</target>
+            </trans-unit>
+            <trans-unit id="45">
+                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
+                <target>A kép magassága túl nagy ({{ height }}px). A megengedett legnagyobb magasság {{ max_height }}px.</target>
+            </trans-unit>
+            <trans-unit id="46">
+                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
+                <target>A kép magassága túl kicsi ({{ height }}px). Az elvárt legkisebb magasság {{ min_height }}px.</target>
+            </trans-unit>
+            <trans-unit id="47">
+                <source>This value should be the user's current password.</source>
+                <target>Ez az érték a felhasználó jelenlegi jelszavával kell megegyezzen.</target>
+            </trans-unit>
+            <trans-unit id="48">
+                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
+                <target>Ennek az értéknek pontosan {{ limit }} karaktert kell tartalmaznia.|Ennek az értéknek pontosan {{ limit }} karaktert kell tartalmaznia.</target>
+            </trans-unit>
+            <trans-unit id="49">
+                <source>The file was only partially uploaded.</source>
+                <target>A fájl csak részben lett feltöltve.</target>
+            </trans-unit>
+            <trans-unit id="50">
+                <source>No file was uploaded.</source>
+                <target>Nem lett fájl feltöltve.</target>
+            </trans-unit>
+            <trans-unit id="51">
+                <source>No temporary folder was configured in php.ini.</source>
+                <target>Nincs ideiglenes könyvtár beállítva a php.ini-ben.</target>
+            </trans-unit>
+            <trans-unit id="52">
+                <source>Cannot write temporary file to disk.</source>
+                <target>Az ideiglenes fájl nem írható a lemezre.</target>
+            </trans-unit>
+            <trans-unit id="53">
+                <source>A PHP extension caused the upload to fail.</source>
+                <target>Egy PHP bővítmény miatt a feltöltés nem sikerült.</target>
+            </trans-unit>
+            <trans-unit id="54">
+                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
+                <target>Ennek a gyűjteménynek legalább {{ limit }} elemet kell tartalmaznia.|Ennek a gyűjteménynek legalább {{ limit }} elemet kell tartalmaznia.</target>
+            </trans-unit>
+            <trans-unit id="55">
+                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
+                <target>Ez a gyűjtemény legfeljebb {{ limit }} elemet tartalmazhat.|Ez a gyűjtemény legfeljebb {{ limit }} elemet tartalmazhat.</target>
+            </trans-unit>
+            <trans-unit id="56">
+                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
+                <target>Ennek a gyűjteménynek pontosan {{ limit }} elemet kell tartalmaznia.|Ennek a gyűjteménynek pontosan {{ limit }} elemet kell tartalmaznia.</target>
+            </trans-unit>
+            <trans-unit id="57">
+                <source>Invalid card number.</source>
+                <target>Érvénytelen kártyaszám.</target>
+            </trans-unit>
+            <trans-unit id="58">
+                <source>Unsupported card type or invalid card number.</source>
+                <target>Nem támogatott kártyatípus vagy érvénytelen kártyaszám.</target>
+            </trans-unit>
+            <trans-unit id="59">
+                <source>This is not a valid International Bank Account Number (IBAN).</source>
+                <target>Érvénytelen nemzetközi bankszámlaszám (IBAN).</target>
+            </trans-unit>
+            <trans-unit id="60">
+                <source>This value is not a valid ISBN-10.</source>
+                <target>Ez az érték nem egy érvényes ISBN-10.</target>
+            </trans-unit>
+            <trans-unit id="61">
+                <source>This value is not a valid ISBN-13.</source>
+                <target>Ez az érték nem egy érvényes ISBN-13.</target>
+            </trans-unit>
+            <trans-unit id="62">
+                <source>This value is neither a valid ISBN-10 nor a valid ISBN-13.</source>
+                <target>Ez az érték nem egy érvényes ISBN-10 vagy ISBN-13.</target>
+            </trans-unit>
+            <trans-unit id="63">
+                <source>This value is not a valid ISSN.</source>
+                <target>Ez az érték nem egy érvényes ISSN.</target>
+            </trans-unit>
+            <trans-unit id="64">
+                <source>This value is not a valid currency.</source>
+                <target>Ez az érték nem egy érvényes pénznem.</target>
+            </trans-unit>
+            <trans-unit id="65">
+                <source>This value should be equal to {{ compared_value }}.</source>
+                <target>Ez az érték legyen {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="66">
+                <source>This value should be greater than {{ compared_value }}.</source>
+                <target>Ez az érték nagyobb legyen, mint {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="67">
+                <source>This value should be greater than or equal to {{ compared_value }}.</source>
+                <target>Ez az érték nagyobb vagy egyenlő legyen, mint {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="68">
+                <source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
+                <target>Ez az érték ugyanolyan legyen, mint {{ compared_value_type }} {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="69">
+                <source>This value should be less than {{ compared_value }}.</source>
+                <target>Ez az érték kisebb legyen, mint {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="70">
+                <source>This value should be less than or equal to {{ compared_value }}.</source>
+                <target>Ez az érték kisebb vagy egyenlő legyen, mint {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="71">
+                <source>This value should not be equal to {{ compared_value }}.</source>
+                <target>Ez az érték ne legyen {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="72">
+                <source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
+                <target>Ez az érték ne legyen ugyanolyan, mint {{ compared_value_type }} {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="73">
+                <source>The image ratio is too big ({{ ratio }}). Allowed maximum ratio is {{ max_ratio }}.</source>
+                <target>A képarány túl nagy ({{ ratio }}). A megengedett legnagyobb képarány {{ max_ratio }}.</target>
+            </trans-unit>
+            <trans-unit id="74">
+                <source>The image ratio is too small ({{ ratio }}). Minimum ratio expected is {{ min_ratio }}.</source>
+                <target>A képarány túl kicsi ({{ ratio }}). A megengedett legkisebb képarány {{ min_ratio }}.</target>
+            </trans-unit>
+            <trans-unit id="75">
+                <source>The image is square ({{ width }}x{{ height }}px). Square images are not allowed.</source>
+                <target>A kép négyzet alakú ({{ width }}x{{ height }}px). A négyzet alakú képek nem engedélyezettek.</target>
+            </trans-unit>
+            <trans-unit id="76">
+                <source>The image is landscape oriented ({{ width }}x{{ height }}px). Landscape oriented images are not allowed.</source>
+                <target>A kép fekvő tájolású ({{ width }}x{{ height }}px). A fekvő tájolású képek nem engedélyezettek.</target>
+            </trans-unit>
+            <trans-unit id="77">
+                <source>The image is portrait oriented ({{ width }}x{{ height }}px). Portrait oriented images are not allowed.</source>
+                <target>A kép álló tájolású ({{ width }}x{{ height }}px). Az álló tájolású képek nem engedélyezettek.</target>
+            </trans-unit>
+            <trans-unit id="78">
+                <source>An empty file is not allowed.</source>
+                <target>Üres fájl nem megengedett.</target>
+            </trans-unit>
+            <trans-unit id="79">
+                <source>The host could not be resolved.</source>
+                <target>Az állomásnevet nem lehet feloldani.</target>
+            </trans-unit>
+            <trans-unit id="80">
+                <source>This value does not match the expected {{ charset }} charset.</source>
+                <target>Ez az érték nem az elvárt {{ charset }} karakterkódolást használja.</target>
+            </trans-unit>
+        </body>
+    </file>
+</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.hy.xlf b/vendor/symfony/validator/Resources/translations/validators.hy.xlf
new file mode 100644
index 0000000..664c085
--- /dev/null
+++ b/vendor/symfony/validator/Resources/translations/validators.hy.xlf
@@ -0,0 +1,187 @@
+﻿<?xml version="1.0"?>
+<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
+    <file source-language="en" datatype="plaintext" original="file.ext">
+        <body>
+            <trans-unit id="1">
+                <source>This value should be false.</source>
+                <target>Արժեքը պետք է լինի կեղծ.</target>
+            </trans-unit>
+            <trans-unit id="2">
+                <source>This value should be true.</source>
+                <target>Արժեքը պետք է լինի ճշմարիտ.</target>
+            </trans-unit>
+            <trans-unit id="3">
+                <source>This value should be of type {{ type }}.</source>
+                <target>Արժեքը պետք է լինի {{ type }} տեսակի.</target>
+            </trans-unit>
+            <trans-unit id="4">
+                <source>This value should be blank.</source>
+                <target>Արժեքը պետք է լինի դատարկ.</target>
+            </trans-unit>
+            <trans-unit id="5">
+                <source>The value you selected is not a valid choice.</source>
+                <target>Ձեր ընտրած արժեքը անթույլատրելի է.</target>
+            </trans-unit>
+            <trans-unit id="6">
+                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
+                <target>Դուք պետք է ընտրեք ամենաքիչը {{ limit }} տարբերակներ.</target>
+            </trans-unit>
+            <trans-unit id="7">
+                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
+                <target>Դուք պետք է ընտրեք ոչ ավելի քան {{ limit }} տարբերակներ.</target>
+            </trans-unit>
+            <trans-unit id="8">
+                <source>One or more of the given values is invalid.</source>
+                <target>Մեկ կամ ավելի տրված արժեքները անթույլատրելի են.</target>
+            </trans-unit>
+            <trans-unit id="9">
+                <source>This field was not expected.</source>
+                <target>Այս դաշտը չի սպասվում.</target>
+            </trans-unit>
+            <trans-unit id="10">
+                <source>This field is missing.</source>
+                <target>Այս դաշտը բացակայում է.</target>
+            </trans-unit>
+            <trans-unit id="11">
+                <source>This value is not a valid date.</source>
+                <target>Արժեքը սխալ ամսաթիվ է.</target>
+            </trans-unit>
+            <trans-unit id="12">
+                <source>This value is not a valid datetime.</source>
+                <target>Ամսաթվի և ժամանակի արժեքը անթույլատրելի է.</target>
+            </trans-unit>
+            <trans-unit id="13">
+                <source>This value is not a valid email address.</source>
+                <target>Էլ-փոստի արժեքը անթույլատրելի է.</target>
+            </trans-unit>
+            <trans-unit id="14">
+                <source>The file could not be found.</source>
+                <target>Ֆայլը չի գտնվել.</target>
+            </trans-unit>
+            <trans-unit id="15">
+                <source>The file is not readable.</source>
+                <target>Ֆայլը անընթեռնելի է.</target>
+            </trans-unit>
+            <trans-unit id="16">
+                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>Ֆայլը չափազանց մեծ է ({{ size }} {{ suffix }}): Մաքսիմալ թույլատրելի չափսը՝ {{ limit }} {{ suffix }}.</target>
+            </trans-unit>
+            <trans-unit id="17">
+                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
+                <target>MIME-տեսակը անթույլատրելի է({{ type }}): Ֆայլերի թույլատրելի MIME-տեսակներն են: {{ types }}.</target>
+            </trans-unit>
+            <trans-unit id="18">
+                <source>This value should be {{ limit }} or less.</source>
+                <target>Արժեքը պետք է լինի {{ limit }} կամ փոքր.</target>
+            </trans-unit>
+            <trans-unit id="19">
+                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
+                <target>Արժեքը չափազանց երկար է: Պետք է լինի {{ limit }} կամ ավել սիմվոլներ.</target>
+            </trans-unit>
+            <trans-unit id="20">
+                <source>This value should be {{ limit }} or more.</source>
+                <target>Արժեքը պետ է լինի {{ limit }} կամ շատ.</target>
+            </trans-unit>
+            <trans-unit id="21">
+                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
+                <target>Արժեքը չափազանց կարճ է: Պետք է լինի {{ limit }} կամ ավելի սիմվոլներ.</target>
+            </trans-unit>
+            <trans-unit id="22">
+                <source>This value should not be blank.</source>
+                <target>Արժեքը չպետք է դատարկ լինի.</target>
+            </trans-unit>
+            <trans-unit id="23">
+                <source>This value should not be null.</source>
+                <target>Արժեքը չպետք է լինի null.</target>
+            </trans-unit>
+            <trans-unit id="24">
+                <source>This value should be null.</source>
+                <target>Արժեքը պետք է լինի null.</target>
+            </trans-unit>
+            <trans-unit id="25">
+                <source>This value is not valid.</source>
+                <target>Անթույլատրելի արժեք.</target>
+            </trans-unit>
+            <trans-unit id="26">
+                <source>This value is not a valid time.</source>
+                <target>Ժամանակի արժեքը անթույլատրելի է.</target>
+            </trans-unit>
+            <trans-unit id="27">
+                <source>This value is not a valid URL.</source>
+                <target>Արժեքը  URL  չէ.</target>
+            </trans-unit>
+            <trans-unit id="31">
+                <source>The two values should be equal.</source>
+                <target>Երկու արժեքները պետք է նույնը լինեն.</target>
+            </trans-unit>
+            <trans-unit id="32">
+                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>Ֆայլը չափազանց մեծ է: Մաքսիմալ թույլատրելի չափսը {{ limit }} {{ suffix }} է.</target>
+            </trans-unit>
+            <trans-unit id="33">
+                <source>The file is too large.</source>
+                <target>Ֆայլը չափազանց մեծ է.</target>
+            </trans-unit>
+            <trans-unit id="34">
+                <source>The file could not be uploaded.</source>
+                <target>Ֆայլը չի կարող բեռնվել.</target>
+            </trans-unit>
+            <trans-unit id="35">
+                <source>This value should be a valid number.</source>
+                <target>Արժեքը պետք է լինի թիվ.</target>
+            </trans-unit>
+            <trans-unit id="36">
+                <source>This value is not a valid country.</source>
+                <target>Արժեքը պետք է լինի երկիր.</target>
+            </trans-unit>
+            <trans-unit id="37">
+                <source>This file is not a valid image.</source>
+                <target>Ֆայլը նկարի թույլատրելի ֆորմատ չէ.</target>
+            </trans-unit>
+            <trans-unit id="38">
+                <source>This is not a valid IP address.</source>
+                <target>Արժեքը թույլատրելի IP հասցե չէ.</target>
+            </trans-unit>
+            <trans-unit id="39">
+                <source>This value is not a valid language.</source>
+                <target>Արժեքը թույլատրելի լեզու չէ.</target>
+            </trans-unit>
+            <trans-unit id="40">
+                <source>This value is not a valid locale.</source>
+                <target>Արժեքը չի հանդիսանում թույլատրելի տեղայնացում.</target>
+            </trans-unit>
+            <trans-unit id="41">
+                <source>This value is already used.</source>
+                <target>Այդ արժեքը արդեն օգտագործվում է.</target>
+            </trans-unit>
+            <trans-unit id="42">
+                <source>The size of the image could not be detected.</source>
+                <target>Նկարի չափսերը չստացվեց որոշել.</target>
+            </trans-unit>
+            <trans-unit id="43">
+                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
+                <target>Նկարի լայնությունը չափազանց մեծ է({{ width }}px). Մաքսիմալ չափն է {{ max_width }}px.</target>
+            </trans-unit>
+            <trans-unit id="44">
+                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
+                <target>Նկարի լայնությունը չափազանց փոքր է ({{ width }}px). Մինիմալ չափն է {{ min_ width }}px.</target>
+            </trans-unit>
+            <trans-unit id="45">
+                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
+                <target>Նկարի բարձրությունը չափազանց մեծ է ({{ height }}px). Մաքսիմալ չափն է {{ max_height }}px.</target>
+            </trans-unit>
+            <trans-unit id="46">
+                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
+                <target>Նկարի բարձրությունը չափազանց փոքր է ({{ height }}px). Մինիմալ չափն է {{ min_height }}px.</target>
+            </trans-unit>
+            <trans-unit id="47">
+                <source>This value should be the user's current password.</source>
+                <target>Այս արժեքը պետք է լինի օգտագործողի ներկա ծածկագիրը.</target>
+            </trans-unit>
+            <trans-unit id="48">
+                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
+                <target>Այս արժեքը պետք է ունենա ճիշտ {{ limit }} սիմվոլներ.</target>
+            </trans-unit>
+        </body>
+    </file>
+</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.id.xlf b/vendor/symfony/validator/Resources/translations/validators.id.xlf
new file mode 100644
index 0000000..742f4a1
--- /dev/null
+++ b/vendor/symfony/validator/Resources/translations/validators.id.xlf
@@ -0,0 +1,283 @@
+<?xml version="1.0"?>
+<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
+    <file source-language="en" datatype="plaintext" original="file.ext">
+        <body>
+            <trans-unit id="1">
+                <source>This value should be false.</source>
+                <target>Nilai ini harus bernilai salah.</target>
+            </trans-unit>
+            <trans-unit id="2">
+                <source>This value should be true.</source>
+                <target>Nilai ini harus bernilai benar.</target>
+            </trans-unit>
+            <trans-unit id="3">
+                <source>This value should be of type {{ type }}.</source>
+                <target>Nilai ini harus bertipe {{ type }}.</target>
+            </trans-unit>
+            <trans-unit id="4">
+                <source>This value should be blank.</source>
+                <target>Nilai ini harus kosong.</target>
+            </trans-unit>
+            <trans-unit id="5">
+                <source>The value you selected is not a valid choice.</source>
+                <target>Nilai yang dipilih tidak tepat.</target>
+            </trans-unit>
+            <trans-unit id="6">
+                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
+                <target>Anda harus memilih paling tidak {{ limit }} pilihan.</target>
+            </trans-unit>
+            <trans-unit id="7">
+                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
+                <target>Anda harus memilih paling banyak {{ limit }} pilihan.</target>
+            </trans-unit>
+            <trans-unit id="8">
+                <source>One or more of the given values is invalid.</source>
+                <target>Satu atau lebih nilai yang diberikan tidak sah.</target>
+            </trans-unit>
+            <trans-unit id="9">
+                <source>This field was not expected.</source>
+                <target>Bidang ini tidak diharapkan.</target>
+            </trans-unit>
+            <trans-unit id="10">
+                <source>This field is missing.</source>
+                <target>Bidang ini hilang.</target>
+            </trans-unit>
+            <trans-unit id="11">
+                <source>This value is not a valid date.</source>
+                <target>Nilai ini bukan merupakan tanggal yang sah.</target>
+            </trans-unit>
+            <trans-unit id="12">
+                <source>This value is not a valid datetime.</source>
+                <target>Nilai ini bukan merupakan tanggal dan waktu yang sah.</target>
+            </trans-unit>
+            <trans-unit id="13">
+                <source>This value is not a valid email address.</source>
+                <target>Nilai ini bukan alamat email yang sah.</target>
+            </trans-unit>
+            <trans-unit id="14">
+                <source>The file could not be found.</source>
+                <target>Berkas tidak ditemukan.</target>
+            </trans-unit>
+            <trans-unit id="15">
+                <source>The file is not readable.</source>
+                <target>Berkas tidak bisa dibaca.</target>
+            </trans-unit>
+            <trans-unit id="16">
+                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>Ukuran berkas terlalu besar ({{ size }} {{ suffix }}). Ukuran maksimum yang diizinkan adalah {{ limit }} {{ suffix }}.</target>
+            </trans-unit>
+            <trans-unit id="17">
+                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
+                <target>Jenis berkas ({{ type }}) tidak sah. Jenis berkas yang diijinkan adalah {{ types }}.</target>
+            </trans-unit>
+            <trans-unit id="18">
+                <source>This value should be {{ limit }} or less.</source>
+                <target>Nilai ini harus {{ limit }} atau kurang.</target>
+            </trans-unit>
+            <trans-unit id="19">
+                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
+                <target>Nilai ini terlalu panjang. Seharusnya {{ limit }} karakter atau kurang.</target>
+            </trans-unit>
+            <trans-unit id="20">
+                <source>This value should be {{ limit }} or more.</source>
+                <target>Nilai ini harus {{ limit }} atau lebih.</target>
+            </trans-unit>
+            <trans-unit id="21">
+                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
+                <target>Nilai ini terlalu pendek. Seharusnya {{ limit }} karakter atau lebih.</target>
+            </trans-unit>
+            <trans-unit id="22">
+                <source>This value should not be blank.</source>
+                <target>Nilai ini tidak boleh kosong.</target>
+            </trans-unit>
+            <trans-unit id="23">
+                <source>This value should not be null.</source>
+                <target>Nilai ini tidak boleh 'null'.</target>
+            </trans-unit>
+            <trans-unit id="24">
+                <source>This value should be null.</source>
+                <target>Nilai ini harus 'null'.</target>
+            </trans-unit>
+            <trans-unit id="25">
+                <source>This value is not valid.</source>
+                <target>Nilai ini tidak sah.</target>
+            </trans-unit>
+            <trans-unit id="26">
+                <source>This value is not a valid time.</source>
+                <target>Nilai ini bukan merupakan waktu yang sah.</target>
+            </trans-unit>
+            <trans-unit id="27">
+                <source>This value is not a valid URL.</source>
+                <target>Nilai ini bukan URL yang sah.</target>
+            </trans-unit>
+            <trans-unit id="31">
+                <source>The two values should be equal.</source>
+                <target>Isi keduanya harus sama.</target>
+            </trans-unit>
+            <trans-unit id="32">
+                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>Ukuran berkas terlalu besar. Ukuran maksimum yang diijinkan adalah {{ limit }} {{ suffix }}.</target>
+            </trans-unit>
+            <trans-unit id="33">
+                <source>The file is too large.</source>
+                <target>Ukuran berkas terlalu besar.</target>
+            </trans-unit>
+            <trans-unit id="34">
+                <source>The file could not be uploaded.</source>
+                <target>Berkas tidak dapat diunggah.</target>
+            </trans-unit>
+            <trans-unit id="35">
+                <source>This value should be a valid number.</source>
+                <target>Nilai ini harus angka yang sah.</target>
+            </trans-unit>
+            <trans-unit id="36">
+                <source>This file is not a valid image.</source>
+                <target>Berkas ini tidak termasuk gambar.</target>
+            </trans-unit>
+            <trans-unit id="37">
+                <source>This is not a valid IP address.</source>
+                <target>Ini bukan alamat IP yang sah.</target>
+            </trans-unit>
+            <trans-unit id="38">
+                <source>This value is not a valid language.</source>
+                <target>Nilai ini bukan bahasa yang sah.</target>
+            </trans-unit>
+            <trans-unit id="39">
+                <source>This value is not a valid locale.</source>
+                <target>Nilai ini bukan lokal yang sah.</target>
+            </trans-unit>
+            <trans-unit id="40">
+                <source>This value is not a valid country.</source>
+                <target>Nilai ini bukan negara yang sah.</target>
+            </trans-unit>
+            <trans-unit id="41">
+                <source>This value is already used.</source>
+                <target>Nilai ini sudah digunakan.</target>
+            </trans-unit>
+            <trans-unit id="42">
+                <source>The size of the image could not be detected.</source>
+                <target>Ukuran dari gambar tidak bisa dideteksi.</target>
+            </trans-unit>
+            <trans-unit id="43">
+                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
+                <target>Lebar gambar terlalu besar ({{ width }}px). Ukuran lebar maksimum adalah {{ max_width }}px.</target>
+            </trans-unit>
+            <trans-unit id="44">
+                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
+                <target>Lebar gambar terlalu kecil ({{ width }}px). Ukuran lebar minimum yang diharapkan adalah {{ min_width }}px.</target>
+            </trans-unit>
+            <trans-unit id="45">
+                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
+                <target>Tinggi gambar terlalu besar ({{ height }}px). Ukuran tinggi maksimum adalah {{ max_height }}px.</target>
+            </trans-unit>
+            <trans-unit id="46">
+                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
+                <target>Tinggi gambar terlalu kecil ({{ height }}px). Ukuran tinggi minimum yang diharapkan adalah {{ min_height }}px.</target>
+            </trans-unit>
+            <trans-unit id="47">
+                <source>This value should be the user's current password.</source>
+                <target>Nilai ini harus kata sandi pengguna saat ini.</target>
+            </trans-unit>
+            <trans-unit id="48">
+                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
+                <target>Nilai ini harus memiliki tepat {{ limit }} karakter.</target>
+            </trans-unit>
+            <trans-unit id="49">
+                <source>The file was only partially uploaded.</source>
+                <target>Berkas hanya terunggah sebagian.</target>
+            </trans-unit>
+            <trans-unit id="50">
+                <source>No file was uploaded.</source>
+                <target>Tidak ada berkas terunggah.</target>
+            </trans-unit>
+            <trans-unit id="51">
+                <source>No temporary folder was configured in php.ini.</source>
+                <target>Direktori sementara tidak dikonfiguasi pada php.ini.</target>
+            </trans-unit>
+            <trans-unit id="52">
+                <source>Cannot write temporary file to disk.</source>
+                <target>Tidak dapat menuliskan berkas sementara ke dalam media penyimpanan.</target>
+            </trans-unit>
+            <trans-unit id="53">
+                <source>A PHP extension caused the upload to fail.</source>
+                <target>Sebuah ekstensi PHP menyebabkan kegagalan unggah.</target>
+            </trans-unit>
+            <trans-unit id="54">
+                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
+                <target>Kumpulan ini harus memiliki {{ limit }} elemen atau lebih.</target>
+            </trans-unit>
+            <trans-unit id="55">
+                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
+                <target>Kumpulan ini harus memiliki kurang dari {{ limit }} elemen.</target>
+            </trans-unit>
+            <trans-unit id="56">
+                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
+                <target>Kumpulan ini harus memiliki tepat {{ limit }} elemen.</target>
+            </trans-unit>
+            <trans-unit id="57">
+                <source>Invalid card number.</source>
+                <target>Nomor kartu tidak sah.</target>
+            </trans-unit>
+            <trans-unit id="58">
+                <source>Unsupported card type or invalid card number.</source>
+                <target>Jenis kartu tidak didukung atau nomor kartu tidak sah.</target>
+            </trans-unit>
+            <trans-unit id="59">
+                <source>This is not a valid International Bank Account Number (IBAN).</source>
+                <target>Ini bukan Nomor Rekening Bank Internasional (IBAN) yang sah.</target>
+            </trans-unit>
+            <trans-unit id="60">
+                <source>This value is not a valid ISBN-10.</source>
+                <target>Nilai ini bukan ISBN-10 yang sah.</target>
+            </trans-unit>
+            <trans-unit id="61">
+                <source>This value is not a valid ISBN-13.</source>
+                <target>Nilai ini bukan ISBN-13 yang sah.</target>
+            </trans-unit>
+            <trans-unit id="62">
+                <source>This value is neither a valid ISBN-10 nor a valid ISBN-13.</source>
+                <target>Nilai ini bukan ISBN-10 maupun ISBN-13 yang sah.</target>
+            </trans-unit>
+            <trans-unit id="63">
+                <source>This value is not a valid ISSN.</source>
+                <target>Nilai ini bukan ISSN yang sah.</target>
+            </trans-unit>
+            <trans-unit id="64">
+                <source>This value is not a valid currency.</source>
+                <target>Nilai ini bukan mata uang yang sah.</target>
+            </trans-unit>
+            <trans-unit id="65">
+                <source>This value should be equal to {{ compared_value }}.</source>
+                <target>Nilai ini seharusnya sama dengan {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="66">
+                <source>This value should be greater than {{ compared_value }}.</source>
+                <target>Nilai ini seharusnya lebih dari {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="67">
+                <source>This value should be greater than or equal to {{ compared_value }}.</source>
+                <target>Nilai ini seharusnya lebih dari atau sama dengan {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="68">
+                <source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
+                <target>Nilai ini seharusnya identik dengan {{ compared_value_type }} {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="69">
+                <source>This value should be less than {{ compared_value }}.</source>
+                <target>Nilai ini seharusnya kurang dari {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="70">
+                <source>This value should be less than or equal to {{ compared_value }}.</source>
+                <target>Nilai ini seharusnya kurang dari atau sama dengan {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="71">
+                <source>This value should not be equal to {{ compared_value }}.</source>
+                <target>Nilai ini seharusnya tidak sama dengan {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="72">
+                <source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
+                <target>Nilai ini seharusnya tidak identik dengan {{ compared_value_type }} {{ compared_value }}.</target>
+            </trans-unit>
+        </body>
+    </file>
+</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.it.xlf b/vendor/symfony/validator/Resources/translations/validators.it.xlf
new file mode 100644
index 0000000..38e437d
--- /dev/null
+++ b/vendor/symfony/validator/Resources/translations/validators.it.xlf
@@ -0,0 +1,319 @@
+<?xml version="1.0"?>
+<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
+    <file source-language="en" datatype="plaintext" original="file.ext">
+        <body>
+            <trans-unit id="1">
+                <source>This value should be false.</source>
+                <target>Questo valore dovrebbe essere falso.</target>
+            </trans-unit>
+            <trans-unit id="2">
+                <source>This value should be true.</source>
+                <target>Questo valore dovrebbe essere vero.</target>
+            </trans-unit>
+            <trans-unit id="3">
+                <source>This value should be of type {{ type }}.</source>
+                <target>Questo valore dovrebbe essere di tipo {{ type }}.</target>
+            </trans-unit>
+            <trans-unit id="4">
+                <source>This value should be blank.</source>
+                <target>Questo valore dovrebbe essere vuoto.</target>
+            </trans-unit>
+            <trans-unit id="5">
+                <source>The value you selected is not a valid choice.</source>
+                <target>Questo valore dovrebbe essere una delle opzioni disponibili.</target>
+            </trans-unit>
+            <trans-unit id="6">
+                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
+                <target>Si dovrebbe selezionare almeno {{ limit }} opzione.|Si dovrebbero selezionare almeno {{ limit }} opzioni.</target>
+            </trans-unit>
+            <trans-unit id="7">
+                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
+                <target>Si dovrebbe selezionare al massimo {{ limit }} opzione.|Si dovrebbero selezionare al massimo {{ limit }} opzioni.</target>
+            </trans-unit>
+            <trans-unit id="8">
+                <source>One or more of the given values is invalid.</source>
+                <target>Uno o più valori inseriti non sono validi.</target>
+            </trans-unit>
+            <trans-unit id="9">
+                <source>This field was not expected.</source>
+                <target>Questo campo non è stato previsto.</target>
+            </trans-unit>
+            <trans-unit id="10">
+                <source>This field is missing.</source>
+                <target>Questo campo è mancante.</target>
+            </trans-unit>
+            <trans-unit id="11">
+                <source>This value is not a valid date.</source>
+                <target>Questo valore non è una data valida.</target>
+            </trans-unit>
+            <trans-unit id="12">
+                <source>This value is not a valid datetime.</source>
+                <target>Questo valore non è una data e ora valida.</target>
+            </trans-unit>
+            <trans-unit id="13">
+                <source>This value is not a valid email address.</source>
+                <target>Questo valore non è un indirizzo email valido.</target>
+            </trans-unit>
+            <trans-unit id="14">
+                <source>The file could not be found.</source>
+                <target>Non è stato possibile trovare il file.</target>
+            </trans-unit>
+            <trans-unit id="15">
+                <source>The file is not readable.</source>
+                <target>Il file non è leggibile.</target>
+            </trans-unit>
+            <trans-unit id="16">
+                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>Il file è troppo grande ({{ size }} {{ suffix }}). La dimensione massima consentita è {{ limit }} {{ suffix }}.</target>
+            </trans-unit>
+            <trans-unit id="17">
+                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
+                <target>Il mime type del file non è valido ({{ type }}). I tipi permessi sono {{ types }}.</target>
+            </trans-unit>
+            <trans-unit id="18">
+                <source>This value should be {{ limit }} or less.</source>
+                <target>Questo valore dovrebbe essere {{ limit }} o inferiore.</target>
+            </trans-unit>
+            <trans-unit id="19">
+                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
+                <target>Questo valore è troppo lungo. Dovrebbe essere al massimo di {{ limit }} carattere.|Questo valore è troppo lungo. Dovrebbe essere al massimo di {{ limit }} caratteri.</target>
+            </trans-unit>
+            <trans-unit id="20">
+                <source>This value should be {{ limit }} or more.</source>
+                <target>Questo valore dovrebbe essere {{ limit }} o superiore.</target>
+            </trans-unit>
+            <trans-unit id="21">
+                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
+                <target>Questo valore è troppo corto. Dovrebbe essere almeno di {{ limit }} carattere.|Questo valore è troppo corto. Dovrebbe essere almeno di {{ limit }} caratteri.</target>
+            </trans-unit>
+            <trans-unit id="22">
+                <source>This value should not be blank.</source>
+                <target>Questo valore non dovrebbe essere vuoto.</target>
+            </trans-unit>
+            <trans-unit id="23">
+                <source>This value should not be null.</source>
+                <target>Questo valore non dovrebbe essere nullo.</target>
+            </trans-unit>
+            <trans-unit id="24">
+                <source>This value should be null.</source>
+                <target>Questo valore dovrebbe essere nullo.</target>
+            </trans-unit>
+            <trans-unit id="25">
+                <source>This value is not valid.</source>
+                <target>Questo valore non è valido.</target>
+            </trans-unit>
+            <trans-unit id="26">
+                <source>This value is not a valid time.</source>
+                <target>Questo valore non è un'ora valida.</target>
+            </trans-unit>
+            <trans-unit id="27">
+                <source>This value is not a valid URL.</source>
+                <target>Questo valore non è un URL valido.</target>
+            </trans-unit>
+            <trans-unit id="31">
+                <source>The two values should be equal.</source>
+                <target>I due valori dovrebbero essere uguali.</target>
+            </trans-unit>
+            <trans-unit id="32">
+                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>Il file è troppo grande. La dimensione massima è {{ limit }} {{ suffix }}.</target>
+            </trans-unit>
+            <trans-unit id="33">
+                <source>The file is too large.</source>
+                <target>Il file è troppo grande.</target>
+            </trans-unit>
+            <trans-unit id="34">
+                <source>The file could not be uploaded.</source>
+                <target>Il file non può essere caricato.</target>
+            </trans-unit>
+            <trans-unit id="35">
+                <source>This value should be a valid number.</source>
+                <target>Questo valore dovrebbe essere un numero.</target>
+            </trans-unit>
+            <trans-unit id="36">
+                <source>This file is not a valid image.</source>
+                <target>Questo file non è una immagine valida.</target>
+            </trans-unit>
+            <trans-unit id="37">
+                <source>This is not a valid IP address.</source>
+                <target>Questo valore non è un indirizzo IP valido.</target>
+            </trans-unit>
+            <trans-unit id="38">
+                <source>This value is not a valid language.</source>
+                <target>Questo valore non è una lingua valida.</target>
+            </trans-unit>
+            <trans-unit id="39">
+                <source>This value is not a valid locale.</source>
+                <target>Questo valore non è una impostazione regionale valida.</target>
+            </trans-unit>
+            <trans-unit id="40">
+                <source>This value is not a valid country.</source>
+                <target>Questo valore non è una nazione valida.</target>
+            </trans-unit>
+            <trans-unit id="41">
+                <source>This value is already used.</source>
+                <target>Questo valore è già stato utilizzato.</target>
+            </trans-unit>
+            <trans-unit id="42">
+                <source>The size of the image could not be detected.</source>
+                <target>La dimensione dell'immagine non può essere determinata.</target>
+            </trans-unit>
+            <trans-unit id="43">
+                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
+                <target>La larghezza dell'immagine è troppo grande ({{ width }}px). La larghezza massima è di {{ max_width }}px.</target>
+            </trans-unit>
+            <trans-unit id="44">
+                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
+                <target>La larghezza dell'immagine è troppo piccola ({{ width }}px). La larghezza minima è di {{ min_width }}px.</target>
+            </trans-unit>
+            <trans-unit id="45">
+                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
+                <target>L'altezza dell'immagine è troppo grande ({{ height }}px). L'altezza massima è di {{ max_height }}px.</target>
+            </trans-unit>
+            <trans-unit id="46">
+                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
+                <target>L'altezza dell'immagine è troppo piccola ({{ height }}px). L'altezza minima è di {{ min_height }}px.</target>
+            </trans-unit>
+            <trans-unit id="47">
+                <source>This value should be the user's current password.</source>
+                <target>Questo valore dovrebbe essere la password attuale dell'utente.</target>
+            </trans-unit>
+            <trans-unit id="48">
+                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
+                <target>Questo valore dovrebbe contenere esattamente {{ limit }} carattere.|Questo valore dovrebbe contenere esattamente {{ limit }} caratteri.</target>
+            </trans-unit>
+            <trans-unit id="49">
+                <source>The file was only partially uploaded.</source>
+                <target>Il file è stato caricato solo parzialmente.</target>
+            </trans-unit>
+            <trans-unit id="50">
+                <source>No file was uploaded.</source>
+                <target>Nessun file è stato caricato.</target>
+            </trans-unit>
+            <trans-unit id="51">
+                <source>No temporary folder was configured in php.ini.</source>
+                <target>Nessuna cartella temporanea è stata configurata nel php.ini.</target>
+            </trans-unit>
+            <trans-unit id="52">
+                <source>Cannot write temporary file to disk.</source>
+                <target>Impossibile scrivere il file temporaneo sul disco.</target>
+            </trans-unit>
+            <trans-unit id="53">
+                <source>A PHP extension caused the upload to fail.</source>
+                <target>Un'estensione PHP ha causato il fallimento del caricamento.</target>
+            </trans-unit>
+            <trans-unit id="54">
+                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
+                <target>Questa collezione dovrebbe contenere almeno {{ limit }} elemento.|Questa collezione dovrebbe contenere almeno {{ limit }} elementi.</target>
+            </trans-unit>
+            <trans-unit id="55">
+                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
+                <target>Questa collezione dovrebbe contenere massimo {{ limit }} elemento.|Questa collezione dovrebbe contenere massimo {{ limit }} elementi.</target>
+            </trans-unit>
+            <trans-unit id="56">
+                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
+                <target>Questa collezione dovrebbe contenere esattamente {{ limit }} elemento.|Questa collezione dovrebbe contenere esattamente {{ limit }} elementi.</target>
+            </trans-unit>
+            <trans-unit id="57">
+                <source>Invalid card number.</source>
+                <target>Numero di carta non valido.</target>
+            </trans-unit>
+            <trans-unit id="58">
+                <source>Unsupported card type or invalid card number.</source>
+                <target>Tipo di carta non supportato o numero non valido.</target>
+            </trans-unit>
+            <trans-unit id="59">
+                <source>This is not a valid International Bank Account Number (IBAN).</source>
+                <target>Questo valore non è un IBAN (International Bank Account Number) valido.</target>
+            </trans-unit>
+            <trans-unit id="60">
+                <source>This value is not a valid ISBN-10.</source>
+                <target>Questo valore non è un codice ISBN-10 valido.</target>
+            </trans-unit>
+            <trans-unit id="61">
+                <source>This value is not a valid ISBN-13.</source>
+                <target>Questo valore non è un codice ISBN-13 valido.</target>
+            </trans-unit>
+            <trans-unit id="62">
+                <source>This value is neither a valid ISBN-10 nor a valid ISBN-13.</source>
+                <target>Questo valore non è un codice ISBN-10 o ISBN-13 valido.</target>
+            </trans-unit>
+            <trans-unit id="63">
+                <source>This value is not a valid ISSN.</source>
+                <target>Questo valore non è un codice ISSN valido.</target>
+            </trans-unit>
+            <trans-unit id="64">
+                <source>This value is not a valid currency.</source>
+                <target>Questo valore non è una valuta valida.</target>
+            </trans-unit>
+            <trans-unit id="65">
+                <source>This value should be equal to {{ compared_value }}.</source>
+                <target>Questo valore dovrebbe essere uguale a {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="66">
+                <source>This value should be greater than {{ compared_value }}.</source>
+                <target>Questo valore dovrebbe essere maggiore di {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="67">
+                <source>This value should be greater than or equal to {{ compared_value }}.</source>
+                <target>Questo valore dovrebbe essere maggiore o uguale a {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="68">
+                <source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
+                <target>Questo valore dovrebbe essere identico a {{ compared_value_type }} {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="69">
+                <source>This value should be less than {{ compared_value }}.</source>
+                <target>Questo valore dovrebbe essere minore di {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="70">
+                <source>This value should be less than or equal to {{ compared_value }}.</source>
+                <target>Questo valore dovrebbe essere minore o uguale a {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="71">
+                <source>This value should not be equal to {{ compared_value }}.</source>
+                <target>Questo valore dovrebbe essere diverso da {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="72">
+                <source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
+                <target>Questo valore dovrebbe essere diverso da {{ compared_value_type }} {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="73">
+                <source>The image ratio is too big ({{ ratio }}). Allowed maximum ratio is {{ max_ratio }}.</source>
+                <target>Il rapporto di aspetto dell'immagine è troppo grande ({{ ratio }}). Il rapporto massimo consentito è {{ max_ratio }}.</target>
+            </trans-unit>
+            <trans-unit id="74">
+                <source>The image ratio is too small ({{ ratio }}). Minimum ratio expected is {{ min_ratio }}.</source>
+                <target>Il rapporto di aspetto dell'immagine è troppo piccolo ({{ ratio }}). Il rapporto minimo consentito è {{ min_ratio }}.</target>
+            </trans-unit>
+            <trans-unit id="75">
+                <source>The image is square ({{ width }}x{{ height }}px). Square images are not allowed.</source>
+                <target>L'immagine è quadrata ({{ width }}x{{ height }}px). Le immagini quadrate non sono consentite.</target>
+            </trans-unit>
+            <trans-unit id="76">
+                <source>The image is landscape oriented ({{ width }}x{{ height }}px). Landscape oriented images are not allowed.</source>
+                <target>L'immagine è orizzontale ({{ width }}x{{ height }}px). Le immagini orizzontali non sono consentite.</target>
+            </trans-unit>
+            <trans-unit id="77">
+                <source>The image is portrait oriented ({{ width }}x{{ height }}px). Portrait oriented images are not allowed.</source>
+                <target>L'immagine è verticale ({{ width }}x{{ height }}px). Le immagini verticali non sono consentite.</target>
+            </trans-unit>
+            <trans-unit id="78">
+                <source>An empty file is not allowed.</source>
+                <target>Un file vuoto non è consentito.</target>
+            </trans-unit>
+            <trans-unit id="79">
+                <source>The host could not be resolved.</source>
+                <target>L'host non può essere risolto.</target>
+            </trans-unit>
+            <trans-unit id="80">
+                <source>This value does not match the expected {{ charset }} charset.</source>
+                <target>Questo valore non corrisponde al charset {{ charset }}.</target>
+            </trans-unit>
+            <trans-unit id="81">
+                <source>This is not a valid Business Identifier Code (BIC).</source>
+                <target>Questo valore non è un codice BIC valido.</target>
+            </trans-unit>
+        </body>
+    </file>
+</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.ja.xlf b/vendor/symfony/validator/Resources/translations/validators.ja.xlf
new file mode 100644
index 0000000..a58f5b8
--- /dev/null
+++ b/vendor/symfony/validator/Resources/translations/validators.ja.xlf
@@ -0,0 +1,315 @@
+<?xml version="1.0"?>
+<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
+    <file source-language="en" datatype="plaintext" original="file.ext">
+        <body>
+            <trans-unit id="1">
+                <source>This value should be false.</source>
+                <target>falseでなければなりません。</target>
+            </trans-unit>
+            <trans-unit id="2">
+                <source>This value should be true.</source>
+                <target>trueでなければなりません。</target>
+            </trans-unit>
+            <trans-unit id="3">
+                <source>This value should be of type {{ type }}.</source>
+                <target>型は{{ type }}でなければなりません。</target>
+            </trans-unit>
+            <trans-unit id="4">
+                <source>This value should be blank.</source>
+                <target>空でなければなりません。</target>
+            </trans-unit>
+            <trans-unit id="5">
+                <source>The value you selected is not a valid choice.</source>
+                <target>有効な選択肢ではありません。</target>
+            </trans-unit>
+            <trans-unit id="6">
+                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
+                <target>{{ limit }}個以上選択してください。</target>
+            </trans-unit>
+            <trans-unit id="7">
+                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
+                <target>{{ limit }}個以内で選択してください。</target>
+            </trans-unit>
+            <trans-unit id="8">
+                <source>One or more of the given values is invalid.</source>
+                <target>無効な選択肢が含まれています。</target>
+            </trans-unit>
+            <trans-unit id="9">
+                <source>This field was not expected.</source>
+                <target>このフィールドは予期されていませんでした。</target>
+            </trans-unit>
+            <trans-unit id="10">
+                <source>This field is missing.</source>
+                <target>このフィールドは、欠落しています。</target>
+            </trans-unit>
+            <trans-unit id="11">
+                <source>This value is not a valid date.</source>
+                <target>有効な日付ではありません。</target>
+            </trans-unit>
+            <trans-unit id="12">
+                <source>This value is not a valid datetime.</source>
+                <target>有効な日時ではありません。</target>
+            </trans-unit>
+            <trans-unit id="13">
+                <source>This value is not a valid email address.</source>
+                <target>有効なメールアドレスではありません。</target>
+            </trans-unit>
+            <trans-unit id="14">
+                <source>The file could not be found.</source>
+                <target>ファイルが見つかりません。</target>
+            </trans-unit>
+            <trans-unit id="15">
+                <source>The file is not readable.</source>
+                <target>ファイルを読み込めません。</target>
+            </trans-unit>
+            <trans-unit id="16">
+                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>ファイルのサイズが大きすぎます({{ size }} {{ suffix }})。有効な最大サイズは{{ limit }} {{ suffix }}です。</target>
+            </trans-unit>
+            <trans-unit id="17">
+                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
+                <target>ファイルのMIMEタイプが無効です({{ type }})。有効なMIMEタイプは{{ types }}です。</target>
+            </trans-unit>
+            <trans-unit id="18">
+                <source>This value should be {{ limit }} or less.</source>
+                <target>{{ limit }}以下でなければなりません。</target>
+            </trans-unit>
+            <trans-unit id="19">
+                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
+                <target>値が長すぎます。{{ limit }}文字以内でなければなりません。</target>
+            </trans-unit>
+            <trans-unit id="20">
+                <source>This value should be {{ limit }} or more.</source>
+                <target>{{ limit }}以上でなければなりません。</target>
+            </trans-unit>
+            <trans-unit id="21">
+                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
+                <target>値が短すぎます。{{ limit }}文字以上でなければなりません。</target>
+            </trans-unit>
+            <trans-unit id="22">
+                <source>This value should not be blank.</source>
+                <target>空であってはなりません。</target>
+            </trans-unit>
+            <trans-unit id="23">
+                <source>This value should not be null.</source>
+                <target>nullであってはなりません。</target>
+            </trans-unit>
+            <trans-unit id="24">
+                <source>This value should be null.</source>
+                <target>nullでなければなりません。</target>
+            </trans-unit>
+            <trans-unit id="25">
+                <source>This value is not valid.</source>
+                <target>有効な値ではありません。</target>
+            </trans-unit>
+            <trans-unit id="26">
+                <source>This value is not a valid time.</source>
+                <target>有効な時刻ではありません。</target>
+            </trans-unit>
+            <trans-unit id="27">
+                <source>This value is not a valid URL.</source>
+                <target>有効なURLではありません。</target>
+            </trans-unit>
+            <trans-unit id="31">
+                <source>The two values should be equal.</source>
+                <target>2つの値が同じでなければなりません。</target>
+            </trans-unit>
+            <trans-unit id="32">
+                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>ファイルのサイズが大きすぎます。有効な最大サイズは{{ limit }} {{ suffix }}です。</target>
+            </trans-unit>
+            <trans-unit id="33">
+                <source>The file is too large.</source>
+                <target>ファイルのサイズが大きすぎます。</target>
+            </trans-unit>
+            <trans-unit id="34">
+                <source>The file could not be uploaded.</source>
+                <target>ファイルをアップロードできませんでした。</target>
+            </trans-unit>
+            <trans-unit id="35">
+                <source>This value should be a valid number.</source>
+                <target>有効な数字ではありません。</target>
+            </trans-unit>
+            <trans-unit id="36">
+                <source>This file is not a valid image.</source>
+                <target>ファイルが画像ではありません。</target>
+            </trans-unit>
+            <trans-unit id="37">
+                <source>This is not a valid IP address.</source>
+                <target>有効なIPアドレスではありません。</target>
+            </trans-unit>
+            <trans-unit id="38">
+                <source>This value is not a valid language.</source>
+                <target>有効な言語名ではありません。</target>
+            </trans-unit>
+            <trans-unit id="39">
+                <source>This value is not a valid locale.</source>
+                <target>有効なロケールではありません。</target>
+            </trans-unit>
+            <trans-unit id="40">
+                <source>This value is not a valid country.</source>
+                <target>有効な国名ではありません。</target>
+            </trans-unit>
+            <trans-unit id="41">
+                <source>This value is already used.</source>
+                <target>既に使用されています。</target>
+            </trans-unit>
+            <trans-unit id="42">
+                <source>The size of the image could not be detected.</source>
+                <target>画像のサイズが検出できません。</target>
+            </trans-unit>
+            <trans-unit id="43">
+                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
+                <target>画像の幅が大きすぎます({{ width }}ピクセル)。{{ max_width }}ピクセルまでにしてください。</target>
+            </trans-unit>
+            <trans-unit id="44">
+                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
+                <target>画像の幅が小さすぎます({{ width }}ピクセル)。{{ min_width }}ピクセル以上にしてください。</target>
+            </trans-unit>
+            <trans-unit id="45">
+                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
+                <target>画像の高さが大きすぎます({{ height }}ピクセル)。{{ max_height }}ピクセルまでにしてください。</target>
+            </trans-unit>
+            <trans-unit id="46">
+                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
+                <target>画像の高さが小さすぎます({{ height }}ピクセル)。{{ min_height }}ピクセル以上にしてください。</target>
+            </trans-unit>
+            <trans-unit id="47">
+                <source>This value should be the user's current password.</source>
+                <target>ユーザーの現在のパスワードでなければなりません。</target>
+            </trans-unit>
+            <trans-unit id="48">
+                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
+                <target>ちょうど{{ limit }}文字でなければなりません。</target>
+            </trans-unit>
+            <trans-unit id="49">
+                <source>The file was only partially uploaded.</source>
+                <target>ファイルのアップロードは完全ではありません。</target>
+            </trans-unit>
+            <trans-unit id="50">
+                <source>No file was uploaded.</source>
+                <target>ファイルがアップロードされていません。</target>
+            </trans-unit>
+            <trans-unit id="51">
+                <source>No temporary folder was configured in php.ini.</source>
+                <target>php.iniで一時フォルダが設定されていません。</target>
+            </trans-unit>
+            <trans-unit id="52">
+                <source>Cannot write temporary file to disk.</source>
+                <target>一時ファイルをディスクに書き込むことができません。</target>
+            </trans-unit>
+            <trans-unit id="53">
+                <source>A PHP extension caused the upload to fail.</source>
+                <target>PHP拡張によってアップロードに失敗しました。</target>
+            </trans-unit>
+            <trans-unit id="54">
+                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
+                <target>{{ limit }}個以上の要素を含んでなければいけません。</target>
+            </trans-unit>
+            <trans-unit id="55">
+                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
+                <target>要素は{{ limit }}個までです。</target>
+            </trans-unit>
+            <trans-unit id="56">
+                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
+                <target>要素はちょうど{{ limit }}個でなければなりません。</target>
+            </trans-unit>
+            <trans-unit id="57">
+                <source>Invalid card number.</source>
+                <target>無効なカード番号です。</target>
+            </trans-unit>
+            <trans-unit id="58">
+                <source>Unsupported card type or invalid card number.</source>
+                <target>未対応のカード種類又は無効なカード番号です。</target>
+            </trans-unit>
+            <trans-unit id="59">
+                <source>This is not a valid International Bank Account Number (IBAN).</source>
+                <target>有効なIBANコードではありません。</target>
+            </trans-unit>
+            <trans-unit id="60">
+                <source>This value is not a valid ISBN-10.</source>
+                <target>有効なISBN-10コードではありません。</target>
+            </trans-unit>
+            <trans-unit id="61">
+                <source>This value is not a valid ISBN-13.</source>
+                <target>有効なISBN-13コードではありません。</target>
+            </trans-unit>
+            <trans-unit id="62">
+                <source>This value is neither a valid ISBN-10 nor a valid ISBN-13.</source>
+                <target>有効なISBN-10コード又はISBN-13コードではありません。</target>
+            </trans-unit>
+            <trans-unit id="63">
+                <source>This value is not a valid ISSN.</source>
+                <target>有効なISSNコードではありません。</target>
+            </trans-unit>
+            <trans-unit id="64">
+                <source>This value is not a valid currency.</source>
+                <target>有効な貨幣ではありません。</target>
+            </trans-unit>
+            <trans-unit id="65">
+                <source>This value should be equal to {{ compared_value }}.</source>
+                <target>{{ compared_value }}と等しくなければなりません。</target>
+            </trans-unit>
+            <trans-unit id="66">
+                <source>This value should be greater than {{ compared_value }}.</source>
+                <target>{{ compared_value }}より大きくなければなりません。</target>
+            </trans-unit>
+            <trans-unit id="67">
+                <source>This value should be greater than or equal to {{ compared_value }}.</source>
+                <target>{{ compared_value }}以上でなければなりません。</target>
+            </trans-unit>
+            <trans-unit id="68">
+                <source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
+                <target>{{ compared_value_type }}としての{{ compared_value }}と等しくなければなりません。</target>
+            </trans-unit>
+            <trans-unit id="69">
+                <source>This value should be less than {{ compared_value }}.</source>
+                <target>{{ compared_value }}未満でなければなりません。</target>
+            </trans-unit>
+            <trans-unit id="70">
+                <source>This value should be less than or equal to {{ compared_value }}.</source>
+                <target>{{ compared_value }}以下でなければなりません。</target>
+            </trans-unit>
+            <trans-unit id="71">
+                <source>This value should not be equal to {{ compared_value }}.</source>
+                <target>{{ compared_value }}と等しくてはいけません。</target>
+            </trans-unit>
+            <trans-unit id="72">
+                <source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
+                <target>{{ compared_value_type }}としての{{ compared_value }}と等しくてはいけません。</target>
+            </trans-unit>
+            <trans-unit id="73">
+                <source>The image ratio is too big ({{ ratio }}). Allowed maximum ratio is {{ max_ratio }}.</source>
+                <target>画像のアスペクト比が大きすぎます({{ ratio }})。{{ max_ratio }}までにしてください。</target>
+            </trans-unit>
+            <trans-unit id="74">
+                <source>The image ratio is too small ({{ ratio }}). Minimum ratio expected is {{ min_ratio }}.</source>
+                <target>画像のアスペクト比が小さすぎます({{ ratio }})。{{ min_ratio }}以上にしてください。</target>
+            </trans-unit>
+            <trans-unit id="75">
+                <source>The image is square ({{ width }}x{{ height }}px). Square images are not allowed.</source>
+                <target>画像が正方形になっています({{ width }}x{{ height }}ピクセル)。正方形の画像は許可されていません。</target>
+            </trans-unit>
+            <trans-unit id="76">
+                <source>The image is landscape oriented ({{ width }}x{{ height }}px). Landscape oriented images are not allowed.</source>
+                <target>画像が横向きになっています({{ width }}x{{ height }}ピクセル)。横向きの画像は許可されていません。</target>
+            </trans-unit>
+            <trans-unit id="77">
+                <source>The image is portrait oriented ({{ width }}x{{ height }}px). Portrait oriented images are not allowed.</source>
+                <target>画像が縦向きになっています({{ width }}x{{ height }}ピクセル)。縦向きの画像は許可されていません。</target>
+            </trans-unit>
+            <trans-unit id="78">
+                <source>An empty file is not allowed.</source>
+                <target>空のファイルは許可されていません。</target>
+            </trans-unit>
+            <trans-unit id="79">
+                <source>The host could not be resolved.</source>
+                <target>ホストを解決できませんでした。</target>
+            </trans-unit>
+            <trans-unit id="80">
+                <source>This value does not match the expected {{ charset }} charset.</source>
+                <target>この値は予期される文字コード（{{ charset }}）と異なります。</target>
+            </trans-unit>
+        </body>
+    </file>
+</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.lb.xlf b/vendor/symfony/validator/Resources/translations/validators.lb.xlf
new file mode 100644
index 0000000..8281c7c
--- /dev/null
+++ b/vendor/symfony/validator/Resources/translations/validators.lb.xlf
@@ -0,0 +1,303 @@
+<?xml version="1.0"?>
+<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
+    <file source-language="en" datatype="plaintext" original="file.ext">
+        <body>
+            <trans-unit id="1">
+                <source>This value should be false.</source>
+                <target>Dëse Wäert sollt falsch sinn.</target>
+            </trans-unit>
+            <trans-unit id="2">
+                <source>This value should be true.</source>
+                <target>Dëse Wäert sollt wouer sinn.</target>
+            </trans-unit>
+            <trans-unit id="3">
+                <source>This value should be of type {{ type }}.</source>
+                <target>Dëse Wäert sollt vum Typ {{ type }} sinn.</target>
+            </trans-unit>
+            <trans-unit id="4">
+                <source>This value should be blank.</source>
+                <target>Dëse Wäert sollt eidel sinn.</target>
+            </trans-unit>
+            <trans-unit id="5">
+                <source>The value you selected is not a valid choice.</source>
+                <target>Dëse Wäert sollt enger vun de Wielméiglechkeeten entspriechen.</target>
+            </trans-unit>
+            <trans-unit id="6">
+                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
+                <target>Dir sollt mindestens {{ limit }} Méiglechkeete wielen.</target>
+            </trans-unit>
+            <trans-unit id="7">
+                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
+                <target>Dir sollt héchstens {{ limit }} Méiglechkeete wielen.</target>
+            </trans-unit>
+            <trans-unit id="8">
+                <source>One or more of the given values is invalid.</source>
+                <target>Een oder méi vun de Wäerter ass ongëlteg.</target>
+            </trans-unit>
+            <trans-unit id="9">
+                <source>The fields {{ fields }} were not expected.</source>
+                <target>D'Felder {{ fields }} goufen net erwaart.</target>
+            </trans-unit>
+            <trans-unit id="10">
+                <source>The fields {{ fields }} are missing.</source>
+                <target>D'Felder {{ fields }} feelen.</target>
+            </trans-unit>
+            <trans-unit id="11">
+                <source>This value is not a valid date.</source>
+                <target>Dëse Wäert entsprécht kenger gëlteger Datumsangab.</target>
+            </trans-unit>
+            <trans-unit id="12">
+                <source>This value is not a valid datetime.</source>
+                <target>Dëse Wäert entsprécht kenger gëlteger Datums- an Zäitangab.</target>
+            </trans-unit>
+            <trans-unit id="13">
+                <source>This value is not a valid email address.</source>
+                <target>Dëse Wäert ass keng gëlteg Email-Adress.</target>
+            </trans-unit>
+            <trans-unit id="14">
+                <source>The file could not be found.</source>
+                <target>De Fichier gouf net fonnt.</target>
+            </trans-unit>
+            <trans-unit id="15">
+                <source>The file is not readable.</source>
+                <target>De Fichier ass net liesbar.</target>
+            </trans-unit>
+            <trans-unit id="16">
+                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>De Fichier ass ze grouss ({{ size }} {{ suffix }}). Déi zougeloosse Maximalgréisst bedréit {{ limit }} {{ suffix }}.</target>
+            </trans-unit>
+            <trans-unit id="17">
+                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
+                <target>Den Typ vum Fichier ass ongëlteg ({{ type }}). Erlaabten Type sinn {{ types }}.</target>
+            </trans-unit>
+            <trans-unit id="18">
+                <source>This value should be {{ limit }} or less.</source>
+                <target>Dëse Wäert soll méi kleng oder gläich {{ limit }} sinn.</target>
+            </trans-unit>
+            <trans-unit id="19">
+                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
+                <target>Dës Zeecheketten ass ze laang. Se sollt héchstens {{ limit }} Zeechen hunn.</target>
+            </trans-unit>
+            <trans-unit id="20">
+                <source>This value should be {{ limit }} or more.</source>
+                <target>Dëse Wäert sollt méi grouss oder gläich {{ limit }} sinn.</target>
+            </trans-unit>
+            <trans-unit id="21">
+                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
+                <target>Dës Zeecheketten ass ze kuerz. Se sollt mindestens {{ limit }} Zeechen hunn.</target>
+            </trans-unit>
+            <trans-unit id="22">
+                <source>This value should not be blank.</source>
+                <target>Dëse Wäert sollt net eidel sinn.</target>
+            </trans-unit>
+            <trans-unit id="23">
+                <source>This value should not be null.</source>
+                <target>Dëst sollt keen Null-Wäert sinn.</target>
+            </trans-unit>
+            <trans-unit id="24">
+                <source>This value should be null.</source>
+                <target>Dëst sollt keen Null-Wäert sinn.</target>
+            </trans-unit>
+            <trans-unit id="25">
+                <source>This value is not valid.</source>
+                <target>Dëse Wäert ass net gëlteg.</target>
+            </trans-unit>
+            <trans-unit id="26">
+                <source>This value is not a valid time.</source>
+                <target>Dëse Wäert entsprécht kenger gëlteger Zäitangab.</target>
+            </trans-unit>
+            <trans-unit id="27">
+                <source>This value is not a valid URL.</source>
+                <target>Dëse Wäert ass keng gëlteg URL.</target>
+            </trans-unit>
+            <trans-unit id="31">
+                <source>The two values should be equal.</source>
+                <target>Béid Wäerter sollten identesch sinn.</target>
+            </trans-unit>
+            <trans-unit id="32">
+                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>De fichier ass ze grouss. Déi maximal Gréisst dierf {{ limit }} {{ suffix }} net depasséieren.</target>
+            </trans-unit>
+            <trans-unit id="33">
+                <source>The file is too large.</source>
+                <target>De Fichier ass ze grouss.</target>
+            </trans-unit>
+            <trans-unit id="34">
+                <source>The file could not be uploaded.</source>
+                <target>De Fichier konnt net eropgeluede ginn.</target>
+            </trans-unit>
+            <trans-unit id="35">
+                <source>This value should be a valid number.</source>
+                <target>Dëse Wäert sollt eng gëlteg Zuel sinn.</target>
+            </trans-unit>
+            <trans-unit id="36">
+                <source>This file is not a valid image.</source>
+                <target>Dëse Fichier ass kee gëltegt Bild.</target>
+            </trans-unit>
+            <trans-unit id="37">
+                <source>This is not a valid IP address.</source>
+                <target>Dëst ass keng gëlteg IP-Adress.</target>
+            </trans-unit>
+            <trans-unit id="38">
+                <source>This value is not a valid language.</source>
+                <target>Dëse Wäert aentsprécht kenger gëlteger Sprooch.</target>
+            </trans-unit>
+            <trans-unit id="39">
+                <source>This value is not a valid locale.</source>
+                <target>Dëse Wäert entsprécht kengem gëltege Gebittsschema.</target>
+            </trans-unit>
+            <trans-unit id="40">
+                <source>This value is not a valid country.</source>
+                <target>Dëse Wäert entsprécht kengem gëltege Land.</target>
+            </trans-unit>
+            <trans-unit id="41">
+                <source>This value is already used.</source>
+                <target>Dëse Wäert gëtt scho benotzt.</target>
+            </trans-unit>
+            <trans-unit id="42">
+                <source>The size of the image could not be detected.</source>
+                <target>D'Gréisst vum Bild konnt net detektéiert ginn.</target>
+            </trans-unit>
+            <trans-unit id="43">
+                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
+                <target>D'Breet vum Bild ass ze grouss ({{ width }}px). Déi erlaabte maximal Breet ass {{ max_width }}px.</target>
+            </trans-unit>
+            <trans-unit id="44">
+                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
+                <target>D'Breet vum Bild ass ze kleng ({{ width }}px). Déi minimal Breet ass {{ min_width }}px.</target>
+            </trans-unit>
+            <trans-unit id="45">
+                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
+                <target>D'Héicht vum Bild ass ze grouss ({{ height }}px). Déi erlaabte maximal Héicht ass {{ max_height }}px.</target>
+            </trans-unit>
+            <trans-unit id="46">
+                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
+                <target>D'Héicht vum Bild ass ze kleng ({{ height }}px). Déi minimal Héicht ass {{ min_height }}px.</target>
+            </trans-unit>
+            <trans-unit id="47">
+                <source>This value should be the user's current password.</source>
+                <target>Dëse Wäert sollt dem aktuelle Benotzerpasswuert entspriechen.</target>
+            </trans-unit>
+            <trans-unit id="48">
+                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
+                <target>Dëse Wäert sollt exactly {{ limit }} Buschtaf hunn.|Dëse Wäert sollt exakt {{ limit }} Buschtawen hunn.</target>
+            </trans-unit>
+            <trans-unit id="49">
+                <source>The file was only partially uploaded.</source>
+                <target>De Fichier gouf just deelweis eropgelueden.</target>
+            </trans-unit>
+            <trans-unit id="50">
+                <source>No file was uploaded.</source>
+                <target>Et gouf kee Fichier eropgelueden.</target>
+            </trans-unit>
+            <trans-unit id="51">
+                <source>No temporary folder was configured in php.ini.</source>
+                <target>Et gouf keen temporären Dossier an der php.ini konfiguréiert.</target>
+            </trans-unit>
+            <trans-unit id="52">
+                <source>Cannot write temporary file to disk.</source>
+                <target>Den temporäre Fichier kann net gespäichert ginn.</target>
+            </trans-unit>
+            <trans-unit id="53">
+                <source>A PHP extension caused the upload to fail.</source>
+                <target>Eng PHP-Erweiderung huet den Upload verhënnert.</target>
+            </trans-unit>
+            <trans-unit id="54">
+                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
+                <target>Dës Sammlung sollt {{ limit }} oder méi Elementer hunn.</target>
+            </trans-unit>
+            <trans-unit id="55">
+                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
+                <target>Dës Sammlung sollt {{ limit }} oder manner Elementer hunn.</target>
+            </trans-unit>
+            <trans-unit id="56">
+                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
+                <target>Dës Sammlung sollt exakt {{ limit }} Element hunn.|Dës Sammlung sollt exakt {{ limit }} Elementer hunn.</target>
+            </trans-unit>
+            <trans-unit id="57">
+                <source>Invalid card number.</source>
+                <target>Ongëlteg Kaartennummer.</target>
+            </trans-unit>
+            <trans-unit id="58">
+                <source>Unsupported card type or invalid card number.</source>
+                <target>Net ënnerstëtzte Kaartentyp oder ongëlteg Kaartennummer.</target>
+            </trans-unit>
+            <trans-unit id="59">
+                <source>This is not a valid International Bank Account Number (IBAN).</source>
+                <target>Dëst ass keng gëlteg IBAN-Kontonummer.</target>
+            </trans-unit>
+            <trans-unit id="60">
+                <source>This value is not a valid ISBN-10.</source>
+                <target>Dëse Wäert ass keng gëlteg ISBN-10.</target>
+            </trans-unit>
+            <trans-unit id="61">
+                <source>This value is not a valid ISBN-13.</source>
+                <target>Dëse Wäert ass keng gëlteg ISBN-13.</target>
+            </trans-unit>
+            <trans-unit id="62">
+                <source>This value is neither a valid ISBN-10 nor a valid ISBN-13.</source>
+                <target>Dëse Wäert ass weder eng gëlteg ISBN-10 nach eng gëlteg ISBN-13.</target>
+            </trans-unit>
+            <trans-unit id="63">
+                <source>This value is not a valid ISSN.</source>
+                <target>Dëse Wäert ass keng gëlteg ISSN.</target>
+            </trans-unit>
+            <trans-unit id="64">
+                <source>This value is not a valid currency.</source>
+                <target>Dëse Wäert ass keng gëlteg Währung.</target>
+            </trans-unit>
+            <trans-unit id="65">
+                <source>This value should be equal to {{ compared_value }}.</source>
+                <target>Dëse Wäert sollt {{ compared_value }} sinn.</target>
+            </trans-unit>
+            <trans-unit id="66">
+                <source>This value should be greater than {{ compared_value }}.</source>
+                <target>Dëse Wäert sollt méi grouss wéi {{ compared_value }} sinn.</target>
+            </trans-unit>
+            <trans-unit id="67">
+                <source>This value should be greater than or equal to {{ compared_value }}.</source>
+                <target>Dëse Wäert sollt méi grouss wéi oder gläich {{ compared_value }} sinn.</target>
+            </trans-unit>
+            <trans-unit id="68">
+                <source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
+                <target>Dëse Wäert sollt identesch si mat {{ compared_value_type }} {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="69">
+                <source>This value should be less than {{ compared_value }}.</source>
+                <target>Dëse Wäert sollt méi kleng wéi {{ compared_value }} sinn.</target>
+            </trans-unit>
+            <trans-unit id="70">
+                <source>This value should be less than or equal to {{ compared_value }}.</source>
+                <target>Dëse Wäert sollt méi kleng wéi oder gläich {{ compared_value }} sinn.</target>
+            </trans-unit>
+            <trans-unit id="71">
+                <source>This value should not be equal to {{ compared_value }}.</source>
+                <target>Dëse Wäert sollt net {{ compared_value }} sinn.</target>
+            </trans-unit>
+            <trans-unit id="72">
+                <source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
+                <target>Dëse Wäert sollt net identesch si mat {{ compared_value_type }} {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="73">
+                <source>The image ratio is too big ({{ ratio }}). Allowed maximum ratio is {{ max_ratio }}.</source>
+                <target>D'Säiteverhältnis vum Bild ass ze grouss ({{ ratio }}). Den erlaabte Maximalwäert ass {{ max_ratio }}.</target>
+            </trans-unit>
+            <trans-unit id="74">
+                <source>The image ratio is too small ({{ ratio }}). Minimum ratio expected is {{ min_ratio }}.</source>
+                <target>D'Säiteverhältnis vum Bild ass ze kleng ({{ ratio }}). Den erwaarte Minimalwäert ass {{ min_ratio }}.</target>
+            </trans-unit>
+            <trans-unit id="75">
+                <source>The image is square ({{ width }}x{{ height }}px). Square images are not allowed.</source>
+                <target>D'Bild ass quadratesch ({{ width }}x{{ height }}px). Quadratesch Biller sinn net erlaabt.</target>
+            </trans-unit>
+            <trans-unit id="76">
+                <source>The image is landscape oriented ({{ width }}x{{ height }}px). Landscape oriented images are not allowed.</source>
+                <target>D'Bild ass am Queeschformat ({{ width }}x{{ height }}px). Biller am Queeschformat sinn net erlaabt.</target>
+            </trans-unit>
+            <trans-unit id="77">
+                <source>The image is portrait oriented ({{ width }}x{{ height }}px). Portrait oriented images are not allowed.</source>
+                <target>D'Bild ass am Héichformat ({{ width }}x{{ height }}px). Biller am Héichformat sinn net erlaabt.</target>
+            </trans-unit>
+        </body>
+    </file>
+</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.lt.xlf b/vendor/symfony/validator/Resources/translations/validators.lt.xlf
new file mode 100644
index 0000000..a556c45
--- /dev/null
+++ b/vendor/symfony/validator/Resources/translations/validators.lt.xlf
@@ -0,0 +1,307 @@
+﻿<?xml version="1.0"?>
+<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
+    <file source-language="en" datatype="plaintext" original="file.ext">
+        <body>
+            <trans-unit id="1">
+                <source>This value should be false.</source>
+                <target>Reikšmė turi būti neigiama.</target>
+            </trans-unit>
+            <trans-unit id="2">
+                <source>This value should be true.</source>
+                <target>Reikšmė turi būti teigiama.</target>
+            </trans-unit>
+            <trans-unit id="3">
+                <source>This value should be of type {{ type }}.</source>
+                <target>Šios reikšmės tipas turi būti {{ type }}.</target>
+            </trans-unit>
+            <trans-unit id="4">
+                <source>This value should be blank.</source>
+                <target>Ši reikšmė turi būti tuščia.</target>
+            </trans-unit>
+            <trans-unit id="5">
+                <source>The value you selected is not a valid choice.</source>
+                <target>Neteisingas pasirinkimas.</target>
+            </trans-unit>
+            <trans-unit id="6">
+                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
+                <target>Turite pasirinkti bent {{ limit }} variantą.|Turite pasirinkti bent {{ limit }} variantus.|Turite pasirinkti bent {{ limit }} variantų.</target>
+            </trans-unit>
+            <trans-unit id="7">
+                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
+                <target>Turite pasirinkti ne daugiau kaip {{ limit }} variantą.|Turite pasirinkti ne daugiau kaip {{ limit }} variantus.|Turite pasirinkti ne daugiau kaip {{ limit }} variantų.</target>
+            </trans-unit>
+            <trans-unit id="8">
+                <source>One or more of the given values is invalid.</source>
+                <target>Viena ar daugiau įvestų reikšmių yra netinkamos.</target>
+            </trans-unit>
+            <trans-unit id="9">
+                <source>This field was not expected.</source>
+                <target>Nebuvo tikimasi Šis laukas.</target>
+            </trans-unit>
+            <trans-unit id="10">
+                <source>This field is missing.</source>
+                <target>Šiame lauke yra dingęs.</target>
+            </trans-unit>
+            <trans-unit id="11">
+                <source>This value is not a valid date.</source>
+                <target>Ši reikšmė nėra data.</target>
+            </trans-unit>
+            <trans-unit id="12">
+                <source>This value is not a valid datetime.</source>
+                <target>Ši reikšmė nera data ir laikas.</target>
+            </trans-unit>
+            <trans-unit id="13">
+                <source>This value is not a valid email address.</source>
+                <target>Ši reikšmė nėra tinkamas el. pašto adresas.</target>
+            </trans-unit>
+            <trans-unit id="14">
+                <source>The file could not be found.</source>
+                <target>Byla nerasta.</target>
+            </trans-unit>
+            <trans-unit id="15">
+                <source>The file is not readable.</source>
+                <target>Negalima nuskaityti bylos.</target>
+            </trans-unit>
+            <trans-unit id="16">
+                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>Byla yra per didelė ({{ size }} {{ suffix }}). Maksimalus dydis {{ limit }} {{ suffix }}.</target>
+            </trans-unit>
+            <trans-unit id="17">
+                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
+                <target>Netinkamas bylos tipas (mime type) ({{ type }}). Galimi bylų tipai {{ types }}.</target>
+            </trans-unit>
+            <trans-unit id="18">
+                <source>This value should be {{ limit }} or less.</source>
+                <target>Reikšmė turi būti {{ limit }} arba mažiau.</target>
+            </trans-unit>
+            <trans-unit id="19">
+                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
+                <target>Per didelis simbolių skaičius. Turi susidaryti iš {{ limit }} arba mažiau simbolių.|Per didelis simbolių skaičius. Turi susidaryti iš {{ limit }} arba mažiau simbolių.|Per didelis simbolių skaičius. Turi susidaryti iš {{ limit }} arba mažiau simbolių.</target>
+            </trans-unit>
+            <trans-unit id="20">
+                <source>This value should be {{ limit }} or more.</source>
+                <target>Reikšmė turi būti {{ limit }} arba daugiau.</target>
+            </trans-unit>
+            <trans-unit id="21">
+                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
+                <target>Per mažas simbolių skaičius. Turi susidaryti iš {{ limit }} arba daugiau simbolių.|Per mažas simbolių skaičius. Turi susidaryti iš {{ limit }} arba daugiau simbolių.|Per mažas simbolių skaičius. Turi susidaryti iš {{ limit }} arba daugiau simbolių.</target>
+            </trans-unit>
+            <trans-unit id="22">
+                <source>This value should not be blank.</source>
+                <target>Ši reikšmė negali būti tuščia.</target>
+            </trans-unit>
+            <trans-unit id="23">
+                <source>This value should not be null.</source>
+                <target>Ši reikšmė negali būti null.</target>
+            </trans-unit>
+            <trans-unit id="24">
+                <source>This value should be null.</source>
+                <target>Ši reikšmė turi būti null.</target>
+            </trans-unit>
+            <trans-unit id="25">
+                <source>This value is not valid.</source>
+                <target>Netinkama reikšmė.</target>
+            </trans-unit>
+            <trans-unit id="26">
+                <source>This value is not a valid time.</source>
+                <target>Ši reikšmė nėra laikas.</target>
+            </trans-unit>
+            <trans-unit id="27">
+                <source>This value is not a valid URL.</source>
+                <target>Ši reikšmė nėra tinkamas interneto adresas.</target>
+            </trans-unit>
+            <trans-unit id="31">
+                <source>The two values should be equal.</source>
+                <target>Abi reikšmės turi būti identiškos.</target>
+            </trans-unit>
+            <trans-unit id="32">
+                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>Byla yra per didelė. Maksimalus dydis yra {{ limit }} {{ suffix }}.</target>
+            </trans-unit>
+            <trans-unit id="33">
+                <source>The file is too large.</source>
+                <target>Byla per didelė.</target>
+            </trans-unit>
+            <trans-unit id="34">
+                <source>The file could not be uploaded.</source>
+                <target>Byla negali būti įkelta.</target>
+            </trans-unit>
+            <trans-unit id="35">
+                <source>This value should be a valid number.</source>
+                <target>Ši reikšmė turi būti skaičius.</target>
+            </trans-unit>
+            <trans-unit id="36">
+                <source>This value is not a valid country.</source>
+                <target>Ši reikšmė nėra tinkama šalis.</target>
+            </trans-unit>
+            <trans-unit id="37">
+                <source>This file is not a valid image.</source>
+                <target>Byla nėra paveikslėlis.</target>
+            </trans-unit>
+            <trans-unit id="38">
+                <source>This is not a valid IP address.</source>
+                <target>Ši reikšmė nėra tinkamas IP adresas.</target>
+            </trans-unit>
+            <trans-unit id="39">
+                <source>This value is not a valid language.</source>
+                <target>Ši reikšmė nėra tinkama kalba.</target>
+            </trans-unit>
+            <trans-unit id="40">
+                <source>This value is not a valid locale.</source>
+                <target>Ši reikšmė nėra tinkama lokalė.</target>
+            </trans-unit>
+            <trans-unit id="41">
+                <source>This value is already used.</source>
+                <target>Ši reikšmė jau yra naudojama.</target>
+            </trans-unit>
+            <trans-unit id="42">
+                <source>The size of the image could not be detected.</source>
+                <target>Nepavyko nustatyti nuotraukos dydžio.</target>
+            </trans-unit>
+            <trans-unit id="43">
+                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
+                <target>Nuotraukos plotis per didelis ({{ width }}px). Maksimalus leidžiamas plotis yra {{ max_width }}px.</target>
+            </trans-unit>
+            <trans-unit id="44">
+                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
+                <target>Nuotraukos plotis per mažas ({{ width }}px). Minimalus leidžiamas plotis yra {{ min_width }}px.</target>
+            </trans-unit>
+            <trans-unit id="45">
+                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
+                <target>Nuotraukos aukštis per didelis ({{ height }}px). Maksimalus leidžiamas aukštis yra {{ max_height }}px.</target>
+            </trans-unit>
+            <trans-unit id="46">
+                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
+                <target>Nuotraukos aukštis per mažas ({{ height }}px). Minimalus leidžiamas aukštis yra {{ min_height }}px.</target>
+            </trans-unit>
+            <trans-unit id="47">
+                <source>This value should be the user's current password.</source>
+                <target>Ši reikšmė turi sutapti su dabartiniu naudotojo slaptažodžiu.</target>
+            </trans-unit>
+            <trans-unit id="48">
+                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
+                <target>Ši reikšmė turi turėti lygiai {{ limit }} simbolį.|Ši reikšmė turi turėti lygiai {{ limit }} simbolius.|Ši reikšmė turi turėti lygiai {{ limit }} simbolių.</target>
+            </trans-unit>
+            <trans-unit id="49">
+                <source>The file was only partially uploaded.</source>
+                <target>Failas buvo tik dalinai įkeltas.</target>
+            </trans-unit>
+            <trans-unit id="50">
+                <source>No file was uploaded.</source>
+                <target>Nebuvo įkelta jokių failų.</target>
+            </trans-unit>
+            <trans-unit id="51">
+                <source>No temporary folder was configured in php.ini.</source>
+                <target>Nėra sukonfiguruoto jokio laikino katalogo php.ini faile.</target>
+            </trans-unit>
+            <trans-unit id="52">
+                <source>Cannot write temporary file to disk.</source>
+                <target>Nepavyko išsaugoti laikino failo.</target>
+            </trans-unit>
+            <trans-unit id="53">
+                <source>A PHP extension caused the upload to fail.</source>
+                <target>PHP plėtinys sutrukdė failo įkėlimą ir jis nepavyko.</target>
+            </trans-unit>
+            <trans-unit id="54">
+                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
+                <target>Sąraše turi būti {{ limit }} arba daugiau įrašų.|Sąraše turi būti {{ limit }} arba daugiau įrašų.|Sąraše turi būti {{ limit }} arba daugiau įrašų.</target>
+            </trans-unit>
+            <trans-unit id="55">
+                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
+                <target>Sąraše turi būti {{ limit }} arba mažiau įrašų.|Sąraše turi būti {{ limit }} arba mažiau įrašų.|Sąraše turi būti {{ limit }} arba mažiau įrašų.</target>
+            </trans-unit>
+            <trans-unit id="56">
+                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
+                <target>Sąraše turi būti lygiai {{ limit }} įrašas.|Sąraše turi būti lygiai {{ limit }} įrašai.|Sąraše turi būti lygiai {{ limit }} įrašų.</target>
+            </trans-unit>
+            <trans-unit id="57">
+                <source>Invalid card number.</source>
+                <target>Klaidingas kortelės numeris.</target>
+            </trans-unit>
+            <trans-unit id="58">
+                <source>Unsupported card type or invalid card number.</source>
+                <target>Kortelės tipas nepalaikomas arba klaidingas kortelės numeris.</target>
+            </trans-unit>
+            <trans-unit id="59">
+                <source>This is not a valid International Bank Account Number (IBAN).</source>
+                <target>Ši reišmė neatitinka tarptautinio banko sąskaitos numerio formato (IBAN).</target>
+            </trans-unit>
+            <trans-unit id="60">
+                <source>This value is not a valid ISBN-10.</source>
+                <target>Ši reikšmė neatitinka ISBN-10 formato.</target>
+            </trans-unit>
+            <trans-unit id="61">
+                <source>This value is not a valid ISBN-13.</source>
+                <target>Ši reikšmė neatitinka ISBN-13 formato.</target>
+            </trans-unit>
+            <trans-unit id="62">
+                <source>This value is neither a valid ISBN-10 nor a valid ISBN-13.</source>
+                <target>Ši reikšmė neatitinka nei ISBN-10, nei ISBN-13 formato.</target>
+            </trans-unit>
+            <trans-unit id="63">
+                <source>This value is not a valid ISSN.</source>
+                <target>Ši reišmė neatitinka ISSN formato.</target>
+            </trans-unit>
+            <trans-unit id="64">
+                <source>This value is not a valid currency.</source>
+                <target>Netinkamas valiutos formatas.</target>
+            </trans-unit>
+            <trans-unit id="65">
+                <source>This value should be equal to {{ compared_value }}.</source>
+                <target>Ši reikšmė turi būti lygi {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="66">
+                <source>This value should be greater than {{ compared_value }}.</source>
+                <target>Ši reikšmė turi būti didesnė už {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="67">
+                <source>This value should be greater than or equal to {{ compared_value }}.</source>
+                <target>Ši reikšmė turi būti didesnė už arba lygi {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="68">
+                <source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
+                <target>Ši reikšmė turi būti identiška {{ compared_value_type }} {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="69">
+                <source>This value should be less than {{ compared_value }}.</source>
+                <target>Ši reikšmė turi būti mažesnė už {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="70">
+                <source>This value should be less than or equal to {{ compared_value }}.</source>
+                <target>Ši reikšmė turi būti mažesnė už arba lygi {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="71">
+                <source>This value should not be equal to {{ compared_value }}.</source>
+                <target>Ši reikšmė neturi būti lygi {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="72">
+                <source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
+                <target>Ši reikšmė neturi būti identiška {{ compared_value_type }} {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="73">
+                <source>The image ratio is too big ({{ ratio }}). Allowed maximum ratio is {{ max_ratio }}.</source>
+                <target>Nuotraukos santykis yra per didelis ({{ ratio }}). Didžiausias leistinas santykis yra {{ max_ratio }}.</target>
+            </trans-unit>
+            <trans-unit id="74">
+                <source>The image ratio is too small ({{ ratio }}). Minimum ratio expected is {{ min_ratio }}.</source>
+                <target>Nuotraukos santykis yra per mažas ({{ ratio }}). Mažiausias leistinas santykis yra {{ min_ratio }}.</target>
+            </trans-unit>
+            <trans-unit id="75">
+                <source>The image is square ({{ width }}x{{ height }}px). Square images are not allowed.</source>
+                <target>Nuotrauka yra kvadratinė ({{ width }}x{{ height }}px). Kvadratinės nuotraukos nėra leistinos.</target>
+            </trans-unit>
+            <trans-unit id="76">
+                <source>The image is landscape oriented ({{ width }}x{{ height }}px). Landscape oriented images are not allowed.</source>
+                <target>Nuotrauka orientuota į plotį ({{ width }}x{{ height }}px). Nuotraukos orientuotos į plotį nėra leistinos.</target>
+            </trans-unit>
+            <trans-unit id="77">
+                <source>The image is portrait oriented ({{ width }}x{{ height }}px). Portrait oriented images are not allowed.</source>
+                <target>Nuotrauka orientuota į aukštį ({{ width }}x{{ height }}px). Nuotraukos orientuotos į aukštį nėra leistinos.</target>
+            </trans-unit>
+            <trans-unit id="78">
+                <source>An empty file is not allowed.</source>
+                <target>Failas negali būti tuščias.</target>
+            </trans-unit>
+        </body>
+    </file>
+</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.mn.xlf b/vendor/symfony/validator/Resources/translations/validators.mn.xlf
new file mode 100644
index 0000000..dfe7eeb
--- /dev/null
+++ b/vendor/symfony/validator/Resources/translations/validators.mn.xlf
@@ -0,0 +1,151 @@
+﻿<?xml version="1.0"?>
+<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
+    <file source-language="en" datatype="plaintext" original="file.ext">
+        <body>
+            <trans-unit id="1">
+                <source>This value should be false.</source>
+                <target>Энэ утга буруу байх ёстой.</target>
+            </trans-unit>
+            <trans-unit id="2">
+                <source>This value should be true.</source>
+                <target>Энэ утга үнэн байх ёстой.</target>
+            </trans-unit>
+            <trans-unit id="3">
+                <source>This value should be of type {{ type }}.</source>
+                <target>Энэ утга  {{ type }} -н төрөл байх ёстой.</target>
+            </trans-unit>
+            <trans-unit id="4">
+                <source>This value should be blank.</source>
+                <target>Энэ утга хоосон байх ёстой.</target>
+            </trans-unit>
+            <trans-unit id="5">
+                <source>The value you selected is not a valid choice.</source>
+                <target>Сонгосон утга буруу байна.</target>
+            </trans-unit>
+            <trans-unit id="6">
+                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
+                <target>Хамгийн багадаа {{ limit }} утга сонгогдсон байх ёстой.</target>
+            </trans-unit>
+            <trans-unit id="7">
+                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
+                <target>Хамгийн ихдээ {{ limit }} утга сонгогдох боломжтой.</target>
+            </trans-unit>
+            <trans-unit id="8">
+                <source>One or more of the given values is invalid.</source>
+                <target>Өгөгдсөн нэг эсвэл нэгээс олон утга буруу байна.</target>
+            </trans-unit>
+            <trans-unit id="9">
+                <source>This field was not expected.</source>
+                <target>Энэ талбар нь хүлээгдэж байсан юм.</target>
+            </trans-unit>
+            <trans-unit id="10">
+                <source>This field is missing.</source>
+                <target>Энэ талбар нь алга болсон байна.</target>
+            </trans-unit>
+            <trans-unit id="11">
+                <source>This value is not a valid date.</source>
+                <target>Энэ утга буруу date төрөл байна .</target>
+            </trans-unit>
+            <trans-unit id="12">
+                <source>This value is not a valid datetime.</source>
+                <target>Энэ утга буруу цаг төрөл байна.</target>
+            </trans-unit>
+            <trans-unit id="13">
+                <source>This value is not a valid email address.</source>
+                <target>И-майл хаяг буруу байна.</target>
+            </trans-unit>
+            <trans-unit id="14">
+                <source>The file could not be found.</source>
+                <target>Файл олдсонгүй.</target>
+            </trans-unit>
+            <trans-unit id="15">
+                <source>The file is not readable.</source>
+                <target>Файл уншигдахуйц биш байна.</target>
+            </trans-unit>
+            <trans-unit id="16">
+                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>Файл хэтэрхий том байна ({{ size }} {{ suffix }}). Зөвшөөрөгдөх дээд хэмжээ  {{ limit }} {{ suffix }} байна.</target>
+            </trans-unit>
+            <trans-unit id="17">
+                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
+                <target>Файлын MIME-төрөл нь буруу байна ({{ type }}). Зөвшөөрөгдөх MIME-төрлүүд {{ types }}.</target>
+            </trans-unit>
+            <trans-unit id="18">
+                <source>This value should be {{ limit }} or less.</source>
+                <target>Энэ утга  {{ limit }} юмуу эсвэл бага байна.</target>
+            </trans-unit>
+            <trans-unit id="19">
+                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
+                <target>Энэ утга хэтэрхий урт байна. {{ limit }} тэмдэгтийн урттай юмуу эсвэл бага байна.</target>
+            </trans-unit>
+            <trans-unit id="20">
+                <source>This value should be {{ limit }} or more.</source>
+                <target>Энэ утга {{ limit }} юмуу эсвэл их байна.</target>
+            </trans-unit>
+            <trans-unit id="21">
+                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
+                <target>Энэ утга хэтэрхий богино байна. {{ limit }} тэмдэгт эсвэл их байна.</target>
+            </trans-unit>
+            <trans-unit id="22">
+                <source>This value should not be blank.</source>
+                <target>Энэ утга хоосон байж болохгүй.</target>
+            </trans-unit>
+            <trans-unit id="23">
+                <source>This value should not be null.</source>
+                <target>Энэ утга null байж болохгүй.</target>
+            </trans-unit>
+            <trans-unit id="24">
+                <source>This value should be null.</source>
+                <target>Энэ утга null байна.</target>
+            </trans-unit>
+            <trans-unit id="25">
+                <source>This value is not valid.</source>
+                <target>Энэ утга буруу байна.</target>
+            </trans-unit>
+            <trans-unit id="26">
+                <source>This value is not a valid time.</source>
+                <target>Энэ утга буруу цаг төрөл байна.</target>
+            </trans-unit>
+            <trans-unit id="27">
+                <source>This value is not a valid URL.</source>
+                <target>Энэ утга буруу URL байна .</target>
+            </trans-unit>
+            <trans-unit id="31">
+                <source>The two values should be equal.</source>
+                <target>Хоёр утгууд ижил байх ёстой.</target>
+            </trans-unit>
+            <trans-unit id="32">
+                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>Файл хэтэрхий том байна. Зөвшөөрөгдөх дээд хэмжээ нь {{ limit }} {{ suffix }} байна.</target>
+            </trans-unit>
+            <trans-unit id="33">
+                <source>The file is too large.</source>
+                <target>Файл хэтэрхий том байна.</target>
+            </trans-unit>
+            <trans-unit id="34">
+                <source>The file could not be uploaded.</source>
+                <target>Файл upload хийгдсэнгүй.</target>
+            </trans-unit>
+            <trans-unit id="35">
+                <source>This value should be a valid number.</source>
+                <target>Энэ утга зөвхөн тоо байна.</target>
+            </trans-unit>
+            <trans-unit id="36">
+                <source>This value is not a valid country.</source>
+                <target>Энэ утга үнэн бодит улс биш байна.</target>
+            </trans-unit>
+            <trans-unit id="37">
+                <source>This file is not a valid image.</source>
+                <target>Файл зураг биш байна.</target>
+            </trans-unit>
+            <trans-unit id="38">
+                <source>This is not a valid IP address.</source>
+                <target>IP хаяг зөв биш байна.</target>
+            </trans-unit>
+            <trans-unit id="39">
+                <source>This value is not a valid language.</source>
+                <target>Энэ утга үнэн зөв хэл биш байна .</target>
+            </trans-unit>
+        </body>
+    </file>
+</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.nb.xlf b/vendor/symfony/validator/Resources/translations/validators.nb.xlf
new file mode 100644
index 0000000..a8b790c
--- /dev/null
+++ b/vendor/symfony/validator/Resources/translations/validators.nb.xlf
@@ -0,0 +1,155 @@
+<?xml version="1.0"?>
+<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
+    <file source-language="en" datatype="plaintext" original="file.ext">
+        <body>
+            <trans-unit id="1">
+                <source>This value should be false.</source>
+                <target>Verdien skal være falsk.</target>
+            </trans-unit>
+            <trans-unit id="2">
+                <source>This value should be true.</source>
+                <target>Verdien skal være sann.</target>
+            </trans-unit>
+            <trans-unit id="3">
+                <source>This value should be of type {{ type }}.</source>
+                <target>Verdien skal være av typen {{ type }}.</target>
+            </trans-unit>
+            <trans-unit id="4">
+                <source>This value should be blank.</source>
+                <target>Verdien skal være blank.</target>
+            </trans-unit>
+            <trans-unit id="5">
+                <source>The value you selected is not a valid choice.</source>
+                <target>Verdien skal være en av de gitte valg.</target>
+            </trans-unit>
+            <trans-unit id="6">
+                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
+                <target>Du skal velge minst {{ limit }} valg.</target>
+            </trans-unit>
+            <trans-unit id="7">
+                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
+                <target>Du kan maks velge {{ limit }} valg.</target>
+            </trans-unit>
+            <trans-unit id="8">
+                <source>One or more of the given values is invalid.</source>
+                <target>En eller flere av de oppgitte verdier er ugyldige.</target>
+            </trans-unit>
+            <trans-unit id="9">
+                <source>This field was not expected.</source>
+                <target>Dette feltet ikke var forventet.</target>
+            </trans-unit>
+            <trans-unit id="10">
+                <source>This field is missing.</source>
+                <target>Dette feltet mangler.</target>
+            </trans-unit>
+            <trans-unit id="11">
+                <source>This value is not a valid date.</source>
+                <target>Verdien er ikke en gyldig dato.</target>
+            </trans-unit>
+            <trans-unit id="12">
+                <source>This value is not a valid datetime.</source>
+                <target>Verdien er ikke en gyldig dato og tid.</target>
+            </trans-unit>
+            <trans-unit id="13">
+                <source>This value is not a valid email address.</source>
+                <target>Verdien er ikke en gyldig e-mail adresse.</target>
+            </trans-unit>
+            <trans-unit id="14">
+                <source>The file could not be found.</source>
+                <target>Filen kunne ikke finnes.</target>
+            </trans-unit>
+            <trans-unit id="15">
+                <source>The file is not readable.</source>
+                <target>Filen kan ikke leses.</target>
+            </trans-unit>
+            <trans-unit id="16">
+                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>Filen er for stor ({{ size }} {{ suffix }}). Tilatte maksimale størrelse {{ limit }} {{ suffix }}.</target>
+            </trans-unit>
+            <trans-unit id="17">
+                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
+                <target>Mimetypen av filen er ugyldig ({{ type }}). Tilatte mimetyper er {{ types }}.</target>
+            </trans-unit>
+            <trans-unit id="18">
+                <source>This value should be {{ limit }} or less.</source>
+                <target>Verdien skal være {{ limit }} eller mindre.</target>
+            </trans-unit>
+            <trans-unit id="19">
+                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
+                <target>Verdien er for lang. Den skal ha {{ limit }} bokstaver eller mindre.</target>
+            </trans-unit>
+            <trans-unit id="20">
+                <source>This value should be {{ limit }} or more.</source>
+                <target>Verdien skal være {{ limit }} eller mer.</target>
+            </trans-unit>
+            <trans-unit id="21">
+                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
+                <target>Verdien er for kort. Den skal ha {{ limit }} tegn eller flere.</target>
+            </trans-unit>
+            <trans-unit id="22">
+                <source>This value should not be blank.</source>
+                <target>Verdien må ikke være blank.</target>
+            </trans-unit>
+            <trans-unit id="23">
+                <source>This value should not be null.</source>
+                <target>Verdien må ikke være tom (null).</target>
+            </trans-unit>
+            <trans-unit id="24">
+                <source>This value should be null.</source>
+                <target>Verdien skal være tom (null).</target>
+            </trans-unit>
+            <trans-unit id="25">
+                <source>This value is not valid.</source>
+                <target>Verdien er ikke gyldig.</target>
+            </trans-unit>
+            <trans-unit id="26">
+                <source>This value is not a valid time.</source>
+                <target>Verdien er ikke en gyldig tid.</target>
+            </trans-unit>
+            <trans-unit id="27">
+                <source>This value is not a valid URL.</source>
+                <target>Verdien er ikke en gyldig URL.</target>
+            </trans-unit>
+            <trans-unit id="31">
+                <source>The two values should be equal.</source>
+                <target>De to verdier skal være ens.</target>
+            </trans-unit>
+            <trans-unit id="32">
+                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>Filen er for stor. Den maksimale størrelse er {{ limit }} {{ suffix }}.</target>
+            </trans-unit>
+            <trans-unit id="33">
+                <source>The file is too large.</source>
+                <target>Filen er for stor.</target>
+            </trans-unit>
+            <trans-unit id="34">
+                <source>The file could not be uploaded.</source>
+                <target>Filen kunne ikke lastes opp.</target>
+            </trans-unit>
+            <trans-unit id="35">
+                <source>This value should be a valid number.</source>
+                <target>Denne verdi skal være et gyldig tall.</target>
+            </trans-unit>
+            <trans-unit id="36">
+                <source>This file is not a valid image.</source>
+                <target>Denne filen er ikke et gyldig bilde.</target>
+            </trans-unit>
+            <trans-unit id="37">
+                <source>This is not a valid IP address.</source>
+                <target>Dette er ikke en gyldig IP adresse.</target>
+            </trans-unit>
+            <trans-unit id="38">
+                <source>This value is not a valid language.</source>
+                <target>Denne verdi er ikke et gyldig språk.</target>
+            </trans-unit>
+            <trans-unit id="39">
+                <source>This value is not a valid locale.</source>
+                <target>Denne verdi er ikke en gyldig lokalitet.</target>
+            </trans-unit>
+            <trans-unit id="40">
+                <source>This value is not a valid country.</source>
+                <target>Denne verdi er ikke et gyldig land.</target>
+            </trans-unit>
+        </body>
+    </file>
+</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.nl.xlf b/vendor/symfony/validator/Resources/translations/validators.nl.xlf
new file mode 100644
index 0000000..fe33469
--- /dev/null
+++ b/vendor/symfony/validator/Resources/translations/validators.nl.xlf
@@ -0,0 +1,311 @@
+<?xml version="1.0"?>
+<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
+    <file source-language="en" datatype="plaintext" original="file.ext">
+        <body>
+            <trans-unit id="1">
+                <source>This value should be false.</source>
+                <target>Deze waarde mag niet waar zijn.</target>
+            </trans-unit>
+            <trans-unit id="2">
+                <source>This value should be true.</source>
+                <target>Deze waarde moet waar zijn.</target>
+            </trans-unit>
+            <trans-unit id="3">
+                <source>This value should be of type {{ type }}.</source>
+                <target>Deze waarde moet van het type {{ type }} zijn.</target>
+            </trans-unit>
+            <trans-unit id="4">
+                <source>This value should be blank.</source>
+                <target>Deze waarde moet leeg zijn.</target>
+            </trans-unit>
+            <trans-unit id="5">
+                <source>The value you selected is not a valid choice.</source>
+                <target>De geselecteerde waarde is geen geldige optie.</target>
+            </trans-unit>
+            <trans-unit id="6">
+                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
+                <target>Selecteer ten minste {{ limit }} optie.|Selecteer ten minste {{ limit }} opties.</target>
+            </trans-unit>
+            <trans-unit id="7">
+                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
+                <target>Selecteer maximaal {{ limit }} optie.|Selecteer maximaal {{ limit }} opties.</target>
+            </trans-unit>
+            <trans-unit id="8">
+                <source>One or more of the given values is invalid.</source>
+                <target>Eén of meer van de ingegeven waarden zijn ongeldig.</target>
+            </trans-unit>
+            <trans-unit id="9">
+                <source>This field was not expected.</source>
+                <target>Dit veld was niet verwacht.</target>
+            </trans-unit>
+            <trans-unit id="10">
+                <source>This field is missing.</source>
+                <target>Dit veld ontbreekt.</target>
+            </trans-unit>
+            <trans-unit id="11">
+                <source>This value is not a valid date.</source>
+                <target>Deze waarde is geen geldige datum.</target>
+            </trans-unit>
+            <trans-unit id="12">
+                <source>This value is not a valid datetime.</source>
+                <target>Deze waarde is geen geldige datum en tijd.</target>
+            </trans-unit>
+            <trans-unit id="13">
+                <source>This value is not a valid email address.</source>
+                <target>Deze waarde is geen geldig e-mailadres.</target>
+            </trans-unit>
+            <trans-unit id="14">
+                <source>The file could not be found.</source>
+                <target>Het bestand is niet gevonden.</target>
+            </trans-unit>
+            <trans-unit id="15">
+                <source>The file is not readable.</source>
+                <target>Het bestand is niet leesbaar.</target>
+            </trans-unit>
+            <trans-unit id="16">
+                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>Het bestand is te groot ({{ size }} {{ suffix }}). Toegestane maximum grootte is {{ limit }} {{ suffix }}.</target>
+            </trans-unit>
+            <trans-unit id="17">
+                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
+                <target>Het mime type van het bestand is ongeldig ({{ type }}). Toegestane mime types zijn {{ types }}.</target>
+            </trans-unit>
+            <trans-unit id="18">
+                <source>This value should be {{ limit }} or less.</source>
+                <target>Deze waarde moet {{ limit }} of minder zijn.</target>
+            </trans-unit>
+            <trans-unit id="19">
+                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
+                <target>Deze waarde is te lang. Hij mag maximaal {{ limit }} teken bevatten.|Deze waarde is te lang. Hij mag maximaal {{ limit }} tekens bevatten.</target>
+            </trans-unit>
+            <trans-unit id="20">
+                <source>This value should be {{ limit }} or more.</source>
+                <target>Deze waarde moet {{ limit }} of meer zijn.</target>
+            </trans-unit>
+            <trans-unit id="21">
+                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
+                <target>Deze waarde is te kort. Hij moet tenminste {{ limit }} teken bevatten.|Deze waarde is te kort. Hij moet tenminste {{ limit }} tekens bevatten.</target>
+            </trans-unit>
+            <trans-unit id="22">
+                <source>This value should not be blank.</source>
+                <target>Deze waarde mag niet leeg zijn.</target>
+            </trans-unit>
+            <trans-unit id="23">
+                <source>This value should not be null.</source>
+                <target>Deze waarde mag niet null zijn.</target>
+            </trans-unit>
+            <trans-unit id="24">
+                <source>This value should be null.</source>
+                <target>Deze waarde moet null zijn.</target>
+            </trans-unit>
+            <trans-unit id="25">
+                <source>This value is not valid.</source>
+                <target>Deze waarde is ongeldig.</target>
+            </trans-unit>
+            <trans-unit id="26">
+                <source>This value is not a valid time.</source>
+                <target>Deze waarde is geen geldige tijd.</target>
+            </trans-unit>
+            <trans-unit id="27">
+                <source>This value is not a valid URL.</source>
+                <target>Deze waarde is geen geldige URL.</target>
+            </trans-unit>
+            <trans-unit id="31">
+                <source>The two values should be equal.</source>
+                <target>De twee waarden moeten gelijk zijn.</target>
+            </trans-unit>
+            <trans-unit id="32">
+                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>Het bestand is te groot. Toegestane maximum grootte is {{ limit }} {{ suffix }}.</target>
+            </trans-unit>
+            <trans-unit id="33">
+                <source>The file is too large.</source>
+                <target>Het bestand is te groot.</target>
+            </trans-unit>
+            <trans-unit id="34">
+                <source>The file could not be uploaded.</source>
+                <target>Het bestand kon niet geüpload worden.</target>
+            </trans-unit>
+            <trans-unit id="35">
+                <source>This value should be a valid number.</source>
+                <target>Deze waarde moet een geldig getal zijn.</target>
+            </trans-unit>
+            <trans-unit id="36">
+                <source>This file is not a valid image.</source>
+                <target>Dit bestand is geen geldige afbeelding.</target>
+            </trans-unit>
+            <trans-unit id="37">
+                <source>This is not a valid IP address.</source>
+                <target>Dit is geen geldig IP-adres.</target>
+            </trans-unit>
+            <trans-unit id="38">
+                <source>This value is not a valid language.</source>
+                <target>Deze waarde representeert geen geldige taal.</target>
+            </trans-unit>
+            <trans-unit id="39">
+                <source>This value is not a valid locale.</source>
+                <target>Deze waarde representeert geen geldige lokalisering.</target>
+            </trans-unit>
+            <trans-unit id="40">
+                <source>This value is not a valid country.</source>
+                <target>Deze waarde representeert geen geldig land.</target>
+            </trans-unit>
+            <trans-unit id="41">
+                <source>This value is already used.</source>
+                <target>Deze waarde wordt al gebruikt.</target>
+            </trans-unit>
+            <trans-unit id="42">
+                <source>The size of the image could not be detected.</source>
+                <target>De grootte van de afbeelding kon niet bepaald worden.</target>
+            </trans-unit>
+            <trans-unit id="43">
+                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
+                <target>De afbeelding is te breed ({{ width }}px). De maximaal toegestane breedte is {{ max_width }}px.</target>
+            </trans-unit>
+            <trans-unit id="44">
+                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
+                <target>De afbeelding is niet breed genoeg ({{ width }}px). De minimaal verwachte breedte is {{ min_width }}px.</target>
+            </trans-unit>
+            <trans-unit id="45">
+                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
+                <target>De afbeelding is te hoog ({{ height }}px). De maximaal toegestane hoogte is {{ max_height }}px.</target>
+            </trans-unit>
+            <trans-unit id="46">
+                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
+                <target>De afbeelding is niet hoog genoeg ({{ height }}px). De minimaal verwachte hoogte is {{ min_height }}px.</target>
+            </trans-unit>
+            <trans-unit id="47">
+                <source>This value should be the user's current password.</source>
+                <target>Deze waarde moet het huidige wachtwoord van de gebruiker zijn.</target>
+            </trans-unit>
+            <trans-unit id="48">
+                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
+                <target>Deze waarde moet exact {{ limit }} teken lang zijn.|Deze waarde moet exact {{ limit }} tekens lang zijn.</target>
+            </trans-unit>
+            <trans-unit id="49">
+                <source>The file was only partially uploaded.</source>
+                <target>Het bestand is niet geheel geüpload.</target>
+            </trans-unit>
+            <trans-unit id="50">
+                <source>No file was uploaded.</source>
+                <target>Er is geen bestand geüpload.</target>
+            </trans-unit>
+            <trans-unit id="51">
+                <source>No temporary folder was configured in php.ini.</source>
+                <target>Er is geen tijdelijke map geconfigureerd in php.ini.</target>
+            </trans-unit>
+            <trans-unit id="52">
+                <source>Cannot write temporary file to disk.</source>
+                <target>Kan het tijdelijke bestand niet wegschrijven op disk.</target>
+            </trans-unit>
+            <trans-unit id="53">
+                <source>A PHP extension caused the upload to fail.</source>
+                <target>De upload is mislukt vanwege een PHP-extensie.</target>
+            </trans-unit>
+            <trans-unit id="54">
+                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
+                <target>Deze collectie moet {{ limit }} element of meer bevatten.|Deze collectie moet {{ limit }} elementen of meer bevatten.</target>
+            </trans-unit>
+            <trans-unit id="55">
+                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
+                <target>Deze collectie moet {{ limit }} element of minder bevatten.|Deze collectie moet {{ limit }} elementen of minder bevatten.</target>
+            </trans-unit>
+            <trans-unit id="56">
+                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
+                <target>Deze collectie moet exact {{ limit }} element bevatten.|Deze collectie moet exact {{ limit }} elementen bevatten.</target>
+            </trans-unit>
+            <trans-unit id="57">
+                <source>Invalid card number.</source>
+                <target>Ongeldig creditcardnummer.</target>
+            </trans-unit>
+            <trans-unit id="58">
+                <source>Unsupported card type or invalid card number.</source>
+                <target>Niet-ondersteund type creditcard of ongeldig nummer.</target>
+            </trans-unit>
+            <trans-unit id="59">
+                <source>This is not a valid International Bank Account Number (IBAN).</source>
+                <target>Dit is geen geldig internationaal bankrekeningnummer (IBAN).</target>
+            </trans-unit>
+             <trans-unit id="60">
+                <source>This value is not a valid ISBN-10.</source>
+                <target>Deze waarde is geen geldige ISBN-10.</target>
+            </trans-unit>
+            <trans-unit id="61">
+                <source>This value is not a valid ISBN-13.</source>
+                <target>Deze waarde is geen geldige ISBN-13.</target>
+            </trans-unit>
+            <trans-unit id="62">
+                <source>This value is neither a valid ISBN-10 nor a valid ISBN-13.</source>
+                <target>Deze waarde is geen geldige ISBN-10 of ISBN-13 waarde.</target>
+            </trans-unit>
+            <trans-unit id="63">
+                <source>This value is not a valid ISSN.</source>
+                <target>Deze waarde is geen geldige ISSN waarde.</target>
+            </trans-unit>
+            <trans-unit id="64">
+                <source>This value is not a valid currency.</source>
+                <target>Deze waarde is geen geldige valuta.</target>
+            </trans-unit>
+            <trans-unit id="65">
+                <source>This value should be equal to {{ compared_value }}.</source>
+                <target>Deze waarde moet gelijk zijn aan {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="66">
+                <source>This value should be greater than {{ compared_value }}.</source>
+                <target>Deze waarde moet groter zijn dan {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="67">
+                <source>This value should be greater than or equal to {{ compared_value }}.</source>
+                <target>Deze waarde moet groter dan of gelijk aan {{ compared_value }} zijn.</target>
+            </trans-unit>
+            <trans-unit id="68">
+                <source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
+                <target>Deze waarde moet identiek zijn aan {{ compared_value_type }} {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="69">
+                <source>This value should be less than {{ compared_value }}.</source>
+                <target>Deze waarde moet minder zijn dan {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="70">
+                <source>This value should be less than or equal to {{ compared_value }}.</source>
+                <target>Deze waarde moet minder dan of gelijk aan {{ compared_value }} zijn.</target>
+            </trans-unit>
+            <trans-unit id="71">
+                <source>This value should not be equal to {{ compared_value }}.</source>
+                <target>Deze waarde mag niet gelijk zijn aan {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="72">
+                <source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
+                <target>Deze waarde mag niet identiek zijn aan {{ compared_value_type }} {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="73">
+                <source>The image ratio is too big ({{ ratio }}). Allowed maximum ratio is {{ max_ratio }}.</source>
+                <target>De afbeeldingsverhouding is te groot ({{ ratio }}). Maximale verhouding is {{ max_ratio }}.</target>
+            </trans-unit>
+            <trans-unit id="74">
+                <source>The image ratio is too small ({{ ratio }}). Minimum ratio expected is {{ min_ratio }}.</source>
+                <target>De afbeeldingsverhouding is te klein ({{ ratio }}). Minimale verhouding is {{ min_ratio }}.</target>
+            </trans-unit>
+            <trans-unit id="75">
+                <source>The image is square ({{ width }}x{{ height }}px). Square images are not allowed.</source>
+                <target>De afbeelding is vierkant ({{ width }}x{{ height }}px). Vierkante afbeeldingen zijn niet toegestaan.</target>
+            </trans-unit>
+            <trans-unit id="76">
+                <source>The image is landscape oriented ({{ width }}x{{ height }}px). Landscape oriented images are not allowed.</source>
+                <target>De afbeelding is liggend ({{ width }}x{{ height }}px). Liggende afbeeldingen zijn niet toegestaan.</target>
+            </trans-unit>
+            <trans-unit id="77">
+                <source>The image is portrait oriented ({{ width }}x{{ height }}px). Portrait oriented images are not allowed.</source>
+                <target>De afbeelding is staand ({{ width }}x{{ height }}px). Staande afbeeldingen zijn niet toegestaan.</target>
+            </trans-unit>
+            <trans-unit id="78">
+                <source>An empty file is not allowed.</source>
+                <target>Lege bestanden zijn niet toegestaan.</target>
+            </trans-unit>
+            <trans-unit id="80">
+                <source>This value does not match the expected {{ charset }} charset.</source>
+                <target>Deze waarde is niet in de verwachte tekencodering {{ charset }}.</target>
+            </trans-unit>
+        </body>
+    </file>
+</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.no.xlf b/vendor/symfony/validator/Resources/translations/validators.no.xlf
new file mode 100644
index 0000000..ea01c63
--- /dev/null
+++ b/vendor/symfony/validator/Resources/translations/validators.no.xlf
@@ -0,0 +1,227 @@
+<?xml version="1.0"?>
+<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
+    <file source-language="en" datatype="plaintext" original="file.ext">
+        <body>
+            <trans-unit id="1">
+                <source>This value should be false.</source>
+                <target>Verdien skulle ha vore tom/nei.</target>
+            </trans-unit>
+            <trans-unit id="2">
+                <source>This value should be true.</source>
+                <target>Verdien skulla ha vore satt/ja.</target>
+            </trans-unit>
+            <trans-unit id="3">
+                <source>This value should be of type {{ type }}.</source>
+                <target>Verdien må vere av typen {{ type }}.</target>
+            </trans-unit>
+            <trans-unit id="4">
+                <source>This value should be blank.</source>
+                <target>Verdien skal vere blank.</target>
+            </trans-unit>
+            <trans-unit id="5">
+                <source>The value you selected is not a valid choice.</source>
+                <target>Verdien du valgte er ikkje gyldig.</target>
+            </trans-unit>
+            <trans-unit id="6">
+                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
+                <target>Du må velge minst {{ limit }} valg.</target>
+            </trans-unit>
+            <trans-unit id="7">
+                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
+                <target>Du kan maksimalt gjere {{ limit }} valg.</target>
+            </trans-unit>
+            <trans-unit id="8">
+                <source>One or more of the given values is invalid.</source>
+                <target>Ein eller fleire av dei opplyste verdiane er ugyldige.</target>
+            </trans-unit>
+            <trans-unit id="9">
+                <source>This field was not expected.</source>
+                <target>Dette feltet var ikke forventet.</target>
+            </trans-unit>
+            <trans-unit id="10">
+                <source>This field is missing.</source>
+                <target>Dette feltet mangler.</target>
+            </trans-unit>
+            <trans-unit id="11">
+                <source>This value is not a valid date.</source>
+                <target>Verdien er ikkje ein gyldig dato.</target>
+            </trans-unit>
+            <trans-unit id="12">
+                <source>This value is not a valid datetime.</source>
+                <target>Verdien er ikkje ein gyldig dato og tid.</target>
+            </trans-unit>
+            <trans-unit id="13">
+                <source>This value is not a valid email address.</source>
+                <target>Verdien er ikkje ei gyldig e-postadresse.</target>
+            </trans-unit>
+            <trans-unit id="14">
+                <source>The file could not be found.</source>
+                <target>Fila kunne ikkje finnes.</target>
+            </trans-unit>
+            <trans-unit id="15">
+                <source>The file is not readable.</source>
+                <target>Fila kan ikkje lesast.</target>
+            </trans-unit>
+            <trans-unit id="16">
+                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>Fila er for stor ({{ size }} {{ suffix }}). Tillatt maksimal størrelse er {{ limit }} {{ suffix }}.</target>
+            </trans-unit>
+            <trans-unit id="17">
+                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
+                <target>Mime-typen av fila er ugyldig ({{ type }}). Tillatte mime-typar er {{ types }}.</target>
+            </trans-unit>
+            <trans-unit id="18">
+                <source>This value should be {{ limit }} or less.</source>
+                <target>Verdien må vere {{ limit }} eller mindre.</target>
+            </trans-unit>
+            <trans-unit id="19">
+                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
+                <target>Verdien er for lang. Den må vere {{ limit }} bokstavar eller mindre.</target>
+            </trans-unit>
+            <trans-unit id="20">
+                <source>This value should be {{ limit }} or more.</source>
+                <target>Verdien må vere {{ limit }} eller meir.</target>
+            </trans-unit>
+            <trans-unit id="21">
+                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
+                <target>Verdien er for kort. Den må ha {{ limit }} teikn eller fleire.</target>
+            </trans-unit>
+            <trans-unit id="22">
+                <source>This value should not be blank.</source>
+                <target>Verdien må ikkje vere blank.</target>
+            </trans-unit>
+            <trans-unit id="23">
+                <source>This value should not be null.</source>
+                <target>Verdien må ikkje vere tom (null).</target>
+            </trans-unit>
+            <trans-unit id="24">
+                <source>This value should be null.</source>
+                <target>Verdien må vere tom (null).</target>
+            </trans-unit>
+            <trans-unit id="25">
+                <source>This value is not valid.</source>
+                <target>Verdien er ikkje gyldig.</target>
+            </trans-unit>
+            <trans-unit id="26">
+                <source>This value is not a valid time.</source>
+                <target>Verdien er ikkje gyldig tidseining.</target>
+            </trans-unit>
+            <trans-unit id="27">
+                <source>This value is not a valid URL.</source>
+                <target>Verdien er ikkje ein gyldig URL.</target>
+            </trans-unit>
+            <trans-unit id="31">
+                <source>The two values should be equal.</source>
+                <target>Dei to verdiane må vere like.</target>
+            </trans-unit>
+            <trans-unit id="32">
+                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>Fila er for stor. Den maksimale storleik er {{ limit }} {{ suffix }}.</target>
+            </trans-unit>
+            <trans-unit id="33">
+                <source>The file is too large.</source>
+                <target>Fila er for stor.</target>
+            </trans-unit>
+            <trans-unit id="34">
+                <source>The file could not be uploaded.</source>
+                <target>Fila kunne ikkje bli lasta opp.</target>
+            </trans-unit>
+            <trans-unit id="35">
+                <source>This value should be a valid number.</source>
+                <target>Verdien må vere eit gyldig tal.</target>
+            </trans-unit>
+            <trans-unit id="36">
+                <source>This file is not a valid image.</source>
+                <target>Fila er ikkje eit gyldig bilete.</target>
+            </trans-unit>
+            <trans-unit id="37">
+                <source>This is not a valid IP address.</source>
+                <target>Dette er ikkje ei gyldig IP-adresse.</target>
+            </trans-unit>
+            <trans-unit id="38">
+                <source>This value is not a valid language.</source>
+                <target>Verdien er ikkje eit gyldig språk.</target>
+            </trans-unit>
+            <trans-unit id="39">
+                <source>This value is not a valid locale.</source>
+                <target>Verdien er ikkje ein gyldig lokalitet (språk/region).</target>
+            </trans-unit>
+            <trans-unit id="40">
+                <source>This value is not a valid country.</source>
+                <target>Verdien er ikkje eit gyldig land.</target>
+            </trans-unit>
+            <trans-unit id="41">
+                <source>This value is already used.</source>
+                <target>Verdien er allereie i bruk.</target>
+            </trans-unit>
+            <trans-unit id="42">
+                <source>The size of the image could not be detected.</source>
+                <target>Storleiken på biletet kunne ikkje oppdagast.</target>
+            </trans-unit>
+            <trans-unit id="43">
+                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
+                <target>Biletbreidda er for stor, ({{ width }} pikslar). Tillatt maksimumsbreidde er {{ max_width }} pikslar.</target>
+            </trans-unit>
+            <trans-unit id="44">
+                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
+                <target>Biletbreidda er for liten, ({{ width }} pikslar). Forventa minimumsbreidde er {{ min_width }} pikslar.</target>
+            </trans-unit>
+            <trans-unit id="45">
+                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
+                <target>Bilethøgda er for stor, ({{ height }} pikslar). Tillatt maksimumshøgde er {{ max_height }} pikslar.</target>
+            </trans-unit>
+            <trans-unit id="46">
+                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
+                <target>Billethøgda er for låg, ({{ height }} pikslar). Forventa minimumshøgde er {{ min_height }} pikslar.</target>
+            </trans-unit>
+            <trans-unit id="47">
+                <source>This value should be the user's current password.</source>
+                <target>Verdien må vere brukaren sitt noverande passord.</target>
+            </trans-unit>
+            <trans-unit id="48">
+                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
+                <target>Verdien må vere nøyaktig {{ limit }} teikn.</target>
+            </trans-unit>
+            <trans-unit id="49">
+                <source>The file was only partially uploaded.</source>
+                <target>Fila vart kun delvis opplasta.</target>
+            </trans-unit>
+            <trans-unit id="50">
+                <source>No file was uploaded.</source>
+                <target>Inga fil vart lasta opp.</target>
+            </trans-unit>
+            <trans-unit id="51">
+                <source>No temporary folder was configured in php.ini.</source>
+                <target>Førebels mappe (tmp) er ikkje konfigurert i php.ini.</target>
+            </trans-unit>
+            <trans-unit id="52">
+                <source>Cannot write temporary file to disk.</source>
+                <target>Kan ikkje skrive førebels fil til disk.</target>
+            </trans-unit>
+            <trans-unit id="53">
+                <source>A PHP extension caused the upload to fail.</source>
+                <target>Ei PHP-udviding forårsaka feil under opplasting.</target>
+            </trans-unit>
+            <trans-unit id="54">
+                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
+                <target>Denne samlinga må innehalde {{ limit }} element eller meir.|Denne samlinga må innehalde {{ limit }} element eller meir.</target>
+            </trans-unit>
+            <trans-unit id="55">
+                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
+                <target>Denne samlinga må innehalde {{ limit }} element eller færre.|Denne samlinga må innehalde {{ limit }} element eller færre.</target>
+            </trans-unit>
+            <trans-unit id="56">
+                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
+                <target>Denne samlinga må innehalde nøyaktig {{ limit }} element.|Denne samlinga må innehalde nøyaktig {{ limit }} element.</target>
+            </trans-unit>
+            <trans-unit id="57">
+                <source>Invalid card number.</source>
+                <target>Ugyldig kortnummer.</target>
+            </trans-unit>
+            <trans-unit id="58">
+                <source>Unsupported card type or invalid card number.</source>
+                <target>Korttypen er ikkje støtta eller ugyldig kortnummer.</target>
+            </trans-unit>
+        </body>
+    </file>
+</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.pl.xlf b/vendor/symfony/validator/Resources/translations/validators.pl.xlf
new file mode 100644
index 0000000..1d6875f
--- /dev/null
+++ b/vendor/symfony/validator/Resources/translations/validators.pl.xlf
@@ -0,0 +1,315 @@
+<?xml version="1.0"?>
+<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
+    <file source-language="en" datatype="plaintext" original="file.ext">
+        <body>
+            <trans-unit id="1">
+                <source>This value should be false.</source>
+                <target>Ta wartość powinna być fałszem.</target>
+            </trans-unit>
+            <trans-unit id="2">
+                <source>This value should be true.</source>
+                <target>Ta wartość powinna być prawdą.</target>
+            </trans-unit>
+            <trans-unit id="3">
+                <source>This value should be of type {{ type }}.</source>
+                <target>Ta wartość powinna być typu {{ type }}.</target>
+            </trans-unit>
+            <trans-unit id="4">
+                <source>This value should be blank.</source>
+                <target>Ta wartość powinna być pusta.</target>
+            </trans-unit>
+            <trans-unit id="5">
+                <source>The value you selected is not a valid choice.</source>
+                <target>Ta wartość powinna być jedną z podanych opcji.</target>
+            </trans-unit>
+            <trans-unit id="6">
+                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
+                <target>Powinieneś wybrać co najmniej {{ limit }} opcję.|Powinieneś wybrać co najmniej {{ limit }} opcje.|Powinieneś wybrać co najmniej {{ limit }} opcji.</target>
+            </trans-unit>
+            <trans-unit id="7">
+                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
+                <target>Powinieneś wybrać maksymalnie {{ limit }} opcję.|Powinieneś wybrać maksymalnie {{ limit }} opcje.|Powinieneś wybrać maksymalnie {{ limit }} opcji.</target>
+            </trans-unit>
+            <trans-unit id="8">
+                <source>One or more of the given values is invalid.</source>
+                <target>Jedna lub więcej z podanych wartości jest nieprawidłowa.</target>
+            </trans-unit>
+            <trans-unit id="9">
+                <source>This field was not expected.</source>
+                <target>To pole nie spodziewano.</target>
+            </trans-unit>
+            <trans-unit id="10">
+                <source>This field is missing.</source>
+                <target>To pole jest chybianie.</target>
+            </trans-unit>
+            <trans-unit id="11">
+                <source>This value is not a valid date.</source>
+                <target>Ta wartość nie jest prawidłową datą.</target>
+            </trans-unit>
+            <trans-unit id="12">
+                <source>This value is not a valid datetime.</source>
+                <target>Ta wartość nie jest prawidłową datą i czasem.</target>
+            </trans-unit>
+            <trans-unit id="13">
+                <source>This value is not a valid email address.</source>
+                <target>Ta wartość nie jest prawidłowym adresem email.</target>
+            </trans-unit>
+            <trans-unit id="14">
+                <source>The file could not be found.</source>
+                <target>Plik nie mógł zostać odnaleziony.</target>
+            </trans-unit>
+            <trans-unit id="15">
+                <source>The file is not readable.</source>
+                <target>Nie można odczytać pliku.</target>
+            </trans-unit>
+            <trans-unit id="16">
+                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>Plik jest za duży ({{ size }} {{ suffix }}). Maksymalny dozwolony rozmiar to {{ limit }} {{ suffix }}.</target>
+            </trans-unit>
+            <trans-unit id="17">
+                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
+                <target>Nieprawidłowy typ mime pliku ({{ type }}). Dozwolone typy mime to {{ types }}.</target>
+            </trans-unit>
+            <trans-unit id="18">
+                <source>This value should be {{ limit }} or less.</source>
+                <target>Ta wartość powinna wynosić {{ limit }} lub mniej.</target>
+            </trans-unit>
+            <trans-unit id="19">
+                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
+                <target>Ta wartość jest zbyt długa. Powinna mieć {{ limit }} lub mniej znaków.|Ta wartość jest zbyt długa. Powinna mieć {{ limit }} lub mniej znaków.|Ta wartość jest zbyt długa. Powinna mieć {{ limit }} lub mniej znaków.</target>
+            </trans-unit>
+            <trans-unit id="20">
+                <source>This value should be {{ limit }} or more.</source>
+                <target>Ta wartość powinna wynosić {{ limit }} lub więcej.</target>
+            </trans-unit>
+            <trans-unit id="21">
+                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
+                <target>Ta wartość jest zbyt krótka. Powinna mieć {{ limit }} lub więcej znaków.|Ta wartość jest zbyt krótka. Powinna mieć {{ limit }} lub więcej znaków.|Ta wartość jest zbyt krótka. Powinna mieć {{ limit }} lub więcej znaków.</target>
+            </trans-unit>
+            <trans-unit id="22">
+                <source>This value should not be blank.</source>
+                <target>Ta wartość nie powinna być pusta.</target>
+            </trans-unit>
+            <trans-unit id="23">
+                <source>This value should not be null.</source>
+                <target>Ta wartość nie powinna być nullem.</target>
+            </trans-unit>
+            <trans-unit id="24">
+                <source>This value should be null.</source>
+                <target>Ta wartość powinna być nullem.</target>
+            </trans-unit>
+            <trans-unit id="25">
+                <source>This value is not valid.</source>
+                <target>Ta wartość jest nieprawidłowa.</target>
+            </trans-unit>
+            <trans-unit id="26">
+                <source>This value is not a valid time.</source>
+                <target>Ta wartość nie jest prawidłowym czasem.</target>
+            </trans-unit>
+            <trans-unit id="27">
+                <source>This value is not a valid URL.</source>
+                <target>Ta wartość nie jest prawidłowym adresem URL.</target>
+            </trans-unit>
+            <trans-unit id="31">
+                <source>The two values should be equal.</source>
+                <target>Obie wartości powinny być równe.</target>
+            </trans-unit>
+            <trans-unit id="32">
+                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>Plik jest za duży. Maksymalny dozwolony rozmiar to {{ limit }} {{ suffix }}.</target>
+            </trans-unit>
+            <trans-unit id="33">
+                <source>The file is too large.</source>
+                <target>Plik jest za duży.</target>
+            </trans-unit>
+            <trans-unit id="34">
+                <source>The file could not be uploaded.</source>
+                <target>Plik nie mógł być wgrany.</target>
+            </trans-unit>
+            <trans-unit id="35">
+                <source>This value should be a valid number.</source>
+                <target>Ta wartość powinna być prawidłową liczbą.</target>
+            </trans-unit>
+            <trans-unit id="36">
+                <source>This file is not a valid image.</source>
+                <target>Ten plik nie jest obrazem.</target>
+            </trans-unit>
+            <trans-unit id="37">
+                <source>This is not a valid IP address.</source>
+                <target>To nie jest prawidłowy adres IP.</target>
+            </trans-unit>
+            <trans-unit id="38">
+                <source>This value is not a valid language.</source>
+                <target>Ta wartość nie jest prawidłowym językiem.</target>
+            </trans-unit>
+            <trans-unit id="39">
+                <source>This value is not a valid locale.</source>
+                <target>Ta wartość nie jest prawidłową lokalizacją.</target>
+            </trans-unit>
+            <trans-unit id="40">
+                <source>This value is not a valid country.</source>
+                <target>Ta wartość nie jest prawidłową nazwą kraju.</target>
+            </trans-unit>
+            <trans-unit id="41">
+                <source>This value is already used.</source>
+                <target>Ta wartość jest już wykorzystywana.</target>
+            </trans-unit>
+            <trans-unit id="42">
+                <source>The size of the image could not be detected.</source>
+                <target>Nie można wykryć rozmiaru obrazka.</target>
+            </trans-unit>
+            <trans-unit id="43">
+                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
+                <target>Szerokość obrazka jest zbyt duża ({{ width }}px). Maksymalna dopuszczalna szerokość to {{ max_width }}px.</target>
+            </trans-unit>
+            <trans-unit id="44">
+                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
+                <target>Szerokość obrazka jest zbyt mała ({{ width }}px). Oczekiwana minimalna szerokość to {{ min_width }}px.</target>
+            </trans-unit>
+            <trans-unit id="45">
+                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
+                <target>Wysokość obrazka jest zbyt duża ({{ height }}px). Maksymalna dopuszczalna wysokość to {{ max_height }}px.</target>
+            </trans-unit>
+            <trans-unit id="46">
+                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
+                <target>Wysokość obrazka jest zbyt mała ({{ height }}px). Oczekiwana minimalna wysokość to {{ min_height }}px.</target>
+            </trans-unit>
+            <trans-unit id="47">
+                <source>This value should be the user's current password.</source>
+                <target>Ta wartość powinna być aktualnym hasłem użytkownika.</target>
+            </trans-unit>
+            <trans-unit id="48">
+                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
+                <target>Ta wartość powinna mieć dokładnie {{ limit }} znak.|Ta wartość powinna mieć dokładnie {{ limit }} znaki.|Ta wartość powinna mieć dokładnie {{ limit }} znaków.</target>
+            </trans-unit>
+            <trans-unit id="49">
+                <source>The file was only partially uploaded.</source>
+                <target>Plik został wgrany tylko częściowo.</target>
+            </trans-unit>
+            <trans-unit id="50">
+                <source>No file was uploaded.</source>
+                <target>Żaden plik nie został wgrany.</target>
+            </trans-unit>
+            <trans-unit id="51">
+                <source>No temporary folder was configured in php.ini.</source>
+                <target>Nie skonfigurowano folderu tymczasowego w php.ini.</target>
+            </trans-unit>
+            <trans-unit id="52">
+                <source>Cannot write temporary file to disk.</source>
+                <target>Nie można zapisać pliku tymczasowego na dysku.</target>
+            </trans-unit>
+            <trans-unit id="53">
+                <source>A PHP extension caused the upload to fail.</source>
+                <target>Rozszerzenie PHP spowodowało błąd podczas wgrywania.</target>
+            </trans-unit>
+            <trans-unit id="54">
+                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
+                <target>Ten zbiór powinien zawierać {{ limit }} lub więcej elementów.</target>
+            </trans-unit>
+            <trans-unit id="55">
+                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
+                <target>Ten zbiór powinien zawierać {{ limit }} lub mniej elementów.</target>
+            </trans-unit>
+            <trans-unit id="56">
+                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
+                <target>Ten zbiór powinien zawierać dokładnie {{ limit }} element.|Ten zbiór powinien zawierać dokładnie {{ limit }} elementy.|Ten zbiór powinien zawierać dokładnie {{ limit }} elementów.</target>
+            </trans-unit>
+            <trans-unit id="57">
+                <source>Invalid card number.</source>
+                <target>Nieprawidłowy numer karty.</target>
+            </trans-unit>
+            <trans-unit id="58">
+                <source>Unsupported card type or invalid card number.</source>
+                <target>Nieobsługiwany rodzaj karty lub nieprawidłowy numer karty.</target>
+            </trans-unit>
+            <trans-unit id="59">
+                <source>This is not a valid International Bank Account Number (IBAN).</source>
+                <target>Nieprawidłowy międzynarodowy numer rachunku bankowego (IBAN).</target>
+            </trans-unit>
+            <trans-unit id="60">
+                <source>This value is not a valid ISBN-10.</source>
+                <target>Ta wartość nie jest prawidłowym numerem ISBN-10.</target>
+            </trans-unit>
+            <trans-unit id="61">
+                <source>This value is not a valid ISBN-13.</source>
+                <target>Ta wartość nie jest prawidłowym numerem ISBN-13.</target>
+            </trans-unit>
+            <trans-unit id="62">
+                <source>This value is neither a valid ISBN-10 nor a valid ISBN-13.</source>
+                <target>Ta wartość nie jest prawidłowym numerem ISBN-10 ani ISBN-13.</target>
+            </trans-unit>
+            <trans-unit id="63">
+                <source>This value is not a valid ISSN.</source>
+                <target>Ta wartość nie jest prawidłowym numerem ISSN.</target>
+            </trans-unit>
+            <trans-unit id="64">
+                <source>This value is not a valid currency.</source>
+                <target>Ta wartość nie jest prawidłową walutą.</target>
+            </trans-unit>
+            <trans-unit id="65">
+                <source>This value should be equal to {{ compared_value }}.</source>
+                <target>Ta wartość powinna być równa {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="66">
+                <source>This value should be greater than {{ compared_value }}.</source>
+                <target>Ta wartość powinna być większa niż {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="67">
+                <source>This value should be greater than or equal to {{ compared_value }}.</source>
+                <target>Ta wartość powinna być większa bądź równa {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="68">
+                <source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
+                <target>Ta wartość powinna być identycznego typu {{ compared_value_type }} oraz wartości {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="69">
+                <source>This value should be less than {{ compared_value }}.</source>
+                <target>Ta wartość powinna być mniejsza niż {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="70">
+                <source>This value should be less than or equal to {{ compared_value }}.</source>
+                <target>Ta wartość powinna być mniejsza bądź równa {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="71">
+                <source>This value should not be equal to {{ compared_value }}.</source>
+                <target>Ta wartość nie powinna być równa {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="72">
+                <source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
+                <target>Ta wartość nie powinna być identycznego typu {{ compared_value_type }} oraz wartości {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="73">
+                <source>The image ratio is too big ({{ ratio }}). Allowed maximum ratio is {{ max_ratio }}.</source>
+                <target>Proporcje obrazu są zbyt duże ({{ ratio }}). Maksymalne proporcje to {{ max_ratio }}.</target>
+            </trans-unit>
+            <trans-unit id="74">
+                <source>The image ratio is too small ({{ ratio }}). Minimum ratio expected is {{ min_ratio }}.</source>
+                <target>Proporcje obrazu są zbyt małe ({{ ratio }}). Minimalne proporcje to {{ min_ratio }}.</target>
+            </trans-unit>
+            <trans-unit id="75">
+                <source>The image is square ({{ width }}x{{ height }}px). Square images are not allowed.</source>
+                <target>Obraz jest kwadratem ({{ width }}x{{ height }}px). Kwadratowe obrazy nie są akceptowane.</target>
+            </trans-unit>
+            <trans-unit id="76">
+                <source>The image is landscape oriented ({{ width }}x{{ height }}px). Landscape oriented images are not allowed.</source>
+                <target>Obraz jest panoramiczny ({{ width }}x{{ height }}px). Panoramiczne zdjęcia nie są akceptowane.</target>
+            </trans-unit>
+            <trans-unit id="77">
+                <source>The image is portrait oriented ({{ width }}x{{ height }}px). Portrait oriented images are not allowed.</source>
+                <target>Obraz jest portretowy ({{ width }}x{{ height }}px). Portretowe zdjęcia nie są akceptowane.</target>
+            </trans-unit>
+            <trans-unit id="78">
+                <source>An empty file is not allowed.</source>
+                <target>Plik nie może być pusty.</target>
+            </trans-unit>
+            <trans-unit id="79">
+                <source>The host could not be resolved.</source>
+                <target>Nazwa hosta nie została rozpoznana.</target>
+            </trans-unit>
+            <trans-unit id="80">
+                <source>This value does not match the expected {{ charset }} charset.</source>
+                <target>Ta wartość nie pasuje do oczekiwanego zestawu znaków {{ charset }}.</target>
+            </trans-unit>
+        </body>
+    </file>
+</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.pt.xlf b/vendor/symfony/validator/Resources/translations/validators.pt.xlf
new file mode 100644
index 0000000..d563c92
--- /dev/null
+++ b/vendor/symfony/validator/Resources/translations/validators.pt.xlf
@@ -0,0 +1,307 @@
+<?xml version="1.0"?>
+<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
+    <file source-language="en" datatype="plaintext" original="file.ext">
+        <body>
+            <trans-unit id="1">
+                <source>This value should be false.</source>
+                <target>Este valor deveria ser falso.</target>
+            </trans-unit>
+            <trans-unit id="2">
+                <source>This value should be true.</source>
+                <target>Este valor deveria ser verdadeiro.</target>
+            </trans-unit>
+            <trans-unit id="3">
+                <source>This value should be of type {{ type }}.</source>
+                <target>Este valor deveria ser do tipo {{ type }}.</target>
+            </trans-unit>
+            <trans-unit id="4">
+                <source>This value should be blank.</source>
+                <target>Este valor deveria ser vazio.</target>
+            </trans-unit>
+            <trans-unit id="5">
+                <source>The value you selected is not a valid choice.</source>
+                <target>O valor selecionado não é uma opção válida.</target>
+            </trans-unit>
+            <trans-unit id="6">
+                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
+                <target>Você deveria selecionar {{ limit }} opção no mínimo.|Você deveria selecionar {{ limit }} opções no mínimo.</target>
+            </trans-unit>
+            <trans-unit id="7">
+                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
+                <target>Você deve selecionar, no máximo {{ limit }} opção.|Você deve selecionar, no máximo {{ limit }} opções.</target>
+            </trans-unit>
+            <trans-unit id="8">
+                <source>One or more of the given values is invalid.</source>
+                <target>Um ou mais dos valores introduzidos não são válidos.</target>
+            </trans-unit>
+            <trans-unit id="9">
+                <source>This field was not expected.</source>
+                <target>Este campo não era esperado.</target>
+            </trans-unit>
+            <trans-unit id="10">
+                <source>This field is missing.</source>
+                <target>Este campo está faltando.</target>
+            </trans-unit>
+            <trans-unit id="11">
+                <source>This value is not a valid date.</source>
+                <target>Este valor não é uma data válida.</target>
+            </trans-unit>
+            <trans-unit id="12">
+                <source>This value is not a valid datetime.</source>
+                <target>Este valor não é uma data-hora válida.</target>
+            </trans-unit>
+            <trans-unit id="13">
+                <source>This value is not a valid email address.</source>
+                <target>Este valor não é um endereço de e-mail válido.</target>
+            </trans-unit>
+            <trans-unit id="14">
+                <source>The file could not be found.</source>
+                <target>O arquivo não pôde ser encontrado.</target>
+            </trans-unit>
+            <trans-unit id="15">
+                <source>The file is not readable.</source>
+                <target>O arquivo não pôde ser lido.</target>
+            </trans-unit>
+            <trans-unit id="16">
+                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>O arquivo é muito grande ({{ size }} {{ suffix }}). O tamanho máximo permitido é de {{ limit }} {{ suffix }}.</target>
+            </trans-unit>
+            <trans-unit id="17">
+                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
+                <target>O tipo mime do arquivo é inválido ({{ type }}). Os tipos mime permitidos são {{ types }}.</target>
+            </trans-unit>
+            <trans-unit id="18">
+                <source>This value should be {{ limit }} or less.</source>
+                <target>Este valor deveria ser {{ limit }} ou menor.</target>
+            </trans-unit>
+            <trans-unit id="19">
+                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
+                <target>O valor é muito longo. Deveria ter {{ limit }} caracteres ou menos.</target>
+            </trans-unit>
+            <trans-unit id="20">
+                <source>This value should be {{ limit }} or more.</source>
+                <target>Este valor deveria ser {{ limit }} ou mais.</target>
+            </trans-unit>
+            <trans-unit id="21">
+                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
+                <target>O valor é muito curto. Deveria de ter {{ limit }} caractere ou mais.|O valor é muito curto. Deveria de ter {{ limit }} caracteres ou mais.</target>
+            </trans-unit>
+            <trans-unit id="22">
+                <source>This value should not be blank.</source>
+                <target>Este valor não deveria ser branco/vazio.</target>
+            </trans-unit>
+            <trans-unit id="23">
+                <source>This value should not be null.</source>
+                <target>Este valor não deveria ser nulo.</target>
+            </trans-unit>
+            <trans-unit id="24">
+                <source>This value should be null.</source>
+                <target>Este valor deveria ser nulo.</target>
+            </trans-unit>
+            <trans-unit id="25">
+                <source>This value is not valid.</source>
+                <target>Este valor não é válido.</target>
+            </trans-unit>
+            <trans-unit id="26">
+                <source>This value is not a valid time.</source>
+                <target>Este valor não é uma hora válida.</target>
+            </trans-unit>
+            <trans-unit id="27">
+                <source>This value is not a valid URL.</source>
+                <target>Este valor não é um URL válido.</target>
+            </trans-unit>
+            <trans-unit id="31">
+                <source>The two values should be equal.</source>
+                <target>Os dois valores deveriam ser iguais.</target>
+            </trans-unit>
+            <trans-unit id="32">
+                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>O arquivo é muito grande. O tamanho máximo permitido é de {{ limit }} {{ suffix }}.</target>
+            </trans-unit>
+            <trans-unit id="33">
+                <source>The file is too large.</source>
+                <target>O ficheiro é muito grande.</target>
+            </trans-unit>
+            <trans-unit id="34">
+                <source>The file could not be uploaded.</source>
+                <target>Não foi possível carregar o ficheiro.</target>
+            </trans-unit>
+            <trans-unit id="35">
+                <source>This value should be a valid number.</source>
+                <target>Este valor deveria de ser um número válido.</target>
+            </trans-unit>
+            <trans-unit id="36">
+                <source>This file is not a valid image.</source>
+                <target>Este ficheiro não é uma imagem.</target>
+            </trans-unit>
+            <trans-unit id="37">
+                <source>This is not a valid IP address.</source>
+                <target>Este endereço de IP não é válido.</target>
+            </trans-unit>
+            <trans-unit id="38">
+                <source>This value is not a valid language.</source>
+                <target>Este valor não é uma linguagem válida.</target>
+            </trans-unit>
+            <trans-unit id="39">
+                <source>This value is not a valid locale.</source>
+                <target>Este valor não é um 'locale' válido.</target>
+            </trans-unit>
+            <trans-unit id="40">
+                <source>This value is not a valid country.</source>
+                <target>Este valor não é um País válido.</target>
+            </trans-unit>
+            <trans-unit id="41">
+                <source>This value is already used.</source>
+                <target>Este valor já está a ser usado.</target>
+            </trans-unit>
+            <trans-unit id="42">
+                <source>The size of the image could not be detected.</source>
+                <target>O tamanho da imagem não foi detetado.</target>
+            </trans-unit>
+            <trans-unit id="43">
+                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
+                <target>A largura da imagem ({{ width }}px) é muito grande. A largura máxima da imagem é: {{ max_width }}px.</target>
+            </trans-unit>
+            <trans-unit id="44">
+                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
+                <target>A largura da imagem ({{ width }}px) é muito pequena. A largura miníma da imagem é de: {{ min_width }}px.</target>
+            </trans-unit>
+            <trans-unit id="45">
+                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
+                <target>A altura da imagem ({{ height }}px) é muito grande. A altura máxima da imagem é de: {{ max_height }}px.</target>
+            </trans-unit>
+            <trans-unit id="46">
+                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
+                <target>A altura da imagem ({{ height }}px) é muito pequena. A altura miníma da imagem é de: {{ min_height }}px.</target>
+            </trans-unit>
+            <trans-unit id="47">
+                <source>This value should be the user's current password.</source>
+                <target>Este valor deveria de ser a password atual do utilizador.</target>
+            </trans-unit>
+            <trans-unit id="48">
+                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
+                <target>Este valor tem de ter exatamente {{ limit }} carateres.</target>
+            </trans-unit>
+            <trans-unit id="49">
+                <source>The file was only partially uploaded.</source>
+                <target>Só foi enviado parte do ficheiro.</target>
+            </trans-unit>
+            <trans-unit id="50">
+                <source>No file was uploaded.</source>
+                <target>Nenhum ficheiro foi enviado.</target>
+            </trans-unit>
+            <trans-unit id="51">
+                <source>No temporary folder was configured in php.ini.</source>
+                <target>Não existe nenhum directório temporária configurado no ficheiro php.ini.</target>
+            </trans-unit>
+            <trans-unit id="52">
+                <source>Cannot write temporary file to disk.</source>
+                <target>Não foi possível escrever ficheiros temporários no disco.</target>
+            </trans-unit>
+            <trans-unit id="53">
+                <source>A PHP extension caused the upload to fail.</source>
+                <target>Uma extensão PHP causou a falha no envio.</target>
+            </trans-unit>
+            <trans-unit id="54">
+                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
+                <target>Esta coleção deve conter {{ limit }} elemento ou mais.|Esta coleção deve conter {{ limit }} elementos ou mais.</target>
+            </trans-unit>
+            <trans-unit id="55">
+                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
+                <target>Esta coleção deve conter {{ limit }} elemento ou menos.|Esta coleção deve conter {{ limit }} elementos ou menos.</target>
+            </trans-unit>
+            <trans-unit id="56">
+                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
+                <target>Esta coleção deve conter exatamente {{ limit }} elemento.|Esta coleção deve conter exatamente {{ limit }} elementos.</target>
+            </trans-unit>
+            <trans-unit id="57">
+                <source>Invalid card number.</source>
+                <target>Número de cartão inválido.</target>
+            </trans-unit>
+            <trans-unit id="58">
+                <source>Unsupported card type or invalid card number.</source>
+                <target>Tipo de cartão não suportado ou número de cartão inválido.</target>
+            </trans-unit>
+            <trans-unit id="59">
+                <source>This is not a valid International Bank Account Number (IBAN).</source>
+                <target>Este não é um Número Internacional de Conta Bancária (IBAN) válido.</target>
+            </trans-unit>
+            <trans-unit id="60">
+                <source>This value is not a valid ISBN-10.</source>
+                <target>Este valor não é um ISBN-10 válido.</target>
+            </trans-unit>
+            <trans-unit id="61">
+                <source>This value is not a valid ISBN-13.</source>
+                <target>Este valor não é um ISBN-13 válido.</target>
+            </trans-unit>
+            <trans-unit id="62">
+                <source>This value is neither a valid ISBN-10 nor a valid ISBN-13.</source>
+                <target>Este valor não é um ISBN-10 ou ISBN-13 válido.</target>
+            </trans-unit>
+            <trans-unit id="63">
+                <source>This value is not a valid ISSN.</source>
+                <target>Este valor não é um ISSN válido.</target>
+            </trans-unit>
+            <trans-unit id="64">
+                <source>This value is not a valid currency.</source>
+                <target>Este não é um valor monetário válido.</target>
+            </trans-unit>
+            <trans-unit id="65">
+                <source>This value should be equal to {{ compared_value }}.</source>
+                <target>Este valor deve ser igual a {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="66">
+                <source>This value should be greater than {{ compared_value }}.</source>
+                <target>Este valor deve ser superior a {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="67">
+                <source>This value should be greater than or equal to {{ compared_value }}.</source>
+                <target>Este valor deve ser igual ou superior a {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="68">
+                <source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
+                <target>Este valor deve ser idêntico a {{ compared_value_type }} {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="69">
+                <source>This value should be less than {{ compared_value }}.</source>
+                <target>Este valor deve ser inferior a {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="70">
+                <source>This value should be less than or equal to {{ compared_value }}.</source>
+                <target>Este valor deve ser igual ou inferior a {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="71">
+                <source>This value should not be equal to {{ compared_value }}.</source>
+                <target>Este valor não deve ser igual a {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="72">
+                <source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
+                <target>Este valor não deve ser idêntico a {{ compared_value_type }} {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="73">
+                <source>The image ratio is too big ({{ ratio }}). Allowed maximum ratio is {{ max_ratio }}.</source>
+                <target>O formato da imagem é muito grande ({{ ratio }}). O formato máximo é {{ max_ratio }}.</target>
+            </trans-unit>
+            <trans-unit id="74">
+                <source>The image ratio is too small ({{ ratio }}). Minimum ratio expected is {{ min_ratio }}.</source>
+                <target>O formato da imagem é muito pequeno ({{ ratio }}). O formato mínimo esperado é {{ min_ratio }}.</target>
+            </trans-unit>
+            <trans-unit id="75">
+                <source>The image is square ({{ width }}x{{ height }}px). Square images are not allowed.</source>
+                <target>A imagem é um quadrado ({{ width }}x{{ height }}px). Imagens quadradas não são permitidas.</target>
+            </trans-unit>
+            <trans-unit id="76">
+                <source>The image is landscape oriented ({{ width }}x{{ height }}px). Landscape oriented images are not allowed.</source>
+                <target>A imagem está orientada à paisagem ({{ width }}x{{ height }}px). Imagens orientadas à paisagem não são permitidas.</target>
+            </trans-unit>
+            <trans-unit id="77">
+                <source>The image is portrait oriented ({{ width }}x{{ height }}px). Portrait oriented images are not allowed.</source>
+                <target>A imagem está orientada ao retrato ({{ width }}x{{ height }}px). Imagens orientadas ao retrato não são permitidas.</target>
+            </trans-unit>
+            <trans-unit id="78">
+                <source>An empty file is not allowed.</source>
+                <target>Ficheiro vazio não é permitido.</target>
+            </trans-unit>
+        </body>
+    </file>
+</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.pt_BR.xlf b/vendor/symfony/validator/Resources/translations/validators.pt_BR.xlf
new file mode 100644
index 0000000..bff91e3
--- /dev/null
+++ b/vendor/symfony/validator/Resources/translations/validators.pt_BR.xlf
@@ -0,0 +1,315 @@
+<?xml version="1.0"?>
+<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
+    <file source-language="en" datatype="plaintext" original="file.ext">
+        <body>
+            <trans-unit id="1">
+                <source>This value should be false.</source>
+                <target>Este valor deve ser falso.</target>
+            </trans-unit>
+            <trans-unit id="2">
+                <source>This value should be true.</source>
+                <target>Este valor deve ser verdadeiro.</target>
+            </trans-unit>
+            <trans-unit id="3">
+                <source>This value should be of type {{ type }}.</source>
+                <target>Este valor deve ser do tipo {{ type }}.</target>
+            </trans-unit>
+            <trans-unit id="4">
+                <source>This value should be blank.</source>
+                <target>Este valor deve ser vazio.</target>
+            </trans-unit>
+            <trans-unit id="5">
+                <source>The value you selected is not a valid choice.</source>
+                <target>O valor selecionado não é uma opção válida.</target>
+            </trans-unit>
+            <trans-unit id="6">
+                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
+                <target>Você deve selecionar, no mínimo, {{ limit }} opção.|Você deve selecionar, no mínimo, {{ limit }} opções.</target>
+            </trans-unit>
+            <trans-unit id="7">
+                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
+                <target>Você deve selecionar, no máximo, {{ limit }} opção.|Você deve selecionar, no máximo, {{ limit }} opções.</target>
+            </trans-unit>
+            <trans-unit id="8">
+                <source>One or more of the given values is invalid.</source>
+                <target>Um ou mais valores informados são inválidos.</target>
+            </trans-unit>
+            <trans-unit id="9">
+                <source>This field was not expected.</source>
+                <target>Este campo não era esperado.</target>
+            </trans-unit>
+            <trans-unit id="10">
+                <source>This field is missing.</source>
+                <target>Este campo está ausente.</target>
+            </trans-unit>
+            <trans-unit id="11">
+                <source>This value is not a valid date.</source>
+                <target>Este valor não é uma data válida.</target>
+            </trans-unit>
+            <trans-unit id="12">
+                <source>This value is not a valid datetime.</source>
+                <target>Este valor não é uma data e hora válida.</target>
+            </trans-unit>
+            <trans-unit id="13">
+                <source>This value is not a valid email address.</source>
+                <target>Este valor não é um endereço de e-mail válido.</target>
+            </trans-unit>
+            <trans-unit id="14">
+                <source>The file could not be found.</source>
+                <target>O arquivo não foi encontrado.</target>
+            </trans-unit>
+            <trans-unit id="15">
+                <source>The file is not readable.</source>
+                <target>O arquivo não pode ser lido.</target>
+            </trans-unit>
+            <trans-unit id="16">
+                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>O arquivo é muito grande ({{ size }} {{ suffix }}). O tamanho máximo permitido é {{ limit }} {{ suffix }}.</target>
+            </trans-unit>
+            <trans-unit id="17">
+                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
+                <target>O tipo mime do arquivo é inválido ({{ type }}). Os tipos mime permitidos são {{ types }}.</target>
+            </trans-unit>
+            <trans-unit id="18">
+                <source>This value should be {{ limit }} or less.</source>
+                <target>Este valor deve ser {{ limit }} ou menos.</target>
+            </trans-unit>
+            <trans-unit id="19">
+                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
+                <target>Este valor é muito longo. Deve ter {{ limit }} caractere ou menos.|Este valor é muito longo. Deve ter {{ limit }} caracteres ou menos.</target>
+            </trans-unit>
+            <trans-unit id="20">
+                <source>This value should be {{ limit }} or more.</source>
+                <target>Este valor deve ser {{ limit }} ou mais.</target>
+            </trans-unit>
+            <trans-unit id="21">
+                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
+                <target>Este valor é muito curto. Deve ter {{ limit }} caractere ou mais.|Este valor é muito curto. Deve ter {{ limit }} caracteres ou mais.</target>
+            </trans-unit>
+            <trans-unit id="22">
+                <source>This value should not be blank.</source>
+                <target>Este valor não deve ser vazio.</target>
+            </trans-unit>
+            <trans-unit id="23">
+                <source>This value should not be null.</source>
+                <target>Este valor não deve ser nulo.</target>
+            </trans-unit>
+            <trans-unit id="24">
+                <source>This value should be null.</source>
+                <target>Este valor deve ser nulo.</target>
+            </trans-unit>
+            <trans-unit id="25">
+                <source>This value is not valid.</source>
+                <target>Este valor não é válido.</target>
+            </trans-unit>
+            <trans-unit id="26">
+                <source>This value is not a valid time.</source>
+                <target>Este valor não é uma hora válida.</target>
+            </trans-unit>
+            <trans-unit id="27">
+                <source>This value is not a valid URL.</source>
+                <target>Este valor não é uma URL válida.</target>
+            </trans-unit>
+            <trans-unit id="31">
+                <source>The two values should be equal.</source>
+                <target>Os dois valores devem ser iguais.</target>
+            </trans-unit>
+            <trans-unit id="32">
+                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>O arquivo é muito grande. O tamanho máximo permitido é de {{ limit }} {{ suffix }}.</target>
+            </trans-unit>
+            <trans-unit id="33">
+                <source>The file is too large.</source>
+                <target>O arquivo é muito grande.</target>
+            </trans-unit>
+            <trans-unit id="34">
+                <source>The file could not be uploaded.</source>
+                <target>O arquivo não pode ser enviado.</target>
+            </trans-unit>
+            <trans-unit id="35">
+                <source>This value should be a valid number.</source>
+                <target>Este valor deve ser um número válido.</target>
+            </trans-unit>
+            <trans-unit id="36">
+                <source>This file is not a valid image.</source>
+                <target>Este arquivo não é uma imagem válida.</target>
+            </trans-unit>
+            <trans-unit id="37">
+                <source>This is not a valid IP address.</source>
+                <target>Este não é um endereço de IP válido.</target>
+            </trans-unit>
+            <trans-unit id="38">
+                <source>This value is not a valid language.</source>
+                <target>Este valor não é um idioma válido.</target>
+            </trans-unit>
+            <trans-unit id="39">
+                <source>This value is not a valid locale.</source>
+                <target>Este valor não é uma localidade válida.</target>
+            </trans-unit>
+            <trans-unit id="40">
+                <source>This value is not a valid country.</source>
+                <target>Este valor não é um país válido.</target>
+            </trans-unit>
+            <trans-unit id="41">
+                <source>This value is already used.</source>
+                <target>Este valor já está sendo usado.</target>
+            </trans-unit>
+            <trans-unit id="42">
+                <source>The size of the image could not be detected.</source>
+                <target>O tamanho da imagem não pode ser detectado.</target>
+            </trans-unit>
+            <trans-unit id="43">
+                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
+                <target>A largura da imagem é muito grande ({{ width }}px). A largura máxima permitida é de {{ max_width }}px.</target>
+            </trans-unit>
+            <trans-unit id="44">
+                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
+                <target>A largura da imagem é muito pequena ({{ width }}px). A largura mínima esperada é de {{ min_width }}px.</target>
+            </trans-unit>
+            <trans-unit id="45">
+                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
+                <target>A altura da imagem é muito grande ({{ height }}px). A altura máxima permitida é de {{ max_height }}px.</target>
+            </trans-unit>
+            <trans-unit id="46">
+                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
+                <target>A altura da imagem é muito pequena ({{ height }}px). A altura mínima esperada é de {{ min_height }}px.</target>
+            </trans-unit>
+            <trans-unit id="47">
+                <source>This value should be the user's current password.</source>
+                <target>Este valor deve ser a senha atual do usuário.</target>
+            </trans-unit>
+            <trans-unit id="48">
+                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
+                <target>Este valor deve ter exatamente {{ limit }} caractere.|Este valor deve ter exatamente {{ limit }} caracteres.</target>
+            </trans-unit>
+            <trans-unit id="49">
+                <source>The file was only partially uploaded.</source>
+                <target>O arquivo foi enviado apenas parcialmente.</target>
+            </trans-unit>
+            <trans-unit id="50">
+                <source>No file was uploaded.</source>
+                <target>Nenhum arquivo foi enviado.</target>
+            </trans-unit>
+            <trans-unit id="51">
+                <source>No temporary folder was configured in php.ini.</source>
+                <target>Nenhum diretório temporário foi configurado no php.ini.</target>
+            </trans-unit>
+            <trans-unit id="52">
+                <source>Cannot write temporary file to disk.</source>
+                <target>Não foi possível escrever o arquivo temporário no disco.</target>
+            </trans-unit>
+            <trans-unit id="53">
+                <source>A PHP extension caused the upload to fail.</source>
+                <target>Uma extensão PHP fez com que o envio falhasse.</target>
+            </trans-unit>
+            <trans-unit id="54">
+                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
+                <target>Esta coleção deve conter {{ limit }} elemento ou mais.|Esta coleção deve conter {{ limit }} elementos ou mais.</target>
+            </trans-unit>
+            <trans-unit id="55">
+                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
+                <target>Esta coleção deve conter {{ limit }} elemento ou menos.|Esta coleção deve conter {{ limit }} elementos ou menos.</target>
+            </trans-unit>
+            <trans-unit id="56">
+                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
+                <target>Esta coleção deve conter exatamente {{ limit }} elemento.|Esta coleção deve conter exatamente {{ limit }} elementos.</target>
+            </trans-unit>
+            <trans-unit id="57">
+                <source>Invalid card number.</source>
+                <target>Número de cartão inválido.</target>
+            </trans-unit>
+            <trans-unit id="58">
+                <source>Unsupported card type or invalid card number.</source>
+                <target>Tipo de cartão não suportado ou número de cartão inválido.</target>
+            </trans-unit>
+            <trans-unit id="59">
+                <source>This is not a valid International Bank Account Number (IBAN).</source>
+                <target>Este não é um Número Internacional de Conta Bancária (IBAN) válido.</target>
+            </trans-unit>
+            <trans-unit id="60">
+                <source>This value is not a valid ISBN-10.</source>
+                <target>Este valor não é um ISBN-10 válido.</target>
+            </trans-unit>
+            <trans-unit id="61">
+                <source>This value is not a valid ISBN-13.</source>
+                <target>Este valor não é um ISBN-13 válido.</target>
+            </trans-unit>
+            <trans-unit id="62">
+                <source>This value is neither a valid ISBN-10 nor a valid ISBN-13.</source>
+                <target>Este valor não é um ISBN-10 e nem um ISBN-13 válido.</target>
+            </trans-unit>
+            <trans-unit id="63">
+                <source>This value is not a valid ISSN.</source>
+                <target>Este valor não é um ISSN válido.</target>
+            </trans-unit>
+            <trans-unit id="64">
+                <source>This value is not a valid currency.</source>
+                <target>Este não é um valor monetário válido.</target>
+            </trans-unit>
+            <trans-unit id="65">
+                <source>This value should be equal to {{ compared_value }}.</source>
+                <target>Este valor deve ser igual a {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="66">
+                <source>This value should be greater than {{ compared_value }}.</source>
+                <target>Este valor deve ser maior que {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="67">
+                <source>This value should be greater than or equal to {{ compared_value }}.</source>
+                <target>Este valor deve ser maior ou igual a {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="68">
+                <source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
+                <target>Este valor deve ser idêntico a {{ compared_value_type }} {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="69">
+                <source>This value should be less than {{ compared_value }}.</source>
+                <target>Este valor deve ser menor que {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="70">
+                <source>This value should be less than or equal to {{ compared_value }}.</source>
+                <target>Este valor deve ser menor ou igual a {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="71">
+                <source>This value should not be equal to {{ compared_value }}.</source>
+                <target>Este valor não deve ser igual a {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="72">
+                <source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
+                <target>Este valor não deve ser idêntico a {{ compared_value_type }} {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="73">
+                <source>The image ratio is too big ({{ ratio }}). Allowed maximum ratio is {{ max_ratio }}.</source>
+                <target>A proporção da imagem é muito grande ({{ ratio }}). A proporção máxima permitida é {{ max_ratio }}.</target>
+            </trans-unit>
+            <trans-unit id="74">
+                <source>The image ratio is too small ({{ ratio }}). Minimum ratio expected is {{ min_ratio }}.</source>
+                <target>A proporção da imagem é muito pequena ({{ ratio }}). A proporção mínima esperada é {{ min_ratio }}.</target>
+            </trans-unit>
+            <trans-unit id="75">
+                <source>The image is square ({{ width }}x{{ height }}px). Square images are not allowed.</source>
+                <target>A imagem está num formato quadrado ({{ width }}x{{ height }}px). Imagens com formato quadrado não são permitidas.</target>
+            </trans-unit>
+            <trans-unit id="76">
+                <source>The image is landscape oriented ({{ width }}x{{ height }}px). Landscape oriented images are not allowed.</source>
+                <target>A imagem está orientada à paisagem ({{ width }}x{{ height }}px). Imagens orientadas à paisagem não são permitidas.</target>
+            </trans-unit>
+            <trans-unit id="77">
+                <source>The image is portrait oriented ({{ width }}x{{ height }}px). Portrait oriented images are not allowed.</source>
+                <target>A imagem está orientada ao retrato ({{ width }}x{{ height }}px). Imagens orientadas ao retrato não são permitidas.</target>
+            </trans-unit>
+            <trans-unit id="78">
+                <source>An empty file is not allowed.</source>
+                <target>Arquivo vazio não é permitido.</target>
+            </trans-unit>
+            <trans-unit id="79">
+                <source>The host could not be resolved.</source>
+                <target>O host não pôde ser resolvido.</target>
+            </trans-unit>
+            <trans-unit id="80">
+                <source>This value does not match the expected {{ charset }} charset.</source>
+                <target>Este valor não corresponde ao charset {{ charset }} esperado.</target>
+            </trans-unit>
+        </body>
+    </file>
+</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.ro.xlf b/vendor/symfony/validator/Resources/translations/validators.ro.xlf
new file mode 100644
index 0000000..27346a9
--- /dev/null
+++ b/vendor/symfony/validator/Resources/translations/validators.ro.xlf
@@ -0,0 +1,283 @@
+<?xml version="1.0"?>
+<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
+    <file source-language="en" datatype="plaintext" original="file.ext">
+        <body>
+            <trans-unit id="1">
+                <source>This value should be false.</source>
+                <target>Această valoare ar trebui să fie falsă (false).</target>
+            </trans-unit>
+            <trans-unit id="2">
+                <source>This value should be true.</source>
+                <target>Această valoare ar trebui să fie adevărată (true).</target>
+            </trans-unit>
+            <trans-unit id="3">
+                <source>This value should be of type {{ type }}.</source>
+                <target>Această valoare ar trebui să fie de tipul {{ type }}.</target>
+            </trans-unit>
+            <trans-unit id="4">
+                <source>This value should be blank.</source>
+                <target>Această valoare ar trebui sa fie goală.</target>
+            </trans-unit>
+            <trans-unit id="5">
+                <source>The value you selected is not a valid choice.</source>
+                <target>Valoarea selectată nu este o opțiune validă.</target>
+            </trans-unit>
+            <trans-unit id="6">
+                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
+                <target>Trebuie să selectați cel puțin {{ limit }} opțiune.|Trebuie să selectați cel puțin {{ limit }} opțiuni.|Trebuie să selectați cel puțin {{ limit }} de opțiuni</target>
+            </trans-unit>
+            <trans-unit id="7">
+                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
+                <target>Trebuie să selectați cel mult {{ limit }} opțiune.|Trebuie să selectați cel mult {{ limit }} opțiuni.|Trebuie să selectați cel mult {{ limit }} de opțiuni.</target>
+            </trans-unit>
+            <trans-unit id="8">
+                <source>One or more of the given values is invalid.</source>
+                <target>Una sau mai multe dintre valorile furnizate sunt invalide.</target>
+            </trans-unit>
+            <trans-unit id="9">
+                <source>This field was not expected.</source>
+                <target>Acest câmp nu era de aşteptat.</target>
+            </trans-unit>
+            <trans-unit id="10">
+                <source>This field is missing.</source>
+                <target>Acest câmp este lipsă.</target>
+            </trans-unit>
+            <trans-unit id="11">
+                <source>This value is not a valid date.</source>
+                <target>Această valoare nu reprezintă o dată validă.</target>
+            </trans-unit>
+            <trans-unit id="12">
+                <source>This value is not a valid datetime.</source>
+                <target>Această valoare nu reprezintă o dată și oră validă.</target>
+            </trans-unit>
+            <trans-unit id="13">
+                <source>This value is not a valid email address.</source>
+                <target>Această valoare nu reprezintă o adresă de e-mail validă.</target>
+            </trans-unit>
+            <trans-unit id="14">
+                <source>The file could not be found.</source>
+                <target>Fișierul nu a putut fi găsit.</target>
+            </trans-unit>
+            <trans-unit id="15">
+                <source>The file is not readable.</source>
+                <target>Fișierul nu poate fi citit.</target>
+            </trans-unit>
+            <trans-unit id="16">
+                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>Fișierul este prea mare ({{ size }} {{ suffix }}). Dimensiunea maximă permisă este {{ limit }} {{ suffix }}.</target>
+            </trans-unit>
+            <trans-unit id="17">
+                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
+                <target>Tipul fișierului este invalid ({{ type }}). Tipurile permise de fișiere sunt ({{ types }}).</target>
+            </trans-unit>
+            <trans-unit id="18">
+                <source>This value should be {{ limit }} or less.</source>
+                <target>Această valoare ar trebui să fie cel mult {{ limit }}.</target>
+            </trans-unit>
+            <trans-unit id="19">
+                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
+                <target>Această valoare este prea lungă. Ar trebui să aibă maxim {{ limit }} caracter.|Această valoare este prea lungă. Ar trebui să aibă maxim {{ limit }} caractere.|Această valoare este prea lungă. Ar trebui să aibă maxim {{ limit }} de caractere.</target>
+            </trans-unit>
+            <trans-unit id="20">
+                <source>This value should be {{ limit }} or more.</source>
+                <target>Această valoare ar trebui să fie cel puțin {{ limit }}.</target>
+            </trans-unit>
+            <trans-unit id="21">
+                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
+                <target>Această valoare este prea scurtă. Ar trebui să aibă minim {{ limit }} caracter.|Această valoare este prea scurtă. Ar trebui să aibă minim {{ limit }} caractere.|Această valoare este prea scurtă. Ar trebui să aibă minim {{ limit }} de caractere.</target>
+            </trans-unit>
+            <trans-unit id="22">
+                <source>This value should not be blank.</source>
+                <target>Această valoare nu ar trebui să fie goală.</target>
+            </trans-unit>
+            <trans-unit id="23">
+                <source>This value should not be null.</source>
+                <target>Această valoare nu ar trebui să fie nulă (null).</target>
+            </trans-unit>
+            <trans-unit id="24">
+                <source>This value should be null.</source>
+                <target>Această valoare ar trebui să fie nulă (null).</target>
+            </trans-unit>
+            <trans-unit id="25">
+                <source>This value is not valid.</source>
+                <target>Această valoare nu este validă.</target>
+            </trans-unit>
+            <trans-unit id="26">
+                <source>This value is not a valid time.</source>
+                <target>Această valoare nu reprezintă o oră validă.</target>
+            </trans-unit>
+            <trans-unit id="27">
+                <source>This value is not a valid URL.</source>
+                <target>Această valoare nu reprezintă un URL (link) valid.</target>
+            </trans-unit>
+            <trans-unit id="31">
+                <source>The two values should be equal.</source>
+                <target>Cele două valori ar trebui să fie egale.</target>
+            </trans-unit>
+            <trans-unit id="32">
+                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>Fișierul este prea mare. Mărimea maximă permisă este {{ limit }} {{ suffix }}.</target>
+            </trans-unit>
+            <trans-unit id="33">
+                <source>The file is too large.</source>
+                <target>Fișierul este prea mare.</target>
+            </trans-unit>
+            <trans-unit id="34">
+                <source>The file could not be uploaded.</source>
+                <target>Fișierul nu a putut fi încărcat.</target>
+            </trans-unit>
+            <trans-unit id="35">
+                <source>This value should be a valid number.</source>
+                <target>Această valoare nu reprezintă un număr valid.</target>
+            </trans-unit>
+            <trans-unit id="36">
+                <source>This file is not a valid image.</source>
+                <target>Acest fișier nu este o imagine validă.</target>
+            </trans-unit>
+            <trans-unit id="37">
+                <source>This is not a valid IP address.</source>
+                <target>Această valoare nu este o adresă IP validă.</target>
+            </trans-unit>
+            <trans-unit id="38">
+                <source>This value is not a valid language.</source>
+                <target>Această valoare nu reprezintă o limbă corectă.</target>
+            </trans-unit>
+            <trans-unit id="39">
+                <source>This value is not a valid locale.</source>
+                <target>Această valoare nu reprezintă un dialect (o limbă) corect.</target>
+            </trans-unit>
+            <trans-unit id="40">
+                <source>This value is not a valid country.</source>
+                <target>Această valoare nu este o țară validă.</target>
+            </trans-unit>
+            <trans-unit id="41">
+                <source>This value is already used.</source>
+                <target>Această valoare este folosită deja.</target>
+            </trans-unit>
+            <trans-unit id="42">
+                <source>The size of the image could not be detected.</source>
+                <target>Mărimea imaginii nu a putut fi detectată.</target>
+            </trans-unit>
+            <trans-unit id="43">
+                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
+                <target>Lățimea imaginii este prea mare ({{ width }}px). Lățimea maximă permisă este de {{ max_width }}px.</target>
+            </trans-unit>
+            <trans-unit id="44">
+                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
+                <target>Lățimea imaginii este prea mică ({{ width }}px). Lățimea minimă permisă este de {{ min_width }}px.</target>
+            </trans-unit>
+            <trans-unit id="45">
+                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
+                <target>Înălțimea imaginii este prea mare ({{ height }}px). Înălțimea maximă permisă este de {{ max_height }}px.</target>
+            </trans-unit>
+            <trans-unit id="46">
+                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
+                <target>Înălțimea imaginii este prea mică ({{ height }}px). Înălțimea minimă permisă este de {{ min_height }}px.</target>
+            </trans-unit>
+            <trans-unit id="47">
+                <source>This value should be the user's current password.</source>
+                <target>Această valoare trebuie să fie parola curentă a utilizatorului.</target>
+            </trans-unit>
+            <trans-unit id="48">
+                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
+                <target>Această valoare trebuie să conțină exact {{ limit }} caracter.|Această valoare trebuie să conțină exact {{ limit }} caractere.|Această valoare trebuie să conțină exact {{ limit }} de caractere.</target>
+            </trans-unit>
+            <trans-unit id="49">
+                <source>The file was only partially uploaded.</source>
+                <target>Fișierul a fost încărcat parțial.</target>
+            </trans-unit>
+            <trans-unit id="50">
+                <source>No file was uploaded.</source>
+                <target>Nu a fost încărcat nici un fișier.</target>
+            </trans-unit>
+            <trans-unit id="51">
+                <source>No temporary folder was configured in php.ini.</source>
+                <target>Nu este configurat nici un director temporar in php.ini.</target>
+            </trans-unit>
+            <trans-unit id="52">
+                <source>Cannot write temporary file to disk.</source>
+                <target>Nu a fost posibilă scrierea fișierului temporar pe disk.</target>
+            </trans-unit>
+            <trans-unit id="53">
+                <source>A PHP extension caused the upload to fail.</source>
+                <target>O extensie PHP a prevenit încărcarea cu succes a fișierului.</target>
+            </trans-unit>
+            <trans-unit id="54">
+                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
+                <target>Această colecție trebuie să conțină cel puțin {{ limit }} element.|Această colecție trebuie să conțină cel puțin {{ limit }} elemente.|Această colecție trebuie să conțină cel puțin {{ limit }} de elemente.</target>
+            </trans-unit>
+            <trans-unit id="55">
+                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
+                <target>Această colecție trebuie să conțină cel mult {{ limit }} element.|Această colecție trebuie să conțină cel mult {{ limit }} elemente.|Această colecție trebuie să conțină cel mult {{ limit }} de elemente.</target>
+            </trans-unit>
+            <trans-unit id="56">
+                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
+                <target>Această colecție trebuie să conțină {{ limit }} element.|Această colecție trebuie să conțină {{ limit }} elemente.|Această colecție trebuie să conțină {{ limit }} de elemente.</target>
+            </trans-unit>
+            <trans-unit id="57">
+                <source>Invalid card number.</source>
+                <target>Numărul card invalid.</target>
+            </trans-unit>
+            <trans-unit id="58">
+                <source>Unsupported card type or invalid card number.</source>
+                <target>Tipul sau numărul cardului nu sunt valide.</target>
+            </trans-unit>
+            <trans-unit id="59">
+                <source>This is not a valid International Bank Account Number (IBAN).</source>
+                <target>Acesta nu este un cod IBAN (International Bank Account Number) valid.</target>
+            </trans-unit>
+            <trans-unit id="60">
+                <source>This value is not a valid ISBN-10.</source>
+                <target>Această valoare nu este un cod ISBN-10 valid.</target>
+            </trans-unit>
+            <trans-unit id="61">
+                <source>This value is not a valid ISBN-13.</source>
+                <target>Această valoare nu este un cod ISBN-13 valid.</target>
+            </trans-unit>
+            <trans-unit id="62">
+                <source>This value is neither a valid ISBN-10 nor a valid ISBN-13.</source>
+                <target>Această valoare nu este un cod ISBN-10 sau ISBN-13 valid.</target>
+            </trans-unit>
+            <trans-unit id="63">
+                <source>This value is not a valid ISSN.</source>
+                <target>Această valoare nu este un cod ISSN valid.</target>
+            </trans-unit>
+            <trans-unit id="64">
+                <source>This value is not a valid currency.</source>
+                <target>Această valoare nu este o monedă validă.</target>
+            </trans-unit>
+            <trans-unit id="65">
+                <source>This value should be equal to {{ compared_value }}.</source>
+                <target>Această valoare trebuie să fie egală cu {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="66">
+                <source>This value should be greater than {{ compared_value }}.</source>
+                <target>Această valoare trebuie să fie mai mare de {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="67">
+                <source>This value should be greater than or equal to {{ compared_value }}.</source>
+                <target>Această valoare trebuie să fie mai mare sau egală cu {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="68">
+                <source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
+                <target>Această valoare trebuie identică cu {{ compared_value_type }} {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="69">
+                <source>This value should be less than {{ compared_value }}.</source>
+                <target>Această valoare trebuie să fie mai mică de {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="70">
+                <source>This value should be less than or equal to {{ compared_value }}.</source>
+                <target>Această valoare trebuie să fie mai mică sau egală cu {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="71">
+                <source>This value should not be equal to {{ compared_value }}.</source>
+                <target>Această valoare nu trebuie să fie egală cu {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="72">
+                <source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
+                <target>Această valoare nu trebuie să fie identică cu {{ compared_value_type }} {{ compared_value }}.</target>
+            </trans-unit>
+        </body>
+    </file>
+</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.ru.xlf b/vendor/symfony/validator/Resources/translations/validators.ru.xlf
new file mode 100644
index 0000000..d7a90c9
--- /dev/null
+++ b/vendor/symfony/validator/Resources/translations/validators.ru.xlf
@@ -0,0 +1,315 @@
+﻿<?xml version="1.0"?>
+<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
+    <file source-language="en" datatype="plaintext" original="file.ext">
+        <body>
+            <trans-unit id="1">
+                <source>This value should be false.</source>
+                <target>Значение должно быть ложным.</target>
+            </trans-unit>
+            <trans-unit id="2">
+                <source>This value should be true.</source>
+                <target>Значение должно быть истинным.</target>
+            </trans-unit>
+            <trans-unit id="3">
+                <source>This value should be of type {{ type }}.</source>
+                <target>Тип значения должен быть {{ type }}.</target>
+            </trans-unit>
+            <trans-unit id="4">
+                <source>This value should be blank.</source>
+                <target>Значение должно быть пустым.</target>
+            </trans-unit>
+            <trans-unit id="5">
+                <source>The value you selected is not a valid choice.</source>
+                <target>Выбранное Вами значение недопустимо.</target>
+            </trans-unit>
+            <trans-unit id="6">
+                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
+                <target>Вы должны выбрать хотя бы {{ limit }} вариант.|Вы должны выбрать хотя бы {{ limit }} варианта.|Вы должны выбрать хотя бы {{ limit }} вариантов.</target>
+            </trans-unit>
+            <trans-unit id="7">
+                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
+                <target>Вы должны выбрать не более чем {{ limit }} вариант.|Вы должны выбрать не более чем {{ limit }} варианта.|Вы должны выбрать не более чем {{ limit }} вариантов.</target>
+            </trans-unit>
+            <trans-unit id="8">
+                <source>One or more of the given values is invalid.</source>
+                <target>Одно или несколько заданных значений недопустимо.</target>
+            </trans-unit>
+            <trans-unit id="9">
+                <source>This field was not expected.</source>
+                <target>Это поле не ожидалось.</target>
+            </trans-unit>
+            <trans-unit id="10">
+                <source>This field is missing.</source>
+                <target>Это поле отсутствует.</target>
+            </trans-unit>
+            <trans-unit id="11">
+                <source>This value is not a valid date.</source>
+                <target>Значение не является правильной датой.</target>
+            </trans-unit>
+            <trans-unit id="12">
+                <source>This value is not a valid datetime.</source>
+                <target>Значение даты и времени недопустимо.</target>
+            </trans-unit>
+            <trans-unit id="13">
+                <source>This value is not a valid email address.</source>
+                <target>Значение адреса электронной почты недопустимо.</target>
+            </trans-unit>
+            <trans-unit id="14">
+                <source>The file could not be found.</source>
+                <target>Файл не может быть найден.</target>
+            </trans-unit>
+            <trans-unit id="15">
+                <source>The file is not readable.</source>
+                <target>Файл не может быть прочитан.</target>
+            </trans-unit>
+            <trans-unit id="16">
+                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>Файл слишком большой ({{ size }} {{ suffix }}). Максимально допустимый размер {{ limit }} {{ suffix }}.</target>
+            </trans-unit>
+            <trans-unit id="17">
+                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
+                <target>MIME-тип файла недопустим ({{ type }}). Допустимы MIME-типы файлов {{ types }}.</target>
+            </trans-unit>
+            <trans-unit id="18">
+                <source>This value should be {{ limit }} or less.</source>
+                <target>Значение должно быть {{ limit }} или меньше.</target>
+            </trans-unit>
+            <trans-unit id="19">
+                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
+                <target>Значение слишком длинное. Должно быть равно {{ limit }} символу или меньше.|Значение слишком длинное. Должно быть равно {{ limit }} символам или меньше.|Значение слишком длинное. Должно быть равно {{ limit }} символам или меньше.</target>
+            </trans-unit>
+            <trans-unit id="20">
+                <source>This value should be {{ limit }} or more.</source>
+                <target>Значение должно быть {{ limit }} или больше.</target>
+            </trans-unit>
+            <trans-unit id="21">
+                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
+                <target>Значение слишком короткое. Должно быть равно {{ limit }} символу или больше.|Значение слишком короткое. Должно быть равно {{ limit }} символам или больше.|Значение слишком короткое. Должно быть равно {{ limit }} символам или больше.</target>
+            </trans-unit>
+            <trans-unit id="22">
+                <source>This value should not be blank.</source>
+                <target>Значение не должно быть пустым.</target>
+            </trans-unit>
+            <trans-unit id="23">
+                <source>This value should not be null.</source>
+                <target>Значение не должно быть null.</target>
+            </trans-unit>
+            <trans-unit id="24">
+                <source>This value should be null.</source>
+                <target>Значение должно быть null.</target>
+            </trans-unit>
+            <trans-unit id="25">
+                <source>This value is not valid.</source>
+                <target>Значение недопустимо.</target>
+            </trans-unit>
+            <trans-unit id="26">
+                <source>This value is not a valid time.</source>
+                <target>Значение времени недопустимо.</target>
+            </trans-unit>
+            <trans-unit id="27">
+                <source>This value is not a valid URL.</source>
+                <target>Значение не является допустимым URL.</target>
+            </trans-unit>
+            <trans-unit id="31">
+                <source>The two values should be equal.</source>
+                <target>Оба значения должны быть одинаковыми.</target>
+            </trans-unit>
+            <trans-unit id="32">
+                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>Файл слишком большой. Максимально допустимый размер {{ limit }} {{ suffix }}.</target>
+            </trans-unit>
+            <trans-unit id="33">
+                <source>The file is too large.</source>
+                <target>Файл слишком большой.</target>
+            </trans-unit>
+            <trans-unit id="34">
+                <source>The file could not be uploaded.</source>
+                <target>Файл не может быть загружен.</target>
+            </trans-unit>
+            <trans-unit id="35">
+                <source>This value should be a valid number.</source>
+                <target>Значение должно быть числом.</target>
+            </trans-unit>
+            <trans-unit id="36">
+                <source>This value is not a valid country.</source>
+                <target>Значение не является допустимой страной.</target>
+            </trans-unit>
+            <trans-unit id="37">
+                <source>This file is not a valid image.</source>
+                <target>Файл не является допустимым форматом изображения.</target>
+            </trans-unit>
+            <trans-unit id="38">
+                <source>This is not a valid IP address.</source>
+                <target>Значение не является допустимым IP адресом.</target>
+            </trans-unit>
+            <trans-unit id="39">
+                <source>This value is not a valid language.</source>
+                <target>Значение не является допустимым языком.</target>
+            </trans-unit>
+            <trans-unit id="40">
+                <source>This value is not a valid locale.</source>
+                <target>Значение не является допустимой локалью.</target>
+            </trans-unit>
+            <trans-unit id="41">
+                <source>This value is already used.</source>
+                <target>Это значение уже используется.</target>
+            </trans-unit>
+            <trans-unit id="42">
+                <source>The size of the image could not be detected.</source>
+                <target>Не удалось определить размер изображения.</target>
+            </trans-unit>
+            <trans-unit id="43">
+                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
+                <target>Ширина изображения слишком велика ({{ width }}px). Максимально допустимая ширина {{ max_width }}px.</target>
+            </trans-unit>
+            <trans-unit id="44">
+                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
+                <target>Ширина изображения слишком мала ({{ width }}px). Минимально допустимая ширина {{ min_width }}px.</target>
+            </trans-unit>
+            <trans-unit id="45">
+                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
+                <target>Высота изображения слишком велика ({{ height }}px). Максимально допустимая высота {{ max_height }}px.</target>
+            </trans-unit>
+            <trans-unit id="46">
+                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
+                <target>Высота изображения слишком мала ({{ height }}px). Минимально допустимая высота {{ min_height }}px.</target>
+            </trans-unit>
+            <trans-unit id="47">
+                <source>This value should be the user's current password.</source>
+                <target>Значение должно быть текущим паролем пользователя.</target>
+            </trans-unit>
+            <trans-unit id="48">
+                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
+                <target>Значение должно быть равно {{ limit }} символу.|Значение должно быть равно {{ limit }} символам.|Значение должно быть равно {{ limit }} символам.</target>
+            </trans-unit>
+            <trans-unit id="49">
+                <source>The file was only partially uploaded.</source>
+                <target>Файл был загружен только частично.</target>
+            </trans-unit>
+            <trans-unit id="50">
+                <source>No file was uploaded.</source>
+                <target>Файл не был загружен.</target>
+            </trans-unit>
+            <trans-unit id="51">
+                <source>No temporary folder was configured in php.ini.</source>
+                <target>Не настроена временная директория в php.ini.</target>
+            </trans-unit>
+            <trans-unit id="52">
+                <source>Cannot write temporary file to disk.</source>
+                <target>Невозможно записать временный файл на диск.</target>
+            </trans-unit>
+            <trans-unit id="53">
+                <source>A PHP extension caused the upload to fail.</source>
+                <target>Расширение PHP вызвало ошибку при загрузке.</target>
+            </trans-unit>
+            <trans-unit id="54">
+                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
+                <target>Эта коллекция должна содержать {{ limit }} элемент или больше.|Эта коллекция должна содержать {{ limit }} элемента или больше.|Эта коллекция должна содержать {{ limit }} элементов или больше.</target>
+            </trans-unit>
+            <trans-unit id="55">
+                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
+                <target>Эта коллекция должна содержать {{ limit }} элемент или меньше.|Эта коллекция должна содержать {{ limit }} элемента или меньше.|Эта коллекция должна содержать {{ limit }} элементов или меньше.</target>
+            </trans-unit>
+            <trans-unit id="56">
+                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
+                <target>Эта коллекция должна содержать ровно {{ limit }} элемент.|Эта коллекция должна содержать ровно {{ limit }} элемента.|Эта коллекция должна содержать ровно {{ limit }} элементов.</target>
+            </trans-unit>
+            <trans-unit id="57">
+                <source>Invalid card number.</source>
+                <target>Неверный номер карты.</target>
+            </trans-unit>
+            <trans-unit id="58">
+                <source>Unsupported card type or invalid card number.</source>
+                <target>Неподдерживаемый тип или неверный номер карты.</target>
+            </trans-unit>
+            <trans-unit id="59">
+                <source>This is not a valid International Bank Account Number (IBAN).</source>
+                <target>Значение не является допустимым международным номером банковского счета (IBAN).</target>
+            </trans-unit>
+            <trans-unit id="60">
+                <source>This value is not a valid ISBN-10.</source>
+                <target>Значение имеет неверный формат ISBN-10.</target>
+            </trans-unit>
+            <trans-unit id="61">
+                <source>This value is not a valid ISBN-13.</source>
+                <target>Значение имеет неверный формат ISBN-13.</target>
+            </trans-unit>
+            <trans-unit id="62">
+                <source>This value is neither a valid ISBN-10 nor a valid ISBN-13.</source>
+                <target>Значение не соответствует форматам ISBN-10 и ISBN-13.</target>
+            </trans-unit>
+            <trans-unit id="63">
+                <source>This value is not a valid ISSN.</source>
+                <target>Значение не соответствует формату ISSN.</target>
+            </trans-unit>
+            <trans-unit id="64">
+                <source>This value is not a valid currency.</source>
+                <target>Некорректный формат валюты.</target>
+            </trans-unit>
+            <trans-unit id="65">
+                <source>This value should be equal to {{ compared_value }}.</source>
+                <target>Значение должно быть равно {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="66">
+                <source>This value should be greater than {{ compared_value }}.</source>
+                <target>Значение должно быть больше чем {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="67">
+                <source>This value should be greater than or equal to {{ compared_value }}.</source>
+                <target>Значение должно быть больше или равно {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="68">
+                <source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
+                <target>Значение должно быть идентичным {{ compared_value_type }} {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="69">
+                <source>This value should be less than {{ compared_value }}.</source>
+                <target>Значение должно быть меньше чем {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="70">
+                <source>This value should be less than or equal to {{ compared_value }}.</source>
+                <target>Значение должно быть меньше или равно {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="71">
+                <source>This value should not be equal to {{ compared_value }}.</source>
+                <target>Значение не должно быть равно {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="72">
+                <source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
+                <target>Значение не должно быть идентичным {{ compared_value_type }} {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="73">
+                <source>The image ratio is too big ({{ ratio }}). Allowed maximum ratio is {{ max_ratio }}.</source>
+                <target>Соотношение сторон изображения слишком велико ({{ ratio }}). Максимальное соотношение сторон {{ max_ratio }}.</target>
+            </trans-unit>
+            <trans-unit id="74">
+                <source>The image ratio is too small ({{ ratio }}). Minimum ratio expected is {{ min_ratio }}.</source>
+                <target>Соотношение сторон изображения слишком мало ({{ ratio }}). Минимальное соотношение сторон {{ min_ratio }}.</target>
+            </trans-unit>
+            <trans-unit id="75">
+                <source>The image is square ({{ width }}x{{ height }}px). Square images are not allowed.</source>
+                <target>Изображение квадратное ({{ width }}x{{ height }}px). Квадратные изображения не разрешены.</target>
+            </trans-unit>
+            <trans-unit id="76">
+                <source>The image is landscape oriented ({{ width }}x{{ height }}px). Landscape oriented images are not allowed.</source>
+                <target>Изображение в альбомной ориентации ({{ width }}x{{ height }}px). Изображения в альбомной ориентации не разрешены.</target>
+            </trans-unit>
+            <trans-unit id="77">
+                <source>The image is portrait oriented ({{ width }}x{{ height }}px). Portrait oriented images are not allowed.</source>
+                <target>Изображение в портретной ориентации ({{ width }}x{{ height }}px). Изображения в портретной ориентации не разрешены.</target>
+            </trans-unit>
+            <trans-unit id="78">
+                <source>An empty file is not allowed.</source>
+                <target>Пустые файлы не разрешены.</target>
+            </trans-unit>
+            <trans-unit id="79">
+                <source>The host could not be resolved.</source>
+                <target>Имя хоста не может быть разрешено.</target>
+            </trans-unit>
+            <trans-unit id="80">
+                <source>This value does not match the expected {{ charset }} charset.</source>
+                <target>Значение не совпадает с ожидаемой {{ charset }} кодировкой.</target>
+            </trans-unit>
+        </body>
+    </file>
+</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.sk.xlf b/vendor/symfony/validator/Resources/translations/validators.sk.xlf
new file mode 100644
index 0000000..46f3ec3
--- /dev/null
+++ b/vendor/symfony/validator/Resources/translations/validators.sk.xlf
@@ -0,0 +1,307 @@
+<?xml version="1.0"?>
+<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
+    <file source-language="en" datatype="plaintext" original="file.ext">
+        <body>
+            <trans-unit id="1">
+                <source>This value should be false.</source>
+                <target>Táto hodnota by mala byť nastavená na false.</target>
+            </trans-unit>
+            <trans-unit id="2">
+                <source>This value should be true.</source>
+                <target>Táto hodnota by mala byť nastavená na true.</target>
+            </trans-unit>
+            <trans-unit id="3">
+                <source>This value should be of type {{ type }}.</source>
+                <target>Táto hodnota by mala byť typu {{ type }}.</target>
+            </trans-unit>
+            <trans-unit id="4">
+                <source>This value should be blank.</source>
+                <target>Táto hodnota by mala byť prázdna.</target>
+            </trans-unit>
+            <trans-unit id="5">
+                <source>The value you selected is not a valid choice.</source>
+                <target>Táto hodnota by mala byť jednou z poskytnutých možností.</target>
+            </trans-unit>
+            <trans-unit id="6">
+                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
+                <target>Mali by ste vybrať minimálne {{ limit }} možnosť.|Mali by ste vybrať minimálne {{ limit }} možnosti.|Mali by ste vybrať minimálne {{ limit }} možností.</target>
+            </trans-unit>
+            <trans-unit id="7">
+                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
+                <target>Mali by ste vybrať najviac {{ limit }} možnosť.|Mali by ste vybrať najviac {{ limit }} možnosti.|Mali by ste vybrať najviac {{ limit }} možností.</target>
+            </trans-unit>
+            <trans-unit id="8">
+                <source>One or more of the given values is invalid.</source>
+                <target>Niektoré z uvedených hodnôt sú neplatné.</target>
+            </trans-unit>
+            <trans-unit id="9">
+                <source>This field was not expected.</source>
+                <target>Toto pole sa neočakáva.</target>
+            </trans-unit>
+            <trans-unit id="10">
+                <source>This field is missing.</source>
+                <target>Toto pole chýba.</target>
+            </trans-unit>
+            <trans-unit id="11">
+                <source>This value is not a valid date.</source>
+                <target>Tato hodnota nemá platný formát dátumu.</target>
+            </trans-unit>
+            <trans-unit id="12">
+                <source>This value is not a valid datetime.</source>
+                <target>Táto hodnota nemá platný formát dátumu a času.</target>
+            </trans-unit>
+            <trans-unit id="13">
+                <source>This value is not a valid email address.</source>
+                <target>Táto hodnota nie je platná emailová adresa.</target>
+            </trans-unit>
+            <trans-unit id="14">
+                <source>The file could not be found.</source>
+                <target>Súbor sa nenašiel.</target>
+            </trans-unit>
+            <trans-unit id="15">
+                <source>The file is not readable.</source>
+                <target>Súbor nie je čitateľný.</target>
+            </trans-unit>
+            <trans-unit id="16">
+                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>Súbor je príliš veľký ({{ size }} {{ suffix }}). Maximálna povolená veľkosť je {{ limit }} {{ suffix }}.</target>
+            </trans-unit>
+            <trans-unit id="17">
+                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
+                <target>Súbor typu ({{ type }}) nie je podporovaný. Podporované typy sú {{ types }}.</target>
+            </trans-unit>
+            <trans-unit id="18">
+                <source>This value should be {{ limit }} or less.</source>
+                <target>Táto hodnota by mala byť {{ limit }} alebo menej.</target>
+            </trans-unit>
+            <trans-unit id="19">
+                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
+                <target>Táto hodnota obsahuje viac znakov ako je povolené. Mala by obsahovať najviac {{ limit }} znak.|Táto hodnota obsahuje viac znakov ako je povolené. Mala by obsahovať najviac {{ limit }} znaky.|Táto hodnota obsahuje viac znakov ako je povolené. Mala by obsahovať najviac {{ limit }} znakov.</target>
+            </trans-unit>
+            <trans-unit id="20">
+                <source>This value should be {{ limit }} or more.</source>
+                <target>Táto hodnota by mala byť viac ako {{ limit }}.</target>
+            </trans-unit>
+            <trans-unit id="21">
+                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
+                <target>Táto hodnota je príliš krátka. Musí obsahovať minimálne {{ limit }} znak.|Táto hodnota je príliš krátka. Musí obsahovať minimálne {{ limit }} znaky.|Táto hodnota je príliš krátka. Minimálny počet znakov je {{ limit }}.</target>
+            </trans-unit>
+            <trans-unit id="22">
+                <source>This value should not be blank.</source>
+                <target>Táto hodnota by mala byť vyplnená.</target>
+            </trans-unit>
+            <trans-unit id="23">
+                <source>This value should not be null.</source>
+                <target>Táto hodnota by nemala byť null.</target>
+            </trans-unit>
+            <trans-unit id="24">
+                <source>This value should be null.</source>
+                <target>Táto hodnota by mala byť null.</target>
+            </trans-unit>
+            <trans-unit id="25">
+                <source>This value is not valid.</source>
+                <target>Táto hodnota nie je platná.</target>
+            </trans-unit>
+            <trans-unit id="26">
+                <source>This value is not a valid time.</source>
+                <target>Tato hodnota nemá správny formát času.</target>
+            </trans-unit>
+            <trans-unit id="27">
+                <source>This value is not a valid URL.</source>
+                <target>Táto hodnota nie je platnou URL adresou.</target>
+            </trans-unit>
+            <trans-unit id="31">
+                <source>The two values should be equal.</source>
+                <target>Tieto dve hodnoty by mali byť rovnaké.</target>
+            </trans-unit>
+            <trans-unit id="32">
+                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>Súbor je príliš veľký. Maximálna povolená veľkosť je {{ limit }} {{ suffix }}.</target>
+            </trans-unit>
+            <trans-unit id="33">
+                <source>The file is too large.</source>
+                <target>Súbor je príliš veľký.</target>
+            </trans-unit>
+            <trans-unit id="34">
+                <source>The file could not be uploaded.</source>
+                <target>Súbor sa nepodarilo nahrať.</target>
+            </trans-unit>
+            <trans-unit id="35">
+                <source>This value should be a valid number.</source>
+                <target>Táto hodnota by mala byť číslo.</target>
+            </trans-unit>
+            <trans-unit id="36">
+                <source>This file is not a valid image.</source>
+                <target>Tento súbor nie je obrázok.</target>
+            </trans-unit>
+            <trans-unit id="37">
+                <source>This is not a valid IP address.</source>
+                <target>Toto nie je platná IP adresa.</target>
+            </trans-unit>
+            <trans-unit id="38">
+                <source>This value is not a valid language.</source>
+                <target>Tento jazyk neexistuje.</target>
+            </trans-unit>
+            <trans-unit id="39">
+                <source>This value is not a valid locale.</source>
+                <target>Táto lokalizácia neexistuje.</target>
+            </trans-unit>
+            <trans-unit id="40">
+                <source>This value is not a valid country.</source>
+                <target>Táto krajina neexistuje.</target>
+            </trans-unit>
+            <trans-unit id="41">
+                <source>This value is already used.</source>
+                <target>Táto hodnota sa už používa.</target>
+            </trans-unit>
+            <trans-unit id="42">
+                <source>The size of the image could not be detected.</source>
+                <target>Nepodarilo sa zistiť rozmery obrázku.</target>
+            </trans-unit>
+            <trans-unit id="43">
+                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
+                <target>Obrázok je príliš široký ({{ width }}px). Maximálna povolená šírka obrázku je {{ max_width }}px.</target>
+            </trans-unit>
+            <trans-unit id="44">
+                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
+                <target>Obrázok je príliš úzky ({{ width }}px). Minimálna šírka obrázku by mala byť {{ min_width }}px.</target>
+            </trans-unit>
+            <trans-unit id="45">
+                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
+                <target>>Obrázok je príliš vysoký ({{ height }}px). Maximálna povolená výška obrázku je {{ max_height }}px.</target>
+            </trans-unit>
+            <trans-unit id="46">
+                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
+                <target>Obrázok je príliš nízky ({{ height }}px). Minimálna výška obrázku by mala byť {{ min_height }}px.</target>
+            </trans-unit>
+            <trans-unit id="47">
+                <source>This value should be the user's current password.</source>
+                <target>Táto hodnota by mala byť aktuálne heslo používateľa.</target>
+            </trans-unit>
+            <trans-unit id="48">
+                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
+                <target>Táto hodnota by mala mať presne {{ limit }} znak.|Táto hodnota by mala mať presne {{ limit }} znaky.|Táto hodnota by mala mať presne {{ limit }} znakov.</target>
+            </trans-unit>
+            <trans-unit id="49">
+                <source>The file was only partially uploaded.</source>
+                <target>Bola nahraná len časť súboru.</target>
+            </trans-unit>
+            <trans-unit id="50">
+                <source>No file was uploaded.</source>
+                <target>Žiadny súbor nebol nahraný.</target>
+            </trans-unit>
+            <trans-unit id="51">
+                <source>No temporary folder was configured in php.ini.</source>
+                <target>V php.ini nie je nastavená cesta k adresáru pre dočasné súbory.</target>
+            </trans-unit>
+            <trans-unit id="52">
+                <source>Cannot write temporary file to disk.</source>
+                <target>Dočasný súbor sa nepodarilo zapísať na disk.</target>
+            </trans-unit>
+            <trans-unit id="53">
+                <source>A PHP extension caused the upload to fail.</source>
+                <target>Rozšírenie PHP zabránilo nahraniu súboru.</target>
+            </trans-unit>
+            <trans-unit id="54">
+                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
+                <target>Táto kolekcia by mala obsahovať aspoň {{ limit }} prvok alebo viac.|Táto kolekcia by mala obsahovať aspoň {{ limit }} prvky alebo viac.|Táto kolekcia by mala obsahovať aspoň {{ limit }} prvkov alebo viac.</target>
+            </trans-unit>
+            <trans-unit id="55">
+                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
+                <target>Táto kolekcia by mala maximálne {{ limit }} prvok.|Táto kolekcia by mala obsahovať maximálne {{ limit }} prvky.|Táto kolekcia by mala obsahovať maximálne {{ limit }} prvkov.</target>
+            </trans-unit>
+            <trans-unit id="56">
+                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
+                <target>Táto kolekcia by mala obsahovať presne {{ limit }} prvok.|Táto kolekcia by mala obsahovať presne {{ limit }} prvky.|Táto kolekcia by mala obsahovať presne {{ limit }} prvkov.</target>
+            </trans-unit>
+            <trans-unit id="57">
+                <source>Invalid card number.</source>
+                <target>Neplatné číslo karty.</target>
+            </trans-unit>
+            <trans-unit id="58">
+                <source>Unsupported card type or invalid card number.</source>
+                <target>Nepodporovaný typ karty alebo neplatné číslo karty.</target>
+            </trans-unit>
+            <trans-unit id="59">
+                <source>This is not a valid International Bank Account Number (IBAN).</source>
+                <target>Toto je neplatný IBAN.</target>
+            </trans-unit>
+            <trans-unit id="60">
+                <source>This value is not a valid ISBN-10.</source>
+                <target>Táto hodnota je neplatné ISBN-10.</target>
+            </trans-unit>
+            <trans-unit id="61">
+                <source>This value is not a valid ISBN-13.</source>
+                <target>Táto hodnota je neplatné ISBN-13.</target>
+            </trans-unit>
+            <trans-unit id="62">
+                <source>This value is neither a valid ISBN-10 nor a valid ISBN-13.</source>
+                <target>Táto hodnota nie je platné ISBN-10 ani ISBN-13.</target>
+            </trans-unit>
+            <trans-unit id="63">
+                <source>This value is not a valid ISSN.</source>
+                <target>Táto hodnota nie je platné ISSN.</target>
+            </trans-unit>
+            <trans-unit id="64">
+                <source>This value is not a valid currency.</source>
+                <target>Táto hodnota nie je platná mena.</target>
+            </trans-unit>
+            <trans-unit id="65">
+                <source>This value should be equal to {{ compared_value }}.</source>
+                <target>Táto hodnota by mala byť rovná {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="66">
+                <source>This value should be greater than {{ compared_value }}.</source>
+                <target>Táto hodnota by mala byť väčšia ako {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="67">
+                <source>This value should be greater than or equal to {{ compared_value }}.</source>
+                <target>Táto hodnota by mala byť väčšia alebo rovná {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="68">
+                <source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
+                <target>Táto hodnota by mala byť typu {{ compared_value_type }} a zároveň by mala byť rovná {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="69">
+                <source>This value should be less than {{ compared_value }}.</source>
+                <target>Táto hodnota by mala byť menšia ako {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="70">
+                <source>This value should be less than or equal to {{ compared_value }}.</source>
+                <target>Táto hodnota by mala byť menšia alebo rovná {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="71">
+                <source>This value should not be equal to {{ compared_value }}.</source>
+                <target>Táto hodnota by nemala byť rovná {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="72">
+                <source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
+                <target>Táto hodnota by nemala byť typu {{ compared_value_type }} a zároveň by nemala byť rovná {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="73">
+                <source>The image ratio is too big ({{ ratio }}). Allowed maximum ratio is {{ max_ratio }}.</source>
+                <target>Pomer strán obrázku je príliš veľký ({{ ratio }}). Maximálny povolený pomer strán obrázku je {{ max_ratio }}.</target>
+            </trans-unit>
+            <trans-unit id="74">
+                <source>The image ratio is too small ({{ ratio }}). Minimum ratio expected is {{ min_ratio }}.</source>
+                <target>Pomer strán obrázku je príliš malý ({{ ratio }}). Minimálny povolený pomer strán obrázku je {{ min_ratio }}.</target>
+            </trans-unit>
+            <trans-unit id="75">
+                <source>The image is square ({{ width }}x{{ height }}px). Square images are not allowed.</source>
+                <target>Strany obrázku sú štvorcové ({{ width }}x{{ height }}px). Štvorcové obrázky nie sú povolené.</target>
+            </trans-unit>
+            <trans-unit id="76">
+                <source>The image is landscape oriented ({{ width }}x{{ height }}px). Landscape oriented images are not allowed.</source>
+                <target>Obrázok je orientovaný na šírku ({{ width }}x{{ height }}px). Obrázky orientované na šírku nie sú povolené.</target>
+            </trans-unit>
+            <trans-unit id="77">
+                <source>The image is portrait oriented ({{ width }}x{{ height }}px). Portrait oriented images are not allowed.</source>
+                <target>Obrázok je orientovaný na výšku ({{ width }}x{{ height }}px). Obrázky orientované na výšku nie sú povolené.</target>
+            </trans-unit>
+            <trans-unit id="78">
+                <source>An empty file is not allowed.</source>
+                <target>Súbor nesmie byť prázdny.</target>
+            </trans-unit>
+        </body>
+    </file>
+</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.sl.xlf b/vendor/symfony/validator/Resources/translations/validators.sl.xlf
new file mode 100644
index 0000000..4f0e7c6
--- /dev/null
+++ b/vendor/symfony/validator/Resources/translations/validators.sl.xlf
@@ -0,0 +1,315 @@
+<?xml version="1.0"?>
+<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
+    <file source-language="en" datatype="plaintext" original="file.ext">
+        <body>
+            <trans-unit id="1">
+                <source>This value should be false.</source>
+                <target>Vrednost bi morala biti nepravilna (false).</target>
+            </trans-unit>
+            <trans-unit id="2">
+                <source>This value should be true.</source>
+                <target>Vrednost bi morala biti pravilna (true).</target>
+            </trans-unit>
+            <trans-unit id="3">
+                <source>This value should be of type {{ type }}.</source>
+                <target>Vrednost mora biti naslednjega tipa {{ type }}.</target>
+            </trans-unit>
+            <trans-unit id="4">
+                <source>This value should be blank.</source>
+                <target>Vrednost mora biti prazna.</target>
+            </trans-unit>
+            <trans-unit id="5">
+                <source>The value you selected is not a valid choice.</source>
+                <target>Vrednost, ki ste jo izbrali, ni veljavna možnost.</target>
+            </trans-unit>
+            <trans-unit id="6">
+                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
+                <target>Izbrati morate vsaj {{ limit }} možnost.|Izbrati morate vsaj {{ limit }} možnosti.|Izbrati morate vsaj {{ limit }} možnosti.|Izbrati morate vsaj {{ limit }} možnosti.</target>
+            </trans-unit>
+            <trans-unit id="7">
+                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
+                <target>Izberete lahko največ {{ limit }} možnost.|Izberete lahko največ {{ limit }} možnosti.|Izberete lahko največ {{ limit }} možnosti.|Izberete lahko največ {{ limit }} možnosti.</target>
+            </trans-unit>
+            <trans-unit id="8">
+                <source>One or more of the given values is invalid.</source>
+                <target>Ena ali več podanih vrednosti ni veljavnih.</target>
+            </trans-unit>
+            <trans-unit id="9">
+                <source>This field was not expected.</source>
+                <target>To polje ni bilo pričakovati.</target>
+            </trans-unit>
+            <trans-unit id="10">
+                <source>This field is missing.</source>
+                <target>To polje manjka.</target>
+            </trans-unit>
+            <trans-unit id="11">
+                <source>This value is not a valid date.</source>
+                <target>Ta vrednost ni veljaven datum.</target>
+            </trans-unit>
+            <trans-unit id="12">
+                <source>This value is not a valid datetime.</source>
+                <target>Ta vrednost ni veljaven datum in čas.</target>
+            </trans-unit>
+            <trans-unit id="13">
+                <source>This value is not a valid email address.</source>
+                <target>Ta vrednost ni veljaven e-poštni naslov.</target>
+            </trans-unit>
+            <trans-unit id="14">
+                <source>The file could not be found.</source>
+                <target>Datoteke ni mogoče najti.</target>
+            </trans-unit>
+            <trans-unit id="15">
+                <source>The file is not readable.</source>
+                <target>Datoteke ni mogoče prebrati.</target>
+            </trans-unit>
+            <trans-unit id="16">
+                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>Datoteka je prevelika ({{ size }} {{ suffix }}). Največja dovoljena velikost je {{ limit }} {{ suffix }}.</target>
+            </trans-unit>
+            <trans-unit id="17">
+                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
+                <target>Mime tip datoteke je neveljaven ({{ type }}). Dovoljeni mime tipi so {{ types }}.</target>
+            </trans-unit>
+            <trans-unit id="18">
+                <source>This value should be {{ limit }} or less.</source>
+                <target>Ta vrednost bi morala biti {{ limit }} ali manj.</target>
+            </trans-unit>
+            <trans-unit id="19">
+                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
+                <target>Ta vrednost je predolga. Morala bi imeti {{ limit }} znak ali manj.|Ta vrednost je predolga. Morala bi imeti {{ limit }} znaka ali manj.|Ta vrednost je predolga. Morala bi imeti {{ limit }} znake ali manj.|Ta vrednost je predolga. Morala bi imeti {{ limit }} znakov ali manj.</target>
+            </trans-unit>
+            <trans-unit id="20">
+                <source>This value should be {{ limit }} or more.</source>
+                <target>Ta vrednost bi morala biti {{ limit }} ali več.</target>
+            </trans-unit>
+            <trans-unit id="21">
+                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
+                <target>Ta vrednost je prekratka. Morala bi imeti {{ limit }} znak ali več.|Ta vrednost je prekratka. Morala bi imeti {{ limit }} znaka ali več.|Ta vrednost je prekratka. Morala bi imeti {{ limit }} znake ali več.|Ta vrednost je prekratka. Morala bi imeti {{ limit }} znakov ali več.</target>
+            </trans-unit>
+            <trans-unit id="22">
+                <source>This value should not be blank.</source>
+                <target>Ta vrednost ne bi smela biti prazna.</target>
+            </trans-unit>
+            <trans-unit id="23">
+                <source>This value should not be null.</source>
+                <target>Ta vrednost ne bi smela biti nedefinirana (null).</target>
+            </trans-unit>
+            <trans-unit id="24">
+                <source>This value should be null.</source>
+                <target>Ta vrednost bi morala biti nedefinirana (null).</target>
+            </trans-unit>
+            <trans-unit id="25">
+                <source>This value is not valid.</source>
+                <target>Ta vrednost ni veljavna.</target>
+            </trans-unit>
+            <trans-unit id="26">
+                <source>This value is not a valid time.</source>
+                <target>Ta vrednost ni veljaven čas.</target>
+            </trans-unit>
+            <trans-unit id="27">
+                <source>This value is not a valid URL.</source>
+                <target>Ta vrednost ni veljaven URL.</target>
+            </trans-unit>
+            <trans-unit id="31">
+                <source>The two values should be equal.</source>
+                <target>Ti dve vrednosti bi morali biti enaki.</target>
+            </trans-unit>
+            <trans-unit id="32">
+                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>Datoteka je prevelika. Največja dovoljena velikost je {{ limit }} {{ suffix }}.</target>
+            </trans-unit>
+            <trans-unit id="33">
+                <source>The file is too large.</source>
+                <target>Datoteka je prevelika.</target>
+            </trans-unit>
+            <trans-unit id="34">
+                <source>The file could not be uploaded.</source>
+                <target>Datoteke ni bilo mogoče naložiti.</target>
+            </trans-unit>
+            <trans-unit id="35">
+                <source>This value should be a valid number.</source>
+                <target>Ta vrednost bi morala biti veljavna številka.</target>
+            </trans-unit>
+            <trans-unit id="36">
+                <source>This file is not a valid image.</source>
+                <target>Ta datoteka ni veljavna slika.</target>
+            </trans-unit>
+            <trans-unit id="37">
+                <source>This is not a valid IP address.</source>
+                <target>To ni veljaven IP naslov.</target>
+            </trans-unit>
+            <trans-unit id="38">
+                <source>This value is not a valid language.</source>
+                <target>Ta vrednost ni veljaven jezik.</target>
+            </trans-unit>
+            <trans-unit id="39">
+                <source>This value is not a valid locale.</source>
+                <target>Ta vrednost ni veljavna lokalnost.</target>
+            </trans-unit>
+            <trans-unit id="40">
+                <source>This value is not a valid country.</source>
+                <target>Ta vrednost ni veljavna država.</target>
+            </trans-unit>
+            <trans-unit id="41">
+                <source>This value is already used.</source>
+                <target>Ta vrednost je že uporabljena.</target>
+            </trans-unit>
+            <trans-unit id="42">
+                <source>The size of the image could not be detected.</source>
+                <target>Velikosti slike ni bilo mogoče zaznati.</target>
+            </trans-unit>
+            <trans-unit id="43">
+                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
+                <target>Širina slike je preširoka ({{ width }}px). Največja dovoljena širina je {{ max_width }}px.</target>
+            </trans-unit>
+            <trans-unit id="44">
+                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
+                <target>Širina slike je premajhna ({{ width }}px). Najmanjša predvidena širina je {{ min_width }}px.</target>
+            </trans-unit>
+            <trans-unit id="45">
+                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
+                <target>Višina slike je prevelika ({{ height }}px). Največja dovoljena višina je {{ max_height }}px.</target>
+            </trans-unit>
+            <trans-unit id="46">
+                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
+                <target>Višina slike je premajhna ({{ height }}px). Najmanjša predvidena višina je {{ min_height }}px.</target>
+            </trans-unit>
+            <trans-unit id="47">
+                <source>This value should be the user's current password.</source>
+                <target>Ta vrednost bi morala biti trenutno uporabnikovo geslo.</target>
+            </trans-unit>
+            <trans-unit id="48">
+                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
+                <target>Ta vrednost bi morala imeti točno {{ limit }} znak.|Ta vrednost bi morala imeti točno {{ limit }} znaka.|Ta vrednost bi morala imeti točno {{ limit }} znake.|Ta vrednost bi morala imeti točno {{ limit }} znakov.</target>
+            </trans-unit>
+            <trans-unit id="49">
+                <source>The file was only partially uploaded.</source>
+                <target>Datoteka je bila le delno naložena.</target>
+            </trans-unit>
+            <trans-unit id="50">
+                <source>No file was uploaded.</source>
+                <target>Nobena datoteka ni bila naložena.</target>
+            </trans-unit>
+            <trans-unit id="51">
+                <source>No temporary folder was configured in php.ini.</source>
+                <target>Začasna mapa ni nastavljena v php.ini.</target>
+            </trans-unit>
+            <trans-unit id="52">
+                <source>Cannot write temporary file to disk.</source>
+                <target>Začasne datoteke ni bilo mogoče zapisati na disk.</target>
+            </trans-unit>
+            <trans-unit id="53">
+                <source>A PHP extension caused the upload to fail.</source>
+                <target>PHP razširitev je vzrok, da nalaganje ni uspelo.</target>
+            </trans-unit>
+            <trans-unit id="54">
+                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
+                <target>Ta zbirka bi morala vsebovati {{ limit }} element ali več.|Ta zbirka bi morala vsebovati {{ limit }} elementa ali več.|Ta zbirka bi morala vsebovati {{ limit }} elemente ali več.|Ta zbirka bi morala vsebovati {{ limit }} elementov ali več.</target>
+            </trans-unit>
+            <trans-unit id="55">
+                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
+                <target>Ta zbirka bi morala vsebovati {{ limit }} element ali manj.|Ta zbirka bi morala vsebovati {{ limit }} elementa ali manj.|Ta zbirka bi morala vsebovati {{ limit }} elemente ali manj.|Ta zbirka bi morala vsebovati {{ limit }} elementov ali manj.</target>
+            </trans-unit>
+            <trans-unit id="56">
+                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
+                <target>Ta zbirka bi morala vsebovati točno {{ limit }} element.|Ta zbirka bi morala vsebovati točno {{ limit }} elementa.|Ta zbirka bi morala vsebovati točno {{ limit }} elemente.|Ta zbirka bi morala vsebovati točno {{ limit }} elementov.</target>
+            </trans-unit>
+            <trans-unit id="57">
+                <source>Invalid card number.</source>
+                <target>Neveljavna številka kartice.</target>
+            </trans-unit>
+            <trans-unit id="58">
+                <source>Unsupported card type or invalid card number.</source>
+                <target>Nepodprti tip kartice ali neveljavna številka kartice.</target>
+            </trans-unit>
+            <trans-unit id="59">
+                <source>This is not a valid International Bank Account Number (IBAN).</source>
+                <target>To ni veljavna mednarodna številka bančnega računa (IBAN).</target>
+            </trans-unit>
+            <trans-unit id="60">
+                <source>This value is not a valid ISBN-10.</source>
+                <target>Neveljavna vrednost po ISBN-10.</target>
+            </trans-unit>
+            <trans-unit id="61">
+                <source>This value is not a valid ISBN-13.</source>
+                <target>Neveljavna vrednost po ISBN-13.</target>
+            </trans-unit>
+            <trans-unit id="62">
+                <source>This value is neither a valid ISBN-10 nor a valid ISBN-13.</source>
+                <target>Neveljavna vrednost po ISBN-10 ali po ISBN-13.</target>
+            </trans-unit>
+            <trans-unit id="63">
+                <source>This value is not a valid ISSN.</source>
+                <target>Neveljavna vrednost ISSN.</target>
+            </trans-unit>
+            <trans-unit id="64">
+                <source>This value is not a valid currency.</source>
+                <target>Ta vrednost ni veljavna valuta.</target>
+            </trans-unit>
+            <trans-unit id="65">
+                <source>This value should be equal to {{ compared_value }}.</source>
+                <target>Ta vrednost bi morala biti enaka {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="66">
+                <source>This value should be greater than {{ compared_value }}.</source>
+                <target>Ta vrednost bi morala biti večja od {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="67">
+                <source>This value should be greater than or equal to {{ compared_value }}.</source>
+                <target>Ta vrednost bi morala biti večja ali enaka {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="68">
+                <source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
+                <target>Ta vrednost bi morala biti identična {{ compared_value_type }} {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="69">
+                <source>This value should be less than {{ compared_value }}.</source>
+                <target>Ta vrednost bi morala biti manjša od {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="70">
+                <source>This value should be less than or equal to {{ compared_value }}.</source>
+                <target>Ta vrednost bi morala biti manjša ali enaka {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="71">
+                <source>This value should not be equal to {{ compared_value }}.</source>
+                <target>Ta vrednost ne bi smela biti enaka {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="72">
+                <source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
+                <target>Ta vrednost ne bi smela biti identična {{ compared_value_type }} {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="73">
+                <source>The image ratio is too big ({{ ratio }}). Allowed maximum ratio is {{ max_ratio }}.</source>
+                <target>Razmerje slike je preveliko ({{ ratio }}). Največje dovoljeno razmerje je {{ max_ratio }}.</target>
+            </trans-unit>
+            <trans-unit id="74">
+                <source>The image ratio is too small ({{ ratio }}). Minimum ratio expected is {{ min_ratio }}.</source>
+                <target>Razmerje slike je premajhno ({{ ratio }}). Najmanjše pričakovano razmerje je {{ min_ratio }}.</target>
+            </trans-unit>
+            <trans-unit id="75">
+                <source>The image is square ({{ width }}x{{ height }}px). Square images are not allowed.</source>
+                <target>Slika je kvadrat ({{ width }}x{{ height }}px). Kvadratne slike niso dovoljene.</target>
+            </trans-unit>
+            <trans-unit id="76">
+                <source>The image is landscape oriented ({{ width }}x{{ height }}px). Landscape oriented images are not allowed.</source>
+                <target>Slika je ležeče usmerjena ({{ width }}x{{ height }}px). Ležeče usmerjene slike niso dovoljene.</target>
+            </trans-unit>
+            <trans-unit id="77">
+                <source>The image is portrait oriented ({{ width }}x{{ height }}px). Portrait oriented images are not allowed.</source>
+                <target>Slika je pokončno usmerjena ({{ width }}x{{ height }}px). Pokončno usmerjene slike niso dovoljene.</target>
+            </trans-unit>
+            <trans-unit id="78">
+                <source>An empty file is not allowed.</source>
+                <target>Prazna datoteka ni dovoljena.</target>
+            </trans-unit>
+            <trans-unit id="79">
+                <source>The host could not be resolved.</source>
+                <target>Gostitelja ni bilo mogoče prepoznati.</target>
+            </trans-unit>
+            <trans-unit id="80">
+                <source>This value does not match the expected {{ charset }} charset.</source>
+                <target>Ta vrednost se ne ujema s pričakovanim naborom znakov {{ charset }}.</target>
+            </trans-unit>
+        </body>
+    </file>
+</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.sq.xlf b/vendor/symfony/validator/Resources/translations/validators.sq.xlf
new file mode 100644
index 0000000..ffc8ccf
--- /dev/null
+++ b/vendor/symfony/validator/Resources/translations/validators.sq.xlf
@@ -0,0 +1,227 @@
+<?xml version="1.0"?>
+<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
+    <file source-language="en" datatype="plaintext" original="file.ext">
+        <body>
+            <trans-unit id="1">
+                <source>This value should be false.</source>
+                <target>Kjo vlerë duhet të jetë e pavërtetë (false).</target>
+            </trans-unit>
+            <trans-unit id="2">
+                <source>This value should be true.</source>
+                <target>Kjo vlerë duhet të jetë e vërtetë (true).</target>
+            </trans-unit>
+            <trans-unit id="3">
+                <source>This value should be of type {{ type }}.</source>
+                <target>Kjo vlerë duhet të jetë e llojit {{ type }}.</target>
+            </trans-unit>
+            <trans-unit id="4">
+                <source>This value should be blank.</source>
+                <target>Kjo vlerë duhet të jetë e zbrazët.</target>
+            </trans-unit>
+            <trans-unit id="5">
+                <source>The value you selected is not a valid choice.</source>
+                <target>Vlera që keni zgjedhur nuk është alternativë e vlefshme.</target>
+            </trans-unit>
+            <trans-unit id="6">
+                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
+                <target>Duhet të zgjedhni së paku {{ limit }} alternativa.|Duhet të zgjedhni së paku {{ limit }} alternativa.</target>
+            </trans-unit>
+            <trans-unit id="7">
+                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
+                <target>Duhet të zgjedhni më së shumti {{ limit }} alternativa.|Duhet të zgjedhni më së shumti {{ limit }} alternativa.</target>
+            </trans-unit>
+            <trans-unit id="8">
+                <source>One or more of the given values is invalid.</source>
+                <target>Një apo më shumë nga vlerat e dhëna nuk janë të sakta.</target>
+            </trans-unit>
+            <trans-unit id="9">
+                <source>This field was not expected.</source>
+                <target>Kjo fushë nuk pritej.</target>
+            </trans-unit>
+            <trans-unit id="10">
+                <source>This field is missing.</source>
+                <target>Kjo fushë është zhdukur.</target>
+            </trans-unit>
+            <trans-unit id="11">
+                <source>This value is not a valid date.</source>
+                <target>Kjo vlerë nuk është datë e vlefshme.</target>
+            </trans-unit>
+            <trans-unit id="12">
+                <source>This value is not a valid datetime.</source>
+                <target>Kjo vlerë nuk është datë-kohë e vlefshme.</target>
+            </trans-unit>
+            <trans-unit id="13">
+                <source>This value is not a valid email address.</source>
+                <target>Kjo vlerë nuk është e-mail adresë e vlefshme.</target>
+            </trans-unit>
+            <trans-unit id="14">
+                <source>The file could not be found.</source>
+                <target>File nuk mund të gjindej.</target>
+            </trans-unit>
+            <trans-unit id="15">
+                <source>The file is not readable.</source>
+                <target>File nuk është i lexueshëm.</target>
+            </trans-unit>
+            <trans-unit id="16">
+                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>File është shumë i madh ({{ size }} {{ suffix }}). Madhësia më e madhe e lejuar është {{ limit }} {{ suffix }}.</target>
+            </trans-unit>
+            <trans-unit id="17">
+                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
+                <target>Lloji mime i files nuk është i vlefshëm ({{ type }}). Llojet mime të lejuara janë {{ types }}.</target>
+            </trans-unit>
+            <trans-unit id="18">
+                <source>This value should be {{ limit }} or less.</source>
+                <target>Kjo vlerë duhet të jetë {{ limit }} ose më pak.</target>
+            </trans-unit>
+            <trans-unit id="19">
+                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
+                <target>Kjo vlerë është shumë e gjatë. Duhet t'i ketë {{ limit }} ose më pak karaktere.|Kjo vlerë është shumë e gjatë. Duhet t'i ketë {{ limit }} ose më pak karaktere.</target>
+            </trans-unit>
+            <trans-unit id="20">
+                <source>This value should be {{ limit }} or more.</source>
+                <target>Kjo vlerë duhet të jetë {{ limit }} ose më shumë.</target>
+            </trans-unit>
+            <trans-unit id="21">
+                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
+                <target>Kjo vlerë është shumë e shkurtër. Duhet t'i ketë {{ limit }} ose më shumë karaktere.|Kjo vlerë është shumë e shkurtër. Duhet t'i ketë {{ limit }} ose më shumë karaktere.</target>
+            </trans-unit>
+            <trans-unit id="22">
+                <source>This value should not be blank.</source>
+                <target>Kjo vlerë nuk duhet të jetë e zbrazët.</target>
+            </trans-unit>
+            <trans-unit id="23">
+                <source>This value should not be null.</source>
+                <target>Kjo vlerë nuk duhet të jetë null.</target>
+            </trans-unit>
+            <trans-unit id="24">
+                <source>This value should be null.</source>
+                <target>Kjo vlerë duhet të jetë null.</target>
+            </trans-unit>
+            <trans-unit id="25">
+                <source>This value is not valid.</source>
+                <target>Kjo vlerë nuk është e vlefshme.</target>
+            </trans-unit>
+            <trans-unit id="26">
+                <source>This value is not a valid time.</source>
+                <target>Kjo vlerë nuk është kohë e vlefshme.</target>
+            </trans-unit>
+            <trans-unit id="27">
+                <source>This value is not a valid URL.</source>
+                <target>Kjo vlerë nuk është URL e vlefshme.</target>
+            </trans-unit>
+            <trans-unit id="31">
+                <source>The two values should be equal.</source>
+                <target>Këto dy vlera duhet të jenë të barabarta.</target>
+            </trans-unit>
+            <trans-unit id="32">
+                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>Ky file është shumë i madh. Madhësia maksimale e lejuar është {{ limit }} {{ suffix }}.</target>
+            </trans-unit>
+            <trans-unit id="33">
+                <source>The file is too large.</source>
+                <target>Ky file është shumë i madh.</target>
+            </trans-unit>
+            <trans-unit id="34">
+                <source>The file could not be uploaded.</source>
+                <target>Ky file nuk mund të ngarkohet.</target>
+            </trans-unit>
+            <trans-unit id="35">
+                <source>This value should be a valid number.</source>
+                <target>Kjo vlerë duhet të jetë numër i vlefshëm.</target>
+            </trans-unit>
+            <trans-unit id="36">
+                <source>This file is not a valid image.</source>
+                <target>Ky file nuk është imazh i vlefshëm.</target>
+            </trans-unit>
+            <trans-unit id="37">
+                <source>This is not a valid IP address.</source>
+                <target>Kjo vlerë nuk është IP adresë e vlefshme.</target>
+            </trans-unit>
+            <trans-unit id="38">
+                <source>This value is not a valid language.</source>
+                <target>Kjo vlerë nuk është gjuhë e vlefshme.</target>
+            </trans-unit>
+            <trans-unit id="39">
+                <source>This value is not a valid locale.</source>
+                <target>Kjo vlerë nuk është përcaktim rajonal i vlefshëm.</target>
+            </trans-unit>
+            <trans-unit id="40">
+                <source>This value is not a valid country.</source>
+                <target>Kjo vlerë nuk është shtet i vlefshëm.</target>
+            </trans-unit>
+            <trans-unit id="41">
+                <source>This value is already used.</source>
+                <target>Kjo vlerë është tashmë në përdorim.</target>
+            </trans-unit>
+            <trans-unit id="42">
+                <source>The size of the image could not be detected.</source>
+                <target>Madhësia e këtij imazhi nuk mund të zbulohet.</target>
+            </trans-unit>
+            <trans-unit id="43">
+                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
+                <target>Gjerësia e imazhit është shumë e madhe ({{ width }}px). Gjerësia maksimale e lejuar është {{ max_width }}px.</target>
+            </trans-unit>
+            <trans-unit id="44">
+                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
+                <target>Gjerësia e imazhit është shumë e vogël ({{ width }}px). Gjerësia minimale e pritur është {{ min_width }}px.</target>
+            </trans-unit>
+            <trans-unit id="45">
+                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
+                <target>Gjatësia e imazhit është shumë e madhe ({{ height }}px). Gjatësia maksimale e lejuar është {{ max_height }}px.</target>
+            </trans-unit>
+            <trans-unit id="46">
+                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
+                <target>Gjatësia e imazhit është shumë e vogël ({{ height }}px). Gjatësia minimale e pritur është {{ min_height }}px.</target>
+            </trans-unit>
+            <trans-unit id="47">
+                <source>This value should be the user's current password.</source>
+                <target>Kjo vlerë duhet të jetë fjalëkalimi aktual i përdoruesit.</target>
+            </trans-unit>
+            <trans-unit id="48">
+                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
+                <target>Kjo vlerë duhet të ketë saktësisht {{ limit }} karaktere.|Kjo vlerë duhet të ketë saktësisht {{ limit }} karaktere.</target>
+            </trans-unit>
+            <trans-unit id="49">
+                <source>The file was only partially uploaded.</source>
+                <target>Ky file është ngarkuar pjesërisht.</target>
+            </trans-unit>
+            <trans-unit id="50">
+                <source>No file was uploaded.</source>
+                <target>Nuk është ngarkuar ndonjë file.</target>
+            </trans-unit>
+            <trans-unit id="51">
+                <source>No temporary folder was configured in php.ini.</source>
+                <target>Asnjë folder i përkohshëm nuk është konfiguruar në php.ini.</target>
+            </trans-unit>
+            <trans-unit id="52">
+                <source>Cannot write temporary file to disk.</source>
+                <target>Nuk mund të shkruhet file i përkohshëm në disk.</target>
+            </trans-unit>
+            <trans-unit id="53">
+                <source>A PHP extension caused the upload to fail.</source>
+                <target>Një ekstenzion i PHP-së bëri të dështojë ngarkimi i files.</target>
+            </trans-unit>
+            <trans-unit id="54">
+                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
+                <target>Ky kolekcion duhet të përmbajë {{ limit }} ose më shumë elemente.|Ky kolekcion duhet të përmbajë {{ limit }} ose më shumë elemente.</target>
+            </trans-unit>
+            <trans-unit id="55">
+                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
+                <target>Ky kolekcion duhet të përmbajë {{ limit }} ose më shumë elemente.|Ky kolekcion duhet të përmbajë {{ limit }} ose më shumë elemente.</target>
+            </trans-unit>
+            <trans-unit id="56">
+                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
+                <target>Ky kolekcion duhet të përmbajë saktësisht {{ limit }} elemente.|Ky kolekcion duhet të përmbajë saktësisht {{ limit }} elemente.</target>
+            </trans-unit>
+            <trans-unit id="57">
+                <source>Invalid card number.</source>
+                <target>Numër kartele i pavlefshëm.</target>
+            </trans-unit>
+            <trans-unit id="58">
+                <source>Unsupported card type or invalid card number.</source>
+                <target>Lloj kartele i pambështetur ose numër kartele i pavlefshëm.</target>
+            </trans-unit>
+        </body>
+    </file>
+</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.sr_Cyrl.xlf b/vendor/symfony/validator/Resources/translations/validators.sr_Cyrl.xlf
new file mode 100644
index 0000000..81f5210
--- /dev/null
+++ b/vendor/symfony/validator/Resources/translations/validators.sr_Cyrl.xlf
@@ -0,0 +1,303 @@
+<?xml version="1.0"?>
+<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
+    <file source-language="en" datatype="plaintext" original="file.ext">
+        <body>
+            <trans-unit id="1">
+                <source>This value should be false.</source>
+                <target>Вредност треба да буде нетачна.</target>
+            </trans-unit>
+            <trans-unit id="2">
+                <source>This value should be true.</source>
+                <target>Вредност треба да буде тачна.</target>
+            </trans-unit>
+            <trans-unit id="3">
+                <source>This value should be of type {{ type }}.</source>
+                <target>Вредност треба да буде типа {{ type }}.</target>
+            </trans-unit>
+            <trans-unit id="4">
+                <source>This value should be blank.</source>
+                <target>Вредност треба да буде празна.</target>
+            </trans-unit>
+            <trans-unit id="5">
+                <source>The value you selected is not a valid choice.</source>
+                <target>Вредност треба да буде једна од понуђених.</target>
+            </trans-unit>
+            <trans-unit id="6">
+                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
+                <target>Изаберите бар {{ limit }} могућност.|Изаберите бар {{ limit }} могућности.|Изаберите бар {{ limit }} могућности.</target>
+            </trans-unit>
+            <trans-unit id="7">
+                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
+                <target>Изаберите највише {{ limit }} могућност.|Изаберите највише {{ limit }} могућности.|Изаберите највише {{ limit }} могућности.</target>
+            </trans-unit>
+            <trans-unit id="8">
+                <source>One or more of the given values is invalid.</source>
+                <target>Једна или више вредности је невалидна.</target>
+            </trans-unit>
+            <trans-unit id="9">
+                <source>This field was not expected.</source>
+                <target>Ово поље не очекује.</target>
+            </trans-unit>
+            <trans-unit id="10">
+                <source>This field is missing.</source>
+                <target>Ово поље недостаје.</target>
+            </trans-unit>
+            <trans-unit id="11">
+                <source>This value is not a valid date.</source>
+                <target>Вредност није валидан датум.</target>
+            </trans-unit>
+            <trans-unit id="12">
+                <source>This value is not a valid datetime.</source>
+                <target>Вредност није валидан датум-време.</target>
+            </trans-unit>
+            <trans-unit id="13">
+                <source>This value is not a valid email address.</source>
+                <target>Вредност није валидна адреса електронске поште.</target>
+            </trans-unit>
+            <trans-unit id="14">
+                <source>The file could not be found.</source>
+                <target>Датотека не може бити пронађена.</target>
+            </trans-unit>
+            <trans-unit id="15">
+                <source>The file is not readable.</source>
+                <target>Датотека није читљива.</target>
+            </trans-unit>
+            <trans-unit id="16">
+                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>Датотека је превелика ({{ size }} {{ suffix }}). Највећа дозвољена величина је {{ limit }} {{ suffix }}.</target>
+            </trans-unit>
+            <trans-unit id="17">
+                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
+                <target>Миме тип датотеке није валидан ({{ type }}). Дозвољени миме типови су {{ types }}.</target>
+            </trans-unit>
+            <trans-unit id="18">
+                <source>This value should be {{ limit }} or less.</source>
+                <target>Вредност треба да буде {{ limit }} или мање.</target>
+            </trans-unit>
+            <trans-unit id="19">
+                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
+                <target>Вредност је предугачка. Треба да има {{ limit }} карактер или мање.|Вредност је предугачка. Треба да има {{ limit }} карактера или мање.|Вредност је предугачка. Треба да има {{ limit }} карактера или мање.</target>
+            </trans-unit>
+            <trans-unit id="20">
+                <source>This value should be {{ limit }} or more.</source>
+                <target>Вредност треба да буде {{ limit }} или више.</target>
+            </trans-unit>
+            <trans-unit id="21">
+                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
+                <target>Вредност је прекратка. Треба да има {{ limit }} карактер или више.|Вредност је прекратка. Треба да има {{ limit }} карактера или више.|Вредност је прекратка. Треба да има {{ limit }} карактера или више.</target>
+            </trans-unit>
+            <trans-unit id="22">
+                <source>This value should not be blank.</source>
+                <target>Вредност не треба да буде празна.</target>
+            </trans-unit>
+            <trans-unit id="23">
+                <source>This value should not be null.</source>
+                <target>Вредност не треба да буде null.</target>
+            </trans-unit>
+            <trans-unit id="24">
+                <source>This value should be null.</source>
+                <target>Вредност треба да буде null.</target>
+            </trans-unit>
+            <trans-unit id="25">
+                <source>This value is not valid.</source>
+                <target>Вредност је невалидна.</target>
+            </trans-unit>
+            <trans-unit id="26">
+                <source>This value is not a valid time.</source>
+                <target>Вредност није валидно време.</target>
+            </trans-unit>
+            <trans-unit id="27">
+                <source>This value is not a valid URL.</source>
+                <target>Вредност није валидан URL.</target>
+            </trans-unit>
+            <trans-unit id="31">
+                <source>The two values should be equal.</source>
+                <target>Обе вредности треба да буду једнаке.</target>
+            </trans-unit>
+            <trans-unit id="32">
+                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>Датотека је превелика. Највећа дозвољена величина је {{ limit }} {{ suffix }}.</target>
+            </trans-unit>
+            <trans-unit id="33">
+                <source>The file is too large.</source>
+                <target>Датотека је превелика.</target>
+            </trans-unit>
+            <trans-unit id="34">
+                <source>The file could not be uploaded.</source>
+                <target>Датотека не може бити отпремљена.</target>
+            </trans-unit>
+            <trans-unit id="35">
+                <source>This value should be a valid number.</source>
+                <target>Вредност треба да буде валидан број.</target>
+            </trans-unit>
+            <trans-unit id="36">
+                <source>This file is not a valid image.</source>
+                <target>Ова датотека није валидна слика.</target>
+            </trans-unit>
+            <trans-unit id="37">
+                <source>This is not a valid IP address.</source>
+                <target>Ово није валидна ИП адреса.</target>
+            </trans-unit>
+            <trans-unit id="38">
+                <source>This value is not a valid language.</source>
+                <target>Вредност није валидан језик.</target>
+            </trans-unit>
+            <trans-unit id="39">
+                <source>This value is not a valid locale.</source>
+                <target>Вредност није валидан локал.</target>
+            </trans-unit>
+            <trans-unit id="40">
+                <source>This value is not a valid country.</source>
+                <target>Вредност није валидна земља.</target>
+            </trans-unit>
+            <trans-unit id="41">
+                <source>This value is already used.</source>
+                <target>Вредност је већ искоришћена.</target>
+            </trans-unit>
+            <trans-unit id="42">
+                <source>The size of the image could not be detected.</source>
+                <target>Величина слике не може бити одређена.</target>
+            </trans-unit>
+            <trans-unit id="43">
+                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
+                <target>Ширина слике је превелика ({{ width }}px). Најећа дозвољена ширина је {{ max_width }}px.</target>
+            </trans-unit>
+            <trans-unit id="44">
+                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
+                <target>Ширина слике је премала ({{ width }}px). Најмања дозвољена ширина је {{ min_width }}px.</target>
+            </trans-unit>
+            <trans-unit id="45">
+                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
+                <target>Висина слике је превелика ({{ height }}px). Најећа дозвољена висина је {{ max_height }}px.</target>
+            </trans-unit>
+            <trans-unit id="46">
+                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
+                <target>Висина слике је премала ({{ height }}px). Најмања дозвољена висина је {{ min_height }}px.</target>
+            </trans-unit>
+            <trans-unit id="47">
+                <source>This value should be the user's current password.</source>
+                <target>Вредност треба да буде тренутна корисничка лозинка.</target>
+            </trans-unit>
+            <trans-unit id="48">
+                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
+                <target>Вредност треба да има тачно {{ limit }} карактер.|Вредност треба да има тачно {{ limit }} карактера.|Вредност треба да има тачно {{ limit }} карактера.</target>
+            </trans-unit>
+            <trans-unit id="49">
+                <source>The file was only partially uploaded.</source>
+                <target>Датотека је само парцијално отпремљена.</target>
+            </trans-unit>
+            <trans-unit id="50">
+                <source>No file was uploaded.</source>
+                <target>Датотека није отпремљена.</target>
+            </trans-unit>
+            <trans-unit id="51">
+                <source>No temporary folder was configured in php.ini.</source>
+                <target>Привремени директоријум није конфигурисан у php.ini.</target>
+            </trans-unit>
+            <trans-unit id="52">
+                <source>Cannot write temporary file to disk.</source>
+                <target>Немогуће писање привремене датотеке на диск.</target>
+            </trans-unit>
+            <trans-unit id="53">
+                <source>A PHP extension caused the upload to fail.</source>
+                <target>PHP екстензија је проузроковала неуспех отпремања датотеке.</target>
+            </trans-unit>
+            <trans-unit id="54">
+                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
+                <target>Ова колекција треба да садржи {{ limit }} или више елемената.|Ова колекција треба да садржи {{ limit }} или више елемената.|Ова колекција треба да садржи {{ limit }} или више елемената.</target>
+            </trans-unit>
+            <trans-unit id="55">
+                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
+                <target>Ова колекција треба да садржи {{ limit }} или мање елемената.|Ова колекција треба да садржи {{ limit }} или мање елемената.|Ова колекција треба да садржи {{ limit }} или мање елемената.</target>
+            </trans-unit>
+            <trans-unit id="56">
+                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
+                <target>Ова колекција треба да садржи тачно {{ limit }} елемент.|Ова колекција треба да садржи тачно {{ limit }} елемента.|Ова колекција треба да садржи тачно {{ limit }} елемената.</target>
+            </trans-unit>
+            <trans-unit id="57">
+                <source>Invalid card number.</source>
+                <target>Невалидан број картице.</target>
+            </trans-unit>
+            <trans-unit id="58">
+                <source>Unsupported card type or invalid card number.</source>
+                <target>Невалидан број картице или тип картице није подржан.</target>
+            </trans-unit>
+            <trans-unit id="59">
+                <source>This is not a valid International Bank Account Number (IBAN).</source>
+                <target>Ово није валидан међународни број банковног рачуна (IBAN).</target>
+            </trans-unit>
+            <trans-unit id="60">
+                <source>This value is not a valid ISBN-10.</source>
+                <target>Ово није валидан ISBN-10.</target>
+            </trans-unit>
+            <trans-unit id="61">
+                <source>This value is not a valid ISBN-13.</source>
+                <target>Ово није валидан ISBN-13.</target>
+            </trans-unit>
+            <trans-unit id="62">
+                <source>This value is neither a valid ISBN-10 nor a valid ISBN-13.</source>
+                <target>Ово није валидан ISBN-10 или ISBN-13.</target>
+            </trans-unit>
+            <trans-unit id="63">
+                <source>This value is not a valid ISSN.</source>
+                <target>Ово није валидан ISSN.</target>
+            </trans-unit>
+            <trans-unit id="64">
+                <source>This value is not a valid currency.</source>
+                <target>Ово није валидна валута.</target>
+            </trans-unit>
+            <trans-unit id="65">
+                <source>This value should be equal to {{ compared_value }}.</source>
+                <target>Ова вредност треба да буде {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="66">
+                <source>This value should be greater than {{ compared_value }}.</source>
+                <target>Ова вредност треба да буде већа од {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="67">
+                <source>This value should be greater than or equal to {{ compared_value }}.</source>
+                <target>Ова вредност треба да буде већа или једнака {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="68">
+                <source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
+                <target>Ова вредност треба да буде идентична са {{ compared_value_type }} {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="69">
+                <source>This value should be less than {{ compared_value }}.</source>
+                <target>Ова вредност треба да буде мања од {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="70">
+                <source>This value should be less than or equal to {{ compared_value }}.</source>
+                <target>Ова вредност треба да буде мања или једнака {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="71">
+                <source>This value should not be equal to {{ compared_value }}.</source>
+                <target>Ова вредност не треба да буде једнака {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="72">
+                <source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
+                <target>Ова вредност не треба да буде идентична са {{ compared_value_type }} {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="73">
+                <source>The image ratio is too big ({{ ratio }}). Allowed maximum ratio is {{ max_ratio }}.</source>
+                <target>Размера ове слике је превелика ({{ ratio }}). Максимална дозвољена размера је {{ max_ratio }}.</target>
+            </trans-unit>
+            <trans-unit id="74">
+                <source>The image ratio is too small ({{ ratio }}). Minimum ratio expected is {{ min_ratio }}.</source>
+                <target>Размера ове слике је премала ({{ ratio }}). Минимална очекивана размера је {{ min_ratio }}.</target>
+            </trans-unit>
+            <trans-unit id="75">
+                <source>The image is square ({{ width }}x{{ height }}px). Square images are not allowed.</source>
+                <target>Слика је квадратна ({{ width }}x{{ height }}px). Квадратне слике нису дозвољене.</target>
+            </trans-unit>
+            <trans-unit id="76">
+                <source>The image is landscape oriented ({{ width }}x{{ height }}px). Landscape oriented images are not allowed.</source>
+                <target>Слика је оријентације пејзажа ({{ width }}x{{ height }}px). Пејзажна оријентација слика није дозвољена.</target>
+            </trans-unit>
+            <trans-unit id="77">
+                <source>The image is portrait oriented ({{ width }}x{{ height }}px). Portrait oriented images are not allowed.</source>
+                <target>Слика је оријантације портрета ({{ width }}x{{ height }}px). Портретна оријентација слика није дозвољена.</target>
+            </trans-unit>
+        </body>
+    </file>
+</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.sr_Latn.xlf b/vendor/symfony/validator/Resources/translations/validators.sr_Latn.xlf
new file mode 100644
index 0000000..60c093a
--- /dev/null
+++ b/vendor/symfony/validator/Resources/translations/validators.sr_Latn.xlf
@@ -0,0 +1,303 @@
+<?xml version="1.0"?>
+<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
+    <file source-language="en" datatype="plaintext" original="file.ext">
+        <body>
+            <trans-unit id="1">
+                <source>This value should be false.</source>
+                <target>Vrednost treba da bude netačna.</target>
+            </trans-unit>
+            <trans-unit id="2">
+                <source>This value should be true.</source>
+                <target>Vrednost treba da bude tačna.</target>
+            </trans-unit>
+            <trans-unit id="3">
+                <source>This value should be of type {{ type }}.</source>
+                <target>Vrednost treba da bude tipa {{ type }}.</target>
+            </trans-unit>
+            <trans-unit id="4">
+                <source>This value should be blank.</source>
+                <target>Vrednost treba da bude prazna.</target>
+            </trans-unit>
+            <trans-unit id="5">
+                <source>The value you selected is not a valid choice.</source>
+                <target>Vrednost treba da bude jedna od ponuđenih.</target>
+            </trans-unit>
+            <trans-unit id="6">
+                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
+                <target>Izaberite bar {{ limit }} mogućnost.|Izaberite bar {{ limit }} mogućnosti.|Izaberite bar {{ limit }} mogućnosti.</target>
+            </trans-unit>
+            <trans-unit id="7">
+                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
+                <target>Izaberite najviše {{ limit }} mogućnost.|Izaberite najviše {{ limit }} mogućnosti.|Izaberite najviše {{ limit }} mogućnosti.</target>
+            </trans-unit>
+            <trans-unit id="8">
+                <source>One or more of the given values is invalid.</source>
+                <target>Jedna ili više vrednosti je nevalidna.</target>
+            </trans-unit>
+            <trans-unit id="9">
+                <source>This field was not expected.</source>
+                <target>Ovo polje ne očekuje.</target>
+            </trans-unit>
+            <trans-unit id="10">
+                <source>This field is missing.</source>
+                <target>Ovo polje nedostaje.</target>
+            </trans-unit>
+            <trans-unit id="11">
+                <source>This value is not a valid date.</source>
+                <target>Vrednost nije validan datum.</target>
+            </trans-unit>
+            <trans-unit id="12">
+                <source>This value is not a valid datetime.</source>
+                <target>Vrednost nije validan datum-vreme.</target>
+            </trans-unit>
+            <trans-unit id="13">
+                <source>This value is not a valid email address.</source>
+                <target>Vrednost nije validna adresa elektronske pošte.</target>
+            </trans-unit>
+            <trans-unit id="14">
+                <source>The file could not be found.</source>
+                <target>Datoteka ne može biti pronađena.</target>
+            </trans-unit>
+            <trans-unit id="15">
+                <source>The file is not readable.</source>
+                <target>Datoteka nije čitljiva.</target>
+            </trans-unit>
+            <trans-unit id="16">
+                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>Datoteka je prevelika ({{ size }} {{ suffix }}). Najveća dozvoljena veličina je {{ limit }} {{ suffix }}.</target>
+            </trans-unit>
+            <trans-unit id="17">
+                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
+                <target>Mime tip datoteke nije validan ({{ type }}). Dozvoljeni mime tipovi su {{ types }}.</target>
+            </trans-unit>
+            <trans-unit id="18">
+                <source>This value should be {{ limit }} or less.</source>
+                <target>Vrednost treba da bude {{ limit }} ili manje.</target>
+            </trans-unit>
+            <trans-unit id="19">
+                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
+                <target>Vrednost je predugačka. Treba da ima {{ limit }} karakter ili manje.|Vrednost je predugačka. Treba da ima {{ limit }} karaktera ili manje.|Vrednost je predugačka. Treba da ima {{ limit }} karaktera ili manje.</target>
+            </trans-unit>
+            <trans-unit id="20">
+                <source>This value should be {{ limit }} or more.</source>
+                <target>Vrednost treba da bude {{ limit }} ili više.</target>
+            </trans-unit>
+            <trans-unit id="21">
+                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
+                <target>Vrednost je prekratka. Treba da ima {{ limit }} karakter ili više.|Vrednost je prekratka. Treba da ima {{ limit }} karaktera ili više.|Vrednost je prekratka. Treba da ima {{ limit }} karaktera ili više.</target>
+            </trans-unit>
+            <trans-unit id="22">
+                <source>This value should not be blank.</source>
+                <target>Vrednost ne treba da bude prazna.</target>
+            </trans-unit>
+            <trans-unit id="23">
+                <source>This value should not be null.</source>
+                <target>Vrednost ne treba da bude null.</target>
+            </trans-unit>
+            <trans-unit id="24">
+                <source>This value should be null.</source>
+                <target>Vrednost treba da bude null.</target>
+            </trans-unit>
+            <trans-unit id="25">
+                <source>This value is not valid.</source>
+                <target>Vrednost je nevalidna.</target>
+            </trans-unit>
+            <trans-unit id="26">
+                <source>This value is not a valid time.</source>
+                <target>Vrednost nije validno vreme.</target>
+            </trans-unit>
+            <trans-unit id="27">
+                <source>This value is not a valid URL.</source>
+                <target>Vrednost nije validan URL.</target>
+            </trans-unit>
+            <trans-unit id="31">
+                <source>The two values should be equal.</source>
+                <target>Obe vrednosti treba da budu jednake.</target>
+            </trans-unit>
+            <trans-unit id="32">
+                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>Datoteka je prevelika. Najveća dozvoljena veličina je {{ limit }} {{ suffix }}.</target>
+            </trans-unit>
+            <trans-unit id="33">
+                <source>The file is too large.</source>
+                <target>Datoteka je prevelika.</target>
+            </trans-unit>
+            <trans-unit id="34">
+                <source>The file could not be uploaded.</source>
+                <target>Datoteka ne može biti otpremljena.</target>
+            </trans-unit>
+            <trans-unit id="35">
+                <source>This value should be a valid number.</source>
+                <target>Vrednost treba da bude validan broj.</target>
+            </trans-unit>
+            <trans-unit id="36">
+                <source>This file is not a valid image.</source>
+                <target>Ova datoteka nije validna slika.</target>
+            </trans-unit>
+            <trans-unit id="37">
+                <source>This is not a valid IP address.</source>
+                <target>Ovo nije validna IP adresa.</target>
+            </trans-unit>
+            <trans-unit id="38">
+                <source>This value is not a valid language.</source>
+                <target>Vrednost nije validan jezik.</target>
+            </trans-unit>
+            <trans-unit id="39">
+                <source>This value is not a valid locale.</source>
+                <target>Vrednost nije validan lokal.</target>
+            </trans-unit>
+            <trans-unit id="40">
+                <source>This value is not a valid country.</source>
+                <target>Vrednost nije validna zemlja.</target>
+            </trans-unit>
+            <trans-unit id="41">
+                <source>This value is already used.</source>
+                <target>Vrednost je već iskorišćena.</target>
+            </trans-unit>
+            <trans-unit id="42">
+                <source>The size of the image could not be detected.</source>
+                <target>Veličina slike ne može biti određena.</target>
+            </trans-unit>
+            <trans-unit id="43">
+                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
+                <target>Širina slike je prevelika ({{ width }}px). Najeća dozvoljena širina je {{ max_width }}px.</target>
+            </trans-unit>
+            <trans-unit id="44">
+                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
+                <target>Širina slike je premala ({{ width }}px). Najmanja dozvoljena širina je {{ min_width }}px.</target>
+            </trans-unit>
+            <trans-unit id="45">
+                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
+                <target>Visina slike je prevelika ({{ height }}px). Najeća dozvoljena visina je {{ max_height }}px.</target>
+            </trans-unit>
+            <trans-unit id="46">
+                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
+                <target>Visina slike je premala ({{ height }}px). Najmanja dozvoljena visina je {{ min_height }}px.</target>
+            </trans-unit>
+            <trans-unit id="47">
+                <source>This value should be the user's current password.</source>
+                <target>Vrednost treba da bude trenutna korisnička lozinka.</target>
+            </trans-unit>
+            <trans-unit id="48">
+                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
+                <target>Vrednost treba da ima tačno {{ limit }} karakter.|Vrednost treba da ima tačno {{ limit }} karaktera.|Vrednost treba da ima tačno {{ limit }} karaktera.</target>
+            </trans-unit>
+            <trans-unit id="49">
+                <source>The file was only partially uploaded.</source>
+                <target>Datoteka je samo parcijalno otpremljena.</target>
+            </trans-unit>
+            <trans-unit id="50">
+                <source>No file was uploaded.</source>
+                <target>Datoteka nije otpremljena.</target>
+            </trans-unit>
+            <trans-unit id="51">
+                <source>No temporary folder was configured in php.ini.</source>
+                <target>Privremeni direktorijum nije konfigurisan u php.ini.</target>
+            </trans-unit>
+            <trans-unit id="52">
+                <source>Cannot write temporary file to disk.</source>
+                <target>Nemoguće pisanje privremene datoteke na disk.</target>
+            </trans-unit>
+            <trans-unit id="53">
+                <source>A PHP extension caused the upload to fail.</source>
+                <target>PHP ekstenzija je prouzrokovala neuspeh otpremanja datoteke.</target>
+            </trans-unit>
+            <trans-unit id="54">
+                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
+                <target>Ova kolekcija treba da sadrži {{ limit }} ili više elemenata.|Ova kolekcija treba da sadrži {{ limit }} ili više elemenata.|Ova kolekcija treba da sadrži {{ limit }} ili više elemenata.</target>
+            </trans-unit>
+            <trans-unit id="55">
+                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
+                <target>Ova kolekcija treba da sadrži {{ limit }} ili manje elemenata.|Ova kolekcija treba da sadrži {{ limit }} ili manje elemenata.|Ova kolekcija treba da sadrži {{ limit }} ili manje elemenata.</target>
+            </trans-unit>
+            <trans-unit id="56">
+                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
+                <target>Ova kolekcija treba da sadrži tačno {{ limit }} element.|Ova kolekcija treba da sadrži tačno {{ limit }} elementa.|Ova kolekcija treba da sadrži tačno {{ limit }} elemenata.</target>
+            </trans-unit>
+            <trans-unit id="57">
+                <source>Invalid card number.</source>
+                <target>Nevalidan broj kartice.</target>
+            </trans-unit>
+            <trans-unit id="58">
+                <source>Unsupported card type or invalid card number.</source>
+                <target>Nevalidan broj kartice ili tip kartice nije podržan.</target>
+            </trans-unit>
+            <trans-unit id="59">
+                <source>This is not a valid International Bank Account Number (IBAN).</source>
+                <target>Ovo nije validan međunarodni broj bankovnog računa (IBAN).</target>
+            </trans-unit>
+            <trans-unit id="60">
+                <source>This value is not a valid ISBN-10.</source>
+                <target>Ovo nije validan ISBN-10.</target>
+            </trans-unit>
+            <trans-unit id="61">
+                <source>This value is not a valid ISBN-13.</source>
+                <target>Ovo nije validan ISBN-13.</target>
+            </trans-unit>
+            <trans-unit id="62">
+                <source>This value is neither a valid ISBN-10 nor a valid ISBN-13.</source>
+                <target>Ovo nije validan ISBN-10 ili ISBN-13.</target>
+            </trans-unit>
+            <trans-unit id="63">
+                <source>This value is not a valid ISSN.</source>
+                <target>Ovo nije validan ISSN.</target>
+            </trans-unit>
+            <trans-unit id="64">
+                <source>This value is not a valid currency.</source>
+                <target>Ovo nije validna valuta.</target>
+            </trans-unit>
+            <trans-unit id="65">
+                <source>This value should be equal to {{ compared_value }}.</source>
+                <target>Ova vrednost treba da bude {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="66">
+                <source>This value should be greater than {{ compared_value }}.</source>
+                <target>Ova vrednost treba da bude veća od {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="67">
+                <source>This value should be greater than or equal to {{ compared_value }}.</source>
+                <target>Ova vrednost treba da bude veća ili jednaka {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="68">
+                <source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
+                <target>Ova vrednost treba da bude identična sa {{ compared_value_type }} {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="69">
+                <source>This value should be less than {{ compared_value }}.</source>
+                <target>Ova vrednost treba da bude manja od {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="70">
+                <source>This value should be less than or equal to {{ compared_value }}.</source>
+                <target>Ova vrednost treba da bude manja ili jednaka {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="71">
+                <source>This value should not be equal to {{ compared_value }}.</source>
+                <target>Ova vrednost ne treba da bude jednaka {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="72">
+                <source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
+                <target>Ova vrednost ne treba da bude identična sa {{ compared_value_type }} {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="73">
+                <source>The image ratio is too big ({{ ratio }}). Allowed maximum ratio is {{ max_ratio }}.</source>
+                <target>Razmera ove slike je prevelika ({{ ratio }}). Maksimalna dozvoljena razmera je {{ max_ratio }}.</target>
+            </trans-unit>
+            <trans-unit id="74">
+                <source>The image ratio is too small ({{ ratio }}). Minimum ratio expected is {{ min_ratio }}.</source>
+                <target>Razmera ove slike je premala ({{ ratio }}). Minimalna očekivana razmera je {{ min_ratio }}.</target>
+            </trans-unit>
+            <trans-unit id="75">
+                <source>The image is square ({{ width }}x{{ height }}px). Square images are not allowed.</source>
+                <target>Slika je kvadratna ({{ width }}x{{ height }}px). Kvadratne slike nisu dozvoljene.</target>
+            </trans-unit>
+            <trans-unit id="76">
+                <source>The image is landscape oriented ({{ width }}x{{ height }}px). Landscape oriented images are not allowed.</source>
+                <target>Slika je orijentacije pejzaža ({{ width }}x{{ height }}px). Pejzažna orijentacija slika nije dozvoljena.</target>
+            </trans-unit>
+            <trans-unit id="77">
+                <source>The image is portrait oriented ({{ width }}x{{ height }}px). Portrait oriented images are not allowed.</source>
+                <target>Slika je orijantacije portreta ({{ width }}x{{ height }}px). Portretna orijentacija slika nije dozvoljena.</target>
+            </trans-unit>
+        </body>
+    </file>
+</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.sv.xlf b/vendor/symfony/validator/Resources/translations/validators.sv.xlf
new file mode 100644
index 0000000..693f12b
--- /dev/null
+++ b/vendor/symfony/validator/Resources/translations/validators.sv.xlf
@@ -0,0 +1,315 @@
+<?xml version="1.0"?>
+<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
+    <file source-language="en" datatype="plaintext" original="file.ext">
+        <body>
+            <trans-unit id="1">
+                <source>This value should be false.</source>
+                <target>Värdet ska vara falskt.</target>
+            </trans-unit>
+            <trans-unit id="2">
+                <source>This value should be true.</source>
+                <target>Värdet ska vara sant.</target>
+            </trans-unit>
+            <trans-unit id="3">
+                <source>This value should be of type {{ type }}.</source>
+                <target>Värdet ska vara av typen {{ type }}.</target>
+            </trans-unit>
+            <trans-unit id="4">
+                <source>This value should be blank.</source>
+                <target>Värdet ska vara tomt.</target>
+            </trans-unit>
+            <trans-unit id="5">
+                <source>The value you selected is not a valid choice.</source>
+                <target>Värdet ska vara ett av de givna valen.</target>
+            </trans-unit>
+            <trans-unit id="6">
+                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
+                <target>Du måste välja minst {{ limit }} val.|Du måste välja minst {{ limit }} val.</target>
+            </trans-unit>
+            <trans-unit id="7">
+                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
+                <target>Du kan som mest välja {{ limit }} val.|Du kan som mest välja {{ limit }} val.</target>
+            </trans-unit>
+            <trans-unit id="8">
+                <source>One or more of the given values is invalid.</source>
+                <target>Ett eller fler av de angivna värdena är ogiltigt.</target>
+            </trans-unit>
+            <trans-unit id="9">
+                <source>This field was not expected.</source>
+                <target>Det här fältet förväntades inte.</target>
+            </trans-unit>
+            <trans-unit id="10">
+                <source>This field is missing.</source>
+                <target>Det här fältet saknas.</target>
+            </trans-unit>
+            <trans-unit id="11">
+                <source>This value is not a valid date.</source>
+                <target>Värdet är inte ett giltigt datum.</target>
+            </trans-unit>
+            <trans-unit id="12">
+                <source>This value is not a valid datetime.</source>
+                <target>Värdet är inte ett giltigt datum med tid.</target>
+            </trans-unit>
+            <trans-unit id="13">
+                <source>This value is not a valid email address.</source>
+                <target>Värdet är inte en giltig epost-adress.</target>
+            </trans-unit>
+            <trans-unit id="14">
+                <source>The file could not be found.</source>
+                <target>Filen kunde inte hittas.</target>
+            </trans-unit>
+            <trans-unit id="15">
+                <source>The file is not readable.</source>
+                <target>Filen är inte läsbar.</target>
+            </trans-unit>
+            <trans-unit id="16">
+                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>Filen är för stor ({{ size }} {{ suffix }}). Största tillåtna storlek är {{ limit }} {{ suffix }}.</target>
+            </trans-unit>
+            <trans-unit id="17">
+                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
+                <target>Filens MIME-typ ({{ type }}) är ogiltig. De tillåtna typerna är {{ types }}.</target>
+            </trans-unit>
+            <trans-unit id="18">
+                <source>This value should be {{ limit }} or less.</source>
+                <target>Värdet ska vara {{ limit }} eller mindre.</target>
+            </trans-unit>
+            <trans-unit id="19">
+                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
+                <target>Värdet är för långt. Det ska ha {{ limit }} tecken eller färre.|Värdet är för långt. Det ska ha {{ limit }} tecken eller färre.</target>
+            </trans-unit>
+            <trans-unit id="20">
+                <source>This value should be {{ limit }} or more.</source>
+                <target>Värdet ska vara {{ limit }} eller mer.</target>
+            </trans-unit>
+            <trans-unit id="21">
+                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
+                <target>Värdet är för kort. Det ska ha {{ limit }} tecken eller mer.|Värdet är för kort. Det ska ha {{ limit }} tecken eller mer.</target>
+            </trans-unit>
+            <trans-unit id="22">
+                <source>This value should not be blank.</source>
+                <target>Värdet kan inte vara tomt.</target>
+            </trans-unit>
+            <trans-unit id="23">
+                <source>This value should not be null.</source>
+                <target>Värdet kan inte vara null.</target>
+            </trans-unit>
+            <trans-unit id="24">
+                <source>This value should be null.</source>
+                <target>Värdet ska vara null.</target>
+            </trans-unit>
+            <trans-unit id="25">
+                <source>This value is not valid.</source>
+                <target>Värdet är inte giltigt.</target>
+            </trans-unit>
+            <trans-unit id="26">
+                <source>This value is not a valid time.</source>
+                <target>Värdet är inte en giltig tid.</target>
+            </trans-unit>
+            <trans-unit id="27">
+                <source>This value is not a valid URL.</source>
+                <target>Värdet är inte en giltig URL.</target>
+            </trans-unit>
+            <trans-unit id="31">
+                <source>The two values should be equal.</source>
+                <target>De två värdena måste vara lika.</target>
+            </trans-unit>
+            <trans-unit id="32">
+                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>Filen är för stor. Tillåten maximal storlek är {{ limit }} {{ suffix }}.</target>
+            </trans-unit>
+            <trans-unit id="33">
+                <source>The file is too large.</source>
+                <target>Filen är för stor.</target>
+            </trans-unit>
+            <trans-unit id="34">
+                <source>The file could not be uploaded.</source>
+                <target>Filen kunde inte laddas upp.</target>
+            </trans-unit>
+            <trans-unit id="35">
+                <source>This value should be a valid number.</source>
+                <target>Värdet ska vara ett giltigt nummer.</target>
+            </trans-unit>
+            <trans-unit id="36">
+                <source>This file is not a valid image.</source>
+                <target>Filen är ingen giltig bild.</target>
+            </trans-unit>
+            <trans-unit id="37">
+                <source>This is not a valid IP address.</source>
+                <target>Det här är inte en giltig IP-adress.</target>
+            </trans-unit>
+            <trans-unit id="38">
+                <source>This value is not a valid language.</source>
+                <target>Värdet är inte ett giltigt språk.</target>
+            </trans-unit>
+            <trans-unit id="39">
+                <source>This value is not a valid locale.</source>
+                <target>Värdet är inte en giltig plats.</target>
+            </trans-unit>
+            <trans-unit id="40">
+                <source>This value is not a valid country.</source>
+                <target>Värdet är inte ett giltigt land.</target>
+            </trans-unit>
+            <trans-unit id="41">
+                <source>This value is already used.</source>
+                <target>Värdet används redan.</target>
+            </trans-unit>
+            <trans-unit id="42">
+                <source>The size of the image could not be detected.</source>
+                <target>Det gick inte att fastställa storleken på bilden.</target>
+            </trans-unit>
+            <trans-unit id="43">
+                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
+                <target>Bildens bredd är för stor ({{ width }}px). Tillåten maximal bredd är {{ max_width }}px.</target>
+            </trans-unit>
+            <trans-unit id="44">
+                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
+                <target>Bildens bredd är för liten ({{ width }}px). Minsta förväntade bredd är {{ min_width }}px.</target>
+            </trans-unit>
+            <trans-unit id="45">
+                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
+                <target>Bildens höjd är för stor ({{ height }}px). Tillåten maximal bredd är {{ max_height }}px.</target>
+            </trans-unit>
+            <trans-unit id="46">
+                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
+                <target>Bildens höjd är för liten ({{ height }}px). Minsta förväntade höjd är {{ min_height }}px.</target>
+            </trans-unit>
+            <trans-unit id="47">
+                <source>This value should be the user's current password.</source>
+                <target>Värdet ska vara användarens nuvarande lösenord.</target>
+            </trans-unit>
+            <trans-unit id="48">
+                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
+                <target>Värdet ska ha exakt {{ limit }} tecken.|Värdet ska ha exakt {{ limit }} tecken.</target>
+            </trans-unit>
+            <trans-unit id="49">
+                <source>The file was only partially uploaded.</source>
+                <target>Filen laddades bara upp delvis.</target>
+            </trans-unit>
+            <trans-unit id="50">
+                <source>No file was uploaded.</source>
+                <target>Ingen fil laddades upp.</target>
+            </trans-unit>
+            <trans-unit id="51">
+                <source>No temporary folder was configured in php.ini.</source>
+                <target>Det finns ingen temporär mapp konfigurerad i php.ini.</target>
+            </trans-unit>
+            <trans-unit id="52">
+                <source>Cannot write temporary file to disk.</source>
+                <target>Kan inte skriva temporär fil till disken.</target>
+            </trans-unit>
+            <trans-unit id="53">
+                <source>A PHP extension caused the upload to fail.</source>
+                <target>En PHP extension gjorde att uppladdningen misslyckades.</target>
+            </trans-unit>
+            <trans-unit id="54">
+                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
+                <target>Den här samlingen ska innehålla {{ limit }} element eller mer.|Den här samlingen ska innehålla {{ limit }} element eller mer.</target>
+            </trans-unit>
+            <trans-unit id="55">
+                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
+                <target>Den här samlingen ska innehålla {{ limit }} element eller mindre.|Den här samlingen ska innehålla {{ limit }} element eller mindre.</target>
+            </trans-unit>
+            <trans-unit id="56">
+                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
+                <target>Den här samlingen ska innehålla exakt {{ limit }} element.|Den här samlingen ska innehålla exakt {{ limit }} element.</target>
+            </trans-unit>
+            <trans-unit id="57">
+                <source>Invalid card number.</source>
+                <target>Ogiltigt kortnummer.</target>
+            </trans-unit>
+            <trans-unit id="58">
+                <source>Unsupported card type or invalid card number.</source>
+                <target>Okänd korttyp eller ogiltigt kortnummer.</target>
+            </trans-unit>
+            <trans-unit id="59">
+                <source>This is not a valid International Bank Account Number (IBAN).</source>
+                <target>Det här är inte en giltig International Bank Account Number (IBANK).</target>
+            </trans-unit>
+            <trans-unit id="60">
+                <source>This value is not a valid ISBN-10.</source>
+                <target>Värdet är inte en giltig ISBN-10.</target>
+            </trans-unit>
+            <trans-unit id="61">
+                <source>This value is not a valid ISBN-13.</source>
+                <target>Värdet är inte en giltig ISBN-13.</target>
+            </trans-unit>
+            <trans-unit id="62">
+                <source>This value is neither a valid ISBN-10 nor a valid ISBN-13.</source>
+                <target>Värdet är varken en giltig ISBN-10 eller en giltig ISBN-13.</target>
+            </trans-unit>
+            <trans-unit id="63">
+                <source>This value is not a valid ISSN.</source>
+                <target>Värdet är inte en giltig ISSN.</target>
+            </trans-unit>
+            <trans-unit id="64">
+                <source>This value is not a valid currency.</source>
+                <target>Värdet är inte en giltig valuta.</target>
+            </trans-unit>
+            <trans-unit id="65">
+                <source>This value should be equal to {{ compared_value }}.</source>
+                <target>Värdet ska vara detsamma som {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="66">
+                <source>This value should be greater than {{ compared_value }}.</source>
+                <target>Värdet ska vara större än {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="67">
+                <source>This value should be greater than or equal to {{ compared_value }}.</source>
+                <target>Värdet ska bara större än eller detsamma som {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="68">
+                <source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
+                <target>Värdet ska vara identiskt till {{ compared_value_type }} {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="69">
+                <source>This value should be less than {{ compared_value }}.</source>
+                <target>Värdet ska vara mindre än {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="70">
+                <source>This value should be less than or equal to {{ compared_value }}.</source>
+                <target>Värdet ska vara mindre än eller detsamma som {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="71">
+                <source>This value should not be equal to {{ compared_value }}.</source>
+                <target>Värdet ska inte vara detsamma som {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="72">
+                <source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
+                <target>Värdet ska inte vara identiskt med {{ compared_value_type }} {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="73">
+                <source>The image ratio is too big ({{ ratio }}). Allowed maximum ratio is {{ max_ratio }}.</source>
+                <target>Förhållandet mellan bildens bredd och höjd är för stort ({{ ratio }}). Högsta tillåtna förhållande är {{ max_ratio }}.</target>
+            </trans-unit>
+            <trans-unit id="74">
+                <source>The image ratio is too small ({{ ratio }}). Minimum ratio expected is {{ min_ratio }}.</source>
+                <target>Förhållandet mellan bildens bredd och höjd är för litet ({{ ratio }}). Minsta tillåtna förhållande är {{ min_ratio }}.</target>
+            </trans-unit>
+            <trans-unit id="75">
+                <source>The image is square ({{ width }}x{{ height }}px). Square images are not allowed.</source>
+                <target>Bilden är kvadratisk ({{ width }}x{{ height }}px). Kvadratiska bilder tillåts inte.</target>
+            </trans-unit>
+            <trans-unit id="76">
+                <source>The image is landscape oriented ({{ width }}x{{ height }}px). Landscape oriented images are not allowed.</source>
+                <target>Bilden är landskapsorienterad ({{ width }}x{{ height }}px). Landskapsorienterade bilder tillåts inte.</target>
+            </trans-unit>
+            <trans-unit id="77">
+                <source>The image is portrait oriented ({{ width }}x{{ height }}px). Portrait oriented images are not allowed.</source>
+                <target>Bilden är porträttsorienterad ({{ width }}x{{ height }}px). Porträttsorienterade bilder tillåts inte.</target>
+            </trans-unit>
+            <trans-unit id="78">
+                <source>An empty file is not allowed.</source>
+                <target>En tom fil är inte tillåten.</target>
+            </trans-unit>
+            <trans-unit id="79">
+                <source>The host could not be resolved.</source>
+                <target>Värddatorn kunde inte hittas.</target>
+            </trans-unit>
+            <trans-unit id="80">
+                <source>This value does not match the expected {{ charset }} charset.</source>
+                <target>Detta värde har inte den förväntade teckenkodningen {{ charset }}.</target>
+            </trans-unit>
+        </body>
+    </file>
+</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.th.xlf b/vendor/symfony/validator/Resources/translations/validators.th.xlf
new file mode 100644
index 0000000..d5b5703
--- /dev/null
+++ b/vendor/symfony/validator/Resources/translations/validators.th.xlf
@@ -0,0 +1,303 @@
+<?xml version="1.0"?>
+<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
+    <file source-language="en" datatype="plaintext" original="file.ext">
+        <body>
+            <trans-unit id="1">
+                <source>This value should be false.</source>
+                <target>ค่านี้ควรจะเป็น false</target>
+            </trans-unit>
+            <trans-unit id="2">
+                <source>This value should be true.</source>
+                <target>ค่านี้ควรจะเป็น true</target>
+            </trans-unit>
+            <trans-unit id="3">
+                <source>This value should be of type {{ type }}.</source>
+                <target>ค่านี้ควรจะเป็นชนิด {{ type }}</target>
+            </trans-unit>
+            <trans-unit id="4">
+                <source>This value should be blank.</source>
+                <target>ควรจะเป็นค่าว่าง</target>
+            </trans-unit>
+            <trans-unit id="5">
+                <source>The value you selected is not a valid choice.</source>
+                <target>คุณเลือกค่าที่ไม่ตรงกับตัวเลือก</target>
+            </trans-unit>
+            <trans-unit id="6">
+                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
+                <target>คุณต้องเลือกอย่างน้อย {{ limit }} ตัวเลือก</target>
+            </trans-unit>
+            <trans-unit id="7">
+                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
+                <target>คุณเลือกได้มากที่สุด {{ limit }} ตัวเลือก</target>
+            </trans-unit>
+            <trans-unit id="8">
+                <source>One or more of the given values is invalid.</source>
+                <target>มีบางค่าที่ส่งมาไม่ถูกต้อง</target>
+            </trans-unit>
+            <trans-unit id="9">
+                <source>This field was not expected.</source>
+                <target>ฟิลด์นี้ที่ไม่ได้คาดหวัง</target>
+            </trans-unit>
+            <trans-unit id="10">
+                <source>This field is missing.</source>
+                <target>ฟิลด์นี้จะหายไป</target>
+            </trans-unit>
+            <trans-unit id="11">
+                <source>This value is not a valid date.</source>
+                <target>ค่าของวันที่ไม่ถูกต้อง</target>
+            </trans-unit>
+            <trans-unit id="12">
+                <source>This value is not a valid datetime.</source>
+                <target>ค่าของวันที่และเวลาไม่ถูกต้อง</target>
+            </trans-unit>
+            <trans-unit id="13">
+                <source>This value is not a valid email address.</source>
+                <target>ค่าของอีเมล์ไม่ถูกต้อง</target>
+            </trans-unit>
+            <trans-unit id="14">
+                <source>The file could not be found.</source>
+                <target>ไม่พบไฟล์</target>
+            </trans-unit>
+            <trans-unit id="15">
+                <source>The file is not readable.</source>
+                <target>ไฟล์ไม่อยู่ในสถานะที่สามารถอ่านได้</target>
+            </trans-unit>
+            <trans-unit id="16">
+                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>ไฟล์ใหญ่เกิน ({{ size }} {{ suffix }}) อนุญาตให้ใหญ่ที่สุดได้ไม่เกิน {{ limit }} {{ suffix }}</target>
+            </trans-unit>
+            <trans-unit id="17">
+                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
+                <target>Mime type ของไฟล์ไม่ถูกต้อง ({{ type }}) Mime types ที่อนุญาตคือ {{ types }}</target>
+            </trans-unit>
+            <trans-unit id="18">
+                <source>This value should be {{ limit }} or less.</source>
+                <target>ค่านี้ควรจะเป็น {{ limit }} หรือน้อยกว่านั้น</target>
+            </trans-unit>
+            <trans-unit id="19">
+                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
+                <target>ค่านี้ยาวเกินไป ควรจะมีแค่ {{ limit }} ตัวอักษรหรือน้อยกว่านั้น</target>
+            </trans-unit>
+            <trans-unit id="20">
+                <source>This value should be {{ limit }} or more.</source>
+                <target>ค่านี้ควรจะมี {{ limit }} หรือมากกว่านั้น</target>
+            </trans-unit>
+            <trans-unit id="21">
+                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
+                <target>ค่านี้สั้นเกินไป ควรจะมี {{ limit }} ตัวอักษรหรือมากกว่านั้น</target>
+            </trans-unit>
+            <trans-unit id="22">
+                <source>This value should not be blank.</source>
+                <target>ค่านี้ไม่ควรเป็นค่าว่าง</target>
+            </trans-unit>
+            <trans-unit id="23">
+                <source>This value should not be null.</source>
+                <target>ค่านี้ไม่ควรเป็นค่า null</target>
+            </trans-unit>
+            <trans-unit id="24">
+                <source>This value should be null.</source>
+                <target>ค่านี้ควรเป็นค่า null</target>
+            </trans-unit>
+            <trans-unit id="25">
+                <source>This value is not valid.</source>
+                <target>ค่านี้ไม่ถูกต้อง</target>
+            </trans-unit>
+            <trans-unit id="26">
+                <source>This value is not a valid time.</source>
+                <target>ค่าของเวลาไม่ถูกต้อง</target>
+            </trans-unit>
+            <trans-unit id="27">
+                <source>This value is not a valid URL.</source>
+                <target>ค่าของ URL ไม่ถูกต้อง</target>
+            </trans-unit>
+            <trans-unit id="31">
+                <source>The two values should be equal.</source>
+                <target>ค่าทั้งสองค่าควรจะเหมือนกัน</target>
+            </trans-unit>
+            <trans-unit id="32">
+                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>ขนาดไฟล์ใหญ่เกินไป อนุญาตให้ไฟล์ขนาดใหญ่ได้ไม่เกิน {{ limit }} {{ suffix }}</target>
+            </trans-unit>
+            <trans-unit id="33">
+                <source>The file is too large.</source>
+                <target>ขนาดไฟล์ใหญ่เกินไป</target>
+            </trans-unit>
+            <trans-unit id="34">
+                <source>The file could not be uploaded.</source>
+                <target>ไม่สามารถอัปโหลดไฟล์ได้</target>
+            </trans-unit>
+            <trans-unit id="35">
+                <source>This value should be a valid number.</source>
+                <target>ค่าของตัวเลขไม่ถูกต้อง</target>
+            </trans-unit>
+            <trans-unit id="36">
+                <source>This file is not a valid image.</source>
+                <target>ไฟล์นี้ไม่ใช่ไฟล์รูปภาพ</target>
+            </trans-unit>
+            <trans-unit id="37">
+                <source>This is not a valid IP address.</source>
+                <target>ค่าของ IP ไม่ถูกต้อง</target>
+            </trans-unit>
+            <trans-unit id="38">
+                <source>This value is not a valid language.</source>
+                <target>ค่าของภาษาไม่ถูกต้อง</target>
+            </trans-unit>
+            <trans-unit id="39">
+                <source>This value is not a valid locale.</source>
+                <target>ค่าของภูมิภาค (Locale) ไม่ถูกต้อง</target>
+            </trans-unit>
+            <trans-unit id="40">
+                <source>This value is not a valid country.</source>
+                <target>ค่าของประเทศไม่ถูกต้อง</target>
+            </trans-unit>
+            <trans-unit id="41">
+                <source>This value is already used.</source>
+                <target>Tค่านี้ถูกใช้งานไปแล้ว</target>
+            </trans-unit>
+            <trans-unit id="42">
+                <source>The size of the image could not be detected.</source>
+                <target>ไม่สามารถตรวจสอบขนาดไฟล์ของภาพได้</target>
+            </trans-unit>
+            <trans-unit id="43">
+                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
+                <target>ความกว้างของภาพเกินขนาด ({{ width }}px) อนุญาตให้กว้างได้มากที่สุด {{ max_width }}px</target>
+            </trans-unit>
+            <trans-unit id="44">
+                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
+                <target>ความกว้างของภาพไม่ได้ขนาด ({{ width }}px) อนุญาตให้สั้นที่สุด {{ min_width }}px</target>
+            </trans-unit>
+            <trans-unit id="45">
+                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
+                <target>ความสูงของภาพเกินขนาด ({{ height }}px) อนุญาตให้สูงได้มากที่สุด {{ max_height }}px</target>
+            </trans-unit>
+            <trans-unit id="46">
+                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
+                <target>ความสูงของภาพไม่ได้ขนาด ({{ height }}px) อนุญาตให้สูงอย่างน้อยที่สุด {{ min_height }}px</target>
+            </trans-unit>
+            <trans-unit id="47">
+                <source>This value should be the user's current password.</source>
+                <target>ค่านี้ควรจะเป็นรหัสผ่านปัจจุบันของผู้ใช้</target>
+            </trans-unit>
+            <trans-unit id="48">
+                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
+                <target>ค่านี้ควรจะมีความยาว {{ limit }} ตัวอักษร</target>
+            </trans-unit>
+            <trans-unit id="49">
+                <source>The file was only partially uploaded.</source>
+                <target>อัปโหลดไฟล์ได้เพียงบางส่วนเท่านั้น</target>
+            </trans-unit>
+            <trans-unit id="50">
+                <source>No file was uploaded.</source>
+                <target>ไม่มีไฟล์ใดถูกอัปโหลด</target>
+            </trans-unit>
+            <trans-unit id="51">
+                <source>No temporary folder was configured in php.ini.</source>
+                <target>ไม่พบไฟล์ temp ควรจะกำหนดใน php.ini</target>
+            </trans-unit>
+            <trans-unit id="52">
+                <source>Cannot write temporary file to disk.</source>
+                <target>ไม่สามารถเขียน temp ไฟล์ลงดิสก์ได้</target>
+            </trans-unit>
+            <trans-unit id="53">
+                <source>A PHP extension caused the upload to fail.</source>
+                <target>PHP extension เกี่ยวกับการอัปโหลดมีปัญหา</target>
+            </trans-unit>
+            <trans-unit id="54">
+                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
+                <target>คอเล็กชั่นนี้ควรจะประกอบไปด้วยอ่างน้อย {{ limit }} สมาชิก</target>
+            </trans-unit>
+            <trans-unit id="55">
+                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
+                <target>คอเล็กชั่นนี้ไม่ควรมีสมาชิกเกิน {{ limit }}</target>
+            </trans-unit>
+            <trans-unit id="56">
+                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
+                <target>คอเล็กชั่นนี้ควรจะมีสมาชิก {{ limit }} เท่านั้น</target>
+            </trans-unit>
+            <trans-unit id="57">
+                <source>Invalid card number.</source>
+                <target>หมายเลขบัตรไม่ถูกต้อง</target>
+            </trans-unit>
+            <trans-unit id="58">
+                <source>Unsupported card type or invalid card number.</source>
+                <target>ไม่รู้จักประเภทของบัตร หรือหมายเลขบัตรไม่ถูกต้อง</target>
+            </trans-unit>
+            <trans-unit id="59">
+                <source>This is not a valid International Bank Account Number (IBAN).</source>
+                <target>นี่ไม่ถูกต้องตาม International Bank Account Number (IBAN)</target>
+            </trans-unit>
+            <trans-unit id="60">
+                <source>This value is not a valid ISBN-10.</source>
+                <target>ค่านี้ไม่ถูกต้องตาม ISBN-10</target>
+            </trans-unit>
+            <trans-unit id="61">
+                <source>This value is not a valid ISBN-13.</source>
+                <target>ค่านี้ไม่ถูกต้องตาม ISBN-13</target>
+            </trans-unit>
+            <trans-unit id="62">
+                <source>This value is neither a valid ISBN-10 nor a valid ISBN-13.</source>
+                <target>ค่านี้ไม่ถูกต้องตามทั้ง ISBN-10 และ ISBN-13</target>
+            </trans-unit>
+            <trans-unit id="63">
+                <source>This value is not a valid ISSN.</source>
+                <target>ค่านี้ไม่ถุกต้องตาม ISSN</target>
+            </trans-unit>
+            <trans-unit id="64">
+                <source>This value is not a valid currency.</source>
+                <target>ค่านี้ไม่ถูกต้องตามสกุลเงิน</target>
+            </trans-unit>
+            <trans-unit id="65">
+                <source>This value should be equal to {{ compared_value }}.</source>
+                <target>ค่านี้ไม่ตรงกับ {{ compared_value }}</target>
+            </trans-unit>
+            <trans-unit id="66">
+                <source>This value should be greater than {{ compared_value }}.</source>
+                <target>ค่านี้ควรจะมากกว่า {{ compared_value }}</target>
+            </trans-unit>
+            <trans-unit id="67">
+                <source>This value should be greater than or equal to {{ compared_value }}.</source>
+                <target>ค่านี้ควรจะมากกว่าหรือตรงกับ {{ compared_value }}</target>
+            </trans-unit>
+            <trans-unit id="68">
+                <source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
+                <target>ค่านี้ควรจะเหมือนกันกับ {{ compared_value_type }} {{ compared_value }}</target>
+            </trans-unit>
+            <trans-unit id="69">
+                <source>This value should be less than {{ compared_value }}.</source>
+                <target>ค่านี้ควรจะน้อยกว่า {{ compared_value }}</target>
+            </trans-unit>
+            <trans-unit id="70">
+                <source>This value should be less than or equal to {{ compared_value }}.</source>
+                <target>ค่านี้ควรจะน้อยกว่าหรือเท่ากับ {{ compared_value }}</target>
+            </trans-unit>
+            <trans-unit id="71">
+                <source>This value should not be equal to {{ compared_value }}.</source>
+                <target>ค่านี้ไม่ควรเท่ากันกับ {{ compared_value }}</target>
+            </trans-unit>
+            <trans-unit id="72">
+                <source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
+                <target>ค่านี้ไม่ควรเหมือนกันกับ {{ compared_value_type }} {{ compared_value }}</target>
+            </trans-unit>
+            <trans-unit id="73">
+                <source>The image ratio is too big ({{ ratio }}). Allowed maximum ratio is {{ max_ratio }}.</source>
+                <target>สัดส่วนของภาพใหญ่เกิน ({{ ratio }}) สามารถมีขนาดใหญ่ที่สุดได้ {{ max_ratio }}</target>
+            </trans-unit>
+            <trans-unit id="74">
+                <source>The image ratio is too small ({{ ratio }}). Minimum ratio expected is {{ min_ratio }}.</source>
+                <target>สัดส่วนของภาพเล็กเกิน ({{ ratio }}) สามารถมีขนาดเล็กที่สุดได้ {{ min_ratio }}</target>
+            </trans-unit>
+            <trans-unit id="75">
+                <source>The image is square ({{ width }}x{{ height }}px). Square images are not allowed.</source>
+                <target>รูปภาพเป็นจุตรัส ({{ width }}x{{ height }}px) ไม่อนุญาตภาพที่เป็นสี่เหลี่ยมจตุรัส</target>
+            </trans-unit>
+            <trans-unit id="76">
+                <source>The image is landscape oriented ({{ width }}x{{ height }}px). Landscape oriented images are not allowed.</source>
+                <target>ภาพนี้เป็นแนวนอน ({{ width }}x{{ height }}px) ไม่อนุญาตภาพที่เป็นแนวนอน</target>
+            </trans-unit>
+            <trans-unit id="77">
+                <source>The image is portrait oriented ({{ width }}x{{ height }}px). Portrait oriented images are not allowed.</source>
+                <target>ภาพนี้เป็นแนวตั้ง ({{ width }}x{{ height }}px) ไม่อนุญาตภาพที่เป็นแนวตั้ง</target>
+            </trans-unit>
+        </body>
+    </file>
+</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.tr.xlf b/vendor/symfony/validator/Resources/translations/validators.tr.xlf
new file mode 100644
index 0000000..a7906ea
--- /dev/null
+++ b/vendor/symfony/validator/Resources/translations/validators.tr.xlf
@@ -0,0 +1,227 @@
+<?xml version="1.0"?>
+<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
+    <file source-language="en" datatype="plaintext" original="file.ext">
+        <body>
+            <trans-unit id="1">
+                <source>This value should be false.</source>
+                <target>Bu değer olumsuz olmalıdır.</target>
+            </trans-unit>
+            <trans-unit id="2">
+                <source>This value should be true.</source>
+                <target>Bu değer olumlu olmalıdır.</target>
+            </trans-unit>
+            <trans-unit id="3">
+                <source>This value should be of type {{ type }}.</source>
+                <target>Bu değerin tipi {{ type }} olmalıdır.</target>
+            </trans-unit>
+            <trans-unit id="4">
+                <source>This value should be blank.</source>
+                <target>Bu değer boş olmalıdır.</target>
+            </trans-unit>
+            <trans-unit id="5">
+                <source>The value you selected is not a valid choice.</source>
+                <target>Seçtiğiniz değer geçerli bir seçenek değil.</target>
+            </trans-unit>
+            <trans-unit id="6">
+                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
+                <target>En az {{ limit }} seçenek belirtmelisiniz.</target>
+            </trans-unit>
+            <trans-unit id="7">
+                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
+                <target>En çok {{ limit }} seçenek belirtmelisiniz.</target>
+            </trans-unit>
+            <trans-unit id="8">
+                <source>One or more of the given values is invalid.</source>
+                <target>Verilen değerlerden bir veya daha fazlası geçersiz.</target>
+            </trans-unit>
+            <trans-unit id="9">
+                <source>This field was not expected.</source>
+                <target>Bu alan beklenen olmadı.</target>
+            </trans-unit>
+            <trans-unit id="10">
+                <source>This field is missing.</source>
+                <target>Bu alan, eksik</target>
+            </trans-unit>
+            <trans-unit id="11">
+                <source>This value is not a valid date.</source>
+                <target>Bu değer doğru bir tarih biçimi değildir.</target>
+            </trans-unit>
+            <trans-unit id="12">
+                <source>This value is not a valid datetime.</source>
+                <target>Bu değer doğru bir tarihsaat biçimi değildir.</target>
+            </trans-unit>
+            <trans-unit id="13">
+                <source>This value is not a valid email address.</source>
+                <target>Bu değer doğru bir e-mail adresi değildir.</target>
+            </trans-unit>
+            <trans-unit id="14">
+                <source>The file could not be found.</source>
+                <target>Dosya bulunamadı.</target>
+            </trans-unit>
+            <trans-unit id="15">
+                <source>The file is not readable.</source>
+                <target>Dosya okunabilir değil.</target>
+            </trans-unit>
+            <trans-unit id="16">
+                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>Dosya çok büyük ({{ size }} {{ suffix }}). İzin verilen en büyük dosya boyutu {{ limit }} {{ suffix }}.</target>
+            </trans-unit>
+            <trans-unit id="17">
+                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
+                <target>Dosyanın mime tipi geçersiz ({{ type }}). İzin verilen mime tipleri {{ types }}.</target>
+            </trans-unit>
+            <trans-unit id="18">
+                <source>This value should be {{ limit }} or less.</source>
+                <target>Bu değer {{ limit }} ve altında olmalıdır.</target>
+            </trans-unit>
+            <trans-unit id="19">
+                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
+                <target>Bu değer çok uzun. {{ limit }} karakter veya daha az olmalıdır.</target>
+            </trans-unit>
+            <trans-unit id="20">
+                <source>This value should be {{ limit }} or more.</source>
+                <target>Bu değer {{ limit }} veya daha fazla olmalıdır.</target>
+            </trans-unit>
+            <trans-unit id="21">
+                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
+                <target>Bu değer çok kısa. {{ limit }} karakter veya daha fazla olmaldır.</target>
+            </trans-unit>
+            <trans-unit id="22">
+                <source>This value should not be blank.</source>
+                <target>Bu değer boş bırakılmamalıdır.</target>
+            </trans-unit>
+            <trans-unit id="23">
+                <source>This value should not be null.</source>
+                <target>Bu değer boş bırakılmamalıdır.</target>
+            </trans-unit>
+            <trans-unit id="24">
+                <source>This value should be null.</source>
+                <target>Bu değer boş bırakılmalıdır.</target>
+            </trans-unit>
+            <trans-unit id="25">
+                <source>This value is not valid.</source>
+                <target>Bu değer geçerli değil.</target>
+            </trans-unit>
+            <trans-unit id="26">
+                <source>This value is not a valid time.</source>
+                <target>Bu değer doğru bir saat değil.</target>
+            </trans-unit>
+            <trans-unit id="27">
+                <source>This value is not a valid URL.</source>
+                <target>Bu değer doğru bir URL değil.</target>
+            </trans-unit>
+            <trans-unit id="31">
+                <source>The two values should be equal.</source>
+                <target>İki değer eşit olmalıdır.</target>
+            </trans-unit>
+            <trans-unit id="32">
+                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>Dosya çok büyük. İzin verilen en büyük dosya boyutu {{ limit }} {{ suffix }}.</target>
+            </trans-unit>
+            <trans-unit id="33">
+                <source>The file is too large.</source>
+                <target>Dosya çok büyük.</target>
+            </trans-unit>
+            <trans-unit id="34">
+                <source>The file could not be uploaded.</source>
+                <target>Dosya yüklenemiyor.</target>
+            </trans-unit>
+            <trans-unit id="35">
+                <source>This value should be a valid number.</source>
+                <target>Bu değer geçerli bir rakam olmalıdır.</target>
+            </trans-unit>
+            <trans-unit id="36">
+                <source>This file is not a valid image.</source>
+                <target>Bu dosya geçerli bir resim değildir.</target>
+            </trans-unit>
+            <trans-unit id="37">
+                <source>This is not a valid IP address.</source>
+                <target>Bu geçerli bir IP adresi değildir.</target>
+            </trans-unit>
+            <trans-unit id="38">
+                <source>This value is not a valid language.</source>
+                <target>Bu değer geçerli bir lisan değil.</target>
+            </trans-unit>
+            <trans-unit id="39">
+                <source>This value is not a valid locale.</source>
+                <target>Bu değer geçerli bir yer değildir.</target>
+            </trans-unit>
+            <trans-unit id="40">
+                <source>This value is not a valid country.</source>
+                <target>Bu değer geçerli bir ülke değildir.</target>
+            </trans-unit>
+            <trans-unit id="41">
+                <source>This value is already used.</source>
+                <target>Bu değer şu anda kullanımda.</target>
+            </trans-unit>
+            <trans-unit id="42">
+                <source>The size of the image could not be detected.</source>
+                <target>Resmin boyutu saptanamıyor.</target>
+            </trans-unit>
+            <trans-unit id="43">
+                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
+                <target>Resmin genişliği çok büyük ({{ width }}px). İzin verilen en büyük genişlik {{ max_width }}px.</target>
+            </trans-unit>
+            <trans-unit id="44">
+                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
+                <target>Resmin genişliği çok küçük ({{ width }}px). En az {{ min_width }}px olmalıdır.</target>
+            </trans-unit>
+            <trans-unit id="45">
+                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
+                <target>Resmin yüksekliği çok büyük ({{ height }}px). İzin verilen en büyük yükseklik {{ max_height }}px.</target>
+            </trans-unit>
+            <trans-unit id="46">
+                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
+                <target>Resmin yüksekliği çok küçük ({{ height }}px). En az {{ min_height }}px olmalıdır.</target>
+            </trans-unit>
+            <trans-unit id="47">
+                <source>This value should be the user's current password.</source>
+                <target>Bu değer kullanıcının şu anki şifresi olmalıdır.</target>
+            </trans-unit>
+            <trans-unit id="48">
+                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
+                <target>Bu değer tam olarak {{ limit }} karakter olmaldır.</target>
+            </trans-unit>
+            <trans-unit id="49">
+                <source>The file was only partially uploaded.</source>
+                <target>Dosya sadece kısmen yüklendi.</target>
+            </trans-unit>
+            <trans-unit id="50">
+                <source>No file was uploaded.</source>
+                <target>Hiçbir dosya yüklenmedi.</target>
+            </trans-unit>
+            <trans-unit id="51">
+                <source>No temporary folder was configured in php.ini.</source>
+                <target>php.ini içerisinde geçici dizin tanımlanmadı.</target>
+            </trans-unit>
+            <trans-unit id="52">
+                <source>Cannot write temporary file to disk.</source>
+                <target>Geçici dosya diske yazılamıyor.</target>
+            </trans-unit>
+            <trans-unit id="53">
+                <source>A PHP extension caused the upload to fail.</source>
+                <target>Bir PHP eklentisi dosyanın yüklemesini başarısız kıldı.</target>
+            </trans-unit>
+            <trans-unit id="54">
+                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
+                <target>Bu derlem {{ limit }} veya daha çok eleman içermelidir.</target>
+            </trans-unit>
+            <trans-unit id="55">
+                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
+                <target>Bu derlem {{ limit }} veya daha az eleman içermelidir.</target>
+            </trans-unit>
+            <trans-unit id="56">
+                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
+                <target>Bu derlem {{ limit }} eleman içermelidir.</target>
+            </trans-unit>
+            <trans-unit id="57">
+                <source>Invalid card number.</source>
+                <target>Geçersiz kart numarası.</target>
+            </trans-unit>
+            <trans-unit id="58">
+                <source>Unsupported card type or invalid card number.</source>
+                <target>Desteklenmeyen kart tipi veya geçersiz kart numarası.</target>
+            </trans-unit>
+        </body>
+    </file>
+</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.uk.xlf b/vendor/symfony/validator/Resources/translations/validators.uk.xlf
new file mode 100644
index 0000000..02ecd5a
--- /dev/null
+++ b/vendor/symfony/validator/Resources/translations/validators.uk.xlf
@@ -0,0 +1,283 @@
+﻿<?xml version="1.0"?>
+<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
+    <file source-language="en" datatype="plaintext" original="file.ext">
+        <body>
+            <trans-unit id="1">
+                <source>This value should be false.</source>
+                <target>Значення повинно бути Ні.</target>
+            </trans-unit>
+            <trans-unit id="2">
+                <source>This value should be true.</source>
+                <target>Значення повинно бути Так.</target>
+            </trans-unit>
+            <trans-unit id="3">
+                <source>This value should be of type {{ type }}.</source>
+                <target>Тип значення повинен бути {{ type }}.</target>
+            </trans-unit>
+            <trans-unit id="4">
+                <source>This value should be blank.</source>
+                <target>Значення повинно бути пустим.</target>
+            </trans-unit>
+            <trans-unit id="5">
+                <source>The value you selected is not a valid choice.</source>
+                <target>Обране вами значення недопустиме.</target>
+            </trans-unit>
+            <trans-unit id="6">
+                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
+                <target>Ви повинні обрати хоча б {{ limit }} варіант.|Ви повинні обрати хоча б {{ limit }} варіанти.|Ви повинні обрати хоча б {{ limit }} варіантів.</target>
+            </trans-unit>
+            <trans-unit id="7">
+                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
+                <target>Ви повинні обрати не більше ніж {{ limit }} варіантів.</target>
+            </trans-unit>
+            <trans-unit id="8">
+                <source>One or more of the given values is invalid.</source>
+                <target>Одне або кілька заданих значень є недопустимі.</target>
+            </trans-unit>
+            <trans-unit id="9">
+                <source>This field was not expected.</source>
+                <target>Це поле не очікується.</target>
+            </trans-unit>
+            <trans-unit id="10">
+                <source>This field is missing.</source>
+                <target>Це поле не вистачає.</target>
+            </trans-unit>
+            <trans-unit id="11">
+                <source>This value is not a valid date.</source>
+                <target>Дане значення не є вірною датою.</target>
+            </trans-unit>
+            <trans-unit id="12">
+                <source>This value is not a valid datetime.</source>
+                <target>Дане значення дати та часу недопустиме.</target>
+            </trans-unit>
+            <trans-unit id="13">
+                <source>This value is not a valid email address.</source>
+                <target>Значення адреси электронної пошти недопустиме.</target>
+            </trans-unit>
+            <trans-unit id="14">
+                <source>The file could not be found.</source>
+                <target>Файл не знайдено.</target>
+            </trans-unit>
+            <trans-unit id="15">
+                <source>The file is not readable.</source>
+                <target>Файл не читається.</target>
+            </trans-unit>
+            <trans-unit id="16">
+                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>Файл занадто великий ({{ size }} {{ suffix }}). Дозволений максимальний розмір {{ limit }} {{ suffix }}.</target>
+            </trans-unit>
+            <trans-unit id="17">
+                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
+                <target>MIME-тип файлу недопустимий ({{ type }}). Допустимі MIME-типи файлів {{ types }}.</target>
+            </trans-unit>
+            <trans-unit id="18">
+                <source>This value should be {{ limit }} or less.</source>
+                <target>Значення повинно бути {{ limit }} або менше.</target>
+            </trans-unit>
+            <trans-unit id="19">
+                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
+                <target>Значення занадто довге. Повинно бути рівне {{ limit }} символу або менше.|Значення занадто довге. Повинно бути рівне {{ limit }} символам або менше.|Значення занадто довге. Повинно бути рівне {{ limit }} символам або менше.</target>
+            </trans-unit>
+            <trans-unit id="20">
+                <source>This value should be {{ limit }} or more.</source>
+                <target>Значення повинно бути {{ limit }} або більше.</target>
+            </trans-unit>
+            <trans-unit id="21">
+                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
+                <target>Значення занадто коротке. Повинно бути рівне {{ limit }} символу або більше.|Значення занадто коротке. Повинно бути рівне {{ limit }} символам або більше.|Значення занадто коротке. Повинно бути рівне {{ limit }} символам або більше.</target>
+            </trans-unit>
+            <trans-unit id="22">
+                <source>This value should not be blank.</source>
+                <target>Значення не повинно бути пустим.</target>
+            </trans-unit>
+            <trans-unit id="23">
+                <source>This value should not be null.</source>
+                <target>Значення не повинно бути null.</target>
+            </trans-unit>
+            <trans-unit id="24">
+                <source>This value should be null.</source>
+                <target>Значення повинно бути null.</target>
+            </trans-unit>
+            <trans-unit id="25">
+                <source>This value is not valid.</source>
+                <target>Значення недопустиме.</target>
+            </trans-unit>
+            <trans-unit id="26">
+                <source>This value is not a valid time.</source>
+                <target>Значення часу недопустиме.</target>
+            </trans-unit>
+            <trans-unit id="27">
+                <source>This value is not a valid URL.</source>
+                <target>Значення URL недопустиме.</target>
+            </trans-unit>
+            <trans-unit id="31">
+                <source>The two values should be equal.</source>
+                <target>Обидва занчення повинні бути одинаковими.</target>
+            </trans-unit>
+            <trans-unit id="32">
+                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>Файл занадто великий. Максимальний допустимий розмір {{ limit }} {{ suffix }}.</target>
+            </trans-unit>
+            <trans-unit id="33">
+                <source>The file is too large.</source>
+                <target>Файл занадто великий.</target>
+            </trans-unit>
+            <trans-unit id="34">
+                <source>The file could not be uploaded.</source>
+                <target>Файл не можливо завантажити.</target>
+            </trans-unit>
+            <trans-unit id="35">
+                <source>This value should be a valid number.</source>
+                <target>Значення має бути допустимим числом.</target>
+            </trans-unit>
+            <trans-unit id="36">
+                <source>This file is not a valid image.</source>
+                <target>Цей файл не є допустимим форматом зображення.</target>
+            </trans-unit>
+            <trans-unit id="37">
+                <source>This is not a valid IP address.</source>
+                <target>Це некоректна IP адреса.</target>
+            </trans-unit>
+            <trans-unit id="38">
+                <source>This value is not a valid language.</source>
+                <target>Це некоректна мова.</target>
+            </trans-unit>
+            <trans-unit id="39">
+                <source>This value is not a valid locale.</source>
+                <target>Це некоректна локалізація.</target>
+            </trans-unit>
+            <trans-unit id="40">
+                <source>This value is not a valid country.</source>
+                <target>Це некоректна країна.</target>
+            </trans-unit>
+            <trans-unit id="41">
+                <source>This value is already used.</source>
+                <target>Це значення вже використовується.</target>
+            </trans-unit>
+            <trans-unit id="42">
+                <source>The size of the image could not be detected.</source>
+                <target>Не вдалося визначити розмір зображення.</target>
+            </trans-unit>
+            <trans-unit id="43">
+                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
+                <target>Ширина зображення занадто велика ({{ width }}px). Максимально допустима ширина {{ max_width }}px.</target>
+            </trans-unit>
+            <trans-unit id="44">
+                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
+                <target>Ширина зображення занадто мала ({{ width }}px). Мінімально допустима ширина {{ min_width }}px.</target>
+            </trans-unit>
+            <trans-unit id="45">
+                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
+                <target>Висота зображення занадто велика ({{ height }}px). Максимально допустима висота {{ max_height }}px.</target>
+            </trans-unit>
+            <trans-unit id="46">
+                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
+                <target>Висота зображення занадто мала ({{ height }}px). Мінімально допустима висота {{ min_height }}px.</target>
+            </trans-unit>
+            <trans-unit id="47">
+                <source>This value should be the user's current password.</source>
+                <target>Значення має бути поточним паролем користувача.</target>
+            </trans-unit>
+            <trans-unit id="48">
+                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
+                <target>Значення повиино бути рівним {{ limit }} символу.|Значення повиино бути рівним {{ limit }} символам.|Значення повиино бути рівним {{ limit }} символам.</target>
+            </trans-unit>
+            <trans-unit id="49">
+                <source>The file was only partially uploaded.</source>
+                <target>Файл був завантажений лише частково.</target>
+            </trans-unit>
+            <trans-unit id="50">
+                <source>No file was uploaded.</source>
+                <target>Файл не був завантажений.</target>
+            </trans-unit>
+            <trans-unit id="51">
+                <source>No temporary folder was configured in php.ini.</source>
+                <target>Не налаштована тимчасова директорія в php.ini.</target>
+            </trans-unit>
+            <trans-unit id="52">
+                <source>Cannot write temporary file to disk.</source>
+                <target>Неможливо записати тимчасовий файл на диск.</target>
+            </trans-unit>
+            <trans-unit id="53">
+                <source>A PHP extension caused the upload to fail.</source>
+                <target>Розширення PHP викликало помилку при завантаженні.</target>
+            </trans-unit>
+            <trans-unit id="54">
+                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
+                <target>Ця колекція повинна містити {{ limit }} елемент чи більше.|Ця колекція повинна містити {{ limit }} елемента чи більше.|Ця колекція повинна містити {{ limit }} елементів чи більше.</target>
+            </trans-unit>
+            <trans-unit id="55">
+                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
+                <target>Ця колекція повинна містити {{ limit }} елемент чи менше.|Ця колекція повинна містити {{ limit }} елемента чи менше.|Ця колекція повинна містити {{ limit }} елементов чи менше.</target>
+            </trans-unit>
+            <trans-unit id="56">
+                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
+                <target>Ця колекція повинна містити рівно {{ limit }} елемент.|Ця колекція повинна містити рівно {{ limit }} елемента.|Ця колекція повинна містити рівно {{ limit }} елементів.</target>
+            </trans-unit>
+            <trans-unit id="57">
+                <source>Invalid card number.</source>
+                <target>Невірний номер карти.</target>
+            </trans-unit>
+            <trans-unit id="58">
+                <source>Unsupported card type or invalid card number.</source>
+                <target>Непідтримуваний тип карти або невірний номер карти.</target>
+            </trans-unit>
+            <trans-unit id="59">
+                <source>This is not a valid International Bank Account Number (IBAN).</source>
+                <target>Це не дійсний міжнародний номер банківського рахунку (IBAN).</target>
+            </trans-unit>
+            <trans-unit id="60">
+                <source>This value is not a valid ISBN-10.</source>
+                <target>Значення не у форматі ISBN-10.</target>
+            </trans-unit>
+            <trans-unit id="61">
+                <source>This value is not a valid ISBN-13.</source>
+                <target>Значення не у форматі ISBN-13.</target>
+            </trans-unit>
+            <trans-unit id="62">
+                <source>This value is neither a valid ISBN-10 nor a valid ISBN-13.</source>
+                <target>Значення не відповідає форматам ISBN-10 та ISBN-13.</target>
+            </trans-unit>
+            <trans-unit id="63">
+                <source>This value is not a valid ISSN.</source>
+                <target>Значення має невірний формат ISSN.</target>
+            </trans-unit>
+            <trans-unit id="64">
+                <source>This value is not a valid currency.</source>
+                <target>Значення має невірний формат валюти.</target>
+            </trans-unit>
+            <trans-unit id="65">
+                <source>This value should be equal to {{ compared_value }}.</source>
+                <target>Значення повинно дорівнювати {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="66">
+                <source>This value should be greater than {{ compared_value }}.</source>
+                <target>Значення має бути більше ніж {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="67">
+                <source>This value should be greater than or equal to {{ compared_value }}.</source>
+                <target>Значення має бути більше або дорівнювати {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="68">
+                <source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
+                <target>Значення має бути ідентичним {{ compared_value_type }} {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="69">
+                <source>This value should be less than {{ compared_value }}.</source>
+                <target>Значення повинно бути менше ніж {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="70">
+                <source>This value should be less than or equal to {{ compared_value }}.</source>
+                <target>Значення повинно бути менше або дорівнювати {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="71">
+                <source>This value should not be equal to {{ compared_value }}.</source>
+                <target>Значення не повинно дорівнювати  {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="72">
+                <source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
+                <target>Значення не повинно бути ідентичним {{ compared_value_type }} {{ compared_value }}.</target>
+            </trans-unit>
+        </body>
+    </file>
+</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.vi.xlf b/vendor/symfony/validator/Resources/translations/validators.vi.xlf
new file mode 100644
index 0000000..e1833c7
--- /dev/null
+++ b/vendor/symfony/validator/Resources/translations/validators.vi.xlf
@@ -0,0 +1,283 @@
+<?xml version="1.0"?>
+<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
+    <file source-language="en" datatype="plaintext" original="file.ext">
+        <body>
+            <trans-unit id="1">
+                <source>This value should be false.</source>
+                <target>Giá trị này phải là sai.</target>
+            </trans-unit>
+            <trans-unit id="2">
+                <source>This value should be true.</source>
+                <target>Giá trị này phải là đúng.</target>
+            </trans-unit>
+            <trans-unit id="3">
+                <source>This value should be of type {{ type }}.</source>
+                <target>Giá trị này phải là kiểu  {{ type }}.</target>
+            </trans-unit>
+            <trans-unit id="4">
+                <source>This value should be blank.</source>
+                <target>Giá trị này phải rỗng.</target>
+            </trans-unit>
+            <trans-unit id="5">
+                <source>The value you selected is not a valid choice.</source>
+                <target>Giá trị bạn vừa chọn không hợp lệ.</target>
+            </trans-unit>
+            <trans-unit id="6">
+                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
+                <target>Bạn phải chọn ít nhất {{ limit }} lựa chọn.|Bạn phải chọn ít nhất {{ limit }} lựa chọn.</target>
+            </trans-unit>
+            <trans-unit id="7">
+                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
+                <target>Bạn phải chọn nhiều nhất {{ limit }} lựa chọn.|Bạn phải chọn nhiều  nhất {{ limit }} lựa chọn.</target>
+            </trans-unit>
+            <trans-unit id="8">
+                <source>One or more of the given values is invalid.</source>
+                <target>Một hoặc nhiều giá trị được chọn không hợp lệ.</target>
+            </trans-unit>
+            <trans-unit id="9">
+                <source>This field was not expected.</source>
+                <target>Lĩnh vực này không được dự kiến.</target>
+            </trans-unit>
+            <trans-unit id="10">
+                <source>This field is missing.</source>
+                <target>Lĩnh vực này là mất tích.</target>
+            </trans-unit>
+            <trans-unit id="11">
+                <source>This value is not a valid date.</source>
+                <target>Giá trị không phải là ngày hợp lệ.</target>
+            </trans-unit>
+            <trans-unit id="12">
+                <source>This value is not a valid datetime.</source>
+                <target>Giá trị không phải là ngày tháng hợp lệ.</target>
+            </trans-unit>
+            <trans-unit id="13">
+                <source>This value is not a valid email address.</source>
+                <target>Giá trị này không phải là email hợp lệ.</target>
+            </trans-unit>
+            <trans-unit id="14">
+                <source>The file could not be found.</source>
+                <target>Tập tin không tìm thấy.</target>
+            </trans-unit>
+            <trans-unit id="15">
+                <source>The file is not readable.</source>
+                <target>Tập tin không thể đọc được.</target>
+            </trans-unit>
+            <trans-unit id="16">
+                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>Tập tin quá lớn ({{ size }} {{ suffix }}). Kích thước tối đa cho phép {{ limit }} {{ suffix }}.</target>
+            </trans-unit>
+            <trans-unit id="17">
+                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
+                <target>Kiểu mime của tập tin không hợp lệ ({{ type }}). Kiểu hợp lệ là {{ types }}.</target>
+            </trans-unit>
+            <trans-unit id="18">
+                <source>This value should be {{ limit }} or less.</source>
+                <target>Giá trị phải bằng hoặc nhỏ hơn {{ limit }}.</target>
+            </trans-unit>
+            <trans-unit id="19">
+                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
+                <target>Giá trị quá dài. Phải bằng hoặc ít hơn {{ limit }} kí tự.|Giá trị quá dài. Phải bằng hoặc ít hơn {{ limit }} kí tự.</target>
+            </trans-unit>
+            <trans-unit id="20">
+                <source>This value should be {{ limit }} or more.</source>
+                <target>Giá trị phải lớn hơn hoặc bằng {{ limit }}.</target>
+            </trans-unit>
+            <trans-unit id="21">
+                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
+                <target>Giá trị quá ngắn. Phải hơn hoặc bằng {{ limit }} kí tự.|Giá trị quá ngắn. Phải hơn hoặc bằng {{ limit }} kí tự.</target>
+            </trans-unit>
+            <trans-unit id="22">
+                <source>This value should not be blank.</source>
+                <target>Giá trị không được phép để trống.</target>
+            </trans-unit>
+            <trans-unit id="23">
+                <source>This value should not be null.</source>
+                <target>Giá trị không được phép rỗng.</target>
+            </trans-unit>
+            <trans-unit id="24">
+                <source>This value should be null.</source>
+                <target>Giá trị phải rỗng.</target>
+            </trans-unit>
+            <trans-unit id="25">
+                <source>This value is not valid.</source>
+                <target>Giá trị không hợp lệ.</target>
+            </trans-unit>
+            <trans-unit id="26">
+                <source>This value is not a valid time.</source>
+                <target>Giá trị không phải là thời gian hợp lệ.</target>
+            </trans-unit>
+            <trans-unit id="27">
+                <source>This value is not a valid URL.</source>
+                <target>Giá trị không phải là địa chỉ URL hợp lệ.</target>
+            </trans-unit>
+            <trans-unit id="31">
+                <source>The two values should be equal.</source>
+                <target>Hai giá trị phải bằng nhau.</target>
+            </trans-unit>
+            <trans-unit id="32">
+                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>Tập tin quá lớn. Kích thước tối đa cho phép là {{ limit }} {{ suffix }}.</target>
+            </trans-unit>
+            <trans-unit id="33">
+                <source>The file is too large.</source>
+                <target>Tập tin quá lớn.</target>
+            </trans-unit>
+            <trans-unit id="34">
+                <source>The file could not be uploaded.</source>
+                <target>Tập tin không thể tải lên.</target>
+            </trans-unit>
+            <trans-unit id="35">
+                <source>This value should be a valid number.</source>
+                <target>Giá trị phải là con số.</target>
+            </trans-unit>
+            <trans-unit id="36">
+                <source>This file is not a valid image.</source>
+                <target>Tập tin không phải là hình ảnh.</target>
+            </trans-unit>
+            <trans-unit id="37">
+                <source>This is not a valid IP address.</source>
+                <target>Địa chỉ IP không hợp lệ.</target>
+            </trans-unit>
+            <trans-unit id="38">
+                <source>This value is not a valid language.</source>
+                <target>Giá trị không phải là ngôn ngữ hợp lệ.</target>
+            </trans-unit>
+            <trans-unit id="39">
+                <source>This value is not a valid locale.</source>
+                <target>Giá trị không phải là một bản địa địa phương hợp lệ.</target>
+            </trans-unit>
+            <trans-unit id="40">
+                <source>This value is not a valid country.</source>
+                <target>Giá trị không phải là nước hợp lệ.</target>
+            </trans-unit>
+            <trans-unit id="41">
+                <source>This value is already used.</source>
+                <target>Giá trị đã được sử dụng.</target>
+            </trans-unit>
+            <trans-unit id="42">
+                <source>The size of the image could not be detected.</source>
+                <target>Kích thước của hình ảnh không thể xác định.</target>
+            </trans-unit>
+            <trans-unit id="43">
+                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
+                <target>Chiều rộng của hình quá lớn ({{ width }}px). Chiều rộng tối đa phải là {{ max_width }}px.</target>
+            </trans-unit>
+            <trans-unit id="44">
+                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
+                <target>Chiều rộng của hình quá thấp ({{ width }}px). Chiều rộng tối thiểu phải là {{ min_width }}px.</target>
+            </trans-unit>
+            <trans-unit id="45">
+                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
+                <target>Chiều cao của hình quá cao ({{ height }}px). Chiều cao tối đa phải là {{ max_height }}px.</target>
+            </trans-unit>
+            <trans-unit id="46">
+                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
+                <target>Chiều cao của hình quá thấp ({{ height }}px). Chiều cao tối thiểu phải là {{ min_height }}px.</target>
+            </trans-unit>
+            <trans-unit id="47">
+                <source>This value should be the user's current password.</source>
+                <target>Giá trị này phải là mật khẩu hiện tại của người dùng.</target>
+            </trans-unit>
+            <trans-unit id="48">
+                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
+                <target>Giá trị phải có chính xác {{ limit }} kí tự.|Giá trị phải có chính xác {{ limit }} kí tự.</target>
+            </trans-unit>
+            <trans-unit id="49">
+                <source>The file was only partially uploaded.</source>
+                <target>Tập tin chỉ được tải lên một phần.</target>
+            </trans-unit>
+            <trans-unit id="50">
+                <source>No file was uploaded.</source>
+                <target>Tập tin không được tải lên.</target>
+            </trans-unit>
+            <trans-unit id="51">
+                <source>No temporary folder was configured in php.ini.</source>
+                <target>Thư mục tạm không được định nghĩa trong php.ini.</target>
+            </trans-unit>
+            <trans-unit id="52">
+                <source>Cannot write temporary file to disk.</source>
+                <target>Không thể ghi tập tin tạm ra đĩa.</target>
+            </trans-unit>
+            <trans-unit id="53">
+                <source>A PHP extension caused the upload to fail.</source>
+                <target>Một PHP extension đã phá hỏng quá trình tải lên của tập tin.</target>
+            </trans-unit>
+            <trans-unit id="54">
+                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
+                <target>Danh sách phải chứa {{ limit }} hoặc nhiều hơn thành phần.|Danh sách phải chứa {{ limit }} hoặc nhiều hơn thành phần.</target>
+            </trans-unit>
+            <trans-unit id="55">
+                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
+                <target>Danh sách phải chứa {{ limit }} hoặc ít hơn thành phần.|Danh sách phải chứa {{ limit }} hoặc ít hơn thành phần.</target>
+            </trans-unit>
+            <trans-unit id="56">
+                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
+                <target>Danh sách phải chứa chính xác {{ limit }} thành phần.|Danh sách phải chứa chính xác {{ limit }} thành phần.</target>
+            </trans-unit>
+            <trans-unit id="57">
+                <source>Invalid card number.</source>
+                <target>Số thẻ không hợp lệ.</target>
+            </trans-unit>
+            <trans-unit id="58">
+                <source>Unsupported card type or invalid card number.</source>
+                <target>Thẻ không được hỗ trợ hoặc số thẻ không hợp lệ.</target>
+            </trans-unit>
+            <trans-unit id="59">
+                <source>This is not a valid International Bank Account Number (IBAN).</source>
+                <target>Giá trị không phải là International Bank Account Number (IBAN) hợp lệ.</target>
+            </trans-unit>
+            <trans-unit id="60">
+                <source>This value is not a valid ISBN-10.</source>
+                <target>Giá trị không phải là ISBN-10 hợp lệ.</target>
+            </trans-unit>
+            <trans-unit id="61">
+                <source>This value is not a valid ISBN-13.</source>
+                <target>Giá trị không phải là ISBN-13 hợp lệ.</target>
+            </trans-unit>
+            <trans-unit id="62">
+                <source>This value is neither a valid ISBN-10 nor a valid ISBN-13.</source>
+                <target>Giá trị không phải là ISBN-10 hoặc ISBN-13 hợp lệ.</target>
+            </trans-unit>
+            <trans-unit id="63">
+                <source>This value is not a valid ISSN.</source>
+                <target>Giá trị không là ISSN hợp lệ.</target>
+            </trans-unit>
+            <trans-unit id="64">
+                <source>This value is not a valid currency.</source>
+                <target>Giá trị không phải là đơn vi tiền tệ hợp lệ.</target>
+            </trans-unit>
+            <trans-unit id="65">
+                <source>This value should be equal to {{ compared_value }}.</source>
+                <target>Giá trị phải bằng {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="66">
+                <source>This value should be greater than {{ compared_value }}.</source>
+                <target>Giá trị phải lớn hơn {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="67">
+                <source>This value should be greater than or equal to {{ compared_value }}.</source>
+                <target>Giá trị phải lớn hơn hoặc bằng {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="68">
+                <source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
+                <target>Giá trị phải giống  {{ compared_value_type }} {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="69">
+                <source>This value should be less than {{ compared_value }}.</source>
+                <target>Giá trị phải bé hơn {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="70">
+                <source>This value should be less than or equal to {{ compared_value }}.</source>
+                <target>Giá trị không được phép nhỏ hơn hoặc bằng {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="71">
+                <source>This value should not be equal to {{ compared_value }}.</source>
+                <target>Giá trị không được phép bằng {{ compared_value }}.</target>
+            </trans-unit>
+            <trans-unit id="72">
+                <source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
+                <target>Giá trị không được phép giống như {{ compared_value_type }} {{ compared_value }}.</target>
+            </trans-unit>
+        </body>
+    </file>
+</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.zh_CN.xlf b/vendor/symfony/validator/Resources/translations/validators.zh_CN.xlf
new file mode 100644
index 0000000..6c95ef1
--- /dev/null
+++ b/vendor/symfony/validator/Resources/translations/validators.zh_CN.xlf
@@ -0,0 +1,315 @@
+<?xml version="1.0"?>
+<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
+    <file source-language="en" datatype="plaintext" original="file.ext">
+        <body>
+            <trans-unit id="1">
+                <source>This value should be false.</source>
+                <target>该变量的值应为 false 。</target>
+            </trans-unit>
+            <trans-unit id="2">
+                <source>This value should be true.</source>
+                <target>该变量的值应为 true 。</target>
+            </trans-unit>
+            <trans-unit id="3">
+                <source>This value should be of type {{ type }}.</source>
+                <target>该变量的类型应为 {{ type }} 。</target>
+            </trans-unit>
+            <trans-unit id="4">
+                <source>This value should be blank.</source>
+                <target>该变量值应为空。</target>
+            </trans-unit>
+            <trans-unit id="5">
+                <source>The value you selected is not a valid choice.</source>
+                <target>选定变量的值不是有效的选项。</target>
+            </trans-unit>
+            <trans-unit id="6">
+                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
+                <target>您至少要选择 {{ limit }} 个选项。</target>
+            </trans-unit>
+            <trans-unit id="7">
+                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
+                <target>您最多能选择 {{ limit }} 个选项。</target>
+            </trans-unit>
+            <trans-unit id="8">
+                <source>One or more of the given values is invalid.</source>
+                <target>一个或者多个给定的值无效。</target>
+            </trans-unit>
+            <trans-unit id="9">
+                <source>This field was not expected.</source>
+                <target>此字段是多余的。</target>
+            </trans-unit>
+            <trans-unit id="10">
+                <source>This field is missing.</source>
+                <target>此字段缺失。</target>
+            </trans-unit>
+            <trans-unit id="11">
+                <source>This value is not a valid date.</source>
+                <target>该值不是一个有效的日期（date）。</target>
+            </trans-unit>
+            <trans-unit id="12">
+                <source>This value is not a valid datetime.</source>
+                <target>该值不是一个有效的日期时间（datetime）。</target>
+            </trans-unit>
+            <trans-unit id="13">
+                <source>This value is not a valid email address.</source>
+                <target>该值不是一个有效的邮件地址。</target>
+            </trans-unit>
+            <trans-unit id="14">
+                <source>The file could not be found.</source>
+                <target>文件未找到。</target>
+            </trans-unit>
+            <trans-unit id="15">
+                <source>The file is not readable.</source>
+                <target>文件不可读。</target>
+            </trans-unit>
+            <trans-unit id="16">
+                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>文件太大 ({{ size }} {{ suffix }})。文件大小不可以超过 {{ limit }} {{ suffix }} 。</target>
+            </trans-unit>
+            <trans-unit id="17">
+                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
+                <target>无效的文件类型 ({{ type }}) 。允许的文件类型有 {{ types }} 。</target>
+            </trans-unit>
+            <trans-unit id="18">
+                <source>This value should be {{ limit }} or less.</source>
+                <target>这个变量的值应该小于或等于 {{ limit }}。</target>
+            </trans-unit>
+            <trans-unit id="19">
+                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
+                <target>字符串太长，长度不可超过 {{ limit }} 个字符。</target>
+            </trans-unit>
+            <trans-unit id="20">
+                <source>This value should be {{ limit }} or more.</source>
+                <target>该变量的值应该大于或等于 {{ limit }}。</target>
+            </trans-unit>
+            <trans-unit id="21">
+                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
+                <target>字符串太短，长度不可少于 {{ limit }} 个字符。</target>
+            </trans-unit>
+            <trans-unit id="22">
+                <source>This value should not be blank.</source>
+                <target>该变量不应为空。</target>
+            </trans-unit>
+            <trans-unit id="23">
+                <source>This value should not be null.</source>
+                <target>该变量不应为 null 。</target>
+            </trans-unit>
+            <trans-unit id="24">
+                <source>This value should be null.</source>
+                <target>该变量应为空 null 。</target>
+            </trans-unit>
+            <trans-unit id="25">
+                <source>This value is not valid.</source>
+                <target>该变量值无效 。</target>
+            </trans-unit>
+            <trans-unit id="26">
+                <source>This value is not a valid time.</source>
+                <target>该值不是一个有效的时间。</target>
+            </trans-unit>
+            <trans-unit id="27">
+                <source>This value is not a valid URL.</source>
+                <target>该值不是一个有效的 URL 。</target>
+            </trans-unit>
+            <trans-unit id="31">
+                <source>The two values should be equal.</source>
+                <target>这两个变量的值应该相等。</target>
+            </trans-unit>
+            <trans-unit id="32">
+                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>文件太大，文件大小不可以超过 {{ limit }} {{ suffix }}。 </target>
+            </trans-unit>
+            <trans-unit id="33">
+                <source>The file is too large.</source>
+                <target>文件太大。</target>
+            </trans-unit>
+            <trans-unit id="34">
+                <source>The file could not be uploaded.</source>
+                <target>无法上传此文件。</target>
+            </trans-unit>
+            <trans-unit id="35">
+                <source>This value should be a valid number.</source>
+                <target>该值应该为有效的数字。</target>
+            </trans-unit>
+            <trans-unit id="36">
+                <source>This value is not a valid country.</source>
+                <target>该值不是有效的国家名。</target>
+            </trans-unit>
+            <trans-unit id="37">
+                <source>This file is not a valid image.</source>
+                <target>该文件不是有效的图片。</target>
+            </trans-unit>
+            <trans-unit id="38">
+                <source>This is not a valid IP address.</source>
+                <target>该值不是有效的IP地址。</target>
+            </trans-unit>
+            <trans-unit id="39">
+                <source>This value is not a valid language.</source>
+                <target>该值不是有效的语言名。</target>
+            </trans-unit>
+            <trans-unit id="40">
+                <source>This value is not a valid locale.</source>
+                <target>该值不是有效的区域值（locale）。</target>
+            </trans-unit>
+            <trans-unit id="41">
+                <source>This value is already used.</source>
+                <target>该值已经被使用。</target>
+            </trans-unit>
+            <trans-unit id="42">
+                <source>The size of the image could not be detected.</source>
+                <target>不能解析图片大小。</target>
+            </trans-unit>
+            <trans-unit id="43">
+                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
+                <target>图片太宽 ({{ width }}px)，最大宽度为 {{ max_width }}px 。</target>
+            </trans-unit>
+            <trans-unit id="44">
+                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
+                <target>图片宽度不够 ({{ width }}px)，最小宽度为 {{ min_width }}px 。</target>
+            </trans-unit>
+            <trans-unit id="45">
+                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
+                <target>图片太高 ({{ height }}px)，最大高度为 {{ max_height }}px 。</target>
+            </trans-unit>
+            <trans-unit id="46">
+                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
+                <target>图片高度不够 ({{ height }}px)，最小高度为 {{ min_height }}px 。</target>
+            </trans-unit>
+            <trans-unit id="47">
+                <source>This value should be the user's current password.</source>
+                <target>该变量的值应为用户当前的密码。</target>
+            </trans-unit>
+            <trans-unit id="48">
+                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
+                <target>该变量应为 {{ limit }} 个字符。</target>
+            </trans-unit>
+            <trans-unit id="49">
+                <source>The file was only partially uploaded.</source>
+                <target>该文件的上传不完整。</target>
+            </trans-unit>
+            <trans-unit id="50">
+                <source>No file was uploaded.</source>
+                <target>没有上传任何文件。</target>
+            </trans-unit>
+            <trans-unit id="51">
+                <source>No temporary folder was configured in php.ini.</source>
+                <target>php.ini 里没有配置临时文件目录。</target>
+            </trans-unit>
+            <trans-unit id="52">
+                <source>Cannot write temporary file to disk.</source>
+                <target>临时文件写入磁盘失败。</target>
+            </trans-unit>
+            <trans-unit id="53">
+                <source>A PHP extension caused the upload to fail.</source>
+                <target>某个 PHP 扩展造成上传失败。</target>
+            </trans-unit>
+            <trans-unit id="54">
+                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
+                <target>该集合最少应包含 {{ limit }} 个元素。</target>
+            </trans-unit>
+            <trans-unit id="55">
+                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
+                <target>该集合最多包含 {{ limit }} 个元素。</target>
+            </trans-unit>
+            <trans-unit id="56">
+                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
+                <target>该集合应包含 {{ limit }} 个元素 element 。</target>
+            </trans-unit>
+            <trans-unit id="57">
+                <source>Invalid card number.</source>
+                <target>无效的信用卡号。</target>
+            </trans-unit>
+            <trans-unit id="58">
+                <source>Unsupported card type or invalid card number.</source>
+                <target>不支持的信用卡类型或无效的信用卡号。</target>
+            </trans-unit>
+            <trans-unit id="59">
+                <source>This is not a valid International Bank Account Number (IBAN).</source>
+                <target>该值不是有效的国际银行帐号（IBAN）。</target>
+            </trans-unit>
+            <trans-unit id="60">
+                <source>This value is not a valid ISBN-10.</source>
+                <target>该值不是有效的10位国际标准书号（ISBN-10）。</target>
+            </trans-unit>
+            <trans-unit id="61">
+                <source>This value is not a valid ISBN-13.</source>
+                <target>该值不是有效的13位国际标准书号（ISBN-13）。</target>
+            </trans-unit>
+            <trans-unit id="62">
+                <source>This value is neither a valid ISBN-10 nor a valid ISBN-13.</source>
+                <target>该值不是有效的国际标准书号（ISBN-10 或 ISBN-13）。</target>
+            </trans-unit>
+            <trans-unit id="63">
+                <source>This value is not a valid ISSN.</source>
+                <target>该值不是有效的国际标准期刊号（ISSN）。</target>
+            </trans-unit>
+            <trans-unit id="64">
+                <source>This value is not a valid currency.</source>
+                <target>该值不是有效的货币名（currency）。</target>
+            </trans-unit>
+            <trans-unit id="65">
+                <source>This value should be equal to {{ compared_value }}.</source>
+                <target>该值应等于 {{ compared_value }} 。</target>
+            </trans-unit>
+            <trans-unit id="66">
+                <source>This value should be greater than {{ compared_value }}.</source>
+                <target>该值应大于 {{ compared_value }} 。</target>
+            </trans-unit>
+            <trans-unit id="67">
+                <source>This value should be greater than or equal to {{ compared_value }}.</source>
+                <target>该值应大于或等于 {{ compared_value }} 。</target>
+            </trans-unit>
+            <trans-unit id="68">
+                <source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
+                <target>该值应与 {{ compared_value_type }} {{ compared_value }} 相同。</target>
+            </trans-unit>
+            <trans-unit id="69">
+                <source>This value should be less than {{ compared_value }}.</source>
+                <target>该值应小于 {{ compared_value }} 。</target>
+            </trans-unit>
+            <trans-unit id="70">
+                <source>This value should be less than or equal to {{ compared_value }}.</source>
+                <target>该值应小于或等于 {{ compared_value }} 。</target>
+            </trans-unit>
+            <trans-unit id="71">
+                <source>This value should not be equal to {{ compared_value }}.</source>
+                <target>该值不应先等于 {{ compared_value }} 。</target>
+            </trans-unit>
+            <trans-unit id="72">
+                <source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
+                <target>该值不应与 {{ compared_value_type }} {{ compared_value }} 相同。</target>
+            </trans-unit>
+            <trans-unit id="73">
+                <source>The image ratio is too big ({{ ratio }}). Allowed maximum ratio is {{ max_ratio }}.</source>
+                <target>图片宽高比太大 ({{ ratio }})。允许的最大宽高比为 {{ max_ratio }}。</target>
+            </trans-unit>
+            <trans-unit id="74">
+                <source>The image ratio is too small ({{ ratio }}). Minimum ratio expected is {{ min_ratio }}.</source>
+                <target>图片宽高比太小 ({{ ratio }})。允许的最大宽高比为 {{ min_ratio }}。</target>
+            </trans-unit>
+            <trans-unit id="75">
+                <source>The image is square ({{ width }}x{{ height }}px). Square images are not allowed.</source>
+                <target>图片是方形的 ({{ width }}x{{ height }}px)。不允许使用方形的图片。</target>
+            </trans-unit>
+            <trans-unit id="76">
+                <source>The image is landscape oriented ({{ width }}x{{ height }}px). Landscape oriented images are not allowed.</source>
+                <target>图片是横向的 ({{ width }}x{{ height }}px)。不允许使用横向的图片。</target>
+            </trans-unit>
+            <trans-unit id="77">
+                <source>The image is portrait oriented ({{ width }}x{{ height }}px). Portrait oriented images are not allowed.</source>
+                <target>图片是纵向的 ({{ width }}x{{ height }}px)。不允许使用纵向的图片。</target>
+            </trans-unit>
+            <trans-unit id="78">
+                <source>An empty file is not allowed.</source>
+                <target>不允许使用空文件。</target>
+            </trans-unit>
+            <trans-unit id="79">
+                <source>The host could not be resolved.</source>
+                <target>主机名无法解析。</target>
+            </trans-unit>
+            <trans-unit id="80">
+                <source>This value does not match the expected {{ charset }} charset.</source>
+                <target>该值不符合 {{ charset }} 编码。</target>
+            </trans-unit>
+        </body>
+    </file>
+</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.zh_TW.xlf b/vendor/symfony/validator/Resources/translations/validators.zh_TW.xlf
new file mode 100644
index 0000000..d9d5f2f
--- /dev/null
+++ b/vendor/symfony/validator/Resources/translations/validators.zh_TW.xlf
@@ -0,0 +1,283 @@
+<?xml version="1.0"?>
+<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
+    <file source-language="en" datatype="plaintext" original="file.ext">
+        <body>
+            <trans-unit id="1">
+                <source>This value should be false.</source>
+                <target>該變數的值應為 false 。</target>
+            </trans-unit>
+            <trans-unit id="2">
+                <source>This value should be true.</source>
+                <target>該變數的值應為 true 。</target>
+            </trans-unit>
+            <trans-unit id="3">
+                <source>This value should be of type {{ type }}.</source>
+                <target>該變數的類型應為 {{ type }} 。</target>
+            </trans-unit>
+            <trans-unit id="4">
+                <source>This value should be blank.</source>
+                <target>該變數應為空。</target>
+            </trans-unit>
+            <trans-unit id="5">
+                <source>The value you selected is not a valid choice.</source>
+                <target>選定變數的值不是有效的選項。</target>
+            </trans-unit>
+            <trans-unit id="6">
+                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
+                <target>您至少要選擇 {{ limit }} 個選項。</target>
+            </trans-unit>
+            <trans-unit id="7">
+                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
+                <target>您最多能選擇 {{ limit }} 個選項。</target>
+            </trans-unit>
+            <trans-unit id="8">
+                <source>One or more of the given values is invalid.</source>
+                <target>一個或者多個給定的值無效。</target>
+            </trans-unit>
+            <trans-unit id="9">
+                <source>This field was not expected.</source>
+                <target>此字段是沒有預料到。</target>
+            </trans-unit>
+            <trans-unit id="10">
+                <source>This field is missing.</source>
+                <target>此字段缺失。</target>
+            </trans-unit>
+            <trans-unit id="11">
+                <source>This value is not a valid date.</source>
+                <target>該值不是一個有效的日期（date）。</target>
+            </trans-unit>
+            <trans-unit id="12">
+                <source>This value is not a valid datetime.</source>
+                <target>該值不是一個有效的日期時間（datetime）。</target>
+            </trans-unit>
+            <trans-unit id="13">
+                <source>This value is not a valid email address.</source>
+                <target>該值不是一個有效的郵件地址。</target>
+            </trans-unit>
+            <trans-unit id="14">
+                <source>The file could not be found.</source>
+                <target>找不到檔案。</target>
+            </trans-unit>
+            <trans-unit id="15">
+                <source>The file is not readable.</source>
+                <target>無法讀取檔案。</target>
+            </trans-unit>
+            <trans-unit id="16">
+                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>檔案太大 ({{ size }} {{ suffix }})。檔案大小不可以超過 {{ limit }} {{ suffix }} 。</target>
+            </trans-unit>
+            <trans-unit id="17">
+                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
+                <target>無效的檔案類型 ({{ type }}) 。允許的檔案類型有 {{ types }} 。</target>
+            </trans-unit>
+            <trans-unit id="18">
+                <source>This value should be {{ limit }} or less.</source>
+                <target>這個變數的值應該小於或等於 {{ limit }}。</target>
+            </trans-unit>
+            <trans-unit id="19">
+                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
+                <target>字串太長，長度不可超過 {{ limit }} 個字元。</target>
+            </trans-unit>
+            <trans-unit id="20">
+                <source>This value should be {{ limit }} or more.</source>
+                <target>該變數的值應該大於或等於 {{ limit }}。</target>
+            </trans-unit>
+            <trans-unit id="21">
+                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
+                <target>字串太短，長度不可少於 {{ limit }} 個字元。</target>
+            </trans-unit>
+            <trans-unit id="22">
+                <source>This value should not be blank.</source>
+                <target>該變數不應為空白。</target>
+            </trans-unit>
+            <trans-unit id="23">
+                <source>This value should not be null.</source>
+                <target>該值不應為 null 。</target>
+            </trans-unit>
+            <trans-unit id="24">
+                <source>This value should be null.</source>
+                <target>該值應為 null 。</target>
+            </trans-unit>
+            <trans-unit id="25">
+                <source>This value is not valid.</source>
+                <target>無效的數值 。</target>
+            </trans-unit>
+            <trans-unit id="26">
+                <source>This value is not a valid time.</source>
+                <target>該值不是一個有效的時間。</target>
+            </trans-unit>
+            <trans-unit id="27">
+                <source>This value is not a valid URL.</source>
+                <target>該值不是一個有效的 URL 。</target>
+            </trans-unit>
+            <trans-unit id="31">
+                <source>The two values should be equal.</source>
+                <target>這兩個變數的值應該相等。</target>
+            </trans-unit>
+            <trans-unit id="32">
+                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
+                <target>檔案太大，檔案大小不可以超過 {{ limit }} {{ suffix }}。 </target>
+            </trans-unit>
+            <trans-unit id="33">
+                <source>The file is too large.</source>
+                <target>檔案太大。</target>
+            </trans-unit>
+            <trans-unit id="34">
+                <source>The file could not be uploaded.</source>
+                <target>無法上傳此檔案。</target>
+            </trans-unit>
+            <trans-unit id="35">
+                <source>This value should be a valid number.</source>
+                <target>該值應該為有效的數字。</target>
+            </trans-unit>
+            <trans-unit id="36">
+                <source>This value is not a valid country.</source>
+                <target>該值不是有效的國家名。</target>
+            </trans-unit>
+            <trans-unit id="37">
+                <source>This file is not a valid image.</source>
+                <target>該檔案不是有效的圖片。</target>
+            </trans-unit>
+            <trans-unit id="38">
+                <source>This is not a valid IP address.</source>
+                <target>該值不是有效的IP地址。</target>
+            </trans-unit>
+            <trans-unit id="39">
+                <source>This value is not a valid language.</source>
+                <target>該值不是有效的語言名。</target>
+            </trans-unit>
+            <trans-unit id="40">
+                <source>This value is not a valid locale.</source>
+                <target>該值不是有效的區域值（locale）。</target>
+            </trans-unit>
+            <trans-unit id="41">
+                <source>This value is already used.</source>
+                <target>該值已經被使用。</target>
+            </trans-unit>
+            <trans-unit id="42">
+                <source>The size of the image could not be detected.</source>
+                <target>不能解析圖片大小。</target>
+            </trans-unit>
+            <trans-unit id="43">
+                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
+                <target>圖片太寬 ({{ width }}px)，最大寬度為 {{ max_width }}px 。</target>
+            </trans-unit>
+            <trans-unit id="44">
+                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
+                <target>圖片寬度不夠 ({{ width }}px)，最小寬度為 {{ min_width }}px 。</target>
+            </trans-unit>
+            <trans-unit id="45">
+                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
+                <target>圖片太高 ({{ height }}px)，最大高度為 {{ max_height }}px 。</target>
+            </trans-unit>
+            <trans-unit id="46">
+                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
+                <target>圖片高度不夠 ({{ height }}px)，最小高度為 {{ min_height }}px 。</target>
+            </trans-unit>
+            <trans-unit id="47">
+                <source>This value should be the user's current password.</source>
+                <target>該變數的值應為用戶目前的密碼。</target>
+            </trans-unit>
+            <trans-unit id="48">
+                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
+                <target>該變數應為 {{ limit }} 個字元。</target>
+            </trans-unit>
+            <trans-unit id="49">
+                <source>The file was only partially uploaded.</source>
+                <target>該檔案的上傳不完整。</target>
+            </trans-unit>
+            <trans-unit id="50">
+                <source>No file was uploaded.</source>
+                <target>沒有上傳任何檔案。</target>
+            </trans-unit>
+            <trans-unit id="51">
+                <source>No temporary folder was configured in php.ini.</source>
+                <target>php.ini 裡沒有配置臨時目錄。</target>
+            </trans-unit>
+            <trans-unit id="52">
+                <source>Cannot write temporary file to disk.</source>
+                <target>暫存檔寫入磁碟失敗。</target>
+            </trans-unit>
+            <trans-unit id="53">
+                <source>A PHP extension caused the upload to fail.</source>
+                <target>某個 PHP 擴展造成上傳失敗。</target>
+            </trans-unit>
+            <trans-unit id="54">
+                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
+                <target>該集合最少應包含 {{ limit }} 個元素。</target>
+            </trans-unit>
+            <trans-unit id="55">
+                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
+                <target>該集合最多包含 {{ limit }} 個元素。</target>
+            </trans-unit>
+            <trans-unit id="56">
+                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
+                <target>該集合應包含 {{ limit }} 個元素 element 。</target>
+            </trans-unit>
+            <trans-unit id="57">
+                <source>Invalid card number.</source>
+                <target>無效的信用卡號。</target>
+            </trans-unit>
+            <trans-unit id="58">
+                <source>Unsupported card type or invalid card number.</source>
+                <target>不支援的信用卡類型或無效的信用卡號。</target>
+            </trans-unit>
+            <trans-unit id="59">
+                <source>This is not a valid International Bank Account Number (IBAN).</source>
+                <target>該值不是有效的國際銀行帳號（IBAN）。</target>
+            </trans-unit>
+            <trans-unit id="60">
+                <source>This value is not a valid ISBN-10.</source>
+                <target>該值不是有效的10位國際標準書號（ISBN-10）。</target>
+            </trans-unit>
+            <trans-unit id="61">
+                <source>This value is not a valid ISBN-13.</source>
+                <target>該值不是有效的13位國際標準書號（ISBN-13）。</target>
+            </trans-unit>
+            <trans-unit id="62">
+                <source>This value is neither a valid ISBN-10 nor a valid ISBN-13.</source>
+                <target>該值不是有效的國際標準書號（ISBN-10 或 ISBN-13）。</target>
+            </trans-unit>
+            <trans-unit id="63">
+                <source>This value is not a valid ISSN.</source>
+                <target>該值不是有效的國際標準期刊號（ISSN）。</target>
+            </trans-unit>
+            <trans-unit id="64">
+                <source>This value is not a valid currency.</source>
+                <target>該值不是有效的貨幣名（currency）。</target>
+            </trans-unit>
+            <trans-unit id="65">
+                <source>This value should be equal to {{ compared_value }}.</source>
+                <target>該值應等於 {{ compared_value }} 。</target>
+            </trans-unit>
+            <trans-unit id="66">
+                <source>This value should be greater than {{ compared_value }}.</source>
+                <target>該值應大於 {{ compared_value }} 。</target>
+            </trans-unit>
+            <trans-unit id="67">
+                <source>This value should be greater than or equal to {{ compared_value }}.</source>
+                <target>該值應大於或等於 {{ compared_value }} 。</target>
+            </trans-unit>
+            <trans-unit id="68">
+                <source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
+                <target>該值應與 {{ compared_value_type }} {{ compared_value }} 相同。</target>
+            </trans-unit>
+            <trans-unit id="69">
+                <source>This value should be less than {{ compared_value }}.</source>
+                <target>該值應小於 {{ compared_value }} 。</target>
+            </trans-unit>
+            <trans-unit id="70">
+                <source>This value should be less than or equal to {{ compared_value }}.</source>
+                <target>該值應小於或等於 {{ compared_value }} 。</target>
+            </trans-unit>
+            <trans-unit id="71">
+                <source>This value should not be equal to {{ compared_value }}.</source>
+                <target>該值應不等於 {{ compared_value }} 。</target>
+            </trans-unit>
+            <trans-unit id="72">
+                <source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
+                <target>該值不應與 {{ compared_value_type }} {{ compared_value }} 相同。</target>
+            </trans-unit>
+        </body>
+    </file>
+</xliff>
